Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752478AbcDOVR2 (ORCPT ); Fri, 15 Apr 2016 17:17:28 -0400 Received: from pygmy.kinoho.net ([134.0.27.24]:50301 "EHLO pygmy.kinoho.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751747AbcDOVOe (ORCPT ); Fri, 15 Apr 2016 17:14:34 -0400 From: Grigori Goronzy To: Johan Hovold Cc: Greg Kroah-Hartman , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Grigori Goronzy Subject: [PATCH v4 08/13] USB: ch341: add support for RTS/CTS flow control Date: Fri, 15 Apr 2016 23:14:11 +0200 Message-Id: <1460754856-27908-9-git-send-email-greg@chown.ath.cx> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1460754856-27908-1-git-send-email-greg@chown.ath.cx> References: <1460754856-27908-1-git-send-email-greg@chown.ath.cx> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1128 Lines: 39 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), + 0x0101); + if (r < 0) { + dev_err(&port->dev, "%s - USB control write error (%d)\n", + __func__, r); + tty->termios.c_cflag &= ~CRTSCTS; + } + } } static void ch341_break_ctl(struct tty_struct *tty, int break_state) -- 1.9.1