tty: serial: make use of UART_LCR_WLEN() + tty_get_char_size()
authorJiri Slaby <jslaby@suse.cz>
Thu, 24 Feb 2022 09:55:55 +0000 (10:55 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 28 Feb 2022 20:49:06 +0000 (21:49 +0100)
Having a generic UART_LCR_WLEN() macro and the tty_get_char_size()
helper, we can remove all those repeated switch-cases in drivers.

Cc: Laxman Dewangan <ldewangan@nvidia.com>
Cc: Thierry Reding <thierry.reding@gmail.com>
Cc: Jonathan Hunter <jonathanh@nvidia.com>
Cc: linux-tegra@vger.kernel.org
Reviewed-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Link: https://lore.kernel.org/r/20220224095558.30929-2-jslaby@suse.cz
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/8250/8250_omap.c
drivers/tty/serial/8250/8250_port.c
drivers/tty/serial/jsm/jsm_cls.c
drivers/tty/serial/jsm/jsm_neo.c
drivers/tty/serial/omap-serial.c
drivers/tty/serial/pxa.c
drivers/tty/serial/serial-tegra.c
drivers/tty/serial/vr41xx_siu.c

index 73e5f1d..ac8bfa0 100644 (file)
@@ -357,21 +357,7 @@ static void omap_8250_set_termios(struct uart_port *port,
        unsigned char cval = 0;
        unsigned int baud;
 
-       switch (termios->c_cflag & CSIZE) {
-       case CS5:
-               cval = UART_LCR_WLEN5;
-               break;
-       case CS6:
-               cval = UART_LCR_WLEN6;
-               break;
-       case CS7:
-               cval = UART_LCR_WLEN7;
-               break;
-       default:
-       case CS8:
-               cval = UART_LCR_WLEN8;
-               break;
-       }
+       cval = UART_LCR_WLEN(tty_get_char_size(termios->c_cflag));
 
        if (termios->c_cflag & CSTOPB)
                cval |= UART_LCR_STOP;
index d30a6c1..25b84d3 100644 (file)
@@ -2605,21 +2605,7 @@ static unsigned char serial8250_compute_lcr(struct uart_8250_port *up,
 {
        unsigned char cval;
 
-       switch (c_cflag & CSIZE) {
-       case CS5:
-               cval = UART_LCR_WLEN5;
-               break;
-       case CS6:
-               cval = UART_LCR_WLEN6;
-               break;
-       case CS7:
-               cval = UART_LCR_WLEN7;
-               break;
-       default:
-       case CS8:
-               cval = UART_LCR_WLEN8;
-               break;
-       }
+       cval = UART_LCR_WLEN(tty_get_char_size(c_cflag));
 
        if (c_cflag & CSTOPB)
                cval |= UART_LCR_STOP;
index b507a2c..b280da5 100644 (file)
@@ -737,21 +737,7 @@ static void cls_param(struct jsm_channel *ch)
        if (ch->ch_c_cflag & CSTOPB)
                lcr |= UART_LCR_STOP;
 
-       switch (ch->ch_c_cflag & CSIZE) {
-       case CS5:
-               lcr |= UART_LCR_WLEN5;
-               break;
-       case CS6:
-               lcr |= UART_LCR_WLEN6;
-               break;
-       case CS7:
-               lcr |= UART_LCR_WLEN7;
-               break;
-       case CS8:
-       default:
-               lcr |= UART_LCR_WLEN8;
-               break;
-       }
+       lcr |= UART_LCR_WLEN(tty_get_char_size(ch->ch_c_cflag));
 
        ier = readb(&ch->ch_cls_uart->ier);
        uart_lcr = readb(&ch->ch_cls_uart->lcr);
index c6f927a..c4fd31d 100644 (file)
@@ -1008,21 +1008,7 @@ static void neo_param(struct jsm_channel *ch)
        if (ch->ch_c_cflag & CSTOPB)
                lcr |= UART_LCR_STOP;
 
-       switch (ch->ch_c_cflag & CSIZE) {
-       case CS5:
-               lcr |= UART_LCR_WLEN5;
-               break;
-       case CS6:
-               lcr |= UART_LCR_WLEN6;
-               break;
-       case CS7:
-               lcr |= UART_LCR_WLEN7;
-               break;
-       case CS8:
-       default:
-               lcr |= UART_LCR_WLEN8;
-       break;
-       }
+       lcr |= UART_LCR_WLEN(tty_get_char_size(ch->ch_c_cflag));
 
        ier = readb(&ch->ch_neo_uart->ier);
        uart_lcr = readb(&ch->ch_neo_uart->lcr);
index 0862941..b4e0602 100644 (file)
@@ -808,21 +808,7 @@ serial_omap_set_termios(struct uart_port *port, struct ktermios *termios,
        unsigned long flags;
        unsigned int baud, quot;
 
-       switch (termios->c_cflag & CSIZE) {
-       case CS5:
-               cval = UART_LCR_WLEN5;
-               break;
-       case CS6:
-               cval = UART_LCR_WLEN6;
-               break;
-       case CS7:
-               cval = UART_LCR_WLEN7;
-               break;
-       default:
-       case CS8:
-               cval = UART_LCR_WLEN8;
-               break;
-       }
+       cval = UART_LCR_WLEN(tty_get_char_size(termios->c_cflag));
 
        if (termios->c_cflag & CSTOPB)
                cval |= UART_LCR_STOP;
index 30b0997..b4987b4 100644 (file)
@@ -430,21 +430,7 @@ serial_pxa_set_termios(struct uart_port *port, struct ktermios *termios,
        unsigned int baud, quot;
        unsigned int dll;
 
-       switch (termios->c_cflag & CSIZE) {
-       case CS5:
-               cval = UART_LCR_WLEN5;
-               break;
-       case CS6:
-               cval = UART_LCR_WLEN6;
-               break;
-       case CS7:
-               cval = UART_LCR_WLEN7;
-               break;
-       default:
-       case CS8:
-               cval = UART_LCR_WLEN8;
-               break;
-       }
+       cval = UART_LCR_WLEN(tty_get_char_size(termios->c_cflag));
 
        if (termios->c_cflag & CSTOPB)
                cval |= UART_LCR_STOP;
index b6223fa..d942ab1 100644 (file)
@@ -1277,6 +1277,7 @@ static void tegra_uart_set_termios(struct uart_port *u,
        unsigned int baud;
        unsigned long flags;
        unsigned int lcr;
+       unsigned char char_bits;
        int symb_bit = 1;
        struct clk *parent_clk = clk_get_parent(tup->uart_clk);
        unsigned long parent_clk_rate = clk_get_rate(parent_clk);
@@ -1316,25 +1317,10 @@ static void tegra_uart_set_termios(struct uart_port *u,
                }
        }
 
+       char_bits = tty_get_char_size(termios->c_cflag);
+       symb_bit += char_bits;
        lcr &= ~UART_LCR_WLEN8;
-       switch (termios->c_cflag & CSIZE) {
-       case CS5:
-               lcr |= UART_LCR_WLEN5;
-               symb_bit += 5;
-               break;
-       case CS6:
-               lcr |= UART_LCR_WLEN6;
-               symb_bit += 6;
-               break;
-       case CS7:
-               lcr |= UART_LCR_WLEN7;
-               symb_bit += 7;
-               break;
-       default:
-               lcr |= UART_LCR_WLEN8;
-               symb_bit += 8;
-               break;
-       }
+       lcr |= UART_LCR_WLEN(char_bits);
 
        /* Stop bits */
        if (termios->c_cflag & CSTOPB) {
index 647198b..8586a56 100644 (file)
@@ -504,20 +504,7 @@ static void siu_set_termios(struct uart_port *port, struct ktermios *new,
        unsigned long flags;
 
        c_cflag = new->c_cflag;
-       switch (c_cflag & CSIZE) {
-       case CS5:
-               lcr = UART_LCR_WLEN5;
-               break;
-       case CS6:
-               lcr = UART_LCR_WLEN6;
-               break;
-       case CS7:
-               lcr = UART_LCR_WLEN7;
-               break;
-       default:
-               lcr = UART_LCR_WLEN8;
-               break;
-       }
+       lcr = UART_LCR_WLEN(tty_get_char_size(c_cflag));
 
        if (c_cflag & CSTOPB)
                lcr |= UART_LCR_STOP;