tty/serial: fix 8250 early console option passing to regular console
authorRob Herring <robh@kernel.org>
Thu, 12 Jun 2014 17:52:44 +0000 (12:52 -0500)
committerAlex Shi <alex.shi@linaro.org>
Fri, 29 Aug 2014 11:48:45 +0000 (19:48 +0800)
In the conversion to generic early console, the passing of options from
the early 8250 console to the regular ttyS console was broken. This
resulted in the baud rate changing when switching consoles during boot.

This feature allows specifying a single console option on the kernel
command line rather than both an early console and regular serial tty
console. It would be nice to generalize this feature. However, it only
works if the correct baud rate can be probed early which is not the
case on many platforms which have non-standard UART clock rates. So for
now, this is left as an 8250 specific feature.

Reported-and-tested-by: Tony Luck <tony.luck@intel.com>
Signed-off-by: Rob Herring <robh@kernel.org>
Cc: Jiri Slaby <jslaby@suse.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 60efcf0414be5876d81276e3c1fd12680ba2ce71)
Signed-off-by: Alex Shi <alex.shi@linaro.org>
(cherry picked from commit 5eb6ba4882c9c0b3b83486ab66b0c9e68189de4b)
Signed-off-by: Alex Shi <alex.shi@linaro.org>
drivers/tty/serial/8250/8250_early.c
drivers/tty/serial/earlycon.c

index cfef801a49d4c87813dae2b12792d7a7d4cf2ef8..4858b8a99d3b4fcdbd4702c08a89442c6fb795fa 100644 (file)
@@ -144,8 +144,11 @@ static int __init early_serial8250_setup(struct earlycon_device *device,
        if (!(device->port.membase || device->port.iobase))
                return 0;
 
-       if (!device->baud)
+       if (!device->baud) {
                device->baud = probe_baud(&device->port);
+               snprintf(device->options, sizeof(device->options), "%u",
+                        device->baud);
+       }
 
        init_port(device);
 
index 73bf1e21aae042275088173ed9caa9ae68136947..4f27f788ac6f4008244b022f1aed180c0f8b3736 100644 (file)
@@ -23,7 +23,7 @@
 #include <asm/serial.h>
 
 static struct console early_con = {
-       .name =         "earlycon",
+       .name =         "uart", /* 8250 console switch requires this name */
        .flags =        CON_PRINTBUFFER | CON_BOOT,
        .index =        -1,
 };