serial: 8250_lpss: Extract dw8250_do_set_termios() for common use
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Tue, 5 Oct 2021 13:30:25 +0000 (16:30 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 10 Oct 2021 13:22:34 +0000 (15:22 +0200)
Some of the code currently used in dw8250_set_termios(), byt_set_termios()
may be reused by other methods in the future. Extract it to a common helper
function.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20211005133026.21488-1-andriy.shevchenko@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/8250/8250_dw.c
drivers/tty/serial/8250/8250_dwlib.c
drivers/tty/serial/8250/8250_dwlib.h
drivers/tty/serial/8250/8250_lpss.c

index b7d6c0674a8fc099dc1417204a87124f5efe4d56..5a2ff843ec5db4c219d01b25984149cb3c3bd518 100644 (file)
@@ -350,11 +350,7 @@ static void dw8250_set_termios(struct uart_port *p, struct ktermios *termios,
        }
        clk_prepare_enable(d->clk);
 
-       p->status &= ~UPSTAT_AUTOCTS;
-       if (termios->c_cflag & CRTSCTS)
-               p->status |= UPSTAT_AUTOCTS;
-
-       serial8250_do_set_termios(p, termios, old);
+       dw8250_do_set_termios(p, termios, old);
 }
 
 static void dw8250_set_ldisc(struct uart_port *p, struct ktermios *termios)
index 6d6a78eead3efcf256be4283a6a8945ff21d8879..622d3b0d89e751851bdc902b6ed7f610cde0de49 100644 (file)
@@ -77,6 +77,16 @@ static void dw8250_set_divisor(struct uart_port *p, unsigned int baud,
        serial8250_do_set_divisor(p, baud, quot, quot_frac);
 }
 
+void dw8250_do_set_termios(struct uart_port *p, struct ktermios *termios, struct ktermios *old)
+{
+       p->status &= ~UPSTAT_AUTOCTS;
+       if (termios->c_cflag & CRTSCTS)
+               p->status |= UPSTAT_AUTOCTS;
+
+       serial8250_do_set_termios(p, termios, old);
+}
+EXPORT_SYMBOL_GPL(dw8250_do_set_termios);
+
 void dw8250_setup_port(struct uart_port *p)
 {
        struct uart_8250_port *up = up_to_u8250p(p);
index 9a12953832d395f2c285a95df18bdedd540d734e..83d528e5cc21131f52f6ee0c118409f44f21490f 100644 (file)
@@ -16,4 +16,5 @@ struct dw8250_port_data {
        u8                      dlf_size;
 };
 
+void dw8250_do_set_termios(struct uart_port *p, struct ktermios *termios, struct ktermios *old);
 void dw8250_setup_port(struct uart_port *p);
index 848d81e3838c24baf87727fee78948b08ae4c9a7..398d2c4a40e3a9bfe25ac0cd8a4eed32257f8c29 100644 (file)
@@ -100,11 +100,7 @@ static void byt_set_termios(struct uart_port *p, struct ktermios *termios,
        reg |= BYT_PRV_CLK_EN | BYT_PRV_CLK_UPDATE;
        writel(reg, p->membase + BYT_PRV_CLK);
 
-       p->status &= ~UPSTAT_AUTOCTS;
-       if (termios->c_cflag & CRTSCTS)
-               p->status |= UPSTAT_AUTOCTS;
-
-       serial8250_do_set_termios(p, termios, old);
+       dw8250_do_set_termios(p, termios, old);
 }
 
 static unsigned int byt_get_mctrl(struct uart_port *port)