提交 3471426f 编写于 作者: B Bjorn Andersson 提交者: Kishon Vijay Abraham I

phy: qcom-ufs: Correct usage of regulator_get()

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: NVivek Gautam <vivek.gautam@codeaurora.org>
Reviewed-by: NSubhash Jadavani <subhashj@codeaurora.org>
Signed-off-by: NBjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: NKishon Vijay Abraham I <kishon@ti.com>
上级 e7d5e412
...@@ -210,8 +210,9 @@ int ufs_qcom_phy_init_clks(struct ufs_qcom_phy *phy_common) ...@@ -210,8 +210,9 @@ int ufs_qcom_phy_init_clks(struct ufs_qcom_phy *phy_common)
} }
EXPORT_SYMBOL_GPL(ufs_qcom_phy_init_clks); EXPORT_SYMBOL_GPL(ufs_qcom_phy_init_clks);
static int __ufs_qcom_phy_init_vreg(struct device *dev, static int ufs_qcom_phy_init_vreg(struct device *dev,
struct ufs_qcom_phy_vreg *vreg, const char *name, bool optional) struct ufs_qcom_phy_vreg *vreg,
const char *name)
{ {
int err = 0; int err = 0;
...@@ -221,9 +222,7 @@ static int __ufs_qcom_phy_init_vreg(struct device *dev, ...@@ -221,9 +222,7 @@ static int __ufs_qcom_phy_init_vreg(struct device *dev,
vreg->reg = devm_regulator_get(dev, name); vreg->reg = devm_regulator_get(dev, name);
if (IS_ERR(vreg->reg)) { if (IS_ERR(vreg->reg)) {
err = PTR_ERR(vreg->reg); err = PTR_ERR(vreg->reg);
vreg->reg = NULL; dev_err(dev, "failed to get %s, %d\n", name, err);
if (!optional)
dev_err(dev, "failed to get %s, %d\n", name, err);
goto out; goto out;
} }
...@@ -263,12 +262,6 @@ static int __ufs_qcom_phy_init_vreg(struct device *dev, ...@@ -263,12 +262,6 @@ static int __ufs_qcom_phy_init_vreg(struct device *dev,
return err; 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 ufs_qcom_phy_init_vregulators(struct ufs_qcom_phy *phy_common)
{ {
int err; int err;
...@@ -284,9 +277,9 @@ int ufs_qcom_phy_init_vregulators(struct ufs_qcom_phy *phy_common) ...@@ -284,9 +277,9 @@ int ufs_qcom_phy_init_vregulators(struct ufs_qcom_phy *phy_common)
if (err) if (err)
goto out; goto out;
/* vddp-ref-clk-* properties are optional */ err = ufs_qcom_phy_init_vreg(phy_common->dev, &phy_common->vddp_ref_clk,
__ufs_qcom_phy_init_vreg(phy_common->dev, &phy_common->vddp_ref_clk, "vddp-ref-clk");
"vddp-ref-clk", true);
out: out:
return err; return err;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册