diff options
author | Jamie Iles <jamie@jamieiles.com> | 2011-09-27 15:46:10 -0400 |
---|---|---|
committer | Marc Zyngier <marc.zyngier@arm.com> | 2011-11-15 13:14:04 -0500 |
commit | c8be7acd63ed65aa034fc036bb2c7867f30561bd (patch) | |
tree | 853760ba378dfdf4685e8207b63bb9461370f5db /arch/arm | |
parent | b7378eafb3c478824146977022889c97f077bbd5 (diff) |
ARM: versatile: convert to MULTI_IRQ_HANDLER
Now that there is a generic IRQ handler for multiple VIC devices use it
for versatile to help building multi platform kernels.
Cc: Russell King <linux@arm.linux.org.uk>
Tested-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Jamie Iles <jamie@jamieiles.com>
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/Kconfig | 1 | ||||
-rw-r--r-- | arch/arm/mach-versatile/include/mach/entry-macro.S | 30 | ||||
-rw-r--r-- | arch/arm/mach-versatile/versatile_ab.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-versatile/versatile_dt.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-versatile/versatile_pb.c | 2 |
5 files changed, 7 insertions, 30 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 89ed92624cc8..f48219b4ad7a 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
@@ -294,6 +294,7 @@ config ARCH_VERSATILE | |||
294 | select PLAT_VERSATILE_CLCD | 294 | select PLAT_VERSATILE_CLCD |
295 | select PLAT_VERSATILE_FPGA_IRQ | 295 | select PLAT_VERSATILE_FPGA_IRQ |
296 | select ARM_TIMER_SP804 | 296 | select ARM_TIMER_SP804 |
297 | select MULTI_IRQ_HANDLER | ||
297 | help | 298 | help |
298 | This enables support for ARM Ltd Versatile board. | 299 | This enables support for ARM Ltd Versatile board. |
299 | 300 | ||
diff --git a/arch/arm/mach-versatile/include/mach/entry-macro.S b/arch/arm/mach-versatile/include/mach/entry-macro.S index e6f7c1663160..b6f0dbf122ee 100644 --- a/arch/arm/mach-versatile/include/mach/entry-macro.S +++ b/arch/arm/mach-versatile/include/mach/entry-macro.S | |||
@@ -7,39 +7,9 @@ | |||
7 | * License version 2. This program is licensed "as is" without any | 7 | * License version 2. This program is licensed "as is" without any |
8 | * warranty of any kind, whether express or implied. | 8 | * warranty of any kind, whether express or implied. |
9 | */ | 9 | */ |
10 | #include <mach/hardware.h> | ||
11 | #include <mach/platform.h> | ||
12 | #include <asm/hardware/vic.h> | ||
13 | 10 | ||
14 | .macro disable_fiq | 11 | .macro disable_fiq |
15 | .endm | 12 | .endm |
16 | 13 | ||
17 | .macro get_irqnr_preamble, base, tmp | ||
18 | ldr \base, =IO_ADDRESS(VERSATILE_VIC_BASE) | ||
19 | .endm | ||
20 | |||
21 | .macro arch_ret_to_user, tmp1, tmp2 | 14 | .macro arch_ret_to_user, tmp1, tmp2 |
22 | .endm | 15 | .endm |
23 | |||
24 | .macro get_irqnr_and_base, irqnr, irqstat, base, tmp | ||
25 | ldr \irqstat, [\base, #VIC_IRQ_STATUS] @ get masked status | ||
26 | mov \irqnr, #0 | ||
27 | teq \irqstat, #0 | ||
28 | beq 1003f | ||
29 | |||
30 | 1001: tst \irqstat, #15 | ||
31 | bne 1002f | ||
32 | add \irqnr, \irqnr, #4 | ||
33 | movs \irqstat, \irqstat, lsr #4 | ||
34 | bne 1001b | ||
35 | 1002: tst \irqstat, #1 | ||
36 | bne 1003f | ||
37 | add \irqnr, \irqnr, #1 | ||
38 | movs \irqstat, \irqstat, lsr #1 | ||
39 | bne 1002b | ||
40 | 1003: /* EQ will be set if no irqs pending */ | ||
41 | |||
42 | @ clz \irqnr, \irqstat | ||
43 | @1003: /* EQ will be set if we reach MAXIRQNUM */ | ||
44 | .endm | ||
45 | |||
diff --git a/arch/arm/mach-versatile/versatile_ab.c b/arch/arm/mach-versatile/versatile_ab.c index fda4866703cd..c83a1f379f7a 100644 --- a/arch/arm/mach-versatile/versatile_ab.c +++ b/arch/arm/mach-versatile/versatile_ab.c | |||
@@ -27,6 +27,7 @@ | |||
27 | 27 | ||
28 | #include <mach/hardware.h> | 28 | #include <mach/hardware.h> |
29 | #include <asm/irq.h> | 29 | #include <asm/irq.h> |
30 | #include <asm/hardware/vic.h> | ||
30 | #include <asm/mach-types.h> | 31 | #include <asm/mach-types.h> |
31 | 32 | ||
32 | #include <asm/mach/arch.h> | 33 | #include <asm/mach/arch.h> |
@@ -39,6 +40,7 @@ MACHINE_START(VERSATILE_AB, "ARM-Versatile AB") | |||
39 | .map_io = versatile_map_io, | 40 | .map_io = versatile_map_io, |
40 | .init_early = versatile_init_early, | 41 | .init_early = versatile_init_early, |
41 | .init_irq = versatile_init_irq, | 42 | .init_irq = versatile_init_irq, |
43 | .handle_irq = vic_handle_irq, | ||
42 | .timer = &versatile_timer, | 44 | .timer = &versatile_timer, |
43 | .init_machine = versatile_init, | 45 | .init_machine = versatile_init, |
44 | MACHINE_END | 46 | MACHINE_END |
diff --git a/arch/arm/mach-versatile/versatile_dt.c b/arch/arm/mach-versatile/versatile_dt.c index 54e037c090f5..f4d1e0f072c8 100644 --- a/arch/arm/mach-versatile/versatile_dt.c +++ b/arch/arm/mach-versatile/versatile_dt.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <linux/init.h> | 24 | #include <linux/init.h> |
25 | #include <linux/of_irq.h> | 25 | #include <linux/of_irq.h> |
26 | #include <linux/of_platform.h> | 26 | #include <linux/of_platform.h> |
27 | #include <asm/hardware/vic.h> | ||
27 | #include <asm/mach-types.h> | 28 | #include <asm/mach-types.h> |
28 | #include <asm/mach/arch.h> | 29 | #include <asm/mach/arch.h> |
29 | 30 | ||
@@ -45,6 +46,7 @@ DT_MACHINE_START(VERSATILE_PB, "ARM-Versatile (Device Tree Support)") | |||
45 | .map_io = versatile_map_io, | 46 | .map_io = versatile_map_io, |
46 | .init_early = versatile_init_early, | 47 | .init_early = versatile_init_early, |
47 | .init_irq = versatile_init_irq, | 48 | .init_irq = versatile_init_irq, |
49 | .handle_irq = vic_handle_irq, | ||
48 | .timer = &versatile_timer, | 50 | .timer = &versatile_timer, |
49 | .init_machine = versatile_dt_init, | 51 | .init_machine = versatile_dt_init, |
50 | .dt_compat = versatile_dt_match, | 52 | .dt_compat = versatile_dt_match, |
diff --git a/arch/arm/mach-versatile/versatile_pb.c b/arch/arm/mach-versatile/versatile_pb.c index feaf9cbe60f6..4d31eeb6c101 100644 --- a/arch/arm/mach-versatile/versatile_pb.c +++ b/arch/arm/mach-versatile/versatile_pb.c | |||
@@ -28,6 +28,7 @@ | |||
28 | #include <linux/io.h> | 28 | #include <linux/io.h> |
29 | 29 | ||
30 | #include <mach/hardware.h> | 30 | #include <mach/hardware.h> |
31 | #include <asm/hardware/vic.h> | ||
31 | #include <asm/irq.h> | 32 | #include <asm/irq.h> |
32 | #include <asm/mach-types.h> | 33 | #include <asm/mach-types.h> |
33 | 34 | ||
@@ -107,6 +108,7 @@ MACHINE_START(VERSATILE_PB, "ARM-Versatile PB") | |||
107 | .map_io = versatile_map_io, | 108 | .map_io = versatile_map_io, |
108 | .init_early = versatile_init_early, | 109 | .init_early = versatile_init_early, |
109 | .init_irq = versatile_init_irq, | 110 | .init_irq = versatile_init_irq, |
111 | .handle_irq = vic_handle_irq, | ||
110 | .timer = &versatile_timer, | 112 | .timer = &versatile_timer, |
111 | .init_machine = versatile_pb_init, | 113 | .init_machine = versatile_pb_init, |
112 | MACHINE_END | 114 | MACHINE_END |