* 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
 
 
 #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
 
 
        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);