mmc: tmio: Avoid boilerplate code in ->runtime_suspend()
authorUlf Hansson <ulf.hansson@linaro.org>
Wed, 16 Oct 2019 13:16:34 +0000 (15:16 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 13 Nov 2019 10:41:50 +0000 (11:41 +0100)
Rather than checking the 'runtime_synced' flag each time the
->runtime_suspend() callback is invoked, let's convert into using
dev_pm_domain_start() during ->probe() and drop the corresponding
boilerplate code.

Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/mmc/host/tmio_mmc.h
drivers/mmc/host/tmio_mmc_core.c

index 2f0b092d6dcc64d199b75ec7563600f1954502dd..c5ba13fae39920e656de9737412804e2f5155a77 100644 (file)
@@ -163,7 +163,6 @@ struct tmio_mmc_host {
        unsigned long           last_req_ts;
        struct mutex            ios_lock;       /* protect set_ios() context */
        bool                    native_hotplug;
-       bool                    runtime_synced;
        bool                    sdio_irq_enabled;
 
        /* Mandatory callback */
index 9b6e1001e77c3acdc5c959b43bb397853f2d9eb2..86b591100f165a445a21feb276b059e1e4805308 100644 (file)
@@ -39,6 +39,7 @@
 #include <linux/module.h>
 #include <linux/pagemap.h>
 #include <linux/platform_device.h>
+#include <linux/pm_domain.h>
 #include <linux/pm_qos.h>
 #include <linux/pm_runtime.h>
 #include <linux/regulator/consumer.h>
@@ -1248,10 +1249,12 @@ int tmio_mmc_host_probe(struct tmio_mmc_host *_host)
        /* See if we also get DMA */
        tmio_mmc_request_dma(_host, pdata);
 
+       dev_pm_domain_start(&pdev->dev);
+       pm_runtime_get_noresume(&pdev->dev);
+       pm_runtime_set_active(&pdev->dev);
        pm_runtime_set_autosuspend_delay(&pdev->dev, 50);
        pm_runtime_use_autosuspend(&pdev->dev);
        pm_runtime_enable(&pdev->dev);
-       pm_runtime_get_sync(&pdev->dev);
 
        ret = mmc_add_host(mmc);
        if (ret)
@@ -1333,11 +1336,6 @@ int tmio_mmc_host_runtime_resume(struct device *dev)
 {
        struct tmio_mmc_host *host = dev_get_drvdata(dev);
 
-       if (!host->runtime_synced) {
-               host->runtime_synced = true;
-               return 0;
-       }
-
        tmio_mmc_clk_enable(host);
        tmio_mmc_hw_reset(host->mmc);