From: Alan Cox Date: Thu, 18 Oct 2007 08:24:18 +0000 (-0700) Subject: USB: ch341: fix termios handling X-Git-Tag: v3.12-rc1~25000^2~35 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=73f593081911b1be0d8d3962ecedd635c1e27179;p=kernel%2Fkernel-generic.git USB: ch341: fix termios handling The ch341 currently doesn't support most of the hardware setting. So to keep the termios data right we propogate the old termios hardware values back then encode the speed. Signed-off-by: Alan Cox Signed-off-by: Andrew Morton Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/usb/serial/ch341.c b/drivers/usb/serial/ch341.c index 6b252ce..42582d4 100644 --- a/drivers/usb/serial/ch341.c +++ b/drivers/usb/serial/ch341.c @@ -272,9 +272,6 @@ static void ch341_set_termios(struct usb_serial_port *port, dbg("ch341_set_termios()"); - if (!tty || !tty->termios) - return; - baud_rate = tty_get_baud_rate(tty); switch (baud_rate) { @@ -299,6 +296,11 @@ static void ch341_set_termios(struct usb_serial_port *port, * (cflag & PARENB) : parity {NONE, EVEN, ODD} * (cflag & CSTOPB) : stop bits [1, 2] */ + + /* Copy back the old hardware settings */ + tty_termios_copy_hw(tty->termios, old_termios); + /* And re-encode with the new baud */ + tty_encode_baud_rate(tty, baud_rate, baud_rate); } static struct usb_driver ch341_driver = {