All of lore.kernel.org
 help / color / mirror / Atom feed
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

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