aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/serial/option.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-06-08 14:31:16 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2014-06-08 14:31:16 -0400
commit3f17ea6dea8ba5668873afa54628a91aaa3fb1c0 (patch)
treeafbeb2accd4c2199ddd705ae943995b143a0af02 /drivers/usb/serial/option.c
parent1860e379875dfe7271c649058aeddffe5afd9d0d (diff)
parent1a5700bc2d10cd379a795fd2bb377a190af5acd4 (diff)
Merge branch 'next' (accumulated 3.16 merge window patches) into master
Now that 3.15 is released, this merges the 'next' branch into 'master', bringing us to the normal situation where my 'master' branch is the merge window. * accumulated work in next: (6809 commits) ufs: sb mutex merge + mutex_destroy powerpc: update comments for generic idle conversion cris: update comments for generic idle conversion idle: remove cpu_idle() forward declarations nbd: zero from and len fields in NBD_CMD_DISCONNECT. mm: convert some level-less printks to pr_* MAINTAINERS: adi-buildroot-devel is moderated MAINTAINERS: add linux-api for review of API/ABI changes mm/kmemleak-test.c: use pr_fmt for logging fs/dlm/debug_fs.c: replace seq_printf by seq_puts fs/dlm/lockspace.c: convert simple_str to kstr fs/dlm/config.c: convert simple_str to kstr mm: mark remap_file_pages() syscall as deprecated mm: memcontrol: remove unnecessary memcg argument from soft limit functions mm: memcontrol: clean up memcg zoneinfo lookup mm/memblock.c: call kmemleak directly from memblock_(alloc|free) mm/mempool.c: update the kmemleak stack trace for mempool allocations lib/radix-tree.c: update the kmemleak stack trace for radix tree allocations mm: introduce kmemleak_update_trace() mm/kmemleak.c: use %u to print ->checksum ...
Diffstat (limited to 'drivers/usb/serial/option.c')
-rw-r--r--drivers/usb/serial/option.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
index 948a19f0cdf7..59c3108cc136 100644
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -1731,7 +1731,6 @@ static struct usb_serial_driver option_1port_device = {
1731 .write = usb_wwan_write, 1731 .write = usb_wwan_write,
1732 .write_room = usb_wwan_write_room, 1732 .write_room = usb_wwan_write_room,
1733 .chars_in_buffer = usb_wwan_chars_in_buffer, 1733 .chars_in_buffer = usb_wwan_chars_in_buffer,
1734 .set_termios = usb_wwan_set_termios,
1735 .tiocmget = usb_wwan_tiocmget, 1734 .tiocmget = usb_wwan_tiocmget,
1736 .tiocmset = usb_wwan_tiocmset, 1735 .tiocmset = usb_wwan_tiocmset,
1737 .ioctl = usb_wwan_ioctl, 1736 .ioctl = usb_wwan_ioctl,
@@ -1906,6 +1905,7 @@ static void option_instat_callback(struct urb *urb)
1906 1905
1907 /* Resubmit urb so we continue receiving IRQ data */ 1906 /* Resubmit urb so we continue receiving IRQ data */
1908 if (status != -ESHUTDOWN && status != -ENOENT) { 1907 if (status != -ESHUTDOWN && status != -ENOENT) {
1908 usb_mark_last_busy(port->serial->dev);
1909 err = usb_submit_urb(urb, GFP_ATOMIC); 1909 err = usb_submit_urb(urb, GFP_ATOMIC);
1910 if (err) 1910 if (err)
1911 dev_dbg(dev, "%s: resubmit intr urb failed. (%d)\n", 1911 dev_dbg(dev, "%s: resubmit intr urb failed. (%d)\n",
@@ -1925,6 +1925,7 @@ static int option_send_setup(struct usb_serial_port *port)
1925 struct option_private *priv = intfdata->private; 1925 struct option_private *priv = intfdata->private;
1926 struct usb_wwan_port_private *portdata; 1926 struct usb_wwan_port_private *portdata;
1927 int val = 0; 1927 int val = 0;
1928 int res;
1928 1929
1929 portdata = usb_get_serial_port_data(port); 1930 portdata = usb_get_serial_port_data(port);
1930 1931
@@ -1933,9 +1934,17 @@ static int option_send_setup(struct usb_serial_port *port)
1933 if (portdata->rts_state) 1934 if (portdata->rts_state)
1934 val |= 0x02; 1935 val |= 0x02;
1935 1936
1936 return usb_control_msg(serial->dev, usb_rcvctrlpipe(serial->dev, 0), 1937 res = usb_autopm_get_interface(serial->interface);
1938 if (res)
1939 return res;
1940
1941 res = usb_control_msg(serial->dev, usb_sndctrlpipe(serial->dev, 0),
1937 0x22, 0x21, val, priv->bInterfaceNumber, NULL, 1942 0x22, 0x21, val, priv->bInterfaceNumber, NULL,
1938 0, USB_CTRL_SET_TIMEOUT); 1943 0, USB_CTRL_SET_TIMEOUT);
1944
1945 usb_autopm_put_interface(serial->interface);
1946
1947 return res;
1939} 1948}
1940 1949
1941MODULE_AUTHOR(DRIVER_AUTHOR); 1950MODULE_AUTHOR(DRIVER_AUTHOR);