mirror of https://gitee.com/openkylin/linux.git
soc: mediatek: Refactor regulator control
Put regulator enable and disable control in separate functions. Signed-off-by: Weiyi Lu <weiyi.lu@mediatek.com> Signed-off-by: Matthias Brugger <matthias.bgg@gmail.com>
This commit is contained in:
parent
90a943145e
commit
d744d035ec
|
@ -191,6 +191,22 @@ static int scpsys_domain_is_on(struct scp_domain *scpd)
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
static int scpsys_regulator_enable(struct scp_domain *scpd)
|
||||
{
|
||||
if (!scpd->supply)
|
||||
return 0;
|
||||
|
||||
return regulator_enable(scpd->supply);
|
||||
}
|
||||
|
||||
static int scpsys_regulator_disable(struct scp_domain *scpd)
|
||||
{
|
||||
if (!scpd->supply)
|
||||
return 0;
|
||||
|
||||
return regulator_disable(scpd->supply);
|
||||
}
|
||||
|
||||
static int scpsys_power_on(struct generic_pm_domain *genpd)
|
||||
{
|
||||
struct scp_domain *scpd = container_of(genpd, struct scp_domain, genpd);
|
||||
|
@ -201,11 +217,9 @@ static int scpsys_power_on(struct generic_pm_domain *genpd)
|
|||
int ret, tmp;
|
||||
int i;
|
||||
|
||||
if (scpd->supply) {
|
||||
ret = regulator_enable(scpd->supply);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
ret = scpsys_regulator_enable(scpd);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
for (i = 0; i < MAX_CLKS && scpd->clk[i]; i++) {
|
||||
ret = clk_prepare_enable(scpd->clk[i]);
|
||||
|
@ -273,8 +287,7 @@ static int scpsys_power_on(struct generic_pm_domain *genpd)
|
|||
clk_disable_unprepare(scpd->clk[i]);
|
||||
}
|
||||
err_clk:
|
||||
if (scpd->supply)
|
||||
regulator_disable(scpd->supply);
|
||||
scpsys_regulator_disable(scpd);
|
||||
|
||||
dev_err(scp->dev, "Failed to power on domain %s\n", genpd->name);
|
||||
|
||||
|
@ -333,8 +346,9 @@ static int scpsys_power_off(struct generic_pm_domain *genpd)
|
|||
for (i = 0; i < MAX_CLKS && scpd->clk[i]; i++)
|
||||
clk_disable_unprepare(scpd->clk[i]);
|
||||
|
||||
if (scpd->supply)
|
||||
regulator_disable(scpd->supply);
|
||||
ret = scpsys_regulator_disable(scpd);
|
||||
if (ret < 0)
|
||||
goto out;
|
||||
|
||||
return 0;
|
||||
|
||||
|
|
Loading…
Reference in New Issue