From cec77496866e071c1be5b9c2ed549415caccc8ad Mon Sep 17 00:00:00 2001 From: Deepak Saxena Date: Sat, 19 Sep 2009 13:13:33 -0700 Subject: [PATCH] --- yaml --- r: 163855 b: refs/heads/master c: ba15ab0e8de0d4439a91342ad52d55ca9e313f3d h: refs/heads/master i: 163853: be187e76da525f1c375692cdd1e5cb4611487e32 163851: c4ac6053e96cd49b2ddafe30f73bf0ebd98d4407 163847: 901bb70765bdb0d928d8f51c2a6d59f4ef6ead7d 163839: 820908f85d8f79136026e16e4e366ec7895ebcf6 v: v3 --- [refs] | 2 +- trunk/drivers/serial/serial_core.c | 32 +++++++++++++++++------------- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/[refs] b/[refs] index 986fbea67562..f02d31605271 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7b01478f97a671c97fad9254aa91892209b018b5 +refs/heads/master: ba15ab0e8de0d4439a91342ad52d55ca9e313f3d diff --git a/trunk/drivers/serial/serial_core.c b/trunk/drivers/serial/serial_core.c index 3fd0134d36bf..2514d00c0f6f 100644 --- a/trunk/drivers/serial/serial_core.c +++ b/trunk/drivers/serial/serial_core.c @@ -2068,11 +2068,29 @@ int uart_resume_port(struct uart_driver *drv, struct uart_port *uport) struct tty_port *port = &state->port; struct device *tty_dev; struct uart_match match = {uport, drv}; + struct ktermios termios; mutex_lock(&port->mutex); if (!console_suspend_enabled && uart_console(uport)) { /* no need to resume serial console, it wasn't suspended */ + /* + * First try to use the console cflag setting. + */ + memset(&termios, 0, sizeof(struct ktermios)); + termios.c_cflag = uport->cons->cflag; + /* + * If that's unset, use the tty termios setting. + */ + if (termios.c_cflag == 0) + termios = *state->port.tty->termios; + else { + termios.c_ispeed = termios.c_ospeed = + tty_termios_input_baud_rate(&termios); + termios.c_ispeed = termios.c_ospeed = + tty_termios_baud_rate(&termios); + } + uport->ops->set_termios(uport, &termios, NULL); mutex_unlock(&port->mutex); return 0; } @@ -2089,20 +2107,6 @@ int uart_resume_port(struct uart_driver *drv, struct uart_port *uport) * Re-enable the console device after suspending. */ if (uart_console(uport)) { - struct ktermios termios; - - /* - * First try to use the console cflag setting. - */ - memset(&termios, 0, sizeof(struct ktermios)); - termios.c_cflag = uport->cons->cflag; - - /* - * If that's unset, use the tty termios setting. - */ - if (port->tty && termios.c_cflag == 0) - termios = *port->tty->termios; - uart_change_pm(state, 0); uport->ops->set_termios(uport, &termios, NULL); console_start(uport->cons);