| From 600ab33506796376370132c47ffb95b74fcecc4a Mon Sep 17 00:00:00 2001 |
| From: Johan Hovold <jhovold@gmail.com> |
| Date: Wed, 18 Jan 2012 01:46:00 +0100 |
| Subject: [PATCH] USB: ftdi_sio: fix initial baud rate |
| |
| 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@suse.de> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c |
| index 7367f4b..e4c3da1 100644 |
| --- a/drivers/usb/serial/ftdi_sio.c |
| +++ b/drivers/usb/serial/ftdi_sio.c |
| @@ -1851,6 +1851,7 @@ static int ftdi_submit_read_urb(struct usb_serial_port *port, gfp_t mem_flags) |
| |
| 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; |
| @@ -1872,8 +1873,10 @@ static int ftdi_open(struct tty_struct *tty, struct usb_serial_port *port) |
| 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); |
| -- |
| 1.7.12.rc2 |
| |