Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d558f7a9 authored by Venkat Gopalakrishnan's avatar Venkat Gopalakrishnan
Browse files

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: default avatarVenkat Gopalakrishnan <venkatg@codeaurora.org>
parent bba41e29
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -1230,10 +1230,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 {