usb: dwc2: platform: adopt dev_err_probe() to silent probe defer
authorAmelie Delaunay <amelie.delaunay@foss.st.com>
Tue, 7 Dec 2021 12:08:29 +0000 (13:08 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 15 Dec 2021 22:48:08 +0000 (23:48 +0100)
In case of probe defer, a message is logged for resets and clocks. Use
dev_err_probe to log the message only when error code is not -517.
Simplify phy, regulators and drd probe defer handling with dev_err_probe().
Then, take benefit of devices_deferred debugfs in case of probe deferral.

Acked-by: Minas Harutyunyan <Minas.Harutyunyan@synopsys.com>
Signed-off-by: Amelie Delaunay <amelie.delaunay@foss.st.com>
Link: https://lore.kernel.org/r/20211207120829.266837-1-amelie.delaunay@foss.st.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/dwc2/platform.c

index c8f18f3..a1feaa0 100644 (file)
@@ -222,20 +222,16 @@ static int dwc2_lowlevel_hw_init(struct dwc2_hsotg *hsotg)
        int i, ret;
 
        hsotg->reset = devm_reset_control_get_optional(hsotg->dev, "dwc2");
-       if (IS_ERR(hsotg->reset)) {
-               ret = PTR_ERR(hsotg->reset);
-               dev_err(hsotg->dev, "error getting reset control %d\n", ret);
-               return ret;
-       }
+       if (IS_ERR(hsotg->reset))
+               return dev_err_probe(hsotg->dev, PTR_ERR(hsotg->reset),
+                                    "error getting reset control\n");
 
        reset_control_deassert(hsotg->reset);
 
        hsotg->reset_ecc = devm_reset_control_get_optional(hsotg->dev, "dwc2-ecc");
-       if (IS_ERR(hsotg->reset_ecc)) {
-               ret = PTR_ERR(hsotg->reset_ecc);
-               dev_err(hsotg->dev, "error getting reset control for ecc %d\n", ret);
-               return ret;
-       }
+       if (IS_ERR(hsotg->reset_ecc))
+               return dev_err_probe(hsotg->dev, PTR_ERR(hsotg->reset_ecc),
+                                    "error getting reset control for ecc\n");
 
        reset_control_deassert(hsotg->reset_ecc);
 
@@ -251,11 +247,8 @@ static int dwc2_lowlevel_hw_init(struct dwc2_hsotg *hsotg)
                case -ENOSYS:
                        hsotg->phy = NULL;
                        break;
-               case -EPROBE_DEFER:
-                       return ret;
                default:
-                       dev_err(hsotg->dev, "error getting phy %d\n", ret);
-                       return ret;
+                       return dev_err_probe(hsotg->dev, ret, "error getting phy\n");
                }
        }
 
@@ -268,12 +261,8 @@ static int dwc2_lowlevel_hw_init(struct dwc2_hsotg *hsotg)
                        case -ENXIO:
                                hsotg->uphy = NULL;
                                break;
-                       case -EPROBE_DEFER:
-                               return ret;
                        default:
-                               dev_err(hsotg->dev, "error getting usb phy %d\n",
-                                       ret);
-                               return ret;
+                               return dev_err_probe(hsotg->dev, ret, "error getting usb phy\n");
                        }
                }
        }
@@ -282,10 +271,8 @@ static int dwc2_lowlevel_hw_init(struct dwc2_hsotg *hsotg)
 
        /* Clock */
        hsotg->clk = devm_clk_get_optional(hsotg->dev, "otg");
-       if (IS_ERR(hsotg->clk)) {
-               dev_err(hsotg->dev, "cannot get otg clock\n");
-               return PTR_ERR(hsotg->clk);
-       }
+       if (IS_ERR(hsotg->clk))
+               return dev_err_probe(hsotg->dev, PTR_ERR(hsotg->clk), "cannot get otg clock\n");
 
        /* Regulators */
        for (i = 0; i < ARRAY_SIZE(hsotg->supplies); i++)
@@ -293,12 +280,9 @@ static int dwc2_lowlevel_hw_init(struct dwc2_hsotg *hsotg)
 
        ret = devm_regulator_bulk_get(hsotg->dev, ARRAY_SIZE(hsotg->supplies),
                                      hsotg->supplies);
-       if (ret) {
-               if (ret != -EPROBE_DEFER)
-                       dev_err(hsotg->dev, "failed to request supplies: %d\n",
-                               ret);
-               return ret;
-       }
+       if (ret)
+               return dev_err_probe(hsotg->dev, ret, "failed to request supplies\n");
+
        return 0;
 }
 
@@ -558,16 +542,12 @@ static int dwc2_driver_probe(struct platform_device *dev)
                hsotg->usb33d = devm_regulator_get(hsotg->dev, "usb33d");
                if (IS_ERR(hsotg->usb33d)) {
                        retval = PTR_ERR(hsotg->usb33d);
-                       if (retval != -EPROBE_DEFER)
-                               dev_err(hsotg->dev,
-                                       "failed to request usb33d supply: %d\n",
-                                       retval);
+                       dev_err_probe(hsotg->dev, retval, "failed to request usb33d supply\n");
                        goto error;
                }
                retval = regulator_enable(hsotg->usb33d);
                if (retval) {
-                       dev_err(hsotg->dev,
-                               "failed to enable usb33d supply: %d\n", retval);
+                       dev_err_probe(hsotg->dev, retval, "failed to enable usb33d supply\n");
                        goto error;
                }
 
@@ -579,8 +559,7 @@ static int dwc2_driver_probe(struct platform_device *dev)
 
        retval = dwc2_drd_init(hsotg);
        if (retval) {
-               if (retval != -EPROBE_DEFER)
-                       dev_err(hsotg->dev, "failed to initialize dual-role\n");
+               dev_err_probe(hsotg->dev, retval, "failed to initialize dual-role\n");
                goto error_init;
        }