serial: 8250: Initialize fixed type fields when setting defaults
authorPeter Hurley <peter@hurleysoftware.com>
Tue, 24 Feb 2015 19:25:10 +0000 (14:25 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 26 Mar 2015 17:17:36 +0000 (18:17 +0100)
Prepare for 8250 split; move fixed type initialization into
serial8250_set_defaults(). This enables uart_config[] array to remain
file scope in base port operations after the split.

NB: the call to serial8250_init_fixed_type_port() from
serial8250_register_ports() was added by commit b5d228cc4f85
("serial: copy UART properties of UPF_FIXED_TYPE ports provisioned
using early_serial_setup") specifically to support ports initialized
by early_serial_setup(). Since serial8250_set_defaults() is called
from early_serial_setup(), fixed type initialization is now already
handled there before serial8250_register_ports() is called.

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

index c5db1395c3487db3e22cba7d0531fb02d045fc79..2030201daf97d590298afa5c49afd98a8ebe86b3 100644 (file)
@@ -3148,6 +3148,17 @@ static void serial8250_set_defaults(struct uart_8250_port *up)
 {
        struct uart_port *port = &up->port;
 
+       if (up->port.flags & UPF_FIXED_TYPE) {
+               unsigned int type = up->port.type;
+
+               if (!up->port.fifosize)
+                       up->port.fifosize = uart_config[type].fifo_size;
+               if (!up->tx_loadsz)
+                       up->tx_loadsz = uart_config[type].tx_loadsz;
+               if (!up->capabilities)
+                       up->capabilities = uart_config[type].flags;
+       }
+
        set_io_from_upio(port);
 }
 
@@ -3208,18 +3219,6 @@ static void __init serial8250_isa_init_ports(void)
        }
 }
 
-static void
-serial8250_init_fixed_type_port(struct uart_8250_port *up, unsigned int type)
-{
-       up->port.type = type;
-       if (!up->port.fifosize)
-               up->port.fifosize = uart_config[type].fifo_size;
-       if (!up->tx_loadsz)
-               up->tx_loadsz = uart_config[type].tx_loadsz;
-       if (!up->capabilities)
-               up->capabilities = uart_config[type].flags;
-}
-
 static void __init
 serial8250_register_ports(struct uart_driver *drv, struct device *dev)
 {
@@ -3236,9 +3235,6 @@ serial8250_register_ports(struct uart_driver *drv, struct device *dev)
                if (skip_txen_test)
                        up->port.flags |= UPF_NO_TXEN_TEST;
 
-               if (up->port.flags & UPF_FIXED_TYPE)
-                       serial8250_init_fixed_type_port(up, up->port.type);
-
                uart_add_one_port(drv, &up->port);
        }
 }
@@ -3757,7 +3753,7 @@ int serial8250_register_8250_port(struct uart_8250_port *up)
                        uart->port.flags |= UPF_NO_TXEN_TEST;
 
                if (up->port.flags & UPF_FIXED_TYPE)
-                       serial8250_init_fixed_type_port(uart, up->port.type);
+                       uart->port.type = up->port.type;
 
                serial8250_set_defaults(uart);