summaryrefslogtreecommitdiff
path: root/arch/metag/kernel
diff options
context:
space:
mode:
authorJames Hogan <james.hogan@imgtec.com>2012-10-09 10:54:47 +0100
committerJames Hogan <james.hogan@imgtec.com>2013-03-02 20:09:48 +0000
commit5698c50d9da4ab2f57d98c64ea97675dcaf2a608 (patch)
tree5b82a24daa8bbb85703489340cbfdcb00a2f20a4 /arch/metag/kernel
parent63047ea36070d11f902ab7d09a5a18aea037c0f7 (diff)
metag: Internal and external irqchips
Meta core internal interrupts (from HWSTATMETA and friends) are vectored onto the TR1 core trigger for the current thread. This is demultiplexed in irq-metag.c to individual Linux IRQs for each internal interrupt. External SoC interrupts (from HWSTATEXT and friends) are vectored onto the TR2 core trigger for the current thread. This is demultiplexed in irq-metag-ext.c to individual Linux IRQs for each external SoC interrupt. The external irqchip has devicetree bindings for configuring the number of irq banks and the type of masking available. Signed-off-by: James Hogan <james.hogan@imgtec.com> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Grant Likely <grant.likely@secretlab.ca> Cc: Rob Herring <rob.herring@calxeda.com> Cc: Rob Landley <rob@landley.net> Cc: Dom Cobley <popcornmix@gmail.com> Cc: Simon Arlott <simon@fire.lp0.eu> Cc: Viresh Kumar <viresh.kumar@linaro.org> Cc: Maxime Ripard <maxime.ripard@free-electrons.com> Cc: devicetree-discuss@lists.ozlabs.org Cc: linux-doc@vger.kernel.org
Diffstat (limited to 'arch/metag/kernel')
-rw-r--r--arch/metag/kernel/irq.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/metag/kernel/irq.c b/arch/metag/kernel/irq.c
index 7c043491e1e3..87707efeb0a3 100644
--- a/arch/metag/kernel/irq.c
+++ b/arch/metag/kernel/irq.c
@@ -6,6 +6,8 @@
#include <linux/kernel.h>
#include <linux/interrupt.h>
#include <linux/init.h>
+#include <linux/irqchip/metag-ext.h>
+#include <linux/irqchip/metag.h>
#include <linux/irqdomain.h>
#include <linux/ratelimit.h>
@@ -258,6 +260,9 @@ void __init init_IRQ(void)
irq_ctx_init(smp_processor_id());
+ init_internal_IRQ();
+ init_external_IRQ();
+
if (machine_desc->init_irq)
machine_desc->init_irq();
}