Signed-off-by: Antony Pavlov <[email protected]>
---
 drivers/gpio/gpio.c |   29 ++++++++++++++++++++++-------
 1 file changed, 22 insertions(+), 7 deletions(-)

diff --git a/drivers/gpio/gpio.c b/drivers/gpio/gpio.c
index 5876454..179fc7b 100644
--- a/drivers/gpio/gpio.c
+++ b/drivers/gpio/gpio.c
@@ -29,22 +29,37 @@ int gpio_request(unsigned gpio, const char *label)
        struct gpio_chip *chip = gi->chip;
        int ret;
 
-       if (!gpio_is_valid(gpio))
-               return -EINVAL;
-       if (!chip)
-               return -EINVAL;
-       if (gi->requested)
-               return -EBUSY;
+       if (!gpio_is_valid(gpio)) {
+               ret = -EINVAL;
+               goto err;
+       }
+
+       if (!chip) {
+               ret = -EINVAL;
+               goto err;
+       }
+
+       if (gi->requested) {
+               ret = -EBUSY;
+               goto err;
+       }
+
        if (chip->ops->request) {
                ret = chip->ops->request(chip, gpio - chip->base);
                if (ret)
-                       return ret;
+                       goto err;
        }
 
        gi->requested = true;
        gi->label = xstrdup(label);
 
        return 0;
+
+err:
+       pr_err("can't request gpio %d as %s (%d)\n",
+               gpio, label, ret);
+
+       return ret;
 }
 
 int gpio_request_input(unsigned gpio, const char *label)
-- 
1.7.10.4


_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox

Reply via email to