diff options
Diffstat (limited to 'drivers/usb/serial/ftdi_sio.c')
| -rw-r--r-- | drivers/usb/serial/ftdi_sio.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c index 1ab2a6191013..77ef4c481f3c 100644 --- a/drivers/usb/serial/ftdi_sio.c +++ b/drivers/usb/serial/ftdi_sio.c | |||
| @@ -1783,6 +1783,10 @@ static int ftdi_set_bitmode(struct usb_serial_port *port, u8 mode) | |||
| 1783 | int result; | 1783 | int result; |
| 1784 | u16 val; | 1784 | u16 val; |
| 1785 | 1785 | ||
| 1786 | result = usb_autopm_get_interface(serial->interface); | ||
| 1787 | if (result) | ||
| 1788 | return result; | ||
| 1789 | |||
| 1786 | val = (mode << 8) | (priv->gpio_output << 4) | priv->gpio_value; | 1790 | val = (mode << 8) | (priv->gpio_output << 4) | priv->gpio_value; |
| 1787 | result = usb_control_msg(serial->dev, | 1791 | result = usb_control_msg(serial->dev, |
| 1788 | usb_sndctrlpipe(serial->dev, 0), | 1792 | usb_sndctrlpipe(serial->dev, 0), |
| @@ -1795,6 +1799,8 @@ static int ftdi_set_bitmode(struct usb_serial_port *port, u8 mode) | |||
| 1795 | val, result); | 1799 | val, result); |
| 1796 | } | 1800 | } |
| 1797 | 1801 | ||
| 1802 | usb_autopm_put_interface(serial->interface); | ||
| 1803 | |||
| 1798 | return result; | 1804 | return result; |
| 1799 | } | 1805 | } |
| 1800 | 1806 | ||
| @@ -1846,9 +1852,15 @@ static int ftdi_read_cbus_pins(struct usb_serial_port *port) | |||
| 1846 | unsigned char *buf; | 1852 | unsigned char *buf; |
| 1847 | int result; | 1853 | int result; |
| 1848 | 1854 | ||
| 1855 | result = usb_autopm_get_interface(serial->interface); | ||
| 1856 | if (result) | ||
| 1857 | return result; | ||
| 1858 | |||
| 1849 | buf = kmalloc(1, GFP_KERNEL); | 1859 | buf = kmalloc(1, GFP_KERNEL); |
| 1850 | if (!buf) | 1860 | if (!buf) { |
| 1861 | usb_autopm_put_interface(serial->interface); | ||
| 1851 | return -ENOMEM; | 1862 | return -ENOMEM; |
| 1863 | } | ||
| 1852 | 1864 | ||
| 1853 | result = usb_control_msg(serial->dev, | 1865 | result = usb_control_msg(serial->dev, |
| 1854 | usb_rcvctrlpipe(serial->dev, 0), | 1866 | usb_rcvctrlpipe(serial->dev, 0), |
| @@ -1863,6 +1875,7 @@ static int ftdi_read_cbus_pins(struct usb_serial_port *port) | |||
| 1863 | } | 1875 | } |
| 1864 | 1876 | ||
| 1865 | kfree(buf); | 1877 | kfree(buf); |
| 1878 | usb_autopm_put_interface(serial->interface); | ||
| 1866 | 1879 | ||
| 1867 | return result; | 1880 | return result; |
| 1868 | } | 1881 | } |
