]> rtime.felk.cvut.cz Git - lisovros/linux_canprio.git/commitdiff
mmc: tmio: calculate the native hotplug condition only once
authorGuennadi Liakhovetski <g.liakhovetski@gmx.de>
Thu, 9 Feb 2012 21:57:08 +0000 (22:57 +0100)
committerChris Ball <cjb@laptop.org>
Tue, 27 Mar 2012 16:20:15 +0000 (12:20 -0400)
The condition, whether we have to use the native TMIO card hotplug
detection interrupt, is rather complex, it is better to only calculate it
once and store in the private data.

Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: Chris Ball <cjb@laptop.org>
drivers/mmc/host/tmio_mmc.h
drivers/mmc/host/tmio_mmc_pio.c

index f96c536d130a287768c6317d1dfa9611d30297ac..8531d8d44fc139526109cc0e2141651a9548d324 100644 (file)
@@ -86,6 +86,7 @@ struct tmio_mmc_host {
        spinlock_t              lock;           /* protect host private data */
        unsigned long           last_req_ts;
        struct mutex            ios_lock;       /* protect set_ios() context */
+       bool                    native_hotplug;
 };
 
 int tmio_mmc_host_probe(struct tmio_mmc_host **host,
index 5444d533322c845cd2e1e10b0d99ba4ae0a30511..49f7f218cee1971c4752a1ed338b3e9a124afa33 100644 (file)
@@ -916,6 +916,10 @@ int __devinit tmio_mmc_host_probe(struct tmio_mmc_host **host,
        else
                mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34;
 
+       _host->native_hotplug = !(pdata->flags & TMIO_MMC_HAS_COLD_CD ||
+                                 mmc->caps & MMC_CAP_NEEDS_POLL ||
+                                 mmc->caps & MMC_CAP_NONREMOVABLE);
+
        pdata->power = false;
        pm_runtime_enable(&pdev->dev);
        ret = pm_runtime_resume(&pdev->dev);
@@ -934,9 +938,7 @@ int __devinit tmio_mmc_host_probe(struct tmio_mmc_host **host,
         *  additionally ensure that in case 2) the tmio mmc hardware stays
         *  powered on during runtime for the card detection to work.
         */
-       if (!(pdata->flags & TMIO_MMC_HAS_COLD_CD
-               || mmc->caps & MMC_CAP_NEEDS_POLL
-               || mmc->caps & MMC_CAP_NONREMOVABLE))
+       if (_host->native_hotplug)
                pm_runtime_get_noresume(&pdev->dev);
 
        tmio_mmc_clk_stop(_host);
@@ -996,9 +998,7 @@ void tmio_mmc_host_remove(struct tmio_mmc_host *host)
         * the controller, the runtime PM is suspended and pdata->power == false,
         * so, our .runtime_resume() will not try to detect a card in the slot.
         */
-       if (host->pdata->flags & TMIO_MMC_HAS_COLD_CD
-               || host->mmc->caps & MMC_CAP_NEEDS_POLL
-               || host->mmc->caps & MMC_CAP_NONREMOVABLE)
+       if (!host->native_hotplug)
                pm_runtime_get_sync(&pdev->dev);
 
        dev_pm_qos_hide_latency_limit(&pdev->dev);