diff options
Diffstat (limited to 'arch/arm/mach-pxa/pxa300.c')
| -rw-r--r-- | arch/arm/mach-pxa/pxa300.c | 38 |
1 files changed, 30 insertions, 8 deletions
diff --git a/arch/arm/mach-pxa/pxa300.c b/arch/arm/mach-pxa/pxa300.c index 0a0d3877f21..17cbc0c7bdb 100644 --- a/arch/arm/mach-pxa/pxa300.c +++ b/arch/arm/mach-pxa/pxa300.c @@ -15,11 +15,16 @@ #include <linux/module.h> #include <linux/kernel.h> +#include <linux/platform_device.h> +#include <linux/io.h> -#include <asm/hardware.h> -#include <asm/arch/mfp-pxa300.h> +#include <mach/pxa300.h> -static struct pxa3xx_mfp_addr_map pxa300_mfp_addr_map[] __initdata = { +#include "generic.h" +#include "devices.h" +#include "clock.h" + +static struct mfp_addr_map pxa300_mfp_addr_map[] __initdata = { MFP_ADDR_X(GPIO0, GPIO2, 0x00b4), MFP_ADDR_X(GPIO3, GPIO26, 0x027c), @@ -68,7 +73,7 @@ static struct pxa3xx_mfp_addr_map pxa300_mfp_addr_map[] __initdata = { }; /* override pxa300 MFP register addresses */ -static struct pxa3xx_mfp_addr_map pxa310_mfp_addr_map[] __initdata = { +static struct mfp_addr_map pxa310_mfp_addr_map[] __initdata = { MFP_ADDR_X(GPIO30, GPIO98, 0x0418), MFP_ADDR_X(GPIO7_2, GPIO12_2, 0x052C), @@ -79,15 +84,32 @@ static struct pxa3xx_mfp_addr_map pxa310_mfp_addr_map[] __initdata = { MFP_ADDR_END, }; +static DEFINE_PXA3_CKEN(common_nand, NAND, 156000000, 0); +static DEFINE_PXA3_CKEN(gcu, PXA300_GCU, 0, 0); + +static struct clk_lookup common_clkregs[] = { + INIT_CLKREG(&clk_common_nand, "pxa3xx-nand", NULL), + INIT_CLKREG(&clk_gcu, "pxa3xx-gcu", NULL), +}; + +static DEFINE_PXA3_CKEN(pxa310_mmc3, MMC3, 19500000, 0); + +static struct clk_lookup pxa310_clkregs[] = { + INIT_CLKREG(&clk_pxa310_mmc3, "pxa2xx-mci.2", NULL), +}; + static int __init pxa300_init(void) { if (cpu_is_pxa300() || cpu_is_pxa310()) { - pxa3xx_init_mfp(); - pxa3xx_mfp_init_addr(pxa300_mfp_addr_map); + mfp_init_base(io_p2v(MFPR_BASE)); + mfp_init_addr(pxa300_mfp_addr_map); + clkdev_add_table(ARRAY_AND_SIZE(common_clkregs)); } - if (cpu_is_pxa310()) - pxa3xx_mfp_init_addr(pxa310_mfp_addr_map); + if (cpu_is_pxa310()) { + mfp_init_addr(pxa310_mfp_addr_map); + clkdev_add_table(ARRAY_AND_SIZE(pxa310_clkregs)); + } return 0; } |
