diff options
author | Peter Hurley <peter@hurleysoftware.com> | 2015-02-24 19:25:10 (GMT) |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-03-26 17:17:36 (GMT) |
commit | afd483bd0f6808d7a8891349b8a141d7abd0509d (patch) | |
tree | 9d2bef7e7ae4be80c521dda1e286bf702677d9ea | |
parent | 1a53e07989733d72354eb9617f49377ff30588a8 (diff) | |
download | linux-afd483bd0f6808d7a8891349b8a141d7abd0509d.tar.xz |
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>
-rw-r--r-- | drivers/tty/serial/8250/8250_core.c | 28 |
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 c5db139..2030201 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); |