"ext Kevin Hilman" <[EMAIL PROTECTED]> writes:
> Högander Jouni wrote:
>> "ext Paul Walmsley" <[EMAIL PROTECTED]> 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?
>>
>
> Personally, I don't like these if statements (or ifdefs) in
> pwrdms_setup or the off_mode_enable hook. And I would like to see
> them all disappear.
Should we write all the states in off_mode_enable/pwrdms_setup
and then write them again in resource_refresh/CPUidle loop.
>
> I would rather see set_pwrdm_state() be smarter by simply not trying
> to use a state that is not in its list of allowed states.
Should we then just ignore possible error value from set_pwrdm_state?
Or consider unsupported PWRDM_ST as a not an error in set_pwrdm_state? Just
ignore it?
>
> Kevin
>
>
>>> - Paul
>>>
>>>
>>>> From: Jouni Hogander <[EMAIL PROTECTED]>
>>>> 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 <[EMAIL PROTECTED]>
>>>> ---
>>>> 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 [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html