linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: linux@arm.linux.org.uk (Russell King - ARM Linux)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] serial imx.c: fix CTS trigger level lower to avoid lost chars
Date: Fri, 22 Jan 2010 11:31:30 +0000	[thread overview]
Message-ID: <20100122113130.GB10449@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <20100122110701.GA15699@shareable.org>

On Fri, Jan 22, 2010 at 11:07:01AM +0000, Jamie Lokier wrote:
> Valentin Longchamp wrote:
> > First I wanted to fix the fact that the imx serial hardware only raises 
> > the CTS pin when the oferflowing char begins to be set. I would have 
> > solved this by setting the CTS trigger value to 31 instead of 32. But 
> > when I talked with one colleague he told me about 16550A (that is 
> > present nearly everywhere) that empty their TX FIFO, so I lowered it to 16.
> 
> That seems quite peculiar because a 16550A only has a 16 byte receive
> buffer, doesn't it?  And therefore it would have trouble talking
> reliably to another 16550A if it worked like that.  I wonder what I'm
> not seeing in this picture.

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.)

  reply	other threads:[~2010-01-22 11:31 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-21 21:26 [PATCH] serial imx.c: fix CTS trigger level lower to avoid lost chars Valentin Longchamp
2010-01-21 22:06 ` Wolfram Sang
2010-01-21 22:11   ` Russell King - ARM Linux
2010-01-22 10:14     ` Valentin Longchamp
2010-01-22 11:07       ` Jamie Lokier
2010-01-22 11:31         ` Russell King - ARM Linux [this message]
2010-01-22 11:49           ` Wolfram Sang
2010-01-22 16:47             ` Jamie Lokier
2010-01-22 16:47           ` Jamie Lokier
2010-01-22 16:57             ` Russell King - ARM Linux
2010-01-22 11:58 ` Wolfram Sang
2010-01-24 10:48   ` Valentin Longchamp

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100122113130.GB10449@n2100.arm.linux.org.uk \
    --to=linux@arm.linux.org.uk \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).