mmc: sdhci: Reset cmd err only for sbc commands
The data complete interrupt is also used to indicate that a busy state has ended. Fix a race condition between sdhci_cmd_irq() that sets any cmd err and sdhci_data_irq() (received to indicate end of busy state) that clears cmd error. This can happen when a cmd err is set and finish tasklet is scheduled but sdhci_data_irq() executes before the tasklet. The cmd err status is critical for the tasklet handler to reset the controller's state machine. This should be cleared only when we have successfully processed a sbc command and are ready to submit the actual command next, not when there is an actual cmd err. CRs-fixed: 733074 Change-Id: I91ea2b949c34446fb629446aabb21505734e27bb Signed-off-by: Venkat Gopalakrishnan <venkatg@codeaurora.org>
This commit is contained in:
parent
8e588a1be2
commit
6be2ee021d
1 changed files with 1 additions and 2 deletions
|
@ -1106,10 +1106,9 @@ static void sdhci_finish_command(struct sdhci_host *host)
|
|||
}
|
||||
}
|
||||
|
||||
host->cmd->error = 0;
|
||||
|
||||
/* Finished CMD23, now send actual command. */
|
||||
if (host->cmd == host->mrq->sbc) {
|
||||
host->cmd->error = 0;
|
||||
host->cmd = NULL;
|
||||
sdhci_send_command(host, host->mrq->cmd);
|
||||
} else {
|
||||
|
|
Loading…
Add table
Reference in a new issue