[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