RE: [PATCH] OMAP3: PM: Fix for Silicon bug on Context Restore on OMAP3430

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The problem here is not with the restore. If MPU reads the PADCONF_SAVEDONE bit very close
to the end of context save sequence for the pad conf registers, the last context is not
saved to the scratchpad memory. This is a h/w bug. The workaround proposed is to delay the
MPU access of SAVEDONE bit until the last context has been saved. 300 us delay is the current
safe delay proposed by TI. I believe investigations are going on to whether this delay can be
optimized. Also only the last context (ETK_D14) has the risk of not getting saved.

We could add a defconfig option for this workaround and enable it on need basis till TI
comes out with proper optimized workaround sequence.

Regards
Thara

>>-----Original Message-----
>>From: linux-omap-owner@xxxxxxxxxxxxxxx [mailto:linux-omap-owner@xxxxxxxxxxxxxxx] On Behalf Of Menon,
>>Nishanth
>>Sent: Monday, October 05, 2009 10:58 PM
>>To: Kevin Hilman
>>Cc: linux-omap@xxxxxxxxxxxxxxx; Gulati, Shweta
>>Subject: Re: [PATCH] OMAP3: PM: Fix for Silicon bug on Context Restore on OMAP3430
>>
>>Kevin Hilman had written, on 10/05/2009 12:04 PM, the following:
>>> y@xxxxxxxxxxxx writes:
>>>
>>>> From: Shweta Gulati <shweta.gulati@xxxxxx>
>>>
>>> Please add descriptive changelog, including Erratta number and
>>> summary of the bug.
>>>
>>>> Signed-off-by: Shweta Gulati <shweta.gulati@xxxxxx>
>>>> ---
>>>>  arch/arm/mach-omap2/pm34xx.c |    6 ++++++
>>>>  1 files changed, 6 insertions(+), 0 deletions(-)
>>>>
>>>> diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
>>>> index a9eda25..38f4781 100644
>>>> --- a/arch/arm/mach-omap2/pm34xx.c
>>>> +++ b/arch/arm/mach-omap2/pm34xx.c
>>>> @@ -140,6 +140,12 @@ static void omap3_core_save_context(void)
>>>>  	omap_ctrl_readl(OMAP343X_CONTROL_PADCONF_OFF);
>>>>  	control_padconf_off |= START_PADCONF_SAVE;
>>>>  	omap_ctrl_writel(control_padconf_off, OMAP343X_CONTROL_PADCONF_OFF);
>>>> +	/* Due to Silicon Bug on context restore it is found
>>>> +	 * that the CONTROL_PAD_CONF_ETK14 register is not saved into
>>>> +	 * scratch pad memory sometimes. To rectify it delay acess by Mpu
>>>> +	 * for 300us for scm to finish saving task
>>>> +	 */
>>>> +	udelay(300);
>>>
>>> Why 300 usecs?
>>300uSec could be optimized as I understand.
>>
>>> Is ETK14 the only register not saved?
>>The bug as I understand is that the register is saved, but restore
>>potentially can corrupt the values.
>>there is an alternative implementation possible:
>>a) we save the register in a seperate variable
>>b) we allow the restore issue to kick us (essentially allow it to be
>>corrupted)
>>c) we over write the restored value with the saved value.
>>This has the risk of a glitch on the line (between the corrupted restore
>>data to the time we restore with correct data).
>>
>>--
>>Regards,
>>Nishanth Menon
>>--
>>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

--
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

[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux