Skip to content
  • Lars-Peter Clausen's avatar
    gpiolib: of_find_gpio(): Don't discard errors · da17f8a1
    Lars-Peter Clausen authored and Linus Walleij's avatar Linus Walleij committed
    Since commit dd34c37a ("gpio: of: Allow -gpio suffix for property
    names") when requesting a GPIO from the devicetree gpiolib looks for
    properties with both the '-gpio' and the '-gpios' suffix. This was
    implemented by first searching for the property with the '-gpios' suffix
    and if that yields an error try the '-gpio' suffix. This approach has the
    issue that any error returned when looking for the '-gpios' suffix is
    silently discarded.
    
    Commit 06fc3b70
    
     ("gpio: of: Fix handling for deferred probe for -gpio
    suffix") partially addressed the issue by treating the EPROBE_DEFER error
    as a special condition. This fixed the case when the property is specified,
    but the GPIO provider is not ready yet. But there are other cases in which
    of_get_named_gpiod_flags() returns an error even though the property is
    specified, e.g. if the specification is incorrect.
    
    of_find_gpio() should only try to look for the property with the '-gpio'
    suffix if no property with the '-gpios' suffix was found. If the property
    was not found of_get_named_gpiod_flags() will return -ENOENT, so update the
    condition to abort and propagate the error to the caller in all other
    cases.
    
    This is important for gpiod_get_optinal() and friends to behave correctly
    in case the specifier contains errors. Without this patch they'll return
    NULL if the property uses the '-gpios' suffix and the specifier contains
    errors, which falsely indicates to the caller that no GPIO was specified.
    
    Signed-off-by: default avatarLars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    da17f8a1