static int ufs_qcom_phy_enable_vreg(struct device *dev, struct ufs_qcom_phy_vreg *vreg) { int ret = 0; if (!vreg || vreg->enabled) goto out; ret = ufs_qcom_phy_cfg_vreg(dev, vreg, true); if (ret) { dev_err(dev, "%s: ufs_qcom_phy_cfg_vreg() failed, err=%d\n", __func__, ret); goto out; } ret = regulator_enable(vreg->reg); if (ret) { dev_err(dev, "%s: enable failed, err=%d\n", __func__, ret); goto out; } vreg->enabled = true; out: return ret; }
int ufs_qcom_phy_enable_vreg(struct phy *phy, struct ufs_qcom_phy_vreg *vreg) { struct ufs_qcom_phy *ufs_qcom_phy = get_ufs_qcom_phy(phy); struct device *dev = ufs_qcom_phy->dev; int ret = 0; if (!vreg || vreg->enabled) goto out; ret = ufs_qcom_phy_cfg_vreg(phy, vreg, true); if (ret) { dev_err(dev, "%s: ufs_qcom_phy_cfg_vreg() failed, err=%d\n", __func__, ret); goto out; } ret = regulator_enable(vreg->reg); if (ret) { dev_err(dev, "%s: enable failed, err=%d\n", __func__, ret); goto out; } vreg->enabled = true; out: return ret; }
static int ufs_qcom_phy_disable_vreg(struct device *dev, struct ufs_qcom_phy_vreg *vreg) { int ret = 0; if (!vreg || !vreg->enabled || vreg->is_always_on) goto out; ret = regulator_disable(vreg->reg); if (!ret) { /* ignore errors on applying disable config */ ufs_qcom_phy_cfg_vreg(dev, vreg, false); vreg->enabled = false; } else { dev_err(dev, "%s: %s disable failed, err=%d\n", __func__, vreg->name, ret); } out: return ret; }