Hi Bin, On Mon, Jan 9, 2012 at 11:52 AM, Barry Song <barry.s...@csr.com> wrote: > From: Bin Shi <bin....@csr.com> > > This patch moves suspend/resume to dev_pm_ops and add hibernation support. > It was tested on CSR SiRFprimaII cortex-a9 platform. A sd partition is used > as swsusp partition. > > Signed-off-by: Bin Shi <bin....@csr.com> > Signed-off-by: Barry Song <barry.s...@csr.com> > --- > drivers/mmc/core/bus.c | 38 +++++++++++++++++++++++++------------- > 1 files changed, 25 insertions(+), 13 deletions(-) > > diff --git a/drivers/mmc/core/bus.c b/drivers/mmc/core/bus.c > index 6be4924..bab50f7 100644 > --- a/drivers/mmc/core/bus.c > +++ b/drivers/mmc/core/bus.c > @@ -122,14 +122,14 @@ static int mmc_bus_remove(struct device *dev) > return 0; > } > > -static int mmc_bus_suspend(struct device *dev, pm_message_t state) > +static int mmc_bus_suspend(struct device *dev) > { > struct mmc_driver *drv = to_mmc_driver(dev->driver); > struct mmc_card *card = mmc_dev_to_card(dev); > int ret = 0; > > if (dev->driver && drv->suspend) > - ret = drv->suspend(card, state); > + ret = drv->suspend(card, PMSG_SUSPEND); > return ret; > } > > @@ -144,6 +144,17 @@ static int mmc_bus_resume(struct device *dev) > return ret; > } > > +static int mmc_bus_freeze(struct device *dev) > +{ > + struct mmc_driver *drv = to_mmc_driver(dev->driver); > + struct mmc_card *card = mmc_dev_to_card(dev); > + int ret = 0; > + > + if (dev->driver && drv->suspend) > + ret = drv->suspend(card, PMSG_FREEZE);
Not a comment , rather a doubt Any particular reason to differenciate freeze and suspend? > + return ret; > +} > + > #ifdef CONFIG_PM_RUNTIME > > static int mmc_runtime_suspend(struct device *dev) > @@ -165,20 +176,23 @@ static int mmc_runtime_idle(struct device *dev) > return pm_runtime_suspend(dev); > } > > +#else /* !CONFIG_PM_RUNTIME */ > +#define mmc_runtime_suspend NULL > +#define mmc_runtime_resume NULL > +#define mmc_runtime_idle NULL > +#endif /* !CONFIG_PM_RUNTIME */ > + > static const struct dev_pm_ops mmc_bus_pm_ops = { > .runtime_suspend = mmc_runtime_suspend, > .runtime_resume = mmc_runtime_resume, > .runtime_idle = mmc_runtime_idle, > + .suspend = mmc_bus_suspend, > + .resume = mmc_bus_resume, > + .freeze = mmc_bus_freeze, > + .restore = mmc_bus_resume, > + .thaw = mmc_bus_resume, > }; > > -#define MMC_PM_OPS_PTR (&mmc_bus_pm_ops) > - > -#else /* !CONFIG_PM_RUNTIME */ > - > -#define MMC_PM_OPS_PTR NULL > - > -#endif /* !CONFIG_PM_RUNTIME */ > - > static struct bus_type mmc_bus_type = { > .name = "mmc", > .dev_attrs = mmc_dev_attrs, > @@ -186,9 +200,7 @@ static struct bus_type mmc_bus_type = { > .uevent = mmc_bus_uevent, > .probe = mmc_bus_probe, > .remove = mmc_bus_remove, > - .suspend = mmc_bus_suspend, > - .resume = mmc_bus_resume, > - .pm = MMC_PM_OPS_PTR, > + .pm = &mmc_bus_pm_ops, > }; > > int mmc_register_bus(void) > -- > 1.7.1 > > > > Member of the CSR plc group of companies. CSR plc registered in England and > Wales, registered number 4187346, registered office Churchill House, > Cambridge Business Park, Cowley Road, Cambridge, CB4 0WZ, United Kingdom > More information can be found at www.csr.com. Follow CSR on Twitter at > http://twitter.com/CSR_PLC and read our blog at www.csr.com/blog > -- > To unsubscribe from this list: send the line "unsubscribe linux-mmc" in > the body of a message to majord...@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html