aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/serial/ftdi_sio.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/serial/ftdi_sio.c')
-rw-r--r--drivers/usb/serial/ftdi_sio.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
index 90ceef1776c3..d07fccf3bab5 100644
--- a/drivers/usb/serial/ftdi_sio.c
+++ b/drivers/usb/serial/ftdi_sio.c
@@ -1886,24 +1886,22 @@ static void ftdi_dtr_rts(struct usb_serial_port *port, int on)
1886{ 1886{
1887 struct ftdi_private *priv = usb_get_serial_port_data(port); 1887 struct ftdi_private *priv = usb_get_serial_port_data(port);
1888 1888
1889 mutex_lock(&port->serial->disc_mutex); 1889 /* Disable flow control */
1890 if (!port->serial->disconnected) { 1890 if (!on) {
1891 /* Disable flow control */ 1891 if (usb_control_msg(port->serial->dev,
1892 if (!on && usb_control_msg(port->serial->dev,
1893 usb_sndctrlpipe(port->serial->dev, 0), 1892 usb_sndctrlpipe(port->serial->dev, 0),
1894 FTDI_SIO_SET_FLOW_CTRL_REQUEST, 1893 FTDI_SIO_SET_FLOW_CTRL_REQUEST,
1895 FTDI_SIO_SET_FLOW_CTRL_REQUEST_TYPE, 1894 FTDI_SIO_SET_FLOW_CTRL_REQUEST_TYPE,
1896 0, priv->interface, NULL, 0, 1895 0, priv->interface, NULL, 0,
1897 WDR_TIMEOUT) < 0) { 1896 WDR_TIMEOUT) < 0) {
1898 dev_err(&port->dev, "error from flowcontrol urb\n"); 1897 dev_err(&port->dev, "error from flowcontrol urb\n");
1899 } 1898 }
1900 /* drop RTS and DTR */
1901 if (on)
1902 set_mctrl(port, TIOCM_DTR | TIOCM_RTS);
1903 else
1904 clear_mctrl(port, TIOCM_DTR | TIOCM_RTS);
1905 } 1899 }
1906 mutex_unlock(&port->serial->disc_mutex); 1900 /* drop RTS and DTR */
1901 if (on)
1902 set_mctrl(port, TIOCM_DTR | TIOCM_RTS);
1903 else
1904 clear_mctrl(port, TIOCM_DTR | TIOCM_RTS);
1907} 1905}
1908 1906
1909/* 1907/*