Signed-off-by: Antony Pavlov <antonynpavlov@xxxxxxxxx> --- 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 barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox