Commit afd483bd authored by Peter Hurley's avatar Peter Hurley Committed by Greg Kroah-Hartman
Browse files

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 b5d228cc
("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: default avatarPeter Hurley <peter@hurleysoftware.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 1a53e079
Loading
Loading
Loading
Loading
+12 −16
Original line number Diff line number Diff line
@@ -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);