phy: qcom-ufs: Correct usage of regulator_get()
authorBjorn Andersson <bjorn.andersson@linaro.org>
Sun, 22 Jan 2017 21:17:47 +0000 (13:17 -0800)
committerKishon Vijay Abraham I <kishon@ti.com>
Fri, 27 Jan 2017 07:36:52 +0000 (13:06 +0530)
When regulator_get() tries to resolve a regulator supply but fail to
find a matching property in DeviceTree it returns a dummy regulator, if
a matching supply is specified but unavailable the regulator core will
return an error.

Based on this we should not ignore errors upon failing to acquire the
optional "vddp-ref-clk" supply.

Reviewed-by: Vivek Gautam <vivek.gautam@codeaurora.org>
Reviewed-by: Subhash Jadavani <subhashj@codeaurora.org>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
drivers/phy/phy-qcom-ufs.c

index 4d7f3c0182234d9d18f323698500c07b557efc83..bbd3171580848100c2cd1bb1bab4753d85c363bd 100644 (file)
@@ -210,8 +210,9 @@ out:
 }
 EXPORT_SYMBOL_GPL(ufs_qcom_phy_init_clks);
 
-static int __ufs_qcom_phy_init_vreg(struct device *dev,
-               struct ufs_qcom_phy_vreg *vreg, const char *name, bool optional)
+static int ufs_qcom_phy_init_vreg(struct device *dev,
+                                 struct ufs_qcom_phy_vreg *vreg,
+                                 const char *name)
 {
        int err = 0;
 
@@ -221,9 +222,7 @@ static int __ufs_qcom_phy_init_vreg(struct device *dev,
        vreg->reg = devm_regulator_get(dev, name);
        if (IS_ERR(vreg->reg)) {
                err = PTR_ERR(vreg->reg);
-               vreg->reg = NULL;
-               if (!optional)
-                       dev_err(dev, "failed to get %s, %d\n", name, err);
+               dev_err(dev, "failed to get %s, %d\n", name, err);
                goto out;
        }
 
@@ -263,12 +262,6 @@ out:
        return err;
 }
 
-static int ufs_qcom_phy_init_vreg(struct device *dev,
-                       struct ufs_qcom_phy_vreg *vreg, const char *name)
-{
-       return __ufs_qcom_phy_init_vreg(dev, vreg, name, false);
-}
-
 int ufs_qcom_phy_init_vregulators(struct ufs_qcom_phy *phy_common)
 {
        int err;
@@ -284,9 +277,9 @@ int ufs_qcom_phy_init_vregulators(struct ufs_qcom_phy *phy_common)
        if (err)
                goto out;
 
-       /* vddp-ref-clk-* properties are optional */
-       __ufs_qcom_phy_init_vreg(phy_common->dev, &phy_common->vddp_ref_clk,
-                                "vddp-ref-clk", true);
+       err = ufs_qcom_phy_init_vreg(phy_common->dev, &phy_common->vddp_ref_clk,
+                                    "vddp-ref-clk");
+
 out:
        return err;
 }