"ext Paul Walmsley" <paul@xxxxxxxxx> writes: > Hi Jouni, > > On Fri, 7 Nov 2008, Högander Jouni wrote: > >> What do you Paul think about patch below: > > I'm okay with it, but one potential problem: won't this prevent the chip > from entering retention, since SGX will be set to ON? Yes, you are right here. > > Anyway, if you agree this is a problem, what do you think about adding a > powerdomain flag that indicates that the powerdomain next power state > should be set to OFF on initialization, and then testing that in > set_pwrdm_state() ? I wouldn't add any flags for this. The goal is finally to set all next_states as OFF until someone has set some constraint which prevents OFF usage. For now we need to use RET as default, because drivers are not supporting OFF mode. Do you agree this? Easiest way here would be to add own hook for SGX in pwrdms_setup? One more strcmp("*_pwrdm, pwrdm->name) :) What do you think? > > - Paul > > >> From: Jouni Hogander <jouni.hogander@xxxxxxxxx> >> Date: Fri, 7 Nov 2008 16:50:51 +0200 >> Subject: [PATCH] OMAP3: PM: Check that wanted state is supported by pwrdm in pwrdms_setup >> >> Check that wanted sleep state is supported by powerdomain. If it is >> not supported, then use next highest supported state. >> >> Signed-off-by: Jouni Hogander <jouni.hogander@xxxxxxxxx> >> --- >> arch/arm/mach-omap2/pm34xx.c | 11 ++++++++++- >> 1 files changed, 10 insertions(+), 1 deletions(-) >> >> diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c >> index da098d2..d9959a8 100644 >> --- a/arch/arm/mach-omap2/pm34xx.c >> +++ b/arch/arm/mach-omap2/pm34xx.c >> @@ -515,6 +515,7 @@ static void __init prcm_setup_regs(void) >> static int __init pwrdms_setup(struct powerdomain *pwrdm) >> { >> struct power_state *pwrst; >> + u32 next_state = PWRDM_POWER_RET; >> >> if (!pwrdm->pwrsts) >> return 0; >> @@ -523,12 +524,20 @@ static int __init pwrdms_setup(struct powerdomain *pwrdm) >> if (!pwrst) >> return -ENOMEM; >> pwrst->pwrdm = pwrdm; >> - pwrst->next_state = PWRDM_POWER_RET; >> list_add(&pwrst->node, &pwrst_list); >> >> if (pwrdm_has_hdwr_sar(pwrdm)) >> pwrdm_enable_hdwr_sar(pwrdm); >> >> + while (!(pwrdm->pwrsts & (1 << next_state))) { >> + if (next_state > PWRDM_POWER_ON) { >> + next_state = pwrdm_read_next_pwrst(pwrst->pwrdm); >> + break; >> + } >> + next_state++; >> + } >> + pwrst->next_state = next_state; >> + >> return set_pwrdm_state(pwrst->pwrdm, pwrst->next_state); >> } >> >> -- >> 1.6.0.1 >> >> > > > - Paul -- Jouni Högander -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html