Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1391567

[PATCH v2 3/3] USB: serial: cp210x: Cleaned up CRTSCTS flag code.

Path csiph.com!aioe.org!bofh.it!news.nic.it!robomod
From Konstantin Shkolnyy <konstantin.shkolnyy@gmail.com>
Newsgroups linux.kernel
Subject [PATCH v2 3/3] USB: serial: cp210x: Cleaned up CRTSCTS flag code.
Date Sat, 30 Apr 2016 04:30:02 +0200
Message-ID <rtsPo-eM-13@gated-at.bofh.it> (permalink)
Dkim-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=UvYX1jXRYD9hyrSJGIALqDBrEC2Eh7cyO22GSbaPmXY=; b=mfSU7wm8avrtJzcFNW8IWOGYCtDJ8tu+a4i+9SUc81aPBgM8FeN4RLEJ/Q7ZY/cBA3 jVRnGM1nZemj8NAkxfVL5oxnFQh4/vp5i6ODKeXeZPMrgMflRxv2k6z5kjLUay8AG31g a3OeX402IboRhcfCjuDPD4rfWzTpVcvpkR4ZtmMbVwg21MmqcAKwaIffpN/JLCFqQgYu aro6mXHBdXAHYFnU2xxO/6SE+65whs/Oz/A1AsbxakcRVQ8fY9shD5CvwNoBL9RF0yeI B2gL7WTFMYZCZe/kJZ594FCuGfwOp5d9lIdQ9yrAMAXmBONKhj8HZBXopHvcOmD5NbtS UFqw==
X-Google-Dkim-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=UvYX1jXRYD9hyrSJGIALqDBrEC2Eh7cyO22GSbaPmXY=; b=XSCvbJnUgRgysnt4p2zahipKytdop5mScfU2C5pYY8mjrt47RmQh62yOxbA8xgH1mi LHaZ/aSgXgJZEpGIHVu5CONEpZ9Q19JJc+UWGzPVYXdoe0rM+eudSRFcFJBd303e8DPV J1rFntXypyELinvCWeTii/r3YWVgOe4tanMOPEc2+iATV4BeItqkKsKMxCeJdMgXuBjc THFcSQvaUnUHgYzi/1xTfpQyBVjOg/f0h6WBk8E8VLDOJgfXtWh+igkVH9Ra9ssSkeeC nDODbzHLzkvE+P5VjPoZotVJC4V7jSxGmoB0p1y92v1x1PmMt7oKT5EsBvQKBhH579xZ 9LBw==
X-Gm-Message-State AOPr4FUWPf/9wySxA5eTmIEaYf/3XKbnk4C/X7ulrvde/hbxVAiiZiShRDZVpc/N7uV3Sw==
X-Received by 10.202.212.196 with SMTP id l187mr10794709oig.191.1461982957819; Fri, 29 Apr 2016 19:22:37 -0700 (PDT)
X-Mailer git-send-email 1.8.4.5
Sender robomod@news.nic.it
List-ID <linux-kernel.vger.kernel.org>
X-Mailing-List linux-kernel@vger.kernel.org
Approved robomod@news.nic.it
Lines 52
Organization linux.* mail to news gateway
X-Original-Cc linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Konstantin Shkolnyy <konstantin.shkolnyy@gmail.com>
X-Original-Date Fri, 29 Apr 2016 21:22:35 -0500
X-Original-Message-ID <1461982955-19699-1-git-send-email-konstantin.shkolnyy@gmail.com>
X-Original-Sender linux-kernel-owner@vger.kernel.org
Xref csiph.com linux.kernel:1391567

Show key headers only | View raw


The CRTSCTS flag code cleared (and inconsistently) bits unrelated to
CRTSCTS functionality. It was also harder than necessary to read.

Signed-off-by: Konstantin Shkolnyy <konstantin.shkolnyy@gmail.com>
---
Changes in v2:
Improved CRTSCTS fix based on feedback. Dropped get_termios error handling.

 drivers/usb/serial/cp210x.c | 23 ++++++++++-------------
 1 file changed, 10 insertions(+), 13 deletions(-)

diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c
index da0567c..d3e1dd2 100644
--- a/drivers/usb/serial/cp210x.c
+++ b/drivers/usb/serial/cp210x.c
@@ -988,24 +988,21 @@ static void cp210x_set_termios(struct tty_struct *tty,
 		dev_dbg(dev, "%s - read ulControlHandshake=%08x ulFlowReplace=%08x\n",
 			__func__, ControlHandshake, FlowReplace);
 
+		ControlHandshake &= ~SERIAL_DSR_HANDSHAKE;
+		ControlHandshake &= ~SERIAL_DCD_HANDSHAKE;
+		ControlHandshake &= ~SERIAL_DSR_SENSITIVITY;
+		ControlHandshake &= ~SERIAL_DTR_MASK;
+		ControlHandshake |= SERIAL_DTR_ACTIVE;
 		if (cflag & CRTSCTS) {
-			ControlHandshake &= ~(SERIAL_DTR_MASK |
-				SERIAL_CTS_HANDSHAKE | SERIAL_DSR_HANDSHAKE |
-				SERIAL_DCD_HANDSHAKE | SERIAL_DSR_SENSITIVITY);
-			ControlHandshake |= SERIAL_DTR_ACTIVE;
 			ControlHandshake |= SERIAL_CTS_HANDSHAKE;
-			/* FIXME why clear bits unrelated to flow control */
-			/* FIXME why clear _XOFF_CONTINUE which is never set */
-			FlowReplace &= ~0xffffffff;
+
+			FlowReplace &= ~SERIAL_RTS_MASK;
 			FlowReplace |= SERIAL_RTS_FLOW_CTL;
 			dev_dbg(dev, "%s - flow control = CRTSCTS\n", __func__);
 		} else {
-			ControlHandshake &= ~(SERIAL_DTR_MASK |
-				SERIAL_CTS_HANDSHAKE | SERIAL_DSR_HANDSHAKE |
-				SERIAL_DCD_HANDSHAKE | SERIAL_DSR_SENSITIVITY);
-			ControlHandshake |= SERIAL_DTR_ACTIVE;
-			/* FIXME - why clear bits unrelated to flow control */
-			FlowReplace &= ~0xff;
+			ControlHandshake &= ~SERIAL_CTS_HANDSHAKE;
+
+			FlowReplace &= ~SERIAL_RTS_MASK;
 			FlowReplace |= SERIAL_RTS_ACTIVE;
 			dev_dbg(dev, "%s - flow control = NONE\n", __func__);
 		}
-- 
1.8.4.5

Back to linux.kernel | Previous | Next | Find similar | Unroll thread


Thread

[PATCH v2 3/3] USB: serial: cp210x: Cleaned up CRTSCTS flag code. Konstantin Shkolnyy <konstantin.shkolnyy@gmail.com> - 2016-04-30 04:30 +0200

csiph-web