From: Greg Kroah-Hartman Date: Sun, 12 Oct 2014 04:08:12 +0000 (-0700) Subject: 3.17-stable patches X-Git-Tag: v3.17.1~15 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1fd406087764ed91334f59c1a6dbb40af3b03047;p=thirdparty%2Fkernel%2Fstable-queue.git 3.17-stable patches 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 --- 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 index 00000000000..cbd822130c1 --- /dev/null +++ b/queue-3.17/crypto-caam-fix-addressing-of-struct-member.patch @@ -0,0 +1,36 @@ +From 4451d494b1910bf7b7f8381a637d0fe6d2142467 Mon Sep 17 00:00:00 2001 +From: Cristian Stoica +Date: Thu, 14 Aug 2014 13:51:57 +0300 +Subject: crypto: caam - fix addressing of struct member + +From: Cristian Stoica + +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 +Signed-off-by: Herbert Xu +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..0734482ef49 --- /dev/null +++ b/queue-3.17/pci-pciehp-fix-wait-time-in-timeout-message.patch @@ -0,0 +1,52 @@ +From d433889cd5a0933fbd90f1e65bff5a8d7963cc52 Mon Sep 17 00:00:00 2001 +From: Yinghai Lu +Date: Mon, 22 Sep 2014 20:07:35 -0600 +Subject: PCI: pciehp: Fix wait time in timeout message + +From: Yinghai Lu + +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 +Signed-off-by: Bjorn Helgaas +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..01127636063 --- /dev/null +++ b/queue-3.17/revert-usb-gadget-composite-dequeue-cdev-req-before-free-it-in-composite_dev_cleanup.patch @@ -0,0 +1,34 @@ +From bf17eba7ae1e813b0ad67cb1078dcbd7083b906e Mon Sep 17 00:00:00 2001 +From: Felipe Balbi +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 + +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 +Signed-off-by: Felipe Balbi +Signed-off-by: Greg Kroah-Hartman + +--- + 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; diff --git a/queue-3.17/series b/queue-3.17/series index 391219db110..0b37020a2ca 100644 --- a/queue-3.17/series +++ b/queue-3.17/series @@ -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 index 00000000000..1b82e719406 --- /dev/null +++ b/queue-3.17/uas-add-a-quirk-for-rejecting-ata_12-and-ata_16-commands.patch @@ -0,0 +1,145 @@ +From 593078525c8b234a35a36ff551b8716464e86481 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +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 + +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 +Signed-off-by: Greg Kroah-Hartman + +--- + 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 + + #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 + */ + +-/* +- * 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 index 00000000000..32b036c70e3 --- /dev/null +++ b/queue-3.17/uas-add-another-asm1051-usb-id-to-the-uas-blacklist.patch @@ -0,0 +1,32 @@ +From 710f1bf16ab1b1558f099b62c5011c4cbba6a7bb Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 23 Sep 2014 15:48:50 +0200 +Subject: uas: Add another ASM1051 usb-id to the uas blacklist + +From: Hans de Goede + +commit 710f1bf16ab1b1558f099b62c5011c4cbba6a7bb upstream. + +As most ASM1051 based devices, this one has unfixable issues with uas too. + +Signed-off-by: Hans de Goede +Signed-off-by: Greg Kroah-Hartman + +--- + 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 */ ++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 index 00000000000..17a57865322 --- /dev/null +++ b/queue-3.17/uas-add-no-report-opcodes-quirk.patch @@ -0,0 +1,99 @@ +From 734016b00b50a3c6a0e1fc1b7b217e783f5123a1 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 16 Sep 2014 18:36:52 +0200 +Subject: uas: Add no-report-opcodes quirk + +From: Hans de Goede + +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 +Signed-off-by: Hans de Goede +Signed-off-by: Greg Kroah-Hartman + +--- + 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 */ ++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 index 00000000000..6d7f2c38285 --- /dev/null +++ b/queue-3.17/uas-add-us_fl_no_ata_1x-quirk-for-seagate-0bc2-ab20-drives.patch @@ -0,0 +1,34 @@ +From f9554a6b199360c2f888173fd600e1eb7ff165ef Mon Sep 17 00:00:00 2001 +From: Hans de Goede +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 + +commit f9554a6b199360c2f888173fd600e1eb7ff165ef upstream. + +https://bbs.archlinux.org/viewtopic.php?pid=1457492 + +Signed-off-by: Hans de Goede +Signed-off-by: Greg Kroah-Hartman + +--- + 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 */ + 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 index 00000000000..28854dab954 --- /dev/null +++ b/queue-3.17/usb-add-device-quirk-for-asus-t100-base-station-keyboard.patch @@ -0,0 +1,68 @@ +From ddbe1fca0bcb87ca8c199ea873a456ca8a948567 Mon Sep 17 00:00:00 2001 +From: Lu Baolu +Date: Fri, 19 Sep 2014 10:13:50 +0800 +Subject: USB: Add device quirk for ASUS T100 Base Station keyboard + +From: Lu Baolu + +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 +Acked-by: Alan Stern +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..a3359503800 --- /dev/null +++ b/queue-3.17/usb-cp210x-add-support-for-seluxit-usb-dongle.patch @@ -0,0 +1,29 @@ +From dee80ad12d2b1b304286a707fde7ab05d1fc7bab Mon Sep 17 00:00:00 2001 +From: Andreas Bomholtz +Date: Mon, 22 Sep 2014 09:50:43 +0200 +Subject: USB: cp210x: add support for Seluxit USB dongle + +From: Andreas Bomholtz + +commit dee80ad12d2b1b304286a707fde7ab05d1fc7bab upstream. + +Added the Seluxit ApS USB Serial Dongle to cp210x driver. + +Signed-off-by: Andreas Bomholtz +Signed-off-by: Johan Hovold +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..25c294422f5 --- /dev/null +++ b/queue-3.17/usb-gadget-f_fs-signedness-bug-in-__ffs_func_bind_do_descs.patch @@ -0,0 +1,33 @@ +From 85b06f5e53d17c15844ef3cd45d0c7107f0ae45c Mon Sep 17 00:00:00 2001 +From: Dan Carpenter +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 + +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 +Signed-off-by: Dan Carpenter +Signed-off-by: Felipe Balbi +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..d630f5562fe --- /dev/null +++ b/queue-3.17/usb-musb-dsps-kill-otg-timer-on-suspend.patch @@ -0,0 +1,44 @@ +From 468bcc2a2ca071f652009d2d20d97f2437630cae Mon Sep 17 00:00:00 2001 +From: Felipe Balbi +Date: Mon, 15 Sep 2014 09:03:24 -0500 +Subject: usb: musb: dsps: kill OTG timer on suspend + +From: Felipe Balbi + +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 +Signed-off-by: Felipe Balbi +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..b4bf2cecb9c --- /dev/null +++ b/queue-3.17/usb-serial-cp210x-added-ketra-n1-wireless-interface-support.patch @@ -0,0 +1,30 @@ +From bfc2d7dfdd761ae3beccdb26abebe03cef042f46 Mon Sep 17 00:00:00 2001 +From: Joe Savage +Date: Sat, 20 Sep 2014 08:01:16 -0500 +Subject: USB: serial: cp210x: added Ketra N1 wireless interface support + +From: Joe Savage + +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 +Signed-off-by: Johan Hovold +Signed-off-by: Greg Kroah-Hartman + +--- + 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 */