From 9adc296fc7f5c464f97bdd4372e34acbf70372e3 Mon Sep 17 00:00:00 2001 From: Finley Xiao Date: Thu, 11 Nov 2021 23:00:27 +0800 Subject: [PATCH] soc: rockchip: power-domain: Only don't power down pd when enable always on Fixes: ad7e570f0d5a ("soc: rockchip: power-domain: Add support to keep domains power on") Signed-off-by: Finley Xiao Change-Id: I68a96cec47bd17c9e5f777a21a1b25b86f888715 --- drivers/soc/rockchip/pm_domains.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/soc/rockchip/pm_domains.c b/drivers/soc/rockchip/pm_domains.c index 5f713362cb21..f0484cf2e08a 100644 --- a/drivers/soc/rockchip/pm_domains.c +++ b/drivers/soc/rockchip/pm_domains.c @@ -498,6 +498,9 @@ static int rockchip_pd_power(struct rockchip_pm_domain *pd, bool power_on) int ret = 0; struct generic_pm_domain *genpd = &pd->genpd; + if (pm_domain_always_on && !power_on) + return 0; + rockchip_pmu_lock(pd); if (rockchip_pmu_domain_is_on(pd) != power_on) { @@ -910,7 +913,7 @@ static int rockchip_pm_add_one_domain(struct rockchip_pmu *pmu, if (pd_info->active_wakeup) pd->genpd.flags |= GENPD_FLAG_ACTIVE_WAKEUP; #ifndef MODULE - if (pd_info->keepon_startup || pm_domain_always_on) { + if (pd_info->keepon_startup) { pd->genpd.flags |= GENPD_FLAG_ALWAYS_ON; if (!rockchip_pmu_domain_is_on(pd)) { error = rockchip_pd_power(pd, true); @@ -1088,7 +1091,7 @@ static int __init rockchip_pd_keepon_release(void) struct rockchip_pm_domain *pd; int i; - if (!g_pmu || pm_domain_always_on) + if (!g_pmu) return 0; for (i = 0; i < g_pmu->genpd_data.num_domains; i++) {