Le 10/02/2020 à 16:20, Nicolas Ferre a écrit : > In atmel_shutdown() we call atmel_stop_rx() and atmel_stop_tx() functions. > Prevent the rx restart that is implemented in RS485 or ISO7816 modes when > calling atmel_stop_tx() by using the atomic information tasklet_shutdown > that is already in place for this purpose. > > Fixes: 98f2082c3ac4 ("tty/serial: atmel: enforce tasklet init and termination sequences") > Signed-off-by: Nicolas Ferre <nicolas.ferre@xxxxxxxxxxxxx> Acked-by: Richard Genoud <richard.genoud@xxxxxxxxx> > --- > drivers/tty/serial/atmel_serial.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/tty/serial/atmel_serial.c b/drivers/tty/serial/atmel_serial.c > index c15c398c88a9..a39c87a7c2e1 100644 > --- a/drivers/tty/serial/atmel_serial.c > +++ b/drivers/tty/serial/atmel_serial.c > @@ -570,7 +570,8 @@ static void atmel_stop_tx(struct uart_port *port) > atmel_uart_writel(port, ATMEL_US_IDR, atmel_port->tx_done_mask); > > if (atmel_uart_is_half_duplex(port)) > - atmel_start_rx(port); > + if (!atomic_read(&atmel_port->tasklet_shutdown)) > + atmel_start_rx(port); > > } > >