summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavan Kunapuli <pkunapuli@nvidia.com>2013-10-30 19:29:35 +0530
committerRiham Haidar <rhaidar@nvidia.com>2013-11-01 19:27:29 -0700
commitf9dede308e2f85da438b2ca39a888077f29c25e4 (patch)
treeb744f9a53af7b7767044c9a7cceb5fb2e50d4cd2
parent75a90acfe8709c6f560a0450018e27a2af66565a (diff)
Revert "Revert "mmc: Set suspend/resume bus operations if CONFIG_PM_RUNTIME is used""
This reverts commit 866353859bcd3328dd0be84e0f0ed6d1ba834772. Moving back suspend and resume to dev_pm_ops to ensure that bus suspend is done before device suspend and bus resume is done after device resume. Without bus suspend and resume, there is a chance of some requests being scheduled after device suspend or before device resume is done. Bug 1381236 Bug 1390987 Change-Id: I842b1e042982f8ac0547936800bbc996643c7d34 Signed-off-by: Pavan Kunapuli <pkunapuli@nvidia.com> Reviewed-on: http://git-master/r/309911 Reviewed-by: Naveen Kumar Arepalli <naveenk@nvidia.com> Tested-by: Naveen Kumar Arepalli <naveenk@nvidia.com> Reviewed-by: Venu Byravarasu <vbyravarasu@nvidia.com>
-rw-r--r--drivers/mmc/core/bus.c22
1 files changed, 6 insertions, 16 deletions
diff --git a/drivers/mmc/core/bus.c b/drivers/mmc/core/bus.c
index 4ab887afe1ed..6e0286d0f473 100644
--- a/drivers/mmc/core/bus.c
+++ b/drivers/mmc/core/bus.c
@@ -133,7 +133,7 @@ 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);
@@ -156,7 +156,6 @@ static int mmc_bus_resume(struct device *dev)
}
#ifdef CONFIG_PM_RUNTIME
-
static int mmc_runtime_suspend(struct device *dev)
{
struct mmc_card *card = mmc_dev_to_card(dev);
@@ -175,21 +174,14 @@ static int mmc_runtime_idle(struct device *dev)
{
return pm_runtime_suspend(dev);
}
+#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,
+ SET_RUNTIME_PM_OPS(mmc_runtime_suspend, mmc_runtime_resume,
+ mmc_runtime_idle)
+ SET_SYSTEM_SLEEP_PM_OPS(mmc_bus_suspend, 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,
@@ -197,9 +189,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)