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 <hauke@xxxxxxxxxx> --- drivers/tty/serial/serial_core.c | 13 ++++++++++--- include/linux/console.h | 1 + 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c index def5199..fcdf258 100644 --- 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_struct *tty, struct uart_state *state, 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; } /* @@ -1909,7 +1911,7 @@ static const struct baud_rates baud_rates[] = { { 4800, B4800 }, { 2400, B2400 }, { 1200, B1200 }, - { 0, B38400 } + { 0, BOTHER } }; /** @@ -1948,10 +1950,13 @@ uart_set_options(struct uart_port *port, struct console *co, * 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; @@ -1981,8 +1986,10 @@ uart_set_options(struct uart_port *port, struct console *co, * 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; } diff --git a/include/linux/console.h b/include/linux/console.h index bd19434..bfaed0e 100644 --- a/include/linux/console.h +++ b/include/linux/console.h @@ -128,6 +128,7 @@ struct console { short flags; short index; int cflag; + int baud; void *data; struct console *next; }; -- 2.6.2 -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html