mirror of
https://github.com/torvalds/linux.git
synced 2026-09-24 06:24:02 +02:00
pmdomain: Merge branch fixes into next
Merge the pmdomain fixes for v7.2-rc[n] into the next branch, to allow them to get tested together with the pmdomain changes that are targeted for the next release. Signed-off-by: Ulf Hansson <ulfh@kernel.org>
This commit is contained in:
commit
17921fcaf9
|
|
@ -393,9 +393,8 @@ static int scpsys_hwv_power_on(struct generic_pm_domain *genpd)
|
|||
return ret;
|
||||
};
|
||||
|
||||
static int scpsys_hwv_power_off(struct generic_pm_domain *genpd)
|
||||
static int scpsys_hwv_power_off_internal(struct scpsys_domain *pd)
|
||||
{
|
||||
struct scpsys_domain *pd = container_of(genpd, struct scpsys_domain, genpd);
|
||||
const struct scpsys_hwv_domain_data *hwv = pd->hwv_data;
|
||||
struct scpsys *scpsys = pd->scpsys;
|
||||
u32 val;
|
||||
|
|
@ -464,6 +463,13 @@ static int scpsys_hwv_power_off(struct generic_pm_domain *genpd)
|
|||
return ret;
|
||||
};
|
||||
|
||||
static int scpsys_hwv_power_off(struct generic_pm_domain *genpd)
|
||||
{
|
||||
struct scpsys_domain *pd = container_of(genpd, struct scpsys_domain, genpd);
|
||||
|
||||
return scpsys_hwv_power_off_internal(pd);
|
||||
}
|
||||
|
||||
static int scpsys_ctl_pwrseq_on(struct scpsys_domain *pd)
|
||||
{
|
||||
struct scpsys *scpsys = pd->scpsys;
|
||||
|
|
@ -694,9 +700,8 @@ static int scpsys_power_on(struct generic_pm_domain *genpd)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int scpsys_power_off(struct generic_pm_domain *genpd)
|
||||
static int scpsys_power_off_internal(struct scpsys_domain *pd)
|
||||
{
|
||||
struct scpsys_domain *pd = container_of(genpd, struct scpsys_domain, genpd);
|
||||
struct scpsys *scpsys = pd->scpsys;
|
||||
bool tmp;
|
||||
int ret;
|
||||
|
|
@ -737,6 +742,13 @@ static int scpsys_power_off(struct generic_pm_domain *genpd)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int scpsys_power_off(struct generic_pm_domain *genpd)
|
||||
{
|
||||
struct scpsys_domain *pd = container_of(genpd, struct scpsys_domain, genpd);
|
||||
|
||||
return scpsys_power_off_internal(pd);
|
||||
}
|
||||
|
||||
static struct
|
||||
generic_pm_domain *scpsys_add_one_domain(struct scpsys *scpsys, struct device_node *node)
|
||||
{
|
||||
|
|
@ -884,7 +896,14 @@ generic_pm_domain *scpsys_add_one_domain(struct scpsys *scpsys, struct device_no
|
|||
* late_init time.
|
||||
*/
|
||||
if (MTK_SCPD_CAPS(pd, MTK_SCPD_KEEP_DEFAULT_OFF)) {
|
||||
if (scpsys_domain_is_on(pd))
|
||||
bool domain_is_on;
|
||||
|
||||
if (scpsys->soc_data->type == SCPSYS_MTCMOS_TYPE_HW_VOTER)
|
||||
domain_is_on = scpsys_hwv_domain_is_enable_done(pd);
|
||||
else
|
||||
domain_is_on = scpsys_domain_is_on(pd);
|
||||
|
||||
if (domain_is_on)
|
||||
dev_warn(scpsys->dev,
|
||||
"%pOF: A default off power domain has been ON\n", node);
|
||||
} else {
|
||||
|
|
@ -973,6 +992,7 @@ static int scpsys_add_subdomain(struct scpsys *scpsys, struct device_node *paren
|
|||
|
||||
static void scpsys_remove_one_domain(struct scpsys_domain *pd)
|
||||
{
|
||||
struct scpsys *scpsys = pd->scpsys;
|
||||
int ret;
|
||||
|
||||
/*
|
||||
|
|
@ -984,8 +1004,14 @@ static void scpsys_remove_one_domain(struct scpsys_domain *pd)
|
|||
dev_err(pd->scpsys->dev,
|
||||
"failed to remove domain '%s' : %d - state may be inconsistent\n",
|
||||
pd->genpd.name, ret);
|
||||
if (scpsys_domain_is_on(pd))
|
||||
scpsys_power_off(&pd->genpd);
|
||||
|
||||
if (scpsys->soc_data->type == SCPSYS_MTCMOS_TYPE_HW_VOTER) {
|
||||
if (scpsys_hwv_domain_is_enable_done(pd))
|
||||
scpsys_hwv_power_off_internal(pd);
|
||||
} else {
|
||||
if (scpsys_domain_is_on(pd))
|
||||
scpsys_power_off_internal(pd);
|
||||
}
|
||||
|
||||
clk_bulk_put(pd->num_clks, pd->clks);
|
||||
clk_bulk_put(pd->num_subsys_clks, pd->subsys_clks);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user