}
 #endif
 
+#ifdef CONFIG_SERIAL_8250_OMAP_TTYO_FIXUP
+static int __init omap8250_console_fixup(void)
+{
+       char *omap_str;
+       char *options;
+       u8 idx;
+
+       if (strstr(boot_command_line, "console=ttyS"))
+               /* user set a ttyS based name for the console */
+               return 0;
+
+       omap_str = strstr(boot_command_line, "console=ttyO");
+       if (!omap_str)
+               /* user did not set ttyO based console, so we don't care */
+               return 0;
+
+       omap_str += 12;
+       if ('0' <= *omap_str && *omap_str <= '9')
+               idx = *omap_str - '0';
+       else
+               return 0;
+
+       omap_str++;
+       if (omap_str[0] == ',') {
+               omap_str++;
+               options = omap_str;
+       } else {
+               options = NULL;
+       }
+
+       add_preferred_console("ttyS", idx, options);
+       pr_err("WARNING: Your 'console=ttyO%d' has been replaced by 'ttyS%d'\n",
+              idx, idx);
+       pr_err("This ensures that you still see kernel messages. Please\n");
+       pr_err("update your kernel commandline.\n");
+       return 0;
+}
+console_initcall(omap8250_console_fixup);
+#endif
+
 static const struct dev_pm_ops omap8250_dev_pm_ops = {
        SET_SYSTEM_SLEEP_PM_OPS(omap8250_suspend, omap8250_resume)
        SET_RUNTIME_PM_OPS(omap8250_runtime_suspend,
 
 
          This driver uses ttyS instead of ttyO.
 
+config SERIAL_8250_OMAP_TTYO_FIXUP
+       bool "Replace ttyO with ttyS"
+       depends on SERIAL_8250_OMAP=y && SERIAL_8250_CONSOLE
+       default y
+       help
+         This option replaces the "console=ttyO" argument with the matching
+         ttyS argument if the user did not specified it on the command line.
+         This ensures that the user can see the kernel output during boot
+         which he wouldn't see otherwise. The getty has still to be configured
+         for ttyS instead of ttyO regardless of this option.
+         This option is intended for people who "automatically" enable this
+         driver without knowing that this driver requires a different console=
+         argument. If you read this, please keep this option disabled and
+         instead update your kernel command line. If you prepare a kernel for a
+         distribution or other kind of larger user base then you probably want
+         to keep this option enabled. Otherwise people might complain about a
+         not booting kernel because the serial console remains silent in case
+         they forgot to update the command line.
+
 config SERIAL_8250_FINTEK
        tristate "Support for Fintek F81216A LPC to 4 UART"
        depends on SERIAL_8250 && PNP