From db1a00bfd562738d3998a65cb1eab214d20debe9 Mon Sep 17 00:00:00 2001 From: Heikki Krogerus Date: Wed, 10 Apr 2013 16:58:24 +0300 Subject: [PATCH] --- yaml --- r: 364300 b: refs/heads/master c: 5ea5b24da80322b8136cb000a7340cdc29a3d6dc h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/tty/serial/8250/8250_dma.c | 11 ++++------- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/[refs] b/[refs] index 0e01b5edf52f..9ec6a7b60a80 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 84f57d9e3685500a7447fc09a6891ce218869174 +refs/heads/master: 5ea5b24da80322b8136cb000a7340cdc29a3d6dc diff --git a/trunk/drivers/tty/serial/8250/8250_dma.c b/trunk/drivers/tty/serial/8250/8250_dma.c index b9f7fd28112e..ce2518d5dfd1 100644 --- a/trunk/drivers/tty/serial/8250/8250_dma.c +++ b/trunk/drivers/tty/serial/8250/8250_dma.c @@ -33,10 +33,8 @@ static void __dma_tx_complete(void *param) if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS) uart_write_wakeup(&p->port); - if (!uart_circ_empty(xmit) && !uart_tx_stopped(&p->port)) { + if (!uart_circ_empty(xmit) && !uart_tx_stopped(&p->port)) serial8250_tx_dma(p); - uart_write_wakeup(&p->port); - } } static void __dma_rx_complete(void *param) @@ -67,12 +65,11 @@ int serial8250_tx_dma(struct uart_8250_port *p) struct circ_buf *xmit = &p->port.state->xmit; struct dma_async_tx_descriptor *desc; - if (dma->tx_running) - return -EBUSY; + if (uart_tx_stopped(&p->port) || dma->tx_running || + uart_circ_empty(xmit)) + return 0; dma->tx_size = CIRC_CNT_TO_END(xmit->head, xmit->tail, UART_XMIT_SIZE); - if (!dma->tx_size) - return -EINVAL; desc = dmaengine_prep_slave_single(dma->txchan, dma->tx_addr + xmit->tail,