diff options
author | Linus Torvalds <torvalds@g5.osdl.org> | 2005-11-07 16:32:21 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-11-07 16:32:21 -0500 |
commit | 89de09a9ba9ce293228b1f1aa3c68b5af33a70ce (patch) | |
tree | a322cc361f13dade2aa84ace8c9278d86e459640 /include | |
parent | dad2ad82c5f058367df79de022bd12d36afcd065 (diff) | |
parent | f6db449ca312d33045907337b68de1f647cf0730 (diff) |
Merge master.kernel.org:/home/rmk/linux-2.6-arm
Diffstat (limited to 'include')
-rw-r--r-- | include/asm-arm/arch-realview/entry-macro.S | 14 | ||||
-rw-r--r-- | include/asm-arm/arch-realview/platform.h | 56 | ||||
-rw-r--r-- | include/asm-arm/arch-realview/smp.h | 31 | ||||
-rw-r--r-- | include/asm-arm/hardware/arm_scu.h | 13 |
4 files changed, 114 insertions, 0 deletions
diff --git a/include/asm-arm/arch-realview/entry-macro.S b/include/asm-arm/arch-realview/entry-macro.S index 2712ba77bb3a..4df469bf42e2 100644 --- a/include/asm-arm/arch-realview/entry-macro.S +++ b/include/asm-arm/arch-realview/entry-macro.S | |||
@@ -47,3 +47,17 @@ | |||
47 | cmpcs \irqnr, \irqnr | 47 | cmpcs \irqnr, \irqnr |
48 | 48 | ||
49 | .endm | 49 | .endm |
50 | |||
51 | /* We assume that irqstat (the raw value of the IRQ acknowledge | ||
52 | * register) is preserved from the macro above. | ||
53 | * If there is an IPI, we immediately signal end of interrupt on the | ||
54 | * controller, since this requires the original irqstat value which | ||
55 | * we won't easily be able to recreate later. | ||
56 | */ | ||
57 | |||
58 | .macro test_for_ipi, irqnr, irqstat, base, tmp | ||
59 | bic \irqnr, \irqstat, #0x1c00 | ||
60 | cmp \irqnr, #16 | ||
61 | strcc \irqstat, [\base, #GIC_CPU_EOI] | ||
62 | cmpcs \irqnr, \irqnr | ||
63 | .endm | ||
diff --git a/include/asm-arm/arch-realview/platform.h b/include/asm-arm/arch-realview/platform.h index 4b6de13a6b9a..aef9b36b3c37 100644 --- a/include/asm-arm/arch-realview/platform.h +++ b/include/asm-arm/arch-realview/platform.h | |||
@@ -203,8 +203,14 @@ | |||
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_MPCORE_SCU_BASE 0x10100000 /* SCU registers */ | ||
211 | #define REALVIEW_GIC_CPU_BASE 0x10100100 /* Generic interrupt controller CPU interface */ | ||
212 | #define REALVIEW_GIC_DIST_BASE 0x10101000 /* Generic interrupt controller distributor */ | ||
213 | #endif | ||
208 | #define REALVIEW_SMC_BASE 0x10080000 /* SMC */ | 214 | #define REALVIEW_SMC_BASE 0x10080000 /* SMC */ |
209 | /* Reserved 0x10090000 - 0x100EFFFF */ | 215 | /* Reserved 0x10090000 - 0x100EFFFF */ |
210 | 216 | ||
@@ -265,6 +271,7 @@ | |||
265 | * Interrupts - bit assignment (primary) | 271 | * Interrupts - bit assignment (primary) |
266 | * ------------------------------------------------------------------------ | 272 | * ------------------------------------------------------------------------ |
267 | */ | 273 | */ |
274 | #ifndef CONFIG_REALVIEW_MPCORE | ||
268 | #define INT_WDOGINT 0 /* Watchdog timer */ | 275 | #define INT_WDOGINT 0 /* Watchdog timer */ |
269 | #define INT_SOFTINT 1 /* Software interrupt */ | 276 | #define INT_SOFTINT 1 /* Software interrupt */ |
270 | #define INT_COMMRx 2 /* Debug Comm Rx interrupt */ | 277 | #define INT_COMMRx 2 /* Debug Comm Rx interrupt */ |
@@ -297,6 +304,55 @@ | |||
297 | #define INT_USB 29 /* USB controller */ | 304 | #define INT_USB 29 /* USB controller */ |
298 | #define INT_TSPENINT 30 /* Touchscreen pen */ | 305 | #define INT_TSPENINT 30 /* Touchscreen pen */ |
299 | #define INT_TSKPADINT 31 /* Touchscreen keypad */ | 306 | #define INT_TSKPADINT 31 /* Touchscreen keypad */ |
307 | #else | ||
308 | #define INT_LOCALTIMER 29 | ||
309 | #define INT_LOCALWDOG 30 | ||
310 | |||
311 | #define INT_AACI 0 | ||
312 | #define INT_TIMERINT0_1 1 | ||
313 | #define INT_TIMERINT2_3 2 | ||
314 | #define INT_USB 3 | ||
315 | #define INT_UARTINT0 4 | ||
316 | #define INT_UARTINT1 5 | ||
317 | #define INT_RTCINT 6 | ||
318 | #define INT_KMI0 7 | ||
319 | #define INT_KMI1 8 | ||
320 | #define INT_ETH 9 | ||
321 | #define INT_EB_IRQ1 10 /* main GIC */ | ||
322 | #define INT_EB_IRQ2 11 /* tile GIC */ | ||
323 | #define INT_EB_FIQ1 12 /* main GIC */ | ||
324 | #define INT_EB_FIQ2 13 /* tile GIC */ | ||
325 | #define INT_MMCI0A 14 | ||
326 | #define INT_MMCI0B 15 | ||
327 | |||
328 | #define INT_PMU_CPU0 17 | ||
329 | #define INT_PMU_CPU1 18 | ||
330 | #define INT_PMU_CPU2 19 | ||
331 | #define INT_PMU_CPU3 20 | ||
332 | #define INT_PMU_SCU0 21 | ||
333 | #define INT_PMU_SCU1 22 | ||
334 | #define INT_PMU_SCU2 23 | ||
335 | #define INT_PMU_SCU3 24 | ||
336 | #define INT_PMU_SCU4 25 | ||
337 | #define INT_PMU_SCU5 26 | ||
338 | #define INT_PMU_SCU6 27 | ||
339 | #define INT_PMU_SCU7 28 | ||
340 | |||
341 | #define INT_L220_EVENT 29 | ||
342 | #define INT_L220_SLAVE 30 | ||
343 | #define INT_L220_DECODE 31 | ||
344 | |||
345 | #define INT_UARTINT2 -1 | ||
346 | #define INT_UARTINT3 -1 | ||
347 | #define INT_CLCDINT -1 | ||
348 | #define INT_DMAINT -1 | ||
349 | #define INT_WDOGINT -1 | ||
350 | #define INT_GPIOINT0 -1 | ||
351 | #define INT_GPIOINT1 -1 | ||
352 | #define INT_GPIOINT2 -1 | ||
353 | #define INT_SCIINT -1 | ||
354 | #define INT_SSPINT -1 | ||
355 | #endif | ||
300 | 356 | ||
301 | /* | 357 | /* |
302 | * Interrupt bit positions | 358 | * Interrupt bit positions |
diff --git a/include/asm-arm/arch-realview/smp.h b/include/asm-arm/arch-realview/smp.h new file mode 100644 index 000000000000..fc87783e8e8b --- /dev/null +++ b/include/asm-arm/arch-realview/smp.h | |||
@@ -0,0 +1,31 @@ | |||
1 | #ifndef ASMARM_ARCH_SMP_H | ||
2 | #define ASMARM_ARCH_SMP_H | ||
3 | |||
4 | #include <linux/config.h> | ||
5 | |||
6 | #include <asm/hardware/gic.h> | ||
7 | |||
8 | #define hard_smp_processor_id() \ | ||
9 | ({ \ | ||
10 | unsigned int cpunum; \ | ||
11 | __asm__("mrc p15, 0, %0, c0, c0, 5" \ | ||
12 | : "=r" (cpunum)); \ | ||
13 | cpunum &= 0x0F; \ | ||
14 | }) | ||
15 | |||
16 | /* | ||
17 | * We use IRQ1 as the IPI | ||
18 | */ | ||
19 | static inline void smp_cross_call(cpumask_t callmap) | ||
20 | { | ||
21 | gic_raise_softirq(callmap, 1); | ||
22 | } | ||
23 | |||
24 | /* | ||
25 | * Do nothing on MPcore. | ||
26 | */ | ||
27 | static inline void smp_cross_call_done(cpumask_t callmap) | ||
28 | { | ||
29 | } | ||
30 | |||
31 | #endif | ||
diff --git a/include/asm-arm/hardware/arm_scu.h b/include/asm-arm/hardware/arm_scu.h new file mode 100644 index 000000000000..9903f60c84b7 --- /dev/null +++ b/include/asm-arm/hardware/arm_scu.h | |||
@@ -0,0 +1,13 @@ | |||
1 | #ifndef ASMARM_HARDWARE_ARM_SCU_H | ||
2 | #define ASMARM_HARDWARE_ARM_SCU_H | ||
3 | |||
4 | /* | ||
5 | * SCU registers | ||
6 | */ | ||
7 | #define SCU_CTRL 0x00 | ||
8 | #define SCU_CONFIG 0x04 | ||
9 | #define SCU_CPU_STATUS 0x08 | ||
10 | #define SCU_INVALIDATE 0x0c | ||
11 | #define SCU_FPGA_REVISION 0x10 | ||
12 | |||
13 | #endif | ||