mmc: core: Replace MMC_CAP2_BROKEN_VOLTAGE with test for fixed regulator
authorChris Ball <cjb@laptop.org>
Wed, 19 Sep 2012 14:27:04 +0000 (22:27 +0800)
committerChris Ball <cjb@laptop.org>
Sun, 7 Oct 2012 21:41:43 +0000 (17:41 -0400)
Before this patch, we were using MMC_CAP2_BROKEN_VOLTAGE as a way to
avoid calling regulator_set_voltage() on a fixed regulator, but that's
just duplicating information that already exists -- we should test
whether the regulator is fixed directly, instead of via a capability.

This patch implements that test.  We can't reclaim the capability bit
just yet, since there are still boards in arch/arm/ that reference it;
those references can be removed now.

Reported-by: Tomasz Figa <t.figa@samsung.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
drivers/mmc/core/core.c

index 044cd016320e0a54f8bac51e163f0a603f031af0..66121633c9cdac819fe8c114eaf9477f5689fa1b 100644 (file)
@@ -1113,7 +1113,8 @@ int mmc_regulator_set_ocr(struct mmc_host *mmc,
                int             tmp;
                int             voltage;
 
-               /* REVISIT mmc_vddrange_to_ocrmask() may have set some
+               /*
+                * REVISIT mmc_vddrange_to_ocrmask() may have set some
                 * bits this regulator doesn't quite support ... don't
                 * be too picky, most cards and regulators are OK with
                 * a 0.1V range goof (it's a small error percentage).
@@ -1127,12 +1128,13 @@ int mmc_regulator_set_ocr(struct mmc_host *mmc,
                        max_uV = min_uV + 100 * 1000;
                }
 
-               /* avoid needless changes to this voltage; the regulator
-                * might not allow this operation
+               /*
+                * If we're using a fixed/static regulator, don't call
+                * regulator_set_voltage; it would fail.
                 */
                voltage = regulator_get_voltage(supply);
 
-               if (mmc->caps2 & MMC_CAP2_BROKEN_VOLTAGE)
+               if (regulator_count_voltages(supply) == 1)
                        min_uV = max_uV = voltage;
 
                if (voltage < 0)