public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Russell King <rmk+lkml@arm.linux.org.uk>
To: linux@horizon.com
Cc: paulkf@microgate.com, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] SIIG 8-port serial boards support
Date: Fri, 17 Feb 2006 22:39:39 +0000	[thread overview]
Message-ID: <20060217223938.GA24170@flint.arm.linux.org.uk> (raw)
In-Reply-To: <20060217222529.14155.qmail@science.horizon.com>

On Fri, Feb 17, 2006 at 05:25:29PM -0500, linux@horizon.com wrote:
> >> - conventional RTS/CTS
> > RTS active = ready to receive
> > CTS active = allowed to send
> > 
> >> - alternative RTS/CTS
> > RTS active = on before send, off after send
> > CTS active = allowed to send
> > 
> >> - RS485
> > RTS active = on before send, off after send (RTS enables driver)
> > CTS ignored (2 wire mode, no CTS)
> > 
> > So maybe the extra control fields would be:
> > CRTSONTX - RTS on before send, off after send
> > CTXONCTS - wait for CTS before sending
> 
> As someone who's actually used both kinds of modems, here are
> the issues:
> 
> - For RS-485, you have a half-duplex wire, and the response is triggered
>   by the serial data.  And some of those industrial controllers respond in
>   less than a character time.  You MUST disable the transmitter promptly
>   when finished sending so you can hear the response.
> 
>   It's also helpful if the receiver is disabled while the transmitter
>   is enabled, but that's negotible.
> 
> - For Classic half-duplex RTS/CTS, the DTE (computer) must always accept
>   data, but raises RTS when it wants to send.  When it gets CTS, it's
>   allowed to actually send.  There are still single-frequency VHF radio
>   modems floating around that work this way.  When a modem receives
>   RTS and is not receiving a carrier (CD is deasserted), it enables its
>   transmitter, and waits a programmed receiver-acquisition delay before
>   asserting CTS.
> 
> Both of these are variants on the same theme, and I'd suggest expressing
> them with one additional bit along with the existing CRTSCTS.  I'll call
> it CRTSHDX (RTS half-duplex).  It means "assert RTS when we have data
> to send, and deassert it when we don't".  When it's not set, RTS is
> asserted when we can accept data and deasserted when we can't.
> 
> All four combinations are sensible:
> 
> CRTSCTS	CRTSHDX	Handshaking
> off	off	None.  (Computer might as well send RTS< but ignores CTS)
> on	off	Full-duplex RTS/CTS
> off	on	RS-485.  CTS ignored, RTS enables transmitter.
> on	on	RS-232 half-duplex.  RTS is request, CTS is grant.
> 
> The upshot is that CRTSCTS controls whether CTS is listened to, and the
> new CRTSHDX controls the interpretation of RTS.  For a three-wire hookup,
> CRTSRCS must be off and CRTSHDX has no real effect.

We need to preserve CRTSCTS off = no modem control activity - I'm
sure things like old serial mice do not take kindly to having the
modem control lines changing state, especially the ones they use to
power themselves.

Also, !CRTSCTS is most likely the state used by any existing userspace
RS485 implementations which would be using TIOCMBIC/TIOCMBIS to
manipulate the RTS signal, so having RTS manipulated in this state
would be an undesirable change of behaviour.

Hence, I'm very much in favour of having the default flow control
method to preserve in as many ways as possible existing behaviour
for CRTSCTS.

-- 
Russell King
 Linux kernel    2.6 ARM Linux   - http://www.arm.linux.org.uk/
 maintainer of:  2.6 Serial core

  reply	other threads:[~2006-02-17 22:43 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-02-17 22:25 [PATCH] SIIG 8-port serial boards support linux
2006-02-17 22:39 ` Russell King [this message]
2006-02-17 23:11   ` Paul Fulghum
  -- strict thread matches above, loose matches on Subject: below --
2006-02-17 20:32 Kilau, Scott
2006-02-17 21:26 ` Russell King
2006-01-24  8:25 Andrey Panin
2006-01-24 21:01 ` Russell King
2006-02-02 10:26   ` Russell King
2006-02-02 13:27     ` Andrey Panin
     [not found]       ` <20060202201734.GA17329@flint.arm.linux.org.uk>
2006-02-03  9:13         ` Andrey Panin
2006-02-03  9:24           ` Russell King
2006-02-17 11:39             ` Andrey Panin
2006-02-17 20:02               ` Russell King
2006-02-17 20:14                 ` Russell King
2006-02-17 21:27                 ` Paul Fulghum
2006-02-17 21:39                   ` Russell King
2006-02-17 21:52                     ` Paul Fulghum

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=20060217223938.GA24170@flint.arm.linux.org.uk \
    --to=rmk+lkml@arm.linux.org.uk \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@horizon.com \
    --cc=paulkf@microgate.com \
    /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