diff options
author | Jamie Iles <jamie@jamieiles.com> | 2011-09-27 15:07:05 -0400 |
---|---|---|
committer | Marc Zyngier <marc.zyngier@arm.com> | 2011-11-15 13:14:03 -0500 |
commit | 9a6879bd902e2ec605fff4d9fb3247b440a1f66a (patch) | |
tree | 93019057fa27c1a803ee1e08a07154b866171810 /arch | |
parent | 1558368eb5d67a41d4199db32d3f5858660b44cf (diff) |
ARM: ep93xx: convert to MULTI_IRQ_HANDLER
Now that there is a generic IRQ handler for multiple VIC devices use it
for ep93xx to help building multi platform kernels.
Cc: Hartley Sweeten <hsweeten@visionengravers.com>
Cc: Ryan Mallon <rmallon@gmail.com>
Signed-off-by: Jamie Iles <jamie@jamieiles.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/Kconfig | 1 | ||||
-rw-r--r-- | arch/arm/mach-ep93xx/adssphere.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-ep93xx/edb93xx.c | 9 | ||||
-rw-r--r-- | arch/arm/mach-ep93xx/gesbc9312.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-ep93xx/include/mach/entry-macro.S | 42 | ||||
-rw-r--r-- | arch/arm/mach-ep93xx/micro9.c | 5 | ||||
-rw-r--r-- | arch/arm/mach-ep93xx/simone.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-ep93xx/snappercl15.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-ep93xx/ts72xx.c | 2 |
9 files changed, 25 insertions, 42 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 44789eff983f..e40cd7b517b6 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
@@ -409,6 +409,7 @@ config ARCH_EP93XX | |||
409 | select ARCH_HAS_HOLES_MEMORYMODEL | 409 | select ARCH_HAS_HOLES_MEMORYMODEL |
410 | select ARCH_USES_GETTIMEOFFSET | 410 | select ARCH_USES_GETTIMEOFFSET |
411 | select NEED_MACH_MEMORY_H | 411 | select NEED_MACH_MEMORY_H |
412 | select MULTI_IRQ_HANDLER | ||
412 | help | 413 | help |
413 | This enables support for the Cirrus EP93xx series of CPUs. | 414 | This enables support for the Cirrus EP93xx series of CPUs. |
414 | 415 | ||
diff --git a/arch/arm/mach-ep93xx/adssphere.c b/arch/arm/mach-ep93xx/adssphere.c index 0713448206a5..d9b0ea2ba4d8 100644 --- a/arch/arm/mach-ep93xx/adssphere.c +++ b/arch/arm/mach-ep93xx/adssphere.c | |||
@@ -16,6 +16,7 @@ | |||
16 | 16 | ||
17 | #include <mach/hardware.h> | 17 | #include <mach/hardware.h> |
18 | 18 | ||
19 | #include <asm/hardware/vic.h> | ||
19 | #include <asm/mach-types.h> | 20 | #include <asm/mach-types.h> |
20 | #include <asm/mach/arch.h> | 21 | #include <asm/mach/arch.h> |
21 | 22 | ||
@@ -36,6 +37,7 @@ MACHINE_START(ADSSPHERE, "ADS Sphere board") | |||
36 | .atag_offset = 0x100, | 37 | .atag_offset = 0x100, |
37 | .map_io = ep93xx_map_io, | 38 | .map_io = ep93xx_map_io, |
38 | .init_irq = ep93xx_init_irq, | 39 | .init_irq = ep93xx_init_irq, |
40 | .handle_irq = vic_handle_irq, | ||
39 | .timer = &ep93xx_timer, | 41 | .timer = &ep93xx_timer, |
40 | .init_machine = adssphere_init_machine, | 42 | .init_machine = adssphere_init_machine, |
41 | MACHINE_END | 43 | MACHINE_END |
diff --git a/arch/arm/mach-ep93xx/edb93xx.c b/arch/arm/mach-ep93xx/edb93xx.c index 70ef8c527d27..9bbae0835f27 100644 --- a/arch/arm/mach-ep93xx/edb93xx.c +++ b/arch/arm/mach-ep93xx/edb93xx.c | |||
@@ -39,6 +39,7 @@ | |||
39 | #include <mach/ep93xx_spi.h> | 39 | #include <mach/ep93xx_spi.h> |
40 | #include <mach/gpio-ep93xx.h> | 40 | #include <mach/gpio-ep93xx.h> |
41 | 41 | ||
42 | #include <asm/hardware/vic.h> | ||
42 | #include <asm/mach-types.h> | 43 | #include <asm/mach-types.h> |
43 | #include <asm/mach/arch.h> | 44 | #include <asm/mach/arch.h> |
44 | 45 | ||
@@ -250,6 +251,7 @@ MACHINE_START(EDB9301, "Cirrus Logic EDB9301 Evaluation Board") | |||
250 | .atag_offset = 0x100, | 251 | .atag_offset = 0x100, |
251 | .map_io = ep93xx_map_io, | 252 | .map_io = ep93xx_map_io, |
252 | .init_irq = ep93xx_init_irq, | 253 | .init_irq = ep93xx_init_irq, |
254 | .handle_irq = vic_handle_irq, | ||
253 | .timer = &ep93xx_timer, | 255 | .timer = &ep93xx_timer, |
254 | .init_machine = edb93xx_init_machine, | 256 | .init_machine = edb93xx_init_machine, |
255 | MACHINE_END | 257 | MACHINE_END |
@@ -261,6 +263,7 @@ MACHINE_START(EDB9302, "Cirrus Logic EDB9302 Evaluation Board") | |||
261 | .atag_offset = 0x100, | 263 | .atag_offset = 0x100, |
262 | .map_io = ep93xx_map_io, | 264 | .map_io = ep93xx_map_io, |
263 | .init_irq = ep93xx_init_irq, | 265 | .init_irq = ep93xx_init_irq, |
266 | .handle_irq = vic_handle_irq, | ||
264 | .timer = &ep93xx_timer, | 267 | .timer = &ep93xx_timer, |
265 | .init_machine = edb93xx_init_machine, | 268 | .init_machine = edb93xx_init_machine, |
266 | MACHINE_END | 269 | MACHINE_END |
@@ -272,6 +275,7 @@ MACHINE_START(EDB9302A, "Cirrus Logic EDB9302A Evaluation Board") | |||
272 | .atag_offset = 0x100, | 275 | .atag_offset = 0x100, |
273 | .map_io = ep93xx_map_io, | 276 | .map_io = ep93xx_map_io, |
274 | .init_irq = ep93xx_init_irq, | 277 | .init_irq = ep93xx_init_irq, |
278 | .handle_irq = vic_handle_irq, | ||
275 | .timer = &ep93xx_timer, | 279 | .timer = &ep93xx_timer, |
276 | .init_machine = edb93xx_init_machine, | 280 | .init_machine = edb93xx_init_machine, |
277 | MACHINE_END | 281 | MACHINE_END |
@@ -283,6 +287,7 @@ MACHINE_START(EDB9307, "Cirrus Logic EDB9307 Evaluation Board") | |||
283 | .atag_offset = 0x100, | 287 | .atag_offset = 0x100, |
284 | .map_io = ep93xx_map_io, | 288 | .map_io = ep93xx_map_io, |
285 | .init_irq = ep93xx_init_irq, | 289 | .init_irq = ep93xx_init_irq, |
290 | .handle_irq = vic_handle_irq, | ||
286 | .timer = &ep93xx_timer, | 291 | .timer = &ep93xx_timer, |
287 | .init_machine = edb93xx_init_machine, | 292 | .init_machine = edb93xx_init_machine, |
288 | MACHINE_END | 293 | MACHINE_END |
@@ -294,6 +299,7 @@ MACHINE_START(EDB9307A, "Cirrus Logic EDB9307A Evaluation Board") | |||
294 | .atag_offset = 0x100, | 299 | .atag_offset = 0x100, |
295 | .map_io = ep93xx_map_io, | 300 | .map_io = ep93xx_map_io, |
296 | .init_irq = ep93xx_init_irq, | 301 | .init_irq = ep93xx_init_irq, |
302 | .handle_irq = vic_handle_irq, | ||
297 | .timer = &ep93xx_timer, | 303 | .timer = &ep93xx_timer, |
298 | .init_machine = edb93xx_init_machine, | 304 | .init_machine = edb93xx_init_machine, |
299 | MACHINE_END | 305 | MACHINE_END |
@@ -305,6 +311,7 @@ MACHINE_START(EDB9312, "Cirrus Logic EDB9312 Evaluation Board") | |||
305 | .atag_offset = 0x100, | 311 | .atag_offset = 0x100, |
306 | .map_io = ep93xx_map_io, | 312 | .map_io = ep93xx_map_io, |
307 | .init_irq = ep93xx_init_irq, | 313 | .init_irq = ep93xx_init_irq, |
314 | .handle_irq = vic_handle_irq, | ||
308 | .timer = &ep93xx_timer, | 315 | .timer = &ep93xx_timer, |
309 | .init_machine = edb93xx_init_machine, | 316 | .init_machine = edb93xx_init_machine, |
310 | MACHINE_END | 317 | MACHINE_END |
@@ -316,6 +323,7 @@ MACHINE_START(EDB9315, "Cirrus Logic EDB9315 Evaluation Board") | |||
316 | .atag_offset = 0x100, | 323 | .atag_offset = 0x100, |
317 | .map_io = ep93xx_map_io, | 324 | .map_io = ep93xx_map_io, |
318 | .init_irq = ep93xx_init_irq, | 325 | .init_irq = ep93xx_init_irq, |
326 | .handle_irq = vic_handle_irq, | ||
319 | .timer = &ep93xx_timer, | 327 | .timer = &ep93xx_timer, |
320 | .init_machine = edb93xx_init_machine, | 328 | .init_machine = edb93xx_init_machine, |
321 | MACHINE_END | 329 | MACHINE_END |
@@ -327,6 +335,7 @@ MACHINE_START(EDB9315A, "Cirrus Logic EDB9315A Evaluation Board") | |||
327 | .atag_offset = 0x100, | 335 | .atag_offset = 0x100, |
328 | .map_io = ep93xx_map_io, | 336 | .map_io = ep93xx_map_io, |
329 | .init_irq = ep93xx_init_irq, | 337 | .init_irq = ep93xx_init_irq, |
338 | .handle_irq = vic_handle_irq, | ||
330 | .timer = &ep93xx_timer, | 339 | .timer = &ep93xx_timer, |
331 | .init_machine = edb93xx_init_machine, | 340 | .init_machine = edb93xx_init_machine, |
332 | MACHINE_END | 341 | MACHINE_END |
diff --git a/arch/arm/mach-ep93xx/gesbc9312.c b/arch/arm/mach-ep93xx/gesbc9312.c index 45ee205856f8..1dd32a7c5f15 100644 --- a/arch/arm/mach-ep93xx/gesbc9312.c +++ b/arch/arm/mach-ep93xx/gesbc9312.c | |||
@@ -16,6 +16,7 @@ | |||
16 | 16 | ||
17 | #include <mach/hardware.h> | 17 | #include <mach/hardware.h> |
18 | 18 | ||
19 | #include <asm/hardware/vic.h> | ||
19 | #include <asm/mach-types.h> | 20 | #include <asm/mach-types.h> |
20 | #include <asm/mach/arch.h> | 21 | #include <asm/mach/arch.h> |
21 | 22 | ||
@@ -36,6 +37,7 @@ MACHINE_START(GESBC9312, "Glomation GESBC-9312-sx") | |||
36 | .atag_offset = 0x100, | 37 | .atag_offset = 0x100, |
37 | .map_io = ep93xx_map_io, | 38 | .map_io = ep93xx_map_io, |
38 | .init_irq = ep93xx_init_irq, | 39 | .init_irq = ep93xx_init_irq, |
40 | .handle_irq = vic_handle_irq, | ||
39 | .timer = &ep93xx_timer, | 41 | .timer = &ep93xx_timer, |
40 | .init_machine = gesbc9312_init_machine, | 42 | .init_machine = gesbc9312_init_machine, |
41 | MACHINE_END | 43 | MACHINE_END |
diff --git a/arch/arm/mach-ep93xx/include/mach/entry-macro.S b/arch/arm/mach-ep93xx/include/mach/entry-macro.S index 96b85e2c2c0b..9be6edcf9045 100644 --- a/arch/arm/mach-ep93xx/include/mach/entry-macro.S +++ b/arch/arm/mach-ep93xx/include/mach/entry-macro.S | |||
@@ -9,51 +9,9 @@ | |||
9 | * the Free Software Foundation; either version 2 of the License, or (at | 9 | * the Free Software Foundation; either version 2 of the License, or (at |
10 | * your option) any later version. | 10 | * your option) any later version. |
11 | */ | 11 | */ |
12 | #include <mach/ep93xx-regs.h> | ||
13 | 12 | ||
14 | .macro disable_fiq | 13 | .macro disable_fiq |
15 | .endm | 14 | .endm |
16 | 15 | ||
17 | .macro get_irqnr_preamble, base, tmp | ||
18 | .endm | ||
19 | |||
20 | .macro arch_ret_to_user, tmp1, tmp2 | 16 | .macro arch_ret_to_user, tmp1, tmp2 |
21 | .endm | 17 | .endm |
22 | |||
23 | .macro get_irqnr_and_base, irqnr, irqstat, base, tmp | ||
24 | ldr \base, =(EP93XX_AHB_VIRT_BASE) | ||
25 | orr \base, \base, #0x000b0000 | ||
26 | mov \irqnr, #0 | ||
27 | ldr \irqstat, [\base] @ lower 32 interrupts | ||
28 | cmp \irqstat, #0 | ||
29 | bne 1001f | ||
30 | |||
31 | eor \base, \base, #0x00070000 | ||
32 | ldr \irqstat, [\base] @ upper 32 interrupts | ||
33 | cmp \irqstat, #0 | ||
34 | beq 1002f | ||
35 | mov \irqnr, #0x20 | ||
36 | |||
37 | 1001: | ||
38 | movs \tmp, \irqstat, lsl #16 | ||
39 | movne \irqstat, \tmp | ||
40 | addeq \irqnr, \irqnr, #16 | ||
41 | |||
42 | movs \tmp, \irqstat, lsl #8 | ||
43 | movne \irqstat, \tmp | ||
44 | addeq \irqnr, \irqnr, #8 | ||
45 | |||
46 | movs \tmp, \irqstat, lsl #4 | ||
47 | movne \irqstat, \tmp | ||
48 | addeq \irqnr, \irqnr, #4 | ||
49 | |||
50 | movs \tmp, \irqstat, lsl #2 | ||
51 | movne \irqstat, \tmp | ||
52 | addeq \irqnr, \irqnr, #2 | ||
53 | |||
54 | movs \tmp, \irqstat, lsl #1 | ||
55 | addeq \irqnr, \irqnr, #1 | ||
56 | orrs \base, \base, #1 | ||
57 | |||
58 | 1002: | ||
59 | .endm | ||
diff --git a/arch/arm/mach-ep93xx/micro9.c b/arch/arm/mach-ep93xx/micro9.c index e72f7368876e..a6dae6c2e3c1 100644 --- a/arch/arm/mach-ep93xx/micro9.c +++ b/arch/arm/mach-ep93xx/micro9.c | |||
@@ -18,6 +18,7 @@ | |||
18 | 18 | ||
19 | #include <mach/hardware.h> | 19 | #include <mach/hardware.h> |
20 | 20 | ||
21 | #include <asm/hardware/vic.h> | ||
21 | #include <asm/mach-types.h> | 22 | #include <asm/mach-types.h> |
22 | #include <asm/mach/arch.h> | 23 | #include <asm/mach/arch.h> |
23 | 24 | ||
@@ -80,6 +81,7 @@ MACHINE_START(MICRO9, "Contec Micro9-High") | |||
80 | .atag_offset = 0x100, | 81 | .atag_offset = 0x100, |
81 | .map_io = ep93xx_map_io, | 82 | .map_io = ep93xx_map_io, |
82 | .init_irq = ep93xx_init_irq, | 83 | .init_irq = ep93xx_init_irq, |
84 | .handle_irq = vic_handle_irq, | ||
83 | .timer = &ep93xx_timer, | 85 | .timer = &ep93xx_timer, |
84 | .init_machine = micro9_init_machine, | 86 | .init_machine = micro9_init_machine, |
85 | MACHINE_END | 87 | MACHINE_END |
@@ -91,6 +93,7 @@ MACHINE_START(MICRO9M, "Contec Micro9-Mid") | |||
91 | .atag_offset = 0x100, | 93 | .atag_offset = 0x100, |
92 | .map_io = ep93xx_map_io, | 94 | .map_io = ep93xx_map_io, |
93 | .init_irq = ep93xx_init_irq, | 95 | .init_irq = ep93xx_init_irq, |
96 | .handle_irq = vic_handle_irq, | ||
94 | .timer = &ep93xx_timer, | 97 | .timer = &ep93xx_timer, |
95 | .init_machine = micro9_init_machine, | 98 | .init_machine = micro9_init_machine, |
96 | MACHINE_END | 99 | MACHINE_END |
@@ -102,6 +105,7 @@ MACHINE_START(MICRO9L, "Contec Micro9-Lite") | |||
102 | .atag_offset = 0x100, | 105 | .atag_offset = 0x100, |
103 | .map_io = ep93xx_map_io, | 106 | .map_io = ep93xx_map_io, |
104 | .init_irq = ep93xx_init_irq, | 107 | .init_irq = ep93xx_init_irq, |
108 | .handle_irq = vic_handle_irq, | ||
105 | .timer = &ep93xx_timer, | 109 | .timer = &ep93xx_timer, |
106 | .init_machine = micro9_init_machine, | 110 | .init_machine = micro9_init_machine, |
107 | MACHINE_END | 111 | MACHINE_END |
@@ -113,6 +117,7 @@ MACHINE_START(MICRO9S, "Contec Micro9-Slim") | |||
113 | .atag_offset = 0x100, | 117 | .atag_offset = 0x100, |
114 | .map_io = ep93xx_map_io, | 118 | .map_io = ep93xx_map_io, |
115 | .init_irq = ep93xx_init_irq, | 119 | .init_irq = ep93xx_init_irq, |
120 | .handle_irq = vic_handle_irq, | ||
116 | .timer = &ep93xx_timer, | 121 | .timer = &ep93xx_timer, |
117 | .init_machine = micro9_init_machine, | 122 | .init_machine = micro9_init_machine, |
118 | MACHINE_END | 123 | MACHINE_END |
diff --git a/arch/arm/mach-ep93xx/simone.c b/arch/arm/mach-ep93xx/simone.c index 52e090dc9d27..40121ba8e711 100644 --- a/arch/arm/mach-ep93xx/simone.c +++ b/arch/arm/mach-ep93xx/simone.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include <mach/fb.h> | 25 | #include <mach/fb.h> |
26 | #include <mach/gpio-ep93xx.h> | 26 | #include <mach/gpio-ep93xx.h> |
27 | 27 | ||
28 | #include <asm/hardware/vic.h> | ||
28 | #include <asm/mach-types.h> | 29 | #include <asm/mach-types.h> |
29 | #include <asm/mach/arch.h> | 30 | #include <asm/mach/arch.h> |
30 | 31 | ||
@@ -80,6 +81,7 @@ MACHINE_START(SIM_ONE, "Simplemachines Sim.One Board") | |||
80 | .atag_offset = 0x100, | 81 | .atag_offset = 0x100, |
81 | .map_io = ep93xx_map_io, | 82 | .map_io = ep93xx_map_io, |
82 | .init_irq = ep93xx_init_irq, | 83 | .init_irq = ep93xx_init_irq, |
84 | .handle_irq = vic_handle_irq, | ||
83 | .timer = &ep93xx_timer, | 85 | .timer = &ep93xx_timer, |
84 | .init_machine = simone_init_machine, | 86 | .init_machine = simone_init_machine, |
85 | MACHINE_END | 87 | MACHINE_END |
diff --git a/arch/arm/mach-ep93xx/snappercl15.c b/arch/arm/mach-ep93xx/snappercl15.c index 8121e3aedc0a..ec7c63ff01e2 100644 --- a/arch/arm/mach-ep93xx/snappercl15.c +++ b/arch/arm/mach-ep93xx/snappercl15.c | |||
@@ -31,6 +31,7 @@ | |||
31 | #include <mach/fb.h> | 31 | #include <mach/fb.h> |
32 | #include <mach/gpio-ep93xx.h> | 32 | #include <mach/gpio-ep93xx.h> |
33 | 33 | ||
34 | #include <asm/hardware/vic.h> | ||
34 | #include <asm/mach-types.h> | 35 | #include <asm/mach-types.h> |
35 | #include <asm/mach/arch.h> | 36 | #include <asm/mach/arch.h> |
36 | 37 | ||
@@ -177,6 +178,7 @@ MACHINE_START(SNAPPER_CL15, "Bluewater Systems Snapper CL15") | |||
177 | .atag_offset = 0x100, | 178 | .atag_offset = 0x100, |
178 | .map_io = ep93xx_map_io, | 179 | .map_io = ep93xx_map_io, |
179 | .init_irq = ep93xx_init_irq, | 180 | .init_irq = ep93xx_init_irq, |
181 | .handle_irq = vic_handle_irq, | ||
180 | .timer = &ep93xx_timer, | 182 | .timer = &ep93xx_timer, |
181 | .init_machine = snappercl15_init_machine, | 183 | .init_machine = snappercl15_init_machine, |
182 | MACHINE_END | 184 | MACHINE_END |
diff --git a/arch/arm/mach-ep93xx/ts72xx.c b/arch/arm/mach-ep93xx/ts72xx.c index 8b2f1435bcac..760384e6407d 100644 --- a/arch/arm/mach-ep93xx/ts72xx.c +++ b/arch/arm/mach-ep93xx/ts72xx.c | |||
@@ -23,6 +23,7 @@ | |||
23 | #include <mach/hardware.h> | 23 | #include <mach/hardware.h> |
24 | #include <mach/ts72xx.h> | 24 | #include <mach/ts72xx.h> |
25 | 25 | ||
26 | #include <asm/hardware/vic.h> | ||
26 | #include <asm/mach-types.h> | 27 | #include <asm/mach-types.h> |
27 | #include <asm/mach/map.h> | 28 | #include <asm/mach/map.h> |
28 | #include <asm/mach/arch.h> | 29 | #include <asm/mach/arch.h> |
@@ -247,6 +248,7 @@ MACHINE_START(TS72XX, "Technologic Systems TS-72xx SBC") | |||
247 | .atag_offset = 0x100, | 248 | .atag_offset = 0x100, |
248 | .map_io = ts72xx_map_io, | 249 | .map_io = ts72xx_map_io, |
249 | .init_irq = ep93xx_init_irq, | 250 | .init_irq = ep93xx_init_irq, |
251 | .handle_irq = vic_handle_irq, | ||
250 | .timer = &ep93xx_timer, | 252 | .timer = &ep93xx_timer, |
251 | .init_machine = ts72xx_init_machine, | 253 | .init_machine = ts72xx_init_machine, |
252 | MACHINE_END | 254 | MACHINE_END |