aboutsummaryrefslogtreecommitdiffstats
diff options
-rw-r--r--series5
-rw-r--r--usb.current/usb-adds-artisman-usb-dongle-to-list-of-quirky-devices.patch42
-rw-r--r--usb.current/usb-fix-usb3.0-port-speed-downgrade-after-port-reset.patch44
-rw-r--r--usb.current/usb-option-add-support-for-amoi-skypephone-s2.patch39
-rw-r--r--usb.current/usb-xhci-fix-another-bug-in-link-trb-activation-change.patch57
-rw-r--r--usb.current/usb-xhci-set-ep0-dequeue-ptr-after-reset-of-configured-device.patch88
-rw-r--r--usb/usb-bkl-convert-usb_driver-ioctl-to-unlocked_ioctl.patch2
-rw-r--r--usb/usb-ehci-ehci-1.1-addendum-basic-lpm-feature-support.patch2
-rw-r--r--usb/usb-option-remove-duplicate-amoi_vendor_id.patch22
-rw-r--r--usb/usb-xhci-trivial-use-array_size.patch4
10 files changed, 290 insertions, 15 deletions
diff --git a/series b/series
index b6989fffc7d14b..1c6d8464600813 100644
--- a/series
+++ b/series
@@ -24,6 +24,11 @@ usb.current/usb-expose-vendor-specific-acm-channel-on-nokia-5230.patch
usb.current/usb-s3c2410_udc-be-aware-of-connected-gadget-driver.patch
usb.current/usb-ftdi_sio-support-for-signalyzer-tools-based-on-ftdi-chips.patch
usb.current/usb-new-pids-for-qualcomm-gobi-2000-qcserial.patch
+usb.current/usb-option-add-support-for-amoi-skypephone-s2.patch
+usb.current/usb-xhci-fix-another-bug-in-link-trb-activation-change.patch
+usb.current/usb-fix-usb3.0-port-speed-downgrade-after-port-reset.patch
+usb.current/usb-xhci-set-ep0-dequeue-ptr-after-reset-of-configured-device.patch
+usb.current/usb-adds-artisman-usb-dongle-to-list-of-quirky-devices.patch
#################################
# Staging patches for 2.6.35
diff --git a/usb.current/usb-adds-artisman-usb-dongle-to-list-of-quirky-devices.patch b/usb.current/usb-adds-artisman-usb-dongle-to-list-of-quirky-devices.patch
new file mode 100644
index 00000000000000..0144f0926c49d9
--- /dev/null
+++ b/usb.current/usb-adds-artisman-usb-dongle-to-list-of-quirky-devices.patch
@@ -0,0 +1,42 @@
+From mortier@btinternet.com Fri Jul 9 14:33:39 2010
+From: Paul Mortier <mortier@btinternet.com>
+Date: Fri, 09 Jul 2010 13:18:50 +0100
+Subject: USB: adds Artisman USB dongle to list of quirky devices
+To: linux-usb@vger.kernel.org
+Cc: gregkh@suse.de
+Message-ID: <4C3713AA.3010008@btinternet.com>
+
+
+From: Paul Mortier <mortier@btinternet.com>
+
+When an attempt is made to read the interface strings of the Artisman
+Watchdog USB dongle (idVendor:idProduct 04b4:0526) an error is written
+to the dmesg log (uhci_result_common: failed with status 440000) and the
+dongle resets itself, resulting in a disconnect/reconnect loop.
+
+Adding the dongle to the list of devices in quirks.c, with the same
+quirk Alan Stern's previous patch for the Saitek Cyborg Gold 3D
+joystick, stops the device from resetting and allows it to be used with
+no problems.
+
+Signed-off-by: Paul Mortier <mortier@btinternet.com>
+Cc: stable <stable@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/core/quirks.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/drivers/usb/core/quirks.c
++++ b/drivers/usb/core/quirks.c
+@@ -41,6 +41,10 @@ static const struct usb_device_id usb_qu
+ /* Philips PSC805 audio device */
+ { USB_DEVICE(0x0471, 0x0155), .driver_info = USB_QUIRK_RESET_RESUME },
+
++ /* Artisman Watchdog Dongle */
++ { USB_DEVICE(0x04b4, 0x0526), .driver_info =
++ USB_QUIRK_CONFIG_INTF_STRINGS },
++
+ /* Roland SC-8820 */
+ { USB_DEVICE(0x0582, 0x0007), .driver_info = USB_QUIRK_RESET_RESUME },
+
diff --git a/usb.current/usb-fix-usb3.0-port-speed-downgrade-after-port-reset.patch b/usb.current/usb-fix-usb3.0-port-speed-downgrade-after-port-reset.patch
new file mode 100644
index 00000000000000..6909ae68410866
--- /dev/null
+++ b/usb.current/usb-fix-usb3.0-port-speed-downgrade-after-port-reset.patch
@@ -0,0 +1,44 @@
+From sarah.a.sharp@linux.intel.com Fri Jul 9 14:32:54 2010
+From: Sarah Sharp <sarah.a.sharp@linux.intel.com>
+Date: Fri, 9 Jul 2010 17:08:48 +0200
+Subject: USB: Fix USB3.0 Port Speed Downgrade after port reset
+To: Greg KH <gregkh@suse.de>
+Cc: linux-usb@vger.kernel.org, Fajun Chen <fajun.chen@seagate.com>
+Message-ID: <20100709150846.GA3252@xanatos>
+Content-Disposition: inline
+
+
+Without this fix, a USB 3.0 port is downgraded to full speed after a port
+reset of a configured device. The USB 3.0 terminations will be disabled
+permanently, and USB 3.0 devices will always enumerate as full speed
+devices, until the host controller is unplugged (if it is an ExpressCard)
+or the computer is rebooted.
+
+Fajun Chen traced this traced the speed downgrade issue to the port reset
+and the interpretation of port status in USB hub driver code. The hub
+code was not testing for the port being a SuperSpeed port, and it fell
+through to the else case of Full Speed.
+
+The following patch adds SuperSpeed mapping from the port status, and
+fixes the speed downgrade issue.
+
+Reported-by: Fajun Chen <fajun.chen@seagate.com>
+Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
+Cc: stable <stable@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/core/hub.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/usb/core/hub.c
++++ b/drivers/usb/core/hub.c
+@@ -1982,6 +1982,8 @@ static int hub_port_wait_reset(struct us
+ (portstatus & USB_PORT_STAT_ENABLE)) {
+ if (hub_is_wusb(hub))
+ udev->speed = USB_SPEED_WIRELESS;
++ else if (portstatus & USB_PORT_STAT_SUPER_SPEED)
++ udev->speed = USB_SPEED_SUPER;
+ else if (portstatus & USB_PORT_STAT_HIGH_SPEED)
+ udev->speed = USB_SPEED_HIGH;
+ else if (portstatus & USB_PORT_STAT_LOW_SPEED)
diff --git a/usb.current/usb-option-add-support-for-amoi-skypephone-s2.patch b/usb.current/usb-option-add-support-for-amoi-skypephone-s2.patch
new file mode 100644
index 00000000000000..b061d42071a7a1
--- /dev/null
+++ b/usb.current/usb-option-add-support-for-amoi-skypephone-s2.patch
@@ -0,0 +1,39 @@
+From d.g.jansen@googlemail.com Fri Jul 9 14:30:36 2010
+From: "Dennis Jansen" <d.g.jansen@googlemail.com>
+Date: Fri, 09 Jul 2010 22:03:53 +0200
+Subject: USB: option: Add support for AMOI Skypephone S2
+To: greg@kroah.com
+Message-ID: <op.vfld0rlf01mn9a@netbook>
+
+
+usbserial: Add AMOI Skypephone S2 support.
+
+This patch adds support for the AMOI Skypephone S2 to the usbserial module.
+
+Tested-by: Dennis Jansen <Dennis.Jansen@web.de>
+Signed-off-by: Dennis Jansen <Dennis.Jansen@web.de>
+Cc: stable <stable@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/option.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -206,6 +206,7 @@ static void option_instat_callback(struc
+ #define AMOI_PRODUCT_H01 0x0800
+ #define AMOI_PRODUCT_H01A 0x7002
+ #define AMOI_PRODUCT_H02 0x0802
++#define AMOI_PRODUCT_SKYPEPHONE_S2 0x0407
+
+ #define DELL_VENDOR_ID 0x413C
+
+@@ -517,6 +518,7 @@ static const struct usb_device_id option
+ { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H01) },
+ { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H01A) },
+ { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H02) },
++ { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_SKYPEPHONE_S2) },
+
+ { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5700_MINICARD) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO Mini-Card == Novatel Expedite EV620 CDMA/EV-DO */
+ { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5500_MINICARD) }, /* Dell Wireless 5500 Mobile Broadband HSDPA Mini-Card == Novatel Expedite EU740 HSDPA/3G */
diff --git a/usb.current/usb-xhci-fix-another-bug-in-link-trb-activation-change.patch b/usb.current/usb-xhci-fix-another-bug-in-link-trb-activation-change.patch
new file mode 100644
index 00000000000000..b655843c2ff33d
--- /dev/null
+++ b/usb.current/usb-xhci-fix-another-bug-in-link-trb-activation-change.patch
@@ -0,0 +1,57 @@
+From sarah.a.sharp@linux.intel.com Fri Jul 9 14:32:26 2010
+From: Sarah Sharp <sarah.a.sharp@linux.intel.com>
+Date: Fri, 9 Jul 2010 17:08:38 +0200
+Subject: USB: xHCI: Fix another bug in link TRB activation change.
+To: Greg KH <gregkh@suse.de>
+Cc: linux-usb@vger.kernel.org, Fajun Chen <fajun.chen@seagate.com>
+Message-ID: <20100709150837.GA2987@xanatos>
+Content-Disposition: inline
+
+
+Commit 6c12db90f19727c76990e7f4801c67a148b30111 also seems to have
+introduced a bug that is triggered when the command ring is about to wrap.
+The inc_enq() function will not have moved the enqueue pointer past the
+link TRB. It is supposed to be moved past the link TRB in prepare_ring(),
+which should be called before a TD is enqueued. However, the
+queue_command() function never calls the prepare_ring() function because
+prepare_ring() is only supposed to be used for endpoint rings. That means
+the enqueue pointer will not be moved past the link TRB, and will get
+overwritten.
+
+The fix is to make queue_command() call prepare_ring() with a fake
+endpoint status (set to running). Then the enqueue pointer will get moved
+past the link TRB.
+
+Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/host/xhci-ring.c | 11 +++++++----
+ 1 file changed, 7 insertions(+), 4 deletions(-)
+
+--- a/drivers/usb/host/xhci-ring.c
++++ b/drivers/usb/host/xhci-ring.c
+@@ -2380,16 +2380,19 @@ static int queue_command(struct xhci_hcd
+ u32 field3, u32 field4, bool command_must_succeed)
+ {
+ int reserved_trbs = xhci->cmd_ring_reserved_trbs;
++ int ret;
++
+ if (!command_must_succeed)
+ reserved_trbs++;
+
+- if (!room_on_ring(xhci, xhci->cmd_ring, reserved_trbs)) {
+- if (!in_interrupt())
+- xhci_err(xhci, "ERR: No room for command on command ring\n");
++ ret = prepare_ring(xhci, xhci->cmd_ring, EP_STATE_RUNNING,
++ reserved_trbs, GFP_ATOMIC);
++ if (ret < 0) {
++ xhci_err(xhci, "ERR: No room for command on command ring\n");
+ if (command_must_succeed)
+ xhci_err(xhci, "ERR: Reserved TRB counting for "
+ "unfailable commands failed.\n");
+- return -ENOMEM;
++ return ret;
+ }
+ queue_trb(xhci, xhci->cmd_ring, false, false, field1, field2, field3,
+ field4 | xhci->cmd_ring->cycle_state);
diff --git a/usb.current/usb-xhci-set-ep0-dequeue-ptr-after-reset-of-configured-device.patch b/usb.current/usb-xhci-set-ep0-dequeue-ptr-after-reset-of-configured-device.patch
new file mode 100644
index 00000000000000..90217537686f4c
--- /dev/null
+++ b/usb.current/usb-xhci-set-ep0-dequeue-ptr-after-reset-of-configured-device.patch
@@ -0,0 +1,88 @@
+From sarah.a.sharp@linux.intel.com Fri Jul 9 14:33:25 2010
+From: Sarah Sharp <sarah.a.sharp@linux.intel.com>
+Date: Fri, 9 Jul 2010 17:08:54 +0200
+Subject: USB: xhci: Set EP0 dequeue ptr after reset of configured device.
+To: Greg KH <gregkh@suse.de>
+Cc: linux-usb@vger.kernel.org, Fajun Chen <fajun.chen@seagate.com>, stable@vger.kernel.org
+Message-ID: <20100709150854.GA3804@xanatos>
+Content-Disposition: inline
+
+
+When a configured device is reset, the control endpoint's ring is reused.
+If control transfers to the device were issued before the device is reset,
+the dequeue pointer will be somewhere in the middle of the ring. If the
+device is then issued an address with the set address command, the xHCI
+driver must provide a valid input context for control endpoint zero.
+
+The original code would give the hardware the original input context,
+which had a dequeue pointer set to the top of the ring. This would cause
+the host to re-execute any control transfers until it reached the ring's
+enqueue pointer. When issuing a set address command for a device that has
+just been configured and then reset, use the control endpoint's enqueue
+pointer as the hardware's dequeue pointer.
+
+Assumption: All control transfers will be completed or cancelled before
+the set address command is issued to the device. If there are any
+outstanding control transfers, this code will not work.
+
+Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/host/xhci-mem.c | 21 +++++++++++++++++++++
+ drivers/usb/host/xhci.c | 2 ++
+ drivers/usb/host/xhci.h | 2 ++
+ 3 files changed, 25 insertions(+)
+
+--- a/drivers/usb/host/xhci-mem.c
++++ b/drivers/usb/host/xhci-mem.c
+@@ -835,6 +835,27 @@ fail:
+ return 0;
+ }
+
++void xhci_copy_ep0_dequeue_into_input_ctx(struct xhci_hcd *xhci,
++ struct usb_device *udev)
++{
++ struct xhci_virt_device *virt_dev;
++ struct xhci_ep_ctx *ep0_ctx;
++ struct xhci_ring *ep_ring;
++
++ virt_dev = xhci->devs[udev->slot_id];
++ ep0_ctx = xhci_get_ep_ctx(xhci, virt_dev->in_ctx, 0);
++ ep_ring = virt_dev->eps[0].ring;
++ /*
++ * FIXME we don't keep track of the dequeue pointer very well after a
++ * Set TR dequeue pointer, so we're setting the dequeue pointer of the
++ * host to our enqueue pointer. This should only be called after a
++ * configured device has reset, so all control transfers should have
++ * been completed or cancelled before the reset.
++ */
++ ep0_ctx->deq = xhci_trb_virt_to_dma(ep_ring->enq_seg, ep_ring->enqueue);
++ ep0_ctx->deq |= ep_ring->cycle_state;
++}
++
+ /* Setup an xHCI virtual device for a Set Address command */
+ int xhci_setup_addressable_virt_dev(struct xhci_hcd *xhci, struct usb_device *udev)
+ {
+--- a/drivers/usb/host/xhci.c
++++ b/drivers/usb/host/xhci.c
+@@ -2134,6 +2134,8 @@ int xhci_address_device(struct usb_hcd *
+ /* If this is a Set Address to an unconfigured device, setup ep 0 */
+ if (!udev->config)
+ xhci_setup_addressable_virt_dev(xhci, udev);
++ else
++ xhci_copy_ep0_dequeue_into_input_ctx(xhci, udev);
+ /* Otherwise, assume the core has the device configured how it wants */
+ xhci_dbg(xhci, "Slot ID %d Input Context:\n", udev->slot_id);
+ xhci_dbg_ctx(xhci, virt_dev->in_ctx, 2);
+--- a/drivers/usb/host/xhci.h
++++ b/drivers/usb/host/xhci.h
+@@ -1292,6 +1292,8 @@ int xhci_mem_init(struct xhci_hcd *xhci,
+ void xhci_free_virt_device(struct xhci_hcd *xhci, int slot_id);
+ int xhci_alloc_virt_device(struct xhci_hcd *xhci, int slot_id, struct usb_device *udev, gfp_t flags);
+ int xhci_setup_addressable_virt_dev(struct xhci_hcd *xhci, struct usb_device *udev);
++void xhci_copy_ep0_dequeue_into_input_ctx(struct xhci_hcd *xhci,
++ struct usb_device *udev);
+ unsigned int xhci_get_endpoint_index(struct usb_endpoint_descriptor *desc);
+ unsigned int xhci_get_endpoint_flag(struct usb_endpoint_descriptor *desc);
+ unsigned int xhci_get_endpoint_flag_from_index(unsigned int ep_index);
diff --git a/usb/usb-bkl-convert-usb_driver-ioctl-to-unlocked_ioctl.patch b/usb/usb-bkl-convert-usb_driver-ioctl-to-unlocked_ioctl.patch
index 1ebadfd8a1c093..3e015a4dd9427f 100644
--- a/usb/usb-bkl-convert-usb_driver-ioctl-to-unlocked_ioctl.patch
+++ b/usb/usb-bkl-convert-usb_driver-ioctl-to-unlocked_ioctl.patch
@@ -53,7 +53,7 @@ From: Andi Kleen <ak@linux.intel.com>
static int
hub_ioctl(struct usb_interface *intf, unsigned int code, void *user_data)
{
-@@ -3463,7 +3464,7 @@ static struct usb_driver hub_driver = {
+@@ -3465,7 +3466,7 @@ static struct usb_driver hub_driver = {
.reset_resume = hub_reset_resume,
.pre_reset = hub_pre_reset,
.post_reset = hub_post_reset,
diff --git a/usb/usb-ehci-ehci-1.1-addendum-basic-lpm-feature-support.patch b/usb/usb-ehci-ehci-1.1-addendum-basic-lpm-feature-support.patch
index d613de669d90d7..1d136f493bc69e 100644
--- a/usb/usb-ehci-ehci-1.1-addendum-basic-lpm-feature-support.patch
+++ b/usb/usb-ehci-ehci-1.1-addendum-basic-lpm-feature-support.patch
@@ -29,7 +29,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
-@@ -2878,7 +2878,9 @@ hub_port_init (struct usb_hub *hub, stru
+@@ -2880,7 +2880,9 @@ hub_port_init (struct usb_hub *hub, stru
}
retval = 0;
diff --git a/usb/usb-option-remove-duplicate-amoi_vendor_id.patch b/usb/usb-option-remove-duplicate-amoi_vendor_id.patch
index 2d86097f361c0a..8b296490714895 100644
--- a/usb/usb-option-remove-duplicate-amoi_vendor_id.patch
+++ b/usb/usb-option-remove-duplicate-amoi_vendor_id.patch
@@ -16,20 +16,12 @@ Signed-off-by: Leann Ogasawara <leann.ogasawara@canonical.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
- drivers/usb/serial/option.c | 4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
+ drivers/usb/serial/option.c | 4 ----
+ 1 file changed, 4 deletions(-)
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
-@@ -206,6 +206,7 @@ static void option_instat_callback(struc
- #define AMOI_PRODUCT_H01 0x0800
- #define AMOI_PRODUCT_H01A 0x7002
- #define AMOI_PRODUCT_H02 0x0802
-+#define AMOI_PRODUCT_9508 0x0800
-
- #define DELL_VENDOR_ID 0x413C
-
-@@ -263,9 +264,6 @@ static void option_instat_callback(struc
+@@ -264,9 +264,6 @@ static void option_instat_callback(struc
#define BANDRICH_PRODUCT_1011 0x1011
#define BANDRICH_PRODUCT_1012 0x1012
@@ -39,3 +31,11 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
#define QUALCOMM_VENDOR_ID 0x05C6
#define CMOTECH_VENDOR_ID 0x16d8
+@@ -483,7 +480,6 @@ static const struct usb_device_id option
+ { 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(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E14AC) },
+- { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_9508) },
+ { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V640) }, /* Novatel Merlin V640/XV620 */
+ { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V620) }, /* Novatel Merlin V620/S620 */
+ { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V740) }, /* Novatel Merlin EX720/V740/X720 */
diff --git a/usb/usb-xhci-trivial-use-array_size.patch b/usb/usb-xhci-trivial-use-array_size.patch
index 87df12dd957d90..f3596ad17442e7 100644
--- a/usb/usb-xhci-trivial-use-array_size.patch
+++ b/usb/usb-xhci-trivial-use-array_size.patch
@@ -19,7 +19,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
--- a/drivers/usb/host/xhci-mem.c
+++ b/drivers/usb/host/xhci-mem.c
-@@ -1566,7 +1566,7 @@ static int xhci_check_trb_in_td_math(str
+@@ -1587,7 +1587,7 @@ static int xhci_check_trb_in_td_math(str
unsigned int num_tests;
int i, ret;
@@ -28,7 +28,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
for (i = 0; i < num_tests; i++) {
ret = xhci_test_trb_in_td(xhci,
xhci->event_ring->first_seg,
-@@ -1579,7 +1579,7 @@ static int xhci_check_trb_in_td_math(str
+@@ -1600,7 +1600,7 @@ static int xhci_check_trb_in_td_math(str
return ret;
}