From: Heikki Krogerus <heikki.kroge...@linux.intel.com>

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.kroge...@linux.intel.com>
Reviewed-by: Andy Shevchenko <andriy.shevche...@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org>
(cherry picked from commit 4f042054faa0f40b5801464ef818f28885e5435e)
Signed-off-by: Tan Jui Nee <jui.nee....@intel.com>
---
 drivers/tty/serial/8250/8250_dw.c | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/drivers/tty/serial/8250/8250_dw.c 
b/drivers/tty/serial/8250/8250_dw.c
index a606408..6411992 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
@@ -281,8 +283,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
@@ -292,12 +292,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)
@@ -321,8 +318,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;
@@ -482,6 +477,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;
-- 
1.9.1

-- 
_______________________________________________
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto

Reply via email to