aboutsummaryrefslogtreecommitdiff
path: root/drivers/mmc
diff options
context:
space:
mode:
authorSebastian Rasmussen <sebastian.rasmussen@stericsson.com>2011-04-11 11:28:13 +0200
committerSebastian RASMUSSEN <sebastian.rasmussen@stericsson.com>2011-04-11 11:35:25 +0200
commitc4fa64b56f3a6018a2995ee289b85d56b4087115 (patch)
tree1e780d2945e510bd6381d204b87af0a252fecd98 /drivers/mmc
parent08f73a0b4b22260c9ca86b53f13e663209ed0a48 (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.c15
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);
}