serial: 8250: Refactor serial console restore-from-suspend
authorPeter Hurley <peter@hurleysoftware.com>
Fri, 25 Sep 2015 19:36:11 +0000 (15:36 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 4 Oct 2015 18:12:25 +0000 (19:12 +0100)
Move h/w reinit of serial console restore-from-suspend into
standalone helper function.

No functional change.

Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/8250/8250_port.c

index e54de0037df43330b1ace152372ed52a2d94179f..e27c761ec98499e6bb3a67b5e69ba4897b824134 100644 (file)
@@ -2802,6 +2802,27 @@ static void serial8250_console_putchar(struct uart_port *port, int ch)
        serial_port_out(port, UART_TX, ch);
 }
 
+/*
+ *     Restore serial console when h/w power-off detected
+ */
+static void serial8250_console_restore(struct uart_8250_port *up)
+{
+       struct uart_port *port = &up->port;
+       struct ktermios termios;
+       unsigned int baud, quot, frac = 0;
+
+       termios.c_cflag = port->cons->cflag;
+       if (port->state->port.tty && termios.c_cflag == 0)
+               termios.c_cflag = port->state->port.tty->termios.c_cflag;
+
+       baud = serial8250_get_baud_rate(port, &termios, NULL);
+       quot = serial8250_get_divisor(up, baud, &frac);
+
+       serial8250_set_divisor(port, baud, quot, frac);
+       serial_port_out(port, UART_LCR, up->lcr);
+       serial_port_out(port, UART_MCR, UART_MCR_DTR | UART_MCR_RTS);
+}
+
 /*
  *     Print a string to the serial port trying not to disturb
  *     any possible real use of the port...
@@ -2839,20 +2860,7 @@ void serial8250_console_write(struct uart_8250_port *up, const char *s,
 
        /* check scratch reg to see if port powered off during system sleep */
        if (up->canary && (up->canary != serial_port_in(port, UART_SCR))) {
-               struct ktermios termios;
-               unsigned int baud, quot, frac = 0;
-
-               termios.c_cflag = port->cons->cflag;
-               if (port->state->port.tty && termios.c_cflag == 0)
-                       termios.c_cflag = port->state->port.tty->termios.c_cflag;
-
-               baud = serial8250_get_baud_rate(port, &termios, NULL);
-               quot = serial8250_get_divisor(up, baud, &frac);
-
-               serial8250_set_divisor(port, baud, quot, frac);
-               serial_port_out(port, UART_LCR, up->lcr);
-               serial_port_out(port, UART_MCR, UART_MCR_DTR | UART_MCR_RTS);
-
+               serial8250_console_restore(up);
                up->canary = 0;
        }