diff options
author | Chris Ball <cjb@laptop.org> | 2012-09-19 10:27:04 -0400 |
---|---|---|
committer | Chris Ball <cjb@laptop.org> | 2012-10-07 17:41:43 -0400 |
commit | 9cde5b7a49a88939d648c361ec938fa8a633a045 (patch) | |
tree | c51a30ca2a4d86923b6ff0743e70fb6ef22a5f2e /drivers/mmc | |
parent | f4f24ade1b24ec09981b5506e3a9a19a96055435 (diff) |
mmc: core: Replace MMC_CAP2_BROKEN_VOLTAGE with test for fixed regulator
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>
Diffstat (limited to 'drivers/mmc')
-rw-r--r-- | drivers/mmc/core/core.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c index 044cd016320e..66121633c9cd 100644 --- a/drivers/mmc/core/core.c +++ b/drivers/mmc/core/core.c | |||
@@ -1113,7 +1113,8 @@ int mmc_regulator_set_ocr(struct mmc_host *mmc, | |||
1113 | int tmp; | 1113 | int tmp; |
1114 | int voltage; | 1114 | int voltage; |
1115 | 1115 | ||
1116 | /* REVISIT mmc_vddrange_to_ocrmask() may have set some | 1116 | /* |
1117 | * REVISIT mmc_vddrange_to_ocrmask() may have set some | ||
1117 | * bits this regulator doesn't quite support ... don't | 1118 | * bits this regulator doesn't quite support ... don't |
1118 | * be too picky, most cards and regulators are OK with | 1119 | * be too picky, most cards and regulators are OK with |
1119 | * a 0.1V range goof (it's a small error percentage). | 1120 | * a 0.1V range goof (it's a small error percentage). |
@@ -1127,12 +1128,13 @@ int mmc_regulator_set_ocr(struct mmc_host *mmc, | |||
1127 | max_uV = min_uV + 100 * 1000; | 1128 | max_uV = min_uV + 100 * 1000; |
1128 | } | 1129 | } |
1129 | 1130 | ||
1130 | /* avoid needless changes to this voltage; the regulator | 1131 | /* |
1131 | * might not allow this operation | 1132 | * If we're using a fixed/static regulator, don't call |
1133 | * regulator_set_voltage; it would fail. | ||
1132 | */ | 1134 | */ |
1133 | voltage = regulator_get_voltage(supply); | 1135 | voltage = regulator_get_voltage(supply); |
1134 | 1136 | ||
1135 | if (mmc->caps2 & MMC_CAP2_BROKEN_VOLTAGE) | 1137 | if (regulator_count_voltages(supply) == 1) |
1136 | min_uV = max_uV = voltage; | 1138 | min_uV = max_uV = voltage; |
1137 | 1139 | ||
1138 | if (voltage < 0) | 1140 | if (voltage < 0) |