serial-uartlite: Change logic how console_port is setup
authorShubhrajyoti Datta <shubhrajyoti.datta@xilinx.com>
Tue, 12 Nov 2019 10:41:08 +0000 (16:11 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 13 Nov 2019 13:54:15 +0000 (21:54 +0800)
Change logic how console_port is setup by using CON_ENABLED flag
instead of index. There will be unique uart_console
structure that's why code can't use id for console_port
assignment.

Signed-off-by: Shubhrajyoti Datta <shubhrajyoti.datta@xilinx.com>
Link: https://lore.kernel.org/r/1573555271-2579-1-git-send-email-shubhrajyoti.datta@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/uartlite.c

index 3d24582..c933361 100644 (file)
@@ -665,7 +665,7 @@ static int ulite_assign(struct device *dev, int id, u32 base, int irq,
         * If register_console() don't assign value, then console_port pointer
         * is cleanup.
         */
-       if (ulite_uart_driver.cons->index == -1)
+       if (!console_port)
                console_port = port;
 #endif
 
@@ -680,7 +680,8 @@ static int ulite_assign(struct device *dev, int id, u32 base, int irq,
 
 #ifdef CONFIG_SERIAL_UARTLITE_CONSOLE
        /* This is not port which is used for console that's why clean it up */
-       if (ulite_uart_driver.cons->index == -1)
+       if (console_port == port &&
+           !(ulite_uart_driver.cons->flags & CON_ENABLED))
                console_port = NULL;
 #endif
 
@@ -864,6 +865,11 @@ static int ulite_remove(struct platform_device *pdev)
 
        clk_disable_unprepare(pdata->clk);
        rc = ulite_release(&pdev->dev);
+#ifdef CONFIG_SERIAL_UARTLITE_CONSOLE
+       if (console_port == port)
+               console_port = NULL;
+#endif
+
        pm_runtime_disable(&pdev->dev);
        pm_runtime_set_suspended(&pdev->dev);
        pm_runtime_dont_use_autosuspend(&pdev->dev);