Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Tony Lindgren and committed by
Thomas Gleixner
19f92b23 cdb647a7

+33 -10
+28
Documentation/devicetree/bindings/interrupt-controller/ti,omap-intc-irq.txt
··· 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 + };
+5 -9
drivers/irqchip/irq-omap-intc.c
··· 380 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 383 static int __init intc_of_init(struct device_node *node, 392 384 struct device_node *parent) 393 385 { ··· 391 399 if (WARN_ON(!node)) 392 400 return -ENODEV; 393 401 394 - if (of_device_is_compatible(node, "ti,am33xx-intc")) { 402 + if (of_device_is_compatible(node, "ti,dm814-intc") || 403 + of_device_is_compatible(node, "ti,dm816-intc") || 404 + of_device_is_compatible(node, "ti,am33xx-intc")) { 395 405 omap_nr_irqs = 128; 396 406 omap_nr_pending = 4; 397 407 } ··· 409 415 410 416 IRQCHIP_DECLARE(omap2_intc, "ti,omap2-intc", intc_of_init); 411 417 IRQCHIP_DECLARE(omap3_intc, "ti,omap3-intc", intc_of_init); 418 + IRQCHIP_DECLARE(dm814x_intc, "ti,dm814-intc", intc_of_init); 419 + IRQCHIP_DECLARE(dm816x_intc, "ti,dm816-intc", intc_of_init); 412 420 IRQCHIP_DECLARE(am33xx_intc, "ti,am33xx-intc", intc_of_init);
-1
include/linux/irqchip/irq-omap-intc.h
··· 20 20 21 21 void omap2_init_irq(void); 22 22 void omap3_init_irq(void); 23 - void ti81xx_init_irq(void); 24 23 25 24 int omap_irq_pending(void); 26 25 void omap_intc_save_context(void);