mmc: enable runtime PM by default
authorDaniel Drake <dsd@laptop.org>
Wed, 20 Jul 2011 16:39:22 +0000 (17:39 +0100)
committerChris Ball <cjb@laptop.org>
Wed, 26 Oct 2011 19:43:35 +0000 (15:43 -0400)
Now that we have improved the runtime power management powerup/powerdown
code, we believe that MMC_CAP_POWER_OFF_CARD is no longer necessary:
runtime PM should now work everywhere.

The only hard evidence for introducing MMC_CAP_POWER_OFF_CARD was the
Marvell sd8686 wifi chip, which was believed to require external gpio
manipulation which wasn't supported by some boards.

After further investigation it was realized (and confirmed by Marvell
folks) that sd8686 requirements can be fulfilled by changing the reset
sequence itself, even if no external gpio is manipulated.

For further information, see the following thread:
http://www.mail-archive.com/linux-mmc@vger.kernel.org/msg04289.html

Enable this trivially for a release or two. If no problems are reported,
we will follow up with a more extensive patch to remove this flag
altogether. If problems are reported, we can look at whitelist/blacklist
possibilities as before.

Signed-off-by: Daniel Drake <dsd@laptop.org>
Acked-by: Ohad Ben-Cohen <ohad@wizery.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
drivers/mmc/core/host.c

index 793d0a0..ca2e4f5 100644 (file)
@@ -301,6 +301,17 @@ struct mmc_host *mmc_alloc_host(int extra, struct device *dev)
        host->max_blk_size = 512;
        host->max_blk_count = PAGE_CACHE_SIZE / 512;
 
        host->max_blk_size = 512;
        host->max_blk_count = PAGE_CACHE_SIZE / 512;
 
+       /*
+        * Enable runtime power management by default. This flag was added due
+        * to runtime power management causing disruption for some users, but
+        * the power on/off code has been improved since then.
+        *
+        * We'll enable this flag by default as an experiment, and if no
+        * problems are reported, we will follow up later and remove the flag
+        * altogether.
+        */
+       host->caps = MMC_CAP_POWER_OFF_CARD;
+
        return host;
 
 free:
        return host;
 
 free: