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 <michael@walle.cc> Reviewed-by: Marek Vasut <marex@denx.de> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
@@ -71,13 +71,13 @@ static int pinctrl_select_state_full(struct udevice *dev, const char *statename)
|
|||||||
*/
|
*/
|
||||||
state = dectoul(statename, &end);
|
state = dectoul(statename, &end);
|
||||||
if (*end)
|
if (*end)
|
||||||
return -EINVAL;
|
return -ENOSYS;
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf(propname, sizeof(propname), "pinctrl-%d", state);
|
snprintf(propname, sizeof(propname), "pinctrl-%d", state);
|
||||||
list = dev_read_prop(dev, propname, &size);
|
list = dev_read_prop(dev, propname, &size);
|
||||||
if (!list)
|
if (!list)
|
||||||
return -EINVAL;
|
return -ENOSYS;
|
||||||
|
|
||||||
size /= sizeof(*list);
|
size /= sizeof(*list);
|
||||||
for (i = 0; i < size; i++) {
|
for (i = 0; i < size; i++) {
|
||||||
@@ -162,11 +162,6 @@ U_BOOT_DRIVER(pinconfig_generic) = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
#else
|
#else
|
||||||
static int pinctrl_select_state_full(struct udevice *dev, const char *statename)
|
|
||||||
{
|
|
||||||
return -ENODEV;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int pinconfig_post_bind(struct udevice *dev)
|
static int pinconfig_post_bind(struct udevice *dev)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
@@ -317,10 +312,10 @@ int pinctrl_select_state(struct udevice *dev, const char *statename)
|
|||||||
* Try full-implemented pinctrl first.
|
* Try full-implemented pinctrl first.
|
||||||
* If it fails or is not implemented, try simple one.
|
* If it fails or is not implemented, try simple one.
|
||||||
*/
|
*/
|
||||||
if (pinctrl_select_state_full(dev, statename))
|
if (CONFIG_IS_ENABLED(PINCTRL_FULL))
|
||||||
return pinctrl_select_state_simple(dev);
|
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)
|
int pinctrl_request(struct udevice *dev, int func, int flags)
|
||||||
|
Reference in New Issue
Block a user