Commit 9660497c authored by Heikki Krogerus's avatar Heikki Krogerus Committed by Greg Kroah-Hartman

serial: 8250: Allow drivers to deliver capabilities

Modern UARTs are able to provide information about their
capabilities such as FIFO size. This allows the drivers to
deliver this information to 8250.c when they are registering
ports.
Signed-off-by: default avatarHeikki Krogerus <heikki.krogerus@linux.intel.com>
Reviewed-by: default avatarJamie Iles <jamie@jamieiles.com>
Acked-by: default avatarAlan Cox <alan@linux.intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent bd5d7ce9
...@@ -1911,9 +1911,12 @@ static int serial8250_startup(struct uart_port *port) ...@@ -1911,9 +1911,12 @@ static int serial8250_startup(struct uart_port *port)
if (port->type == PORT_8250_CIR) if (port->type == PORT_8250_CIR)
return -ENODEV; return -ENODEV;
port->fifosize = uart_config[up->port.type].fifo_size; if (!port->fifosize)
up->tx_loadsz = uart_config[up->port.type].tx_loadsz; port->fifosize = uart_config[port->type].fifo_size;
up->capabilities = uart_config[up->port.type].flags; if (!up->tx_loadsz)
up->tx_loadsz = uart_config[port->type].tx_loadsz;
if (!up->capabilities)
up->capabilities = uart_config[port->type].flags;
up->mcr = 0; up->mcr = 0;
if (port->iotype != up->cur_iotype) if (port->iotype != up->cur_iotype)
...@@ -2746,9 +2749,12 @@ static void ...@@ -2746,9 +2749,12 @@ static void
serial8250_init_fixed_type_port(struct uart_8250_port *up, unsigned int type) serial8250_init_fixed_type_port(struct uart_8250_port *up, unsigned int type)
{ {
up->port.type = type; up->port.type = type;
up->port.fifosize = uart_config[type].fifo_size; if (!up->port.fifosize)
up->capabilities = uart_config[type].flags; up->port.fifosize = uart_config[type].fifo_size;
up->tx_loadsz = uart_config[type].tx_loadsz; if (!up->tx_loadsz)
up->tx_loadsz = uart_config[type].tx_loadsz;
if (!up->capabilities)
up->capabilities = uart_config[type].flags;
} }
static void __init static void __init
...@@ -3182,6 +3188,10 @@ int serial8250_register_8250_port(struct uart_8250_port *up) ...@@ -3182,6 +3188,10 @@ int serial8250_register_8250_port(struct uart_8250_port *up)
uart->bugs = up->bugs; uart->bugs = up->bugs;
uart->port.mapbase = up->port.mapbase; uart->port.mapbase = up->port.mapbase;
uart->port.private_data = up->port.private_data; uart->port.private_data = up->port.private_data;
uart->port.fifosize = up->port.fifosize;
uart->tx_loadsz = up->tx_loadsz;
uart->capabilities = up->capabilities;
if (up->port.dev) if (up->port.dev)
uart->port.dev = up->port.dev; uart->port.dev = up->port.dev;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment