summaryrefslogtreecommitdiffstats
path: root/include/linux/platform_data/irq-renesas-intc-irqpin.h
diff options
context:
space:
mode:
authorMagnus Damm <damm@opensource.se>2013-02-18 23:28:34 +0900
committerSimon Horman <horms+renesas@verge.net.au>2013-03-18 21:26:05 +0900
commit443580486e3b96578928c1c91e8fbdcf0c9c9c7f (patch)
tree495af2e0ffddefdbed12ccc29cdd5443664d4d57 /include/linux/platform_data/irq-renesas-intc-irqpin.h
parentd75bc78b508d0a95d7738290d8ec9923691f4301 (diff)
downloadlinux-443580486e3b96578928c1c91e8fbdcf0c9c9c7f.tar.gz
linux-443580486e3b96578928c1c91e8fbdcf0c9c9c7f.tar.xz
irqchip: Renesas INTC External IRQ pin driver
This patch adds a driver for external IRQ pins connected to the INTC block on recent SoCs from Renesas. The INTC hardware block usually contains a rather wide range of features ranging from external IRQ pin handling to legacy interrupt controller support. On older SoCs the INTC is used as a general purpose interrupt controller both for external IRQ pins and on-chip devices. On more recent ARM based SoCs with Cortex-A9 the main interrupt controller is the GIC, but IRQ trigger setup still need to happen in the INTC hardware block. This driver implements the glue code needed to configure IRQ trigger and also handle mask/unmask and demux of external IRQ pins hooked up from the INTC to the GIC. Tested on sh73a0 and r8a7779. The hardware varies quite a bit with SoC model, for instance register width and bitfield widths vary wildly. The driver requires one GIC SPI per external IRQ pin to operate. Each driver instance will handle up to 8 external IRQ pins. The SoCs using this driver are currently mainly used together with regular platform devices so this driver allows configuration via platform data to support things like static interrupt base address. DT support will be added incrementally in the not so distant future. Signed-off-by: Magnus Damm <damm@opensource.se> Acked-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
Diffstat (limited to 'include/linux/platform_data/irq-renesas-intc-irqpin.h')
-rw-r--r--include/linux/platform_data/irq-renesas-intc-irqpin.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/include/linux/platform_data/irq-renesas-intc-irqpin.h b/include/linux/platform_data/irq-renesas-intc-irqpin.h
new file mode 100644
index 000000000000..00ccac34dac8
--- /dev/null
+++ b/include/linux/platform_data/irq-renesas-intc-irqpin.h
@@ -0,0 +1,10 @@
+#ifndef __IRQ_RENESAS_INTC_IRQPIN_H__
+#define __IRQ_RENESAS_INTC_IRQPIN_H__
+
+struct renesas_intc_irqpin_config {
+ unsigned int sense_bitfield_width;
+ unsigned int irq_base;
+ bool control_parent;
+};
+
+#endif /* __IRQ_RENESAS_INTC_IRQPIN_H__ */