aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRussell King <rmk@dyn-67.arm.linux.org.uk>2005-11-07 16:01:06 -0500
committerRussell King <rmk+kernel@arm.linux.org.uk>2005-11-07 16:01:06 -0500
commit9b1283bedd6b8fe2f4dfc47705d6cea1b5e2d853 (patch)
tree58f922601d802024338383aba70518b3265e58ce
parent01bbaf0b2b7b38e43139dce8bd64f8c7b2b83940 (diff)
[ARM] Add support for Realview with MPcore tile
Add uniprocessor support for Realview platform fitted with the MPcore (SMP) tile. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r--arch/arm/mach-realview/Kconfig9
-rw-r--r--arch/arm/mach-realview/realview_eb.c5
-rw-r--r--include/asm-arm/arch-realview/platform.h55
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
11config 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
11endmenu 20endmenu
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
137static void __init gic_init_irq(void) 137static 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