diff options
author | Greg Kroah-Hartman <gregkh@suse.de> | 2011-08-13 08:11:32 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-08-13 08:11:32 -0700 |
commit | 8fb2c885db5efc3afbf6b79e80faa796714bfab4 (patch) | |
tree | a47845b757106ff40f74eaf37605d8d410c071a3 | |
parent | 8b541af79b806f6161ceeae9e73b50eab43b117c (diff) | |
download | stable-queue-8fb2c885db5efc3afbf6b79e80faa796714bfab4.tar.gz |
3.0 patches
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; |