| From 108e02b12921078a59dcacd048079ece48a4a983 Mon Sep 17 00:00:00 2001 |
| From: Johan Hovold <jhovold@gmail.com> |
| Date: Wed, 18 Jan 2012 01:46:00 +0100 |
| Subject: USB: ftdi_sio: fix initial baud rate |
| |
| From: Johan Hovold <jhovold@gmail.com> |
| |
| commit 108e02b12921078a59dcacd048079ece48a4a983 upstream. |
| |
| Fix regression introduced by commit b1ffb4c851f1 ("USB: Fix Corruption |
| issue in USB ftdi driver ftdi_sio.c") which caused the termios settings |
| to no longer be initialised at open. Consequently it was no longer |
| possible to set the port to the default speed of 9600 baud without first |
| changing to another baud rate and back again. |
| |
| Reported-by: Roland Ramthun <mail@roland-ramthun.de> |
| Signed-off-by: Johan Hovold <jhovold@gmail.com> |
| Tested-by: Roland Ramthun <mail@roland-ramthun.de> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/usb/serial/ftdi_sio.c | 7 +++++-- |
| 1 file changed, 5 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/usb/serial/ftdi_sio.c |
| +++ b/drivers/usb/serial/ftdi_sio.c |
| @@ -1868,6 +1868,7 @@ static int ftdi_submit_read_urb(struct u |
| |
| static int ftdi_open(struct tty_struct *tty, struct usb_serial_port *port) |
| { /* ftdi_open */ |
| + struct ktermios dummy; |
| struct usb_device *dev = port->serial->dev; |
| struct ftdi_private *priv = usb_get_serial_port_data(port); |
| unsigned long flags; |
| @@ -1895,8 +1896,10 @@ static int ftdi_open(struct tty_struct * |
| This is same behaviour as serial.c/rs_open() - Kuba */ |
| |
| /* ftdi_set_termios will send usb control messages */ |
| - if (tty) |
| - ftdi_set_termios(tty, port, tty->termios); |
| + if (tty) { |
| + memset(&dummy, 0, sizeof(dummy)); |
| + ftdi_set_termios(tty, port, &dummy); |
| + } |
| |
| /* Not throttled */ |
| spin_lock_irqsave(&port->lock, flags); |