diff options
author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-08-18 23:33:01 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-08-18 23:33:01 -0400 |
commit | bd479f293370d863953aba59130bcc7ae867dd10 (patch) | |
tree | b6987c9c622d1f98b680d6fce1447972d717761c /drivers/usb/serial | |
parent | 68c91d377c9bd14cbe35c647ed3b847f7862c958 (diff) | |
parent | b36f4be3de1b123d8601de062e7dbfc904f305fb (diff) |
Merge 3.11-rc6 into usb-next
We want these USB fixes in this branch as well.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/serial')
-rw-r--r-- | drivers/usb/serial/keyspan.c | 2 | ||||
-rw-r--r-- | drivers/usb/serial/mos7720.c | 21 | ||||
-rw-r--r-- | drivers/usb/serial/mos7840.c | 2 | ||||
-rw-r--r-- | drivers/usb/serial/ti_usb_3410_5052.c | 9 | ||||
-rw-r--r-- | drivers/usb/serial/usb_wwan.c | 20 |
5 files changed, 31 insertions, 23 deletions
diff --git a/drivers/usb/serial/keyspan.c b/drivers/usb/serial/keyspan.c index e731bbc166a0..d6960aebe246 100644 --- a/drivers/usb/serial/keyspan.c +++ b/drivers/usb/serial/keyspan.c | |||
@@ -2307,7 +2307,7 @@ static int keyspan_startup(struct usb_serial *serial) | |||
2307 | if (d_details == NULL) { | 2307 | if (d_details == NULL) { |
2308 | dev_err(&serial->dev->dev, "%s - unknown product id %x\n", | 2308 | dev_err(&serial->dev->dev, "%s - unknown product id %x\n", |
2309 | __func__, le16_to_cpu(serial->dev->descriptor.idProduct)); | 2309 | __func__, le16_to_cpu(serial->dev->descriptor.idProduct)); |
2310 | return 1; | 2310 | return -ENODEV; |
2311 | } | 2311 | } |
2312 | 2312 | ||
2313 | /* Setup private data for serial driver */ | 2313 | /* Setup private data for serial driver */ |
diff --git a/drivers/usb/serial/mos7720.c b/drivers/usb/serial/mos7720.c index 51da424327b0..b01300164fc0 100644 --- a/drivers/usb/serial/mos7720.c +++ b/drivers/usb/serial/mos7720.c | |||
@@ -90,6 +90,7 @@ struct urbtracker { | |||
90 | struct list_head urblist_entry; | 90 | struct list_head urblist_entry; |
91 | struct kref ref_count; | 91 | struct kref ref_count; |
92 | struct urb *urb; | 92 | struct urb *urb; |
93 | struct usb_ctrlrequest *setup; | ||
93 | }; | 94 | }; |
94 | 95 | ||
95 | enum mos7715_pp_modes { | 96 | enum mos7715_pp_modes { |
@@ -271,6 +272,7 @@ static void destroy_urbtracker(struct kref *kref) | |||
271 | struct mos7715_parport *mos_parport = urbtrack->mos_parport; | 272 | struct mos7715_parport *mos_parport = urbtrack->mos_parport; |
272 | 273 | ||
273 | usb_free_urb(urbtrack->urb); | 274 | usb_free_urb(urbtrack->urb); |
275 | kfree(urbtrack->setup); | ||
274 | kfree(urbtrack); | 276 | kfree(urbtrack); |
275 | kref_put(&mos_parport->ref_count, destroy_mos_parport); | 277 | kref_put(&mos_parport->ref_count, destroy_mos_parport); |
276 | } | 278 | } |
@@ -355,7 +357,6 @@ static int write_parport_reg_nonblock(struct mos7715_parport *mos_parport, | |||
355 | struct urbtracker *urbtrack; | 357 | struct urbtracker *urbtrack; |
356 | int ret_val; | 358 | int ret_val; |
357 | unsigned long flags; | 359 | unsigned long flags; |
358 | struct usb_ctrlrequest setup; | ||
359 | struct usb_serial *serial = mos_parport->serial; | 360 | struct usb_serial *serial = mos_parport->serial; |
360 | struct usb_device *usbdev = serial->dev; | 361 | struct usb_device *usbdev = serial->dev; |
361 | 362 | ||
@@ -373,14 +374,20 @@ static int write_parport_reg_nonblock(struct mos7715_parport *mos_parport, | |||
373 | kfree(urbtrack); | 374 | kfree(urbtrack); |
374 | return -ENOMEM; | 375 | return -ENOMEM; |
375 | } | 376 | } |
376 | setup.bRequestType = (__u8)0x40; | 377 | urbtrack->setup = kmalloc(sizeof(*urbtrack->setup), GFP_KERNEL); |
377 | setup.bRequest = (__u8)0x0e; | 378 | if (!urbtrack->setup) { |
378 | setup.wValue = get_reg_value(reg, dummy); | 379 | usb_free_urb(urbtrack->urb); |
379 | setup.wIndex = get_reg_index(reg); | 380 | kfree(urbtrack); |
380 | setup.wLength = 0; | 381 | return -ENOMEM; |
382 | } | ||
383 | urbtrack->setup->bRequestType = (__u8)0x40; | ||
384 | urbtrack->setup->bRequest = (__u8)0x0e; | ||
385 | urbtrack->setup->wValue = get_reg_value(reg, dummy); | ||
386 | urbtrack->setup->wIndex = get_reg_index(reg); | ||
387 | urbtrack->setup->wLength = 0; | ||
381 | usb_fill_control_urb(urbtrack->urb, usbdev, | 388 | usb_fill_control_urb(urbtrack->urb, usbdev, |
382 | usb_sndctrlpipe(usbdev, 0), | 389 | usb_sndctrlpipe(usbdev, 0), |
383 | (unsigned char *)&setup, | 390 | (unsigned char *)urbtrack->setup, |
384 | NULL, 0, async_complete, urbtrack); | 391 | NULL, 0, async_complete, urbtrack); |
385 | kref_init(&urbtrack->ref_count); | 392 | kref_init(&urbtrack->ref_count); |
386 | INIT_LIST_HEAD(&urbtrack->urblist_entry); | 393 | INIT_LIST_HEAD(&urbtrack->urblist_entry); |
diff --git a/drivers/usb/serial/mos7840.c b/drivers/usb/serial/mos7840.c index dfa678906632..fdf953539c62 100644 --- a/drivers/usb/serial/mos7840.c +++ b/drivers/usb/serial/mos7840.c | |||
@@ -2145,7 +2145,7 @@ static int mos7810_check(struct usb_serial *serial) | |||
2145 | static int mos7840_probe(struct usb_serial *serial, | 2145 | static int mos7840_probe(struct usb_serial *serial, |
2146 | const struct usb_device_id *id) | 2146 | const struct usb_device_id *id) |
2147 | { | 2147 | { |
2148 | u16 product = serial->dev->descriptor.idProduct; | 2148 | u16 product = le16_to_cpu(serial->dev->descriptor.idProduct); |
2149 | u8 *buf; | 2149 | u8 *buf; |
2150 | int device_type; | 2150 | int device_type; |
2151 | 2151 | ||
diff --git a/drivers/usb/serial/ti_usb_3410_5052.c b/drivers/usb/serial/ti_usb_3410_5052.c index 5c07d55ece7a..760b78560f67 100644 --- a/drivers/usb/serial/ti_usb_3410_5052.c +++ b/drivers/usb/serial/ti_usb_3410_5052.c | |||
@@ -1463,14 +1463,15 @@ static int ti_download_firmware(struct ti_device *tdev) | |||
1463 | char buf[32]; | 1463 | char buf[32]; |
1464 | 1464 | ||
1465 | /* try ID specific firmware first, then try generic firmware */ | 1465 | /* try ID specific firmware first, then try generic firmware */ |
1466 | sprintf(buf, "ti_usb-v%04x-p%04x.fw", dev->descriptor.idVendor, | 1466 | sprintf(buf, "ti_usb-v%04x-p%04x.fw", |
1467 | dev->descriptor.idProduct); | 1467 | le16_to_cpu(dev->descriptor.idVendor), |
1468 | le16_to_cpu(dev->descriptor.idProduct)); | ||
1468 | status = request_firmware(&fw_p, buf, &dev->dev); | 1469 | status = request_firmware(&fw_p, buf, &dev->dev); |
1469 | 1470 | ||
1470 | if (status != 0) { | 1471 | if (status != 0) { |
1471 | buf[0] = '\0'; | 1472 | buf[0] = '\0'; |
1472 | if (dev->descriptor.idVendor == MTS_VENDOR_ID) { | 1473 | if (le16_to_cpu(dev->descriptor.idVendor) == MTS_VENDOR_ID) { |
1473 | switch (dev->descriptor.idProduct) { | 1474 | switch (le16_to_cpu(dev->descriptor.idProduct)) { |
1474 | case MTS_CDMA_PRODUCT_ID: | 1475 | case MTS_CDMA_PRODUCT_ID: |
1475 | strcpy(buf, "mts_cdma.fw"); | 1476 | strcpy(buf, "mts_cdma.fw"); |
1476 | break; | 1477 | break; |
diff --git a/drivers/usb/serial/usb_wwan.c b/drivers/usb/serial/usb_wwan.c index 8257d30c4072..85365784040b 100644 --- a/drivers/usb/serial/usb_wwan.c +++ b/drivers/usb/serial/usb_wwan.c | |||
@@ -291,18 +291,18 @@ static void usb_wwan_indat_callback(struct urb *urb) | |||
291 | tty_flip_buffer_push(&port->port); | 291 | tty_flip_buffer_push(&port->port); |
292 | } else | 292 | } else |
293 | dev_dbg(dev, "%s: empty read urb received\n", __func__); | 293 | dev_dbg(dev, "%s: empty read urb received\n", __func__); |
294 | 294 | } | |
295 | /* Resubmit urb so we continue receiving */ | 295 | /* Resubmit urb so we continue receiving */ |
296 | err = usb_submit_urb(urb, GFP_ATOMIC); | 296 | err = usb_submit_urb(urb, GFP_ATOMIC); |
297 | if (err) { | 297 | if (err) { |
298 | if (err != -EPERM) { | 298 | if (err != -EPERM) { |
299 | dev_err(dev, "%s: resubmit read urb failed. (%d)\n", __func__, err); | 299 | dev_err(dev, "%s: resubmit read urb failed. (%d)\n", |
300 | /* busy also in error unless we are killed */ | 300 | __func__, err); |
301 | usb_mark_last_busy(port->serial->dev); | 301 | /* busy also in error unless we are killed */ |
302 | } | ||
303 | } else { | ||
304 | usb_mark_last_busy(port->serial->dev); | 302 | usb_mark_last_busy(port->serial->dev); |
305 | } | 303 | } |
304 | } else { | ||
305 | usb_mark_last_busy(port->serial->dev); | ||
306 | } | 306 | } |
307 | } | 307 | } |
308 | 308 | ||