tty/serial/8250: fix RS485 half-duplex RX
When in half-duplex mode RX will be disabled before TX, but not
enabled after deactivating transmitter. This patch enables
UART_IER_RLSI and UART_IER_RDI interrupts after TX is over.
Cc: Matwey V. Kornilov <matwey@sai.msu.ru>
Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
Fixes: e490c9144c
("tty: Add software emulated RS485 support for 8250")
Acked-by: Matwey V. Kornilov <matwey@sai.msu.ru>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
9220ebffda
commit
0c66940d58
|
@ -1403,9 +1403,18 @@ static void __do_stop_tx_rs485(struct uart_8250_port *p)
|
|||
/*
|
||||
* Empty the RX FIFO, we are not interested in anything
|
||||
* received during the half-duplex transmission.
|
||||
* Enable previously disabled RX interrupts.
|
||||
*/
|
||||
if (!(p->port.rs485.flags & SER_RS485_RX_DURING_TX))
|
||||
if (!(p->port.rs485.flags & SER_RS485_RX_DURING_TX)) {
|
||||
serial8250_clear_fifos(p);
|
||||
|
||||
serial8250_rpm_get(p);
|
||||
|
||||
p->ier |= UART_IER_RLSI | UART_IER_RDI;
|
||||
serial_port_out(&p->port, UART_IER, p->ier);
|
||||
|
||||
serial8250_rpm_put(p);
|
||||
}
|
||||
}
|
||||
|
||||
static void serial8250_em485_handle_stop_tx(unsigned long arg)
|
||||
|
|
Loading…
Reference in New Issue