From: Johan Hovold <johan@kernel.org>
To: Manivannan Sadhasivam <mani@kernel.org>
Cc: Johan Hovold <johan@kernel.org>,
gregkh@linuxfoundation.org, linux-usb@vger.kernel.org,
linux-kernel@vger.kernel.org, patong.mxl@gmail.com,
linus.walleij@linaro.org, mchehab+huawei@kernel.org,
linux-gpio@vger.kernel.org
Subject: Re: [RESEND PATCH v4 2/3] usb: serial: xr_serial: Add gpiochip support
Date: Thu, 6 Aug 2020 15:53:16 +0200 [thread overview]
Message-ID: <20200806135316.GT3634@localhost> (raw)
In-Reply-To: <20200726155223.GB12036@Mani-XPS-13-9360>
On Sun, Jul 26, 2020 at 09:22:23PM +0530, Manivannan Sadhasivam wrote:
> On Wed, Jul 01, 2020 at 03:02:06PM +0200, Johan Hovold wrote:
> > On Sun, Jun 07, 2020 at 09:53:49PM +0530, Manivannan Sadhasivam wrote:
> > > Add gpiochip support for Maxlinear/Exar USB to serial converter
> > > for controlling the available gpios.
> > >
> > > Inspired from cp210x usb to serial converter driver.
> > >
> > > Cc: Linus Walleij <linus.walleij@linaro.org>
> > > Cc: linux-gpio@vger.kernel.org
> > > Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
> > > Signed-off-by: Manivannan Sadhasivam <mani@kernel.org>
> > > ---
> > > drivers/usb/serial/xr_serial.c | 209 ++++++++++++++++++++++++++++++++-
> > > 1 file changed, 208 insertions(+), 1 deletion(-)
> > > @@ -390,6 +408,13 @@ static void xr_set_flow_mode(struct tty_struct *tty,
> > > */
> > > gpio_mode &= ~UART_MODE_GPIO_MASK;
> > > if (cflag & CRTSCTS) {
> > > +#ifdef CONFIG_GPIOLIB
> > > + /* Check if the CTS/RTS pins are occupied */
> > > + if (port_priv->pin_status[GPIO_RTS] ||
> > > + port_priv->pin_status[GPIO_CTS])
> > > + return;
> > > +#endif
> >
> > You cannot just bail out as this could leave software flow enabled etc.
> >
> > You also need to claim these pins once at open or leave them be. We
> > don't want CRTSCTS to suddenly start toggling because a pin is released
> > by gpiolib.
> >
> > That is, determine who owns each pin at open() and keep it that way till
> > close() (by setting some flags at open).
> >
> > > +
> > > dev_dbg(&port->dev, "Enabling hardware flow ctrl\n");
> > > flow = UART_FLOW_MODE_HW;
> > > gpio_mode |= UART_MODE_RTS_CTS;
> > > @@ -497,6 +522,17 @@ static int xr_tiocmset_port(struct usb_serial_port *port,
> > > u8 gpio_set = 0;
> > > u8 gpio_clr = 0;
> > >
> > > +#ifdef CONFIG_GPIOLIB
> > > + /* Check if the RTS/DTR pins are occupied */
> > > + if (set & TIOCM_RTS || clear & TIOCM_RTS)
> > > + if (port_priv->pin_status[GPIO_RTS])
> > > + return -EBUSY;
> > > +
> > > + if (set & TIOCM_DTR || clear & TIOCM_DTR)
> > > + if (port_priv->pin_status[GPIO_DTR])
> > > + return -EBUSY;
> > > +#endif
> >
> > Same here. And perhaps just ignoring the pins managed by gpiolib is
> > better (cf. gpiolib and pinctrl being orthogonal).
>
> You mean, we can just make TX,RX,CTS,RTS pins controlled only by the serial
> driver and the rest only by gpiolib?
No, I think I just meant that you shouldn't return an error here for
signals whose pins happen to be muxed for a different function (gpio).
Johan
next prev parent reply other threads:[~2020-08-06 16:49 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-07 16:23 [RESEND PATCH v4 0/3] Add support for MaxLinear/Exar USB to serial converters Manivannan Sadhasivam
2020-06-07 16:23 ` [RESEND PATCH v4 1/3] usb: serial: Add MaxLinear/Exar USB to Serial driver Manivannan Sadhasivam
2020-07-01 10:34 ` Johan Hovold
2020-07-26 15:49 ` Manivannan Sadhasivam
2020-08-06 12:33 ` Johan Hovold
2020-07-01 13:09 ` Johan Hovold
2020-06-07 16:23 ` [RESEND PATCH v4 2/3] usb: serial: xr_serial: Add gpiochip support Manivannan Sadhasivam
2020-07-01 13:02 ` Johan Hovold
2020-07-26 15:52 ` Manivannan Sadhasivam
2020-07-26 16:34 ` Andy Shevchenko
2020-07-27 4:46 ` Manivannan Sadhasivam
2020-07-27 7:50 ` Andy Shevchenko
2020-08-06 13:53 ` Johan Hovold [this message]
2020-06-07 16:23 ` [RESEND PATCH v4 3/3] usb: cdc-acm: Ignore Exar XR21V141X when serial driver is built Manivannan Sadhasivam
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=20200806135316.GT3634@localhost \
--to=johan@kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=linus.walleij@linaro.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=mani@kernel.org \
--cc=mchehab+huawei@kernel.org \
--cc=patong.mxl@gmail.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;
as well as URLs for NNTP newsgroup(s).