aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-ux500/cpu-db8500.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-ux500/cpu-db8500.c')
-rw-r--r--arch/arm/mach-ux500/cpu-db8500.c58
1 files changed, 40 insertions, 18 deletions
diff --git a/arch/arm/mach-ux500/cpu-db8500.c b/arch/arm/mach-ux500/cpu-db8500.c
index 4acab7544b3c..c0f34a404c53 100644
--- a/arch/arm/mach-ux500/cpu-db8500.c
+++ b/arch/arm/mach-ux500/cpu-db8500.c
@@ -22,23 +22,15 @@
22#include <mach/setup.h> 22#include <mach/setup.h>
23#include <mach/devices.h> 23#include <mach/devices.h>
24 24
25#include "devices-db8500.h"
26
25static struct platform_device *platform_devs[] __initdata = { 27static struct platform_device *platform_devs[] __initdata = {
26 &u8500_gpio_devs[0],
27 &u8500_gpio_devs[1],
28 &u8500_gpio_devs[2],
29 &u8500_gpio_devs[3],
30 &u8500_gpio_devs[4],
31 &u8500_gpio_devs[5],
32 &u8500_gpio_devs[6],
33 &u8500_gpio_devs[7],
34 &u8500_gpio_devs[8],
35 &u8500_dma40_device, 28 &u8500_dma40_device,
36}; 29};
37 30
38/* minimum static i/o mapping required to boot U8500 platforms */ 31/* minimum static i/o mapping required to boot U8500 platforms */
39static struct map_desc u8500_io_desc[] __initdata = { 32static struct map_desc u8500_io_desc[] __initdata = {
40 __IO_DEV_DESC(U8500_PRCMU_BASE, SZ_4K), 33 __IO_DEV_DESC(U8500_PRCMU_BASE, SZ_4K),
41 __IO_DEV_DESC(U8500_PRCMU_TCDM_BASE, SZ_4K),
42 __IO_DEV_DESC(U8500_GPIO0_BASE, SZ_4K), 34 __IO_DEV_DESC(U8500_GPIO0_BASE, SZ_4K),
43 __IO_DEV_DESC(U8500_GPIO1_BASE, SZ_4K), 35 __IO_DEV_DESC(U8500_GPIO1_BASE, SZ_4K),
44 __IO_DEV_DESC(U8500_GPIO2_BASE, SZ_4K), 36 __IO_DEV_DESC(U8500_GPIO2_BASE, SZ_4K),
@@ -46,13 +38,18 @@ static struct map_desc u8500_io_desc[] __initdata = {
46 __MEM_DEV_DESC(U8500_BOOT_ROM_BASE, SZ_1M), 38 __MEM_DEV_DESC(U8500_BOOT_ROM_BASE, SZ_1M),
47}; 39};
48 40
49static struct map_desc u8500ed_io_desc[] __initdata = { 41static struct map_desc u8500_ed_io_desc[] __initdata = {
50 __IO_DEV_DESC(U8500_MTU0_BASE_ED, SZ_4K), 42 __IO_DEV_DESC(U8500_MTU0_BASE_ED, SZ_4K),
51 __IO_DEV_DESC(U8500_CLKRST7_BASE_ED, SZ_8K), 43 __IO_DEV_DESC(U8500_CLKRST7_BASE_ED, SZ_8K),
52}; 44};
53 45
54static struct map_desc u8500v1_io_desc[] __initdata = { 46static struct map_desc u8500_v1_io_desc[] __initdata = {
55 __IO_DEV_DESC(U8500_MTU0_BASE, SZ_4K), 47 __IO_DEV_DESC(U8500_MTU0_BASE, SZ_4K),
48 __IO_DEV_DESC(U8500_PRCMU_TCDM_BASE_V1, SZ_4K),
49};
50
51static struct map_desc u8500_v2_io_desc[] __initdata = {
52 __IO_DEV_DESC(U8500_PRCMU_TCDM_BASE, SZ_4K),
56}; 53};
57 54
58/* 55/*
@@ -125,14 +122,38 @@ void __init u8500_map_io(void)
125 iotable_init(u8500_io_desc, ARRAY_SIZE(u8500_io_desc)); 122 iotable_init(u8500_io_desc, ARRAY_SIZE(u8500_io_desc));
126 123
127 if (cpu_is_u8500ed()) 124 if (cpu_is_u8500ed())
128 iotable_init(u8500ed_io_desc, ARRAY_SIZE(u8500ed_io_desc)); 125 iotable_init(u8500_ed_io_desc, ARRAY_SIZE(u8500_ed_io_desc));
129 else 126 else if (cpu_is_u8500v1())
130 iotable_init(u8500v1_io_desc, ARRAY_SIZE(u8500v1_io_desc)); 127 iotable_init(u8500_v1_io_desc, ARRAY_SIZE(u8500_v1_io_desc));
128 else if (cpu_is_u8500v2())
129 iotable_init(u8500_v2_io_desc, ARRAY_SIZE(u8500_v2_io_desc));
131 130
132 /* Read out the ASIC ID as early as we can */ 131 /* Read out the ASIC ID as early as we can */
133 get_db8500_asic_id(); 132 get_db8500_asic_id();
134} 133}
135 134
135static resource_size_t __initdata db8500_gpio_base[] = {
136 U8500_GPIOBANK0_BASE,
137 U8500_GPIOBANK1_BASE,
138 U8500_GPIOBANK2_BASE,
139 U8500_GPIOBANK3_BASE,
140 U8500_GPIOBANK4_BASE,
141 U8500_GPIOBANK5_BASE,
142 U8500_GPIOBANK6_BASE,
143 U8500_GPIOBANK7_BASE,
144 U8500_GPIOBANK8_BASE,
145};
146
147static void __init db8500_add_gpios(void)
148{
149 struct nmk_gpio_platform_data pdata = {
150 /* No custom data yet */
151 };
152
153 dbx500_add_gpios(ARRAY_AND_SIZE(db8500_gpio_base),
154 IRQ_DB8500_GPIO0, &pdata);
155}
156
136/* 157/*
137 * This function is called from the board init 158 * This function is called from the board init
138 */ 159 */
@@ -152,12 +173,13 @@ void __init u8500_init_devices(void)
152 else 173 else
153 pr_warning("ASIC: UNKNOWN SILICON VERSION!\n"); 174 pr_warning("ASIC: UNKNOWN SILICON VERSION!\n");
154 175
155 ux500_init_devices();
156
157 if (cpu_is_u8500ed()) 176 if (cpu_is_u8500ed())
158 dma40_u8500ed_fixup(); 177 dma40_u8500ed_fixup();
159 178
160 /* Register the platform devices */ 179 db8500_add_rtc();
180 db8500_add_gpios();
181
182 platform_device_register_simple("cpufreq-u8500", -1, NULL, 0);
161 platform_add_devices(platform_devs, ARRAY_SIZE(platform_devs)); 183 platform_add_devices(platform_devs, ARRAY_SIZE(platform_devs));
162 184
163 return ; 185 return ;