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


Groups > linux.kernel > #1393879

[PATCH v4 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 v4 3/3] USB: serial: cp210x: Cleaned up CRTSCTS flag code.
Date Wed, 04 May 2016 03:00:02 +0200
Message-ID <ruTku-1Li-9@gated-at.bofh.it> (permalink)
X-Original-To johan@kernel.org
Dkim-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=ib6wWmvu9yoZJHSZYGY+e8nX8Lw6WI4cgle3Z4mQRz8=; b=O34Rx+eIXc5tmF2FykiGExK98gUfbRUiKQio1BHthlSxVl2HYFU3bYkhhW7iBd62kC lNbem3vW2c91zVwhPpKi96hXOum9Zml1sITAUD0BH3gL3zBgcH3+G2tMYMXw/mLdRVGC DJBuEHzyYc+P29DnIKcOa5jdjfSWWXczu8efdQ3mEXlvKiMEgWFnXmHSAvFSIdIrvQ7g 6EqARTWQi0O9ps/4y00yM3emp34KchLHdbMX7DEVKL6KBKtgi9vE2elnGyS0V052F9jg Vg2OVl356LIoDNQ3ROLmODzpOkiHMWWYmCEU14aDOIwAliGjNCwc4l2cWg84duevXx2Z Mn9Q==
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=ib6wWmvu9yoZJHSZYGY+e8nX8Lw6WI4cgle3Z4mQRz8=; b=gILEOn9UbHl0N4VOmVffRrLbHVTjHxeSKv1fHC3pzm2qwHR9Ceja6+ksdwu8PPV1eC 6IylnZeNbAL8mk1Ahwr/NMWNzxwH1lzBSvXY+VdKGMSIj5Zu9LyAJFjL/uExp37FtdbM G5zxzTMNujpAoDUJPYuNUrmrYGEE6vukC0UwCdOe0nH5oSb+oeE9zyutfpe9q9jMoola yuhelJIifojXdkvP7k/AeXf5Q0rRFWfM5hIbjnLE5EtNM3+Thwt3BfKHZhe9RUyFYpv5 4dCYr2oe6ZWPNgQip0tZdcKzVN9y0wCyE6/Ce8CwlBf5Bk7N0dP2jmP7nE6r/0Bo8IzY tfWg==
X-Gm-Message-State AOPr4FUuW1vZY1Yuhwt28kyZgTKHfg+YTQvZhrnjHRACt3vZZnaTmn7X/MfYyOuLifGptA==
X-Received by 10.157.9.247 with SMTP id 52mr2917231otz.126.1462323155476; Tue, 03 May 2016 17:52:35 -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 66
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 Tue, 3 May 2016 19:52:35 -0500
X-Original-Message-ID <1462323155-27549-1-git-send-email-konstantin.shkolnyy@gmail.com>
X-Original-Sender linux-kernel-owner@vger.kernel.org
Xref csiph.com linux.kernel:1393879

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>
---
v4:
Same series of patches, fixed names and defines by feedback.
v3:
Regenerated the patches correctly against the latest usb-next branch.
v2
Improved CRTSCTS fix by feedback. Dropped get_termios error handling fix.

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

diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c
index 9857d0c..2d43716 100644
--- a/drivers/usb/serial/cp210x.c
+++ b/drivers/usb/serial/cp210x.c
@@ -995,34 +995,22 @@ static void cp210x_set_termios(struct tty_struct *tty,
 		dev_dbg(dev, "%s - read ulControlHandshake=0x%08x, ulFlowReplace=0x%08x\n",
 			__func__, ctl_hs, flow_repl);
 
+		ctl_hs &= ~CP210X_SERIAL_DSR_HANDSHAKE;
+		ctl_hs &= ~CP210X_SERIAL_DCD_HANDSHAKE;
+		ctl_hs &= ~CP210X_SERIAL_DSR_SENSITIVITY;
+		ctl_hs &= ~CP210X_SERIAL_DTR_MASK;
+		ctl_hs |= CP210X_SERIAL_DTR_SHIFT(CP210X_SERIAL_DTR_ACTIVE);
 		if (cflag & CRTSCTS) {
-			ctl_hs &= ~(CP210X_SERIAL_DTR_MASK |
-					CP210X_SERIAL_CTS_HANDSHAKE |
-					CP210X_SERIAL_DSR_HANDSHAKE |
-					CP210X_SERIAL_DCD_HANDSHAKE |
-					CP210X_SERIAL_DSR_SENSITIVITY);
-			ctl_hs |= CP210X_SERIAL_DTR_SHIFT(
-					CP210X_SERIAL_DTR_ACTIVE);
 			ctl_hs |= CP210X_SERIAL_CTS_HANDSHAKE;
-			/*
-			 * FIXME: Why clear bits unrelated to flow control.
-			 * Why clear CP210X_SERIAL_XOFF_CONTINUE which is
-			 * never set
-			 */
-			flow_repl = 0;
+
+			flow_repl &= ~CP210X_SERIAL_RTS_MASK;
 			flow_repl |= CP210X_SERIAL_RTS_SHIFT(
 					CP210X_SERIAL_RTS_FLOW_CTL);
 			dev_dbg(dev, "%s - flow control = CRTSCTS\n", __func__);
 		} else {
-			ctl_hs &= ~(CP210X_SERIAL_DTR_MASK |
-					CP210X_SERIAL_CTS_HANDSHAKE |
-					CP210X_SERIAL_DSR_HANDSHAKE |
-					CP210X_SERIAL_DCD_HANDSHAKE |
-					CP210X_SERIAL_DSR_SENSITIVITY);
-			ctl_hs |= CP210X_SERIAL_DTR_SHIFT(
-					CP210X_SERIAL_DTR_ACTIVE;
-			/* FIXME: Why clear bits unrelated to flow control */
-			((u8)flow_repl) = 0;
+			ctl_hs &= ~CP210X_SERIAL_CTS_HANDSHAKE;
+
+			flow_repl &= ~CP210X_SERIAL_RTS_MASK;
 			flow_repl |= CP210X_SERIAL_RTS_SHIFT(
 					CP210X_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 v4 3/3] USB: serial: cp210x: Cleaned up CRTSCTS flag code. Konstantin Shkolnyy <konstantin.shkolnyy@gmail.com> - 2016-05-04 03:00 +0200

csiph-web