diff options
Diffstat (limited to 'drivers/mmc/core/sd.c')
-rw-r--r-- | drivers/mmc/core/sd.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c index baf3d5da4ccb..d0d9f90e7cdf 100644 --- a/drivers/mmc/core/sd.c +++ b/drivers/mmc/core/sd.c | |||
@@ -1058,6 +1058,14 @@ retry: | |||
1058 | mmc_set_bus_width(host, MMC_BUS_WIDTH_4); | 1058 | mmc_set_bus_width(host, MMC_BUS_WIDTH_4); |
1059 | } | 1059 | } |
1060 | } | 1060 | } |
1061 | |||
1062 | if (host->caps2 & MMC_CAP2_AVOID_3_3V && | ||
1063 | host->ios.signal_voltage == MMC_SIGNAL_VOLTAGE_330) { | ||
1064 | pr_err("%s: Host failed to negotiate down from 3.3V\n", | ||
1065 | mmc_hostname(host)); | ||
1066 | err = -EINVAL; | ||
1067 | goto free_card; | ||
1068 | } | ||
1061 | done: | 1069 | done: |
1062 | host->card = card; | 1070 | host->card = card; |
1063 | return 0; | 1071 | return 0; |
@@ -1214,7 +1222,7 @@ static int mmc_sd_runtime_resume(struct mmc_host *host) | |||
1214 | return 0; | 1222 | return 0; |
1215 | } | 1223 | } |
1216 | 1224 | ||
1217 | static int mmc_sd_reset(struct mmc_host *host) | 1225 | static int mmc_sd_hw_reset(struct mmc_host *host) |
1218 | { | 1226 | { |
1219 | mmc_power_cycle(host, host->card->ocr); | 1227 | mmc_power_cycle(host, host->card->ocr); |
1220 | return mmc_sd_init_card(host, host->card->ocr, host->card); | 1228 | return mmc_sd_init_card(host, host->card->ocr, host->card); |
@@ -1229,7 +1237,7 @@ static const struct mmc_bus_ops mmc_sd_ops = { | |||
1229 | .resume = mmc_sd_resume, | 1237 | .resume = mmc_sd_resume, |
1230 | .alive = mmc_sd_alive, | 1238 | .alive = mmc_sd_alive, |
1231 | .shutdown = mmc_sd_suspend, | 1239 | .shutdown = mmc_sd_suspend, |
1232 | .reset = mmc_sd_reset, | 1240 | .hw_reset = mmc_sd_hw_reset, |
1233 | }; | 1241 | }; |
1234 | 1242 | ||
1235 | /* | 1243 | /* |