aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mmc/core/core.c
diff options
context:
space:
mode:
authorAdrian Hunter <adrian.hunter@intel.com>2011-08-29 09:42:15 -0400
committerChris Ball <cjb@laptop.org>2011-10-26 16:32:08 -0400
commit67716327eec7e9d573e7cb2d806545d6f7c1a38d (patch)
tree132888322795b8ecf2d0b3b128ca850ec1eda532 /drivers/mmc/core/core.c
parent2311344c33cb8add492881900ca427b62f5a7eae (diff)
mmc: block: add eMMC hardware reset support
For cards that support hardware reset (just eMMC), try a reset and retry before returning an I/O error. However this is not done for ECC errors and is never done twice for the same operation type (READ, WRITE, DISCARD, SECURE DISCARD) until that type of operation again succeeds. Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Signed-off-by: Chris Ball <cjb@laptop.org>
Diffstat (limited to 'drivers/mmc/core/core.c')
-rw-r--r--drivers/mmc/core/core.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
index da6bd95fa4bb..9698d8a2e166 100644
--- a/drivers/mmc/core/core.c
+++ b/drivers/mmc/core/core.c
@@ -1529,7 +1529,7 @@ static int mmc_do_erase(struct mmc_card *card, unsigned int from,
1529 if (err) { 1529 if (err) {
1530 printk(KERN_ERR "mmc_erase: group start error %d, " 1530 printk(KERN_ERR "mmc_erase: group start error %d, "
1531 "status %#x\n", err, cmd.resp[0]); 1531 "status %#x\n", err, cmd.resp[0]);
1532 err = -EINVAL; 1532 err = -EIO;
1533 goto out; 1533 goto out;
1534 } 1534 }
1535 1535
@@ -1544,7 +1544,7 @@ static int mmc_do_erase(struct mmc_card *card, unsigned int from,
1544 if (err) { 1544 if (err) {
1545 printk(KERN_ERR "mmc_erase: group end error %d, status %#x\n", 1545 printk(KERN_ERR "mmc_erase: group end error %d, status %#x\n",
1546 err, cmd.resp[0]); 1546 err, cmd.resp[0]);
1547 err = -EINVAL; 1547 err = -EIO;
1548 goto out; 1548 goto out;
1549 } 1549 }
1550 1550