From: Peter Hurley <peter@hurleysoftware.com>
To: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Geert Uytterhoeven <geert+renesas@glider.be>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Jiri Slaby <jslaby@suse.com>, Magnus Damm <magnus.damm@gmail.com>,
Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>,
Yoshinori Sato <ysato@users.sourceforge.jp>,
"linux-serial@vger.kernel.org" <linux-serial@vger.kernel.org>,
linux-renesas-soc@vger.kernel.org,
Linux-sh list <linux-sh@vger.kernel.org>
Subject: Re: [PATCH/RFC 5/5] serial: sh-sci: Replace SCIx_HAVE_RTSCTS by standard UPF_HARD_FLOW
Date: Wed, 23 Mar 2016 17:11:43 +0000 [thread overview]
Message-ID: <56F2CE4F.2010104@hurleysoftware.com> (raw)
In-Reply-To: <CAMuHMdWFyLAg-=y=6=CBaOUeS-WV0wFXos=jBo-MJQiGB=vXmA@mail.gmail.com>
Hi Geert,
On 03/23/2016 02:33 AM, Geert Uytterhoeven wrote:
> On Fri, Mar 18, 2016 at 8:07 PM, Peter Hurley <peter@hurleysoftware.com> wrote:
>> On 03/17/2016 06:47 AM, Geert Uytterhoeven wrote:
>>> Replace the custom SCIx_HAVE_RTSCTS flag in the
>>> plat_sci_port.capabilities field by the standard UPF_HARD_FLOW flag in
>>> the uart_port.flags and plat_sci_port.flags fields.
>>> Remove the now unused plat_sci_port.capabilities field.
>>> Legacy pllatform data can enable UPF_HARD_FLOW in plat_sci_port.flags.
>>
>> UPF_HARD_FLOW is really for indicating the h/w supports automatic
>> CTS and RTS signalling; ie., RTS is automatically de-asserted when
>> rx fifo reaches some threshold and CTS will automatically prevent
>> tx fifo output.
>>
>> There is no serial core flag for indicating the h/w supports (or does not)
>> RTS and/or CTS signalling.
>
> Sorry for not being clearer: Renesas SCIF hardware with dedicated RTS/CTS pins
> does have support for automatic RTS/CTS signalling. The driver has (unused)
> support for that (cfr. setting the SCFCR_MCE (Modem Control Enable) flag), but
> it seems to be busted when enabled.
Ok.
So looking at the code, IIUC, SCIF does not provide a way to directly
control RTS output or read CTS input when RTS/CTS is pinned (ie, not gpio).
Is that correct?
How to support autoRTS/autoCTS depends on the answer to this question.
Is there a datasheet/trm that I can review describing register layout and
uart behavior?
> If I understand it correctly:
> 1. Automatic RTS/CTS signalling should be enabled only if the user enabled it
> through termios->c_cflag & CRTSCTS,
yes
> 2. If the user didn't set CRTSCTS, the RTS output pin should be controlled by
> the serial core, through .set_mctrl(),
Not quite.
_Regardless of CRTSCTS setting_, the RTS output pin should be controlled
through .set_mctrl() method. The serial core takes CRTSCTS into account on
behalf of the driver when necessary.
> 3. Regardless of the user setting CRTSCTS or not, .get_mctrl() should report
> the current status of the CTS input pin.
yes
> Are my assumptions correct?
A couple of things.
gpio-based RTS/CTS is mutually exclusive with autoRTS/autoCTS. But I'm not
seeing any logic in these patches to prevent that.
autoCTS without a way to read CTS input level means that although transmission
stops, the driver has no way to update port->hw_stopped so the write buffer
will keep filling up until it's full @ 4k.
autoRTS without a way to override RTS output complicates throttling.
Regards,
Peter Hurley
WARNING: multiple messages have this Message-ID (diff)
From: Peter Hurley <peter@hurleysoftware.com>
To: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Geert Uytterhoeven <geert+renesas@glider.be>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Jiri Slaby <jslaby@suse.com>, Magnus Damm <magnus.damm@gmail.com>,
Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>,
Yoshinori Sato <ysato@users.sourceforge.jp>,
"linux-serial@vger.kernel.org" <linux-serial@vger.kernel.org>,
linux-renesas-soc@vger.kernel.org,
Linux-sh list <linux-sh@vger.kernel.org>
Subject: Re: [PATCH/RFC 5/5] serial: sh-sci: Replace SCIx_HAVE_RTSCTS by standard UPF_HARD_FLOW
Date: Wed, 23 Mar 2016 10:11:43 -0700 [thread overview]
Message-ID: <56F2CE4F.2010104@hurleysoftware.com> (raw)
In-Reply-To: <CAMuHMdWFyLAg-=y=6=CBaOUeS-WV0wFXos=jBo-MJQiGB=vXmA@mail.gmail.com>
Hi Geert,
On 03/23/2016 02:33 AM, Geert Uytterhoeven wrote:
> On Fri, Mar 18, 2016 at 8:07 PM, Peter Hurley <peter@hurleysoftware.com> wrote:
>> On 03/17/2016 06:47 AM, Geert Uytterhoeven wrote:
>>> Replace the custom SCIx_HAVE_RTSCTS flag in the
>>> plat_sci_port.capabilities field by the standard UPF_HARD_FLOW flag in
>>> the uart_port.flags and plat_sci_port.flags fields.
>>> Remove the now unused plat_sci_port.capabilities field.
>>> Legacy pllatform data can enable UPF_HARD_FLOW in plat_sci_port.flags.
>>
>> UPF_HARD_FLOW is really for indicating the h/w supports automatic
>> CTS and RTS signalling; ie., RTS is automatically de-asserted when
>> rx fifo reaches some threshold and CTS will automatically prevent
>> tx fifo output.
>>
>> There is no serial core flag for indicating the h/w supports (or does not)
>> RTS and/or CTS signalling.
>
> Sorry for not being clearer: Renesas SCIF hardware with dedicated RTS/CTS pins
> does have support for automatic RTS/CTS signalling. The driver has (unused)
> support for that (cfr. setting the SCFCR_MCE (Modem Control Enable) flag), but
> it seems to be busted when enabled.
Ok.
So looking at the code, IIUC, SCIF does not provide a way to directly
control RTS output or read CTS input when RTS/CTS is pinned (ie, not gpio).
Is that correct?
How to support autoRTS/autoCTS depends on the answer to this question.
Is there a datasheet/trm that I can review describing register layout and
uart behavior?
> If I understand it correctly:
> 1. Automatic RTS/CTS signalling should be enabled only if the user enabled it
> through termios->c_cflag & CRTSCTS,
yes
> 2. If the user didn't set CRTSCTS, the RTS output pin should be controlled by
> the serial core, through .set_mctrl(),
Not quite.
_Regardless of CRTSCTS setting_, the RTS output pin should be controlled
through .set_mctrl() method. The serial core takes CRTSCTS into account on
behalf of the driver when necessary.
> 3. Regardless of the user setting CRTSCTS or not, .get_mctrl() should report
> the current status of the CTS input pin.
yes
> Are my assumptions correct?
A couple of things.
gpio-based RTS/CTS is mutually exclusive with autoRTS/autoCTS. But I'm not
seeing any logic in these patches to prevent that.
autoCTS without a way to read CTS input level means that although transmission
stops, the driver has no way to update port->hw_stopped so the write buffer
will keep filling up until it's full @ 4k.
autoRTS without a way to override RTS output complicates throttling.
Regards,
Peter Hurley
next prev parent reply other threads:[~2016-03-23 17:11 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-17 13:47 [PATCH/RFC 0/5] serial: sh-sci: Hardware Flow Control Updates Geert Uytterhoeven
2016-03-17 13:47 ` Geert Uytterhoeven
2016-03-17 13:47 ` [PATCH/RFC 1/5] serial: sh-sci: Update DT binding documentation for GPIO modem lines Geert Uytterhoeven
2016-03-17 13:47 ` Geert Uytterhoeven
2016-03-17 13:47 ` Geert Uytterhoeven
2016-03-17 22:43 ` Simon Horman
2016-03-17 22:43 ` Simon Horman
2016-03-18 15:18 ` Geert Uytterhoeven
2016-03-18 15:18 ` Geert Uytterhoeven
2016-03-20 0:04 ` Rob Herring
2016-03-20 0:04 ` Rob Herring
2016-03-20 0:04 ` Rob Herring
2016-03-17 13:47 ` [PATCH/RFC 2/5] serial: sh-sci: Update DT binding documentation for dedicated RTS/CTS Geert Uytterhoeven
2016-03-17 13:47 ` Geert Uytterhoeven
2016-03-20 0:10 ` Rob Herring
2016-03-20 0:10 ` Rob Herring
2016-03-17 13:47 ` [PATCH/RFC 3/5] serial: sh-sci: Always set TIOCM_CTS in .get_mctrl() callback Geert Uytterhoeven
2016-03-17 13:47 ` Geert Uytterhoeven
2016-03-17 13:47 ` [PATCH/RFC 4/5] serial: sh-sci: Add support for GPIO-controlled modem lines Geert Uytterhoeven
2016-03-17 13:47 ` Geert Uytterhoeven
2016-03-18 8:23 ` Geert Uytterhoeven
2016-03-18 8:23 ` Geert Uytterhoeven
2016-03-17 13:47 ` [PATCH/RFC 5/5] serial: sh-sci: Replace SCIx_HAVE_RTSCTS by standard UPF_HARD_FLOW Geert Uytterhoeven
2016-03-17 13:47 ` Geert Uytterhoeven
2016-03-18 19:07 ` Peter Hurley
2016-03-18 19:07 ` Peter Hurley
2016-03-23 9:33 ` Geert Uytterhoeven
2016-03-23 9:33 ` Geert Uytterhoeven
2016-03-23 17:11 ` Peter Hurley [this message]
2016-03-23 17:11 ` Peter Hurley
2016-03-23 20:00 ` Geert Uytterhoeven
2016-03-23 20:00 ` Geert Uytterhoeven
2016-03-24 0:13 ` Peter Hurley
2016-03-24 0:13 ` Peter Hurley
2016-03-24 13:21 ` Geert Uytterhoeven
2016-03-24 13:21 ` Geert Uytterhoeven
2016-03-24 17:23 ` Peter Hurley
2016-03-24 17:23 ` Peter Hurley
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=56F2CE4F.2010104@hurleysoftware.com \
--to=peter@hurleysoftware.com \
--cc=geert+renesas@glider.be \
--cc=geert@linux-m68k.org \
--cc=gregkh@linuxfoundation.org \
--cc=jslaby@suse.com \
--cc=laurent.pinchart+renesas@ideasonboard.com \
--cc=linux-renesas-soc@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=linux-sh@vger.kernel.org \
--cc=magnus.damm@gmail.com \
--cc=ysato@users.sourceforge.jp \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.