MIPS: JZ4740: parse SoC interrupt controller parent IRQ from DT
authorPaul Burton <paul.burton@imgtec.com>
Sun, 24 May 2015 15:11:22 +0000 (16:11 +0100)
committerRalf Baechle <ralf@linux-mips.org>
Sun, 21 Jun 2015 19:52:59 +0000 (21:52 +0200)
Rather than hardcoding the IRQ number used to cascade interrupts from
the SoC interrupt controller to the CPU interrupt controller, read that
IRQ number from the DT describing the system.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
Cc: Lars-Peter Clausen <lars@metafoo.de>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Cc: Brian Norris <computersforpeace@gmail.com>
Patchwork: https://patchwork.linux-mips.org/patch/10137/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/jz4740/irq.c

index 43e000aa8a2eba649df4d93f6de32d12ce085ab2..ed5191569b95dd972cc9e4f5dd2fa1c8a2e80eaa 100644 (file)
@@ -85,6 +85,11 @@ static int __init jz4740_intc_of_init(struct device_node *node,
 {
        struct irq_chip_generic *gc;
        struct irq_chip_type *ct;
+       int parent_irq;
+
+       parent_irq = irq_of_parse_and_map(node, 0);
+       if (!parent_irq)
+               return -EINVAL;
 
        jz_intc_base = ioremap(JZ4740_INTC_BASE_ADDR, 0x14);
 
@@ -108,7 +113,7 @@ static int __init jz4740_intc_of_init(struct device_node *node,
 
        irq_setup_generic_chip(gc, IRQ_MSK(32), 0, 0, IRQ_NOPROBE | IRQ_LEVEL);
 
-       setup_irq(2, &jz4740_cascade_action);
+       setup_irq(parent_irq, &jz4740_cascade_action);
        return 0;
 }
 IRQCHIP_DECLARE(jz4740_intc, "ingenic,jz4740-intc", jz4740_intc_of_init);