diff options
author | Dimitris Lampridis <dlampridis@logikonlabs.com> | 2014-03-13 15:11:47 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-03-17 16:23:08 -0700 |
commit | 3a13884abea08a5043b98d9374486ec859d1e03a (patch) | |
tree | cbcef87f044116fcc7dbbcf5df42c7761f9f0076 | |
parent | cab53dc9e20f74fbd4776ea584ba3b21c957b1a8 (diff) | |
download | op-kernel-dev-3a13884abea08a5043b98d9374486ec859d1e03a.zip op-kernel-dev-3a13884abea08a5043b98d9374486ec859d1e03a.tar.gz |
tty/serial: omap: empty the RX FIFO at the end of half-duplex TX
Provided that the SER_RS485_RX_DURING_TX flag is not set, empty the
RX FIFO to prevent reading back the transmitted data.
Signed-off-by: Dimitris Lampridis <dlampridis@logikonlabs.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | drivers/tty/serial/omap-serial.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/tty/serial/omap-serial.c b/drivers/tty/serial/omap-serial.c index 65abea2..dd8b1a5 100644 --- a/drivers/tty/serial/omap-serial.c +++ b/drivers/tty/serial/omap-serial.c @@ -342,6 +342,12 @@ static void serial_omap_stop_tx(struct uart_port *port) if ((up->rs485.flags & SER_RS485_ENABLED) && !(up->rs485.flags & SER_RS485_RX_DURING_TX)) { + /* + * Empty the RX FIFO, we are not interested in anything + * received during the half-duplex transmission. + */ + serial_out(up, UART_FCR, up->fcr | UART_FCR_CLEAR_RCVR); + /* Re-enable RX interrupts */ up->ier |= UART_IER_RLSI | UART_IER_RDI; up->port.read_status_mask |= UART_LSR_DR; serial_out(up, UART_IER, up->ier); |