usb: phy: generic: make vcc regulator optional
authorSascha Hauer <s.hauer@pengutronix.de>
Wed, 12 Oct 2022 13:27:54 +0000 (15:27 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 23 Oct 2022 12:34:52 +0000 (14:34 +0200)
phy-generic uses the existance of the property "vcc-supply" to see if a
regulator is optional or not. Use devm_regulator_get_optional() instead
which exists for this purpose. Using devm_regulator_get_optional()
avoids "supply vcc not found, using dummy regulator" messages.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Link: https://lore.kernel.org/r/20221012132754.292151-1-s.hauer@pengutronix.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/phy/phy-generic.c

index 3dc5c04e7cbf91bedf49d6387d609c6239d76ee0..8ed9327cc4a52c3a3738c138607e1df2b441860d 100644 (file)
@@ -209,7 +209,7 @@ int usb_phy_gen_create_phy(struct device *dev, struct usb_phy_generic *nop)
        int err = 0;
 
        u32 clk_rate = 0;
-       bool needs_vcc = false, needs_clk = false;
+       bool needs_clk = false;
 
        if (dev->of_node) {
                struct device_node *node = dev->of_node;
@@ -217,7 +217,6 @@ int usb_phy_gen_create_phy(struct device *dev, struct usb_phy_generic *nop)
                if (of_property_read_u32(node, "clock-frequency", &clk_rate))
                        clk_rate = 0;
 
-               needs_vcc = of_property_read_bool(node, "vcc-supply");
                needs_clk = of_property_read_bool(node, "clocks");
        }
        nop->gpiod_reset = devm_gpiod_get_optional(dev, "reset",
@@ -257,13 +256,10 @@ int usb_phy_gen_create_phy(struct device *dev, struct usb_phy_generic *nop)
                }
        }
 
-       nop->vcc = devm_regulator_get(dev, "vcc");
-       if (IS_ERR(nop->vcc)) {
-               dev_dbg(dev, "Error getting vcc regulator: %ld\n",
-                                       PTR_ERR(nop->vcc));
-               if (needs_vcc)
-                       return -EPROBE_DEFER;
-       }
+       nop->vcc = devm_regulator_get_optional(dev, "vcc");
+       if (IS_ERR(nop->vcc) && PTR_ERR(nop->vcc) != -ENODEV)
+               return dev_err_probe(dev, PTR_ERR(nop->vcc),
+                                    "could not get vcc regulator\n");
 
        nop->vbus_draw = devm_regulator_get_exclusive(dev, "vbus");
        if (PTR_ERR(nop->vbus_draw) == -ENODEV)