Re: [PATCH] phy: renesas: rcar-gen3-usb2: Ignore missing VBUS regulator
"Lad, Prabhakar" <[email protected]>
| Newsgroups | org.kernel.vger.linux-renesas-soc,org.infradead.lists.linux-phy,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <CA+V-a8sG6uT2an8R0T6Jy4ytwGeNTfMCp_CMGdQtUyU0JKetdw@mail.gmail.com> |
On Thu, Jul 2, 2026 at 1:59 PM Prabhakar <[email protected]> wrote: > > From: Lad Prabhakar <[email protected]> > > 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. > > Fixes: b6d7dd157763 ("phy: renesas: rcar-gen3-usb2: Add regulator for OTG VBUS control") > Signed-off-by: Lad Prabhakar <[email protected]> > --- > drivers/phy/renesas/phy-rcar-gen3-usb2.c | 13 +++++++++++-- > 1 file changed, 11 insertions(+), 2 deletions(-) > Gentle ping. Cheers, Prabhakar > 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 >