From: Geert Uytterhoeven <geert+renesas@glider.be> To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Jiri Slaby <jslaby@suse.com>, Peter Hurley <peter@hurleysoftware.com> Cc: 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-renesas-soc@vger.kernel.org, linux-sh@vger.kernel.org, linux-kernel@vger.kernel.org, Geert Uytterhoeven <geert+renesas@glider.be> Subject: [PATCH v2 09/11] serial: sh-sci: Add pin initialization for SCIFA/SCIFB Date: Fri, 29 Apr 2016 12:58:32 +0000 [thread overview] Message-ID: <1461934714-18681-10-git-send-email-geert+renesas@glider.be> (raw) In-Reply-To: <1461934714-18681-1-git-send-email-geert+renesas@glider.be> Before, the driver relied on initialization by the boot loader, or by implicit reset state. Note that unlike on (H)SCIF, the RTS/CTS bits exist only if dedicated RTS/CTS pins are available, which depends on the SoC and UART instance. Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> --- v2: - New. --- drivers/tty/serial/sh-sci.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c index c46999f20917964e..b9d027af0f3e71f6 100644 --- a/drivers/tty/serial/sh-sci.c +++ b/drivers/tty/serial/sh-sci.c @@ -712,7 +712,21 @@ static void sci_init_pins(struct uart_port *port, unsigned int cflag) return; } - if (sci_getreg(port, SCSPTR)->size) { + if (port->type = PORT_SCIFA || port->type = PORT_SCIFB) { + u16 ctrl = serial_port_in(port, SCPCR); + + /* Enable RXD and TXD pin functions */ + ctrl &= ~(SCPCR_RXDC | SCPCR_TXDC); + if (to_sci_port(port)->cfg->capabilities & SCIx_HAVE_RTSCTS) { + /* RTS# is output, driven 1 */ + ctrl |= SCPCR_RTSC; + serial_port_out(port, SCPDR, + serial_port_in(port, SCPDR) | SCPDR_RTSD); + /* Enable CTS# pin function */ + ctrl &= ~SCPCR_CTSC; + } + serial_port_out(port, SCPCR, ctrl); + } else if (sci_getreg(port, SCSPTR)->size) { u16 status = serial_port_in(port, SCSPTR); /* RTS# is output, driven 1 */ -- 1.9.1
WARNING: multiple messages have this Message-ID (diff)
From: Geert Uytterhoeven <geert+renesas@glider.be> To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Jiri Slaby <jslaby@suse.com>, Peter Hurley <peter@hurleysoftware.com> Cc: 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-renesas-soc@vger.kernel.org, linux-sh@vger.kernel.org, linux-kernel@vger.kernel.org, Geert Uytterhoeven <geert+renesas@glider.be> Subject: [PATCH v2 09/11] serial: sh-sci: Add pin initialization for SCIFA/SCIFB Date: Fri, 29 Apr 2016 14:58:32 +0200 [thread overview] Message-ID: <1461934714-18681-10-git-send-email-geert+renesas@glider.be> (raw) In-Reply-To: <1461934714-18681-1-git-send-email-geert+renesas@glider.be> Before, the driver relied on initialization by the boot loader, or by implicit reset state. Note that unlike on (H)SCIF, the RTS/CTS bits exist only if dedicated RTS/CTS pins are available, which depends on the SoC and UART instance. Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> --- v2: - New. --- drivers/tty/serial/sh-sci.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c index c46999f20917964e..b9d027af0f3e71f6 100644 --- a/drivers/tty/serial/sh-sci.c +++ b/drivers/tty/serial/sh-sci.c @@ -712,7 +712,21 @@ static void sci_init_pins(struct uart_port *port, unsigned int cflag) return; } - if (sci_getreg(port, SCSPTR)->size) { + if (port->type == PORT_SCIFA || port->type == PORT_SCIFB) { + u16 ctrl = serial_port_in(port, SCPCR); + + /* Enable RXD and TXD pin functions */ + ctrl &= ~(SCPCR_RXDC | SCPCR_TXDC); + if (to_sci_port(port)->cfg->capabilities & SCIx_HAVE_RTSCTS) { + /* RTS# is output, driven 1 */ + ctrl |= SCPCR_RTSC; + serial_port_out(port, SCPDR, + serial_port_in(port, SCPDR) | SCPDR_RTSD); + /* Enable CTS# pin function */ + ctrl &= ~SCPCR_CTSC; + } + serial_port_out(port, SCPCR, ctrl); + } else if (sci_getreg(port, SCSPTR)->size) { u16 status = serial_port_in(port, SCSPTR); /* RTS# is output, driven 1 */ -- 1.9.1
next prev parent reply other threads:[~2016-04-29 12:58 UTC|newest] Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top 2016-04-29 12:58 [PATCH v2 00/11] serial: sh-sci: Hardware Flow Control Updates Geert Uytterhoeven 2016-04-29 12:58 ` Geert Uytterhoeven 2016-04-29 12:58 ` Geert Uytterhoeven 2016-04-29 12:58 ` [PATCH v2 01/11] serial: sh-sci: Update DT binding documentation for GPIO modem lines Geert Uytterhoeven 2016-04-29 12:58 ` Geert Uytterhoeven 2016-04-29 12:58 ` [PATCH v2 02/11] serial: sh-sci: Update DT binding documentation for dedicated RTS/CTS Geert Uytterhoeven 2016-04-29 12:58 ` Geert Uytterhoeven 2016-05-03 18:01 ` Rob Herring 2016-05-03 18:01 ` Rob Herring 2016-04-29 12:58 ` [PATCH v2 03/11] serial: sh-sci: Always set TIOCM_CTS in .get_mctrl() callback Geert Uytterhoeven 2016-04-29 12:58 ` Geert Uytterhoeven 2016-04-29 15:38 ` Peter Hurley 2016-04-29 15:38 ` Peter Hurley 2016-04-29 12:58 ` [PATCH v2 04/11] serial: sh-sci: Add support for GPIO-controlled modem lines Geert Uytterhoeven 2016-04-29 12:58 ` Geert Uytterhoeven 2016-04-29 15:39 ` Peter Hurley 2016-04-29 15:39 ` Peter Hurley 2016-04-29 12:58 ` [PATCH v2 05/11] serial: sh-sci: Do not open-code sci_getreg() Geert Uytterhoeven 2016-04-29 12:58 ` Geert Uytterhoeven 2016-04-29 15:39 ` Peter Hurley 2016-04-29 15:39 ` Peter Hurley 2016-04-29 12:58 ` [PATCH v2 06/11] serial: sh-sci: Add more Serial Port Register documentation Geert Uytterhoeven 2016-04-29 12:58 ` Geert Uytterhoeven 2016-04-29 15:41 ` Peter Hurley 2016-04-29 15:41 ` Peter Hurley 2016-04-29 12:58 ` [PATCH v2 07/11] serial: sh-sci: Add more Serial Port Control/Data " Geert Uytterhoeven 2016-04-29 12:58 ` Geert Uytterhoeven 2016-04-29 15:42 ` Peter Hurley 2016-04-29 15:42 ` Peter Hurley 2016-04-29 12:58 ` [PATCH v2 08/11] serial: sh-sci: Correct pin initialization on (H)SCIF Geert Uytterhoeven 2016-04-29 12:58 ` Geert Uytterhoeven 2016-04-29 15:59 ` Peter Hurley 2016-04-29 15:59 ` Peter Hurley 2016-04-29 20:00 ` Geert Uytterhoeven 2016-04-29 20:00 ` Geert Uytterhoeven 2016-04-29 12:58 ` Geert Uytterhoeven [this message] 2016-04-29 12:58 ` [PATCH v2 09/11] serial: sh-sci: Add pin initialization for SCIFA/SCIFB Geert Uytterhoeven 2016-04-29 12:58 ` [PATCH v2 10/11] serial: sh-sci: Fix support for hardware-assisted RTS/CTS Geert Uytterhoeven 2016-04-29 12:58 ` Geert Uytterhoeven 2016-04-29 12:58 ` [PATCH v2 11/11] serial: sh-sci: Add DT support for dedicated RTS/CTS Geert Uytterhoeven 2016-04-29 12:58 ` Geert Uytterhoeven
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=1461934714-18681-10-git-send-email-geert+renesas@glider.be \ --to=geert+renesas@glider.be \ --cc=gregkh@linuxfoundation.org \ --cc=jslaby@suse.com \ --cc=laurent.pinchart+renesas@ideasonboard.com \ --cc=linux-kernel@vger.kernel.org \ --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=peter@hurleysoftware.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: linkBe 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.