Revert "mmc: msm_sdcc: Send CMD12 even if r/w command has errors"
This reverts commit 521cdcead0d66b3a99b4a64fd90f714d97ea1483.
Sending CMD12 when r/w command has errors is taken care by
MMC block layer. So there is no need of this on >= 3.0 kernel.
Change-Id: Ibf9753b837b1c702be1790b017b8da4bc828d2b5
Signed-off-by: Sujit Reddy Thumma <sthumma@codeaurora.org>
diff --git a/drivers/mmc/host/msm_sdcc.c b/drivers/mmc/host/msm_sdcc.c
index 3cffd65..57e5696 100644
--- a/drivers/mmc/host/msm_sdcc.c
+++ b/drivers/mmc/host/msm_sdcc.c
@@ -477,11 +477,7 @@
goto out;
}
msmsdcc_stop_data(host);
-
- if (mrq->data->stop && ((mrq->sbc && mrq->data->error)
- || !mrq->sbc)) {
- msmsdcc_start_command(host, mrq->data->stop, 0);
- } else if (!mrq->data->stop || mrq->cmd->error ||
+ if (!mrq->data->stop || mrq->cmd->error ||
(mrq->sbc && !mrq->data->error)) {
host->curr.mrq = NULL;
host->curr.cmd = NULL;
@@ -491,6 +487,9 @@
mmc_request_done(host->mmc, mrq);
return;
+ } else if (mrq->data->stop && ((mrq->sbc && mrq->data->error)
+ || !mrq->sbc)) {
+ msmsdcc_start_command(host, mrq->data->stop, 0);
}
}
@@ -635,10 +634,7 @@
return;
}
msmsdcc_stop_data(host);
- if (mrq->data->stop && ((mrq->sbc && mrq->data->error)
- || !mrq->sbc)) {
- msmsdcc_start_command(host, mrq->data->stop, 0);
- } else if (!mrq->data->stop || mrq->cmd->error ||
+ if (!mrq->data->stop || mrq->cmd->error ||
(mrq->sbc && !mrq->data->error)) {
host->curr.mrq = NULL;
host->curr.cmd = NULL;
@@ -648,6 +644,9 @@
mmc_request_done(host->mmc, mrq);
return;
+ } else if (mrq->data->stop && ((mrq->sbc && mrq->data->error)
+ || !mrq->sbc)) {
+ msmsdcc_start_command(host, mrq->data->stop, 0);
}
}
spin_unlock_irqrestore(&host->lock, flags);
@@ -944,7 +943,7 @@
msmsdcc_start_command_deferred(struct msmsdcc_host *host,
struct mmc_command *cmd, u32 *c)
{
- DBG(host, "op %d arg %08x flags %08x\n",
+ DBG(host, "op %02x arg %08x flags %08x\n",
cmd->opcode, cmd->arg, cmd->flags);
*c |= (cmd->opcode | MCI_CPSM_ENABLE);
@@ -1393,16 +1392,9 @@
else if (host->curr.data) { /* Non DMA */
msmsdcc_reset_and_restore(host);
msmsdcc_stop_data(host);
- if (cmd->data && cmd->data->stop)
- msmsdcc_start_command(host,
- cmd->data->stop, 0);
- else
- msmsdcc_request_end(host, cmd->mrq);
+ msmsdcc_request_end(host, cmd->mrq);
} else { /* host->data == NULL */
- if (cmd->data && cmd->data->stop) {
- msmsdcc_start_command(host,
- cmd->data->stop, 0);
- } else if (!cmd->error && host->prog_enable) {
+ if (!cmd->error && host->prog_enable) {
if (status & MCI_PROGDONE) {
host->prog_enable = 0;
msmsdcc_request_end(host, cmd->mrq);