Re: [PATCH] phy: renesas: rcar-gen3-usb2: Ignore missing VBUS regulator
From: Tommaso Merciai
Date: Thu Jul 02 2026 - 11:46:29 EST
Hi Prabhakar,
Thanks for your patch.
On Thu, Jul 02, 2026 at 01:58:55PM +0100, Prabhakar wrote:
> From: Lad Prabhakar <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
>
> Commit b6d7dd157763 ("phy: renesas: rcar-gen3-usb2: Add regulator for
> OTG VBUS control") introduced support for controlling OTG VBUS through
> the regulator framework.
>
> As part of this change, the driver started requesting an exclusive "vbus"
> regulator for OTG-capable PHYs with no_adp_ctrl set. The lookup failure
> was propagated unconditionally, causing probe to fail on platforms where
> no VBUS regulator is described.
>
> On RZ/V2H and RZ/V2N, which do not use a VBUS regulator, this results
> in the following error:
>
> phy_rcar_gen3_usb2 15800200.usb-phy:
> dummy supplies not allowed for exclusive requests (id=vbus)
>
> This failure completely prevents the USB 2.0 interface from initializing.
>
> Fix this by allowing the probe to continue if an external VBUS regulator
> is missing. Only propagate the error if the internal vbus-regulator node
> is explicitly present, or if the lookup returns -EPROBE_DEFER. For all
> other missing regulator errors, gracefully assume no external VBUS
> regulator is available and return 0.
>
Patch LGTM, tested on RZ/G3E.
Tested-by: Tommaso Merciai <tommaso.merciai.xr@xxxxxxxxxxxxxx>
Reviewed-by: Tommaso Merciai <tommaso.merciai.xr@xxxxxxxxxxxxxx>
Thanks, Tommaso
> Fixes: b6d7dd157763 ("phy: renesas: rcar-gen3-usb2: Add regulator for OTG VBUS control")
> Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
> ---
> drivers/phy/renesas/phy-rcar-gen3-usb2.c | 13 +++++++++++--
> 1 file changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/phy/renesas/phy-rcar-gen3-usb2.c b/drivers/phy/renesas/phy-rcar-gen3-usb2.c
> index ef38c3b365d4..9ae9975d3255 100644
> --- a/drivers/phy/renesas/phy-rcar-gen3-usb2.c
> +++ b/drivers/phy/renesas/phy-rcar-gen3-usb2.c
> @@ -902,8 +902,17 @@ static int rcar_gen3_phy_usb2_vbus_regulator_get_exclusive_enable(struct rcar_ge
> int ret;
>
> channel->vbus = devm_regulator_get_exclusive(dev, "vbus");
> - if (IS_ERR(channel->vbus))
> - return PTR_ERR(channel->vbus);
> + if (IS_ERR(channel->vbus)) {
> + ret = PTR_ERR(channel->vbus);
> + /* If vbus-regulator node was present vbus regulator should be available */
> + if (channel->otg_internal_reg)
> + return ret;
> +
> + if (ret == -EPROBE_DEFER)
> + return ret;
> +
> + return 0;
> + }
>
> if (enable) {
> ret = regulator_enable(channel->vbus);
> --
> 2.54.0
>