summaryrefslogtreecommitdiffstats
path: root/drivers/tty
diff options
context:
space:
mode:
authorHeikki Krogerus <heikki.krogerus@linux.intel.com>2015-09-21 14:17:27 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-10-04 18:38:45 +0100
commit4f042054faa0f40b5801464ef818f28885e5435e (patch)
tree867f4d292400c96d065f317bb0faa16bd5f4c25a /drivers/tty
parent2559318caa76028edc9c0553932a17139e6adc58 (diff)
downloadop-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.c14
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;
OpenPOWER on IntegriCloud