mmc: core: Convert the mmc_driver to use the modern PM ops
authorUlf Hansson <ulf.hansson@linaro.org>
Mon, 6 Oct 2014 09:29:42 +0000 (11:29 +0200)
committerUlf Hansson <ulf.hansson@linaro.org>
Mon, 10 Nov 2014 11:40:33 +0000 (12:40 +0100)
Instead of having specific mmc system PM callbacks for the mmc driver,
let's convert to use the common ones.

Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/card/block.c
drivers/mmc/core/bus.c

index a11451f4f408da8a226494e97adf2439a0986b2c..dfbdfb995dd32d3885d0af2814061a237db3a313 100644 (file)
@@ -2516,15 +2516,17 @@ static void mmc_blk_shutdown(struct mmc_card *card)
        _mmc_blk_suspend(card);
 }
 
-#ifdef CONFIG_PM
-static int mmc_blk_suspend(struct mmc_card *card)
+#ifdef CONFIG_PM_SLEEP
+static int mmc_blk_suspend(struct device *dev)
 {
+       struct mmc_card *card = mmc_dev_to_card(dev);
        return _mmc_blk_suspend(card);
 }
 
-static int mmc_blk_resume(struct mmc_card *card)
+static int mmc_blk_resume(struct device *dev)
 {
        struct mmc_blk_data *part_md;
+       struct mmc_card *card = mmc_dev_to_card(dev);
        struct mmc_blk_data *md = mmc_get_drvdata(card);
 
        if (md) {
@@ -2540,19 +2542,17 @@ static int mmc_blk_resume(struct mmc_card *card)
        }
        return 0;
 }
-#else
-#define        mmc_blk_suspend NULL
-#define mmc_blk_resume NULL
 #endif
 
+static SIMPLE_DEV_PM_OPS(mmc_blk_pm_ops, mmc_blk_suspend, mmc_blk_resume);
+
 static struct mmc_driver mmc_driver = {
        .drv            = {
                .name   = "mmcblk",
+               .pm     = &mmc_blk_pm_ops,
        },
        .probe          = mmc_blk_probe,
        .remove         = mmc_blk_remove,
-       .suspend        = mmc_blk_suspend,
-       .resume         = mmc_blk_resume,
        .shutdown       = mmc_blk_shutdown,
 };
 
index 8a1f1240e05802f326986afdf093cd75f303496c..2f375283c423b010e78498567bf4df0c040ecd43 100644 (file)
@@ -145,16 +145,13 @@ static void mmc_bus_shutdown(struct device *dev)
 #ifdef CONFIG_PM_SLEEP
 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);
        struct mmc_host *host = card->host;
        int ret;
 
-       if (dev->driver && drv->suspend) {
-               ret = drv->suspend(card);
-               if (ret)
-                       return ret;
-       }
+       ret = pm_generic_suspend(dev);
+       if (ret)
+               return ret;
 
        ret = host->bus_ops->suspend(host);
        return ret;
@@ -162,7 +159,6 @@ static int mmc_bus_suspend(struct device *dev)
 
 static int mmc_bus_resume(struct device *dev)
 {
-       struct mmc_driver *drv = to_mmc_driver(dev->driver);
        struct mmc_card *card = mmc_dev_to_card(dev);
        struct mmc_host *host = card->host;
        int ret;
@@ -172,9 +168,7 @@ static int mmc_bus_resume(struct device *dev)
                pr_warn("%s: error %d during resume (card was removed?)\n",
                        mmc_hostname(host), ret);
 
-       if (dev->driver && drv->resume)
-               ret = drv->resume(card);
-
+       ret = pm_generic_resume(dev);
        return ret;
 }
 #endif