diff options
Diffstat (limited to 'drivers/mmc/host/mmci.c')
-rw-r--r-- | drivers/mmc/host/mmci.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c index c6d8b6216069..a8bbdd1c4314 100644 --- a/drivers/mmc/host/mmci.c +++ b/drivers/mmc/host/mmci.c | |||
@@ -1156,9 +1156,10 @@ static void mmci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) | |||
1156 | if (!IS_ERR(mmc->supply.vmmc)) | 1156 | if (!IS_ERR(mmc->supply.vmmc)) |
1157 | mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, 0); | 1157 | mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, 0); |
1158 | 1158 | ||
1159 | if (!IS_ERR(mmc->supply.vqmmc) && | 1159 | if (!IS_ERR(mmc->supply.vqmmc) && host->vqmmc_enabled) { |
1160 | regulator_is_enabled(mmc->supply.vqmmc)) | ||
1161 | regulator_disable(mmc->supply.vqmmc); | 1160 | regulator_disable(mmc->supply.vqmmc); |
1161 | host->vqmmc_enabled = false; | ||
1162 | } | ||
1162 | 1163 | ||
1163 | break; | 1164 | break; |
1164 | case MMC_POWER_UP: | 1165 | case MMC_POWER_UP: |
@@ -1174,12 +1175,13 @@ static void mmci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) | |||
1174 | 1175 | ||
1175 | break; | 1176 | break; |
1176 | case MMC_POWER_ON: | 1177 | case MMC_POWER_ON: |
1177 | if (!IS_ERR(mmc->supply.vqmmc) && | 1178 | if (!IS_ERR(mmc->supply.vqmmc) && !host->vqmmc_enabled) { |
1178 | !regulator_is_enabled(mmc->supply.vqmmc)) { | ||
1179 | ret = regulator_enable(mmc->supply.vqmmc); | 1179 | ret = regulator_enable(mmc->supply.vqmmc); |
1180 | if (ret < 0) | 1180 | if (ret < 0) |
1181 | dev_err(mmc_dev(mmc), | 1181 | dev_err(mmc_dev(mmc), |
1182 | "failed to enable vqmmc regulator\n"); | 1182 | "failed to enable vqmmc regulator\n"); |
1183 | else | ||
1184 | host->vqmmc_enabled = true; | ||
1183 | } | 1185 | } |
1184 | 1186 | ||
1185 | pwr |= MCI_PWR_ON; | 1187 | pwr |= MCI_PWR_ON; |