Message ID | 1390516686-2224-2-git-send-email-sebastian.hesselbarth@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Thu, Jan 23, 2014 at 11:38:04PM +0100, Sebastian Hesselbarth wrote: > It is good practice to mask and clear pending irqs on init. We already > mask all irqs, so also clear the bridge irq cause register. > > Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> > --- > Cc: Thomas Gleixner <tglx@linutronix.de> > Cc: Jason Cooper <jason@lakedaemon.net> > Cc: Andrew Lunn <andrew@lunn.ch> > Cc: Gregory Clement <gregory.clement@free-electrons.com> > Cc: Jason Gunthorpe <jgunthorpe@obsidianresearch.com> > Cc: Ezequiel Garcia <ezequiel.garcia@free-electrons.com> > Cc: linux-arm-kernel@lists.infradead.org > Cc: linux-kernel@vger.kernel.org > --- > drivers/irqchip/irq-orion.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/irqchip/irq-orion.c b/drivers/irqchip/irq-orion.c > index e51d40031884..4137c3d15284 100644 > --- a/drivers/irqchip/irq-orion.c > +++ b/drivers/irqchip/irq-orion.c > @@ -180,8 +180,9 @@ static int __init orion_bridge_irq_init(struct device_node *np, > gc->chip_types[0].chip.irq_mask = irq_gc_mask_clr_bit; > gc->chip_types[0].chip.irq_unmask = irq_gc_mask_set_bit; > > - /* mask all interrupts */ > + /* mask and clear all interrupts */ > writel(0, gc->reg_base + ORION_BRIDGE_IRQ_MASK); > + writel(0, gc->reg_base + ORION_BRIDGE_IRQ_CAUSE); > This looks a bit bogus to me, now that we are clearing the cause upon irq_startup(). Don't have a strong opinion, it's just that I fail to see why we'd want or need this change...
diff --git a/drivers/irqchip/irq-orion.c b/drivers/irqchip/irq-orion.c index e51d40031884..4137c3d15284 100644 --- a/drivers/irqchip/irq-orion.c +++ b/drivers/irqchip/irq-orion.c @@ -180,8 +180,9 @@ static int __init orion_bridge_irq_init(struct device_node *np, gc->chip_types[0].chip.irq_mask = irq_gc_mask_clr_bit; gc->chip_types[0].chip.irq_unmask = irq_gc_mask_set_bit; - /* mask all interrupts */ + /* mask and clear all interrupts */ writel(0, gc->reg_base + ORION_BRIDGE_IRQ_MASK); + writel(0, gc->reg_base + ORION_BRIDGE_IRQ_CAUSE); irq_set_handler_data(irq, domain); irq_set_chained_handler(irq, orion_bridge_irq_handler);
It is good practice to mask and clear pending irqs on init. We already mask all irqs, so also clear the bridge irq cause register. Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> --- Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Jason Cooper <jason@lakedaemon.net> Cc: Andrew Lunn <andrew@lunn.ch> Cc: Gregory Clement <gregory.clement@free-electrons.com> Cc: Jason Gunthorpe <jgunthorpe@obsidianresearch.com> Cc: Ezequiel Garcia <ezequiel.garcia@free-electrons.com> Cc: linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org --- drivers/irqchip/irq-orion.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)