Esempio n. 1
0
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;
}
Esempio n. 2
0
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;
}
Esempio n. 3
0
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;
}