ARM: mach-shmobile: Run-time IRQ handler for GIC
authorMagnus Damm <damm@opensource.se>
Tue, 28 Dec 2010 08:27:10 +0000 (08:27 +0000)
committerPaul Mundt <lethal@linux-sh.org>
Fri, 7 Jan 2011 01:42:56 +0000 (10:42 +0900)
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>
arch/arm/mach-shmobile/Makefile
arch/arm/mach-shmobile/board-ag5evm.c
arch/arm/mach-shmobile/entry-gic.S [new file with mode: 0644]
arch/arm/mach-shmobile/include/mach/common.h

index e385ef03d5bd8b08ac1fddbcf82f6a8661682b2b..d16165a7b487ac8fa4c7dddbc4c1d332c56e38ea 100644 (file)
@@ -22,6 +22,7 @@ pfc-$(CONFIG_ARCH_SH73A0)     += pfc-sh73a0.o
 obj-$(CONFIG_ARCH_SH7367)      += entry-intc.o
 obj-$(CONFIG_ARCH_SH7377)      += entry-intc.o
 obj-$(CONFIG_ARCH_SH7372)      += entry-intc.o
+obj-$(CONFIG_ARCH_SH73A0)      += entry-gic.o
 
 # Board objects
 obj-$(CONFIG_MACH_G3EVM)       += board-g3evm.o
index 2f135923e2bda29451de39cb51c0f40c82dad770..c18a740a415957b2bcd8e4ea30d192822b501c5f 100644 (file)
@@ -309,6 +309,7 @@ struct sys_timer ag5evm_timer = {
 MACHINE_START(AG5EVM, "ag5evm")
        .map_io         = ag5evm_map_io,
        .init_irq       = ag5evm_init_irq,
+       .handle_irq     = shmobile_handle_irq_gic,
        .init_machine   = ag5evm_init,
        .timer          = &ag5evm_timer,
 MACHINE_END
diff --git a/arch/arm/mach-shmobile/entry-gic.S b/arch/arm/mach-shmobile/entry-gic.S
new file mode 100644 (file)
index 0000000..6e4fa47
--- /dev/null
@@ -0,0 +1,20 @@
+/*
+ * ARM Interrupt demux handler using GIC
+ *
+ * Copyright (C) 2010 Magnus Damm
+ * Copyright (C) 2010 Renesas Solutions Corp.
+ *
+ * This file is licensed under  the terms of the GNU General Public
+ * License version 2. This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+#include <asm/entry-macro-multi.S>
+#include <asm/hardware/gic.h>
+#include <asm/hardware/entry-macro-gic.S>
+
+       .macro  get_irqnr_preamble, base, tmp
+       ldr     \base, =(0xf0000100)
+       .endm
+
+       arch_irq_handler shmobile_handle_irq_gic
index ab75183bfd76037a1438574916c36ee9fd14c738..9f46cf5ca75f1cb92e85c5c1de8b4d47c136ba94 100644 (file)
@@ -6,6 +6,7 @@ extern void shmobile_setup_console(void);
 struct clk;
 extern int clk_init(void);
 extern void shmobile_handle_irq_intc(struct pt_regs *);
+extern void shmobile_handle_irq_gic(struct pt_regs *);
 
 extern void sh7367_init_irq(void);
 extern void sh7367_add_early_devices(void);