ext Shubhrajyoti wrote onĀ 2012-01-16:
> On Monday 16 January 2012 06:41 PM, [email protected] wrote:
>> ext Shubhrajyoti D wrote on 2012-01-16:
>>> The commit 11dd62:[omap_hsmmc: context save/restore support]
>>> 
>>> does a reset and restores AUTOIDLE settings.
>>> This patch saves the register does a reset and restores
>>> the same configuration.
>> ...
>>>     if (pdata->get_context_loss_count) {
>>> @@ -700,6 +700,7 @@ static int omap_hsmmc_context_restore(struct
>>> omap_hsmmc_host *host)
>>>             && time_before(jiffies, timeout))               ; +     sysc =
>>>  OMAP_HSMMC_READ(host->base, SYSCONFIG);    /* Do software reset */
>>>     OMAP_HSMMC_WRITE(host->base, SYSCONFIG, SOFTRESET);     timeout =
>>>  jiffies + msecs_to_jiffies(MMC_TIMEOUT_MS);
>>> @@ -707,8 +708,7 @@ static int omap_hsmmc_context_restore(struct
>>> omap_hsmmc_host *host)
>>>             && time_before(jiffies, timeout))
>>>             ;
>>> -   OMAP_HSMMC_WRITE(host->base, SYSCONFIG,
>>> -                   OMAP_HSMMC_READ(host->base, SYSCONFIG) | AUTOIDLE);
>>> +   OMAP_HSMMC_WRITE(host->base, SYSCONFIG, sysc);
>> The meaning of the code is to restore the register context after it was lost
> during transition into low power consumption state. SW reset is needed to 
> bring
> all the registers in a consistent state before reconfiguring some of them.
> Agreed thanks.
>> Saving and restoring the SYSCONFIG register across SW reset is not needed.
>> 
>> Also re-configuring AUTOIDLE feature is not necessary since SYSCONFIG reset
> value has is 1 already, according to TRM. I guess it was done to make things
> more explicit.
> However in addition to autoidle there are other bits in the register
> like the sidle mode , enable wakeup which will get not get overwritten now.
> 
> Do you agree?

No, there's no need to do that - after SW reset the registers have predefined 
reset values; the reset value is correct in case of SYSCONFIG register for most 
of omap3|4 boards based, doesn't need any update after SW reset.

If in case of your board the reset value of SYSCONFIG register is not what you 
want - you still cannot rely on the contents of the SYSCONFIG register once the 
context was lost, i.e. saving its value before SW reset doesn't help. 
You would need to initialize it to the proper value after the SW reset 
manually, probably the same value that you used during initialization.

Denis
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to