pinctrl/at91: Fix lockup when IRQ on PIOC and PIOD occurs
authorAlexander Stein <alexanders83@web.de>
Thu, 24 Apr 2014 17:55:39 +0000 (19:55 +0200)
committerLinus Walleij <linus.walleij@linaro.org>
Tue, 27 May 2014 09:13:10 +0000 (11:13 +0200)
commitcccb0c3e6a3feae761adbb34d74c1b9abb77ba4c
tree3f551330c27407d12692538437f35cd15ec0bac5
parentcdcb0ab63052b0b509013abfb9be1cc9175767f1
pinctrl/at91: Fix lockup when IRQ on PIOC and PIOD occurs

With commit 80cc3732 (pinctrl/at91: convert driver to use gpiolib irqchip)
gpiochip_set_chained_irqchip is called for PIOC, PIOD and PIOE. The
associated GPIO chip for the IRQ chip is overwritten each time, because
they share the same hard IRQ line.
Thus if an IRQ occurs on PIOC or PIOD, gpio_irq_handler will only check on
PIOE (the assigned GPIO chip) where no event occured. Thus the IRQ will
not be cleared, retriggering the ISR.
Fix that (like done before) by only set the PIOC GPIO chip to the IRQ chip
and walk the list in the irq handler.

Signed-off-by: Alexander Stein <alexanders83@web.de>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/pinctrl-at91.c