diff mbox series

usb: dwc3: omap: Use devm_regulator_get_optional()

Message ID 20241231164456.262581-1-robh@kernel.org
State New
Headers show
Series usb: dwc3: omap: Use devm_regulator_get_optional() | expand

Commit Message

Rob Herring (Arm) Dec. 31, 2024, 4:44 p.m. UTC
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(-)

Comments

Mark Brown Jan. 6, 2025, 12:49 p.m. UTC | #1
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...
Rob Herring (Arm) Jan. 6, 2025, 9:37 p.m. UTC | #2
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
Rob Herring (Arm) Jan. 9, 2025, 4:45 p.m. UTC | #3
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 mbox series

Patch

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;