summaryrefslogtreecommitdiffstats
path: root/drivers/tty/serial/8250
diff options
context:
space:
mode:
authorPeter Hurley <peter@hurleysoftware.com>2015-02-24 20:25:10 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-03-26 18:17:36 +0100
commitafd483bd0f6808d7a8891349b8a141d7abd0509d (patch)
tree9d2bef7e7ae4be80c521dda1e286bf702677d9ea /drivers/tty/serial/8250
parentserial: 8250: Encapsulate port i/o method init (diff)
downloadlinux-afd483bd0f6808d7a8891349b8a141d7abd0509d.tar.xz
linux-afd483bd0f6808d7a8891349b8a141d7abd0509d.zip
serial: 8250: Initialize fixed type fields when setting defaults
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>
Diffstat (limited to 'drivers/tty/serial/8250')
-rw-r--r--drivers/tty/serial/8250/8250_core.c28
1 files changed, 12 insertions, 16 deletions
diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c
index c5db1395c348..2030201daf97 100644
--- a/drivers/tty/serial/8250/8250_core.c
+++ b/drivers/tty/serial/8250/8250_core.c
@@ -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);