{
        struct omap8250_priv *priv = dev_get_drvdata(dev);
        struct uart_8250_port *up = serial8250_get_port(priv->line);
-       int err;
+       int err = 0;
 
        serial8250_suspend_port(priv->line);
 
        if (!device_may_wakeup(dev))
                priv->wer = 0;
        serial_out(up, UART_OMAP_WER, priv->wer);
-       err = pm_runtime_force_suspend(dev);
+       if (uart_console(&up->port) && console_suspend_enabled)
+               err = pm_runtime_force_suspend(dev);
        flush_work(&priv->qos_work);
 
        return err;
 static int omap8250_resume(struct device *dev)
 {
        struct omap8250_priv *priv = dev_get_drvdata(dev);
+       struct uart_8250_port *up = serial8250_get_port(priv->line);
        int err;
 
-       err = pm_runtime_force_resume(dev);
-       if (err)
-               return err;
+       if (uart_console(&up->port) && console_suspend_enabled) {
+               err = pm_runtime_force_resume(dev);
+               if (err)
+                       return err;
+       }
+
        serial8250_resume_port(priv->line);
        /* Paired with pm_runtime_resume_and_get() in omap8250_suspend() */
        pm_runtime_mark_last_busy(dev);
 
        if (priv->line >= 0)
                up = serial8250_get_port(priv->line);
-       /*
-        * When using 'no_console_suspend', the console UART must not be
-        * suspended. Since driver suspend is managed by runtime suspend,
-        * preventing runtime suspend (by returning error) will keep device
-        * active during suspend.
-        */
-       if (priv->is_suspending && !console_suspend_enabled) {
-               if (up && uart_console(&up->port))
-                       return -EBUSY;
-       }
 
        if (priv->habit & UART_ERRATA_CLOCK_DISABLE) {
                int ret;