Add CMSPAR support in set_termios callback.
Move TI_UART_ENABLE_PARITY_CHECKING setting in the upper
block to avoid doing it twice.
Delete useless TI_UART_ENABLE_PARITY_CHECKING unsetting.

Signed-off-by: Mathieu OTHACEHE <m.othac...@gmail.com>
---
 drivers/usb/serial/ti_usb_3410_5052.c | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/drivers/usb/serial/ti_usb_3410_5052.c 
b/drivers/usb/serial/ti_usb_3410_5052.c
index 168a969..50324b4 100644
--- a/drivers/usb/serial/ti_usb_3410_5052.c
+++ b/drivers/usb/serial/ti_usb_3410_5052.c
@@ -1031,19 +1031,20 @@ static void ti_set_termios(struct tty_struct *tty,
                    break;
        }
 
-       /* CMSPAR isn't supported by this driver */
-       tty->termios.c_cflag &= ~CMSPAR;
-
        if (C_PARENB(tty)) {
-               if (C_PARODD(tty)) {
-                       wflags |= TI_UART_ENABLE_PARITY_CHECKING;
-                       config->bParity = TI_UART_ODD_PARITY;
+               wflags |= TI_UART_ENABLE_PARITY_CHECKING;
+               if (C_CMSPAR(tty)) {
+                       if (C_PARODD(tty))
+                               config->bParity = TI_UART_MARK_PARITY;
+                       else
+                               config->bParity = TI_UART_SPACE_PARITY;
                } else {
-                       wflags |= TI_UART_ENABLE_PARITY_CHECKING;
-                       config->bParity = TI_UART_EVEN_PARITY;
+                       if (C_PARODD(tty))
+                               config->bParity = TI_UART_ODD_PARITY;
+                       else
+                               config->bParity = TI_UART_EVEN_PARITY;
                }
        } else {
-               wflags &= ~TI_UART_ENABLE_PARITY_CHECKING;
                config->bParity = TI_UART_NO_PARITY;
        }
 
-- 
2.9.0

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

Reply via email to