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

Ghorai, Sukumar
2010-07-20T08:48:36Z

> -----Original Message-----
> From: Adrian Hunter [mailto:adrian.hunter@nokia.com]
> Sent: Tuesday, July 20, 2010 2:10 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
>
> Ghorai, Sukumar wrote:
> > Adrian,
> >
> >> -----Original Message-----
> >> From: Adrian Hunter [mailto:adrian.hunter@nokia.com]
> >> Sent: Tuesday, July 20, 2010 1:40 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
> >>
> >> 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?
> > [Ghorai] do men when CONFIG_PM is not enabled still we should do power
> saving in mmc?
>
> Why not?
>
> Because issue is iclk/fclk is quite depended on PRCM framework when we are
> using omap_hsmmc_ps_ops operation table.
>
> iclk is left alone.
>
> fclk is manipulated with or without power_saving.
>
> I still do not understand your problem sorry :-(
[Ghorai] thanks and need input again,
we have two tables -
1. static const struct mmc_host_ops omap_hsmmc_ops = {
}
--> This is without CONFIG_PM, assumed.

2. static const struct mmc_host_ops omap_hsmmc_ps_ops = {
}
-> this with CONFIG_PM, assumed.

a. And you feel we should remove #1
b. use omap_hsmmc_ps_ops default.
c. And it should work in all case?

>
> >
> >>> 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
> > [Ghorai] the fix I send is to guard in MMC/SD host driver to avoid
> mistake in board file(s). And this file is used for multiple omap3, omap4
> boards.
> >
> >>>>> 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
> >>>
> >
> >