2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-12-19 18:53:52 +08:00

mmc: msm_sdcc: Fix issue where we might not end a sucessfull request

Signed-off-by: San Mehat <san@google.com>
Signed-off-by: Daniel Walker <dwalker@codeaurora.org>
This commit is contained in:
San Mehat 2009-11-24 12:24:55 -08:00 committed by Daniel Walker
parent f4748499d3
commit b3b0ca84cf

View File

@ -208,6 +208,7 @@ msmsdcc_dma_complete_func(struct msm_dmov_cmd *cmd,
mrq = host->curr.mrq; mrq = host->curr.mrq;
BUG_ON(!mrq); BUG_ON(!mrq);
WARN_ON(!mrq->data);
if (!(result & DMOV_RSLT_VALID)) { if (!(result & DMOV_RSLT_VALID)) {
pr_err("msmsdcc: Invalid DataMover result\n"); pr_err("msmsdcc: Invalid DataMover result\n");
@ -719,14 +720,13 @@ static void
msmsdcc_handle_irq_data(struct msmsdcc_host *host, u32 status, msmsdcc_handle_irq_data(struct msmsdcc_host *host, u32 status,
void __iomem *base) void __iomem *base)
{ {
struct mmc_data *data; struct mmc_data *data = host->curr.data;
if (status & (MCI_CMDSENT | MCI_CMDRESPEND | MCI_CMDCRCFAIL | if (status & (MCI_CMDSENT | MCI_CMDRESPEND | MCI_CMDCRCFAIL |
MCI_CMDTIMEOUT) && host->curr.cmd) { MCI_CMDTIMEOUT) && host->curr.cmd) {
msmsdcc_do_cmdirq(host, status); msmsdcc_do_cmdirq(host, status);
} }
data = host->curr.data;
if (!data) if (!data)
return; return;
@ -739,7 +739,8 @@ msmsdcc_handle_irq_data(struct msmsdcc_host *host, u32 status,
msm_dmov_stop_cmd(host->dma.channel, msm_dmov_stop_cmd(host->dma.channel,
&host->dma.hdr, 0); &host->dma.hdr, 0);
else { else {
msmsdcc_stop_data(host); if (host->curr.data)
msmsdcc_stop_data(host);
if (!data->stop) if (!data->stop)
msmsdcc_request_end(host, data->mrq); msmsdcc_request_end(host, data->mrq);
else else