diff options
author | Heikki Krogerus <heikki.krogerus@linux.intel.com> | 2015-09-21 14:17:27 +0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-10-04 18:38:45 +0100 |
commit | 4f042054faa0f40b5801464ef818f28885e5435e (patch) | |
tree | 867f4d292400c96d065f317bb0faa16bd5f4c25a /drivers/tty | |
parent | 2559318caa76028edc9c0553932a17139e6adc58 (diff) | |
download | op-kernel-dev-4f042054faa0f40b5801464ef818f28885e5435e.zip op-kernel-dev-4f042054faa0f40b5801464ef818f28885e5435e.tar.gz |
serial: 8250_dw: only setup the port from one place
This adds a flag "skip_autocfg" that the platforms that do
not have the ADDITIONAL_FEATURES implemented can use to skip
the port setup. It's then enough to call dw8250_setup_port
just from dw8250_probe based on that flag.
Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/tty')
-rw-r--r-- | drivers/tty/serial/8250/8250_dw.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/drivers/tty/serial/8250/8250_dw.c b/drivers/tty/serial/8250/8250_dw.c index d69d098..f5c22d1 100644 --- a/drivers/tty/serial/8250/8250_dw.c +++ b/drivers/tty/serial/8250/8250_dw.c @@ -63,6 +63,8 @@ struct dw8250_data { struct clk *pclk; struct reset_control *rst; struct uart_8250_dma dma; + + unsigned int skip_autocfg:1; }; #define BYT_PRV_CLK 0x800 @@ -285,8 +287,6 @@ static int dw8250_probe_of(struct uart_port *p, struct dw8250_data *data) { struct device_node *np = p->dev->of_node; - struct uart_8250_port *up = up_to_u8250p(p); - bool has_ucv = true; int id; #ifdef CONFIG_64BIT @@ -296,12 +296,9 @@ static int dw8250_probe_of(struct uart_port *p, p->flags = UPF_SKIP_TEST | UPF_SHARE_IRQ | UPF_FIXED_TYPE; p->type = PORT_OCTEON; data->usr_reg = 0x27; - has_ucv = false; + data->skip_autocfg = true; } #endif - if (has_ucv) - dw8250_setup_port(up); - /* get index of serial line, if found in DT aliases */ id = of_alias_get_id(np, "serial"); if (id >= 0) @@ -325,8 +322,6 @@ static int dw8250_probe_acpi(struct uart_8250_port *up, { struct uart_port *p = &up->port; - dw8250_setup_port(up); - p->iotype = UPIO_MEM32; p->serial_in = dw8250_serial_in32; p->serial_out = dw8250_serial_out32; @@ -486,6 +481,9 @@ static int dw8250_probe(struct platform_device *pdev) goto err_reset; } + if (!data->skip_autocfg) + dw8250_setup_port(&uart); + /* If we have a valid fifosize, try hooking up DMA */ if (p->fifosize) { data->dma.rxconf.src_maxburst = p->fifosize / 4; |