aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMagnus Damm <damm@opensource.se>2010-12-28 03:27:10 -0500
committerPaul Mundt <lethal@linux-sh.org>2011-01-06 20:42:56 -0500
commite74a9625f8dcf1a924345b24cec8476c52593df8 (patch)
tree2ccbb57d711d54efa6085d5c0de1adb48b60b165
parent863b171952dba1a3ce9d345cfe4e93c9fdd42f49 (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/Makefile1
-rw-r--r--arch/arm/mach-shmobile/board-ag5evm.c1
-rw-r--r--arch/arm/mach-shmobile/entry-gic.S20
-rw-r--r--arch/arm/mach-shmobile/include/mach/common.h1
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
22obj-$(CONFIG_ARCH_SH7367) += entry-intc.o 22obj-$(CONFIG_ARCH_SH7367) += entry-intc.o
23obj-$(CONFIG_ARCH_SH7377) += entry-intc.o 23obj-$(CONFIG_ARCH_SH7377) += entry-intc.o
24obj-$(CONFIG_ARCH_SH7372) += entry-intc.o 24obj-$(CONFIG_ARCH_SH7372) += entry-intc.o
25obj-$(CONFIG_ARCH_SH73A0) += entry-gic.o
25 26
26# Board objects 27# Board objects
27obj-$(CONFIG_MACH_G3EVM) += board-g3evm.o 28obj-$(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 = {
309MACHINE_START(AG5EVM, "ag5evm") 309MACHINE_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,
314MACHINE_END 315MACHINE_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);
6struct clk; 6struct clk;
7extern int clk_init(void); 7extern int clk_init(void);
8extern void shmobile_handle_irq_intc(struct pt_regs *); 8extern void shmobile_handle_irq_intc(struct pt_regs *);
9extern void shmobile_handle_irq_gic(struct pt_regs *);
9 10
10extern void sh7367_init_irq(void); 11extern void sh7367_init_irq(void);
11extern void sh7367_add_early_devices(void); 12extern void sh7367_add_early_devices(void);