]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.0 patches
authorGreg Kroah-Hartman <gregkh@suse.de>
Sat, 13 Aug 2011 15:11:32 +0000 (08:11 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Sat, 13 Aug 2011 15:11:32 +0000 (08:11 -0700)
14 files changed:
queue-3.0/series [new file with mode: 0644]
queue-3.0/staging-rtl8192u-declare-module_firmware.patch [new file with mode: 0644]
queue-3.0/usb-assign-instead-of-equal-in-usbtmc.c.patch [new file with mode: 0644]
queue-3.0/usb-config-use-proper-endian-access-for-wmaxpacketsize.patch [new file with mode: 0644]
queue-3.0/usb-ftdi_sio-fix-minor-typo-in-get_ftdi_divisor.patch [new file with mode: 0644]
queue-3.0/usb-musb-fix-oops-on-musb_gadget_pullup.patch [new file with mode: 0644]
queue-3.0/usb-option-driver-add-pid-for-vodafone-huawei-k3770.patch [new file with mode: 0644]
queue-3.0/usb-option-driver-add-pid-for-vodafone-huawei-k3771.patch [new file with mode: 0644]
queue-3.0/usb-option-driver-add-pid-for-vodafone-huawei-k4510.patch [new file with mode: 0644]
queue-3.0/usb-option-driver-add-pid-for-vodafone-huawei-k4511.patch [new file with mode: 0644]
queue-3.0/usb-serial-added-device-id-for-qualcomm-modem-in.patch [new file with mode: 0644]
queue-3.0/usb-usb-storage-unusual_devs-entry-for-arm-v2m.patch [new file with mode: 0644]
queue-3.0/usb-xhci-fix-os-want-to-own-hc.patch [new file with mode: 0644]
queue-3.0/xhci-don-t-submit-commands-or-urbs-to-halted-hosts.patch [new file with mode: 0644]

diff --git a/queue-3.0/series b/queue-3.0/series
new file mode 100644 (file)
index 0000000..bf8abfd
--- /dev/null
@@ -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 (file)
index 0000000..ab298df
--- /dev/null
@@ -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 (file)
index 0000000..569edf4
--- /dev/null
@@ -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 (file)
index 0000000..e30783d
--- /dev/null
@@ -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 (file)
index 0000000..1d81a71
--- /dev/null
@@ -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 (file)
index 0000000..efe99b5
--- /dev/null
@@ -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 (file)
index 0000000..3523174
--- /dev/null
@@ -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 (file)
index 0000000..1041563
--- /dev/null
@@ -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 (file)
index 0000000..e3ee85a
--- /dev/null
@@ -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 (file)
index 0000000..67b9a69
--- /dev/null
@@ -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 (file)
index 0000000..a91cca2
--- /dev/null
@@ -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 (file)
index 0000000..e9150e3
--- /dev/null
@@ -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 (file)
index 0000000..64fee3e
--- /dev/null
@@ -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 (file)
index 0000000..e6928f7
--- /dev/null
@@ -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;