Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753726AbcD2NXl (ORCPT ); Fri, 29 Apr 2016 09:23:41 -0400 Received: from mail-lf0-f67.google.com ([209.85.215.67]:33701 "EHLO mail-lf0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753682AbcD2NXi (ORCPT ); Fri, 29 Apr 2016 09:23:38 -0400 Date: Fri, 29 Apr 2016 15:23:39 +0200 From: Johan Hovold To: Grigori Goronzy Cc: Johan Hovold , Greg Kroah-Hartman , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v4 08/13] USB: ch341: add support for RTS/CTS flow control Message-ID: <20160429132339.GL22229@localhost> References: <1460754856-27908-1-git-send-email-greg@chown.ath.cx> <1460754856-27908-9-git-send-email-greg@chown.ath.cx> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1460754856-27908-9-git-send-email-greg@chown.ath.cx> User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1555 Lines: 60 On Fri, Apr 15, 2016 at 11:14:11PM +0200, Grigori Goronzy wrote: No commit message? > v2: use correct flag variable. > v3: fix compilation > > Signed-off-by: Grigori Goronzy > --- > drivers/usb/serial/ch341.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/drivers/usb/serial/ch341.c b/drivers/usb/serial/ch341.c > index e475677..7ca21a1 100644 > --- a/drivers/usb/serial/ch341.c > +++ b/drivers/usb/serial/ch341.c > @@ -68,6 +68,7 @@ > #define CH341_REQ_READ_REG 0x95 > #define CH341_REG_BREAK1 0x05 > #define CH341_REG_LCR 0x18 > +#define CH341_REG_RTSCTS 0x27 > #define CH341_NBREAK_BITS_REG1 0x01 > > #define CH341_LCR_ENABLE_RX 0x80 > @@ -399,6 +400,16 @@ static void ch341_set_termios(struct tty_struct *tty, > > ch341_set_handshake(port->serial->dev, priv->line_control); > > + if (C_CRTSCTS(tty)) { > + r = ch341_control_out(port->serial->dev, CH341_REQ_WRITE_REG, > + CH341_REG_RTSCTS | ((uint16_t)CH341_REG_RTSCTS << 8), (u16) > + 0x0101); You should also coordinate this with B0 handling (e.g. disable hard-flow control and make sure that RTS is deasserted on ->B0 transitions). > + if (r < 0) { > + dev_err(&port->dev, "%s - USB control write error (%d)\n", > + __func__, r); Please spell out what went wrong "failed to enable flow control: %d\n" > + tty->termios.c_cflag &= ~CRTSCTS; > + } > + } What about disabling flow control? > } > > static void ch341_break_ctl(struct tty_struct *tty, int break_state) Thanks, Johan