OSDN Git Service

phy: usb: fix driver to defer on clk_get defer
authorAl Cooper <alcooperx@gmail.com>
Fri, 3 Jan 2020 18:18:07 +0000 (13:18 -0500)
committerKishon Vijay Abraham I <kishon@ti.com>
Wed, 8 Jan 2020 07:28:06 +0000 (12:58 +0530)
Handle defer on clk_get because the new SCMI clock driver comes
up after this driver.

Signed-off-by: Al Cooper <alcooperx@gmail.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
drivers/phy/broadcom/phy-brcm-usb.c

index 5f7bfa0..c82d7ec 100644 (file)
@@ -341,6 +341,8 @@ static int brcm_usb_phy_dvr_init(struct platform_device *pdev,
 
        priv->usb_20_clk = of_clk_get_by_name(dn, "sw_usb");
        if (IS_ERR(priv->usb_20_clk)) {
+               if (PTR_ERR(priv->usb_20_clk) == -EPROBE_DEFER)
+                       return -EPROBE_DEFER;
                dev_info(dev, "Clock not found in Device Tree\n");
                priv->usb_20_clk = NULL;
        }
@@ -371,6 +373,8 @@ static int brcm_usb_phy_dvr_init(struct platform_device *pdev,
 
                priv->usb_30_clk = of_clk_get_by_name(dn, "sw_usb3");
                if (IS_ERR(priv->usb_30_clk)) {
+                       if (PTR_ERR(priv->usb_30_clk) == -EPROBE_DEFER)
+                               return -EPROBE_DEFER;
                        dev_info(dev,
                                 "USB3.0 clock not found in Device Tree\n");
                        priv->usb_30_clk = NULL;
@@ -382,6 +386,8 @@ static int brcm_usb_phy_dvr_init(struct platform_device *pdev,
 
        priv->suspend_clk = clk_get(dev, "usb0_freerun");
        if (IS_ERR(priv->suspend_clk)) {
+               if (PTR_ERR(priv->suspend_clk) == -EPROBE_DEFER)
+                       return -EPROBE_DEFER;
                dev_err(dev, "Suspend Clock not found in Device Tree\n");
                priv->suspend_clk = NULL;
        }