diff options
| -rw-r--r-- | Documentation/devicetree/bindings/interrupt-controller/ti,omap-intc-irq.txt | 28 | ||||
| -rw-r--r-- | drivers/irqchip/irq-omap-intc.c | 14 | ||||
| -rw-r--r-- | include/linux/irqchip/irq-omap-intc.h | 1 |
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 @@ | |||
| 1 | Omap2/3 intc controller | ||
| 2 | |||
| 3 | On TI omap2 and 3 the intc interrupt controller can provide | ||
| 4 | 96 or 128 IRQ signals to the ARM host depending on the SoC. | ||
| 5 | |||
| 6 | Required 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 | |||
| 19 | Please refer to interrupts.txt in this directory for details of the common | ||
| 20 | Interrupt Controllers bindings used by client devices. | ||
| 21 | |||
| 22 | Example: | ||
| 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 | ||
| 383 | void __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 | |||
| 391 | static int __init intc_of_init(struct device_node *node, | 383 | static 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 | ||
| 416 | IRQCHIP_DECLARE(omap2_intc, "ti,omap2-intc", intc_of_init); | 410 | IRQCHIP_DECLARE(omap2_intc, "ti,omap2-intc", intc_of_init); |
| 417 | IRQCHIP_DECLARE(omap3_intc, "ti,omap3-intc", intc_of_init); | 411 | IRQCHIP_DECLARE(omap3_intc, "ti,omap3-intc", intc_of_init); |
| 412 | IRQCHIP_DECLARE(dm814x_intc, "ti,dm814-intc", intc_of_init); | ||
| 413 | IRQCHIP_DECLARE(dm816x_intc, "ti,dm816-intc", intc_of_init); | ||
| 418 | IRQCHIP_DECLARE(am33xx_intc, "ti,am33xx-intc", intc_of_init); | 414 | IRQCHIP_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 | ||
| 21 | void omap2_init_irq(void); | 21 | void omap2_init_irq(void); |
| 22 | void omap3_init_irq(void); | 22 | void omap3_init_irq(void); |
| 23 | void ti81xx_init_irq(void); | ||
| 24 | 23 | ||
| 25 | int omap_irq_pending(void); | 24 | int omap_irq_pending(void); |
| 26 | void omap_intc_save_context(void); | 25 | void omap_intc_save_context(void); |
