Skip to content
  • Thierry Reding's avatar
    gpio: Add helpers for optional GPIOs · 29a1f233
    Thierry Reding authored and Linus Walleij's avatar Linus Walleij committed
    
    
    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: default avatarThierry Reding <treding@nvidia.com>
    Reviewed-by: default avatarAlexandre Courbot <acourbot@nvidia.com>
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    29a1f233