diff options
author | Ludovic Barre <ludovic.barre@stericsson.com> | 2011-02-18 15:00:05 +0100 |
---|---|---|
committer | Sebastian RASMUSSEN <sebastian.rasmussen@stericsson.com> | 2011-04-07 16:06:30 +0200 |
commit | 8123700cb85ac44506223688e4df0f1e174237f9 (patch) | |
tree | 0cf289c4a9cc61e49aeb3ca77d655968cc4afa63 /drivers/mmc | |
parent | be851980f0f3170bb73086feb170fe46b5009c6b (diff) |
mmci: tasklet context, dma finalize
ST-Ericsson Linux next: N/A
ST-Ericsson ID: -
ST-Ericsson FOSS-OUT ID: Trivial
Change-Id: I6d2aecc11b286f04fbbd922ef3094fbeb8247890
Signed-off-by: Ludovic Barre <ludovic.barre@stericsson.com>
Change-Id: I6d2aecc11b286f04fbbd922ef3094fbeb8247890
Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/17181
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 | 31 |
1 files changed, 6 insertions, 25 deletions
diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c index 36d1391f891..4ea24d5e049 100644 --- a/drivers/mmc/host/mmci.c +++ b/drivers/mmc/host/mmci.c @@ -383,31 +383,16 @@ static int __devinit mmci_setup_dma(struct mmci_host *host) return 0; } -static void mmci_dma_data_end(struct mmci_host *host) +static void mmci_dma_abort(struct mmci_host *host) { - struct mmc_data *data = host->data; - - dma_unmap_sg(mmc_dev(host->mmc), data->sg, data->sg_len, - (data->flags & MMC_DATA_WRITE) - ? DMA_TO_DEVICE : DMA_FROM_DEVICE); - host->dma_on_current_xfer = false; -} - -static void mmci_dma_terminate(struct mmci_host *host) -{ - struct mmc_data *data = host->data; struct dma_chan *chan; dev_err(mmc_dev(host->mmc), "error during DMA transfer!\n"); - if (data->flags & MMC_DATA_READ) - chan = host->dma_rx_channel; - else - chan = host->dma_tx_channel; - dma_unmap_sg(mmc_dev(host->mmc), data->sg, data->sg_len, - (data->flags & MMC_DATA_WRITE) - ? DMA_TO_DEVICE : DMA_FROM_DEVICE); + + chan = (host->mrq->data->flags & MMC_DATA_READ) ? + host->dma_rx_channel : host->dma_tx_channel; + chan->device->device_control(chan, DMA_TERMINATE_ALL, 0); - host->dma_on_current_xfer = false; } static void mmci_dma_callback(void *arg) @@ -530,11 +515,7 @@ static inline int mmci_prepare_dma(struct mmci_host *host, { return -1; } -static inline void mmci_dma_data_end(struct mmci_host *host) -{ -} - -static inline void mmci_dma_terminate(struct mmci_host *host) +static inline void mmci_dma_abort(struct mmci_host *host) { } #endif |