diff options
author | John Ogness <john.ogness@linutronix.de> | 2015-04-27 14:52:25 +0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-05-06 23:27:01 +0300 |
commit | 02ec6041a8dd17d9bd7dd12eb6280a6b112f83e5 (patch) | |
tree | a0dfd489c1fe9005fee785cf6ee7418c77172430 | |
parent | c2d4bb9d9387231f5e265d59600aeb6409be8e7a (diff) | |
download | linux-02ec6041a8dd17d9bd7dd12eb6280a6b112f83e5.tar.xz |
dmaenegine: edma: allow pause/resume for non-cyclic mode
The 8250_omap serial driver relies on dmaengine_pause() actually
pausing the DMA transfer. Before this patch dmaengine_pause() is
a NOP for non-cylic DMA transfers. This allowed the 8250_omap
driver to read DMA buffers while the DMA was still active,
resulting in lost serial data.
Signed-off-by: John Ogness <john.ogness@linutronix.de>
Acked-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | drivers/dma/edma.c | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/drivers/dma/edma.c b/drivers/dma/edma.c index bf09db7ca9ee..88853af69489 100644 --- a/drivers/dma/edma.c +++ b/drivers/dma/edma.c @@ -300,8 +300,7 @@ static int edma_dma_pause(struct dma_chan *chan) { struct edma_chan *echan = to_edma_chan(chan); - /* Pause/Resume only allowed with cyclic mode */ - if (!echan->edesc || !echan->edesc->cyclic) + if (!echan->edesc) return -EINVAL; edma_pause(echan->ch_num); @@ -312,10 +311,6 @@ static int edma_dma_resume(struct dma_chan *chan) { struct edma_chan *echan = to_edma_chan(chan); - /* Pause/Resume only allowed with cyclic mode */ - if (!echan->edesc->cyclic) - return -EINVAL; - edma_resume(echan->ch_num); return 0; } |