[PATCH] usb: onboard-hub: Fix return type for regulator APIs

Marek Vasut marex at denx.de
Thu Apr 10 19:56:41 CEST 2025


On 4/10/25 10:17 AM, Michal Simek wrote:
> From: Padmarao Begari <padmarao.begari at amd.com>
> 
> Apart from ENOENT observing return value as ENOSYS when
> !DM_REGULATOR that's why cover both configurations.
> Changed code is not working as operation should be "&&"
> not "||" (ret != -ENOENT && ret != -ENOSYS).
> 
> Also fix the remove function where the regulator_set_enable_if_allowed()
> function is returning an error.
> 
> Signed-off-by: Padmarao Begari <padmarao.begari at amd.com>
> Signed-off-by: Michal Simek <michal.simek at amd.com>
> ---
> 
>   common/usb_onboard_hub.c | 17 +++++++++++------
>   1 file changed, 11 insertions(+), 6 deletions(-)
> 
> diff --git a/common/usb_onboard_hub.c b/common/usb_onboard_hub.c
> index 7fe62b043e6a..57c84e7fce2c 100644
> --- a/common/usb_onboard_hub.c
> +++ b/common/usb_onboard_hub.c
> @@ -146,7 +146,7 @@ static int usb_onboard_hub_probe(struct udevice *dev)
>   	int ret;
>   
>   	ret = device_get_supply_regulator(dev, "vdd-supply", &hub->vdd);
> -	if (ret && ret != -ENOENT) {
> +	if (ret && ret != -ENOENT && ret != -ENOSYS) {
>   		dev_err(dev, "can't get vdd-supply: %d\n", ret);
>   		return ret;
>   	}
> @@ -204,16 +204,21 @@ static int usb_onboard_hub_bind(struct udevice *dev)
>   static int usb_onboard_hub_remove(struct udevice *dev)
>   {
>   	struct onboard_hub *hub = dev_get_priv(dev);
> -	int ret;

int ret = 0;

>   
>   	if (hub->reset_gpio)
>   		dm_gpio_free(hub->reset_gpio->dev, hub->reset_gpio);
>   
> -	ret = regulator_set_enable_if_allowed(hub->vdd, false);
> -	if (ret)
> -		dev_err(dev, "can't disable vdd-supply: %d\n", ret);
> +	if (hub->vdd) {
> +		int ret;
>   
> -	return ret;
> +		ret = regulator_set_enable_if_allowed(hub->vdd, false);
> +		if (ret)
> +			dev_err(dev, "can't disable vdd-supply: %d\n", ret);
> +
> +		return ret;

Drop this

> +	}
> +
> +	return 0;
return ret;


More information about the U-Boot mailing list