diff options
author | Sebastian Rasmussen <sebastian.rasmussen@stericsson.com> | 2011-04-11 11:28:13 +0200 |
---|---|---|
committer | Sebastian RASMUSSEN <sebastian.rasmussen@stericsson.com> | 2011-04-11 11:35:25 +0200 |
commit | c4fa64b56f3a6018a2995ee289b85d56b4087115 (patch) | |
tree | 1e780d2945e510bd6381d204b87af0a252fecd98 /drivers/mmc | |
parent | 08f73a0b4b22260c9ca86b53f13e663209ed0a48 (diff) |
Revert "mmci: dma irq context, removes and delays finalize in tasklet"
This reverts commit cc21061ee4be97fec29cba762411d4948fc2f008.
Change-Id: Ic07ba868c1f24eadbb47ad27a45ebb74078fc7d0
Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/20569
Reviewed-by: Sebastian RASMUSSEN <sebastian.rasmussen@stericsson.com>
Tested-by: Sebastian RASMUSSEN <sebastian.rasmussen@stericsson.com>
Diffstat (limited to 'drivers/mmc')
-rw-r--r-- | drivers/mmc/host/mmci.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c index 08a3de80466..29c86cdb2d5 100644 --- a/drivers/mmc/host/mmci.c +++ b/drivers/mmc/host/mmci.c @@ -466,13 +466,22 @@ static void mmci_dma_callback(void *arg) unsigned long flags; struct mmci_host *host = arg; - dev_dbg(mmc_dev(host->mmc), "DMA transfer done!\n"); + dev_vdbg(mmc_dev(host->mmc), "DMA transfer done!\n"); spin_lock_irqsave(&host->lock, flags); - host->dma_complete = COMPLETION_DMA_XFERFINISH; + mmci_dma_data_end(host); + + /* Mark that the entire data is transferred for this dma transfer. */ + host->size = 0; + + /* + * Make sure MMCI has received MCI_DATAEND before + * completing the data transfer. + */ + if (host->dataend) + mmci_complete_data_xfer(host); - tasklet_schedule(&host->mmci_tasklet); spin_unlock_irqrestore(&host->lock, flags); } |