serial: 8250: Refactor serial console restore-from-suspend
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>
This commit is contained in:
parent
4f56f3fdca
commit
10791233e9
@ -2802,6 +2802,27 @@ static void serial8250_console_putchar(struct uart_port *port, int ch)
|
|||||||
serial_port_out(port, UART_TX, 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
|
* Print a string to the serial port trying not to disturb
|
||||||
* any possible real use of the port...
|
* 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 */
|
/* check scratch reg to see if port powered off during system sleep */
|
||||||
if (up->canary && (up->canary != serial_port_in(port, UART_SCR))) {
|
if (up->canary && (up->canary != serial_port_in(port, UART_SCR))) {
|
||||||
struct ktermios termios;
|
serial8250_console_restore(up);
|
||||||
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);
|
|
||||||
|
|
||||||
up->canary = 0;
|
up->canary = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user