aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/tty/serial
diff options
context:
space:
mode:
authorDimitris Lampridis <dlampridis@logikonlabs.com>2014-03-13 09:11:47 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-03-17 19:23:08 -0400
commit3a13884abea08a5043b98d9374486ec859d1e03a (patch)
treecbcef87f044116fcc7dbbcf5df42c7761f9f0076 /drivers/tty/serial
parentcab53dc9e20f74fbd4776ea584ba3b21c957b1a8 (diff)
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>
Diffstat (limited to 'drivers/tty/serial')
-rw-r--r--drivers/tty/serial/omap-serial.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/tty/serial/omap-serial.c b/drivers/tty/serial/omap-serial.c
index 65abea2c6e47..dd8b1a5458ff 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)
342 342
343 if ((up->rs485.flags & SER_RS485_ENABLED) && 343 if ((up->rs485.flags & SER_RS485_ENABLED) &&
344 !(up->rs485.flags & SER_RS485_RX_DURING_TX)) { 344 !(up->rs485.flags & SER_RS485_RX_DURING_TX)) {
345 /*
346 * Empty the RX FIFO, we are not interested in anything
347 * received during the half-duplex transmission.
348 */
349 serial_out(up, UART_FCR, up->fcr | UART_FCR_CLEAR_RCVR);
350 /* Re-enable RX interrupts */
345 up->ier |= UART_IER_RLSI | UART_IER_RDI; 351 up->ier |= UART_IER_RLSI | UART_IER_RDI;
346 up->port.read_status_mask |= UART_LSR_DR; 352 up->port.read_status_mask |= UART_LSR_DR;
347 serial_out(up, UART_IER, up->ier); 353 serial_out(up, UART_IER, up->ier);