]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
dmaenegine: edma: allow pause/resume for non-cyclic mode
authorJohn Ogness <john.ogness@linutronix.de>
Mon, 27 Apr 2015 11:52:25 +0000 (13:52 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 6 May 2015 20:27:01 +0000 (22:27 +0200)
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>
drivers/dma/edma.c

index bf09db7ca9ee9c691bcb59888575d2679b4ddd3e..88853af6948967defce011b65fa88b4ae2ace5d6 100644 (file)
@@ -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;
 }