Thread (12 messages) 12 messages, 4 authors, 2010-01-24
STALE5923d

[PATCH] serial imx.c: fix CTS trigger level lower to avoid lost chars

From: Jamie Lokier <hidden>
Date: 2010-01-22 16:47:38
Also in: linux-serial

Wolfram Sang wrote:
quoted
What you're assuming is that flow control was there to prevent overruns
on the hardware receiver.  That's not the way it works on these devices;
flow control is entirely managed in software - there is no hardware
assistance.

The flow control implemented for non-FIFO and non-hardware assisted
UARTs is purely to do with preventing the software buffer behind the
UART from overflowing - it can't prevent the device's receiver buffering
from overrunning.  (Non-FIFO devices have the shift register and a
buffer register - complete reception of a second character before the
first is read causes an overrun condition.)

If you have overruns on the receiver, that's an interrupt latency
problem and its an error that's reported to the receiver side only.

Yes, later devices have the ability in hardware to deassert RTS when
the receiver FIFO gets above a certain threshold to /help/ prevent
overruns occuring when there's high interrupt latency - but normal
system operation should still ensure that the FIFO is emptied in a
timely manner.

They also gained the ability to stop the transmitter once CTS is
deasserted, mainly because the transmitter FIFOs in these devices
is soo large (maybe 32 to 128 bytes deep.)
Russell, thanks for this explanation. Patch seems principally OK to me, then.
I agree.

-- Jamie
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help