[PATCH 2/2] serial: atmel: don't stop the transmitter when doing PIO

Richard Genoud richard.genoud at gmail.com
Wed Nov 23 04:46:17 PST 2022


Le 23/11/2022 à 09:50, Michael Walle a écrit :
> 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 at gmail.com>
>> Cc: Nicolas Ferre <nicolas.ferre at microchip.com>
>> Cc: Alexandre Belloni <alexandre.belloni at bootlin.com>
>> Cc: Claudiu Beznea <claudiu.beznea at microchip.com>
>> Cc: linux-arm-kernel at lists.infradead.org
>> Reported-by: Michael Walle <michael at walle.cc>
>> Signed-off-by: Jiri Slaby (SUSE) <jirislaby at kernel.org>
> 
> Already merged, but:
> Tested-by: Michael Walle <michael at walle.cc>
Acked-by: Richard Genoud <richard.genoud at gmail.com>

> 
> Thanks,
> -michael
Thanks !



More information about the linux-arm-kernel mailing list