]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.10-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 4 Dec 2014 23:33:39 +0000 (15:33 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 4 Dec 2014 23:33:39 +0000 (15:33 -0800)
added patches:
alsa-usb-audio-add-ctrl-message-delay-quirk-for.patch
can-esd_usb2-fix-memory-leak-on-disconnect.patch
usb-keyspan-fix-overrun-error-reporting.patch
usb-keyspan-fix-tty-line-status-reporting.patch
usb-quirks-add-reset-resume-quirk-for-ms-wireless-laser-mouse-6000.patch
usb-serial-cp210x-add-ids-for-cel-meshconnect-usb-stick.patch
usb-serial-ftdi_sio-add-pids-for-matrix-orbital-products.patch
usb-ssu100-fix-overrun-error-reporting.patch
usb-xhci-don-t-start-a-halted-endpoint-before-its-new-dequeue-is-set.patch

queue-3.10/alsa-usb-audio-add-ctrl-message-delay-quirk-for.patch [new file with mode: 0644]
queue-3.10/can-esd_usb2-fix-memory-leak-on-disconnect.patch [new file with mode: 0644]
queue-3.10/series
queue-3.10/usb-keyspan-fix-overrun-error-reporting.patch [new file with mode: 0644]
queue-3.10/usb-keyspan-fix-tty-line-status-reporting.patch [new file with mode: 0644]
queue-3.10/usb-quirks-add-reset-resume-quirk-for-ms-wireless-laser-mouse-6000.patch [new file with mode: 0644]
queue-3.10/usb-serial-cp210x-add-ids-for-cel-meshconnect-usb-stick.patch [new file with mode: 0644]
queue-3.10/usb-serial-ftdi_sio-add-pids-for-matrix-orbital-products.patch [new file with mode: 0644]
queue-3.10/usb-ssu100-fix-overrun-error-reporting.patch [new file with mode: 0644]
queue-3.10/usb-xhci-don-t-start-a-halted-endpoint-before-its-new-dequeue-is-set.patch [new file with mode: 0644]

diff --git a/queue-3.10/alsa-usb-audio-add-ctrl-message-delay-quirk-for.patch b/queue-3.10/alsa-usb-audio-add-ctrl-message-delay-quirk-for.patch
new file mode 100644 (file)
index 0000000..a0267da
--- /dev/null
@@ -0,0 +1,56 @@
+From 6e84a8d7ac3ba246ef44e313e92bc16a1da1b04a Mon Sep 17 00:00:00 2001
+From: Jurgen Kramer <gtmkramer@xs4all.nl>
+Date: Sat, 15 Nov 2014 14:01:21 +0100
+Subject: ALSA: usb-audio: Add ctrl message delay quirk for
+ Marantz/Denon devices
+
+From: Jurgen Kramer <gtmkramer@xs4all.nl>
+
+commit 6e84a8d7ac3ba246ef44e313e92bc16a1da1b04a upstream.
+
+This patch adds a USB control message delay quirk for a few specific Marantz/Denon
+devices. Without the delay the DACs will not work properly and produces the
+following type of messages:
+
+Nov 15 10:09:21 orwell kernel: [   91.342880] usb 3-13: clock source 41 is not valid, cannot use
+Nov 15 10:09:21 orwell kernel: [   91.343775] usb 3-13: clock source 41 is not valid, cannot use
+
+There are likely other Marantz/Denon devices using the same USB module which exhibit the
+same problems. But as this cannot be verified I limited the patch to the devices
+I could test.
+
+The following two devices are covered by this path:
+- Marantz SA-14S1
+- Marantz HD-DAC1
+
+Signed-off-by: Jurgen Kramer <gtmkramer@xs4all.nl>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/usb/quirks.c |   14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+--- a/sound/usb/quirks.c
++++ b/sound/usb/quirks.c
+@@ -914,6 +914,20 @@ void snd_usb_ctl_msg_quirk(struct usb_de
+       if ((le16_to_cpu(dev->descriptor.idVendor) == 0x23ba) &&
+           (requesttype & USB_TYPE_MASK) == USB_TYPE_CLASS)
+               mdelay(20);
++
++      /* Marantz/Denon devices with USB DAC functionality need a delay
++       * after each class compliant request
++       */
++      if ((le16_to_cpu(dev->descriptor.idVendor) == 0x154e) &&
++          (requesttype & USB_TYPE_MASK) == USB_TYPE_CLASS) {
++
++              switch (le16_to_cpu(dev->descriptor.idProduct)) {
++              case 0x3005: /* Marantz HD-DAC1 */
++              case 0x3006: /* Marantz SA-14S1 */
++                      mdelay(20);
++                      break;
++              }
++      }
+ }
+ /*
diff --git a/queue-3.10/can-esd_usb2-fix-memory-leak-on-disconnect.patch b/queue-3.10/can-esd_usb2-fix-memory-leak-on-disconnect.patch
new file mode 100644 (file)
index 0000000..d2e975c
--- /dev/null
@@ -0,0 +1,33 @@
+From efbd50d2f62fc1f69a3dcd153e63ba28cc8eb27f Mon Sep 17 00:00:00 2001
+From: Alexey Khoroshilov <khoroshilov@ispras.ru>
+Date: Sat, 11 Oct 2014 00:31:07 +0400
+Subject: can: esd_usb2: fix memory leak on disconnect
+
+From: Alexey Khoroshilov <khoroshilov@ispras.ru>
+
+commit efbd50d2f62fc1f69a3dcd153e63ba28cc8eb27f upstream.
+
+It seems struct esd_usb2 dev is not deallocated on disconnect. The patch adds
+the missing deallocation.
+
+Found by Linux Driver Verification project (linuxtesting.org).
+
+Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
+Acked-by: Matthias Fuchs <matthias.fuchs@esd.eu>
+Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/can/usb/esd_usb2.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/net/can/usb/esd_usb2.c
++++ b/drivers/net/can/usb/esd_usb2.c
+@@ -1132,6 +1132,7 @@ static void esd_usb2_disconnect(struct u
+                       }
+               }
+               unlink_all_urbs(dev);
++              kfree(dev);
+       }
+ }
index e67c71511fa84cc65d6343bc0c546809f0377728..2896f9ee7ba7e1ba58d46f973b048531184867a7 100644 (file)
@@ -20,3 +20,12 @@ of-base-fix-powerpc-address-parsing-hack.patch
 powerpc-pseries-honor-the-generic-no_64bit_msi-flag.patch
 powerpc-pseries-fix-endiannes-issue-in-rtas-call-from-xmon.patch
 iio-fix-iio_event_code_extract_dir-bit-mask.patch
+usb-ssu100-fix-overrun-error-reporting.patch
+usb-keyspan-fix-overrun-error-reporting.patch
+usb-keyspan-fix-tty-line-status-reporting.patch
+usb-serial-cp210x-add-ids-for-cel-meshconnect-usb-stick.patch
+usb-serial-ftdi_sio-add-pids-for-matrix-orbital-products.patch
+usb-quirks-add-reset-resume-quirk-for-ms-wireless-laser-mouse-6000.patch
+usb-xhci-don-t-start-a-halted-endpoint-before-its-new-dequeue-is-set.patch
+can-esd_usb2-fix-memory-leak-on-disconnect.patch
+alsa-usb-audio-add-ctrl-message-delay-quirk-for.patch
diff --git a/queue-3.10/usb-keyspan-fix-overrun-error-reporting.patch b/queue-3.10/usb-keyspan-fix-overrun-error-reporting.patch
new file mode 100644 (file)
index 0000000..9dfe097
--- /dev/null
@@ -0,0 +1,60 @@
+From 855515a6d3731242d85850a206f2ec084c917338 Mon Sep 17 00:00:00 2001
+From: Johan Hovold <johan@kernel.org>
+Date: Tue, 18 Nov 2014 11:25:20 +0100
+Subject: USB: keyspan: fix overrun-error reporting
+
+From: Johan Hovold <johan@kernel.org>
+
+commit 855515a6d3731242d85850a206f2ec084c917338 upstream.
+
+Fix reporting of overrun errors, which are not associated with a
+character. Instead insert a null character and report only once.
+
+Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
+Signed-off-by: Johan Hovold <johan@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/keyspan.c |   21 +++++++++++----------
+ 1 file changed, 11 insertions(+), 10 deletions(-)
+
+--- a/drivers/usb/serial/keyspan.c
++++ b/drivers/usb/serial/keyspan.c
+@@ -308,12 +308,13 @@ static void      usa26_indat_callback(struct
+               if ((data[0] & 0x80) == 0) {
+                       /* no errors on individual bytes, only
+                          possible overrun err */
+-                      if (data[0] & RXERROR_OVERRUN)
+-                              err = TTY_OVERRUN;
+-                      else
+-                              err = 0;
++                      if (data[0] & RXERROR_OVERRUN) {
++                              tty_insert_flip_char(&port->port, 0,
++                                                              TTY_OVERRUN);
++                      }
+                       for (i = 1; i < urb->actual_length ; ++i)
+-                              tty_insert_flip_char(&port->port, data[i], err);
++                              tty_insert_flip_char(&port->port, data[i],
++                                                              TTY_NORMAL);
+               } else {
+                       /* some bytes had errors, every byte has status */
+                       dev_dbg(&port->dev, "%s - RX error!!!!\n", __func__);
+@@ -796,13 +797,13 @@ static void usa90_indat_callback(struct
+                       if ((data[0] & 0x80) == 0) {
+                               /* no errors on individual bytes, only
+                                  possible overrun err*/
+-                              if (data[0] & RXERROR_OVERRUN)
+-                                      err = TTY_OVERRUN;
+-                              else
+-                                      err = 0;
++                              if (data[0] & RXERROR_OVERRUN) {
++                                      tty_insert_flip_char(&port->port, 0,
++                                                              TTY_OVERRUN);
++                              }
+                               for (i = 1; i < urb->actual_length ; ++i)
+                                       tty_insert_flip_char(&port->port,
+-                                                      data[i], err);
++                                                      data[i], TTY_NORMAL);
+                       }  else {
+                       /* some bytes had errors, every byte has status */
+                               dev_dbg(&port->dev, "%s - RX error!!!!\n", __func__);
diff --git a/queue-3.10/usb-keyspan-fix-tty-line-status-reporting.patch b/queue-3.10/usb-keyspan-fix-tty-line-status-reporting.patch
new file mode 100644 (file)
index 0000000..1c2cc2f
--- /dev/null
@@ -0,0 +1,135 @@
+From 5d1678a33c731b56e245e888fdae5e88efce0997 Mon Sep 17 00:00:00 2001
+From: Johan Hovold <johan@kernel.org>
+Date: Tue, 18 Nov 2014 11:25:19 +0100
+Subject: USB: keyspan: fix tty line-status reporting
+
+From: Johan Hovold <johan@kernel.org>
+
+commit 5d1678a33c731b56e245e888fdae5e88efce0997 upstream.
+
+Fix handling of TTY error flags, which are not bitmasks and must
+specifically not be ORed together as this prevents the line discipline
+from recognising them.
+
+Also insert null characters when reporting overrun errors as these are
+not associated with the received character.
+
+Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
+Signed-off-by: Johan Hovold <johan@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/keyspan.c |   76 +++++++++++++++++++++++++++----------------
+ 1 file changed, 48 insertions(+), 28 deletions(-)
+
+--- a/drivers/usb/serial/keyspan.c
++++ b/drivers/usb/serial/keyspan.c
+@@ -319,14 +319,19 @@ static void      usa26_indat_callback(struct
+                       /* some bytes had errors, every byte has status */
+                       dev_dbg(&port->dev, "%s - RX error!!!!\n", __func__);
+                       for (i = 0; i + 1 < urb->actual_length; i += 2) {
+-                              int stat = data[i], flag = 0;
+-                              if (stat & RXERROR_OVERRUN)
+-                                      flag |= TTY_OVERRUN;
+-                              if (stat & RXERROR_FRAMING)
+-                                      flag |= TTY_FRAME;
+-                              if (stat & RXERROR_PARITY)
+-                                      flag |= TTY_PARITY;
++                              int stat = data[i];
++                              int flag = TTY_NORMAL;
++
++                              if (stat & RXERROR_OVERRUN) {
++                                      tty_insert_flip_char(&port->port, 0,
++                                                              TTY_OVERRUN);
++                              }
+                               /* XXX should handle break (0x10) */
++                              if (stat & RXERROR_PARITY)
++                                      flag = TTY_PARITY;
++                              else if (stat & RXERROR_FRAMING)
++                                      flag = TTY_FRAME;
++
+                               tty_insert_flip_char(&port->port, data[i+1],
+                                               flag);
+                       }
+@@ -673,14 +678,19 @@ static void      usa49_indat_callback(struct
+               } else {
+                       /* some bytes had errors, every byte has status */
+                       for (i = 0; i + 1 < urb->actual_length; i += 2) {
+-                              int stat = data[i], flag = 0;
+-                              if (stat & RXERROR_OVERRUN)
+-                                      flag |= TTY_OVERRUN;
+-                              if (stat & RXERROR_FRAMING)
+-                                      flag |= TTY_FRAME;
+-                              if (stat & RXERROR_PARITY)
+-                                      flag |= TTY_PARITY;
++                              int stat = data[i];
++                              int flag = TTY_NORMAL;
++
++                              if (stat & RXERROR_OVERRUN) {
++                                      tty_insert_flip_char(&port->port, 0,
++                                                              TTY_OVERRUN);
++                              }
+                               /* XXX should handle break (0x10) */
++                              if (stat & RXERROR_PARITY)
++                                      flag = TTY_PARITY;
++                              else if (stat & RXERROR_FRAMING)
++                                      flag = TTY_FRAME;
++
+                               tty_insert_flip_char(&port->port, data[i+1],
+                                               flag);
+                       }
+@@ -737,15 +747,19 @@ static void usa49wg_indat_callback(struc
+                        */
+                       for (x = 0; x + 1 < len &&
+                                   i + 1 < urb->actual_length; x += 2) {
+-                              int stat = data[i], flag = 0;
++                              int stat = data[i];
++                              int flag = TTY_NORMAL;
+-                              if (stat & RXERROR_OVERRUN)
+-                                      flag |= TTY_OVERRUN;
+-                              if (stat & RXERROR_FRAMING)
+-                                      flag |= TTY_FRAME;
+-                              if (stat & RXERROR_PARITY)
+-                                      flag |= TTY_PARITY;
++                              if (stat & RXERROR_OVERRUN) {
++                                      tty_insert_flip_char(&port->port, 0,
++                                                              TTY_OVERRUN);
++                              }
+                               /* XXX should handle break (0x10) */
++                              if (stat & RXERROR_PARITY)
++                                      flag = TTY_PARITY;
++                              else if (stat & RXERROR_FRAMING)
++                                      flag = TTY_FRAME;
++
+                               tty_insert_flip_char(&port->port, data[i+1],
+                                                    flag);
+                               i += 2;
+@@ -808,14 +822,20 @@ static void usa90_indat_callback(struct
+                       /* some bytes had errors, every byte has status */
+                               dev_dbg(&port->dev, "%s - RX error!!!!\n", __func__);
+                               for (i = 0; i + 1 < urb->actual_length; i += 2) {
+-                                      int stat = data[i], flag = 0;
+-                                      if (stat & RXERROR_OVERRUN)
+-                                              flag |= TTY_OVERRUN;
+-                                      if (stat & RXERROR_FRAMING)
+-                                              flag |= TTY_FRAME;
+-                                      if (stat & RXERROR_PARITY)
+-                                              flag |= TTY_PARITY;
++                                      int stat = data[i];
++                                      int flag = TTY_NORMAL;
++
++                                      if (stat & RXERROR_OVERRUN) {
++                                              tty_insert_flip_char(
++                                                              &port->port, 0,
++                                                              TTY_OVERRUN);
++                                      }
+                                       /* XXX should handle break (0x10) */
++                                      if (stat & RXERROR_PARITY)
++                                              flag = TTY_PARITY;
++                                      else if (stat & RXERROR_FRAMING)
++                                              flag = TTY_FRAME;
++
+                                       tty_insert_flip_char(&port->port,
+                                                       data[i+1], flag);
+                               }
diff --git a/queue-3.10/usb-quirks-add-reset-resume-quirk-for-ms-wireless-laser-mouse-6000.patch b/queue-3.10/usb-quirks-add-reset-resume-quirk-for-ms-wireless-laser-mouse-6000.patch
new file mode 100644 (file)
index 0000000..f4d4319
--- /dev/null
@@ -0,0 +1,32 @@
+From 263e80b43559a6103e178a9176938ce171b23872 Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede@redhat.com>
+Date: Mon, 24 Nov 2014 11:22:38 +0100
+Subject: usb-quirks: Add reset-resume quirk for MS Wireless Laser Mouse 6000
+
+From: Hans de Goede <hdegoede@redhat.com>
+
+commit 263e80b43559a6103e178a9176938ce171b23872 upstream.
+
+This wireless mouse receiver needs a reset-resume quirk to properly come
+out of reset.
+
+BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1165206
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/core/quirks.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/usb/core/quirks.c
++++ b/drivers/usb/core/quirks.c
+@@ -43,6 +43,9 @@ static const struct usb_device_id usb_qu
+       /* Creative SB Audigy 2 NX */
+       { USB_DEVICE(0x041e, 0x3020), .driver_info = USB_QUIRK_RESET_RESUME },
++      /* Microsoft Wireless Laser Mouse 6000 Receiver */
++      { USB_DEVICE(0x045e, 0x00e1), .driver_info = USB_QUIRK_RESET_RESUME },
++
+       /* Microsoft LifeCam-VX700 v2.0 */
+       { USB_DEVICE(0x045e, 0x0770), .driver_info = USB_QUIRK_RESET_RESUME },
diff --git a/queue-3.10/usb-serial-cp210x-add-ids-for-cel-meshconnect-usb-stick.patch b/queue-3.10/usb-serial-cp210x-add-ids-for-cel-meshconnect-usb-stick.patch
new file mode 100644 (file)
index 0000000..5e9be92
--- /dev/null
@@ -0,0 +1,27 @@
+From ffcfe30ebd8dd703d0fc4324ffe56ea21f5479f4 Mon Sep 17 00:00:00 2001
+From: Preston Fick <pffick@gmail.com>
+Date: Fri, 7 Nov 2014 23:26:11 -0600
+Subject: USB: serial: cp210x: add IDs for CEL MeshConnect USB Stick
+
+From: Preston Fick <pffick@gmail.com>
+
+commit ffcfe30ebd8dd703d0fc4324ffe56ea21f5479f4 upstream.
+
+Signed-off-by: Preston Fick <pffick@gmail.com>
+Signed-off-by: Johan Hovold <johan@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/cp210x.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/usb/serial/cp210x.c
++++ b/drivers/usb/serial/cp210x.c
+@@ -120,6 +120,7 @@ static const struct usb_device_id id_tab
+       { USB_DEVICE(0x10C4, 0x85F8) }, /* Virtenio Preon32 */
+       { USB_DEVICE(0x10C4, 0x8664) }, /* AC-Services CAN-IF */
+       { USB_DEVICE(0x10C4, 0x8665) }, /* AC-Services OBD-IF */
++      { USB_DEVICE(0x10C4, 0x8875) }, /* CEL MeshConnect USB Stick */
+       { USB_DEVICE(0x10C4, 0x88A4) }, /* MMB Networks ZigBee USB Device */
+       { USB_DEVICE(0x10C4, 0x88A5) }, /* Planet Innovation Ingeni ZigBee USB Device */
+       { USB_DEVICE(0x10C4, 0x8946) }, /* Ketra N1 Wireless Interface */
diff --git a/queue-3.10/usb-serial-ftdi_sio-add-pids-for-matrix-orbital-products.patch b/queue-3.10/usb-serial-ftdi_sio-add-pids-for-matrix-orbital-products.patch
new file mode 100644 (file)
index 0000000..5319854
--- /dev/null
@@ -0,0 +1,118 @@
+From 204ec6e07ea7aff863df0f7c53301f9cbbfbb9d3 Mon Sep 17 00:00:00 2001
+From: Troy Clark <tclark@matrixorbital.ca>
+Date: Mon, 17 Nov 2014 14:33:17 -0800
+Subject: usb: serial: ftdi_sio: add PIDs for Matrix Orbital products
+
+From: Troy Clark <tclark@matrixorbital.ca>
+
+commit 204ec6e07ea7aff863df0f7c53301f9cbbfbb9d3 upstream.
+
+Add PIDs for new Matrix Orbital GTT series products.
+
+Signed-off-by: Troy Clark <tclark@matrixorbital.ca>
+[johan: shorten commit message ]
+Signed-off-by: Johan Hovold <johan@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/ftdi_sio.c     |   33 ++++++++++++++++++++++++++++++++
+ drivers/usb/serial/ftdi_sio_ids.h |   39 ++++++++++++++++++++++++++++++++++----
+ 2 files changed, 68 insertions(+), 4 deletions(-)
+
+--- a/drivers/usb/serial/ftdi_sio.c
++++ b/drivers/usb/serial/ftdi_sio.c
+@@ -486,6 +486,39 @@ static struct usb_device_id id_table_com
+       { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_01FD_PID) },
+       { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_01FE_PID) },
+       { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_01FF_PID) },
++      { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_4701_PID) },
++      { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9300_PID) },
++      { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9301_PID) },
++      { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9302_PID) },
++      { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9303_PID) },
++      { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9304_PID) },
++      { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9305_PID) },
++      { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9306_PID) },
++      { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9307_PID) },
++      { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9308_PID) },
++      { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9309_PID) },
++      { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_930A_PID) },
++      { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_930B_PID) },
++      { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_930C_PID) },
++      { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_930D_PID) },
++      { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_930E_PID) },
++      { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_930F_PID) },
++      { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9310_PID) },
++      { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9311_PID) },
++      { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9312_PID) },
++      { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9313_PID) },
++      { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9314_PID) },
++      { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9315_PID) },
++      { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9316_PID) },
++      { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9317_PID) },
++      { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9318_PID) },
++      { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9319_PID) },
++      { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_931A_PID) },
++      { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_931B_PID) },
++      { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_931C_PID) },
++      { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_931D_PID) },
++      { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_931E_PID) },
++      { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_931F_PID) },
+       { USB_DEVICE(FTDI_VID, FTDI_PERLE_ULTRAPORT_PID) },
+       { USB_DEVICE(FTDI_VID, FTDI_PIEGROUP_PID) },
+       { USB_DEVICE(FTDI_VID, FTDI_TNC_X_PID) },
+--- a/drivers/usb/serial/ftdi_sio_ids.h
++++ b/drivers/usb/serial/ftdi_sio_ids.h
+@@ -926,8 +926,8 @@
+ #define BAYER_CONTOUR_CABLE_PID        0x6001
+ /*
+- * The following are the values for the Matrix Orbital FTDI Range
+- * Anything in this range will use an FT232RL.
++ * Matrix Orbital Intelligent USB displays.
++ * http://www.matrixorbital.com
+  */
+ #define MTXORB_VID                    0x1B3D
+ #define MTXORB_FTDI_RANGE_0100_PID    0x0100
+@@ -1186,8 +1186,39 @@
+ #define MTXORB_FTDI_RANGE_01FD_PID    0x01FD
+ #define MTXORB_FTDI_RANGE_01FE_PID    0x01FE
+ #define MTXORB_FTDI_RANGE_01FF_PID    0x01FF
+-
+-
++#define MTXORB_FTDI_RANGE_4701_PID    0x4701
++#define MTXORB_FTDI_RANGE_9300_PID    0x9300
++#define MTXORB_FTDI_RANGE_9301_PID    0x9301
++#define MTXORB_FTDI_RANGE_9302_PID    0x9302
++#define MTXORB_FTDI_RANGE_9303_PID    0x9303
++#define MTXORB_FTDI_RANGE_9304_PID    0x9304
++#define MTXORB_FTDI_RANGE_9305_PID    0x9305
++#define MTXORB_FTDI_RANGE_9306_PID    0x9306
++#define MTXORB_FTDI_RANGE_9307_PID    0x9307
++#define MTXORB_FTDI_RANGE_9308_PID    0x9308
++#define MTXORB_FTDI_RANGE_9309_PID    0x9309
++#define MTXORB_FTDI_RANGE_930A_PID    0x930A
++#define MTXORB_FTDI_RANGE_930B_PID    0x930B
++#define MTXORB_FTDI_RANGE_930C_PID    0x930C
++#define MTXORB_FTDI_RANGE_930D_PID    0x930D
++#define MTXORB_FTDI_RANGE_930E_PID    0x930E
++#define MTXORB_FTDI_RANGE_930F_PID    0x930F
++#define MTXORB_FTDI_RANGE_9310_PID    0x9310
++#define MTXORB_FTDI_RANGE_9311_PID    0x9311
++#define MTXORB_FTDI_RANGE_9312_PID    0x9312
++#define MTXORB_FTDI_RANGE_9313_PID    0x9313
++#define MTXORB_FTDI_RANGE_9314_PID    0x9314
++#define MTXORB_FTDI_RANGE_9315_PID    0x9315
++#define MTXORB_FTDI_RANGE_9316_PID    0x9316
++#define MTXORB_FTDI_RANGE_9317_PID    0x9317
++#define MTXORB_FTDI_RANGE_9318_PID    0x9318
++#define MTXORB_FTDI_RANGE_9319_PID    0x9319
++#define MTXORB_FTDI_RANGE_931A_PID    0x931A
++#define MTXORB_FTDI_RANGE_931B_PID    0x931B
++#define MTXORB_FTDI_RANGE_931C_PID    0x931C
++#define MTXORB_FTDI_RANGE_931D_PID    0x931D
++#define MTXORB_FTDI_RANGE_931E_PID    0x931E
++#define MTXORB_FTDI_RANGE_931F_PID    0x931F
+ /*
+  * The Mobility Lab (TML)
diff --git a/queue-3.10/usb-ssu100-fix-overrun-error-reporting.patch b/queue-3.10/usb-ssu100-fix-overrun-error-reporting.patch
new file mode 100644 (file)
index 0000000..945112d
--- /dev/null
@@ -0,0 +1,49 @@
+From 75bcbf29c284dd0154c3e895a0bd1ef0e796160e Mon Sep 17 00:00:00 2001
+From: Johan Hovold <johan@kernel.org>
+Date: Tue, 18 Nov 2014 11:25:21 +0100
+Subject: USB: ssu100: fix overrun-error reporting
+
+From: Johan Hovold <johan@kernel.org>
+
+commit 75bcbf29c284dd0154c3e895a0bd1ef0e796160e upstream.
+
+Fix reporting of overrun errors, which should only be reported once
+using the inserted null character.
+
+Fixes: 6b8f1ca5581b ("USB: ssu100: set tty_flags in ssu100_process_packet")
+Signed-off-by: Johan Hovold <johan@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/ssu100.c |   11 +++--------
+ 1 file changed, 3 insertions(+), 8 deletions(-)
+
+--- a/drivers/usb/serial/ssu100.c
++++ b/drivers/usb/serial/ssu100.c
+@@ -495,10 +495,9 @@ static void ssu100_update_lsr(struct usb
+                       if (*tty_flag == TTY_NORMAL)
+                               *tty_flag = TTY_FRAME;
+               }
+-              if (lsr & UART_LSR_OE){
++              if (lsr & UART_LSR_OE) {
+                       port->icount.overrun++;
+-                      if (*tty_flag == TTY_NORMAL)
+-                              *tty_flag = TTY_OVERRUN;
++                      tty_insert_flip_char(&port->port, 0, TTY_OVERRUN);
+               }
+       }
+@@ -516,12 +515,8 @@ static void ssu100_process_read_urb(stru
+       if ((len >= 4) &&
+           (packet[0] == 0x1b) && (packet[1] == 0x1b) &&
+           ((packet[2] == 0x00) || (packet[2] == 0x01))) {
+-              if (packet[2] == 0x00) {
++              if (packet[2] == 0x00)
+                       ssu100_update_lsr(port, packet[3], &flag);
+-                      if (flag == TTY_OVERRUN)
+-                              tty_insert_flip_char(&port->port, 0,
+-                                              TTY_OVERRUN);
+-              }
+               if (packet[2] == 0x01)
+                       ssu100_update_msr(port, packet[3]);
diff --git a/queue-3.10/usb-xhci-don-t-start-a-halted-endpoint-before-its-new-dequeue-is-set.patch b/queue-3.10/usb-xhci-don-t-start-a-halted-endpoint-before-its-new-dequeue-is-set.patch
new file mode 100644 (file)
index 0000000..2421ae1
--- /dev/null
@@ -0,0 +1,44 @@
+From c3492dbfa1050debf23a5b5cd2bc7514c5b37896 Mon Sep 17 00:00:00 2001
+From: Mathias Nyman <mathias.nyman@linux.intel.com>
+Date: Tue, 18 Nov 2014 11:27:11 +0200
+Subject: USB: xhci: don't start a halted endpoint before its new dequeue is set
+
+From: Mathias Nyman <mathias.nyman@linux.intel.com>
+
+commit c3492dbfa1050debf23a5b5cd2bc7514c5b37896 upstream.
+
+A halted endpoint ring must first be reset, then move the ring
+dequeue pointer past the problematic TRB. If we start the ring too
+early after reset, but before moving the dequeue pointer we
+will end up executing the same problematic TRB again.
+
+As we always issue a set transfer dequeue command after a reset
+endpoint command we can skip starting endpoint rings at reset endpoint
+command completion.
+
+Without this fix we end up trying to handle the same faulty TD for
+contol endpoints. causing timeout, and failing testusb ctrl_out write
+tests.
+
+Fixes: e9df17e (USB: xhci: Correct assumptions about number of rings per endpoint.)
+Tested-by: Felipe Balbi <balbi@ti.com>
+Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/host/xhci-ring.c |    3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+--- a/drivers/usb/host/xhci-ring.c
++++ b/drivers/usb/host/xhci-ring.c
+@@ -1178,9 +1178,8 @@ static void handle_reset_ep_completion(s
+                               false);
+               xhci_ring_cmd_db(xhci);
+       } else {
+-              /* Clear our internal halted state and restart the ring(s) */
++              /* Clear our internal halted state */
+               xhci->devs[slot_id]->eps[ep_index].ep_state &= ~EP_HALTED;
+-              ring_doorbell_for_active_rings(xhci, slot_id, ep_index);
+       }
+ }