]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
.33 patches
authorGreg Kroah-Hartman <gregkh@suse.de>
Mon, 29 Mar 2010 20:08:00 +0000 (13:08 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 29 Mar 2010 20:08:00 +0000 (13:08 -0700)
queue-2.6.33/series
queue-2.6.33/usb-ehci-adjust-ehci_iso_stream-for-changes-in-ehci_qh.patch [new file with mode: 0644]
queue-2.6.33/usb-ehci-fix-itd-list-order.patch [new file with mode: 0644]
queue-2.6.33/usb-fix-usbfs-regression.patch [new file with mode: 0644]
queue-2.6.33/usb-option-add-support-for-a-new-cmotech-device-to-usb-serial-option.patch [new file with mode: 0644]
queue-2.6.33/usb-option-fix-incorrect-manufacturer-name-in-usb-serial-option-maxon-cmotech.patch [new file with mode: 0644]
queue-2.6.33/usb-option-move-hardcoded-pid-to-a-macro-in-usb-serial-option.patch [new file with mode: 0644]
queue-2.6.33/usb-qcserial-add-new-device-ids.patch [new file with mode: 0644]
queue-2.6.33/usb-r8a66597-hcd-fix-removed-from-an-attached-hub.patch [new file with mode: 0644]
queue-2.6.33/usb-serial-ftdi-add-contec-vendor-and-product-id.patch [new file with mode: 0644]
queue-2.6.33/usb-xhci-re-initialize-cmd_completion.patch [new file with mode: 0644]

index e0ae837cfe900031852bc1ca0086d7df879fc034..35b290d5a789005e36212c2782e051c829a59fdd 100644 (file)
@@ -65,3 +65,13 @@ revert-sunrpc-move-the-close-processing-after-do-recvfrom-method.patch
 nfsd-ensure-sockets-are-closed-on-error.patch
 tty-keep-the-default-buffering-to-sub-page-units.patch
 tty-take-a-256-byte-padding-into-account-when-buffering-below-sub-page-units.patch
+usb-fix-usbfs-regression.patch
+usb-ehci-fix-itd-list-order.patch
+usb-ehci-adjust-ehci_iso_stream-for-changes-in-ehci_qh.patch
+usb-qcserial-add-new-device-ids.patch
+usb-xhci-re-initialize-cmd_completion.patch
+usb-serial-ftdi-add-contec-vendor-and-product-id.patch
+usb-option-fix-incorrect-manufacturer-name-in-usb-serial-option-maxon-cmotech.patch
+usb-option-move-hardcoded-pid-to-a-macro-in-usb-serial-option.patch
+usb-option-add-support-for-a-new-cmotech-device-to-usb-serial-option.patch
+usb-r8a66597-hcd-fix-removed-from-an-attached-hub.patch
diff --git a/queue-2.6.33/usb-ehci-adjust-ehci_iso_stream-for-changes-in-ehci_qh.patch b/queue-2.6.33/usb-ehci-adjust-ehci_iso_stream-for-changes-in-ehci_qh.patch
new file mode 100644 (file)
index 0000000..20b7ccc
--- /dev/null
@@ -0,0 +1,68 @@
+From 1082f57abfa26590b60c43f503afb24102a37016 Mon Sep 17 00:00:00 2001
+From: Clemens Ladisch <clemens@ladisch.de>
+Date: Mon, 1 Mar 2010 17:18:56 +0100
+Subject: USB: EHCI: adjust ehci_iso_stream for changes in ehci_qh
+
+From: Clemens Ladisch <clemens@ladisch.de>
+
+commit 1082f57abfa26590b60c43f503afb24102a37016 upstream.
+
+The EHCI driver stores in usb_host_endpoint.hcpriv a pointer to either
+an ehci_qh or an ehci_iso_stream structure, and uses the contents of the
+hw_info1 field to distinguish the two cases.
+
+After ehci_qh was split into hw and sw parts, ehci_iso_stream must also
+be adjusted so that it again looks like an ehci_qh structure.
+
+This fixes a NULL pointer access in ehci_endpoint_disable() when it
+tries to access qh->hw->hw_info1.
+
+Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
+Reported-by: Colin Fletcher <colin.m.fletcher@googlemail.com>
+Acked-by: Alan Stern <stern@rowland.harvard.edu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/host/ehci-hcd.c   |    2 +-
+ drivers/usb/host/ehci-sched.c |    4 ++--
+ drivers/usb/host/ehci.h       |    5 ++---
+ 3 files changed, 5 insertions(+), 6 deletions(-)
+
+--- a/drivers/usb/host/ehci-hcd.c
++++ b/drivers/usb/host/ehci-hcd.c
+@@ -995,7 +995,7 @@ rescan:
+       /* endpoints can be iso streams.  for now, we don't
+        * accelerate iso completions ... so spin a while.
+        */
+-      if (qh->hw->hw_info1 == 0) {
++      if (qh->hw == NULL) {
+               ehci_vdbg (ehci, "iso delay\n");
+               goto idle_timeout;
+       }
+--- a/drivers/usb/host/ehci-sched.c
++++ b/drivers/usb/host/ehci-sched.c
+@@ -1121,8 +1121,8 @@ iso_stream_find (struct ehci_hcd *ehci,
+                                       urb->interval);
+               }
+-      /* if dev->ep [epnum] is a QH, info1.maxpacket is nonzero */
+-      } else if (unlikely (stream->hw_info1 != 0)) {
++      /* if dev->ep [epnum] is a QH, hw is set */
++      } else if (unlikely (stream->hw != NULL)) {
+               ehci_dbg (ehci, "dev %s ep%d%s, not iso??\n",
+                       urb->dev->devpath, epnum,
+                       usb_pipein(urb->pipe) ? "in" : "out");
+--- a/drivers/usb/host/ehci.h
++++ b/drivers/usb/host/ehci.h
+@@ -394,9 +394,8 @@ struct ehci_iso_sched {
+  * acts like a qh would, if EHCI had them for ISO.
+  */
+ struct ehci_iso_stream {
+-      /* first two fields match QH, but info1 == 0 */
+-      __hc32                  hw_next;
+-      __hc32                  hw_info1;
++      /* first field matches ehci_hq, but is NULL */
++      struct ehci_qh_hw       *hw;
+       u32                     refcount;
+       u8                      bEndpointAddress;
diff --git a/queue-2.6.33/usb-ehci-fix-itd-list-order.patch b/queue-2.6.33/usb-ehci-fix-itd-list-order.patch
new file mode 100644 (file)
index 0000000..396451e
--- /dev/null
@@ -0,0 +1,61 @@
+From 92bc3648e6027384479852b770a542722fadee7c Mon Sep 17 00:00:00 2001
+From: Clemens Ladisch <clemens@ladisch.de>
+Date: Mon, 1 Mar 2010 09:12:50 +0100
+Subject: USB: EHCI: fix ITD list order
+
+From: Clemens Ladisch <clemens@ladisch.de>
+
+commit 92bc3648e6027384479852b770a542722fadee7c upstream.
+
+When isochronous URBs are shorter than one frame and when more than one
+ITD in a frame has been completed before the interrupt can be handled,
+scan_periodic() completes the URBs in the order in which they are found
+in the descriptor list.  Therefore, the descriptor list must contain the
+ITDs in the correct order, i.e., a new ITD must be linked in after any
+previous ITDs of the same endpoint.
+
+This should fix garbled capture data in the USB audio drivers.
+
+Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
+Reported-by: Colin Fletcher <colin.m.fletcher@googlemail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/host/ehci-sched.c |   24 +++++++++++++++++++-----
+ 1 file changed, 19 insertions(+), 5 deletions(-)
+
+--- a/drivers/usb/host/ehci-sched.c
++++ b/drivers/usb/host/ehci-sched.c
+@@ -1563,13 +1563,27 @@ itd_patch(
+ static inline void
+ itd_link (struct ehci_hcd *ehci, unsigned frame, struct ehci_itd *itd)
+ {
+-      /* always prepend ITD/SITD ... only QH tree is order-sensitive */
+-      itd->itd_next = ehci->pshadow [frame];
+-      itd->hw_next = ehci->periodic [frame];
+-      ehci->pshadow [frame].itd = itd;
++      union ehci_shadow       *prev = &ehci->pshadow[frame];
++      __hc32                  *hw_p = &ehci->periodic[frame];
++      union ehci_shadow       here = *prev;
++      __hc32                  type = 0;
++
++      /* skip any iso nodes which might belong to previous microframes */
++      while (here.ptr) {
++              type = Q_NEXT_TYPE(ehci, *hw_p);
++              if (type == cpu_to_hc32(ehci, Q_TYPE_QH))
++                      break;
++              prev = periodic_next_shadow(ehci, prev, type);
++              hw_p = shadow_next_periodic(ehci, &here, type);
++              here = *prev;
++      }
++
++      itd->itd_next = here;
++      itd->hw_next = *hw_p;
++      prev->itd = itd;
+       itd->frame = frame;
+       wmb ();
+-      ehci->periodic[frame] = cpu_to_hc32(ehci, itd->itd_dma | Q_TYPE_ITD);
++      *hw_p = cpu_to_hc32(ehci, itd->itd_dma | Q_TYPE_ITD);
+ }
+ /* fit urb's itds into the selected schedule slot; activate as needed */
diff --git a/queue-2.6.33/usb-fix-usbfs-regression.patch b/queue-2.6.33/usb-fix-usbfs-regression.patch
new file mode 100644 (file)
index 0000000..36df5ff
--- /dev/null
@@ -0,0 +1,56 @@
+From 7152b592593b9d48b33f8997b1dfd6df9143f7ec Mon Sep 17 00:00:00 2001
+From: Alan Stern <stern@rowland.harvard.edu>
+Date: Sat, 6 Mar 2010 15:04:03 -0500
+Subject: USB: fix usbfs regression
+
+From: Alan Stern <stern@rowland.harvard.edu>
+
+commit 7152b592593b9d48b33f8997b1dfd6df9143f7ec upstream.
+
+This patch (as1352) fixes a bug in the way isochronous input data is
+returned to userspace for usbfs transfers.  The entire buffer must be
+copied, not just the first actual_length bytes, because the individual
+packets will be discontiguous if any of them are short.
+
+Reported-by: Markus Rechberger <mrechberger@gmail.com>
+Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/core/devio.c |   17 ++++++++++++++---
+ 1 file changed, 14 insertions(+), 3 deletions(-)
+
+--- a/drivers/usb/core/devio.c
++++ b/drivers/usb/core/devio.c
+@@ -1176,6 +1176,13 @@ static int proc_do_submiturb(struct dev_
+                       free_async(as);
+                       return -ENOMEM;
+               }
++              /* Isochronous input data may end up being discontiguous
++               * if some of the packets are short.  Clear the buffer so
++               * that the gaps don't leak kernel data to userspace.
++               */
++              if (is_in && uurb->type == USBDEVFS_URB_TYPE_ISO)
++                      memset(as->urb->transfer_buffer, 0,
++                                      uurb->buffer_length);
+       }
+       as->urb->dev = ps->dev;
+       as->urb->pipe = (uurb->type << 30) |
+@@ -1312,10 +1319,14 @@ static int processcompl(struct async *as
+       void __user *addr = as->userurb;
+       unsigned int i;
+-      if (as->userbuffer && urb->actual_length)
+-              if (copy_to_user(as->userbuffer, urb->transfer_buffer,
+-                               urb->actual_length))
++      if (as->userbuffer && urb->actual_length) {
++              if (urb->number_of_packets > 0)         /* Isochronous */
++                      i = urb->transfer_buffer_length;
++              else                                    /* Non-Isoc */
++                      i = urb->actual_length;
++              if (copy_to_user(as->userbuffer, urb->transfer_buffer, i))
+                       goto err_out;
++      }
+       if (put_user(as->status, &userurb->status))
+               goto err_out;
+       if (put_user(urb->actual_length, &userurb->actual_length))
diff --git a/queue-2.6.33/usb-option-add-support-for-a-new-cmotech-device-to-usb-serial-option.patch b/queue-2.6.33/usb-option-add-support-for-a-new-cmotech-device-to-usb-serial-option.patch
new file mode 100644 (file)
index 0000000..fdc120a
--- /dev/null
@@ -0,0 +1,34 @@
+From 3b04872aa75006e2a4adaaec21e9c9ede8b8ad9d Mon Sep 17 00:00:00 2001
+From: Nathaniel McCallum <nathaniel@natemccallum.com>
+Date: Thu, 11 Mar 2010 13:09:26 -0500
+Subject: USB: option: add support for a new CMOTECH device to usb/serial/option
+
+From: Nathaniel McCallum <nathaniel@natemccallum.com>
+
+commit 3b04872aa75006e2a4adaaec21e9c9ede8b8ad9d upstream.
+
+Signed-off-by: Nathaniel McCallum <nathaniel@natemccallum.com>
+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
+@@ -289,6 +289,7 @@ static int  option_resume(struct usb_ser
+ #define QUALCOMM_VENDOR_ID                    0x05C6
+ #define CMOTECH_VENDOR_ID                     0x16d8
++#define CMOTECH_PRODUCT_6008                  0x6008
+ #define CMOTECH_PRODUCT_6280                  0x6280
+ #define TELIT_VENDOR_ID                               0x1bc7
+@@ -522,6 +523,7 @@ static struct usb_device_id option_ids[]
+       { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6000)}, /* ZTE AC8700 */
+       { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6613)}, /* Onda H600/ZTE MF330 */
+       { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6280) }, /* BP3-USB & BP3-EXT HSDPA */
++      { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6008) },
+       { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864E) },
+       { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864G) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MF622, 0xff, 0xff, 0xff) }, /* ZTE WCDMA products */
diff --git a/queue-2.6.33/usb-option-fix-incorrect-manufacturer-name-in-usb-serial-option-maxon-cmotech.patch b/queue-2.6.33/usb-option-fix-incorrect-manufacturer-name-in-usb-serial-option-maxon-cmotech.patch
new file mode 100644 (file)
index 0000000..75379cc
--- /dev/null
@@ -0,0 +1,36 @@
+From eaff4cdc978f414cf7b5441a333de3070d80e9c7 Mon Sep 17 00:00:00 2001
+From: Nathaniel McCallum <nathaniel@natemccallum.com>
+Date: Thu, 11 Mar 2010 13:09:24 -0500
+Subject: USB: option: fix incorrect manufacturer name in usb/serial/option: MAXON->CMOTECH
+
+From: Nathaniel McCallum <nathaniel@natemccallum.com>
+
+commit eaff4cdc978f414cf7b5441a333de3070d80e9c7 upstream.
+
+Signed-off-by: Nathaniel McCallum <nathaniel@natemccallum.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/option.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -288,7 +288,7 @@ static int  option_resume(struct usb_ser
+ #define QUALCOMM_VENDOR_ID                    0x05C6
+-#define MAXON_VENDOR_ID                               0x16d8
++#define CMOTECH_VENDOR_ID                     0x16d8
+ #define TELIT_VENDOR_ID                               0x1bc7
+ #define TELIT_PRODUCT_UC864E                  0x1003
+@@ -520,7 +520,7 @@ static struct usb_device_id option_ids[]
+       { USB_DEVICE(KYOCERA_VENDOR_ID, KYOCERA_PRODUCT_KPC680) },
+       { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6000)}, /* ZTE AC8700 */
+       { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6613)}, /* Onda H600/ZTE MF330 */
+-      { USB_DEVICE(MAXON_VENDOR_ID, 0x6280) }, /* BP3-USB & BP3-EXT HSDPA */
++      { USB_DEVICE(CMOTECH_VENDOR_ID, 0x6280) }, /* BP3-USB & BP3-EXT HSDPA */
+       { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864E) },
+       { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864G) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MF622, 0xff, 0xff, 0xff) }, /* ZTE WCDMA products */
diff --git a/queue-2.6.33/usb-option-move-hardcoded-pid-to-a-macro-in-usb-serial-option.patch b/queue-2.6.33/usb-option-move-hardcoded-pid-to-a-macro-in-usb-serial-option.patch
new file mode 100644 (file)
index 0000000..519d41f
--- /dev/null
@@ -0,0 +1,35 @@
+From bb73ed2a268a29ab1b7d8cc50b5f248578e7e188 Mon Sep 17 00:00:00 2001
+From: Nathaniel McCallum <nathaniel@natemccallum.com>
+Date: Thu, 11 Mar 2010 13:01:17 -0500
+Subject: USB: option: move hardcoded PID to a macro in usb/serial/option
+
+From: Nathaniel McCallum <nathaniel@natemccallum.com>
+
+commit bb73ed2a268a29ab1b7d8cc50b5f248578e7e188 upstream.
+
+Signed-off-by: Nathaniel McCallum <nathaniel@natemccallum.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/option.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -289,6 +289,7 @@ static int  option_resume(struct usb_ser
+ #define QUALCOMM_VENDOR_ID                    0x05C6
+ #define CMOTECH_VENDOR_ID                     0x16d8
++#define CMOTECH_PRODUCT_6280                  0x6280
+ #define TELIT_VENDOR_ID                               0x1bc7
+ #define TELIT_PRODUCT_UC864E                  0x1003
+@@ -520,7 +521,7 @@ static struct usb_device_id option_ids[]
+       { USB_DEVICE(KYOCERA_VENDOR_ID, KYOCERA_PRODUCT_KPC680) },
+       { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6000)}, /* ZTE AC8700 */
+       { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6613)}, /* Onda H600/ZTE MF330 */
+-      { USB_DEVICE(CMOTECH_VENDOR_ID, 0x6280) }, /* BP3-USB & BP3-EXT HSDPA */
++      { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6280) }, /* BP3-USB & BP3-EXT HSDPA */
+       { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864E) },
+       { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864G) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MF622, 0xff, 0xff, 0xff) }, /* ZTE WCDMA products */
diff --git a/queue-2.6.33/usb-qcserial-add-new-device-ids.patch b/queue-2.6.33/usb-qcserial-add-new-device-ids.patch
new file mode 100644 (file)
index 0000000..d66914c
--- /dev/null
@@ -0,0 +1,57 @@
+From 0725e95ea56698774e893edb7e7276b1d6890954 Mon Sep 17 00:00:00 2001
+From: Bernhard Rosenkraenzer <br@blankpage.ch>
+Date: Wed, 10 Mar 2010 12:36:43 +0100
+Subject: USB: qcserial: add new device ids
+
+From: Bernhard Rosenkraenzer <br@blankpage.ch>
+
+commit 0725e95ea56698774e893edb7e7276b1d6890954 upstream.
+
+This patch adds various USB device IDs for Gobi 2000 devices, as found in the
+drivers available at https://www.codeaurora.org/wiki/GOBI_Releases
+
+Signed-off-by: Bernhard Rosenkraenzer <bero@arklinux.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/qcserial.c |   29 +++++++++++++++++++++++++++++
+ 1 file changed, 29 insertions(+)
+
+--- a/drivers/usb/serial/qcserial.c
++++ b/drivers/usb/serial/qcserial.c
+@@ -47,6 +47,35 @@ static struct usb_device_id id_table[] =
+       {USB_DEVICE(0x05c6, 0x9221)},   /* Generic Gobi QDL device */
+       {USB_DEVICE(0x05c6, 0x9231)},   /* Generic Gobi QDL device */
+       {USB_DEVICE(0x1f45, 0x0001)},   /* Unknown Gobi QDL device */
++      {USB_DEVICE(0x413c, 0x8185)},   /* Dell Gobi 2000 QDL device (N0218, VU936) */
++      {USB_DEVICE(0x413c, 0x8186)},   /* Dell Gobi 2000 Modem device (N0218, VU936) */
++      {USB_DEVICE(0x05c6, 0x9224)},   /* Sony Gobi 2000 QDL device (N0279, VU730) */
++      {USB_DEVICE(0x05c6, 0x9225)},   /* Sony Gobi 2000 Modem device (N0279, VU730) */
++      {USB_DEVICE(0x05c6, 0x9244)},   /* Samsung Gobi 2000 QDL device (VL176) */
++      {USB_DEVICE(0x05c6, 0x9245)},   /* Samsung Gobi 2000 Modem device (VL176) */
++      {USB_DEVICE(0x03f0, 0x241d)},   /* HP Gobi 2000 QDL device (VP412) */
++      {USB_DEVICE(0x03f0, 0x251d)},   /* HP Gobi 2000 Modem device (VP412) */
++      {USB_DEVICE(0x05c6, 0x9214)},   /* Acer Gobi 2000 QDL device (VP413) */
++      {USB_DEVICE(0x05c6, 0x9215)},   /* Acer Gobi 2000 Modem device (VP413) */
++      {USB_DEVICE(0x05c6, 0x9264)},   /* Asus Gobi 2000 QDL device (VR305) */
++      {USB_DEVICE(0x05c6, 0x9265)},   /* Asus Gobi 2000 Modem device (VR305) */
++      {USB_DEVICE(0x05c6, 0x9234)},   /* Top Global Gobi 2000 QDL device (VR306) */
++      {USB_DEVICE(0x05c6, 0x9235)},   /* Top Global Gobi 2000 Modem device (VR306) */
++      {USB_DEVICE(0x05c6, 0x9274)},   /* iRex Technologies Gobi 2000 QDL device (VR307) */
++      {USB_DEVICE(0x05c6, 0x9275)},   /* iRex Technologies Gobi 2000 Modem device (VR307) */
++      {USB_DEVICE(0x1199, 0x9000)},   /* Sierra Wireless Gobi 2000 QDL device (VT773) */
++      {USB_DEVICE(0x1199, 0x9001)},   /* Sierra Wireless Gobi 2000 Modem device (VT773) */
++      {USB_DEVICE(0x1199, 0x9002)},   /* Sierra Wireless Gobi 2000 Modem device (VT773) */
++      {USB_DEVICE(0x1199, 0x9003)},   /* Sierra Wireless Gobi 2000 Modem device (VT773) */
++      {USB_DEVICE(0x1199, 0x9004)},   /* Sierra Wireless Gobi 2000 Modem device (VT773) */
++      {USB_DEVICE(0x1199, 0x9005)},   /* Sierra Wireless Gobi 2000 Modem device (VT773) */
++      {USB_DEVICE(0x1199, 0x9006)},   /* Sierra Wireless Gobi 2000 Modem device (VT773) */
++      {USB_DEVICE(0x1199, 0x9007)},   /* Sierra Wireless Gobi 2000 Modem device (VT773) */
++      {USB_DEVICE(0x1199, 0x9008)},   /* Sierra Wireless Gobi 2000 Modem device (VT773) */
++      {USB_DEVICE(0x1199, 0x9009)},   /* Sierra Wireless Gobi 2000 Modem device (VT773) */
++      {USB_DEVICE(0x1199, 0x900a)},   /* Sierra Wireless Gobi 2000 Modem device (VT773) */
++      {USB_DEVICE(0x16d8, 0x8001)},   /* CMDTech Gobi 2000 QDL device (VU922) */
++      {USB_DEVICE(0x16d8, 0x8002)},   /* CMDTech Gobi 2000 Modem device (VU922) */
+       { }                             /* Terminating entry */
+ };
+ MODULE_DEVICE_TABLE(usb, id_table);
diff --git a/queue-2.6.33/usb-r8a66597-hcd-fix-removed-from-an-attached-hub.patch b/queue-2.6.33/usb-r8a66597-hcd-fix-removed-from-an-attached-hub.patch
new file mode 100644 (file)
index 0000000..831c1e6
--- /dev/null
@@ -0,0 +1,73 @@
+From d835933436ac0d1e8f5b35fe809fd4e767e55d6e Mon Sep 17 00:00:00 2001
+From: Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com>
+Date: Tue, 16 Mar 2010 12:29:35 +0900
+Subject: usb: r8a66597-hcd: fix removed from an attached hub
+
+From: Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com>
+
+commit d835933436ac0d1e8f5b35fe809fd4e767e55d6e upstream.
+
+fix the problem that when a USB hub is attached to the r8a66597-hcd and
+a device is removed from that hub, it's likely that a kernel panic follows.
+
+Reported-by: Markus Pietrek <Markus.Pietrek@emtrion.de>
+Signed-off-by: Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/host/r8a66597-hcd.c |   16 +++++++++++-----
+ 1 file changed, 11 insertions(+), 5 deletions(-)
+
+--- a/drivers/usb/host/r8a66597-hcd.c
++++ b/drivers/usb/host/r8a66597-hcd.c
+@@ -418,7 +418,7 @@ static u8 alloc_usb_address(struct r8a66
+ /* this function must be called with interrupt disabled */
+ static void free_usb_address(struct r8a66597 *r8a66597,
+-                           struct r8a66597_device *dev)
++                           struct r8a66597_device *dev, int reset)
+ {
+       int port;
+@@ -430,7 +430,13 @@ static void free_usb_address(struct r8a6
+       dev->state = USB_STATE_DEFAULT;
+       r8a66597->address_map &= ~(1 << dev->address);
+       dev->address = 0;
+-      dev_set_drvdata(&dev->udev->dev, NULL);
++      /*
++       * Only when resetting USB, it is necessary to erase drvdata. When
++       * a usb device with usb hub is disconnect, "dev->udev" is already
++       * freed on usb_desconnect(). So we cannot access the data.
++       */
++      if (reset)
++              dev_set_drvdata(&dev->udev->dev, NULL);
+       list_del(&dev->device_list);
+       kfree(dev);
+@@ -1069,7 +1075,7 @@ static void r8a66597_usb_disconnect(stru
+       struct r8a66597_device *dev = r8a66597->root_hub[port].dev;
+       disable_r8a66597_pipe_all(r8a66597, dev);
+-      free_usb_address(r8a66597, dev);
++      free_usb_address(r8a66597, dev, 0);
+       start_root_hub_sampling(r8a66597, port, 0);
+ }
+@@ -2085,7 +2091,7 @@ static void update_usb_address_map(struc
+                               spin_lock_irqsave(&r8a66597->lock, flags);
+                               dev = get_r8a66597_device(r8a66597, addr);
+                               disable_r8a66597_pipe_all(r8a66597, dev);
+-                              free_usb_address(r8a66597, dev);
++                              free_usb_address(r8a66597, dev, 0);
+                               put_child_connect_map(r8a66597, addr);
+                               spin_unlock_irqrestore(&r8a66597->lock, flags);
+                       }
+@@ -2228,7 +2234,7 @@ static int r8a66597_hub_control(struct u
+                       rh->port |= (1 << USB_PORT_FEAT_RESET);
+                       disable_r8a66597_pipe_all(r8a66597, dev);
+-                      free_usb_address(r8a66597, dev);
++                      free_usb_address(r8a66597, dev, 1);
+                       r8a66597_mdfy(r8a66597, USBRST, USBRST | UACT,
+                                     get_dvstctr_reg(port));
diff --git a/queue-2.6.33/usb-serial-ftdi-add-contec-vendor-and-product-id.patch b/queue-2.6.33/usb-serial-ftdi-add-contec-vendor-and-product-id.patch
new file mode 100644 (file)
index 0000000..160c65a
--- /dev/null
@@ -0,0 +1,50 @@
+From dee5658b482e9e2ac7d6205dc876fc11d4008138 Mon Sep 17 00:00:00 2001
+From: Daniel Sangorrin <daniel.sangorrin@gmail.com>
+Date: Thu, 11 Mar 2010 14:10:58 -0800
+Subject: USB: serial: ftdi: add CONTEC vendor and product id
+
+From: Daniel Sangorrin <daniel.sangorrin@gmail.com>
+
+commit dee5658b482e9e2ac7d6205dc876fc11d4008138 upstream.
+
+This is a patch to ftdi_sio_ids.h and ftdi_sio.c that adds identifiers for
+CONTEC USB serial converter.  I tested it with the device COM-1(USB)H
+
+[akpm@linux-foundation.org: keep the VIDs sorted a bit]
+Signed-off-by: Daniel Sangorrin <daniel.sangorrin@gmail.com>
+Cc: Andreas Mohr <andi@lisas.de>
+Cc: Radek Liboska <liboska@uochb.cas.cz>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/ftdi_sio.c     |    1 +
+ drivers/usb/serial/ftdi_sio_ids.h |    7 +++++++
+ 2 files changed, 8 insertions(+)
+
+--- a/drivers/usb/serial/ftdi_sio.c
++++ b/drivers/usb/serial/ftdi_sio.c
+@@ -658,6 +658,7 @@ static struct usb_device_id id_table_com
+       { USB_DEVICE(EVOLUTION_VID, EVOLUTION_ER1_PID) },
+       { USB_DEVICE(EVOLUTION_VID, EVO_HYBRID_PID) },
+       { USB_DEVICE(EVOLUTION_VID, EVO_RCM4_PID) },
++      { USB_DEVICE(CONTEC_VID, CONTEC_COM1USBH_PID) },
+       { USB_DEVICE(FTDI_VID, FTDI_ARTEMIS_PID) },
+       { USB_DEVICE(FTDI_VID, FTDI_ATIK_ATK16_PID) },
+       { USB_DEVICE(FTDI_VID, FTDI_ATIK_ATK16C_PID) },
+--- a/drivers/usb/serial/ftdi_sio_ids.h
++++ b/drivers/usb/serial/ftdi_sio_ids.h
+@@ -501,6 +501,13 @@
+ #define CONTEC_COM1USBH_PID   0x8311  /* COM-1(USB)H */
+ /*
++ * Contec products (http://www.contec.com)
++ * Submitted by Daniel Sangorrin
++ */
++#define CONTEC_VID            0x06CE  /* Vendor ID */
++#define CONTEC_COM1USBH_PID   0x8311  /* COM-1(USB)H */
++
++/*
+  * Definitions for B&B Electronics products.
+  */
+ #define BANDB_VID             0x0856  /* B&B Electronics Vendor ID */
diff --git a/queue-2.6.33/usb-xhci-re-initialize-cmd_completion.patch b/queue-2.6.33/usb-xhci-re-initialize-cmd_completion.patch
new file mode 100644 (file)
index 0000000..cc61d31
--- /dev/null
@@ -0,0 +1,32 @@
+From 1d68064a7d80da4a7334cab0356162e36229c1a1 Mon Sep 17 00:00:00 2001
+From: Andiry Xu <andiry.xu@amd.com>
+Date: Fri, 12 Mar 2010 17:10:04 +0800
+Subject: USB: xHCI: re-initialize cmd_completion
+
+From: Andiry Xu <andiry.xu@amd.com>
+
+commit 1d68064a7d80da4a7334cab0356162e36229c1a1 upstream.
+
+When a signal interrupts a Configure Endpoint command, the cmd_completion used
+in xhci_configure_endpoint() is not re-initialized and the
+wait_for_completion_interruptible_timeout() will return failure. Initialize
+cmd_completion in xhci_configure_endpoint().
+
+Signed-off-by: Andiry Xu <andiry.xu@amd.com>
+Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/host/xhci-hcd.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/usb/host/xhci-hcd.c
++++ b/drivers/usb/host/xhci-hcd.c
+@@ -1173,6 +1173,7 @@ static int xhci_configure_endpoint(struc
+               cmd_completion = &virt_dev->cmd_completion;
+               cmd_status = &virt_dev->cmd_status;
+       }
++      init_completion(cmd_completion);
+       if (!ctx_change)
+               ret = xhci_queue_configure_endpoint(xhci, in_ctx->dma,