Commit ea8dd8e5 authored by Soren Brinkmann's avatar Soren Brinkmann Committed by Greg Kroah-Hartman

tty: xuartps: Don't consider circular buffer when enabling transmitter

Restarting the transmitter even if the circ buffer is empty may be
necessary to push out remaining data when the port is restarted after
being stopped.

Cc: Peter Hurley <peter@hurleysoftware.com>
Signed-off-by: default avatarSoren Brinkmann <soren.brinkmann@xilinx.com>
Reviewed-by: default avatarPeter Hurley <peter@hurleysoftware.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent f0f54a80
...@@ -512,7 +512,7 @@ static void cdns_uart_start_tx(struct uart_port *port) ...@@ -512,7 +512,7 @@ static void cdns_uart_start_tx(struct uart_port *port)
{ {
unsigned int status, numbytes = port->fifosize; unsigned int status, numbytes = port->fifosize;
if (uart_circ_empty(&port->state->xmit) || uart_tx_stopped(port)) if (uart_tx_stopped(port))
return; return;
/* /*
...@@ -524,6 +524,9 @@ static void cdns_uart_start_tx(struct uart_port *port) ...@@ -524,6 +524,9 @@ static void cdns_uart_start_tx(struct uart_port *port)
status |= CDNS_UART_CR_TX_EN; status |= CDNS_UART_CR_TX_EN;
writel(status, port->membase + CDNS_UART_CR_OFFSET); writel(status, port->membase + CDNS_UART_CR_OFFSET);
if (uart_circ_empty(&port->state->xmit))
return;
while (numbytes-- && ((readl(port->membase + CDNS_UART_SR_OFFSET) & while (numbytes-- && ((readl(port->membase + CDNS_UART_SR_OFFSET) &
CDNS_UART_SR_TXFULL)) != CDNS_UART_SR_TXFULL) { CDNS_UART_SR_TXFULL)) != CDNS_UART_SR_TXFULL) {
/* Break if no more data available in the UART buffer */ /* Break if no more data available in the UART buffer */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment