gpio: Add helpers for optional GPIOs
authorThierry Reding <treding@nvidia.com>
Fri, 25 Apr 2014 15:10:06 +0000 (17:10 +0200)
committerLinus Walleij <linus.walleij@linaro.org>
Fri, 9 May 2014 11:48:30 +0000 (13:48 +0200)
commit29a1f2333e07bbbecb920cc78fd035fe8f53207a
treeb2cb50d4c41ff4d1337cca888da3840f6f0d4d84
parent91329132c909bbeb27699556b98b7f745ddb2ed9
gpio: Add helpers for optional GPIOs

Introduce gpiod_get_optional() and gpiod_get_index_optional() helpers
that make it easier for drivers to handle optional GPIOs.

Currently in order to handle optional GPIOs, a driver needs to special
case error handling for -ENOENT, such as this:

gpio = gpiod_get(dev, "foo");
if (IS_ERR(gpio)) {
if (PTR_ERR(gpio) != -ENOENT)
return PTR_ERR(gpio);

gpio = NULL;
}

if (gpio) {
/* set up GPIO */
}

With these new helpers the above is reduced to:

gpio = gpiod_get_optional(dev, "foo");
if (IS_ERR(gpio))
return PTR_ERR(gpio);

if (gpio) {
/* set up GPIO */
}

While at it, device-managed variants of these functions are also
provided.

Signed-off-by: Thierry Reding <treding@nvidia.com>
Reviewed-by: Alexandre Courbot <acourbot@nvidia.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Documentation/driver-model/devres.txt
drivers/gpio/devres.c
drivers/gpio/gpiolib.c
include/linux/gpio/consumer.h