USB: serial: ch341: fix open and resume after B0
The private baud_rate variable is used to configure the port at open and reset-resume and must never be set to (and left at) zero or reset-resume and all further open attempts will fail. Fixes:aa91def41a
("USB: ch341: set tty baud speed according to tty struct") Fixes:664d5df92e
("USB: usb-serial ch341: support for DTR/RTS/CTS") Cc: stable <stable@vger.kernel.org> Signed-off-by: Johan Hovold <johan@kernel.org>
This commit is contained in:
Родитель
4e2da44691
Коммит
a20047f36e
|
@ -355,7 +355,6 @@ static void ch341_set_termios(struct tty_struct *tty,
|
|||
|
||||
baud_rate = tty_get_baud_rate(tty);
|
||||
|
||||
priv->baud_rate = baud_rate;
|
||||
ctrl = CH341_LCR_ENABLE_RX | CH341_LCR_ENABLE_TX;
|
||||
|
||||
switch (C_CSIZE(tty)) {
|
||||
|
@ -388,6 +387,9 @@ static void ch341_set_termios(struct tty_struct *tty,
|
|||
spin_lock_irqsave(&priv->lock, flags);
|
||||
priv->line_control |= (CH341_BIT_DTR | CH341_BIT_RTS);
|
||||
spin_unlock_irqrestore(&priv->lock, flags);
|
||||
|
||||
priv->baud_rate = baud_rate;
|
||||
|
||||
r = ch341_init_set_baudrate(port->serial->dev, priv, ctrl);
|
||||
if (r < 0 && old_termios) {
|
||||
priv->baud_rate = tty_termios_baud_rate(old_termios);
|
||||
|
|
Загрузка…
Ссылка в новой задаче