• Geert Uytterhoeven's avatar
    gpio: rcar: Check for irq_set_irq_wake() failures · 501ef0f9
    Geert Uytterhoeven authored
    If an interrupt controller doesn't support wake-up configuration,
    irq_set_irq_wake() returns an error code.  Then any subsequent call
    trying to deconfigure wake-up will cause an imbalance, and a warning
    will be printed:
    
        WARNING: CPU: 1 PID: 1341 at kernel/irq/manage.c:540 irq_set_irq_wake+0x9c/0xf8()
        Unbalanced IRQ 26 wake disable
    
    To fix this, refrain from any further parent interrupt controller
    (de)configuration if irq_set_irq_wake() failed.
    
    Alternative fixes would be:
      - calling "gic_set_irqchip_flags(IRQCHIP_SKIP_SET_WAKE)" from the
        platform code,
      - setting "gic_chip.flags = IRQCHIP_SKIP_SET_WAKE" in the GIC driver
        code,
    but these were withheld as the GIC hardware doesn't really support
    wake-up interrupts.
    
    Fixes: ab82fa7d ("gpio: rcar: Prevent module clock disable when wake-up is enabled")
    Signed-off-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    501ef0f9
gpio-rcar.c 13.5 KB