| From d86e9af6336c0ad586a5dbd70064253d40bbb5ff Mon Sep 17 00:00:00 2001 |
| From: Andrew Lunn <andrew@lunn.ch> |
| Date: Fri, 7 Feb 2014 00:41:58 +0100 |
| Subject: irqchip: orion: Fix getting generic chip pointer. |
| |
| From: Andrew Lunn <andrew@lunn.ch> |
| |
| commit d86e9af6336c0ad586a5dbd70064253d40bbb5ff upstream. |
| |
| Enabling SPARSE_IRQ shows up a bug in the irq-orion bridge interrupt |
| handler. The bridge interrupt is implemented using a single generic |
| chip. Thus the parameter passed to irq_get_domain_generic_chip() |
| should always be zero. |
| |
| Signed-off-by: Andrew Lunn <andrew@lunn.ch> |
| Acked-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> |
| Fixes: 9dbd90f17e4f ("irqchip: Add support for Marvell Orion SoCs") |
| Signed-off-by: Jason Cooper <jason@lakedaemon.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/irqchip/irq-orion.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/irqchip/irq-orion.c |
| +++ b/drivers/irqchip/irq-orion.c |
| @@ -111,7 +111,8 @@ IRQCHIP_DECLARE(orion_intc, "marvell,ori |
| static void orion_bridge_irq_handler(unsigned int irq, struct irq_desc *desc) |
| { |
| struct irq_domain *d = irq_get_handler_data(irq); |
| - struct irq_chip_generic *gc = irq_get_domain_generic_chip(d, irq); |
| + |
| + struct irq_chip_generic *gc = irq_get_domain_generic_chip(d, 0); |
| u32 stat = readl_relaxed(gc->reg_base + ORION_BRIDGE_IRQ_CAUSE) & |
| gc->mask_cache; |
| |