tty: serial: mpc5xxx: add support for mark/space parity
authorWolfram Sang <w.sang@pengutronix.de>
Mon, 27 Aug 2012 14:03:14 +0000 (16:03 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 5 Sep 2012 19:41:57 +0000 (12:41 -0700)
Tested on a custom MPC5200B-board using some fancy industrial protocol.
Verified that MPC512x has identical bits, so should work there as well.

Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
Acked-by: Anatolij Gustschin <agust@denx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/mpc52xx_uart.c

index bedac0d4c9cecf8b13c0e16dc1c69215dc843ecb..f19d04ed858629de3ebc6f64df63c375087cc8bb 100644 (file)
@@ -775,11 +775,15 @@ mpc52xx_uart_set_termios(struct uart_port *port, struct ktermios *new,
        }
 
        if (new->c_cflag & PARENB) {
+               if (new->c_cflag & CMSPAR)
+                       mr1 |= MPC52xx_PSC_MODE_PARFORCE;
+
+               /* With CMSPAR, PARODD also means high parity (same as termios) */
                mr1 |= (new->c_cflag & PARODD) ?
                        MPC52xx_PSC_MODE_PARODD : MPC52xx_PSC_MODE_PAREVEN;
-       } else
+       } else {
                mr1 |= MPC52xx_PSC_MODE_PARNONE;
-
+       }
 
        mr2 = 0;