Re: [PATCH] omap: hsmmc funtionality breaks when CONFIG_PM not define

Adrian Hunter
2010-07-20T08:10:13Z

Ghorai, Sukumar wrote:
>
>> -----Original Message-----
>> From: Adrian Hunter [mailto:adrian.hunter@nokia.com]
>> Sent: Tuesday, July 20, 2010 12:39 PM
>> To: Ghorai, Sukumar
>> Cc: linux-mmc@vger.kernel.org; linux-omap@vger.kernel.org; Shilimkar,
>> Santosh; Chikkature Rajashekar, Madhusudhan; Andrew Morton
>> Subject: Re: [PATCH] omap: hsmmc funtionality breaks when CONFIG_PM not
>> define
>>
>> Sukumar Ghorai wrote:
>>> Issue if power_saving option passed from board file and CONFIG_PM
>> not define.
>>> This is because hosts refer to wrong operation table and that try to
>> power save.
>>
>> power_saving is not related to power management. It should work with or
>> without
>> CONFIG_PM. What problem are you seeing?
> [Ghorai] when CONFIG_PM is not defined but power_saving flag is TRUE, then host operation table point to table which handles in state machine as: ENABLE -> CARDSLEEP -> REGSLEEP -> DISABLED for power/clock cut. And do the reverse for the enable clock/power.
> And power saving is not required and wont work when CONFIG_PM is not enabled.

How is that a problem? It would be useful to know what you need?

>
> So if CONFIG_PM is not enable, then it should do simple clock disable/enable, and not via the power state machine.

If that is what you want, simply change your board file:

#if CONFIG_PM
.power_saving = true,
#else
.power_saving = false,
#end

>
>>> Signed-off-by: Sukumar Ghorai <s-ghorai@ti.com>
>>> Signed-off-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
>>> CC: Madhusudhan Chikkature <madhu.cr@ti.com>
>>> CC: Andrew Morton <akpm@linux-foundation.org>
>>> ---
>>> Tested on omap3, omap4430 ES2.0
>>>
>>> drivers/mmc/host/omap_hsmmc.c | 2 ++
>>> 1 files changed, 2 insertions(+), 0 deletions(-)
>>>
>>> diff --git a/drivers/mmc/host/omap_hsmmc.c
>> b/drivers/mmc/host/omap_hsmmc.c
>>> index b032828..f84eed0 100644
>>> --- a/drivers/mmc/host/omap_hsmmc.c
>>> +++ b/drivers/mmc/host/omap_hsmmc.c
>>> @@ -2015,9 +2015,11 @@ static int __init omap_hsmmc_probe(struct
>> platform_device *pdev)
>>> platform_set_drvdata(pdev, host);
>>> INIT_WORK(&host->mmc_carddetect_work, omap_hsmmc_detect);
>>>
>>> +#ifdef CONFIG_PM
>>> if (mmc_slot(host).power_saving)
>>> mmc->ops = &omap_hsmmc_ps_ops;
>>> else
>>> +#endif
>>> mmc->ops = &omap_hsmmc_ops;
>>>
>>> /*
>>> --
>>> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
>>> the body of a message to majordomo@vger.kernel.org
>>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>>>
>
> Regards,
> Ghorai
> --
> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>