mxs-auart: redefine AUART_LINECTRL_WLEN to accept bits count
authorJiri Slaby <jslaby@suse.cz>
Thu, 10 Jun 2021 09:02:45 +0000 (11:02 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 15 Jun 2021 12:03:26 +0000 (14:03 +0200)
It's a bit illogical to take magic constants in AUART_LINECTRL_WLEN.
Like in auart_console_get_options(), 2 means 7 bits. Switch
AUART_LINECTRL_WLEN to accept bit length, i.e. let it subtract 5 from
the parameter before doing the logic.

This will ease conversion from CSIZE to bits in mxs_auart_settermios()
in the next patch.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Link: https://lore.kernel.org/r/20210610090247.2593-2-jslaby@suse.cz
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/mxs-auart.c

index f414d6a..7b4b6bb 100644 (file)
@@ -87,7 +87,7 @@
 #define AUART_LINECTRL_BAUD_DIVFRAC(v)         (((v) & 0x3f) << 8)
 #define AUART_LINECTRL_SPS                     (1 << 7)
 #define AUART_LINECTRL_WLEN_MASK               0x00000060
-#define AUART_LINECTRL_WLEN(v)                 (((v) & 0x3) << 5)
+#define AUART_LINECTRL_WLEN(v)                 ((((v) - 5) & 0x3) << 5)
 #define AUART_LINECTRL_FEN                     (1 << 4)
 #define AUART_LINECTRL_STP2                    (1 << 3)
 #define AUART_LINECTRL_EPS                     (1 << 2)
@@ -973,16 +973,16 @@ static void mxs_auart_settermios(struct uart_port *u,
        /* byte size */
        switch (cflag & CSIZE) {
        case CS5:
-               bm = 0;
+               bm = 5;
                break;
        case CS6:
-               bm = 1;
+               bm = 6;
                break;
        case CS7:
-               bm = 2;
+               bm = 7;
                break;
        case CS8:
-               bm = 3;
+               bm = 8;
                break;
        default:
                return;
@@ -1403,7 +1403,7 @@ auart_console_get_options(struct mxs_auart_port *s, int *baud,
                        *parity = 'o';
        }
 
-       if ((lcr_h & AUART_LINECTRL_WLEN_MASK) == AUART_LINECTRL_WLEN(2))
+       if ((lcr_h & AUART_LINECTRL_WLEN_MASK) == AUART_LINECTRL_WLEN(7))
                *bits = 7;
        else
                *bits = 8;