Messages in this thread | | | Date | Wed, 23 Nov 2022 09:50:20 +0100 | From | Michael Walle <> | Subject | Re: [PATCH 2/2] serial: atmel: don't stop the transmitter when doing PIO |
| |
Am 2022-11-23 09:27, schrieb Jiri Slaby (SUSE): > Writing ATMEL_US_TXDIS to ATMEL_US_CR makes the transmitter NOT to send > the just queued character. This means when the character is last and > uart calls ops->stop_tx(), the character is not sent at all. > > The usart datasheet is not much specific on this, it just says the > transmitter is stopped. But apparently, the character is dropped. So > we should stop the transmitter only for DMA and PDC transfers to not > send any more characters. For PIO, this is unexpected and deviates from > other drivers. In particular, the below referenced commit broke TX as > it > added a call to ->stop_tx() after the very last character written to > the > transmitter. > > So fix this by limiting the write of ATMEL_US_TXDIS to DMA transfers > only. > > Even there, I don't know if it is correctly implemented. Are all the > queued characters sent once ->start_tx() is called? Anyone tested flow > control -- be it hard (RTSCTS) or the soft (XOFF/XON) one? > > Fixes: 2d141e683e9a ("tty: serial: use uart_port_tx() helper") > Cc: Richard Genoud <richard.genoud@gmail.com> > Cc: Nicolas Ferre <nicolas.ferre@microchip.com> > Cc: Alexandre Belloni <alexandre.belloni@bootlin.com> > Cc: Claudiu Beznea <claudiu.beznea@microchip.com> > Cc: linux-arm-kernel@lists.infradead.org > Reported-by: Michael Walle <michael@walle.cc> > Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
Already merged, but: Tested-by: Michael Walle <michael@walle.cc>
Thanks, -michael
| |