ath79: add support for Arduino Yun
[openwrt/openwrt.git] / target / linux / ath79 / patches-4.19 / 921-serial-core-add-support-for-boot-console-with-arbitr.patch
diff --git a/target/linux/ath79/patches-4.19/921-serial-core-add-support-for-boot-console-with-arbitr.patch b/target/linux/ath79/patches-4.19/921-serial-core-add-support-for-boot-console-with-arbitr.patch
new file mode 100644 (file)
index 0000000..f726b05
--- /dev/null
@@ -0,0 +1,54 @@
+From 4d3c17975c7814884a721fe693b3adf5c426d759 Mon Sep 17 00:00:00 2001
+From: Hauke Mehrtens <hauke@hauke-m.de>
+Date: Tue, 10 Nov 2015 22:18:39 +0100
+Subject: [RFC] serial: core: add support for boot console with arbitrary
+ baud rates
+
+The Arduino Yun uses a baud rate of 250000 by default. The serial is
+going over the Atmel ATmega and is used to connect to this chip.
+Without this patch Linux wants to switch the console to 9600 Baud.
+
+With this patch Linux will use the configured baud rate and not a
+default one specified in uart_register_driver().
+
+Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
+[rebased to 4.14, slightly reworded commit message]
+Signed-off-by: Sungbo Eo <mans0n@gorani.run>
+---
+ drivers/tty/serial/serial_core.c | 6 +++++-
+ include/linux/console.h          | 1 +
+ 2 files changed, 6 insertions(+), 1 deletions(-)
+
+--- a/drivers/tty/serial/serial_core.c
++++ b/drivers/tty/serial/serial_core.c
+@@ -219,6 +219,8 @@ static int uart_port_startup(struct tty_
+       if (retval == 0) {
+               if (uart_console(uport) && uport->cons->cflag) {
+                       tty->termios.c_cflag = uport->cons->cflag;
++                      tty->termios.c_ospeed = uport->cons->baud;
++                      tty->termios.c_ispeed = uport->cons->baud;
+                       uport->cons->cflag = 0;
+               }
+               /*
+@@ -2058,8 +2060,10 @@ uart_set_options(struct uart_port *port,
+        * Allow the setting of the UART parameters with a NULL console
+        * too:
+        */
+-      if (co)
++      if (co) {
+               co->cflag = termios.c_cflag;
++              co->baud = baud;
++      }
+       return 0;
+ }
+--- a/include/linux/console.h
++++ b/include/linux/console.h
+@@ -153,6 +153,7 @@ struct console {
+       short   flags;
+       short   index;
+       int     cflag;
++      int     baud;
+       void    *data;
+       struct   console *next;
+ };