mmc: sd: add reset bus_ops callback
authorJohan Rudholm <johan.rudholm@axis.com>
Mon, 12 Jan 2015 14:38:06 +0000 (15:38 +0100)
committerUlf Hansson <ulf.hansson@linaro.org>
Mon, 19 Jan 2015 08:56:28 +0000 (09:56 +0100)
Enable power cycle and re-initialization of SD cards via the reset
bus_ops. Power cycling a buggy SD card sometimes helps it get back on
track.

Signed-off-by: Johan Rudholm <johanru@axis.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/core/sd.c

index 29fccdcacd6878fce71fad022da78d3013a5686e..36d5333838cb42b7d371bd19e4a4959869dc8bf8 100644 (file)
@@ -1197,6 +1197,12 @@ static int mmc_sd_power_restore(struct mmc_host *host)
        return ret;
 }
 
+static int mmc_sd_reset(struct mmc_host *host)
+{
+       mmc_power_cycle(host, host->card->ocr);
+       return mmc_sd_power_restore(host);
+}
+
 static const struct mmc_bus_ops mmc_sd_ops = {
        .remove = mmc_sd_remove,
        .detect = mmc_sd_detect,
@@ -1207,6 +1213,7 @@ static const struct mmc_bus_ops mmc_sd_ops = {
        .power_restore = mmc_sd_power_restore,
        .alive = mmc_sd_alive,
        .shutdown = mmc_sd_suspend,
+       .reset = mmc_sd_reset,
 };
 
 /*