Message ID | 20241231164456.262581-1-robh@kernel.org |
---|---|
State | New |
Headers | show |
Series | usb: dwc3: omap: Use devm_regulator_get_optional() | expand |
On Tue, Dec 31, 2024 at 10:44:56AM -0600, Rob Herring (Arm) wrote: > The 'vbus-supply' regulator is optional, so use > devm_regulator_get_optional() instead of checking for property presence > first. Is it actually optional? The name suggests it's likely to be required...
On Mon, Jan 6, 2025 at 6:49 AM Mark Brown <broonie@kernel.org> wrote: > > On Tue, Dec 31, 2024 at 10:44:56AM -0600, Rob Herring (Arm) wrote: > > The 'vbus-supply' regulator is optional, so use > > devm_regulator_get_optional() instead of checking for property presence > > first. > > Is it actually optional? The name suggests it's likely to be > required... That's what the binding says. From a quick scan, I only see this used for OMAP5. The preference is for this to be in the connector node as that is where Vbus is hooked up to typically. Rob
On Tue, Dec 31, 2024 at 10:45 AM Rob Herring (Arm) <robh@kernel.org> wrote: > > The 'vbus-supply' regulator is optional, so use > devm_regulator_get_optional() instead of checking for property presence > first. > > While here, rework the error handling to use dev_err_probe() which > handles deferred probe correctly without an error message. > > Signed-off-by: Rob Herring (Arm) <robh@kernel.org> > --- > drivers/usb/dwc3/dwc3-omap.c | 12 ++++-------- > 1 file changed, 4 insertions(+), 8 deletions(-) > > diff --git a/drivers/usb/dwc3/dwc3-omap.c b/drivers/usb/dwc3/dwc3-omap.c > index b261c46124c6..9b1d10ac33c1 100644 > --- a/drivers/usb/dwc3/dwc3-omap.c > +++ b/drivers/usb/dwc3/dwc3-omap.c > @@ -457,7 +457,7 @@ static int dwc3_omap_probe(struct platform_device *pdev) > > struct dwc3_omap *omap; > struct device *dev = &pdev->dev; > - struct regulator *vbus_reg = NULL; > + struct regulator *vbus_reg; > > int ret; > int irq; > @@ -483,13 +483,9 @@ static int dwc3_omap_probe(struct platform_device *pdev) > if (IS_ERR(base)) > return PTR_ERR(base); > > - if (of_property_read_bool(node, "vbus-supply")) { > - vbus_reg = devm_regulator_get(dev, "vbus"); > - if (IS_ERR(vbus_reg)) { > - dev_err(dev, "vbus init failed\n"); > - return PTR_ERR(vbus_reg); > - } > - } > + vbus_reg = devm_regulator_get_optional(dev, "vbus"); > + if (IS_ERR(vbus_reg)) > + return dev_err_probe(dev, PTR_ERR(vbus_reg), "vbus init failed\n"); This is wrong because devm_regulator_get_optional() returns -ENODEV rather than NULL like all the other _get_optional() functions... Rob
diff --git a/drivers/usb/dwc3/dwc3-omap.c b/drivers/usb/dwc3/dwc3-omap.c index b261c46124c6..9b1d10ac33c1 100644 --- a/drivers/usb/dwc3/dwc3-omap.c +++ b/drivers/usb/dwc3/dwc3-omap.c @@ -457,7 +457,7 @@ static int dwc3_omap_probe(struct platform_device *pdev) struct dwc3_omap *omap; struct device *dev = &pdev->dev; - struct regulator *vbus_reg = NULL; + struct regulator *vbus_reg; int ret; int irq; @@ -483,13 +483,9 @@ static int dwc3_omap_probe(struct platform_device *pdev) if (IS_ERR(base)) return PTR_ERR(base); - if (of_property_read_bool(node, "vbus-supply")) { - vbus_reg = devm_regulator_get(dev, "vbus"); - if (IS_ERR(vbus_reg)) { - dev_err(dev, "vbus init failed\n"); - return PTR_ERR(vbus_reg); - } - } + vbus_reg = devm_regulator_get_optional(dev, "vbus"); + if (IS_ERR(vbus_reg)) + return dev_err_probe(dev, PTR_ERR(vbus_reg), "vbus init failed\n"); omap->dev = dev; omap->irq = irq;
The 'vbus-supply' regulator is optional, so use devm_regulator_get_optional() instead of checking for property presence first. While here, rework the error handling to use dev_err_probe() which handles deferred probe correctly without an error message. Signed-off-by: Rob Herring (Arm) <robh@kernel.org> --- drivers/usb/dwc3/dwc3-omap.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-)