diff options
Diffstat (limited to 'drivers/usb')
| -rw-r--r-- | drivers/usb/atm/cxacru.c | 3 | ||||
| -rw-r--r-- | drivers/usb/class/usbtmc.c | 4 | ||||
| -rw-r--r-- | drivers/usb/core/devio.c | 12 | ||||
| -rw-r--r-- | drivers/usb/host/ehci-q.c | 3 | ||||
| -rw-r--r-- | drivers/usb/host/ehci-sched.c | 10 | ||||
| -rw-r--r-- | drivers/usb/image/mdc800.c | 1 | ||||
| -rw-r--r-- | drivers/usb/misc/adutux.c | 6 | ||||
| -rw-r--r-- | drivers/usb/misc/vstusb.c | 1 | ||||
| -rw-r--r-- | drivers/usb/serial/cp2101.c | 1 | ||||
| -rw-r--r-- | drivers/usb/serial/ftdi_sio.c | 5 | ||||
| -rw-r--r-- | drivers/usb/serial/ftdi_sio.h | 20 | ||||
| -rw-r--r-- | drivers/usb/serial/option.c | 14 | ||||
| -rw-r--r-- | drivers/usb/storage/unusual_devs.h | 16 | ||||
| -rw-r--r-- | drivers/usb/wusbcore/wa-xfer.c | 4 |
14 files changed, 72 insertions, 28 deletions
diff --git a/drivers/usb/atm/cxacru.c b/drivers/usb/atm/cxacru.c index 5ed4ae07bac..6789089e246 100644 --- a/drivers/usb/atm/cxacru.c +++ b/drivers/usb/atm/cxacru.c | |||
| @@ -485,7 +485,7 @@ static int cxacru_cm(struct cxacru_data *instance, enum cxacru_cm_request cm, | |||
| 485 | usb_err(instance->usbatm, "requested transfer size too large (%d, %d)\n", | 485 | usb_err(instance->usbatm, "requested transfer size too large (%d, %d)\n", |
| 486 | wbuflen, rbuflen); | 486 | wbuflen, rbuflen); |
| 487 | ret = -ENOMEM; | 487 | ret = -ENOMEM; |
| 488 | goto fail; | 488 | goto err; |
| 489 | } | 489 | } |
| 490 | 490 | ||
| 491 | mutex_lock(&instance->cm_serialize); | 491 | mutex_lock(&instance->cm_serialize); |
| @@ -565,6 +565,7 @@ static int cxacru_cm(struct cxacru_data *instance, enum cxacru_cm_request cm, | |||
| 565 | dbg("cm %#x", cm); | 565 | dbg("cm %#x", cm); |
| 566 | fail: | 566 | fail: |
| 567 | mutex_unlock(&instance->cm_serialize); | 567 | mutex_unlock(&instance->cm_serialize); |
| 568 | err: | ||
| 568 | return ret; | 569 | return ret; |
| 569 | } | 570 | } |
| 570 | 571 | ||
diff --git a/drivers/usb/class/usbtmc.c b/drivers/usb/class/usbtmc.c index 0f5c05f6f9d..c40a9b284cc 100644 --- a/drivers/usb/class/usbtmc.c +++ b/drivers/usb/class/usbtmc.c | |||
| @@ -50,6 +50,7 @@ | |||
| 50 | 50 | ||
| 51 | static struct usb_device_id usbtmc_devices[] = { | 51 | static struct usb_device_id usbtmc_devices[] = { |
| 52 | { USB_INTERFACE_INFO(USB_CLASS_APP_SPEC, 3, 0), }, | 52 | { USB_INTERFACE_INFO(USB_CLASS_APP_SPEC, 3, 0), }, |
| 53 | { USB_INTERFACE_INFO(USB_CLASS_APP_SPEC, 3, 1), }, | ||
| 53 | { 0, } /* terminating entry */ | 54 | { 0, } /* terminating entry */ |
| 54 | }; | 55 | }; |
| 55 | MODULE_DEVICE_TABLE(usb, usbtmc_devices); | 56 | MODULE_DEVICE_TABLE(usb, usbtmc_devices); |
| @@ -106,12 +107,13 @@ static int usbtmc_open(struct inode *inode, struct file *filp) | |||
| 106 | { | 107 | { |
| 107 | struct usb_interface *intf; | 108 | struct usb_interface *intf; |
| 108 | struct usbtmc_device_data *data; | 109 | struct usbtmc_device_data *data; |
| 109 | int retval = -ENODEV; | 110 | int retval = 0; |
| 110 | 111 | ||
| 111 | intf = usb_find_interface(&usbtmc_driver, iminor(inode)); | 112 | intf = usb_find_interface(&usbtmc_driver, iminor(inode)); |
| 112 | if (!intf) { | 113 | if (!intf) { |
| 113 | printk(KERN_ERR KBUILD_MODNAME | 114 | printk(KERN_ERR KBUILD_MODNAME |
| 114 | ": can not find device for minor %d", iminor(inode)); | 115 | ": can not find device for minor %d", iminor(inode)); |
| 116 | retval = -ENODEV; | ||
| 115 | goto exit; | 117 | goto exit; |
| 116 | } | 118 | } |
| 117 | 119 | ||
diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c index 7513bb083c1..6585f527e38 100644 --- a/drivers/usb/core/devio.c +++ b/drivers/usb/core/devio.c | |||
| @@ -359,11 +359,6 @@ static void destroy_async(struct dev_state *ps, struct list_head *list) | |||
| 359 | spin_lock_irqsave(&ps->lock, flags); | 359 | spin_lock_irqsave(&ps->lock, flags); |
| 360 | } | 360 | } |
| 361 | spin_unlock_irqrestore(&ps->lock, flags); | 361 | spin_unlock_irqrestore(&ps->lock, flags); |
| 362 | as = async_getcompleted(ps); | ||
| 363 | while (as) { | ||
| 364 | free_async(as); | ||
| 365 | as = async_getcompleted(ps); | ||
| 366 | } | ||
| 367 | } | 362 | } |
| 368 | 363 | ||
| 369 | static void destroy_async_on_interface(struct dev_state *ps, | 364 | static void destroy_async_on_interface(struct dev_state *ps, |
| @@ -643,6 +638,7 @@ static int usbdev_release(struct inode *inode, struct file *file) | |||
| 643 | struct dev_state *ps = file->private_data; | 638 | struct dev_state *ps = file->private_data; |
| 644 | struct usb_device *dev = ps->dev; | 639 | struct usb_device *dev = ps->dev; |
| 645 | unsigned int ifnum; | 640 | unsigned int ifnum; |
| 641 | struct async *as; | ||
| 646 | 642 | ||
| 647 | usb_lock_device(dev); | 643 | usb_lock_device(dev); |
| 648 | 644 | ||
| @@ -661,6 +657,12 @@ static int usbdev_release(struct inode *inode, struct file *file) | |||
| 661 | usb_unlock_device(dev); | 657 | usb_unlock_device(dev); |
| 662 | usb_put_dev(dev); | 658 | usb_put_dev(dev); |
| 663 | put_pid(ps->disc_pid); | 659 | put_pid(ps->disc_pid); |
| 660 | |||
| 661 | as = async_getcompleted(ps); | ||
| 662 | while (as) { | ||
| 663 | free_async(as); | ||
| 664 | as = async_getcompleted(ps); | ||
| 665 | } | ||
| 664 | kfree(ps); | 666 | kfree(ps); |
| 665 | return 0; | 667 | return 0; |
| 666 | } | 668 | } |
diff --git a/drivers/usb/host/ehci-q.c b/drivers/usb/host/ehci-q.c index 3712b925b31..ecc9b66c03c 100644 --- a/drivers/usb/host/ehci-q.c +++ b/drivers/usb/host/ehci-q.c | |||
| @@ -1095,7 +1095,8 @@ static void start_unlink_async (struct ehci_hcd *ehci, struct ehci_qh *qh) | |||
| 1095 | prev->qh_next = qh->qh_next; | 1095 | prev->qh_next = qh->qh_next; |
| 1096 | wmb (); | 1096 | wmb (); |
| 1097 | 1097 | ||
| 1098 | if (unlikely (ehci_to_hcd(ehci)->state == HC_STATE_HALT)) { | 1098 | /* If the controller isn't running, we don't have to wait for it */ |
| 1099 | if (unlikely(!HC_IS_RUNNING(ehci_to_hcd(ehci)->state))) { | ||
| 1099 | /* if (unlikely (qh->reclaim != 0)) | 1100 | /* if (unlikely (qh->reclaim != 0)) |
| 1100 | * this will recurse, probably not much | 1101 | * this will recurse, probably not much |
| 1101 | */ | 1102 | */ |
diff --git a/drivers/usb/host/ehci-sched.c b/drivers/usb/host/ehci-sched.c index 07bcb931021..1d0b49e3f19 100644 --- a/drivers/usb/host/ehci-sched.c +++ b/drivers/usb/host/ehci-sched.c | |||
| @@ -1536,7 +1536,7 @@ itd_link_urb ( | |||
| 1536 | struct ehci_itd, itd_list); | 1536 | struct ehci_itd, itd_list); |
| 1537 | list_move_tail (&itd->itd_list, &stream->td_list); | 1537 | list_move_tail (&itd->itd_list, &stream->td_list); |
| 1538 | itd->stream = iso_stream_get (stream); | 1538 | itd->stream = iso_stream_get (stream); |
| 1539 | itd->urb = usb_get_urb (urb); | 1539 | itd->urb = urb; |
| 1540 | itd_init (ehci, stream, itd); | 1540 | itd_init (ehci, stream, itd); |
| 1541 | } | 1541 | } |
| 1542 | 1542 | ||
| @@ -1645,7 +1645,7 @@ itd_complete ( | |||
| 1645 | (void) disable_periodic(ehci); | 1645 | (void) disable_periodic(ehci); |
| 1646 | ehci_to_hcd(ehci)->self.bandwidth_isoc_reqs--; | 1646 | ehci_to_hcd(ehci)->self.bandwidth_isoc_reqs--; |
| 1647 | 1647 | ||
| 1648 | if (unlikely (list_empty (&stream->td_list))) { | 1648 | if (unlikely(list_is_singular(&stream->td_list))) { |
| 1649 | ehci_to_hcd(ehci)->self.bandwidth_allocated | 1649 | ehci_to_hcd(ehci)->self.bandwidth_allocated |
| 1650 | -= stream->bandwidth; | 1650 | -= stream->bandwidth; |
| 1651 | ehci_vdbg (ehci, | 1651 | ehci_vdbg (ehci, |
| @@ -1656,7 +1656,6 @@ itd_complete ( | |||
| 1656 | iso_stream_put (ehci, stream); | 1656 | iso_stream_put (ehci, stream); |
| 1657 | 1657 | ||
| 1658 | done: | 1658 | done: |
| 1659 | usb_put_urb(urb); | ||
| 1660 | itd->urb = NULL; | 1659 | itd->urb = NULL; |
| 1661 | if (ehci->clock_frame != itd->frame || itd->index[7] != -1) { | 1660 | if (ehci->clock_frame != itd->frame || itd->index[7] != -1) { |
| 1662 | /* OK to recycle this ITD now. */ | 1661 | /* OK to recycle this ITD now. */ |
| @@ -1949,7 +1948,7 @@ sitd_link_urb ( | |||
| 1949 | struct ehci_sitd, sitd_list); | 1948 | struct ehci_sitd, sitd_list); |
| 1950 | list_move_tail (&sitd->sitd_list, &stream->td_list); | 1949 | list_move_tail (&sitd->sitd_list, &stream->td_list); |
| 1951 | sitd->stream = iso_stream_get (stream); | 1950 | sitd->stream = iso_stream_get (stream); |
| 1952 | sitd->urb = usb_get_urb (urb); | 1951 | sitd->urb = urb; |
| 1953 | 1952 | ||
| 1954 | sitd_patch(ehci, stream, sitd, sched, packet); | 1953 | sitd_patch(ehci, stream, sitd, sched, packet); |
| 1955 | sitd_link (ehci, (next_uframe >> 3) % ehci->periodic_size, | 1954 | sitd_link (ehci, (next_uframe >> 3) % ehci->periodic_size, |
| @@ -2034,7 +2033,7 @@ sitd_complete ( | |||
| 2034 | (void) disable_periodic(ehci); | 2033 | (void) disable_periodic(ehci); |
| 2035 | ehci_to_hcd(ehci)->self.bandwidth_isoc_reqs--; | 2034 | ehci_to_hcd(ehci)->self.bandwidth_isoc_reqs--; |
| 2036 | 2035 | ||
| 2037 | if (list_empty (&stream->td_list)) { | 2036 | if (list_is_singular(&stream->td_list)) { |
| 2038 | ehci_to_hcd(ehci)->self.bandwidth_allocated | 2037 | ehci_to_hcd(ehci)->self.bandwidth_allocated |
| 2039 | -= stream->bandwidth; | 2038 | -= stream->bandwidth; |
| 2040 | ehci_vdbg (ehci, | 2039 | ehci_vdbg (ehci, |
| @@ -2045,7 +2044,6 @@ sitd_complete ( | |||
| 2045 | iso_stream_put (ehci, stream); | 2044 | iso_stream_put (ehci, stream); |
| 2046 | /* OK to recycle this SITD now that its completion callback ran. */ | 2045 | /* OK to recycle this SITD now that its completion callback ran. */ |
| 2047 | done: | 2046 | done: |
| 2048 | usb_put_urb(urb); | ||
| 2049 | sitd->urb = NULL; | 2047 | sitd->urb = NULL; |
| 2050 | sitd->stream = NULL; | 2048 | sitd->stream = NULL; |
| 2051 | list_move(&sitd->sitd_list, &stream->free_list); | 2049 | list_move(&sitd->sitd_list, &stream->free_list); |
diff --git a/drivers/usb/image/mdc800.c b/drivers/usb/image/mdc800.c index 878c77ca086..972f20b3406 100644 --- a/drivers/usb/image/mdc800.c +++ b/drivers/usb/image/mdc800.c | |||
| @@ -499,6 +499,7 @@ static int mdc800_usb_probe (struct usb_interface *intf, | |||
| 499 | retval = usb_register_dev(intf, &mdc800_class); | 499 | retval = usb_register_dev(intf, &mdc800_class); |
| 500 | if (retval) { | 500 | if (retval) { |
| 501 | dev_err(&intf->dev, "Not able to get a minor for this device.\n"); | 501 | dev_err(&intf->dev, "Not able to get a minor for this device.\n"); |
| 502 | mutex_unlock(&mdc800->io_lock); | ||
| 502 | return -ENODEV; | 503 | return -ENODEV; |
| 503 | } | 504 | } |
| 504 | 505 | ||
diff --git a/drivers/usb/misc/adutux.c b/drivers/usb/misc/adutux.c index 7b6922e08ed..20352654201 100644 --- a/drivers/usb/misc/adutux.c +++ b/drivers/usb/misc/adutux.c | |||
| @@ -376,7 +376,7 @@ static int adu_release(struct inode *inode, struct file *file) | |||
| 376 | if (dev->open_count <= 0) { | 376 | if (dev->open_count <= 0) { |
| 377 | dbg(1," %s : device not opened", __func__); | 377 | dbg(1," %s : device not opened", __func__); |
| 378 | retval = -ENODEV; | 378 | retval = -ENODEV; |
| 379 | goto exit; | 379 | goto unlock; |
| 380 | } | 380 | } |
| 381 | 381 | ||
| 382 | adu_release_internal(dev); | 382 | adu_release_internal(dev); |
| @@ -385,9 +385,9 @@ static int adu_release(struct inode *inode, struct file *file) | |||
| 385 | if (!dev->open_count) /* ... and we're the last user */ | 385 | if (!dev->open_count) /* ... and we're the last user */ |
| 386 | adu_delete(dev); | 386 | adu_delete(dev); |
| 387 | } | 387 | } |
| 388 | 388 | unlock: | |
| 389 | exit: | ||
| 390 | mutex_unlock(&adutux_mutex); | 389 | mutex_unlock(&adutux_mutex); |
| 390 | exit: | ||
| 391 | dbg(2," %s : leave, return value %d", __func__, retval); | 391 | dbg(2," %s : leave, return value %d", __func__, retval); |
| 392 | return retval; | 392 | return retval; |
| 393 | } | 393 | } |
diff --git a/drivers/usb/misc/vstusb.c b/drivers/usb/misc/vstusb.c index 63dff9ba73c..f26ea8dc157 100644 --- a/drivers/usb/misc/vstusb.c +++ b/drivers/usb/misc/vstusb.c | |||
| @@ -401,6 +401,7 @@ static ssize_t vstusb_write(struct file *file, const char __user *buffer, | |||
| 401 | } | 401 | } |
| 402 | 402 | ||
| 403 | if (copy_from_user(buf, buffer, count)) { | 403 | if (copy_from_user(buf, buffer, count)) { |
| 404 | mutex_unlock(&vstdev->lock); | ||
| 404 | dev_err(&dev->dev, "%s: can't copy_from_user\n", __func__); | 405 | dev_err(&dev->dev, "%s: can't copy_from_user\n", __func__); |
| 405 | retval = -EFAULT; | 406 | retval = -EFAULT; |
| 406 | goto exit; | 407 | goto exit; |
diff --git a/drivers/usb/serial/cp2101.c b/drivers/usb/serial/cp2101.c index 027f4b7dde8..9b4082b58c5 100644 --- a/drivers/usb/serial/cp2101.c +++ b/drivers/usb/serial/cp2101.c | |||
| @@ -79,6 +79,7 @@ static struct usb_device_id id_table [] = { | |||
| 79 | { USB_DEVICE(0x10C4, 0x814A) }, /* West Mountain Radio RIGblaster P&P */ | 79 | { USB_DEVICE(0x10C4, 0x814A) }, /* West Mountain Radio RIGblaster P&P */ |
| 80 | { USB_DEVICE(0x10C4, 0x814B) }, /* West Mountain Radio RIGtalk */ | 80 | { USB_DEVICE(0x10C4, 0x814B) }, /* West Mountain Radio RIGtalk */ |
| 81 | { USB_DEVICE(0x10C4, 0x815E) }, /* Helicomm IP-Link 1220-DVM */ | 81 | { USB_DEVICE(0x10C4, 0x815E) }, /* Helicomm IP-Link 1220-DVM */ |
| 82 | { USB_DEVICE(0x10C4, 0x819F) }, /* MJS USB Toslink Switcher */ | ||
| 82 | { USB_DEVICE(0x10C4, 0x81A6) }, /* ThinkOptics WavIt */ | 83 | { USB_DEVICE(0x10C4, 0x81A6) }, /* ThinkOptics WavIt */ |
| 83 | { USB_DEVICE(0x10C4, 0x81AC) }, /* MSD Dash Hawk */ | 84 | { USB_DEVICE(0x10C4, 0x81AC) }, /* MSD Dash Hawk */ |
| 84 | { USB_DEVICE(0x10C4, 0x81C8) }, /* Lipowsky Industrie Elektronik GmbH, Baby-JTAG */ | 85 | { USB_DEVICE(0x10C4, 0x81C8) }, /* Lipowsky Industrie Elektronik GmbH, Baby-JTAG */ |
diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c index f92f4d77337..ae84c326a54 100644 --- a/drivers/usb/serial/ftdi_sio.c +++ b/drivers/usb/serial/ftdi_sio.c | |||
| @@ -663,6 +663,11 @@ static struct usb_device_id id_table_combined [] = { | |||
| 663 | { USB_DEVICE(ALTI2_VID, ALTI2_N3_PID) }, | 663 | { USB_DEVICE(ALTI2_VID, ALTI2_N3_PID) }, |
| 664 | { USB_DEVICE(FTDI_VID, DIEBOLD_BCS_SE923_PID) }, | 664 | { USB_DEVICE(FTDI_VID, DIEBOLD_BCS_SE923_PID) }, |
| 665 | { USB_DEVICE(FTDI_VID, FTDI_NDI_HUC_PID) }, | 665 | { USB_DEVICE(FTDI_VID, FTDI_NDI_HUC_PID) }, |
| 666 | { USB_DEVICE(ATMEL_VID, STK541_PID) }, | ||
| 667 | { USB_DEVICE(DE_VID, STB_PID) }, | ||
| 668 | { USB_DEVICE(DE_VID, WHT_PID) }, | ||
| 669 | { USB_DEVICE(ADI_VID, ADI_GNICE_PID), | ||
| 670 | .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, | ||
| 666 | { }, /* Optional parameter entry */ | 671 | { }, /* Optional parameter entry */ |
| 667 | { } /* Terminating entry */ | 672 | { } /* Terminating entry */ |
| 668 | }; | 673 | }; |
diff --git a/drivers/usb/serial/ftdi_sio.h b/drivers/usb/serial/ftdi_sio.h index e300c840f8c..daaf63db0b5 100644 --- a/drivers/usb/serial/ftdi_sio.h +++ b/drivers/usb/serial/ftdi_sio.h | |||
| @@ -893,6 +893,26 @@ | |||
| 893 | #define DIEBOLD_BCS_SE923_PID 0xfb99 | 893 | #define DIEBOLD_BCS_SE923_PID 0xfb99 |
| 894 | 894 | ||
| 895 | /* | 895 | /* |
| 896 | * Atmel STK541 | ||
| 897 | */ | ||
| 898 | #define ATMEL_VID 0x03eb /* Vendor ID */ | ||
| 899 | #define STK541_PID 0x2109 /* Zigbee Controller */ | ||
| 900 | |||
| 901 | /* | ||
| 902 | * Dresden Elektronic Sensor Terminal Board | ||
| 903 | */ | ||
| 904 | #define DE_VID 0x1cf1 /* Vendor ID */ | ||
| 905 | #define STB_PID 0x0001 /* Sensor Terminal Board */ | ||
| 906 | #define WHT_PID 0x0004 /* Wireless Handheld Terminal */ | ||
| 907 | |||
| 908 | /* | ||
| 909 | * Blackfin gnICE JTAG | ||
| 910 | * http://docs.blackfin.uclinux.org/doku.php?id=hw:jtag:gnice | ||
| 911 | */ | ||
| 912 | #define ADI_VID 0x0456 | ||
| 913 | #define ADI_GNICE_PID 0xF000 | ||
| 914 | |||
| 915 | /* | ||
| 896 | * BmRequestType: 1100 0000b | 916 | * BmRequestType: 1100 0000b |
| 897 | * bRequest: FTDI_E2_READ | 917 | * bRequest: FTDI_E2_READ |
| 898 | * wValue: 0 | 918 | * wValue: 0 |
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c index b7c132bded7..61ebddc4849 100644 --- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c | |||
| @@ -89,6 +89,7 @@ static int option_send_setup(struct tty_struct *tty, struct usb_serial_port *po | |||
| 89 | #define OPTION_PRODUCT_ETNA_MODEM_GT 0x7041 | 89 | #define OPTION_PRODUCT_ETNA_MODEM_GT 0x7041 |
| 90 | #define OPTION_PRODUCT_ETNA_MODEM_EX 0x7061 | 90 | #define OPTION_PRODUCT_ETNA_MODEM_EX 0x7061 |
| 91 | #define OPTION_PRODUCT_ETNA_KOI_MODEM 0x7100 | 91 | #define OPTION_PRODUCT_ETNA_KOI_MODEM 0x7100 |
| 92 | #define OPTION_PRODUCT_GTM380_MODEM 0x7201 | ||
| 92 | 93 | ||
| 93 | #define HUAWEI_VENDOR_ID 0x12D1 | 94 | #define HUAWEI_VENDOR_ID 0x12D1 |
| 94 | #define HUAWEI_PRODUCT_E600 0x1001 | 95 | #define HUAWEI_PRODUCT_E600 0x1001 |
| @@ -197,6 +198,7 @@ static int option_send_setup(struct tty_struct *tty, struct usb_serial_port *po | |||
| 197 | /* OVATION PRODUCTS */ | 198 | /* OVATION PRODUCTS */ |
| 198 | #define NOVATELWIRELESS_PRODUCT_MC727 0x4100 | 199 | #define NOVATELWIRELESS_PRODUCT_MC727 0x4100 |
| 199 | #define NOVATELWIRELESS_PRODUCT_MC950D 0x4400 | 200 | #define NOVATELWIRELESS_PRODUCT_MC950D 0x4400 |
| 201 | #define NOVATELWIRELESS_PRODUCT_U727 0x5010 | ||
| 200 | 202 | ||
| 201 | /* FUTURE NOVATEL PRODUCTS */ | 203 | /* FUTURE NOVATEL PRODUCTS */ |
| 202 | #define NOVATELWIRELESS_PRODUCT_EVDO_FULLSPEED 0X6000 | 204 | #define NOVATELWIRELESS_PRODUCT_EVDO_FULLSPEED 0X6000 |
| @@ -288,15 +290,11 @@ static int option_send_setup(struct tty_struct *tty, struct usb_serial_port *po | |||
| 288 | 290 | ||
| 289 | /* ZTE PRODUCTS */ | 291 | /* ZTE PRODUCTS */ |
| 290 | #define ZTE_VENDOR_ID 0x19d2 | 292 | #define ZTE_VENDOR_ID 0x19d2 |
| 293 | #define ZTE_PRODUCT_MF622 0x0001 | ||
| 291 | #define ZTE_PRODUCT_MF628 0x0015 | 294 | #define ZTE_PRODUCT_MF628 0x0015 |
| 292 | #define ZTE_PRODUCT_MF626 0x0031 | 295 | #define ZTE_PRODUCT_MF626 0x0031 |
| 293 | #define ZTE_PRODUCT_CDMA_TECH 0xfffe | 296 | #define ZTE_PRODUCT_CDMA_TECH 0xfffe |
| 294 | 297 | ||
| 295 | /* Ericsson products */ | ||
| 296 | #define ERICSSON_VENDOR_ID 0x0bdb | ||
| 297 | #define ERICSSON_PRODUCT_F3507G_1 0x1900 | ||
| 298 | #define ERICSSON_PRODUCT_F3507G_2 0x1902 | ||
| 299 | |||
| 300 | #define BENQ_VENDOR_ID 0x04a5 | 298 | #define BENQ_VENDOR_ID 0x04a5 |
| 301 | #define BENQ_PRODUCT_H10 0x4068 | 299 | #define BENQ_PRODUCT_H10 0x4068 |
| 302 | 300 | ||
| @@ -325,6 +323,7 @@ static struct usb_device_id option_ids[] = { | |||
| 325 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_ETNA_MODEM_GT) }, | 323 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_ETNA_MODEM_GT) }, |
| 326 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_ETNA_MODEM_EX) }, | 324 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_ETNA_MODEM_EX) }, |
| 327 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_ETNA_KOI_MODEM) }, | 325 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_ETNA_KOI_MODEM) }, |
| 326 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_GTM380_MODEM) }, | ||
| 328 | { USB_DEVICE(QUANTA_VENDOR_ID, QUANTA_PRODUCT_Q101) }, | 327 | { USB_DEVICE(QUANTA_VENDOR_ID, QUANTA_PRODUCT_Q101) }, |
| 329 | { USB_DEVICE(QUANTA_VENDOR_ID, QUANTA_PRODUCT_Q111) }, | 328 | { USB_DEVICE(QUANTA_VENDOR_ID, QUANTA_PRODUCT_Q111) }, |
| 330 | { USB_DEVICE(QUANTA_VENDOR_ID, QUANTA_PRODUCT_GLX) }, | 329 | { USB_DEVICE(QUANTA_VENDOR_ID, QUANTA_PRODUCT_GLX) }, |
| @@ -415,6 +414,7 @@ static struct usb_device_id option_ids[] = { | |||
| 415 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EU870D) }, /* Novatel EU850D/EU860D/EU870D */ | 414 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EU870D) }, /* Novatel EU850D/EU860D/EU870D */ |
| 416 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_MC950D) }, /* Novatel MC930D/MC950D */ | 415 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_MC950D) }, /* Novatel MC930D/MC950D */ |
| 417 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_MC727) }, /* Novatel MC727/U727/USB727 */ | 416 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_MC727) }, /* Novatel MC727/U727/USB727 */ |
| 417 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_U727) }, /* Novatel MC727/U727/USB727 */ | ||
| 418 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_FULLSPEED) }, /* Novatel EVDO product */ | 418 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_FULLSPEED) }, /* Novatel EVDO product */ |
| 419 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_FULLSPEED) }, /* Novatel HSPA product */ | 419 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_FULLSPEED) }, /* Novatel HSPA product */ |
| 420 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_EMBEDDED_FULLSPEED) }, /* Novatel EVDO Embedded product */ | 420 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_EMBEDDED_FULLSPEED) }, /* Novatel EVDO Embedded product */ |
| @@ -442,7 +442,6 @@ static struct usb_device_id option_ids[] = { | |||
| 442 | { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5520_MINICARD_CINGULAR) }, /* Dell Wireless HSDPA 5520 == Novatel Expedite EU860D */ | 442 | { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5520_MINICARD_CINGULAR) }, /* Dell Wireless HSDPA 5520 == Novatel Expedite EU860D */ |
| 443 | { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5520_MINICARD_GENERIC_L) }, /* Dell Wireless HSDPA 5520 */ | 443 | { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5520_MINICARD_GENERIC_L) }, /* Dell Wireless HSDPA 5520 */ |
| 444 | { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5520_MINICARD_GENERIC_I) }, /* Dell Wireless 5520 Voda I Mobile Broadband (3G HSDPA) Minicard */ | 444 | { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5520_MINICARD_GENERIC_I) }, /* Dell Wireless 5520 Voda I Mobile Broadband (3G HSDPA) Minicard */ |
| 445 | { USB_DEVICE(DELL_VENDOR_ID, 0x8147) }, /* Dell Wireless 5530 Mobile Broadband (3G HSPA) Mini-Card */ | ||
| 446 | { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5730_MINICARD_SPRINT) }, /* Dell Wireless 5730 Mobile Broadband EVDO/HSPA Mini-Card */ | 445 | { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5730_MINICARD_SPRINT) }, /* Dell Wireless 5730 Mobile Broadband EVDO/HSPA Mini-Card */ |
| 447 | { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5730_MINICARD_TELUS) }, /* Dell Wireless 5730 Mobile Broadband EVDO/HSPA Mini-Card */ | 446 | { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5730_MINICARD_TELUS) }, /* Dell Wireless 5730 Mobile Broadband EVDO/HSPA Mini-Card */ |
| 448 | { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5730_MINICARD_VZW) }, /* Dell Wireless 5730 Mobile Broadband EVDO/HSPA Mini-Card */ | 447 | { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5730_MINICARD_VZW) }, /* Dell Wireless 5730 Mobile Broadband EVDO/HSPA Mini-Card */ |
| @@ -510,11 +509,10 @@ static struct usb_device_id option_ids[] = { | |||
| 510 | { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6613)}, /* Onda H600/ZTE MF330 */ | 509 | { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6613)}, /* Onda H600/ZTE MF330 */ |
| 511 | { USB_DEVICE(MAXON_VENDOR_ID, 0x6280) }, /* BP3-USB & BP3-EXT HSDPA */ | 510 | { USB_DEVICE(MAXON_VENDOR_ID, 0x6280) }, /* BP3-USB & BP3-EXT HSDPA */ |
| 512 | { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864E) }, | 511 | { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864E) }, |
| 512 | { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_MF622) }, | ||
| 513 | { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_MF626) }, | 513 | { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_MF626) }, |
| 514 | { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_MF628) }, | 514 | { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_MF628) }, |
| 515 | { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_CDMA_TECH) }, | 515 | { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_CDMA_TECH) }, |
| 516 | { USB_DEVICE(ERICSSON_VENDOR_ID, ERICSSON_PRODUCT_F3507G_1) }, | ||
| 517 | { USB_DEVICE(ERICSSON_VENDOR_ID, ERICSSON_PRODUCT_F3507G_2) }, | ||
| 518 | { USB_DEVICE(BENQ_VENDOR_ID, BENQ_PRODUCT_H10) }, | 516 | { USB_DEVICE(BENQ_VENDOR_ID, BENQ_PRODUCT_H10) }, |
| 519 | { USB_DEVICE(0x1da5, 0x4515) }, /* BenQ H20 */ | 517 | { USB_DEVICE(0x1da5, 0x4515) }, /* BenQ H20 */ |
| 520 | { } /* Terminating entry */ | 518 | { } /* Terminating entry */ |
diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h index 6f59c8e510e..cfde74a6faa 100644 --- a/drivers/usb/storage/unusual_devs.h +++ b/drivers/usb/storage/unusual_devs.h | |||
| @@ -226,7 +226,7 @@ UNUSUAL_DEV( 0x0421, 0x047c, 0x0370, 0x0610, | |||
| 226 | US_FL_MAX_SECTORS_64 ), | 226 | US_FL_MAX_SECTORS_64 ), |
| 227 | 227 | ||
| 228 | /* Reported by Manuel Osdoba <manuel.osdoba@tu-ilmenau.de> */ | 228 | /* Reported by Manuel Osdoba <manuel.osdoba@tu-ilmenau.de> */ |
| 229 | UNUSUAL_DEV( 0x0421, 0x0492, 0x0452, 0x0452, | 229 | UNUSUAL_DEV( 0x0421, 0x0492, 0x0452, 0x9999, |
| 230 | "Nokia", | 230 | "Nokia", |
| 231 | "Nokia 6233", | 231 | "Nokia 6233", |
| 232 | US_SC_DEVICE, US_PR_DEVICE, NULL, | 232 | US_SC_DEVICE, US_PR_DEVICE, NULL, |
| @@ -951,7 +951,9 @@ UNUSUAL_DEV( 0x066f, 0x8000, 0x0001, 0x0001, | |||
| 951 | US_FL_FIX_CAPACITY ), | 951 | US_FL_FIX_CAPACITY ), |
| 952 | 952 | ||
| 953 | /* Reported by Richard -=[]=- <micro_flyer@hotmail.com> */ | 953 | /* Reported by Richard -=[]=- <micro_flyer@hotmail.com> */ |
| 954 | UNUSUAL_DEV( 0x067b, 0x2507, 0x0100, 0x0100, | 954 | /* Change to bcdDeviceMin (0x0100 to 0x0001) reported by |
| 955 | * Thomas Bartosik <tbartdev@gmx-topmail.de> */ | ||
| 956 | UNUSUAL_DEV( 0x067b, 0x2507, 0x0001, 0x0100, | ||
| 955 | "Prolific Technology Inc.", | 957 | "Prolific Technology Inc.", |
| 956 | "Mass Storage Device", | 958 | "Mass Storage Device", |
| 957 | US_SC_DEVICE, US_PR_DEVICE, NULL, | 959 | US_SC_DEVICE, US_PR_DEVICE, NULL, |
| @@ -1390,6 +1392,16 @@ UNUSUAL_DEV( 0x0af0, 0x7401, 0x0000, 0x0000, | |||
| 1390 | US_SC_DEVICE, US_PR_DEVICE, NULL, | 1392 | US_SC_DEVICE, US_PR_DEVICE, NULL, |
| 1391 | 0 ), | 1393 | 0 ), |
| 1392 | 1394 | ||
| 1395 | /* Reported by Jan Dumon <j.dumon@option.com> | ||
| 1396 | * This device (wrongly) has a vendor-specific device descriptor. | ||
| 1397 | * The entry is needed so usb-storage can bind to it's mass-storage | ||
| 1398 | * interface as an interface driver */ | ||
| 1399 | UNUSUAL_DEV( 0x0af0, 0x7501, 0x0000, 0x0000, | ||
| 1400 | "Option", | ||
| 1401 | "GI 0431 SD-Card", | ||
| 1402 | US_SC_DEVICE, US_PR_DEVICE, NULL, | ||
| 1403 | 0 ), | ||
| 1404 | |||
| 1393 | /* Reported by Ben Efros <ben@pc-doctor.com> */ | 1405 | /* Reported by Ben Efros <ben@pc-doctor.com> */ |
| 1394 | UNUSUAL_DEV( 0x0bc2, 0x3010, 0x0000, 0x0000, | 1406 | UNUSUAL_DEV( 0x0bc2, 0x3010, 0x0000, 0x0000, |
| 1395 | "Seagate", | 1407 | "Seagate", |
diff --git a/drivers/usb/wusbcore/wa-xfer.c b/drivers/usb/wusbcore/wa-xfer.c index 238a96aee3a..613a5fc490d 100644 --- a/drivers/usb/wusbcore/wa-xfer.c +++ b/drivers/usb/wusbcore/wa-xfer.c | |||
| @@ -921,8 +921,10 @@ static void wa_urb_enqueue_b(struct wa_xfer *xfer) | |||
| 921 | result = -ENODEV; | 921 | result = -ENODEV; |
| 922 | /* FIXME: segmentation broken -- kills DWA */ | 922 | /* FIXME: segmentation broken -- kills DWA */ |
| 923 | mutex_lock(&wusbhc->mutex); /* get a WUSB dev */ | 923 | mutex_lock(&wusbhc->mutex); /* get a WUSB dev */ |
| 924 | if (urb->dev == NULL) | 924 | if (urb->dev == NULL) { |
| 925 | mutex_unlock(&wusbhc->mutex); | ||
| 925 | goto error_dev_gone; | 926 | goto error_dev_gone; |
| 927 | } | ||
| 926 | wusb_dev = __wusb_dev_get_by_usb_dev(wusbhc, urb->dev); | 928 | wusb_dev = __wusb_dev_get_by_usb_dev(wusbhc, urb->dev); |
| 927 | if (wusb_dev == NULL) { | 929 | if (wusb_dev == NULL) { |
| 928 | mutex_unlock(&wusbhc->mutex); | 930 | mutex_unlock(&wusbhc->mutex); |
