mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git
synced 2026-11-14 14:01:57 +01:00
gpiolib: of: Correct error handling in of_get_named_gpiod_flags
of_get_named_gpiod_flags fails with -EPROBE_DEFER in cases where the gpio chip is available and the GPIO translation fails. This causes drivers to be re-probed erroneusly, and hides the real problem(i.e. the GPIO number being out of range). Cc: Stable <[email protected]> Signed-off-by: Hans Holmberg <[email protected]> Reviewed-by: Alexandre Courbot <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
This commit is contained in:
1 parent
ebbeba120a
commit
7b8792bbdf
1 file changed
+8
-2
@@ -45,8 +45,14 @@ static int of_gpiochip_find_and_xlate(struct gpio_chip *gc, void *data)
|
||||
return false;
|
||||
|
||||
ret = gc->of_xlate(gc, &gg_data->gpiospec, gg_data->flags);
|
||||
if (ret < 0)
|
||||
return false;
|
||||
if (ret < 0) {
|
||||
/* We've found the gpio chip, but the translation failed.
|
||||
* Return true to stop looking and return the translation
|
||||
* error via out_gpio
|
||||
*/
|
||||
gg_data->out_gpio = ERR_PTR(ret);
|
||||
return true;
|
||||
}
|
||||
|
||||
gg_data->out_gpio = gpiochip_get_desc(gc, ret);
|
||||
return true;
|
||||
|
||||
Reference in new issue
Block a user