diff options
author | Magnus Damm <damm@opensource.se> | 2010-12-28 03:27:10 -0500 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2011-01-06 20:42:56 -0500 |
commit | e74a9625f8dcf1a924345b24cec8476c52593df8 (patch) | |
tree | 2ccbb57d711d54efa6085d5c0de1adb48b60b165 | |
parent | 863b171952dba1a3ce9d345cfe4e93c9fdd42f49 (diff) |
ARM: mach-shmobile: Run-time IRQ handler for GIC
Break-out GIC specific IRQ demux code from the file
entry-macro-intc.S and register during run-time.
Covers sh73a0.
Signed-off-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
-rw-r--r-- | arch/arm/mach-shmobile/Makefile | 1 | ||||
-rw-r--r-- | arch/arm/mach-shmobile/board-ag5evm.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-shmobile/entry-gic.S | 20 | ||||
-rw-r--r-- | arch/arm/mach-shmobile/include/mach/common.h | 1 |
4 files changed, 23 insertions, 0 deletions
diff --git a/arch/arm/mach-shmobile/Makefile b/arch/arm/mach-shmobile/Makefile index e385ef03d5bd..d16165a7b487 100644 --- a/arch/arm/mach-shmobile/Makefile +++ b/arch/arm/mach-shmobile/Makefile | |||
@@ -22,6 +22,7 @@ pfc-$(CONFIG_ARCH_SH73A0) += pfc-sh73a0.o | |||
22 | obj-$(CONFIG_ARCH_SH7367) += entry-intc.o | 22 | obj-$(CONFIG_ARCH_SH7367) += entry-intc.o |
23 | obj-$(CONFIG_ARCH_SH7377) += entry-intc.o | 23 | obj-$(CONFIG_ARCH_SH7377) += entry-intc.o |
24 | obj-$(CONFIG_ARCH_SH7372) += entry-intc.o | 24 | obj-$(CONFIG_ARCH_SH7372) += entry-intc.o |
25 | obj-$(CONFIG_ARCH_SH73A0) += entry-gic.o | ||
25 | 26 | ||
26 | # Board objects | 27 | # Board objects |
27 | obj-$(CONFIG_MACH_G3EVM) += board-g3evm.o | 28 | obj-$(CONFIG_MACH_G3EVM) += board-g3evm.o |
diff --git a/arch/arm/mach-shmobile/board-ag5evm.c b/arch/arm/mach-shmobile/board-ag5evm.c index 2f135923e2bd..c18a740a4159 100644 --- a/arch/arm/mach-shmobile/board-ag5evm.c +++ b/arch/arm/mach-shmobile/board-ag5evm.c | |||
@@ -309,6 +309,7 @@ struct sys_timer ag5evm_timer = { | |||
309 | MACHINE_START(AG5EVM, "ag5evm") | 309 | MACHINE_START(AG5EVM, "ag5evm") |
310 | .map_io = ag5evm_map_io, | 310 | .map_io = ag5evm_map_io, |
311 | .init_irq = ag5evm_init_irq, | 311 | .init_irq = ag5evm_init_irq, |
312 | .handle_irq = shmobile_handle_irq_gic, | ||
312 | .init_machine = ag5evm_init, | 313 | .init_machine = ag5evm_init, |
313 | .timer = &ag5evm_timer, | 314 | .timer = &ag5evm_timer, |
314 | MACHINE_END | 315 | MACHINE_END |
diff --git a/arch/arm/mach-shmobile/entry-gic.S b/arch/arm/mach-shmobile/entry-gic.S new file mode 100644 index 000000000000..6e4fa4715199 --- /dev/null +++ b/arch/arm/mach-shmobile/entry-gic.S | |||
@@ -0,0 +1,20 @@ | |||
1 | /* | ||
2 | * ARM Interrupt demux handler using GIC | ||
3 | * | ||
4 | * Copyright (C) 2010 Magnus Damm | ||
5 | * Copyright (C) 2010 Renesas Solutions Corp. | ||
6 | * | ||
7 | * This file is licensed under the terms of the GNU General Public | ||
8 | * License version 2. This program is licensed "as is" without any | ||
9 | * warranty of any kind, whether express or implied. | ||
10 | */ | ||
11 | |||
12 | #include <asm/entry-macro-multi.S> | ||
13 | #include <asm/hardware/gic.h> | ||
14 | #include <asm/hardware/entry-macro-gic.S> | ||
15 | |||
16 | .macro get_irqnr_preamble, base, tmp | ||
17 | ldr \base, =(0xf0000100) | ||
18 | .endm | ||
19 | |||
20 | arch_irq_handler shmobile_handle_irq_gic | ||
diff --git a/arch/arm/mach-shmobile/include/mach/common.h b/arch/arm/mach-shmobile/include/mach/common.h index ab75183bfd76..9f46cf5ca75f 100644 --- a/arch/arm/mach-shmobile/include/mach/common.h +++ b/arch/arm/mach-shmobile/include/mach/common.h | |||
@@ -6,6 +6,7 @@ extern void shmobile_setup_console(void); | |||
6 | struct clk; | 6 | struct clk; |
7 | extern int clk_init(void); | 7 | extern int clk_init(void); |
8 | extern void shmobile_handle_irq_intc(struct pt_regs *); | 8 | extern void shmobile_handle_irq_intc(struct pt_regs *); |
9 | extern void shmobile_handle_irq_gic(struct pt_regs *); | ||
9 | 10 | ||
10 | extern void sh7367_init_irq(void); | 11 | extern void sh7367_init_irq(void); |
11 | extern void sh7367_add_early_devices(void); | 12 | extern void sh7367_add_early_devices(void); |