From b646b061b633bdb8b8d0c4f15ea1ad67374cc1e7 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Tue, 22 Nov 2011 13:28:48 -0800 Subject: [PATCH] 3.0 patches added patches: usb-add-quirk-for-logitech-c600-web-cam.patch usb-ark3116-initialisation-fix.patch usb-cdc-acm-fix-disconnect-vs-close-race.patch usb-ehci-fix-hub-tt-scheduling-issue-with-iso-transfer.patch usb-fix-corruption-issue-in-usb-ftdi-driver-ftdi_sio.c.patch usb-option-add-pid-of-huawei-e173s-3g-modem.patch usb-option-release-new-pid-for-zte-3g-modem.patch usb-quirks-adding-more-quirky-webcams-to-avoid-squeaky-audio.patch usb-serial-pl2303-rm-duplicate-id.patch usb-storage-accept-8020i-protocol-commands-longer-than-12-bytes.patch usb-workaround-for-bug-in-old-version-of-gcc.patch --- queue-3.0/series | 11 ++ ...-add-quirk-for-logitech-c600-web-cam.patch | 31 ++++++ .../usb-ark3116-initialisation-fix.patch | 54 +++++++++ ...cdc-acm-fix-disconnect-vs-close-race.patch | 78 +++++++++++++ ...t-scheduling-issue-with-iso-transfer.patch | 104 ++++++++++++++++++ ...-issue-in-usb-ftdi-driver-ftdi_sio.c.patch | 66 +++++++++++ ...ion-add-pid-of-huawei-e173s-3g-modem.patch | 34 ++++++ ...ion-release-new-pid-for-zte-3g-modem.patch | 64 +++++++++++ ...uirky-webcams-to-avoid-squeaky-audio.patch | 60 ++++++++++ .../usb-serial-pl2303-rm-duplicate-id.patch | 58 ++++++++++ ...otocol-commands-longer-than-12-bytes.patch | 54 +++++++++ ...around-for-bug-in-old-version-of-gcc.patch | 51 +++++++++ 12 files changed, 665 insertions(+) create mode 100644 queue-3.0/usb-add-quirk-for-logitech-c600-web-cam.patch create mode 100644 queue-3.0/usb-ark3116-initialisation-fix.patch create mode 100644 queue-3.0/usb-cdc-acm-fix-disconnect-vs-close-race.patch create mode 100644 queue-3.0/usb-ehci-fix-hub-tt-scheduling-issue-with-iso-transfer.patch create mode 100644 queue-3.0/usb-fix-corruption-issue-in-usb-ftdi-driver-ftdi_sio.c.patch create mode 100644 queue-3.0/usb-option-add-pid-of-huawei-e173s-3g-modem.patch create mode 100644 queue-3.0/usb-option-release-new-pid-for-zte-3g-modem.patch create mode 100644 queue-3.0/usb-quirks-adding-more-quirky-webcams-to-avoid-squeaky-audio.patch create mode 100644 queue-3.0/usb-serial-pl2303-rm-duplicate-id.patch create mode 100644 queue-3.0/usb-storage-accept-8020i-protocol-commands-longer-than-12-bytes.patch create mode 100644 queue-3.0/usb-workaround-for-bug-in-old-version-of-gcc.patch diff --git a/queue-3.0/series b/queue-3.0/series index 2ab2f32eefa..f9541451804 100644 --- a/queue-3.0/series +++ b/queue-3.0/series @@ -29,3 +29,14 @@ xhci-set-slot-and-ep0-flags-for-address-command.patch usb-xhci-clear-warm-reset-change-event-during-init.patch usb-xhci-fix-lockdep-warning-on-endpoint-timeout.patch usb-xhci-resume-root-hubs-when-the-controller-resumes.patch +usb-option-release-new-pid-for-zte-3g-modem.patch +usb-option-add-pid-of-huawei-e173s-3g-modem.patch +usb-serial-pl2303-rm-duplicate-id.patch +usb-cdc-acm-fix-disconnect-vs-close-race.patch +usb-workaround-for-bug-in-old-version-of-gcc.patch +usb-ark3116-initialisation-fix.patch +usb-fix-corruption-issue-in-usb-ftdi-driver-ftdi_sio.c.patch +usb-storage-accept-8020i-protocol-commands-longer-than-12-bytes.patch +usb-ehci-fix-hub-tt-scheduling-issue-with-iso-transfer.patch +usb-add-quirk-for-logitech-c600-web-cam.patch +usb-quirks-adding-more-quirky-webcams-to-avoid-squeaky-audio.patch diff --git a/queue-3.0/usb-add-quirk-for-logitech-c600-web-cam.patch b/queue-3.0/usb-add-quirk-for-logitech-c600-web-cam.patch new file mode 100644 index 00000000000..1bd5bf78a7c --- /dev/null +++ b/queue-3.0/usb-add-quirk-for-logitech-c600-web-cam.patch @@ -0,0 +1,31 @@ +From 60c71ca972a2dd3fd9d0165b405361c8ad48349b Mon Sep 17 00:00:00 2001 +From: Josh Boyer +Date: Wed, 26 Oct 2011 13:53:17 -0400 +Subject: USB: add quirk for Logitech C600 web cam + +From: Josh Boyer + +commit 60c71ca972a2dd3fd9d0165b405361c8ad48349b upstream. + +We've had another report of the "chipmunk" sound on a Logitech C600 webcam. +This patch resolves the issue. + +Signed-off-by: Josh Boyer +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/core/quirks.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/drivers/usb/core/quirks.c ++++ b/drivers/usb/core/quirks.c +@@ -50,6 +50,9 @@ static const struct usb_device_id usb_qu + /* Logitech Webcam B/C500 */ + { USB_DEVICE(0x046d, 0x0807), .driver_info = USB_QUIRK_RESET_RESUME }, + ++ /* Logitech Webcam C600 */ ++ { USB_DEVICE(0x046d, 0x0808), .driver_info = USB_QUIRK_RESET_RESUME }, ++ + /* Logitech Webcam Pro 9000 */ + { USB_DEVICE(0x046d, 0x0809), .driver_info = USB_QUIRK_RESET_RESUME }, + diff --git a/queue-3.0/usb-ark3116-initialisation-fix.patch b/queue-3.0/usb-ark3116-initialisation-fix.patch new file mode 100644 index 00000000000..8481e607702 --- /dev/null +++ b/queue-3.0/usb-ark3116-initialisation-fix.patch @@ -0,0 +1,54 @@ +From 583182ba5f02c8c9be82ea550f2051eaec15b975 Mon Sep 17 00:00:00 2001 +From: Bart Hartgers +Date: Wed, 26 Oct 2011 13:29:42 +0200 +Subject: USB: ark3116 initialisation fix + +From: Bart Hartgers + +commit 583182ba5f02c8c9be82ea550f2051eaec15b975 upstream. + +This patch for the usb serial ark3116 driver fixes an initialisation +ordering bug that gets triggered on hotplug when using at least recent +debian/ubuntu userspace. Without it, ark3116 serial cables don't work. + +Signed-off-by: Bart Hartgers +Tested-by: law_ence.dev@ntlworld.com +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/ark3116.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +--- a/drivers/usb/serial/ark3116.c ++++ b/drivers/usb/serial/ark3116.c +@@ -42,7 +42,7 @@ static int debug; + * Version information + */ + +-#define DRIVER_VERSION "v0.6" ++#define DRIVER_VERSION "v0.7" + #define DRIVER_AUTHOR "Bart Hartgers " + #define DRIVER_DESC "USB ARK3116 serial/IrDA driver" + #define DRIVER_DEV_DESC "ARK3116 RS232/IrDA" +@@ -380,10 +380,6 @@ static int ark3116_open(struct tty_struc + goto err_out; + } + +- /* setup termios */ +- if (tty) +- ark3116_set_termios(tty, port, NULL); +- + /* remove any data still left: also clears error state */ + ark3116_read_reg(serial, UART_RX, buf); + +@@ -406,6 +402,10 @@ static int ark3116_open(struct tty_struc + /* enable DMA */ + ark3116_write_reg(port->serial, UART_FCR, UART_FCR_DMA_SELECT); + ++ /* setup termios */ ++ if (tty) ++ ark3116_set_termios(tty, port, NULL); ++ + err_out: + kfree(buf); + return result; diff --git a/queue-3.0/usb-cdc-acm-fix-disconnect-vs-close-race.patch b/queue-3.0/usb-cdc-acm-fix-disconnect-vs-close-race.patch new file mode 100644 index 00000000000..f4c236c0109 --- /dev/null +++ b/queue-3.0/usb-cdc-acm-fix-disconnect-vs-close-race.patch @@ -0,0 +1,78 @@ +From 5dc2470c602da8851907ec18942cd876c3b4ecc1 Mon Sep 17 00:00:00 2001 +From: Havard Skinnemoen +Date: Wed, 9 Nov 2011 13:47:38 -0800 +Subject: USB: cdc-acm: Fix disconnect() vs close() race + +From: Havard Skinnemoen + +commit 5dc2470c602da8851907ec18942cd876c3b4ecc1 upstream. + +There's a race between the USB disconnect handler and the TTY close +handler which may cause the acm object to be freed while it's still +being used. This may lead to things like + +http://article.gmane.org/gmane.linux.usb.general/54250 + +and + +https://lkml.org/lkml/2011/5/29/64 + +This is the simplest fix I could come up with. Holding on to open_mutex +while closing the TTY device prevents acm_disconnect() from freeing the +acm object between acm->port.count drops to 0 and the TTY side of the +cleanups are finalized. + +Signed-off-by: Havard Skinnemoen +Cc: Oliver Neukum +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/class/cdc-acm.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +--- a/drivers/usb/class/cdc-acm.c ++++ b/drivers/usb/class/cdc-acm.c +@@ -539,7 +539,6 @@ static void acm_port_down(struct acm *ac + { + int i; + +- mutex_lock(&open_mutex); + if (acm->dev) { + usb_autopm_get_interface(acm->control); + acm_set_control(acm, acm->ctrlout = 0); +@@ -551,14 +550,15 @@ static void acm_port_down(struct acm *ac + acm->control->needs_remote_wakeup = 0; + usb_autopm_put_interface(acm->control); + } +- mutex_unlock(&open_mutex); + } + + static void acm_tty_hangup(struct tty_struct *tty) + { + struct acm *acm = tty->driver_data; + tty_port_hangup(&acm->port); ++ mutex_lock(&open_mutex); + acm_port_down(acm); ++ mutex_unlock(&open_mutex); + } + + static void acm_tty_close(struct tty_struct *tty, struct file *filp) +@@ -569,8 +569,9 @@ static void acm_tty_close(struct tty_str + shutdown */ + if (!acm) + return; ++ ++ mutex_lock(&open_mutex); + if (tty_port_close_start(&acm->port, tty, filp) == 0) { +- mutex_lock(&open_mutex); + if (!acm->dev) { + tty_port_tty_set(&acm->port, NULL); + acm_tty_unregister(acm); +@@ -582,6 +583,7 @@ static void acm_tty_close(struct tty_str + acm_port_down(acm); + tty_port_close_end(&acm->port, tty); + tty_port_tty_set(&acm->port, NULL); ++ mutex_unlock(&open_mutex); + } + + static int acm_tty_write(struct tty_struct *tty, diff --git a/queue-3.0/usb-ehci-fix-hub-tt-scheduling-issue-with-iso-transfer.patch b/queue-3.0/usb-ehci-fix-hub-tt-scheduling-issue-with-iso-transfer.patch new file mode 100644 index 00000000000..bef61b82c44 --- /dev/null +++ b/queue-3.0/usb-ehci-fix-hub-tt-scheduling-issue-with-iso-transfer.patch @@ -0,0 +1,104 @@ +From 811c926c538f7e8d3c08b630dd5844efd7e000f6 Mon Sep 17 00:00:00 2001 +From: Thomas Poussevin +Date: Thu, 27 Oct 2011 18:46:48 +0200 +Subject: USB: EHCI: fix HUB TT scheduling issue with iso transfer + +From: Thomas Poussevin + +commit 811c926c538f7e8d3c08b630dd5844efd7e000f6 upstream. + +The current TT scheduling doesn't allow to play and then record on a +full-speed device connected to a high speed hub. + +The IN iso stream can only start on the first uframe (0-2 for a 165 us) +because of CSPLIT transactions. +For the OUT iso stream there no such restriction. uframe 0-5 are possible. + +The idea of this patch is that the first uframe are precious (for IN TT iso +stream) and we should allocate the last uframes first if possible. + +For that we reverse the order of uframe allocation (last uframe first). + +Here an example : + +hid interrupt stream +---------------------------------------------------------------------- +uframe | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | +---------------------------------------------------------------------- +max_tt_usecs | 125 | 125 | 125 | 125 | 125 | 125 | 30 | 0 | +---------------------------------------------------------------------- +used usecs on a frame | 13 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +---------------------------------------------------------------------- + +iso OUT stream +---------------------------------------------------------------------- +uframe | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | +---------------------------------------------------------------------- +max_tt_usecs | 125 | 125 | 125 | 125 | 125 | 125 | 30 | 0 | +---------------------------------------------------------------------- +used usecs on a frame | 13 | 125 | 39 | 0 | 0 | 0 | 0 | 0 | +---------------------------------------------------------------------- + +There no place for iso IN stream (uframe 0-2 are used) and we got "cannot +submit datapipe for urb 0, error -28: not enough bandwidth" error. + +With the patch this become. + +iso OUT stream +---------------------------------------------------------------------- +uframe | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | +---------------------------------------------------------------------- +max_tt_usecs | 125 | 125 | 125 | 125 | 125 | 125 | 30 | 0 | +---------------------------------------------------------------------- +used usecs on a frame | 13 | 0 | 0 | 0 | 125 | 39 | 0 | 0 | +---------------------------------------------------------------------- + +iso IN stream +---------------------------------------------------------------------- +uframe | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | +---------------------------------------------------------------------- +max_tt_usecs | 125 | 125 | 125 | 125 | 125 | 125 | 30 | 0 | +---------------------------------------------------------------------- +used usecs on a frame | 13 | 0 | 125 | 40 | 125 | 39 | 0 | 0 | +---------------------------------------------------------------------- + +Signed-off-by: Matthieu Castet +Signed-off-by: Thomas Poussevin +Signed-off-by: Alan Stern +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/host/ehci-sched.c | 15 ++++++++++----- + 1 file changed, 10 insertions(+), 5 deletions(-) + +--- a/drivers/usb/host/ehci-sched.c ++++ b/drivers/usb/host/ehci-sched.c +@@ -1483,10 +1483,15 @@ iso_stream_schedule ( + + /* NOTE: assumes URB_ISO_ASAP, to limit complexity/bugs */ + +- /* find a uframe slot with enough bandwidth */ +- next = start + period; +- for (; start < next; start++) { +- ++ /* find a uframe slot with enough bandwidth. ++ * Early uframes are more precious because full-speed ++ * iso IN transfers can't use late uframes, ++ * and therefore they should be allocated last. ++ */ ++ next = start; ++ start += period; ++ do { ++ start--; + /* check schedule: enough space? */ + if (stream->highspeed) { + if (itd_slot_ok(ehci, mod, start, +@@ -1499,7 +1504,7 @@ iso_stream_schedule ( + start, sched, period)) + break; + } +- } ++ } while (start > next); + + /* no room in the schedule */ + if (start == next) { diff --git a/queue-3.0/usb-fix-corruption-issue-in-usb-ftdi-driver-ftdi_sio.c.patch b/queue-3.0/usb-fix-corruption-issue-in-usb-ftdi-driver-ftdi_sio.c.patch new file mode 100644 index 00000000000..a805155b6b3 --- /dev/null +++ b/queue-3.0/usb-fix-corruption-issue-in-usb-ftdi-driver-ftdi_sio.c.patch @@ -0,0 +1,66 @@ +From b1ffb4c851f185e9051ba837c16d9b84ef688d26 Mon Sep 17 00:00:00 2001 +From: Andrew Worsley +Date: Fri, 18 Nov 2011 23:13:33 +1100 +Subject: USB: Fix Corruption issue in USB ftdi driver ftdi_sio.c + +From: Andrew Worsley + +commit b1ffb4c851f185e9051ba837c16d9b84ef688d26 upstream. + +Fix for ftdi_set_termios() glitching output + +ftdi_set_termios() is constantly setting the baud rate, data bits and parity +unnecessarily on every call, . When called while characters are being +transmitted can cause the FTDI chip to corrupt the serial port bit stream +output by stalling the output half a bit during the output of a character. +Simple fix by skipping this setting if the baud rate/data bits/parity are +unchanged. + +Signed-off-by: Andrew Worsley +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/ftdi_sio.c | 14 +++++++++++--- + 1 file changed, 11 insertions(+), 3 deletions(-) + +--- a/drivers/usb/serial/ftdi_sio.c ++++ b/drivers/usb/serial/ftdi_sio.c +@@ -2080,13 +2080,19 @@ static void ftdi_set_termios(struct tty_ + + cflag = termios->c_cflag; + +- /* FIXME -For this cut I don't care if the line is really changing or +- not - so just do the change regardless - should be able to +- compare old_termios and tty->termios */ ++ if (old_termios->c_cflag == termios->c_cflag ++ && old_termios->c_ispeed == termios->c_ispeed ++ && old_termios->c_ospeed == termios->c_ospeed) ++ goto no_c_cflag_changes; ++ + /* NOTE These routines can get interrupted by + ftdi_sio_read_bulk_callback - need to examine what this means - + don't see any problems yet */ + ++ if ((old_termios->c_cflag & (CSIZE|PARODD|PARENB|CMSPAR|CSTOPB)) == ++ (termios->c_cflag & (CSIZE|PARODD|PARENB|CMSPAR|CSTOPB))) ++ goto no_data_parity_stop_changes; ++ + /* Set number of data bits, parity, stop bits */ + + urb_value = 0; +@@ -2127,6 +2133,7 @@ static void ftdi_set_termios(struct tty_ + } + + /* Now do the baudrate */ ++no_data_parity_stop_changes: + if ((cflag & CBAUD) == B0) { + /* Disable flow control */ + if (usb_control_msg(dev, usb_sndctrlpipe(dev, 0), +@@ -2154,6 +2161,7 @@ static void ftdi_set_termios(struct tty_ + + /* Set flow control */ + /* Note device also supports DTR/CD (ugh) and Xon/Xoff in hardware */ ++no_c_cflag_changes: + if (cflag & CRTSCTS) { + dbg("%s Setting to CRTSCTS flow control", __func__); + if (usb_control_msg(dev, diff --git a/queue-3.0/usb-option-add-pid-of-huawei-e173s-3g-modem.patch b/queue-3.0/usb-option-add-pid-of-huawei-e173s-3g-modem.patch new file mode 100644 index 00000000000..8b5d0726ea2 --- /dev/null +++ b/queue-3.0/usb-option-add-pid-of-huawei-e173s-3g-modem.patch @@ -0,0 +1,34 @@ +From 4aa3648c719265bac9c2742c9ebb043e6dbdd790 Mon Sep 17 00:00:00 2001 +From: Ferenc Wagner +Date: Thu, 17 Nov 2011 16:44:58 +0100 +Subject: USB: option: add PID of Huawei E173s 3G modem + +From: Ferenc Wagner + +commit 4aa3648c719265bac9c2742c9ebb043e6dbdd790 upstream. + +Signed-off-by: Ferenc Wagner +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/option.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/drivers/usb/serial/option.c ++++ b/drivers/usb/serial/option.c +@@ -156,6 +156,7 @@ static void option_instat_callback(struc + #define HUAWEI_PRODUCT_K4511 0x14CC + #define HUAWEI_PRODUCT_ETS1220 0x1803 + #define HUAWEI_PRODUCT_E353 0x1506 ++#define HUAWEI_PRODUCT_E173S 0x1C05 + + #define QUANTA_VENDOR_ID 0x0408 + #define QUANTA_PRODUCT_Q101 0xEA02 +@@ -637,6 +638,7 @@ static const struct usb_device_id option + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E143D, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E143E, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E143F, 0xff, 0xff, 0xff) }, ++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E173S, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4505, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t) &huawei_cdc12_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3765, 0xff, 0xff, 0xff), diff --git a/queue-3.0/usb-option-release-new-pid-for-zte-3g-modem.patch b/queue-3.0/usb-option-release-new-pid-for-zte-3g-modem.patch new file mode 100644 index 00000000000..54c00a2696f --- /dev/null +++ b/queue-3.0/usb-option-release-new-pid-for-zte-3g-modem.patch @@ -0,0 +1,64 @@ +From 46b5a277ed90317a4d17e936c16037e76011b219 Mon Sep 17 00:00:00 2001 +From: "zheng.zhijian@zte.com.cn" +Date: Thu, 17 Nov 2011 19:23:25 +0800 +Subject: USB: option: release new PID for ZTE 3G modem + +From: "zheng.zhijian@zte.com.cn" + +commit 46b5a277ed90317a4d17e936c16037e76011b219 upstream. + +This patch adds new PIDs for ZTE 3G modem, after we confirm it and tested. +Thanks for Dan's work at kernel option devier. + +Signed-off-by: Alvin.Zheng +Signed-off-by: wsalvin +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/option.c | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +--- a/drivers/usb/serial/option.c ++++ b/drivers/usb/serial/option.c +@@ -316,6 +316,9 @@ static void option_instat_callback(struc + #define ZTE_PRODUCT_AC8710 0xfff1 + #define ZTE_PRODUCT_AC2726 0xfff5 + #define ZTE_PRODUCT_AC8710T 0xffff ++#define ZTE_PRODUCT_MC2718 0xffe8 ++#define ZTE_PRODUCT_AD3812 0xffeb ++#define ZTE_PRODUCT_MC2716 0xffed + + #define BENQ_VENDOR_ID 0x04a5 + #define BENQ_PRODUCT_H10 0x4068 +@@ -500,6 +503,18 @@ static const struct option_blacklist_inf + .reserved = BIT(4), + }; + ++static const struct option_blacklist_info zte_ad3812_z_blacklist = { ++ .sendsetup = BIT(0) | BIT(1) | BIT(2), ++}; ++ ++static const struct option_blacklist_info zte_mc2718_z_blacklist = { ++ .sendsetup = BIT(1) | BIT(2) | BIT(3) | BIT(4), ++}; ++ ++static const struct option_blacklist_info zte_mc2716_z_blacklist = { ++ .sendsetup = BIT(1) | BIT(2) | BIT(3), ++}; ++ + static const struct option_blacklist_info huawei_cdc12_blacklist = { + .reserved = BIT(1) | BIT(2), + }; +@@ -1043,6 +1058,12 @@ static const struct usb_device_id option + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AC8710, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AC2726, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AC8710T, 0xff, 0xff, 0xff) }, ++ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MC2718, 0xff, 0xff, 0xff), ++ .driver_info = (kernel_ulong_t)&zte_mc2718_z_blacklist }, ++ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AD3812, 0xff, 0xff, 0xff), ++ .driver_info = (kernel_ulong_t)&zte_ad3812_z_blacklist }, ++ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MC2716, 0xff, 0xff, 0xff), ++ .driver_info = (kernel_ulong_t)&zte_mc2716_z_blacklist }, + { USB_DEVICE(BENQ_VENDOR_ID, BENQ_PRODUCT_H10) }, + { USB_DEVICE(DLINK_VENDOR_ID, DLINK_PRODUCT_DWM_652) }, + { USB_DEVICE(ALINK_VENDOR_ID, DLINK_PRODUCT_DWM_652_U5) }, /* Yes, ALINK_VENDOR_ID */ diff --git a/queue-3.0/usb-quirks-adding-more-quirky-webcams-to-avoid-squeaky-audio.patch b/queue-3.0/usb-quirks-adding-more-quirky-webcams-to-avoid-squeaky-audio.patch new file mode 100644 index 00000000000..26e983bc646 --- /dev/null +++ b/queue-3.0/usb-quirks-adding-more-quirky-webcams-to-avoid-squeaky-audio.patch @@ -0,0 +1,60 @@ +From 0d145d7d4a241c321c832a810bb6edad18e2217b Mon Sep 17 00:00:00 2001 +From: sordna +Date: Thu, 27 Oct 2011 21:06:26 -0700 +Subject: USB: quirks: adding more quirky webcams to avoid squeaky audio + +From: sordna + +commit 0d145d7d4a241c321c832a810bb6edad18e2217b upstream. + +The following patch contains additional affected webcam models, on top of the +patches commited to linux-next 2394d67e446bf616a0885167d5f0d397bdacfdfc +and 5b253d88cc6c65a23cefc457a5a4ef139913c5fc + +Signed-off-by: sordna +Cc: Oliver Neukum +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/core/quirks.c | 24 ++++++++++++++++++++++++ + 1 file changed, 24 insertions(+) + +--- a/drivers/usb/core/quirks.c ++++ b/drivers/usb/core/quirks.c +@@ -56,12 +56,36 @@ static const struct usb_device_id usb_qu + /* Logitech Webcam Pro 9000 */ + { USB_DEVICE(0x046d, 0x0809), .driver_info = USB_QUIRK_RESET_RESUME }, + ++ /* Logitech Webcam C905 */ ++ { USB_DEVICE(0x046d, 0x080a), .driver_info = USB_QUIRK_RESET_RESUME }, ++ ++ /* Logitech Webcam C210 */ ++ { USB_DEVICE(0x046d, 0x0819), .driver_info = USB_QUIRK_RESET_RESUME }, ++ ++ /* Logitech Webcam C260 */ ++ { USB_DEVICE(0x046d, 0x081a), .driver_info = USB_QUIRK_RESET_RESUME }, ++ + /* Logitech Webcam C310 */ + { USB_DEVICE(0x046d, 0x081b), .driver_info = USB_QUIRK_RESET_RESUME }, + ++ /* Logitech Webcam C910 */ ++ { USB_DEVICE(0x046d, 0x0821), .driver_info = USB_QUIRK_RESET_RESUME }, ++ ++ /* Logitech Webcam C160 */ ++ { USB_DEVICE(0x046d, 0x0824), .driver_info = USB_QUIRK_RESET_RESUME }, ++ + /* Logitech Webcam C270 */ + { USB_DEVICE(0x046d, 0x0825), .driver_info = USB_QUIRK_RESET_RESUME }, + ++ /* Logitech Quickcam Pro 9000 */ ++ { USB_DEVICE(0x046d, 0x0990), .driver_info = USB_QUIRK_RESET_RESUME }, ++ ++ /* Logitech Quickcam E3500 */ ++ { USB_DEVICE(0x046d, 0x09a4), .driver_info = USB_QUIRK_RESET_RESUME }, ++ ++ /* Logitech Quickcam Vision Pro */ ++ { USB_DEVICE(0x046d, 0x09a6), .driver_info = USB_QUIRK_RESET_RESUME }, ++ + /* Logitech Harmony 700-series */ + { USB_DEVICE(0x046d, 0xc122), .driver_info = USB_QUIRK_DELAY_INIT }, + diff --git a/queue-3.0/usb-serial-pl2303-rm-duplicate-id.patch b/queue-3.0/usb-serial-pl2303-rm-duplicate-id.patch new file mode 100644 index 00000000000..e79fb4db5d9 --- /dev/null +++ b/queue-3.0/usb-serial-pl2303-rm-duplicate-id.patch @@ -0,0 +1,58 @@ +From 0c16595539b612fe948559433dda08ff96a8bdc7 Mon Sep 17 00:00:00 2001 +From: wangyanqing +Date: Thu, 10 Nov 2011 14:04:08 +0800 +Subject: USB: serial: pl2303: rm duplicate id + +From: wangyanqing + +commit 0c16595539b612fe948559433dda08ff96a8bdc7 upstream. + +I get report from customer that his usb-serial +converter doesn't work well,it sometimes work, +but sometimes it doesn't. + +The usb-serial converter's id: +vendor_id product_id +0x4348 0x5523 + +Then I search the usb-serial codes, and there are +two drivers announce support this device, pl2303 +and ch341, commit 026dfaf1 cause it. Through many +times to test, ch341 works well with this device, +and pl2303 doesn't work quite often(it just work quite little). + +ch341 works well with this device, so we doesn't +need pl2303 to support.I try to revert 026dfaf1 first, +but it failed. So I prepare this patch by hand to revert it. + +Signed-off-by: Wang YanQing +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/pl2303.c | 1 - + drivers/usb/serial/pl2303.h | 4 ---- + 2 files changed, 5 deletions(-) + +--- a/drivers/usb/serial/pl2303.c ++++ b/drivers/usb/serial/pl2303.c +@@ -91,7 +91,6 @@ static const struct usb_device_id id_tab + { USB_DEVICE(SONY_VENDOR_ID, SONY_QN3USB_PRODUCT_ID) }, + { USB_DEVICE(SANWA_VENDOR_ID, SANWA_PRODUCT_ID) }, + { USB_DEVICE(ADLINK_VENDOR_ID, ADLINK_ND6530_PRODUCT_ID) }, +- { USB_DEVICE(WINCHIPHEAD_VENDOR_ID, WINCHIPHEAD_USBSER_PRODUCT_ID) }, + { USB_DEVICE(SMART_VENDOR_ID, SMART_PRODUCT_ID) }, + { } /* Terminating entry */ + }; +--- a/drivers/usb/serial/pl2303.h ++++ b/drivers/usb/serial/pl2303.h +@@ -145,10 +145,6 @@ + #define ADLINK_VENDOR_ID 0x0b63 + #define ADLINK_ND6530_PRODUCT_ID 0x6530 + +-/* WinChipHead USB->RS 232 adapter */ +-#define WINCHIPHEAD_VENDOR_ID 0x4348 +-#define WINCHIPHEAD_USBSER_PRODUCT_ID 0x5523 +- + /* SMART USB Serial Adapter */ + #define SMART_VENDOR_ID 0x0b8c + #define SMART_PRODUCT_ID 0x2303 diff --git a/queue-3.0/usb-storage-accept-8020i-protocol-commands-longer-than-12-bytes.patch b/queue-3.0/usb-storage-accept-8020i-protocol-commands-longer-than-12-bytes.patch new file mode 100644 index 00000000000..cd828e86c15 --- /dev/null +++ b/queue-3.0/usb-storage-accept-8020i-protocol-commands-longer-than-12-bytes.patch @@ -0,0 +1,54 @@ +From 2f640bf4c94324aeaa1b6385c10aab8c5ad1e1cf Mon Sep 17 00:00:00 2001 +From: Alan Stern +Date: Tue, 25 Oct 2011 10:50:58 -0400 +Subject: usb-storage: Accept 8020i-protocol commands longer than 12 bytes + +From: Alan Stern + +commit 2f640bf4c94324aeaa1b6385c10aab8c5ad1e1cf upstream. + +The 8020i protocol (also 8070i and QIC-157) uses 12-byte commands; +shorter commands must be padded. Simon Detheridge reports that his +3-TB USB disk drive claims to use the 8020i protocol (which is +normally meant for ATAPI devices like CD drives), and because of its +large size, the disk drive requires the use of 16-byte commands. +However the usb_stor_pad12_command() routine in usb-storage always +sets the command length to 12, making the drive impossible to use. + +Since the SFF-8020i specification allows for 16-byte commands in +future extensions, we may as well accept them. This patch (as1490) +changes usb_stor_pad12_command() to leave commands larger than 12 +bytes alone rather than truncating them. + +Signed-off-by: Alan Stern +Tested-by: Simon Detheridge +CC: Matthew Dharm +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/storage/protocol.c | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +--- a/drivers/usb/storage/protocol.c ++++ b/drivers/usb/storage/protocol.c +@@ -58,7 +58,9 @@ + + void usb_stor_pad12_command(struct scsi_cmnd *srb, struct us_data *us) + { +- /* Pad the SCSI command with zeros out to 12 bytes ++ /* ++ * Pad the SCSI command with zeros out to 12 bytes. If the ++ * command already is 12 bytes or longer, leave it alone. + * + * NOTE: This only works because a scsi_cmnd struct field contains + * a unsigned char cmnd[16], so we know we have storage available +@@ -66,9 +68,6 @@ void usb_stor_pad12_command(struct scsi_ + for (; srb->cmd_len<12; srb->cmd_len++) + srb->cmnd[srb->cmd_len] = 0; + +- /* set command length to 12 bytes */ +- srb->cmd_len = 12; +- + /* send the command to the transport layer */ + usb_stor_invoke_transport(srb, us); + } diff --git a/queue-3.0/usb-workaround-for-bug-in-old-version-of-gcc.patch b/queue-3.0/usb-workaround-for-bug-in-old-version-of-gcc.patch new file mode 100644 index 00000000000..b8542432d6a --- /dev/null +++ b/queue-3.0/usb-workaround-for-bug-in-old-version-of-gcc.patch @@ -0,0 +1,51 @@ +From 97ff22ee3b4cb3a334f7385e269773141aed702f Mon Sep 17 00:00:00 2001 +From: Alan Stern +Date: Thu, 27 Oct 2011 11:20:21 -0400 +Subject: USB: workaround for bug in old version of GCC + +From: Alan Stern + +commit 97ff22ee3b4cb3a334f7385e269773141aed702f upstream. + +This patch (as1491) works around a bug in GCC-3.4.6, which is still +supposed to be supported. The number of microseconds in the udelay() +call in quirk_usb_disable_ehci() is fixed at 100, but the compiler +doesn't understand this and generates a link-time error. So we +replace the otherwise unused variable "delta" with a simple constant +100. This same pattern is already used in other delay loops in that +source file. + +Signed-off-by: Alan Stern +Reported-by: Konrad Rzepecki +Tested-by: Konrad Rzepecki +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/host/pci-quirks.c | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +--- a/drivers/usb/host/pci-quirks.c ++++ b/drivers/usb/host/pci-quirks.c +@@ -626,7 +626,7 @@ static void __devinit quirk_usb_disable_ + void __iomem *base, *op_reg_base; + u32 hcc_params, cap, val; + u8 offset, cap_length; +- int wait_time, delta, count = 256/4; ++ int wait_time, count = 256/4; + + if (!mmio_resource_enabled(pdev, 0)) + return; +@@ -672,11 +672,10 @@ static void __devinit quirk_usb_disable_ + writel(val, op_reg_base + EHCI_USBCMD); + + wait_time = 2000; +- delta = 100; + do { + writel(0x3f, op_reg_base + EHCI_USBSTS); +- udelay(delta); +- wait_time -= delta; ++ udelay(100); ++ wait_time -= 100; + val = readl(op_reg_base + EHCI_USBSTS); + if ((val == ~(u32)0) || (val & EHCI_USBSTS_HALTED)) { + break; -- 2.47.3