OSDN Git Service

gpio: Fix return value mismatch of function gpiod_get_from_of_node()
authorWaibel Georg <Georg.Waibel@sensor-technik.de>
Thu, 20 Jun 2019 21:37:08 +0000 (21:37 +0000)
committerMark Brown <broonie@kernel.org>
Tue, 25 Jun 2019 14:26:24 +0000 (15:26 +0100)
commit025bf37725f1929542361eef2245df30badf242e
treeabc73cfad4cc36287feb2cec37f69794ee1623d9
parent65d80db2ee92330269e90313c6af782036f4d23d
gpio: Fix return value mismatch of function gpiod_get_from_of_node()

In case the requested gpio property is not found in the device tree, some
callers of gpiod_get_from_of_node() expect a return value of NULL, others
expect -ENOENT.
In particular devm_fwnode_get_index_gpiod_from_child() expects -ENOENT.
Currently it gets a NULL, which breaks the loop that tries all
gpio_suffixes. The result is that a gpio property is not found, even
though it is there.

This patch changes gpiod_get_from_of_node() to return -ENOENT instead
of NULL when the requested gpio property is not found in the device
tree. Additionally it modifies all calling functions to properly
evaluate the return value.

Another approach would be to leave the return value of
gpiod_get_from_of_node() as is and fix the bug in
devm_fwnode_get_index_gpiod_from_child(). Other callers would still need
to be reworked. The effort would be the same as with the chosen solution.

Signed-off-by: Georg Waibel <georg.waibel@sensor-technik.de>
Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/gpio/gpiolib.c
drivers/regulator/da9211-regulator.c
drivers/regulator/s2mps11.c
drivers/regulator/s5m8767.c
drivers/regulator/tps65090-regulator.c