arm64: Use irqchip_init() for interrupt controller initialisation
authorCatalin Marinas <catalin.marinas@arm.com>
Mon, 14 Jan 2013 12:39:31 +0000 (12:39 +0000)
committerCatalin Marinas <catalin.marinas@arm.com>
Tue, 26 Mar 2013 16:02:23 +0000 (16:02 +0000)
This patch uses the generic irqchip_init() function for initialising the
interrupt controller on arm64. It also adds several definitions required
by the ARM GIC irqchip driver but does not enable ARM_GIC yet.

Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
arch/arm64/include/asm/exception.h
arch/arm64/include/asm/hardirq.h
arch/arm64/include/asm/irq.h
arch/arm64/kernel/irq.c

index ac63519b7b90dc8a13dd46f9f562bdf1205a9b80..0303705fcad6a64d19c088ba0f79cde75acaf72b 100644 (file)
@@ -19,5 +19,6 @@
 #define __ASM_EXCEPTION_H
 
 #define __exception    __attribute__((section(".exception.text")))
+#define __exception_irq_entry  __exception
 
 #endif /* __ASM_EXCEPTION_H */
index 507546353d62131ca70b27509af02ac79a82d67f..990c051e7829a6ff5df031f5d7e89946383bb840 100644 (file)
@@ -49,4 +49,9 @@ static inline void ack_bad_irq(unsigned int irq)
 
 extern void handle_IRQ(unsigned int, struct pt_regs *);
 
+/*
+ * No arch-specific IRQ flags.
+ */
+#define set_irq_flags(irq, flags)
+
 #endif /* __ASM_HARDIRQ_H */
index a4e1cad3202a638b334a6ff727bcb603563ff9b7..0332fc077f6e656f134f3297c28ef744d9616d1e 100644 (file)
@@ -4,5 +4,6 @@
 #include <asm-generic/irq.h>
 
 extern void (*handle_arch_irq)(struct pt_regs *);
+extern void set_handle_irq(void (*handle_irq)(struct pt_regs *));
 
 #endif
index 0373c6609eafc2ed62910e9aa07898c9990c13e6..ecb3354292ed2af479aa7d3df33c1d3100dfdd4e 100644 (file)
@@ -25,7 +25,7 @@
 #include <linux/irq.h>
 #include <linux/smp.h>
 #include <linux/init.h>
-#include <linux/of_irq.h>
+#include <linux/irqchip.h>
 #include <linux/seq_file.h>
 #include <linux/ratelimit.h>
 
@@ -67,18 +67,17 @@ void handle_IRQ(unsigned int irq, struct pt_regs *regs)
        set_irq_regs(old_regs);
 }
 
-/*
- * Interrupt controllers supported by the kernel.
- */
-static const struct of_device_id intctrl_of_match[] __initconst = {
-       /* IRQ controllers { .compatible, .data } info to go here */
-       {}
-};
+void __init set_handle_irq(void (*handle_irq)(struct pt_regs *))
+{
+       if (handle_arch_irq)
+               return;
+
+       handle_arch_irq = handle_irq;
+}
 
 void __init init_IRQ(void)
 {
-       of_irq_init(intctrl_of_match);
-
+       irqchip_init();
        if (!handle_arch_irq)
                panic("No interrupt controller found.");
 }