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
|
* Empty the RX FIFO, we are not interested in anything
|
||||||
* received during the half-duplex transmission.
|
* 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_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)
|
static void serial8250_em485_handle_stop_tx(unsigned long arg)
|
||||||
|
|
Loading…
Reference in New Issue