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;
        }
         * 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);