diff options
Diffstat (limited to 'drivers/usb/serial/ssu100.c')
-rw-r--r-- | drivers/usb/serial/ssu100.c | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/drivers/usb/serial/ssu100.c b/drivers/usb/serial/ssu100.c index 4543ea350229..d938396171e8 100644 --- a/drivers/usb/serial/ssu100.c +++ b/drivers/usb/serial/ssu100.c | |||
@@ -506,19 +506,16 @@ static void ssu100_dtr_rts(struct usb_serial_port *port, int on) | |||
506 | { | 506 | { |
507 | struct usb_device *dev = port->serial->dev; | 507 | struct usb_device *dev = port->serial->dev; |
508 | 508 | ||
509 | mutex_lock(&port->serial->disc_mutex); | 509 | /* Disable flow control */ |
510 | if (!port->serial->disconnected) { | 510 | if (!on) { |
511 | /* Disable flow control */ | 511 | if (ssu100_setregister(dev, 0, UART_MCR, 0) < 0) |
512 | if (!on && | ||
513 | ssu100_setregister(dev, 0, UART_MCR, 0) < 0) | ||
514 | dev_err(&port->dev, "error from flowcontrol urb\n"); | 512 | dev_err(&port->dev, "error from flowcontrol urb\n"); |
515 | /* drop RTS and DTR */ | ||
516 | if (on) | ||
517 | set_mctrl(dev, TIOCM_DTR | TIOCM_RTS); | ||
518 | else | ||
519 | clear_mctrl(dev, TIOCM_DTR | TIOCM_RTS); | ||
520 | } | 513 | } |
521 | mutex_unlock(&port->serial->disc_mutex); | 514 | /* drop RTS and DTR */ |
515 | if (on) | ||
516 | set_mctrl(dev, TIOCM_DTR | TIOCM_RTS); | ||
517 | else | ||
518 | clear_mctrl(dev, TIOCM_DTR | TIOCM_RTS); | ||
522 | } | 519 | } |
523 | 520 | ||
524 | static void ssu100_update_msr(struct usb_serial_port *port, u8 msr) | 521 | static void ssu100_update_msr(struct usb_serial_port *port, u8 msr) |