> -----Original Message----- > From: Adrian Hunter [mailto:adrian.hunter@xxxxxxxxx] > Sent: Tuesday, July 20, 2010 2:10 PM > To: Ghorai, Sukumar > Cc: linux-mmc@xxxxxxxxxxxxxxx; linux-omap@xxxxxxxxxxxxxxx; 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@xxxxxxxxx] > >> Sent: Tuesday, July 20, 2010 1:40 PM > >> To: Ghorai, Sukumar > >> Cc: linux-mmc@xxxxxxxxxxxxxxx; linux-omap@xxxxxxxxxxxxxxx; 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@xxxxxxxxx] > >>>> Sent: Tuesday, July 20, 2010 12:39 PM > >>>> To: Ghorai, Sukumar > >>>> Cc: linux-mmc@xxxxxxxxxxxxxxx; linux-omap@xxxxxxxxxxxxxxx; 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@xxxxxx> > >>>>> Signed-off-by: Santosh Shilimkar <santosh.shilimkar@xxxxxx> > >>>>> CC: Madhusudhan Chikkature <madhu.cr@xxxxxx> > >>>>> CC: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > >>>>> --- > >>>>> 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@xxxxxxxxxxxxxxx > >>>>> 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@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