• Alexander Stein's avatar
    pinctrl/at91: Fix lockup when IRQ on PIOC and PIOD occurs · cccb0c3e
    Alexander Stein authored
    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: default avatarAlexander Stein <alexanders83@web.de>
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    cccb0c3e
pinctrl-at91.c 43.9 KB