|
@@ -2690,6 +2690,15 @@ 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;
|
|
|
+ up->port.fifosize = uart_config[type].fifo_size;
|
|
|
+ up->capabilities = uart_config[type].flags;
|
|
|
+ up->tx_loadsz = uart_config[type].tx_loadsz;
|
|
|
+}
|
|
|
+
|
|
|
static void __init
|
|
|
serial8250_register_ports(struct uart_driver *drv, struct device *dev)
|
|
|
{
|
|
@@ -2706,6 +2715,10 @@ serial8250_register_ports(struct uart_driver *drv, struct device *dev)
|
|
|
struct uart_8250_port *up = &serial8250_ports[i];
|
|
|
|
|
|
up->port.dev = dev;
|
|
|
+
|
|
|
+ if (up->port.flags & UPF_FIXED_TYPE)
|
|
|
+ serial8250_init_fixed_type_port(up, up->port.type);
|
|
|
+
|
|
|
uart_add_one_port(drv, &up->port);
|
|
|
}
|
|
|
}
|
|
@@ -3118,12 +3131,8 @@ int serial8250_register_port(struct uart_port *port)
|
|
|
if (port->dev)
|
|
|
uart->port.dev = port->dev;
|
|
|
|
|
|
- if (port->flags & UPF_FIXED_TYPE) {
|
|
|
- uart->port.type = port->type;
|
|
|
- uart->port.fifosize = uart_config[port->type].fifo_size;
|
|
|
- uart->capabilities = uart_config[port->type].flags;
|
|
|
- uart->tx_loadsz = uart_config[port->type].tx_loadsz;
|
|
|
- }
|
|
|
+ if (port->flags & UPF_FIXED_TYPE)
|
|
|
+ serial8250_init_fixed_type_port(uart, port->type);
|
|
|
|
|
|
set_io_from_upio(&uart->port);
|
|
|
/* Possibly override default I/O functions. */
|