gpiolib: Respect error code of ->get_direction()
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Tue, 3 Jul 2018 00:38:31 +0000 (03:38 +0300)
committerLinus Walleij <linus.walleij@linaro.org>
Mon, 9 Jul 2018 13:10:43 +0000 (15:10 +0200)
In case we try to lock GPIO pin as IRQ when something going wrong
we print a misleading message.

Correct this by checking an error code from ->get_direction() in
gpiochip_lock_as_irq() and printing a corresponding message.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/gpio/gpiolib.c

index f15a222..8ec51b7 100644 (file)
@@ -3262,6 +3262,12 @@ int gpiochip_lock_as_irq(struct gpio_chip *chip, unsigned int offset)
        if (!chip->can_sleep && chip->get_direction) {
                int dir = chip->get_direction(chip, offset);
 
+               if (dir < 0) {
+                       chip_err(chip, "%s: cannot get GPIO direction\n",
+                                __func__);
+                       return dir;
+               }
+
                if (dir)
                        clear_bit(FLAG_IS_OUT, &desc->flags);
                else