[SERIAL] Fix console initialisation ordering
authorRussell King <rmk@dyn-67.arm.linux.org.uk>
Sat, 1 Sep 2007 20:25:09 +0000 (21:25 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Mon, 15 Oct 2007 17:53:35 +0000 (18:53 +0100)
Ensure pm callback is called upon initialisation to place port in
correct power saving state.  Ensure console is initialised prior
to deciding whether to power down the port.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
drivers/serial/serial_core.c

index a055f58..a3bd3a3 100644 (file)
@@ -2127,6 +2127,14 @@ uart_configure_port(struct uart_driver *drv, struct uart_state *state,
                spin_unlock_irqrestore(&port->lock, flags);
 
                /*
+                * If this driver supports console, and it hasn't been
+                * successfully registered yet, try to re-register it.
+                * It may be that the port was not available.
+                */
+               if (port->cons && !(port->cons->flags & CON_ENABLED))
+                       register_console(port->cons);
+
+               /*
                 * Power down all ports by default, except the
                 * console if we have one.
                 */
@@ -2286,6 +2294,7 @@ int uart_add_one_port(struct uart_driver *drv, struct uart_port *port)
        }
 
        state->port = port;
+       state->pm_state = -1;
 
        port->cons = drv->cons;
        port->info = state->info;
@@ -2308,15 +2317,6 @@ int uart_add_one_port(struct uart_driver *drv, struct uart_port *port)
        tty_register_device(drv->tty_driver, port->line, port->dev);
 
        /*
-        * If this driver supports console, and it hasn't been
-        * successfully registered yet, try to re-register it.
-        * It may be that the port was not available.
-        */
-       if (port->type != PORT_UNKNOWN &&
-           port->cons && !(port->cons->flags & CON_ENABLED))
-               register_console(port->cons);
-
-       /*
         * Ensure UPF_DEAD is not set.
         */
        port->flags &= ~UPF_DEAD;