• Bartosz Golaszewski's avatar
    gpio: don't set label from irq helpers · ccfb6ff4
    Bartosz Golaszewski authored
    We will soon serialize access to the descriptor label using SRCU. The
    write-side of the protection will require calling synchronize_srcu()
    which must not be called from atomic context. We have two irq helpers:
    gpiochip_lock_as_irq() and gpiochip_unlock_as_irq() that set the label
    if the GPIO is not requested but is being used as interrupt. They are
    called with a spinlock held from the interrupt subsystem.
    
    They must not do it if we are to use SRCU so instead let's move the
    special corner case to a dedicated getter.
    
    Don't actually set the label to "interrupt" in the above case but rather
    use the newly added gpiod_get_label() helper to hide the logic that
    atomically checks the descriptor flags and returns the address of a
    static "interrupt" string.
    Signed-off-by: default avatarBartosz Golaszewski <bartosz.golaszewski@linaro.org>
    Reviewed-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    Acked-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
    ccfb6ff4
gpiolib.c 130 KB