Skip to content

Commit

Permalink
tty: xuartps: Don't consider circular buffer when enabling transmitter
Browse files Browse the repository at this point in the history
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: Soren Brinkmann <soren.brinkmann@xilinx.com>
Reviewed-by: Peter Hurley <peter@hurleysoftware.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Soren Brinkmann authored and Greg Kroah-Hartman committed Feb 7, 2016
1 parent f0f54a8 commit ea8dd8e
Showing 1 changed file with 4 additions and 1 deletion.
5 changes: 4 additions & 1 deletion drivers/tty/serial/xilinx_uartps.c
Original file line number Diff line number Diff line change
Expand Up @@ -512,7 +512,7 @@ static void cdns_uart_start_tx(struct uart_port *port)
{
unsigned int status, numbytes = port->fifosize;

if (uart_circ_empty(&port->state->xmit) || uart_tx_stopped(port))
if (uart_tx_stopped(port))
return;

/*
Expand All @@ -524,6 +524,9 @@ static void cdns_uart_start_tx(struct uart_port *port)
status |= CDNS_UART_CR_TX_EN;
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) &
CDNS_UART_SR_TXFULL)) != CDNS_UART_SR_TXFULL) {
/* Break if no more data available in the UART buffer */
Expand Down

0 comments on commit ea8dd8e

Please sign in to comment.