aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/tty/serial/sh-sci.c
diff options
context:
space:
mode:
authorMuhammad Hamza Farooq <mfarooq@visteon.com>2015-09-18 13:08:30 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-10-04 17:36:10 +0100
commit1d3db608f933605d2dce44a0262ea94da3407465 (patch)
treed196722702b5f06ffff5c87469f9e1a9a988a326 /drivers/tty/serial/sh-sci.c
parentserial: sh-sci: Redirect port interrupts to CPU _only_ when DMA stops (diff)
downloadlinux-dev-1d3db608f933605d2dce44a0262ea94da3407465.tar.xz
linux-dev-1d3db608f933605d2dce44a0262ea94da3407465.zip
serial: sh-sci: Call dma_async_issue_pending when transaction completes
dmaengine_submit() will not start the DMA operation, it merely adds it to the pending queue. If the queue is no longer running, it won't be restarted until dma_async_issue_pending() is called. Signed-off-by: Muhammad Hamza Farooq <mfarooq@visteon.com> [geert: Add more description] Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/tty/serial/sh-sci.c')
-rw-r--r--drivers/tty/serial/sh-sci.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c
index 5dcd8b382e90..84c15152e111 100644
--- a/drivers/tty/serial/sh-sci.c
+++ b/drivers/tty/serial/sh-sci.c
@@ -1104,6 +1104,7 @@ static void sci_rx_dma_release(struct sci_port *s, bool enable_pio)
static void sci_dma_rx_complete(void *arg)
{
struct sci_port *s = arg;
+ struct dma_chan *chan = s->chan_rx;
struct uart_port *port = &s->port;
struct dma_async_tx_descriptor *desc;
unsigned long flags;
@@ -1137,6 +1138,8 @@ static void sci_dma_rx_complete(void *arg)
s->active_rx = s->cookie_rx[!active];
+ dma_async_issue_pending(chan);
+
dev_dbg(port->dev, "%s: cookie %d #%d, new active cookie %d\n",
__func__, s->cookie_rx[active], active, s->active_rx);
spin_unlock_irqrestore(&port->lock, flags);