Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0c66940d authored by Yegor Yefremov's avatar Yegor Yefremov Committed by Greg Kroah-Hartman
Browse files

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: default avatarYegor Yefremov <yegorslists@googlemail.com>
Fixes: e490c914 ("tty: Add software emulated RS485 support for 8250")
Acked-by: default avatarMatwey V. Kornilov <matwey@sai.msu.ru>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 9220ebff
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -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)