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 | ||
