From 4d856c4e9fa9d9ce997e8482c8e878d157462f8c Mon Sep 17 00:00:00 2001 From: Rob Herring Date: Wed, 30 Apr 2014 19:48:28 -0500 Subject: [PATCH 1/2] tty/serial: add back missing setup_early_serial8250_console Commit d2fd6810a823bcd (tty/serial: convert 8250 to generic earlycon) removed setup_early_serial8250_console, but there are still 2 callers in: arch/mips/mti-malta/malta-init.c drivers/firmware/pcdp.c Add back the function implemented as a wrapper to setup_earlycon. Reported-by: Yinghai Lu Cc: Jiri Slaby Cc: linux-serial@vger.kernel.org Signed-off-by: Greg Kroah-Hartman (cherry picked from commit fe1cf8af918af3ff0dd58ce92e5a5da117cb1d92) Signed-off-by: Alex Shi (cherry picked from commit bd3132993d81a28b3a165ef6cc1abe0c4a0c6ac6) Signed-off-by: Alex Shi --- drivers/tty/serial/8250/8250_early.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/tty/serial/8250/8250_early.c b/drivers/tty/serial/8250/8250_early.c index e83c9db3300c..cfef801a49d4 100644 --- a/drivers/tty/serial/8250/8250_early.c +++ b/drivers/tty/serial/8250/8250_early.c @@ -156,6 +156,16 @@ static int __init early_serial8250_setup(struct earlycon_device *device, EARLYCON_DECLARE(uart8250, early_serial8250_setup); EARLYCON_DECLARE(uart, early_serial8250_setup); +int __init setup_early_serial8250_console(char *cmdline) +{ + char match[] = "uart8250"; + + if (cmdline && cmdline[4] == ',') + match[4] = '\0'; + + return setup_earlycon(cmdline, match, early_serial8250_setup); +} + int serial8250_find_port_for_earlycon(void) { struct earlycon_device *device = early_device; From 2f56ce0e13c04d5342807755115fe842a1caa6c4 Mon Sep 17 00:00:00 2001 From: Rob Herring Date: Thu, 12 Jun 2014 12:52:44 -0500 Subject: [PATCH 2/2] tty/serial: fix 8250 early console option passing to regular console 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 Signed-off-by: Rob Herring Cc: Jiri Slaby Signed-off-by: Greg Kroah-Hartman (cherry picked from commit 60efcf0414be5876d81276e3c1fd12680ba2ce71) Signed-off-by: Alex Shi (cherry picked from commit 5eb6ba4882c9c0b3b83486ab66b0c9e68189de4b) Signed-off-by: Alex Shi --- drivers/tty/serial/8250/8250_early.c | 5 ++++- drivers/tty/serial/earlycon.c | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/tty/serial/8250/8250_early.c b/drivers/tty/serial/8250/8250_early.c index cfef801a49d4..4858b8a99d3b 100644 --- a/drivers/tty/serial/8250/8250_early.c +++ b/drivers/tty/serial/8250/8250_early.c @@ -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); diff --git a/drivers/tty/serial/earlycon.c b/drivers/tty/serial/earlycon.c index 73bf1e21aae0..4f27f788ac6f 100644 --- a/drivers/tty/serial/earlycon.c +++ b/drivers/tty/serial/earlycon.c @@ -23,7 +23,7 @@ #include static struct console early_con = { - .name = "earlycon", + .name = "uart", /* 8250 console switch requires this name */ .flags = CON_PRINTBUFFER | CON_BOOT, .index = -1, };