Tony Lindgren <[EMAIL PROTECTED]> writes:

> * Paul Walmsley <[EMAIL PROTECTED]> [081114 09:46]:
>> 
>> During _omap3_noncore_dpll_lock(), if a DPLL has no active downstream
>> clocks and DPLL autoidle is enabled, the DPLL may never lock, since it
>> will enter autoidle immediately.  To resolve this, disable DPLL
>> autoidle while locking the DPLL, and unconditionally wait for the DPLL
>> to lock.  This fixes some bugs where the kernel would hang when returning
>> from retention or return the wrong rate for the DPLL.
>> 
>> This patch is a collaboration with Peter de Schrijver 
>> <[EMAIL PROTECTED]> and Kevin Hilman 
>> <[EMAIL PROTECTED]>.
>
> Pushing to l-o tree today.
>

Actually, I think Tero and Paul have a different fix for this now,
which is what I've included in the latest PM branch.

Tero can you send the updated version of you "Fix a bug with noncore
dpll rate calculation" patch?

Kevin

>
>
>> Signed-off-by: Paul Walmsley <[EMAIL PROTECTED]>
>> Cc: Peter de Schrijver <[EMAIL PROTECTED]>
>> Cc: Kevin Hilman <[EMAIL PROTECTED]>
>> ---
>>  arch/arm/mach-omap2/clock34xx.c |   15 +++++----------
>>  1 files changed, 5 insertions(+), 10 deletions(-)
>> 
>> diff --git a/arch/arm/mach-omap2/clock34xx.c 
>> b/arch/arm/mach-omap2/clock34xx.c
>> index 3a4e160..b8b4494 100644
>> --- a/arch/arm/mach-omap2/clock34xx.c
>> +++ b/arch/arm/mach-omap2/clock34xx.c
>> @@ -163,19 +163,14 @@ static int _omap3_noncore_dpll_lock(struct clk *clk)
>>  
>>      ai = omap3_dpll_autoidle_read(clk);
>>  
>> +    omap3_dpll_deny_idle(clk);
>> +
>>      _omap3_dpll_write_clken(clk, DPLL_LOCKED);
>>  
>> -    if (ai) {
>> -            /*
>> -             * If no downstream clocks are enabled, CM_IDLEST bit
>> -             * may never become active, so don't wait for DPLL to lock.
>> -             */
>> -            r = 0;
>> +    r = _omap3_wait_dpll_status(clk, 1);
>> +
>> +    if (ai)
>>              omap3_dpll_allow_idle(clk);
>> -    } else {
>> -            r = _omap3_wait_dpll_status(clk, 1);
>> -            omap3_dpll_deny_idle(clk);
>> -    };
>>  
>>      return r;
>>  }
>> --
>> 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
--
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

Reply via email to