Author: hauke
Date: 2015-11-11 00:11:10 +0100 (Wed, 11 Nov 2015)
New Revision: 47450

Added:
   
trunk/target/linux/ar71xx/patches-4.1/821-serial-core-add-support-for-boot-console-with-arbitr.patch
Log:
ar71xx: 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 230400 Baud.

With this patch Linux will use the configured baud rate and not some
standard one which is near by.

Signed-off-by: Hauke Mehrtens <[email protected]>


Added: 
trunk/target/linux/ar71xx/patches-4.1/821-serial-core-add-support-for-boot-console-with-arbitr.patch
===================================================================
--- 
trunk/target/linux/ar71xx/patches-4.1/821-serial-core-add-support-for-boot-console-with-arbitr.patch
                                (rev 0)
+++ 
trunk/target/linux/ar71xx/patches-4.1/821-serial-core-add-support-for-boot-console-with-arbitr.patch
        2015-11-10 23:11:10 UTC (rev 47450)
@@ -0,0 +1,76 @@
+From 4d3c17975c7814884a721fe693b3adf5c426d759 Mon Sep 17 00:00:00 2001
+From: Hauke Mehrtens <[email protected]>
+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 230400 Baud.
+
+With this patch Linux will use the configured baud rate and not some
+standard one which is near by.
+
+Signed-off-by: Hauke Mehrtens <[email protected]>
+---
+ drivers/tty/serial/serial_core.c | 13 ++++++++++---
+ include/linux/console.h          |  1 +
+ 2 files changed, 11 insertions(+), 3 deletions(-)
+
+--- a/drivers/tty/serial/serial_core.c
++++ b/drivers/tty/serial/serial_core.c
+@@ -164,6 +164,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;
+               }
+               /*
+@@ -1901,7 +1903,7 @@ static const struct baud_rates baud_rate
+       {   4800, B4800   },
+       {   2400, B2400   },
+       {   1200, B1200   },
+-      {      0, B38400  }
++      {      0, BOTHER  }
+ };
+ 
+ /**
+@@ -1940,10 +1942,13 @@ uart_set_options(struct uart_port *port,
+        * Construct a cflag setting.
+        */
+       for (i = 0; baud_rates[i].rate; i++)
+-              if (baud_rates[i].rate <= baud)
++              if (baud_rates[i].rate == baud)
+                       break;
+ 
+       termios.c_cflag |= baud_rates[i].cflag;
++      if (!baud_rates[i].rate) {
++              termios.c_ospeed = baud;
++      }
+ 
+       if (bits == 7)
+               termios.c_cflag |= CS7;
+@@ -1973,8 +1978,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
+@@ -127,6 +127,7 @@ struct console {
+       short   flags;
+       short   index;
+       int     cflag;
++      int     baud;
+       void    *data;
+       struct   console *next;
+ };
_______________________________________________
openwrt-commits mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-commits

Reply via email to