lkml.org 
[lkml]   [2020]   [May]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [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

\
 
 \ /
  Last update: 2020-05-05 18:41    [W:0.115 / U:0.528 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site