aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTony Lindgren <tony@atomide.com>2015-01-13 17:23:25 -0500
committerThomas Gleixner <tglx@linutronix.de>2015-01-26 05:38:23 -0500
commit19f92b237b1700d30b788f00b16a627ffbfdf0e5 (patch)
tree1139f78ff3eef2d39a25916dcd63f69ccd76e0fc
parentcdb647a772e9def47594ff8ce7acf47f4d257b2e (diff)
irqchip: omap-intc: Fix support for dm814 and dm816
On dm81xx we have 128 interrupts like am33xx has. Let's add compatible flags for dm814x and dm816x, and document the existing binding. As the dm81xx are booting in device tree only mode, we can now also remove ti81xx_init_irq() legacy function. Signed-off-by: Tony Lindgren <tony@atomide.com> Reviewed-by: Felipe Balbi <balbi@ti.com> Cc: Brian Hutchinson <b.hutchman@gmail.com> Cc: Jason Cooper <jason@lakedaemon.net> Link: http://lkml.kernel.org/r/1421187806-6804-2-git-send-email-tony@atomide.com Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-rw-r--r--Documentation/devicetree/bindings/interrupt-controller/ti,omap-intc-irq.txt28
-rw-r--r--drivers/irqchip/irq-omap-intc.c14
-rw-r--r--include/linux/irqchip/irq-omap-intc.h1
3 files changed, 33 insertions, 10 deletions
diff --git a/Documentation/devicetree/bindings/interrupt-controller/ti,omap-intc-irq.txt b/Documentation/devicetree/bindings/interrupt-controller/ti,omap-intc-irq.txt
new file mode 100644
index 000000000000..38ce5d037722
--- /dev/null
+++ b/Documentation/devicetree/bindings/interrupt-controller/ti,omap-intc-irq.txt
@@ -0,0 +1,28 @@
1Omap2/3 intc controller
2
3On TI omap2 and 3 the intc interrupt controller can provide
496 or 128 IRQ signals to the ARM host depending on the SoC.
5
6Required Properties:
7- compatible: should be one of
8 "ti,omap2-intc"
9 "ti,omap3-intc"
10 "ti,dm814-intc"
11 "ti,dm816-intc"
12 "ti,am33xx-intc"
13
14- interrupt-controller : Identifies the node as an interrupt controller
15- #interrupt-cells : Specifies the number of cells needed to encode interrupt
16 source, should be 1 for intc
17- interrupts: interrupt reference to primary interrupt controller
18
19Please refer to interrupts.txt in this directory for details of the common
20Interrupt Controllers bindings used by client devices.
21
22Example:
23 intc: interrupt-controller@48200000 {
24 compatible = "ti,omap3-intc";
25 interrupt-controller;
26 #interrupt-cells = <1>;
27 reg = <0x48200000 0x1000>;
28 };
diff --git a/drivers/irqchip/irq-omap-intc.c b/drivers/irqchip/irq-omap-intc.c
index c03f140acbae..b444d0e48f1f 100644
--- a/drivers/irqchip/irq-omap-intc.c
+++ b/drivers/irqchip/irq-omap-intc.c
@@ -380,14 +380,6 @@ void __init omap3_init_irq(void)
380 set_handle_irq(omap_intc_handle_irq); 380 set_handle_irq(omap_intc_handle_irq);
381} 381}
382 382
383void __init ti81xx_init_irq(void)
384{
385 omap_nr_irqs = 96;
386 omap_nr_pending = 4;
387 omap_init_irq(OMAP34XX_IC_BASE, NULL);
388 set_handle_irq(omap_intc_handle_irq);
389}
390
391static int __init intc_of_init(struct device_node *node, 383static int __init intc_of_init(struct device_node *node,
392 struct device_node *parent) 384 struct device_node *parent)
393{ 385{
@@ -399,7 +391,9 @@ static int __init intc_of_init(struct device_node *node,
399 if (WARN_ON(!node)) 391 if (WARN_ON(!node))
400 return -ENODEV; 392 return -ENODEV;
401 393
402 if (of_device_is_compatible(node, "ti,am33xx-intc")) { 394 if (of_device_is_compatible(node, "ti,dm814-intc") ||
395 of_device_is_compatible(node, "ti,dm816-intc") ||
396 of_device_is_compatible(node, "ti,am33xx-intc")) {
403 omap_nr_irqs = 128; 397 omap_nr_irqs = 128;
404 omap_nr_pending = 4; 398 omap_nr_pending = 4;
405 } 399 }
@@ -415,4 +409,6 @@ static int __init intc_of_init(struct device_node *node,
415 409
416IRQCHIP_DECLARE(omap2_intc, "ti,omap2-intc", intc_of_init); 410IRQCHIP_DECLARE(omap2_intc, "ti,omap2-intc", intc_of_init);
417IRQCHIP_DECLARE(omap3_intc, "ti,omap3-intc", intc_of_init); 411IRQCHIP_DECLARE(omap3_intc, "ti,omap3-intc", intc_of_init);
412IRQCHIP_DECLARE(dm814x_intc, "ti,dm814-intc", intc_of_init);
413IRQCHIP_DECLARE(dm816x_intc, "ti,dm816-intc", intc_of_init);
418IRQCHIP_DECLARE(am33xx_intc, "ti,am33xx-intc", intc_of_init); 414IRQCHIP_DECLARE(am33xx_intc, "ti,am33xx-intc", intc_of_init);
diff --git a/include/linux/irqchip/irq-omap-intc.h b/include/linux/irqchip/irq-omap-intc.h
index e06b370cfc0d..bda426ab0ab7 100644
--- a/include/linux/irqchip/irq-omap-intc.h
+++ b/include/linux/irqchip/irq-omap-intc.h
@@ -20,7 +20,6 @@
20 20
21void omap2_init_irq(void); 21void omap2_init_irq(void);
22void omap3_init_irq(void); 22void omap3_init_irq(void);
23void ti81xx_init_irq(void);
24 23
25int omap_irq_pending(void); 24int omap_irq_pending(void);
26void omap_intc_save_context(void); 25void omap_intc_save_context(void);