Messages in this thread | | | Date | Tue, 05 May 2020 18:38:54 +0200 | From | Maarten Brock <> | Subject | Re: [PATCH v2 4/7] serial: 8250: Handle implementations not having TEMT interrupt using em485 |
| |
On 2020-05-02 15:49, Lukas Wunner wrote: > On Thu, Mar 26, 2020 at 12:14:19AM +0100, Heiko Stuebner wrote: >> Some 8250 ports have a TEMT interrupt but it's not a part of the 8250 >> standard, instead only available on some implementations. >> >> The current em485 implementation does not work on ports without it. >> The only chance to make it work is to loop-read on LSR register. >> >> So add UART_CAP_TEMT to mark 8250 uarts having this interrupt, >> update all current em485 users with that capability and make >> the stop_tx function loop-read on uarts not having it. > > Just to get a better understanding: According to the > Dw_apb_uart_db.pdf > databook I've found, the UART does have a "THR empty" interrupt. So > you > get an interrupt once the Transmit Holding Register (and by consequence > the FIFO) has been drained. Then what do you need a TEMT interrupt > for? > Why is the THR interrupt not sufficient?
When the Transmit Holding Register is empty, the Transmitter can still be transmitting. And the Driver Enable must be held active during transmission. I would even say it needs to held active during transmission of the stop bit, but I don't believe there is any uart that has an interrupt flag for that. And since the default state for RS485 is '1' anyway it's not that bad.
Maarten
| |