]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.17-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 12 Oct 2014 04:08:12 +0000 (21:08 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 12 Oct 2014 04:08:12 +0000 (21:08 -0700)
added patches:
crypto-caam-fix-addressing-of-struct-member.patch
pci-pciehp-fix-wait-time-in-timeout-message.patch
revert-usb-gadget-composite-dequeue-cdev-req-before-free-it-in-composite_dev_cleanup.patch
uas-add-a-quirk-for-rejecting-ata_12-and-ata_16-commands.patch
uas-add-another-asm1051-usb-id-to-the-uas-blacklist.patch
uas-add-no-report-opcodes-quirk.patch
uas-add-us_fl_no_ata_1x-quirk-for-seagate-0bc2-ab20-drives.patch
usb-add-device-quirk-for-asus-t100-base-station-keyboard.patch
usb-cp210x-add-support-for-seluxit-usb-dongle.patch
usb-gadget-f_fs-signedness-bug-in-__ffs_func_bind_do_descs.patch
usb-musb-dsps-kill-otg-timer-on-suspend.patch
usb-serial-cp210x-added-ketra-n1-wireless-interface-support.patch

13 files changed:
queue-3.17/crypto-caam-fix-addressing-of-struct-member.patch [new file with mode: 0644]
queue-3.17/pci-pciehp-fix-wait-time-in-timeout-message.patch [new file with mode: 0644]
queue-3.17/revert-usb-gadget-composite-dequeue-cdev-req-before-free-it-in-composite_dev_cleanup.patch [new file with mode: 0644]
queue-3.17/series
queue-3.17/uas-add-a-quirk-for-rejecting-ata_12-and-ata_16-commands.patch [new file with mode: 0644]
queue-3.17/uas-add-another-asm1051-usb-id-to-the-uas-blacklist.patch [new file with mode: 0644]
queue-3.17/uas-add-no-report-opcodes-quirk.patch [new file with mode: 0644]
queue-3.17/uas-add-us_fl_no_ata_1x-quirk-for-seagate-0bc2-ab20-drives.patch [new file with mode: 0644]
queue-3.17/usb-add-device-quirk-for-asus-t100-base-station-keyboard.patch [new file with mode: 0644]
queue-3.17/usb-cp210x-add-support-for-seluxit-usb-dongle.patch [new file with mode: 0644]
queue-3.17/usb-gadget-f_fs-signedness-bug-in-__ffs_func_bind_do_descs.patch [new file with mode: 0644]
queue-3.17/usb-musb-dsps-kill-otg-timer-on-suspend.patch [new file with mode: 0644]
queue-3.17/usb-serial-cp210x-added-ketra-n1-wireless-interface-support.patch [new file with mode: 0644]

diff --git a/queue-3.17/crypto-caam-fix-addressing-of-struct-member.patch b/queue-3.17/crypto-caam-fix-addressing-of-struct-member.patch
new file mode 100644 (file)
index 0000000..cbd8221
--- /dev/null
@@ -0,0 +1,36 @@
+From 4451d494b1910bf7b7f8381a637d0fe6d2142467 Mon Sep 17 00:00:00 2001
+From: Cristian Stoica <cristian.stoica@freescale.com>
+Date: Thu, 14 Aug 2014 13:51:57 +0300
+Subject: crypto: caam - fix addressing of struct member
+
+From: Cristian Stoica <cristian.stoica@freescale.com>
+
+commit 4451d494b1910bf7b7f8381a637d0fe6d2142467 upstream.
+
+buf_0 and buf_1 in caam_hash_state are not next to each other.
+Accessing buf_1 is incorrect from &buf_0 with an offset of only
+size_of(buf_0). The same issue is also with buflen_0 and buflen_1
+
+Signed-off-by: Cristian Stoica <cristian.stoica@freescale.com>
+Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/crypto/caam/caamhash.c |    6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+--- a/drivers/crypto/caam/caamhash.c
++++ b/drivers/crypto/caam/caamhash.c
+@@ -1413,9 +1413,9 @@ static int ahash_update_first(struct aha
+       struct device *jrdev = ctx->jrdev;
+       gfp_t flags = (req->base.flags & (CRYPTO_TFM_REQ_MAY_BACKLOG |
+                      CRYPTO_TFM_REQ_MAY_SLEEP)) ? GFP_KERNEL : GFP_ATOMIC;
+-      u8 *next_buf = state->buf_0 + state->current_buf *
+-                     CAAM_MAX_HASH_BLOCK_SIZE;
+-      int *next_buflen = &state->buflen_0 + state->current_buf;
++      u8 *next_buf = state->current_buf ? state->buf_1 : state->buf_0;
++      int *next_buflen = state->current_buf ?
++              &state->buflen_1 : &state->buflen_0;
+       int to_hash;
+       u32 *sh_desc = ctx->sh_desc_update_first, *desc;
+       dma_addr_t ptr = ctx->sh_desc_update_first_dma;
diff --git a/queue-3.17/pci-pciehp-fix-wait-time-in-timeout-message.patch b/queue-3.17/pci-pciehp-fix-wait-time-in-timeout-message.patch
new file mode 100644 (file)
index 0000000..0734482
--- /dev/null
@@ -0,0 +1,52 @@
+From d433889cd5a0933fbd90f1e65bff5a8d7963cc52 Mon Sep 17 00:00:00 2001
+From: Yinghai Lu <yinghai@kernel.org>
+Date: Mon, 22 Sep 2014 20:07:35 -0600
+Subject: PCI: pciehp: Fix wait time in timeout message
+
+From: Yinghai Lu <yinghai@kernel.org>
+
+commit d433889cd5a0933fbd90f1e65bff5a8d7963cc52 upstream.
+
+When we warned about a timeout on a hotplug command, we previously printed
+the time between calls to pcie_write_cmd(), without accounting for any time
+spent actually waiting.  Consider this sequence:
+
+  pcie_write_cmd
+    write SLTCTL
+    cmd_started = jiffies          # T1
+
+  pcie_write_cmd
+    pcie_wait_cmd
+      now = jiffies                # T2
+      wait_event_timeout           # we may wait here
+      if (timeout)
+        ctrl_info("Timeout on command issued %u msec ago",
+                  jiffies_to_msecs(now - cmd_started))
+
+We previously printed (T2 - T1), but that doesn't include the time spent in
+wait_event_timeout().
+
+Fix this by using the current jiffies value, not the one cached before
+calling wait_event_timeout().
+
+[bhelgaas: changelog, use current jiffies instead of adding timeout]
+Fixes: 40b960831cfa ("PCI: pciehp: Compute timeout from hotplug command start time")
+Signed-off-by: Yinghai Lu <yinghai@kernel.org>
+Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/pci/hotplug/pciehp_hpc.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/pci/hotplug/pciehp_hpc.c
++++ b/drivers/pci/hotplug/pciehp_hpc.c
+@@ -173,7 +173,7 @@ static void pcie_wait_cmd(struct control
+       if (!rc)
+               ctrl_info(ctrl, "Timeout on hotplug command %#010x (issued %u msec ago)\n",
+                         ctrl->slot_ctrl,
+-                        jiffies_to_msecs(now - ctrl->cmd_started));
++                        jiffies_to_msecs(jiffies - ctrl->cmd_started));
+ }
+ /**
diff --git a/queue-3.17/revert-usb-gadget-composite-dequeue-cdev-req-before-free-it-in-composite_dev_cleanup.patch b/queue-3.17/revert-usb-gadget-composite-dequeue-cdev-req-before-free-it-in-composite_dev_cleanup.patch
new file mode 100644 (file)
index 0000000..0112763
--- /dev/null
@@ -0,0 +1,34 @@
+From bf17eba7ae1e813b0ad67cb1078dcbd7083b906e Mon Sep 17 00:00:00 2001
+From: Felipe Balbi <balbi@ti.com>
+Date: Thu, 18 Sep 2014 09:31:32 -0500
+Subject: Revert "usb: gadget: composite: dequeue cdev->req before free it in composite_dev_cleanup"
+
+From: Felipe Balbi <balbi@ti.com>
+
+commit bf17eba7ae1e813b0ad67cb1078dcbd7083b906e upstream.
+
+This reverts commit f2267089ea17fa97b796b1b4247e3f8957655df3.
+
+That commit causes more problem than fixes. Firstly, kfree()
+should be called after usb_ep_dequeue() and secondly, the way
+things are, we will try to dequeue a request that has already
+completed much more frequently than one which is pending.
+
+Cc: Li Jun <b47624@freescale.com>
+Signed-off-by: Felipe Balbi <balbi@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/gadget/composite.c |    1 -
+ 1 file changed, 1 deletion(-)
+
+--- a/drivers/usb/gadget/composite.c
++++ b/drivers/usb/gadget/composite.c
+@@ -1956,7 +1956,6 @@ void composite_dev_cleanup(struct usb_co
+       }
+       if (cdev->req) {
+               kfree(cdev->req->buf);
+-              usb_ep_dequeue(cdev->gadget->ep0, cdev->req);
+               usb_ep_free_request(cdev->gadget->ep0, cdev->req);
+       }
+       cdev->next_string_id = 0;
index 391219db110e4b4fb464ecbc3e53bc29da19fdfd..0b37020a2cae1dd580ccef98d5cf3af7804959e2 100644 (file)
@@ -2,3 +2,15 @@ irq_work-introduce-arch_irq_work_has_interrupt.patch
 irq_work-force-raised-irq-work-to-run-on-irq-work-interrupt.patch
 x86-tell-irq-work-about-self-ipi-support.patch
 arm-tell-irq-work-about-self-ipi-support.patch
+pci-pciehp-fix-wait-time-in-timeout-message.patch
+uas-add-a-quirk-for-rejecting-ata_12-and-ata_16-commands.patch
+uas-add-no-report-opcodes-quirk.patch
+uas-add-us_fl_no_ata_1x-quirk-for-seagate-0bc2-ab20-drives.patch
+uas-add-another-asm1051-usb-id-to-the-uas-blacklist.patch
+usb-gadget-f_fs-signedness-bug-in-__ffs_func_bind_do_descs.patch
+revert-usb-gadget-composite-dequeue-cdev-req-before-free-it-in-composite_dev_cleanup.patch
+usb-serial-cp210x-added-ketra-n1-wireless-interface-support.patch
+usb-cp210x-add-support-for-seluxit-usb-dongle.patch
+usb-musb-dsps-kill-otg-timer-on-suspend.patch
+usb-add-device-quirk-for-asus-t100-base-station-keyboard.patch
+crypto-caam-fix-addressing-of-struct-member.patch
diff --git a/queue-3.17/uas-add-a-quirk-for-rejecting-ata_12-and-ata_16-commands.patch b/queue-3.17/uas-add-a-quirk-for-rejecting-ata_12-and-ata_16-commands.patch
new file mode 100644 (file)
index 0000000..1b82e71
--- /dev/null
@@ -0,0 +1,145 @@
+From 593078525c8b234a35a36ff551b8716464e86481 Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede@redhat.com>
+Date: Mon, 15 Sep 2014 16:04:12 +0200
+Subject: uas: Add a quirk for rejecting ATA_12 and ATA_16 commands
+
+From: Hans de Goede <hdegoede@redhat.com>
+
+commit 593078525c8b234a35a36ff551b8716464e86481 upstream.
+
+And set this quirk for the Seagate Expansion Desk (0bc2:2312), as that one
+seems to hang upon receiving an ATA_12 or ATA_16 command.
+
+https://bugzilla.kernel.org/show_bug.cgi?id=79511
+https://bbs.archlinux.org/viewtopic.php?id=183190
+
+While at it also add missing documentation for the u value for usb-storage
+quirks.
+
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ Documentation/kernel-parameters.txt |    2 ++
+ drivers/usb/storage/uas.c           |   13 +++++++++++++
+ drivers/usb/storage/unusual_uas.h   |   23 +++++++++++++----------
+ drivers/usb/storage/usb.c           |    6 +++++-
+ include/linux/usb_usual.h           |    2 ++
+ 5 files changed, 35 insertions(+), 11 deletions(-)
+
+--- a/Documentation/kernel-parameters.txt
++++ b/Documentation/kernel-parameters.txt
+@@ -3541,6 +3541,8 @@ bytes respectively. Such letter suffixes
+                                       bogus residue values);
+                               s = SINGLE_LUN (the device has only one
+                                       Logical Unit);
++                              t = NO_ATA_1X (don't allow ATA(12) and ATA(16)
++                                      commands, uas only);
+                               u = IGNORE_UAS (don't bind to the uas driver);
+                               w = NO_WP_DETECT (don't test whether the
+                                       medium is write-protected).
+--- a/drivers/usb/storage/uas.c
++++ b/drivers/usb/storage/uas.c
+@@ -28,6 +28,7 @@
+ #include <scsi/scsi_tcq.h>
+ #include "uas-detect.h"
++#include "scsiglue.h"
+ /*
+  * The r00-r01c specs define this version of the SENSE IU data structure.
+@@ -49,6 +50,7 @@ struct uas_dev_info {
+       struct usb_anchor cmd_urbs;
+       struct usb_anchor sense_urbs;
+       struct usb_anchor data_urbs;
++      unsigned long flags;
+       int qdepth, resetting;
+       struct response_iu response;
+       unsigned cmd_pipe, status_pipe, data_in_pipe, data_out_pipe;
+@@ -714,6 +716,15 @@ static int uas_queuecommand_lck(struct s
+       BUILD_BUG_ON(sizeof(struct uas_cmd_info) > sizeof(struct scsi_pointer));
++      if ((devinfo->flags & US_FL_NO_ATA_1X) &&
++                      (cmnd->cmnd[0] == ATA_12 || cmnd->cmnd[0] == ATA_16)) {
++              memcpy(cmnd->sense_buffer, usb_stor_sense_invalidCDB,
++                     sizeof(usb_stor_sense_invalidCDB));
++              cmnd->result = SAM_STAT_CHECK_CONDITION;
++              cmnd->scsi_done(cmnd);
++              return 0;
++      }
++
+       spin_lock_irqsave(&devinfo->lock, flags);
+       if (devinfo->resetting) {
+@@ -1087,6 +1098,8 @@ static int uas_probe(struct usb_interfac
+       devinfo->resetting = 0;
+       devinfo->running_task = 0;
+       devinfo->shutdown = 0;
++      devinfo->flags = id->driver_info;
++      usb_stor_adjust_quirks(udev, &devinfo->flags);
+       init_usb_anchor(&devinfo->cmd_urbs);
+       init_usb_anchor(&devinfo->sense_urbs);
+       init_usb_anchor(&devinfo->data_urbs);
+--- a/drivers/usb/storage/unusual_uas.h
++++ b/drivers/usb/storage/unusual_uas.h
+@@ -40,13 +40,16 @@
+  * and don't forget to CC: the USB development list <linux-usb@vger.kernel.org>
+  */
+-/*
+- * This is an example entry for the US_FL_IGNORE_UAS flag. Once we have an
+- * actual entry using US_FL_IGNORE_UAS this entry should be removed.
+- *
+- * UNUSUAL_DEV(  0xabcd, 0x1234, 0x0100, 0x0100,
+- *            "Example",
+- *            "Storage with broken UAS",
+- *            USB_SC_DEVICE, USB_PR_DEVICE, NULL,
+- *            US_FL_IGNORE_UAS),
+- */
++/* https://bugzilla.kernel.org/show_bug.cgi?id=79511 */
++UNUSUAL_DEV(0x0bc2, 0x2312, 0x0000, 0x9999,
++              "Seagate",
++              "Expansion Desk",
++              USB_SC_DEVICE, USB_PR_DEVICE, NULL,
++              US_FL_NO_ATA_1X),
++
++/* https://bbs.archlinux.org/viewtopic.php?id=183190 */
++UNUSUAL_DEV(0x0bc2, 0x3312, 0x0000, 0x9999,
++              "Seagate",
++              "Expansion Desk",
++              USB_SC_DEVICE, USB_PR_DEVICE, NULL,
++              US_FL_NO_ATA_1X),
+--- a/drivers/usb/storage/usb.c
++++ b/drivers/usb/storage/usb.c
+@@ -478,7 +478,8 @@ void usb_stor_adjust_quirks(struct usb_d
+                       US_FL_CAPACITY_OK | US_FL_IGNORE_RESIDUE |
+                       US_FL_SINGLE_LUN | US_FL_NO_WP_DETECT |
+                       US_FL_NO_READ_DISC_INFO | US_FL_NO_READ_CAPACITY_16 |
+-                      US_FL_INITIAL_READ10 | US_FL_WRITE_CACHE);
++                      US_FL_INITIAL_READ10 | US_FL_WRITE_CACHE |
++                      US_FL_NO_ATA_1X);
+       p = quirks;
+       while (*p) {
+@@ -543,6 +544,9 @@ void usb_stor_adjust_quirks(struct usb_d
+               case 's':
+                       f |= US_FL_SINGLE_LUN;
+                       break;
++              case 't':
++                      f |= US_FL_NO_ATA_1X;
++                      break;
+               case 'u':
+                       f |= US_FL_IGNORE_UAS;
+                       break;
+--- a/include/linux/usb_usual.h
++++ b/include/linux/usb_usual.h
+@@ -73,6 +73,8 @@
+               /* Device advertises UAS but it is broken */    \
+       US_FLAG(BROKEN_FUA,     0x01000000)                     \
+               /* Cannot handle FUA in WRITE or READ CDBs */   \
++      US_FLAG(NO_ATA_1X,      0x02000000)                     \
++              /* Cannot handle ATA_12 or ATA_16 CDBs */       \
+ #define US_FLAG(name, value)  US_FL_##name = value ,
+ enum { US_DO_ALL_FLAGS };
diff --git a/queue-3.17/uas-add-another-asm1051-usb-id-to-the-uas-blacklist.patch b/queue-3.17/uas-add-another-asm1051-usb-id-to-the-uas-blacklist.patch
new file mode 100644 (file)
index 0000000..32b036c
--- /dev/null
@@ -0,0 +1,32 @@
+From 710f1bf16ab1b1558f099b62c5011c4cbba6a7bb Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede@redhat.com>
+Date: Tue, 23 Sep 2014 15:48:50 +0200
+Subject: uas: Add another ASM1051 usb-id to the uas blacklist
+
+From: Hans de Goede <hdegoede@redhat.com>
+
+commit 710f1bf16ab1b1558f099b62c5011c4cbba6a7bb upstream.
+
+As most ASM1051 based devices, this one has unfixable issues with uas too.
+
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/storage/unusual_uas.h |    8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+--- a/drivers/usb/storage/unusual_uas.h
++++ b/drivers/usb/storage/unusual_uas.h
+@@ -67,3 +67,11 @@ UNUSUAL_DEV(0x152d, 0x0567, 0x0000, 0x99
+               "JMS567",
+               USB_SC_DEVICE, USB_PR_DEVICE, NULL,
+               US_FL_NO_REPORT_OPCODES),
++
++/* Most ASM1051 based devices have issues with uas, blacklist them all */
++/* Reported-by: Hans de Goede <hdegoede@redhat.com> */
++UNUSUAL_DEV(0x174c, 0x5106, 0x0000, 0x9999,
++              "ASMedia",
++              "ASM1051",
++              USB_SC_DEVICE, USB_PR_DEVICE, NULL,
++              US_FL_IGNORE_UAS),
diff --git a/queue-3.17/uas-add-no-report-opcodes-quirk.patch b/queue-3.17/uas-add-no-report-opcodes-quirk.patch
new file mode 100644 (file)
index 0000000..17a5786
--- /dev/null
@@ -0,0 +1,99 @@
+From 734016b00b50a3c6a0e1fc1b7b217e783f5123a1 Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede@redhat.com>
+Date: Tue, 16 Sep 2014 18:36:52 +0200
+Subject: uas: Add no-report-opcodes quirk
+
+From: Hans de Goede <hdegoede@redhat.com>
+
+commit 734016b00b50a3c6a0e1fc1b7b217e783f5123a1 upstream.
+
+Besides the ASM1051 (*) needing sdev->no_report_opcodes = 1, it turns out that
+the JMicron JMS567 also needs it to work properly with uas (usb-storage always
+sets it). Since some of the scsi devs were not to keen on the idea to
+outrightly set sdev->no_report_opcodes = 1 for all uas devices, so add a quirk
+for this, and set it for the JMS567.
+
+*) Which has become a non-issue since we've completely blacklisted uas on
+the ASM1051 for other reasons
+
+Reported-and-tested-by: Claudio Bizzarri <claudio.bizzarri@gmail.com>
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ Documentation/kernel-parameters.txt |    2 ++
+ drivers/usb/storage/uas.c           |    4 ++++
+ drivers/usb/storage/unusual_uas.h   |    7 +++++++
+ drivers/usb/storage/usb.c           |    5 ++++-
+ include/linux/usb_usual.h           |    2 ++
+ 5 files changed, 19 insertions(+), 1 deletion(-)
+
+--- a/Documentation/kernel-parameters.txt
++++ b/Documentation/kernel-parameters.txt
+@@ -3522,6 +3522,8 @@ bytes respectively. Such letter suffixes
+                                       READ_DISC_INFO command);
+                               e = NO_READ_CAPACITY_16 (don't use
+                                       READ_CAPACITY_16 command);
++                              f = NO_REPORT_OPCODES (don't use report opcodes
++                                      command, uas only);
+                               h = CAPACITY_HEURISTICS (decrease the
+                                       reported device capacity by one
+                                       sector if the number is odd);
+--- a/drivers/usb/storage/uas.c
++++ b/drivers/usb/storage/uas.c
+@@ -961,6 +961,10 @@ static int uas_slave_alloc(struct scsi_d
+ static int uas_slave_configure(struct scsi_device *sdev)
+ {
+       struct uas_dev_info *devinfo = sdev->hostdata;
++
++      if (devinfo->flags & US_FL_NO_REPORT_OPCODES)
++              sdev->no_report_opcodes = 1;
++
+       scsi_set_tag_type(sdev, MSG_ORDERED_TAG);
+       scsi_activate_tcq(sdev, devinfo->qdepth - 2);
+       return 0;
+--- a/drivers/usb/storage/unusual_uas.h
++++ b/drivers/usb/storage/unusual_uas.h
+@@ -53,3 +53,10 @@ UNUSUAL_DEV(0x0bc2, 0x3312, 0x0000, 0x99
+               "Expansion Desk",
+               USB_SC_DEVICE, USB_PR_DEVICE, NULL,
+               US_FL_NO_ATA_1X),
++
++/* Reported-by: Claudio Bizzarri <claudio.bizzarri@gmail.com> */
++UNUSUAL_DEV(0x152d, 0x0567, 0x0000, 0x9999,
++              "JMicron",
++              "JMS567",
++              USB_SC_DEVICE, USB_PR_DEVICE, NULL,
++              US_FL_NO_REPORT_OPCODES),
+--- a/drivers/usb/storage/usb.c
++++ b/drivers/usb/storage/usb.c
+@@ -479,7 +479,7 @@ void usb_stor_adjust_quirks(struct usb_d
+                       US_FL_SINGLE_LUN | US_FL_NO_WP_DETECT |
+                       US_FL_NO_READ_DISC_INFO | US_FL_NO_READ_CAPACITY_16 |
+                       US_FL_INITIAL_READ10 | US_FL_WRITE_CACHE |
+-                      US_FL_NO_ATA_1X);
++                      US_FL_NO_ATA_1X | US_FL_NO_REPORT_OPCODES);
+       p = quirks;
+       while (*p) {
+@@ -517,6 +517,9 @@ void usb_stor_adjust_quirks(struct usb_d
+               case 'e':
+                       f |= US_FL_NO_READ_CAPACITY_16;
+                       break;
++              case 'f':
++                      f |= US_FL_NO_REPORT_OPCODES;
++                      break;
+               case 'h':
+                       f |= US_FL_CAPACITY_HEURISTICS;
+                       break;
+--- a/include/linux/usb_usual.h
++++ b/include/linux/usb_usual.h
+@@ -75,6 +75,8 @@
+               /* Cannot handle FUA in WRITE or READ CDBs */   \
+       US_FLAG(NO_ATA_1X,      0x02000000)                     \
+               /* Cannot handle ATA_12 or ATA_16 CDBs */       \
++      US_FLAG(NO_REPORT_OPCODES,      0x04000000)             \
++              /* Cannot handle MI_REPORT_SUPPORTED_OPERATION_CODES */ \
+ #define US_FLAG(name, value)  US_FL_##name = value ,
+ enum { US_DO_ALL_FLAGS };
diff --git a/queue-3.17/uas-add-us_fl_no_ata_1x-quirk-for-seagate-0bc2-ab20-drives.patch b/queue-3.17/uas-add-us_fl_no_ata_1x-quirk-for-seagate-0bc2-ab20-drives.patch
new file mode 100644 (file)
index 0000000..6d7f2c3
--- /dev/null
@@ -0,0 +1,34 @@
+From f9554a6b199360c2f888173fd600e1eb7ff165ef Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede@redhat.com>
+Date: Wed, 17 Sep 2014 10:10:58 +0200
+Subject: uas: Add US_FL_NO_ATA_1X quirk for Seagate (0bc2:ab20) drives
+
+From: Hans de Goede <hdegoede@redhat.com>
+
+commit f9554a6b199360c2f888173fd600e1eb7ff165ef upstream.
+
+https://bbs.archlinux.org/viewtopic.php?pid=1457492
+
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/storage/unusual_uas.h |    7 +++++++
+ 1 file changed, 7 insertions(+)
+
+--- a/drivers/usb/storage/unusual_uas.h
++++ b/drivers/usb/storage/unusual_uas.h
+@@ -54,6 +54,13 @@ UNUSUAL_DEV(0x0bc2, 0x3312, 0x0000, 0x99
+               USB_SC_DEVICE, USB_PR_DEVICE, NULL,
+               US_FL_NO_ATA_1X),
++/* https://bbs.archlinux.org/viewtopic.php?id=183190 */
++UNUSUAL_DEV(0x0bc2, 0xab20, 0x0000, 0x9999,
++              "Seagate",
++              "Backup+ BK",
++              USB_SC_DEVICE, USB_PR_DEVICE, NULL,
++              US_FL_NO_ATA_1X),
++
+ /* Reported-by: Claudio Bizzarri <claudio.bizzarri@gmail.com> */
+ UNUSUAL_DEV(0x152d, 0x0567, 0x0000, 0x9999,
+               "JMicron",
diff --git a/queue-3.17/usb-add-device-quirk-for-asus-t100-base-station-keyboard.patch b/queue-3.17/usb-add-device-quirk-for-asus-t100-base-station-keyboard.patch
new file mode 100644 (file)
index 0000000..28854da
--- /dev/null
@@ -0,0 +1,68 @@
+From ddbe1fca0bcb87ca8c199ea873a456ca8a948567 Mon Sep 17 00:00:00 2001
+From: Lu Baolu <baolu.lu@linux.intel.com>
+Date: Fri, 19 Sep 2014 10:13:50 +0800
+Subject: USB: Add device quirk for ASUS T100 Base Station keyboard
+
+From: Lu Baolu <baolu.lu@linux.intel.com>
+
+commit ddbe1fca0bcb87ca8c199ea873a456ca8a948567 upstream.
+
+This full-speed USB device generates spurious remote wakeup event
+as soon as USB_DEVICE_REMOTE_WAKEUP feature is set. As the result,
+Linux can't enter system suspend and S0ix power saving modes once
+this keyboard is used.
+
+This patch tries to introduce USB_QUIRK_IGNORE_REMOTE_WAKEUP quirk.
+With this quirk set, wakeup capability will be ignored during
+device configure.
+
+This patch could be back-ported to kernels as old as 2.6.39.
+
+Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
+Acked-by: Alan Stern <stern@rowland.harvard.edu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/core/hub.c     |    6 ++++--
+ drivers/usb/core/quirks.c  |    4 ++++
+ include/linux/usb/quirks.h |    3 +++
+ 3 files changed, 11 insertions(+), 2 deletions(-)
+
+--- a/drivers/usb/core/hub.c
++++ b/drivers/usb/core/hub.c
+@@ -1983,8 +1983,10 @@ void usb_set_device_state(struct usb_dev
+                                       || new_state == USB_STATE_SUSPENDED)
+                               ;       /* No change to wakeup settings */
+                       else if (new_state == USB_STATE_CONFIGURED)
+-                              wakeup = udev->actconfig->desc.bmAttributes
+-                                       & USB_CONFIG_ATT_WAKEUP;
++                              wakeup = (udev->quirks &
++                                      USB_QUIRK_IGNORE_REMOTE_WAKEUP) ? 0 :
++                                      udev->actconfig->desc.bmAttributes &
++                                      USB_CONFIG_ATT_WAKEUP;
+                       else
+                               wakeup = 0;
+               }
+--- a/drivers/usb/core/quirks.c
++++ b/drivers/usb/core/quirks.c
+@@ -159,6 +159,10 @@ static const struct usb_device_id usb_qu
+       /* USB3503 */
+       { USB_DEVICE(0x0424, 0x3503), .driver_info = USB_QUIRK_RESET_RESUME },
++      /* ASUS Base Station(T100) */
++      { USB_DEVICE(0x0b05, 0x17e0), .driver_info =
++                      USB_QUIRK_IGNORE_REMOTE_WAKEUP },
++
+       { }  /* terminating entry must be last */
+ };
+--- a/include/linux/usb/quirks.h
++++ b/include/linux/usb/quirks.h
+@@ -41,4 +41,7 @@
+  */
+ #define USB_QUIRK_LINEAR_UFRAME_INTR_BINTERVAL        0x00000080
++/* device generates spurious wakeup, ignore remote wakeup capability */
++#define USB_QUIRK_IGNORE_REMOTE_WAKEUP        0x00000200
++
+ #endif /* __LINUX_USB_QUIRKS_H */
diff --git a/queue-3.17/usb-cp210x-add-support-for-seluxit-usb-dongle.patch b/queue-3.17/usb-cp210x-add-support-for-seluxit-usb-dongle.patch
new file mode 100644 (file)
index 0000000..a335950
--- /dev/null
@@ -0,0 +1,29 @@
+From dee80ad12d2b1b304286a707fde7ab05d1fc7bab Mon Sep 17 00:00:00 2001
+From: Andreas Bomholtz <andreas@seluxit.com>
+Date: Mon, 22 Sep 2014 09:50:43 +0200
+Subject: USB: cp210x: add support for Seluxit USB dongle
+
+From: Andreas Bomholtz <andreas@seluxit.com>
+
+commit dee80ad12d2b1b304286a707fde7ab05d1fc7bab upstream.
+
+Added the Seluxit ApS USB Serial Dongle to cp210x driver.
+
+Signed-off-by: Andreas Bomholtz <andreas@seluxit.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
+@@ -156,6 +156,7 @@ static const struct usb_device_id id_tab
+       { USB_DEVICE(0x1ADB, 0x0001) }, /* Schweitzer Engineering C662 Cable */
+       { USB_DEVICE(0x1B1C, 0x1C00) }, /* Corsair USB Dongle */
+       { USB_DEVICE(0x1BE3, 0x07A6) }, /* WAGO 750-923 USB Service Cable */
++      { USB_DEVICE(0x1D6F, 0x0010) }, /* Seluxit ApS RF Dongle */
+       { USB_DEVICE(0x1E29, 0x0102) }, /* Festo CPX-USB */
+       { USB_DEVICE(0x1E29, 0x0501) }, /* Festo CMSP */
+       { USB_DEVICE(0x1FB9, 0x0100) }, /* Lake Shore Model 121 Current Source */
diff --git a/queue-3.17/usb-gadget-f_fs-signedness-bug-in-__ffs_func_bind_do_descs.patch b/queue-3.17/usb-gadget-f_fs-signedness-bug-in-__ffs_func_bind_do_descs.patch
new file mode 100644 (file)
index 0000000..25c2944
--- /dev/null
@@ -0,0 +1,33 @@
+From 85b06f5e53d17c15844ef3cd45d0c7107f0ae45c Mon Sep 17 00:00:00 2001
+From: Dan Carpenter <dan.carpenter@oracle.com>
+Date: Tue, 9 Sep 2014 15:06:09 +0300
+Subject: usb: gadget: f_fs: signedness bug in __ffs_func_bind_do_descs()
+
+From: Dan Carpenter <dan.carpenter@oracle.com>
+
+commit 85b06f5e53d17c15844ef3cd45d0c7107f0ae45c upstream.
+
+We need "idx" to be signed for the error handling to work.
+
+Fixes: 6d5c1c77bbf9 ('usb: gadget: f_fs: fix the redundant ep files problem')
+Acked-by: Michal Nazarewicz <mina86@mina86.com>
+Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
+Signed-off-by: Felipe Balbi <balbi@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/gadget/function/f_fs.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/usb/gadget/function/f_fs.c
++++ b/drivers/usb/gadget/function/f_fs.c
+@@ -2393,7 +2393,8 @@ static int __ffs_func_bind_do_descs(enum
+       struct usb_endpoint_descriptor *ds = (void *)desc;
+       struct ffs_function *func = priv;
+       struct ffs_ep *ffs_ep;
+-      unsigned ep_desc_id, idx;
++      unsigned ep_desc_id;
++      int idx;
+       static const char *speed_names[] = { "full", "high", "super" };
+       if (type != FFS_DESCRIPTOR)
diff --git a/queue-3.17/usb-musb-dsps-kill-otg-timer-on-suspend.patch b/queue-3.17/usb-musb-dsps-kill-otg-timer-on-suspend.patch
new file mode 100644 (file)
index 0000000..d630f55
--- /dev/null
@@ -0,0 +1,44 @@
+From 468bcc2a2ca071f652009d2d20d97f2437630cae Mon Sep 17 00:00:00 2001
+From: Felipe Balbi <balbi@ti.com>
+Date: Mon, 15 Sep 2014 09:03:24 -0500
+Subject: usb: musb: dsps: kill OTG timer on suspend
+
+From: Felipe Balbi <balbi@ti.com>
+
+commit 468bcc2a2ca071f652009d2d20d97f2437630cae upstream.
+
+if we don't make sure to kill the timer, it could
+expire after we have already gated our clocks.
+
+That will trigger a Data Abort exception because
+we would try to access register while clock is gated.
+
+Fix that bug.
+
+Fixes 869c597 (usb: musb: dsps: add support for suspend and resume)
+Tested-by: Dave Gerlach <d-gerlach@ti.com>
+Signed-off-by: Felipe Balbi <balbi@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/musb/musb_dsps.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/usb/musb/musb_dsps.c
++++ b/drivers/usb/musb/musb_dsps.c
+@@ -870,6 +870,7 @@ static int dsps_suspend(struct device *d
+       struct musb *musb = platform_get_drvdata(glue->musb);
+       void __iomem *mbase = musb->ctrl_base;
++      del_timer_sync(&glue->timer);
+       glue->context.control = dsps_readl(mbase, wrp->control);
+       glue->context.epintr = dsps_readl(mbase, wrp->epintr_set);
+       glue->context.coreintr = dsps_readl(mbase, wrp->coreintr_set);
+@@ -895,6 +896,7 @@ static int dsps_resume(struct device *de
+       dsps_writel(mbase, wrp->mode, glue->context.mode);
+       dsps_writel(mbase, wrp->tx_mode, glue->context.tx_mode);
+       dsps_writel(mbase, wrp->rx_mode, glue->context.rx_mode);
++      setup_timer(&glue->timer, otg_timer, (unsigned long) musb);
+       return 0;
+ }
diff --git a/queue-3.17/usb-serial-cp210x-added-ketra-n1-wireless-interface-support.patch b/queue-3.17/usb-serial-cp210x-added-ketra-n1-wireless-interface-support.patch
new file mode 100644 (file)
index 0000000..b4bf2ce
--- /dev/null
@@ -0,0 +1,30 @@
+From bfc2d7dfdd761ae3beccdb26abebe03cef042f46 Mon Sep 17 00:00:00 2001
+From: Joe Savage <joe.savage@goketra.com>
+Date: Sat, 20 Sep 2014 08:01:16 -0500
+Subject: USB: serial: cp210x: added Ketra N1 wireless interface support
+
+From: Joe Savage <joe.savage@goketra.com>
+
+commit bfc2d7dfdd761ae3beccdb26abebe03cef042f46 upstream.
+
+Added support for Ketra N1 wireless interface, which uses the
+Silicon Labs' CP2104 USB to UART bridge with customized PID 8946.
+
+Signed-off-by: Joe Savage <joe.savage@goketra.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
+@@ -122,6 +122,7 @@ static const struct usb_device_id id_tab
+       { USB_DEVICE(0x10C4, 0x8665) }, /* AC-Services OBD-IF */
+       { 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 */
+       { USB_DEVICE(0x10C4, 0xEA60) }, /* Silicon Labs factory default */
+       { USB_DEVICE(0x10C4, 0xEA61) }, /* Silicon Labs factory default */
+       { USB_DEVICE(0x10C4, 0xEA70) }, /* Silicon Labs factory default */