Lars-Peter Clausen da17f8a113 gpiolib: of_find_gpio(): Don't discard errors
Since commit dd34c37aa3e8 ("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 06fc3b70f1dc ("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: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2016-07-06 14:39:50 +02:00
..
2016-05-27 15:26:11 -07:00
2016-05-31 11:52:59 -07:00
2016-05-24 11:00:20 -07:00
2016-05-26 19:34:26 -07:00
2016-05-27 15:26:11 -07:00
2016-05-19 11:27:09 -07:00
2016-06-03 22:34:18 +02:00
2016-05-27 15:26:11 -07:00
2016-05-31 22:17:05 +05:30
2016-05-20 21:26:15 -07:00
2016-05-28 17:37:42 +02:00
2016-05-27 15:26:11 -07:00
2016-05-25 10:40:15 -07:00
2016-05-24 11:00:20 -07:00
2016-05-18 16:38:59 -07:00
2016-05-27 15:26:11 -07:00
2016-05-26 19:34:26 -07:00
2016-05-27 15:26:11 -07:00
2016-05-24 11:00:20 -07:00
2016-05-20 21:20:31 -07:00
2016-05-20 21:12:25 -07:00
2016-05-20 21:26:15 -07:00
2016-05-29 22:32:27 -07:00
2016-05-25 10:40:15 -07:00
2016-05-26 19:34:26 -07:00
2016-05-20 18:33:37 -07:00
2016-05-29 13:28:39 -07:00
2016-05-28 12:23:12 -07:00
2016-05-31 21:25:52 -06:00
2016-05-31 08:20:43 +03:00
2016-05-23 11:18:01 -07:00