diff options
| -rw-r--r-- | arch/arm/mach-realview/Kconfig | 9 | ||||
| -rw-r--r-- | arch/arm/mach-realview/core.h | 1 | ||||
| -rw-r--r-- | arch/arm/mach-realview/realview_eb.c | 5 | ||||
| -rw-r--r-- | include/asm-arm/arch-realview/platform.h | 55 |
4 files changed, 70 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/core.h b/arch/arm/mach-realview/core.h index 575599db74db..d83e8bad2038 100644 --- a/arch/arm/mach-realview/core.h +++ b/arch/arm/mach-realview/core.h | |||
| @@ -23,6 +23,7 @@ | |||
| 23 | #define __ASM_ARCH_REALVIEW_H | 23 | #define __ASM_ARCH_REALVIEW_H |
| 24 | 24 | ||
| 25 | #include <asm/hardware/amba.h> | 25 | #include <asm/hardware/amba.h> |
| 26 | #include <asm/leds.h> | ||
| 26 | #include <asm/io.h> | 27 | #include <asm/io.h> |
| 27 | 28 | ||
| 28 | #define __io_address(n) __io(IO_ADDRESS(n)) | 29 | #define __io_address(n) __io(IO_ADDRESS(n)) |
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 |
