diff options
-rw-r--r-- | arch/arm/mach-realview/Kconfig | 9 | ||||
-rw-r--r-- | arch/arm/mach-realview/realview_eb.c | 5 | ||||
-rw-r--r-- | include/asm-arm/arch-realview/platform.h | 55 |
3 files changed, 69 insertions, 0 deletions
diff --git a/arch/arm/mach-realview/Kconfig b/arch/arm/mach-realview/Kconfig index 4b63dc9eabfe..129976866d47 100644 --- a/arch/arm/mach-realview/Kconfig +++ b/arch/arm/mach-realview/Kconfig | |||
@@ -8,4 +8,13 @@ config MACH_REALVIEW_EB | |||
8 | help | 8 | help |
9 | Include support for the ARM(R) RealView Emulation Baseboard platform. | 9 | Include support for the ARM(R) RealView Emulation Baseboard platform. |
10 | 10 | ||
11 | config REALVIEW_MPCORE | ||
12 | bool "Support MPcore tile" | ||
13 | depends on MACH_REALVIEW_EB | ||
14 | help | ||
15 | Enable support for the MPCore tile on the Realview platform. | ||
16 | Since there are device address and interrupt differences, a | ||
17 | kernel built with this option enabled is not compatible with | ||
18 | other tiles. | ||
19 | |||
11 | endmenu | 20 | endmenu |
diff --git a/arch/arm/mach-realview/realview_eb.c b/arch/arm/mach-realview/realview_eb.c index 267bb07e39b7..7dc32503fdf2 100644 --- a/arch/arm/mach-realview/realview_eb.c +++ b/arch/arm/mach-realview/realview_eb.c | |||
@@ -136,6 +136,11 @@ static struct amba_device *amba_devs[] __initdata = { | |||
136 | 136 | ||
137 | static void __init gic_init_irq(void) | 137 | static void __init gic_init_irq(void) |
138 | { | 138 | { |
139 | #ifdef CONFIG_REALVIEW_MPCORE | ||
140 | writel(0x0000a05f, __io_address(REALVIEW_SYS_LOCK)); | ||
141 | writel(0x008003c0, __io_address(REALVIEW_SYS_BASE) + 0xd8); | ||
142 | writel(0x00000000, __io_address(REALVIEW_SYS_LOCK)); | ||
143 | #endif | ||
139 | gic_dist_init(__io_address(REALVIEW_GIC_DIST_BASE)); | 144 | gic_dist_init(__io_address(REALVIEW_GIC_DIST_BASE)); |
140 | gic_cpu_init(__io_address(REALVIEW_GIC_CPU_BASE)); | 145 | gic_cpu_init(__io_address(REALVIEW_GIC_CPU_BASE)); |
141 | } | 146 | } |
diff --git a/include/asm-arm/arch-realview/platform.h b/include/asm-arm/arch-realview/platform.h index 4b6de13a6b9a..432260121c8b 100644 --- a/include/asm-arm/arch-realview/platform.h +++ b/include/asm-arm/arch-realview/platform.h | |||
@@ -203,8 +203,13 @@ | |||
203 | /* Reserved 0x1001A000 - 0x1001FFFF */ | 203 | /* Reserved 0x1001A000 - 0x1001FFFF */ |
204 | #define REALVIEW_CLCD_BASE 0x10020000 /* CLCD */ | 204 | #define REALVIEW_CLCD_BASE 0x10020000 /* CLCD */ |
205 | #define REALVIEW_DMAC_BASE 0x10030000 /* DMA controller */ | 205 | #define REALVIEW_DMAC_BASE 0x10030000 /* DMA controller */ |
206 | #ifndef CONFIG_REALVIEW_MPCORE | ||
206 | #define REALVIEW_GIC_CPU_BASE 0x10040000 /* Generic interrupt controller CPU interface */ | 207 | #define REALVIEW_GIC_CPU_BASE 0x10040000 /* Generic interrupt controller CPU interface */ |
207 | #define REALVIEW_GIC_DIST_BASE 0x10041000 /* Generic interrupt controller distributor */ | 208 | #define REALVIEW_GIC_DIST_BASE 0x10041000 /* Generic interrupt controller distributor */ |
209 | #else | ||
210 | #define REALVIEW_GIC_CPU_BASE 0x10100100 /* Generic interrupt controller CPU interface */ | ||
211 | #define REALVIEW_GIC_DIST_BASE 0x10101000 /* Generic interrupt controller distributor */ | ||
212 | #endif | ||
208 | #define REALVIEW_SMC_BASE 0x10080000 /* SMC */ | 213 | #define REALVIEW_SMC_BASE 0x10080000 /* SMC */ |
209 | /* Reserved 0x10090000 - 0x100EFFFF */ | 214 | /* Reserved 0x10090000 - 0x100EFFFF */ |
210 | 215 | ||
@@ -265,6 +270,7 @@ | |||
265 | * Interrupts - bit assignment (primary) | 270 | * Interrupts - bit assignment (primary) |
266 | * ------------------------------------------------------------------------ | 271 | * ------------------------------------------------------------------------ |
267 | */ | 272 | */ |
273 | #ifndef CONFIG_REALVIEW_MPCORE | ||
268 | #define INT_WDOGINT 0 /* Watchdog timer */ | 274 | #define INT_WDOGINT 0 /* Watchdog timer */ |
269 | #define INT_SOFTINT 1 /* Software interrupt */ | 275 | #define INT_SOFTINT 1 /* Software interrupt */ |
270 | #define INT_COMMRx 2 /* Debug Comm Rx interrupt */ | 276 | #define INT_COMMRx 2 /* Debug Comm Rx interrupt */ |
@@ -297,6 +303,55 @@ | |||
297 | #define INT_USB 29 /* USB controller */ | 303 | #define INT_USB 29 /* USB controller */ |
298 | #define INT_TSPENINT 30 /* Touchscreen pen */ | 304 | #define INT_TSPENINT 30 /* Touchscreen pen */ |
299 | #define INT_TSKPADINT 31 /* Touchscreen keypad */ | 305 | #define INT_TSKPADINT 31 /* Touchscreen keypad */ |
306 | #else | ||
307 | #define INT_LOCALTIMER 29 | ||
308 | #define INT_LOCALWDOG 30 | ||
309 | |||
310 | #define INT_AACI 0 | ||
311 | #define INT_TIMERINT0_1 1 | ||
312 | #define INT_TIMERINT2_3 2 | ||
313 | #define INT_USB 3 | ||
314 | #define INT_UARTINT0 4 | ||
315 | #define INT_UARTINT1 5 | ||
316 | #define INT_RTCINT 6 | ||
317 | #define INT_KMI0 7 | ||
318 | #define INT_KMI1 8 | ||
319 | #define INT_ETH 9 | ||
320 | #define INT_EB_IRQ1 10 /* main GIC */ | ||
321 | #define INT_EB_IRQ2 11 /* tile GIC */ | ||
322 | #define INT_EB_FIQ1 12 /* main GIC */ | ||
323 | #define INT_EB_FIQ2 13 /* tile GIC */ | ||
324 | #define INT_MMCI0A 14 | ||
325 | #define INT_MMCI0B 15 | ||
326 | |||
327 | #define INT_PMU_CPU0 17 | ||
328 | #define INT_PMU_CPU1 18 | ||
329 | #define INT_PMU_CPU2 19 | ||
330 | #define INT_PMU_CPU3 20 | ||
331 | #define INT_PMU_SCU0 21 | ||
332 | #define INT_PMU_SCU1 22 | ||
333 | #define INT_PMU_SCU2 23 | ||
334 | #define INT_PMU_SCU3 24 | ||
335 | #define INT_PMU_SCU4 25 | ||
336 | #define INT_PMU_SCU5 26 | ||
337 | #define INT_PMU_SCU6 27 | ||
338 | #define INT_PMU_SCU7 28 | ||
339 | |||
340 | #define INT_L220_EVENT 29 | ||
341 | #define INT_L220_SLAVE 30 | ||
342 | #define INT_L220_DECODE 31 | ||
343 | |||
344 | #define INT_UARTINT2 -1 | ||
345 | #define INT_UARTINT3 -1 | ||
346 | #define INT_CLCDINT -1 | ||
347 | #define INT_DMAINT -1 | ||
348 | #define INT_WDOGINT -1 | ||
349 | #define INT_GPIOINT0 -1 | ||
350 | #define INT_GPIOINT1 -1 | ||
351 | #define INT_GPIOINT2 -1 | ||
352 | #define INT_SCIINT -1 | ||
353 | #define INT_SSPINT -1 | ||
354 | #endif | ||
300 | 355 | ||
301 | /* | 356 | /* |
302 | * Interrupt bit positions | 357 | * Interrupt bit positions |