Commit b1516803 authored by Guennadi Liakhovetski's avatar Guennadi Liakhovetski Committed by Paul Mundt

serial: sh-sci: Fix too early port disabling.

Currently serial ports on SH CPUs get disabled too early, because the
sci_tx_empty() routine claims to not be able to detect whether the
transmission has been completed and just always returns TIOCSER_TEMT. This
results in corrupt output of last characters if the port is not open for
reading at the same time. It is however possible to detect whether
transmission has been completed. Use the TEND bit of the status register
for this.
Signed-off-by: default avatarGuennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
parent fd2cb0ce
...@@ -799,8 +799,8 @@ static void sci_free_irq(struct sci_port *port) ...@@ -799,8 +799,8 @@ static void sci_free_irq(struct sci_port *port)
static unsigned int sci_tx_empty(struct uart_port *port) static unsigned int sci_tx_empty(struct uart_port *port)
{ {
/* Can't detect */ unsigned short status = sci_in(port, SCxSR);
return TIOCSER_TEMT; return status & SCxSR_TEND(port) ? TIOCSER_TEMT : 0;
} }
static void sci_set_mctrl(struct uart_port *port, unsigned int mctrl) static void sci_set_mctrl(struct uart_port *port, unsigned int mctrl)
......
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