Re: USB: serial: cp210x.c: add mark/space parity

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello.

On 09.11.2011 20:37, Roland Koebler wrote:

From: Roland Koebler<r.koebler@xxxxxxxx>

Add mark and space parity support.

Signed-off-by: Roland Koebler<r.koebler@xxxxxxxx>
---
diff -up a/drivers/usb/serial/cp210x.orig.c a/drivers/usb/serial/cp210x.c
--- a/drivers/usb/serial/cp210x.orig.c	2011-11-09 14:07:29.000000000 +0100
+++ a/drivers/usb/serial/cp210x.c	2011-11-09 19:08:46.000000000 +0100
@@ -520,18 +520,13 @@ static void cp210x_get_termios_port(stru
  		cflag |= PARENB;
  		break;
  	case BITS_PARITY_MARK:
-		dbg("%s - parity = MARK (not supported, disabling parity)",
-				__func__);
-		cflag&= ~PARENB;
-		bits&= ~BITS_PARITY_MASK;
-		cp210x_set_config(port, CP210X_SET_LINE_CTL,&bits, 2);
+		dbg("%s - parity = MARK", __func__);
+		cflag |= (PARENB|PARODD|CMSPAR);
  		break;
  	case BITS_PARITY_SPACE:
-		dbg("%s - parity = SPACE (not supported, disabling parity)",
-				__func__);
-		cflag&= ~PARENB;
-		bits&= ~BITS_PARITY_MASK;
-		cp210x_set_config(port, CP210X_SET_LINE_CTL,&bits, 2);
+		dbg("%s - parity = SPACE", __func__);
+		cflag&= ~PARODD;
+		cflag |= (PARENB|CMSPAR);
  		break;
  	default:
  		dbg("%s - Unknown parity mode, disabling parity", __func__);
@@ -588,7 +583,6 @@ static void cp210x_set_termios(struct tt
  	if (!tty)
  		return;

-	tty->termios->c_cflag&= ~CMSPAR;
  	cflag = tty->termios->c_cflag;
  	old_cflag = old_termios->c_cflag;
  	baud = cp210x_quantise_baudrate(tty_get_baud_rate(tty));
@@ -643,16 +637,27 @@ static void cp210x_set_termios(struct tt
  					"not supported by device\n");
  	}

-	if ((cflag&  (PARENB|PARODD)) != (old_cflag&  (PARENB|PARODD))) {
+        if ((cflag&  (PARENB|PARODD|CMSPAR)) !=

   You've converted tab indentation to spaces here.

+            (old_cflag&  (PARENB|PARODD|CMSPAR))) {
  		cp210x_get_config(port, CP210X_GET_LINE_CTL,&bits, 2);
  		bits&= ~BITS_PARITY_MASK;
  		if (cflag&  PARENB) {
-			if (cflag&  PARODD) {
-				bits |= BITS_PARITY_ODD;
-				dbg("%s - parity = ODD", __func__);
+			if (cflag&  CMSPAR) {
+			    if (cflag&  PARODD) {

+				    bits |= BITS_PARITY_MARK;
+				    dbg("%s - parity = MARK", __func__);
+			    } else {
+				    bits |= BITS_PARITY_SPACE;
+				    dbg("%s - parity = SPACE", __func__);
+			    }
  			} else {
-				bits |= BITS_PARITY_EVEN;
-				dbg("%s - parity = EVEN", __func__);
+			    if (cflag&  PARODD) {
+				    bits |= BITS_PARITY_ODD;
+				    dbg("%s - parity = ODD", __func__);
+			    } else {
+				    bits |= BITS_PARITY_EVEN;
+				    dbg("%s - parity = EVEN", __func__);
+			    }

Indentation should be done with tabs, not spaces. Run your patch thru scripts/checkpatch.pl and it will complain.

WBR, Sergei

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux