Skip to content

Commit

Permalink
serial: mvebu-uart: fix tx lost characters
Browse files Browse the repository at this point in the history
Fixes missing characters on kernel console at low baud rates (i.e.9600).
The driver should poll TX_RDY or TX_FIFO_EMP instead of TX_EMP to ensure
that the transmitter holding register (THR) is ready to receive a new byte.

TX_EMP tells us when it is possible to send a break sequence via
SND_BRK_SEQ. While this also indicates that both the THR and the TSR are
empty, it does not guarantee that a new byte can be written just yet.

Fixes: 3053079 ("serial: mvebu-uart: initial support for Armada-3700 serial port")
Reviewed-by: Miquel Raynal <[email protected]>
Acked-by: Gregory CLEMENT <[email protected]>
Signed-off-by: Gabriel Matni <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
  • Loading branch information
computuner authored and gregkh committed Mar 22, 2018
1 parent 7693b33 commit c685af1
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion drivers/tty/serial/mvebu-uart.c
Original file line number Diff line number Diff line change
Expand Up @@ -618,7 +618,7 @@ static void wait_for_xmitr(struct uart_port *port)
u32 val;

readl_poll_timeout_atomic(port->membase + UART_STAT, val,
(val & STAT_TX_EMP), 1, 10000);
(val & STAT_TX_RDY(port)), 1, 10000);
}

static void mvebu_uart_console_putchar(struct uart_port *port, int ch)
Expand Down

0 comments on commit c685af1

Please sign in to comment.