On Wed, 5 Feb 2025 at 07:18, Shawn Lin <shawn.lin@xxxxxxxxxxxxxx> wrote: > > Inform firmware to keep the power domain on or off. > > Suggested-by: Ulf Hansson <ulf.hansson@xxxxxxxxxx> > Signed-off-by: Shawn Lin <shawn.lin@xxxxxxxxxxxxxx> Reviewed-by: Ulf Hansson <ulf.hansson@xxxxxxxxxx> Kind regards Uffe > --- > > Changes in v7: None > Changes in v6: None > Changes in v5: > - fix a compile warning > > Changes in v4: None > Changes in v3: None > Changes in v2: None > > drivers/pmdomain/rockchip/pm-domains.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/drivers/pmdomain/rockchip/pm-domains.c b/drivers/pmdomain/rockchip/pm-domains.c > index cb0f938..49842f1 100644 > --- a/drivers/pmdomain/rockchip/pm-domains.c > +++ b/drivers/pmdomain/rockchip/pm-domains.c > @@ -5,6 +5,7 @@ > * Copyright (c) 2015 ROCKCHIP, Co. Ltd. > */ > > +#include <linux/arm-smccc.h> > #include <linux/io.h> > #include <linux/iopoll.h> > #include <linux/err.h> > @@ -20,6 +21,7 @@ > #include <linux/regmap.h> > #include <linux/mfd/syscon.h> > #include <soc/rockchip/pm_domains.h> > +#include <soc/rockchip/rockchip_sip.h> > #include <dt-bindings/power/px30-power.h> > #include <dt-bindings/power/rockchip,rv1126-power.h> > #include <dt-bindings/power/rk3036-power.h> > @@ -540,6 +542,7 @@ static void rockchip_do_pmu_set_power_domain(struct rockchip_pm_domain *pd, > struct generic_pm_domain *genpd = &pd->genpd; > u32 pd_pwr_offset = pd->info->pwr_offset; > bool is_on, is_mem_on = false; > + struct arm_smccc_res res; > > if (pd->info->pwr_mask == 0) > return; > @@ -567,6 +570,11 @@ static void rockchip_do_pmu_set_power_domain(struct rockchip_pm_domain *pd, > genpd->name, is_on); > return; > } > + > + /* Inform firmware to keep this pd on or off */ > + arm_smccc_smc(ROCKCHIP_SIP_SUSPEND_MODE, ROCKCHIP_SLEEP_PD_CONFIG, > + pmu->info->pwr_offset + pd_pwr_offset, > + pd->info->pwr_mask, on, 0, 0, 0, &res); > } > > static int rockchip_pd_power(struct rockchip_pm_domain *pd, bool power_on) > -- > 2.7.4 >