summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@suse.de>2011-08-13 08:11:32 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2011-08-13 08:11:32 -0700
commit8fb2c885db5efc3afbf6b79e80faa796714bfab4 (patch)
treea47845b757106ff40f74eaf37605d8d410c071a3
parent8b541af79b806f6161ceeae9e73b50eab43b117c (diff)
downloadstable-queue-8fb2c885db5efc3afbf6b79e80faa796714bfab4.tar.gz
3.0 patches
-rw-r--r--queue-3.0/series13
-rw-r--r--queue-3.0/staging-rtl8192u-declare-module_firmware.patch36
-rw-r--r--queue-3.0/usb-assign-instead-of-equal-in-usbtmc.c.patch29
-rw-r--r--queue-3.0/usb-config-use-proper-endian-access-for-wmaxpacketsize.patch55
-rw-r--r--queue-3.0/usb-ftdi_sio-fix-minor-typo-in-get_ftdi_divisor.patch31
-rw-r--r--queue-3.0/usb-musb-fix-oops-on-musb_gadget_pullup.patch54
-rw-r--r--queue-3.0/usb-option-driver-add-pid-for-vodafone-huawei-k3770.patch41
-rw-r--r--queue-3.0/usb-option-driver-add-pid-for-vodafone-huawei-k3771.patch41
-rw-r--r--queue-3.0/usb-option-driver-add-pid-for-vodafone-huawei-k4510.patch41
-rw-r--r--queue-3.0/usb-option-driver-add-pid-for-vodafone-huawei-k4511.patch41
-rw-r--r--queue-3.0/usb-serial-added-device-id-for-qualcomm-modem-in.patch29
-rw-r--r--queue-3.0/usb-usb-storage-unusual_devs-entry-for-arm-v2m.patch47
-rw-r--r--queue-3.0/usb-xhci-fix-os-want-to-own-hc.patch32
-rw-r--r--queue-3.0/xhci-don-t-submit-commands-or-urbs-to-halted-hosts.patch107
14 files changed, 597 insertions, 0 deletions
diff --git a/queue-3.0/series b/queue-3.0/series
new file mode 100644
index 0000000000..bf8abfd1cb
--- /dev/null
+++ b/queue-3.0/series
@@ -0,0 +1,13 @@
+staging-rtl8192u-declare-module_firmware.patch
+usb-xhci-fix-os-want-to-own-hc.patch
+xhci-don-t-submit-commands-or-urbs-to-halted-hosts.patch
+usb-config-use-proper-endian-access-for-wmaxpacketsize.patch
+usb-musb-fix-oops-on-musb_gadget_pullup.patch
+usb-assign-instead-of-equal-in-usbtmc.c.patch
+usb-ftdi_sio-fix-minor-typo-in-get_ftdi_divisor.patch
+usb-usb-storage-unusual_devs-entry-for-arm-v2m.patch
+usb-serial-added-device-id-for-qualcomm-modem-in.patch
+usb-option-driver-add-pid-for-vodafone-huawei-k3770.patch
+usb-option-driver-add-pid-for-vodafone-huawei-k3771.patch
+usb-option-driver-add-pid-for-vodafone-huawei-k4510.patch
+usb-option-driver-add-pid-for-vodafone-huawei-k4511.patch
diff --git a/queue-3.0/staging-rtl8192u-declare-module_firmware.patch b/queue-3.0/staging-rtl8192u-declare-module_firmware.patch
new file mode 100644
index 0000000000..ab298df903
--- /dev/null
+++ b/queue-3.0/staging-rtl8192u-declare-module_firmware.patch
@@ -0,0 +1,36 @@
+From 589c3ca00b7886bf743998398884cd4f4d354e17 Mon Sep 17 00:00:00 2001
+From: Stefan Lippers-Hollmann <s.L-H@gmx.de>
+Date: Tue, 2 Aug 2011 22:17:25 +0200
+Subject: staging: rtl8192u: declare MODULE_FIRMWARE
+
+From: Stefan Lippers-Hollmann <s.L-H@gmx.de>
+
+commit 589c3ca00b7886bf743998398884cd4f4d354e17 upstream.
+
+declaring MODULE_FIRMWARE has apparently forgotten while removing the embedded
+firmware arrays in 0a8692b534e18fcec6eac07551bb37a22659f5c7 (rtl8192u_usb:
+Remove built-in firmware images).
+
+Signed-off-by: Stefan Lippers-Hollmann <s.l-h@gmx.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/rtl8192u/r819xU_firmware.c | 9 +++------
+ 1 file changed, 3 insertions(+), 6 deletions(-)
+
+--- a/drivers/staging/rtl8192u/r819xU_firmware.c
++++ b/drivers/staging/rtl8192u/r819xU_firmware.c
+@@ -399,10 +399,7 @@ download_firmware_fail:
+
+ }
+
+-
+-
+-
+-
+-
+-
++MODULE_FIRMWARE("RTL8192U/boot.img");
++MODULE_FIRMWARE("RTL8192U/main.img");
++MODULE_FIRMWARE("RTL8192U/data.img");
+
diff --git a/queue-3.0/usb-assign-instead-of-equal-in-usbtmc.c.patch b/queue-3.0/usb-assign-instead-of-equal-in-usbtmc.c.patch
new file mode 100644
index 0000000000..569edf427c
--- /dev/null
+++ b/queue-3.0/usb-assign-instead-of-equal-in-usbtmc.c.patch
@@ -0,0 +1,29 @@
+From 4f1a7a3e78037721496283ea3e87cfefc64d99c7 Mon Sep 17 00:00:00 2001
+From: Maxim Nikulin <m.a.nikulin@gmail.com>
+Date: Sat, 9 Jul 2011 23:44:44 +0700
+Subject: USB: assign instead of equal in usbtmc.c
+
+From: Maxim Nikulin <m.a.nikulin@gmail.com>
+
+commit 4f1a7a3e78037721496283ea3e87cfefc64d99c7 upstream.
+
+Assign operator instead of equality test in the usbtmc_ioctl_abort_bulk_in() function.
+
+Signed-off-by: Maxim A. Nikulin <M.A.Nikulin@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/class/usbtmc.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/usb/class/usbtmc.c
++++ b/drivers/usb/class/usbtmc.c
+@@ -268,7 +268,7 @@ usbtmc_abort_bulk_in_status:
+ dev_err(dev, "usb_bulk_msg returned %d\n", rv);
+ goto exit;
+ }
+- } while ((actual = max_size) &&
++ } while ((actual == max_size) &&
+ (n < USBTMC_MAX_READS_TO_CLEAR_BULK_IN));
+
+ if (actual == max_size) {
diff --git a/queue-3.0/usb-config-use-proper-endian-access-for-wmaxpacketsize.patch b/queue-3.0/usb-config-use-proper-endian-access-for-wmaxpacketsize.patch
new file mode 100644
index 0000000000..e30783d127
--- /dev/null
+++ b/queue-3.0/usb-config-use-proper-endian-access-for-wmaxpacketsize.patch
@@ -0,0 +1,55 @@
+From 7de7c7d2cb49900e0b967be871bf695c7d6135c9 Mon Sep 17 00:00:00 2001
+From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+Date: Fri, 29 Jul 2011 11:05:45 +0200
+Subject: usb/config: use proper endian access for wMaxPacketSize
+
+From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+
+commit 7de7c7d2cb49900e0b967be871bf695c7d6135c9 upstream.
+
+wMaxPacketSize is __le16 and should be accessed as such. Also fix the
+wBytesPerInterval assignment while here.
+
+v2: also fix the wBytesPerInterval assigment, noticed by Matt Evans
+
+This patch should be backported to the 3.0 kernel.
+
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
+Acked-by: Matt Evans <matt@ozlabs.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/core/config.c | 11 ++++++-----
+ 1 file changed, 6 insertions(+), 5 deletions(-)
+
+--- a/drivers/usb/core/config.c
++++ b/drivers/usb/core/config.c
+@@ -123,10 +123,11 @@ static void usb_parse_ss_endpoint_compan
+ }
+
+ if (usb_endpoint_xfer_isoc(&ep->desc))
+- max_tx = ep->desc.wMaxPacketSize * (desc->bMaxBurst + 1) *
+- (desc->bmAttributes + 1);
++ max_tx = (desc->bMaxBurst + 1) * (desc->bmAttributes + 1) *
++ le16_to_cpu(ep->desc.wMaxPacketSize);
+ else if (usb_endpoint_xfer_int(&ep->desc))
+- max_tx = ep->desc.wMaxPacketSize * (desc->bMaxBurst + 1);
++ max_tx = le16_to_cpu(ep->desc.wMaxPacketSize) *
++ (desc->bMaxBurst + 1);
+ else
+ max_tx = 999999;
+ if (le16_to_cpu(desc->wBytesPerInterval) > max_tx) {
+@@ -134,10 +135,10 @@ static void usb_parse_ss_endpoint_compan
+ "config %d interface %d altsetting %d ep %d: "
+ "setting to %d\n",
+ usb_endpoint_xfer_isoc(&ep->desc) ? "Isoc" : "Int",
+- desc->wBytesPerInterval,
++ le16_to_cpu(desc->wBytesPerInterval),
+ cfgno, inum, asnum, ep->desc.bEndpointAddress,
+ max_tx);
+- ep->ss_ep_comp.wBytesPerInterval = max_tx;
++ ep->ss_ep_comp.wBytesPerInterval = cpu_to_le16(max_tx);
+ }
+ }
+
diff --git a/queue-3.0/usb-ftdi_sio-fix-minor-typo-in-get_ftdi_divisor.patch b/queue-3.0/usb-ftdi_sio-fix-minor-typo-in-get_ftdi_divisor.patch
new file mode 100644
index 0000000000..1d81a71ad5
--- /dev/null
+++ b/queue-3.0/usb-ftdi_sio-fix-minor-typo-in-get_ftdi_divisor.patch
@@ -0,0 +1,31 @@
+From 1862cdd542025218f7a390b7e6ddc83a1362d1e0 Mon Sep 17 00:00:00 2001
+From: Ionut Nicu <ionut.nicu@cloudbit.ro>
+Date: Mon, 11 Jul 2011 16:46:12 +0300
+Subject: USB: ftdi_sio: fix minor typo in get_ftdi_divisor
+
+From: Ionut Nicu <ionut.nicu@cloudbit.ro>
+
+commit 1862cdd542025218f7a390b7e6ddc83a1362d1e0 upstream.
+
+Even if it's unlikely for this to cause an error,
+there is a typo in the code that uses the bitwise-AND
+operator instead of the logical one.
+
+Signed-off-by: Ionut Nicu <ionut.nicu@cloudbit.ro>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/ftdi_sio.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/usb/serial/ftdi_sio.c
++++ b/drivers/usb/serial/ftdi_sio.c
+@@ -1171,7 +1171,7 @@ static __u32 get_ftdi_divisor(struct tty
+ case FT2232H: /* FT2232H chip */
+ case FT4232H: /* FT4232H chip */
+ case FT232H: /* FT232H chip */
+- if ((baud <= 12000000) & (baud >= 1200)) {
++ if ((baud <= 12000000) && (baud >= 1200)) {
+ div_value = ftdi_2232h_baud_to_divisor(baud);
+ } else if (baud < 1200) {
+ div_value = ftdi_232bm_baud_to_divisor(baud);
diff --git a/queue-3.0/usb-musb-fix-oops-on-musb_gadget_pullup.patch b/queue-3.0/usb-musb-fix-oops-on-musb_gadget_pullup.patch
new file mode 100644
index 0000000000..efe99b5777
--- /dev/null
+++ b/queue-3.0/usb-musb-fix-oops-on-musb_gadget_pullup.patch
@@ -0,0 +1,54 @@
+From 72c487dfb94d02025fb7437dfe2314d836d5a9ab Mon Sep 17 00:00:00 2001
+From: John Stultz <john.stultz@linaro.org>
+Date: Wed, 20 Jul 2011 17:09:34 -0700
+Subject: usb: musb: fix oops on musb_gadget_pullup
+
+From: John Stultz <john.stultz@linaro.org>
+
+commit 72c487dfb94d02025fb7437dfe2314d836d5a9ab upstream.
+
+an 'unhandled fault' is causes when a gadget driver calls
+usb_gadget_connect() while the USB cable isn't plugged into
+the OTG port.
+
+the fault is caused by an access to MUSB's memory space
+while its clock is turned off due to pm_runtime kicking
+in.
+
+in order to fix the fault, we enclose musb_gadget_pullup()
+with pm_runtime_get_sync() ... pm_runtime_put() calls to
+be sure we will always reach that path with clock turned on.
+
+[ balbi@ti.com : simplified commit log; removed few things
+ which didn't belong there ]
+
+Reported-by: Zach Pfeffer <zach.pfeffer@linaro.org>
+Signed-off-by: John Stultz <john.stultz@linaro.org>
+Signed-off-by: Felipe Balbi <balbi@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/musb/musb_gadget.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/drivers/usb/musb/musb_gadget.c
++++ b/drivers/usb/musb/musb_gadget.c
+@@ -1698,6 +1698,8 @@ static int musb_gadget_pullup(struct usb
+
+ is_on = !!is_on;
+
++ pm_runtime_get_sync(musb->controller);
++
+ /* NOTE: this assumes we are sensing vbus; we'd rather
+ * not pullup unless the B-session is active.
+ */
+@@ -1707,6 +1709,9 @@ static int musb_gadget_pullup(struct usb
+ musb_pullup(musb, is_on);
+ }
+ spin_unlock_irqrestore(&musb->lock, flags);
++
++ pm_runtime_put(musb->controller);
++
+ return 0;
+ }
+
diff --git a/queue-3.0/usb-option-driver-add-pid-for-vodafone-huawei-k3770.patch b/queue-3.0/usb-option-driver-add-pid-for-vodafone-huawei-k3770.patch
new file mode 100644
index 0000000000..3523174c8e
--- /dev/null
+++ b/queue-3.0/usb-option-driver-add-pid-for-vodafone-huawei-k3770.patch
@@ -0,0 +1,41 @@
+From 07b21fd83606263fe6f327b98774d51e13e502fd Mon Sep 17 00:00:00 2001
+From: Andrew Bird <ajb@spheresystems.co.uk>
+Date: Wed, 27 Jul 2011 17:03:17 +0100
+Subject: USB: option driver: add PID for Vodafone-Huawei K3770
+
+From: Andrew Bird <ajb@spheresystems.co.uk>
+
+commit 07b21fd83606263fe6f327b98774d51e13e502fd upstream.
+
+This patch adds the product ID of Huawei's Vodafone K3770 mobile broadband
+modem to option.c. This is necessary so that the driver gets loaded on demand
+without the intervention of usb_modeswitch. This has the benefit of it becoming
+available faster and also ensures that the option driver is not bound to a
+network interface that should be claimed by cdc_ether.
+
+Signed-off-by: Andrew Bird <ajb@spheresystems.co.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/option.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -148,6 +148,7 @@ static void option_instat_callback(struc
+ #define HUAWEI_PRODUCT_K4505 0x1464
+ #define HUAWEI_PRODUCT_K3765 0x1465
+ #define HUAWEI_PRODUCT_E14AC 0x14AC
++#define HUAWEI_PRODUCT_K3770 0x14C9
+ #define HUAWEI_PRODUCT_ETS1220 0x1803
+ #define HUAWEI_PRODUCT_E353 0x1506
+
+@@ -547,6 +548,8 @@ static const struct usb_device_id option
+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3765, 0xff, 0xff, 0xff) },
+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_ETS1220, 0xff, 0xff, 0xff) },
+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E14AC, 0xff, 0xff, 0xff) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3770, 0xff, 0x02, 0x31) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3770, 0xff, 0x02, 0x32) },
+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E353, 0xff, 0x01, 0x01) },
+ { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V640) },
+ { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V620) },
diff --git a/queue-3.0/usb-option-driver-add-pid-for-vodafone-huawei-k3771.patch b/queue-3.0/usb-option-driver-add-pid-for-vodafone-huawei-k3771.patch
new file mode 100644
index 0000000000..1041563aa6
--- /dev/null
+++ b/queue-3.0/usb-option-driver-add-pid-for-vodafone-huawei-k3771.patch
@@ -0,0 +1,41 @@
+From e2949080792256d1c979aaf30ecd4cab42829f87 Mon Sep 17 00:00:00 2001
+From: Andrew Bird <ajb@spheresystems.co.uk>
+Date: Wed, 27 Jul 2011 17:03:18 +0100
+Subject: USB: option driver: add PID for Vodafone-Huawei K3771
+
+From: Andrew Bird <ajb@spheresystems.co.uk>
+
+commit e2949080792256d1c979aaf30ecd4cab42829f87 upstream.
+
+This patch adds the product ID of Huawei's Vodafone K3771 mobile broadband
+modem to option.c. This is necessary so that the driver gets loaded on demand
+without the intervention of usb_modeswitch. This has the benefit of it becoming
+available faster and also ensures that the option driver is not bound to a
+network interface that should be claimed by cdc_ether.
+
+Signed-off-by: Andrew Bird <ajb@spheresystems.co.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/option.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -149,6 +149,7 @@ static void option_instat_callback(struc
+ #define HUAWEI_PRODUCT_K3765 0x1465
+ #define HUAWEI_PRODUCT_E14AC 0x14AC
+ #define HUAWEI_PRODUCT_K3770 0x14C9
++#define HUAWEI_PRODUCT_K3771 0x14CA
+ #define HUAWEI_PRODUCT_ETS1220 0x1803
+ #define HUAWEI_PRODUCT_E353 0x1506
+
+@@ -550,6 +551,8 @@ static const struct usb_device_id option
+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E14AC, 0xff, 0xff, 0xff) },
+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3770, 0xff, 0x02, 0x31) },
+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3770, 0xff, 0x02, 0x32) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3771, 0xff, 0x02, 0x31) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3771, 0xff, 0x02, 0x32) },
+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E353, 0xff, 0x01, 0x01) },
+ { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V640) },
+ { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V620) },
diff --git a/queue-3.0/usb-option-driver-add-pid-for-vodafone-huawei-k4510.patch b/queue-3.0/usb-option-driver-add-pid-for-vodafone-huawei-k4510.patch
new file mode 100644
index 0000000000..e3ee85af56
--- /dev/null
+++ b/queue-3.0/usb-option-driver-add-pid-for-vodafone-huawei-k4510.patch
@@ -0,0 +1,41 @@
+From 0930bb46bbbb43afe3381ece2cb2f8a5bc3fb544 Mon Sep 17 00:00:00 2001
+From: Andrew Bird <ajb@spheresystems.co.uk>
+Date: Wed, 27 Jul 2011 17:03:19 +0100
+Subject: USB: option driver: add PID for Vodafone-Huawei K4510
+
+From: Andrew Bird <ajb@spheresystems.co.uk>
+
+commit 0930bb46bbbb43afe3381ece2cb2f8a5bc3fb544 upstream.
+
+This patch adds the product ID of Huawei's Vodafone K4510 mobile broadband
+modem to option.c. This is necessary so that the driver gets loaded on demand
+without the intervention of usb_modeswitch. This has the benefit of it becoming
+available faster and also ensures that the option driver is not bound to a
+network interface that should be claimed by cdc_ether.
+
+Signed-off-by: Andrew Bird <ajb@spheresystems.co.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/option.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -150,6 +150,7 @@ static void option_instat_callback(struc
+ #define HUAWEI_PRODUCT_E14AC 0x14AC
+ #define HUAWEI_PRODUCT_K3770 0x14C9
+ #define HUAWEI_PRODUCT_K3771 0x14CA
++#define HUAWEI_PRODUCT_K4510 0x14CB
+ #define HUAWEI_PRODUCT_ETS1220 0x1803
+ #define HUAWEI_PRODUCT_E353 0x1506
+
+@@ -553,6 +554,8 @@ static const struct usb_device_id option
+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3770, 0xff, 0x02, 0x32) },
+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3771, 0xff, 0x02, 0x31) },
+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3771, 0xff, 0x02, 0x32) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4510, 0xff, 0x01, 0x31) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4510, 0xff, 0x01, 0x32) },
+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E353, 0xff, 0x01, 0x01) },
+ { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V640) },
+ { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V620) },
diff --git a/queue-3.0/usb-option-driver-add-pid-for-vodafone-huawei-k4511.patch b/queue-3.0/usb-option-driver-add-pid-for-vodafone-huawei-k4511.patch
new file mode 100644
index 0000000000..67b9a69c49
--- /dev/null
+++ b/queue-3.0/usb-option-driver-add-pid-for-vodafone-huawei-k4511.patch
@@ -0,0 +1,41 @@
+From 35e9e21fb30dc4452b33aed5cbf233743bffca40 Mon Sep 17 00:00:00 2001
+From: Andrew Bird <ajb@spheresystems.co.uk>
+Date: Wed, 27 Jul 2011 17:03:20 +0100
+Subject: USB: option driver: add PID for Vodafone-Huawei K4511
+
+From: Andrew Bird <ajb@spheresystems.co.uk>
+
+commit 35e9e21fb30dc4452b33aed5cbf233743bffca40 upstream.
+
+This patch adds the product ID of Huawei's Vodafone K4511 mobile broadband
+modem to option.c. This is necessary so that the driver gets loaded on demand
+without the intervention of usb_modeswitch. This has the benefit of it becoming
+available faster and also ensures that the option driver is not bound to a
+network interface that should be claimed by cdc_ether.
+
+Signed-off-by: Andrew Bird <ajb@spheresystems.co.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/option.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -151,6 +151,7 @@ static void option_instat_callback(struc
+ #define HUAWEI_PRODUCT_K3770 0x14C9
+ #define HUAWEI_PRODUCT_K3771 0x14CA
+ #define HUAWEI_PRODUCT_K4510 0x14CB
++#define HUAWEI_PRODUCT_K4511 0x14CC
+ #define HUAWEI_PRODUCT_ETS1220 0x1803
+ #define HUAWEI_PRODUCT_E353 0x1506
+
+@@ -556,6 +557,8 @@ static const struct usb_device_id option
+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3771, 0xff, 0x02, 0x32) },
+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4510, 0xff, 0x01, 0x31) },
+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4510, 0xff, 0x01, 0x32) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4511, 0xff, 0x01, 0x31) },
++ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4511, 0xff, 0x01, 0x32) },
+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E353, 0xff, 0x01, 0x01) },
+ { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V640) },
+ { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V620) },
diff --git a/queue-3.0/usb-serial-added-device-id-for-qualcomm-modem-in.patch b/queue-3.0/usb-serial-added-device-id-for-qualcomm-modem-in.patch
new file mode 100644
index 0000000000..a91cca22c1
--- /dev/null
+++ b/queue-3.0/usb-serial-added-device-id-for-qualcomm-modem-in.patch
@@ -0,0 +1,29 @@
+From e468561739fffb972d486b98f66c723936335136 Mon Sep 17 00:00:00 2001
+From: Vijay Chavan <vijaychavan007@gmail.com>
+Date: Tue, 9 Aug 2011 02:41:12 +0530
+Subject: USB: Serial: Added device ID for Qualcomm Modem in
+ Sagemcom's HiLo3G
+
+From: Vijay Chavan <vijaychavan007@gmail.com>
+
+commit e468561739fffb972d486b98f66c723936335136 upstream.
+
+A new device ID pair is added for Qualcomm Modem present in Sagemcom's HiLo3G module.
+
+Signed-off-by: Vijay Chavan <VijayChavan007@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/qcserial.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/usb/serial/qcserial.c
++++ b/drivers/usb/serial/qcserial.c
+@@ -45,6 +45,7 @@ static const struct usb_device_id id_tab
+ {USB_DEVICE(0x05c6, 0x9203)}, /* Generic Gobi Modem device */
+ {USB_DEVICE(0x05c6, 0x9222)}, /* Generic Gobi Modem device */
+ {USB_DEVICE(0x05c6, 0x9008)}, /* Generic Gobi QDL device */
++ {USB_DEVICE(0x05c6, 0x9009)}, /* Generic Gobi Modem device */
+ {USB_DEVICE(0x05c6, 0x9201)}, /* Generic Gobi QDL device */
+ {USB_DEVICE(0x05c6, 0x9221)}, /* Generic Gobi QDL device */
+ {USB_DEVICE(0x05c6, 0x9231)}, /* Generic Gobi QDL device */
diff --git a/queue-3.0/usb-usb-storage-unusual_devs-entry-for-arm-v2m.patch b/queue-3.0/usb-usb-storage-unusual_devs-entry-for-arm-v2m.patch
new file mode 100644
index 0000000000..e9150e3a9f
--- /dev/null
+++ b/queue-3.0/usb-usb-storage-unusual_devs-entry-for-arm-v2m.patch
@@ -0,0 +1,47 @@
+From a871e4f5519d8c52430052e1d340dd5710eb5ad6 Mon Sep 17 00:00:00 2001
+From: Nick Bowler <nbowler@elliptictech.com>
+Date: Wed, 13 Jul 2011 11:40:09 -0400
+Subject: USB: usb-storage: unusual_devs entry for ARM V2M
+ motherboard.
+
+From: Nick Bowler <nbowler@elliptictech.com>
+
+commit a871e4f5519d8c52430052e1d340dd5710eb5ad6 upstream.
+
+Connecting the V2M to a Linux host results in a constant stream of
+errors spammed to the console, all of the form
+
+ sd 1:0:0:0: ioctl_internal_command return code = 8070000
+ : Sense Key : 0x4 [current]
+ : ASC=0x0 ASCQ=0x0
+
+The errors appear to be otherwise harmless. Add an unusual_devs entry
+which eliminates all of the error messages.
+
+Signed-off-by: Nick Bowler <nbowler@elliptictech.com>
+Acked-by: Alan Stern <stern@rowland.harvard.edu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/storage/unusual_devs.h | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+--- a/drivers/usb/storage/unusual_devs.h
++++ b/drivers/usb/storage/unusual_devs.h
+@@ -1988,6 +1988,16 @@ UNUSUAL_DEV( 0x4146, 0xba01, 0x0100, 0x
+ "Micro Mini 1GB",
+ USB_SC_DEVICE, USB_PR_DEVICE, NULL, US_FL_NOT_LOCKABLE ),
+
++/*
++ * Nick Bowler <nbowler@elliptictech.com>
++ * SCSI stack spams (otherwise harmless) error messages.
++ */
++UNUSUAL_DEV( 0xc251, 0x4003, 0x0100, 0x0100,
++ "Keil Software, Inc.",
++ "V2M MotherBoard",
++ USB_SC_DEVICE, USB_PR_DEVICE, NULL,
++ US_FL_NOT_LOCKABLE),
++
+ /* Reported by Andrew Simmons <andrew.simmons@gmail.com> */
+ UNUSUAL_DEV( 0xed06, 0x4500, 0x0001, 0x0001,
+ "DataStor",
diff --git a/queue-3.0/usb-xhci-fix-os-want-to-own-hc.patch b/queue-3.0/usb-xhci-fix-os-want-to-own-hc.patch
new file mode 100644
index 0000000000..64fee3e55d
--- /dev/null
+++ b/queue-3.0/usb-xhci-fix-os-want-to-own-hc.patch
@@ -0,0 +1,32 @@
+From 6768458b17f9bf48a4c3a34e49b20344091b5f7e Mon Sep 17 00:00:00 2001
+From: JiSheng Zhang <jszhang3@gmail.com>
+Date: Sat, 16 Jul 2011 11:04:19 +0800
+Subject: USB: xhci: fix OS want to own HC
+
+From: JiSheng Zhang <jszhang3@gmail.com>
+
+commit 6768458b17f9bf48a4c3a34e49b20344091b5f7e upstream.
+
+Software should set XHCI_HC_OS_OWNED bit to request ownership of xHC.
+
+This patch should be backported to kernels as far back as 2.6.31.
+
+Signed-off-by: JiSheng Zhang <jszhang3@gmail.com>
+Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/host/pci-quirks.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/usb/host/pci-quirks.c
++++ b/drivers/usb/host/pci-quirks.c
+@@ -803,7 +803,7 @@ static void __devinit quirk_usb_handoff_
+
+ /* If the BIOS owns the HC, signal that the OS wants it, and wait */
+ if (val & XHCI_HC_BIOS_OWNED) {
+- writel(val & XHCI_HC_OS_OWNED, base + ext_cap_offset);
++ writel(val | XHCI_HC_OS_OWNED, base + ext_cap_offset);
+
+ /* Wait for 5 seconds with 10 microsecond polling interval */
+ timeout = handshake(base + ext_cap_offset, XHCI_HC_BIOS_OWNED,
diff --git a/queue-3.0/xhci-don-t-submit-commands-or-urbs-to-halted-hosts.patch b/queue-3.0/xhci-don-t-submit-commands-or-urbs-to-halted-hosts.patch
new file mode 100644
index 0000000000..e6928f7d5a
--- /dev/null
+++ b/queue-3.0/xhci-don-t-submit-commands-or-urbs-to-halted-hosts.patch
@@ -0,0 +1,107 @@
+From 7bd89b4017f46a9b92853940fd9771319acb578a Mon Sep 17 00:00:00 2001
+From: Sarah Sharp <sarah.a.sharp@linux.intel.com>
+Date: Fri, 1 Jul 2011 13:35:40 -0700
+Subject: xhci: Don't submit commands or URBs to halted hosts.
+
+From: Sarah Sharp <sarah.a.sharp@linux.intel.com>
+
+commit 7bd89b4017f46a9b92853940fd9771319acb578a upstream.
+
+Commit fccf4e86200b8f5edd9a65da26f150e32ba79808
+"USB: Free bandwidth when usb_disable_device is called" caused a bit of an
+issue when the xHCI host controller driver is unloaded. It changed the
+USB core to remove all endpoints when a USB device is disabled. When the
+driver is unloaded, it will remove the SuperSpeed split root hub, which
+will disable all devices under that roothub and then halt the host
+controller. When the second High Speed split roothub is removed, the USB
+core will attempt to disable the endpoints, which will submit a Configure
+Endpoint command to a halted host controller.
+
+The command will eventually time out, but it makes the xHCI driver unload
+take *minutes* if there are a couple of USB 1.1/2.0 devices attached. We
+must halt the host controller when the SuperSpeed roothub is removed,
+because we can't allow any interrupts from things like port status
+changes.
+
+Make several different functions not submit commands or URBs to the host
+controller when the host is halted, by adding a check in
+xhci_check_args(). xhci_check_args() is used by these functions:
+
+xhci.c-int xhci_urb_enqueue()
+xhci.c-int xhci_drop_endpoint()
+xhci.c-int xhci_add_endpoint()
+xhci.c-int xhci_check_bandwidth()
+xhci.c-void xhci_reset_bandwidth()
+xhci.c-static int xhci_check_streams_endpoint()
+xhci.c-int xhci_discover_or_reset_device()
+
+It's also used by xhci_free_dev(). However, we have to take special
+care in that case, because we want the device memory to be freed if the
+host controller is halted.
+
+This patch should be backported to the 2.6.39 and 3.0 kernel.
+
+Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/host/xhci.c | 19 ++++++++++++++-----
+ 1 file changed, 14 insertions(+), 5 deletions(-)
+
+--- a/drivers/usb/host/xhci.c
++++ b/drivers/usb/host/xhci.c
+@@ -345,7 +345,8 @@ static void xhci_event_ring_work(unsigne
+ spin_lock_irqsave(&xhci->lock, flags);
+ temp = xhci_readl(xhci, &xhci->op_regs->status);
+ xhci_dbg(xhci, "op reg status = 0x%x\n", temp);
+- if (temp == 0xffffffff || (xhci->xhc_state & XHCI_STATE_DYING)) {
++ if (temp == 0xffffffff || (xhci->xhc_state & XHCI_STATE_DYING) ||
++ (xhci->xhc_state & XHCI_STATE_HALTED)) {
+ xhci_dbg(xhci, "HW died, polling stopped.\n");
+ spin_unlock_irqrestore(&xhci->lock, flags);
+ return;
+@@ -939,8 +940,11 @@ static int xhci_check_args(struct usb_hc
+ return 0;
+ }
+
++ xhci = hcd_to_xhci(hcd);
++ if (xhci->xhc_state & XHCI_STATE_HALTED)
++ return -ENODEV;
++
+ if (check_virt_dev) {
+- xhci = hcd_to_xhci(hcd);
+ if (!udev->slot_id || !xhci->devs
+ || !xhci->devs[udev->slot_id]) {
+ printk(KERN_DEBUG "xHCI %s called with unaddressed "
+@@ -1242,7 +1246,8 @@ int xhci_urb_dequeue(struct usb_hcd *hcd
+ xhci_urb_free_priv(xhci, urb_priv);
+ return ret;
+ }
+- if (xhci->xhc_state & XHCI_STATE_DYING) {
++ if ((xhci->xhc_state & XHCI_STATE_DYING) ||
++ (xhci->xhc_state & XHCI_STATE_HALTED)) {
+ xhci_dbg(xhci, "Ep 0x%x: URB %p to be canceled on "
+ "non-responsive xHCI host.\n",
+ urb->ep->desc.bEndpointAddress, urb);
+@@ -2667,7 +2672,10 @@ void xhci_free_dev(struct usb_hcd *hcd,
+ int i, ret;
+
+ ret = xhci_check_args(hcd, udev, NULL, 0, true, __func__);
+- if (ret <= 0)
++ /* If the host is halted due to driver unload, we still need to free the
++ * device.
++ */
++ if (ret <= 0 && ret != -ENODEV)
+ return;
+
+ virt_dev = xhci->devs[udev->slot_id];
+@@ -2681,7 +2689,8 @@ void xhci_free_dev(struct usb_hcd *hcd,
+ spin_lock_irqsave(&xhci->lock, flags);
+ /* Don't disable the slot if the host controller is dead. */
+ state = xhci_readl(xhci, &xhci->op_regs->status);
+- if (state == 0xffffffff || (xhci->xhc_state & XHCI_STATE_DYING)) {
++ if (state == 0xffffffff || (xhci->xhc_state & XHCI_STATE_DYING) ||
++ (xhci->xhc_state & XHCI_STATE_HALTED)) {
+ xhci_free_virt_device(xhci, udev->slot_id);
+ spin_unlock_irqrestore(&xhci->lock, flags);
+ return;