aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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);