• Dmitry Osipenko's avatar
    gpio: tegra: Fix irq_set_affinity · 94de03cc
    Dmitry Osipenko authored
    The irq_set_affinity callback should not be set if parent IRQ domain
    doesn't present because gpio-tegra driver callback fails in this case,
    causing a noisy error messages on system suspend:
    
     Disabling non-boot CPUs ...
     IRQ 26: no longer affine to CPU1
     IRQ128: set affinity failed(-22).
     IRQ130: set affinity failed(-22).
     IRQ131: set affinity failed(-22).
     IRQ 27: no longer affine to CPU2
     IRQ128: set affinity failed(-22).
     IRQ130: set affinity failed(-22).
     IRQ131: set affinity failed(-22).
     IRQ 28: no longer affine to CPU3
     IRQ128: set affinity failed(-22).
     IRQ130: set affinity failed(-22).
     IRQ131: set affinity failed(-22).
     Entering suspend state LP1
    
    Hence just don't specify the irq_set_affinity callback if parent PMC
    IRQ domain is missing. Tegra isn't capable of setting affinity per GPIO,
    affinity could be set only per GPIO bank, thus there is nothing to do
    for gpio-tegra in regards to CPU affinity without the parent IRQ domain.
    
    Tested-by: Peter Geis <pgwipeout@gmail.com> # Ouya T30
    Tested-by: Matt Merhar <mattmerhar@protonmail.com> # Ouya T30
    Tested-by: Dmitry Osipenko <digetx@gmail.com> # A500 T20 and Nexus7 T30
    Fixes: efcdca286eef ("gpio: tegra: Convert to gpio_irq_chip")
    Reported-by: default avatarMatt Merhar <mattmerhar@protonmail.com>
    Signed-off-by: default avatarDmitry Osipenko <digetx@gmail.com>
    Reviewed-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    Signed-off-by: default avatarBartosz Golaszewski <bgolaszewski@baylibre.com>
    94de03cc
gpio-tegra.c 21.2 KB