From: Michael Walle Date: Wed, 18 Jan 2023 12:12:22 +0000 (+0100) Subject: pinctrl: don't fall back to pinctrl_select_state_simple() X-Git-Url: http://git.dujemihanovic.xyz/?a=commitdiff_plain;h=72b8c6d1ebfd40a6ee6be0345ff7abb30c9f9e3d;p=u-boot.git pinctrl: don't fall back to pinctrl_select_state_simple() If CONFIG_PINCTRL_FULL is enabled, never fall back to the simple implementation. pinctrl_select_state() is called for each device and it is expected to fail. A fallback to the simple imeplementation doesn't make much sense. To keep the return code consistent, we need to change the -EINVAL (which was ignored before) to -ENOSYS. Signed-off-by: Michael Walle Reviewed-by: Marek Vasut Reviewed-by: Simon Glass --- diff --git a/drivers/pinctrl/pinctrl-uclass.c b/drivers/pinctrl/pinctrl-uclass.c index a1b85ca87e..6978a93ef8 100644 --- a/drivers/pinctrl/pinctrl-uclass.c +++ b/drivers/pinctrl/pinctrl-uclass.c @@ -71,13 +71,13 @@ static int pinctrl_select_state_full(struct udevice *dev, const char *statename) */ state = dectoul(statename, &end); if (*end) - return -EINVAL; + return -ENOSYS; } snprintf(propname, sizeof(propname), "pinctrl-%d", state); list = dev_read_prop(dev, propname, &size); if (!list) - return -EINVAL; + return -ENOSYS; size /= sizeof(*list); for (i = 0; i < size; i++) { @@ -162,11 +162,6 @@ U_BOOT_DRIVER(pinconfig_generic) = { }; #else -static int pinctrl_select_state_full(struct udevice *dev, const char *statename) -{ - return -ENODEV; -} - static int pinconfig_post_bind(struct udevice *dev) { return 0; @@ -317,10 +312,10 @@ int pinctrl_select_state(struct udevice *dev, const char *statename) * Try full-implemented pinctrl first. * If it fails or is not implemented, try simple one. */ - if (pinctrl_select_state_full(dev, statename)) - return pinctrl_select_state_simple(dev); + if (CONFIG_IS_ENABLED(PINCTRL_FULL)) + return pinctrl_select_state_full(dev, statename); - return 0; + return pinctrl_select_state_simple(dev); } int pinctrl_request(struct udevice *dev, int func, int flags)