Re: [PATCH] usb: xhci-mvebu: use regulator_set_enable_if_allowed()
Marek Vasut <[email protected]>
| Newsgroups | gmane.comp.boot-loaders.u-boot.general,gmane.comp.boot-loaders.u-boot |
|---|---|
| Message-ID | <[email protected]> |
On 8/20/26 5:10 PM, Bruno Banelli wrote:
> Since commit 4fcba5d556b4 ("regulator: implement basic reference
> counter") regulator_set_enable() returns -EALREADY when a fixed or
> GPIO regulator has already been enabled. On boards whose VBUS
> regulator carries regulator-always-on or regulator-boot-on -
> armada-8040-mcbin.dts is one - regulator_autoset() enables it during
> the regulator's own probe, so the subsequent enable in xhci_usb_probe()
> fails and the controller is never registered:
>
> starting USB...
> Failed to turn ON the VBUS regulator
> Bus usb3@500000: probe failed, error -114
> No USB controllers found
>
> Use regulator_set_enable_if_allowed(), which tolerates -EALREADY, in
> the same way as commit 0830333c4743 ("usb: ehci-generic: Use
> regulator_set_enable_if_allowed") and the other drivers converted
> after the reference counter was introduced.
>
> Tested on a SolidRun MACCHIATObin (Armada 8040), where USB mass
> storage now enumerates.
>
> Fixes: 4fcba5d556b4 ("regulator: implement basic reference counter")
> Signed-off-by: Bruno Banelli <[email protected]>
> ---
> drivers/usb/host/xhci-mvebu.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/usb/host/xhci-mvebu.c b/drivers/usb/host/xhci-mvebu.c
> index c294a56b3c..53b3e82b66 100644
> --- a/drivers/usb/host/xhci-mvebu.c
> +++ b/drivers/usb/host/xhci-mvebu.c
> @@ -51,7 +51,7 @@ static int xhci_usb_probe(struct udevice *dev)
>
> ret = device_get_supply_regulator(dev, "vbus-supply", ®ulator);
> if (!ret) {
> - ret = regulator_set_enable(regulator, true);
> + ret = regulator_set_enable_if_allowed(regulator, true);
> if (ret) {
> printf("Failed to turn ON the VBUS regulator\n");
Do you need to handle -ENOSYS return value here ?