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

Jamie Lokier jamie at shareable.org
Fri Jan 22 11:47:38 EST 2010


Wolfram Sang wrote:
> > 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



More information about the linux-arm-kernel mailing list