Message ID | 20200210152053.8289-1-nicolas.ferre@microchip.com (mailing list archive) |
---|---|
State | Mainlined |
Commit | 04b5bfe3dc94e64d0590c54045815cb5183fb095 |
Headers | show |
Series | tty/serial: atmel: manage shutdown in case of RS485 or ISO7816 mode | expand |
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@microchip.com> Acked-by: Richard Genoud <richard.genoud@gmail.com> > --- > 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); > > } > >
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); }
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@microchip.com> --- drivers/tty/serial/atmel_serial.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)