]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.18-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 13 Aug 2017 22:18:38 +0000 (15:18 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 13 Aug 2017 22:18:38 +0000 (15:18 -0700)
added patches:
fuse-initialize-the-flock-flag-in-fuse_file-on-allocation.patch
iio-light-tsl2563-use-correct-event-code.patch
staging-iio-resolver-ad2s1210-fix-negative-iio_angl_vel-read.patch
uas-add-us_fl_ignore_residue-for-initio-corporation-inic-3069.patch
usb-check-for-dropped-connection-before-switching-to-full-speed.patch
usb-hcd-mark-secondary-hcd-as-dead-if-the-primary-one-died.patch
usb-musb-fix-tx-fifo-flush-handling-again.patch
usb-quirks-add-no-lpm-quirk-for-moshi-usb-to-ethernet-adapter.patch
usb-serial-cp210x-add-support-for-qivicon-usb-zigbee-dongle.patch
usb-serial-option-add-d-link-dwm-222-device-id.patch
usb-xhci-add-quirk-for-certain-failing-hp-keyboard-on-reset-after-resume.patch

12 files changed:
queue-3.18/fuse-initialize-the-flock-flag-in-fuse_file-on-allocation.patch [new file with mode: 0644]
queue-3.18/iio-light-tsl2563-use-correct-event-code.patch [new file with mode: 0644]
queue-3.18/series
queue-3.18/staging-iio-resolver-ad2s1210-fix-negative-iio_angl_vel-read.patch [new file with mode: 0644]
queue-3.18/uas-add-us_fl_ignore_residue-for-initio-corporation-inic-3069.patch [new file with mode: 0644]
queue-3.18/usb-check-for-dropped-connection-before-switching-to-full-speed.patch [new file with mode: 0644]
queue-3.18/usb-hcd-mark-secondary-hcd-as-dead-if-the-primary-one-died.patch [new file with mode: 0644]
queue-3.18/usb-musb-fix-tx-fifo-flush-handling-again.patch [new file with mode: 0644]
queue-3.18/usb-quirks-add-no-lpm-quirk-for-moshi-usb-to-ethernet-adapter.patch [new file with mode: 0644]
queue-3.18/usb-serial-cp210x-add-support-for-qivicon-usb-zigbee-dongle.patch [new file with mode: 0644]
queue-3.18/usb-serial-option-add-d-link-dwm-222-device-id.patch [new file with mode: 0644]
queue-3.18/usb-xhci-add-quirk-for-certain-failing-hp-keyboard-on-reset-after-resume.patch [new file with mode: 0644]

diff --git a/queue-3.18/fuse-initialize-the-flock-flag-in-fuse_file-on-allocation.patch b/queue-3.18/fuse-initialize-the-flock-flag-in-fuse_file-on-allocation.patch
new file mode 100644 (file)
index 0000000..dae2652
--- /dev/null
@@ -0,0 +1,38 @@
+From 68227c03cba84a24faf8a7277d2b1a03c8959c2c Mon Sep 17 00:00:00 2001
+From: Mateusz Jurczyk <mjurczyk@google.com>
+Date: Wed, 7 Jun 2017 12:26:49 +0200
+Subject: fuse: initialize the flock flag in fuse_file on allocation
+
+From: Mateusz Jurczyk <mjurczyk@google.com>
+
+commit 68227c03cba84a24faf8a7277d2b1a03c8959c2c upstream.
+
+Before the patch, the flock flag could remain uninitialized for the
+lifespan of the fuse_file allocation. Unless set to true in
+fuse_file_flock(), it would remain in an indeterminate state until read in
+an if statement in fuse_release_common(). This could consequently lead to
+taking an unexpected branch in the code.
+
+The bug was discovered by a runtime instrumentation designed to detect use
+of uninitialized memory in the kernel.
+
+Signed-off-by: Mateusz Jurczyk <mjurczyk@google.com>
+Fixes: 37fb3a30b462 ("fuse: fix flock")
+Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/fuse/file.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/fs/fuse/file.c
++++ b/fs/fuse/file.c
+@@ -54,7 +54,7 @@ struct fuse_file *fuse_file_alloc(struct
+ {
+       struct fuse_file *ff;
+-      ff = kmalloc(sizeof(struct fuse_file), GFP_KERNEL);
++      ff = kzalloc(sizeof(struct fuse_file), GFP_KERNEL);
+       if (unlikely(!ff))
+               return NULL;
diff --git a/queue-3.18/iio-light-tsl2563-use-correct-event-code.patch b/queue-3.18/iio-light-tsl2563-use-correct-event-code.patch
new file mode 100644 (file)
index 0000000..424e8c3
--- /dev/null
@@ -0,0 +1,39 @@
+From a3507e48d3f99a93a3056a34a5365f310434570f Mon Sep 17 00:00:00 2001
+From: Akinobu Mita <akinobu.mita@gmail.com>
+Date: Wed, 21 Jun 2017 01:46:37 +0900
+Subject: iio: light: tsl2563: use correct event code
+
+From: Akinobu Mita <akinobu.mita@gmail.com>
+
+commit a3507e48d3f99a93a3056a34a5365f310434570f upstream.
+
+The TSL2563 driver provides three iio channels, two of which are raw ADC
+channels (channel 0 and channel 1) in the device and the remaining one
+is calculated by the two.  The ADC channel 0 only supports programmable
+interrupt with threshold settings and this driver supports the event but
+the generated event code does not contain the corresponding iio channel
+type.
+
+This is going to change userspace ABI.  Hopefully fixing this to be
+what it should always have been won't break any userspace code.
+
+Cc: Jonathan Cameron <jic23@kernel.org>
+Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
+Signed-off-by: Jonathan Cameron <jic23@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/iio/light/tsl2563.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/iio/light/tsl2563.c
++++ b/drivers/iio/light/tsl2563.c
+@@ -626,7 +626,7 @@ static irqreturn_t tsl2563_event_handler
+       struct tsl2563_chip *chip = iio_priv(dev_info);
+       iio_push_event(dev_info,
+-                     IIO_UNMOD_EVENT_CODE(IIO_LIGHT,
++                     IIO_UNMOD_EVENT_CODE(IIO_INTENSITY,
+                                           0,
+                                           IIO_EV_TYPE_THRESH,
+                                           IIO_EV_DIR_EITHER),
index 381ae9cf0fe63db6133d5d10f6843cb8f1420af9..657947e314b3f827852abbba57b2f4a5bf9b711d 100644 (file)
@@ -1 +1,12 @@
 mm-ratelimit-pfns-busy-info-message.patch
+fuse-initialize-the-flock-flag-in-fuse_file-on-allocation.patch
+usb-serial-option-add-d-link-dwm-222-device-id.patch
+usb-serial-cp210x-add-support-for-qivicon-usb-zigbee-dongle.patch
+usb-musb-fix-tx-fifo-flush-handling-again.patch
+usb-hcd-mark-secondary-hcd-as-dead-if-the-primary-one-died.patch
+staging-iio-resolver-ad2s1210-fix-negative-iio_angl_vel-read.patch
+iio-light-tsl2563-use-correct-event-code.patch
+uas-add-us_fl_ignore_residue-for-initio-corporation-inic-3069.patch
+usb-check-for-dropped-connection-before-switching-to-full-speed.patch
+usb-quirks-add-no-lpm-quirk-for-moshi-usb-to-ethernet-adapter.patch
+usb-xhci-add-quirk-for-certain-failing-hp-keyboard-on-reset-after-resume.patch
diff --git a/queue-3.18/staging-iio-resolver-ad2s1210-fix-negative-iio_angl_vel-read.patch b/queue-3.18/staging-iio-resolver-ad2s1210-fix-negative-iio_angl_vel-read.patch
new file mode 100644 (file)
index 0000000..d0657f8
--- /dev/null
@@ -0,0 +1,38 @@
+From 105967ad68d2eb1a041bc041f9cf96af2a653b65 Mon Sep 17 00:00:00 2001
+From: Arnd Bergmann <arnd@arndb.de>
+Date: Fri, 14 Jul 2017 11:31:03 +0200
+Subject: staging:iio:resolver:ad2s1210 fix negative IIO_ANGL_VEL read
+
+From: Arnd Bergmann <arnd@arndb.de>
+
+commit 105967ad68d2eb1a041bc041f9cf96af2a653b65 upstream.
+
+gcc-7 points out an older regression:
+
+drivers/staging/iio/resolver/ad2s1210.c: In function 'ad2s1210_read_raw':
+drivers/staging/iio/resolver/ad2s1210.c:515:42: error: '<<' in boolean context, did you mean '<' ? [-Werror=int-in-bool-context]
+
+The original code had 'unsigned short' here, but incorrectly got
+converted to 'bool'. This reverts the regression and uses a normal
+type instead.
+
+Fixes: 29148543c521 ("staging:iio:resolver:ad2s1210 minimal chan spec conversion.")
+Signed-off-by: Arnd Bergmann <arnd@arndb.de>
+Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/staging/iio/resolver/ad2s1210.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/staging/iio/resolver/ad2s1210.c
++++ b/drivers/staging/iio/resolver/ad2s1210.c
+@@ -466,7 +466,7 @@ static int ad2s1210_read_raw(struct iio_
+                            long m)
+ {
+       struct ad2s1210_state *st = iio_priv(indio_dev);
+-      bool negative;
++      u16 negative;
+       int ret = 0;
+       u16 pos;
+       s16 vel;
diff --git a/queue-3.18/uas-add-us_fl_ignore_residue-for-initio-corporation-inic-3069.patch b/queue-3.18/uas-add-us_fl_ignore_residue-for-initio-corporation-inic-3069.patch
new file mode 100644 (file)
index 0000000..db5695e
--- /dev/null
@@ -0,0 +1,41 @@
+From 89f23d51defcb94a5026d4b5da13faf4e1150a6f Mon Sep 17 00:00:00 2001
+From: Alan Swanson <reiver@improbability.net>
+Date: Wed, 26 Jul 2017 12:03:33 +0100
+Subject: uas: Add US_FL_IGNORE_RESIDUE for Initio Corporation INIC-3069
+
+From: Alan Swanson <reiver@improbability.net>
+
+commit 89f23d51defcb94a5026d4b5da13faf4e1150a6f upstream.
+
+Similar to commit d595259fbb7a ("usb-storage: Add ignore-residue quirk for
+Initio INIC-3619") for INIC-3169 in unusual_devs.h but INIC-3069 already
+present in unusual_uas.h. Both in same controller IC family.
+
+Issue is that MakeMKV fails during key exchange with installed bluray drive
+with following error:
+
+002004:0000 Error 'Scsi error - ILLEGAL REQUEST:COPY PROTECTION KEY EXCHANGE FAILURE - KEY NOT ESTABLISHED'
+occurred while issuing SCSI command AD010..080002400 to device 'SG:dev_11:0'
+
+Signed-off-by: Alan Swanson <reiver@improbability.net>
+Acked-by: Oliver Neukum <oneukum@suse.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/storage/unusual_uas.h |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/usb/storage/unusual_uas.h
++++ b/drivers/usb/storage/unusual_uas.h
+@@ -113,9 +113,9 @@ UNUSUAL_DEV(0x0bc2, 0xab2a, 0x0000, 0x99
+ /* Reported-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> */
+ UNUSUAL_DEV(0x13fd, 0x3940, 0x0000, 0x9999,
+               "Initio Corporation",
+-              "",
++              "INIC-3069",
+               USB_SC_DEVICE, USB_PR_DEVICE, NULL,
+-              US_FL_NO_ATA_1X),
++              US_FL_NO_ATA_1X | US_FL_IGNORE_RESIDUE),
+ /* Reported-by: Tom Arild Naess <tanaess@gmail.com> */
+ UNUSUAL_DEV(0x152d, 0x0539, 0x0000, 0x9999,
diff --git a/queue-3.18/usb-check-for-dropped-connection-before-switching-to-full-speed.patch b/queue-3.18/usb-check-for-dropped-connection-before-switching-to-full-speed.patch
new file mode 100644 (file)
index 0000000..aedad0a
--- /dev/null
@@ -0,0 +1,65 @@
+From 94c43b9897abf4ea366ed4dba027494e080c7050 Mon Sep 17 00:00:00 2001
+From: Alan Stern <stern@rowland.harvard.edu>
+Date: Tue, 1 Aug 2017 10:41:56 -0400
+Subject: USB: Check for dropped connection before switching to full speed
+
+From: Alan Stern <stern@rowland.harvard.edu>
+
+commit 94c43b9897abf4ea366ed4dba027494e080c7050 upstream.
+
+Some buggy USB disk adapters disconnect and reconnect multiple times
+during the enumeration procedure.  This may lead to a device
+connecting at full speed instead of high speed, because when the USB
+stack sees that a device isn't able to enumerate at high speed, it
+tries to hand the connection over to a full-speed companion
+controller.
+
+The logic for doing this is careful to check that the device is still
+connected.  But this check is inadequate if the device disconnects and
+reconnects before the check is done.  The symptom is that a device
+works, but much more slowly than it is capable of operating.
+
+The situation was made worse recently by commit 22547c4cc4fe ("usb:
+hub: Wait for connection to be reestablished after port reset"), which
+increases the delay following a reset before a disconnect is
+recognized, thus giving the device more time to reconnect.
+
+This patch makes the check more robust.  If the device was
+disconnected at any time during enumeration, we will now skip the
+full-speed handover.
+
+Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
+Reported-and-tested-by: Zdenek Kabelac <zkabelac@redhat.com>
+Reviewed-by: Guenter Roeck <linux@roeck-us.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/core/hub.c |   10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+--- a/drivers/usb/core/hub.c
++++ b/drivers/usb/core/hub.c
+@@ -4623,7 +4623,8 @@ hub_power_remaining (struct usb_hub *hub
+ static void hub_port_connect(struct usb_hub *hub, int port1, u16 portstatus,
+               u16 portchange)
+ {
+-      int status, i;
++      int status = -ENODEV;
++      int i;
+       unsigned unit_load;
+       struct usb_device *hdev = hub->hdev;
+       struct usb_hcd *hcd = bus_to_hcd(hdev->bus);
+@@ -4823,9 +4824,10 @@ loop:
+ done:
+       hub_port_disable(hub, port1, 1);
+-      if (hcd->driver->relinquish_port && !hub->hdev->parent)
+-              hcd->driver->relinquish_port(hcd, port1);
+-
++      if (hcd->driver->relinquish_port && !hub->hdev->parent) {
++              if (status != -ENOTCONN && status != -ENODEV)
++                      hcd->driver->relinquish_port(hcd, port1);
++      }
+ }
+ /* Handle physical or logical connection change events.
diff --git a/queue-3.18/usb-hcd-mark-secondary-hcd-as-dead-if-the-primary-one-died.patch b/queue-3.18/usb-hcd-mark-secondary-hcd-as-dead-if-the-primary-one-died.patch
new file mode 100644 (file)
index 0000000..2a5291e
--- /dev/null
@@ -0,0 +1,40 @@
+From cd5a6a4fdaba150089af2afc220eae0fef74878a Mon Sep 17 00:00:00 2001
+From: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
+Date: Tue, 25 Jul 2017 23:58:50 +0200
+Subject: USB: hcd: Mark secondary HCD as dead if the primary one died
+
+From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+
+commit cd5a6a4fdaba150089af2afc220eae0fef74878a upstream.
+
+Make usb_hc_died() clear the HCD_FLAG_RH_RUNNING flag for the shared
+HCD and set HCD_FLAG_DEAD for it, in analogy with what is done for
+the primary one.
+
+Among other thigs, this prevents check_root_hub_suspended() from
+returning -EBUSY for dead HCDs which helps to work around system
+suspend issues in some situations.
+
+This actually fixes occasional suspend failures on one of my test
+machines.
+
+Suggested-by: Alan Stern <stern@rowland.harvard.edu>
+Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+Acked-by: Alan Stern <stern@rowland.harvard.edu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/core/hcd.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/usb/core/hcd.c
++++ b/drivers/usb/core/hcd.c
+@@ -2398,6 +2398,8 @@ void usb_hc_died (struct usb_hcd *hcd)
+       }
+       if (usb_hcd_is_primary_hcd(hcd) && hcd->shared_hcd) {
+               hcd = hcd->shared_hcd;
++              clear_bit(HCD_FLAG_RH_RUNNING, &hcd->flags);
++              set_bit(HCD_FLAG_DEAD, &hcd->flags);
+               if (hcd->rh_registered) {
+                       clear_bit(HCD_FLAG_POLL_RH, &hcd->flags);
diff --git a/queue-3.18/usb-musb-fix-tx-fifo-flush-handling-again.patch b/queue-3.18/usb-musb-fix-tx-fifo-flush-handling-again.patch
new file mode 100644 (file)
index 0000000..dc526d7
--- /dev/null
@@ -0,0 +1,36 @@
+From 45d73860530a14c608f410b91c6c341777bfa85d Mon Sep 17 00:00:00 2001
+From: Bin Liu <b-liu@ti.com>
+Date: Tue, 25 Jul 2017 09:31:34 -0500
+Subject: usb: musb: fix tx fifo flush handling again
+
+From: Bin Liu <b-liu@ti.com>
+
+commit 45d73860530a14c608f410b91c6c341777bfa85d upstream.
+
+commit 68fe05e2a451 ("usb: musb: fix tx fifo flush handling") drops the
+1ms delay trying to solve the long disconnect time issue when
+application queued many tx urbs. However, the 1ms delay is needed for
+some use cases, for example, without the delay, reconnecting AR9271 WIFI
+dongle no longer works if the connection is dropped from the AP.
+
+So let's add back the 1ms delay in musb_h_tx_flush_fifo(), and solve the
+long disconnect time problem with a separate patch for
+usb_hcd_flush_endpoint().
+
+Signed-off-by: Bin Liu <b-liu@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/musb/musb_host.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/usb/musb/musb_host.c
++++ b/drivers/usb/musb/musb_host.c
+@@ -1294,6 +1294,7 @@ void musb_host_tx(struct musb *musb, u8
+                                       | MUSB_TXCSR_TXPKTRDY);
+               }
+                       return;
++              mdelay(1);
+       }
+ done:
diff --git a/queue-3.18/usb-quirks-add-no-lpm-quirk-for-moshi-usb-to-ethernet-adapter.patch b/queue-3.18/usb-quirks-add-no-lpm-quirk-for-moshi-usb-to-ethernet-adapter.patch
new file mode 100644 (file)
index 0000000..a89a3a3
--- /dev/null
@@ -0,0 +1,37 @@
+From 7496cfe5431f21da5d27a8388c326397e3f0a5db Mon Sep 17 00:00:00 2001
+From: Kai-Heng Feng <kai.heng.feng@canonical.com>
+Date: Tue, 8 Aug 2017 17:51:27 +0800
+Subject: usb: quirks: Add no-lpm quirk for Moshi USB to Ethernet Adapter
+
+From: Kai-Heng Feng <kai.heng.feng@canonical.com>
+
+commit 7496cfe5431f21da5d27a8388c326397e3f0a5db upstream.
+
+Moshi USB to Ethernet Adapter internally uses a Genesys Logic hub to
+connect to Realtek r8153.
+
+The Realtek r8153 ethernet does not work on the internal hub, no-lpm quirk
+can make it work.
+
+Since another r8153 dongle at my hand does not have the issue, so add
+the quirk to the Genesys Logic hub instead.
+
+Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.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
+@@ -143,6 +143,9 @@ static const struct usb_device_id usb_qu
+       /* appletouch */
+       { USB_DEVICE(0x05ac, 0x021a), .driver_info = USB_QUIRK_RESET_RESUME },
++      /* Genesys Logic hub, internally used by Moshi USB to Ethernet Adapter */
++      { USB_DEVICE(0x05e3, 0x0616), .driver_info = USB_QUIRK_NO_LPM },
++
+       /* Avision AV600U */
+       { USB_DEVICE(0x0638, 0x0a13), .driver_info =
+         USB_QUIRK_STRING_FETCH_255 },
diff --git a/queue-3.18/usb-serial-cp210x-add-support-for-qivicon-usb-zigbee-dongle.patch b/queue-3.18/usb-serial-cp210x-add-support-for-qivicon-usb-zigbee-dongle.patch
new file mode 100644 (file)
index 0000000..e0b7abe
--- /dev/null
@@ -0,0 +1,32 @@
+From 9585e340db9f6cc1c0928d82c3a23cc4460f0a3f Mon Sep 17 00:00:00 2001
+From: Stefan Triller <github@stefantriller.de>
+Date: Fri, 30 Jun 2017 14:44:03 +0200
+Subject: USB: serial: cp210x: add support for Qivicon USB ZigBee dongle
+
+From: Stefan Triller <github@stefantriller.de>
+
+commit 9585e340db9f6cc1c0928d82c3a23cc4460f0a3f upstream.
+
+The German Telekom offers a ZigBee USB Stick under the brand name Qivicon
+for their SmartHome Home Base in its 1. Generation. The productId is not
+known by the according kernel module, this patch adds support for it.
+
+Signed-off-by: Stefan Triller <github@stefantriller.de>
+Reviewed-by: Frans Klaver <fransklaver@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
+@@ -133,6 +133,7 @@ static const struct usb_device_id id_tab
+       { USB_DEVICE(0x10C4, 0x8998) }, /* KCF Technologies PRN */
+       { USB_DEVICE(0x10C4, 0x8A2A) }, /* HubZ dual ZigBee and Z-Wave dongle */
+       { USB_DEVICE(0x10C4, 0x8A5E) }, /* CEL EM3588 ZigBee USB Stick Long Range */
++      { USB_DEVICE(0x10C4, 0x8B34) }, /* Qivicon ZigBee USB Radio Stick */
+       { USB_DEVICE(0x10C4, 0xEA60) }, /* Silicon Labs factory default */
+       { USB_DEVICE(0x10C4, 0xEA61) }, /* Silicon Labs factory default */
+       { USB_DEVICE(0x10C4, 0xEA70) }, /* Silicon Labs factory default */
diff --git a/queue-3.18/usb-serial-option-add-d-link-dwm-222-device-id.patch b/queue-3.18/usb-serial-option-add-d-link-dwm-222-device-id.patch
new file mode 100644 (file)
index 0000000..af343a8
--- /dev/null
@@ -0,0 +1,30 @@
+From fd1b8668af59a11bb754a6c9b0051c6c5ce73b74 Mon Sep 17 00:00:00 2001
+From: Hector Martin <marcan@marcan.st>
+Date: Wed, 2 Aug 2017 00:45:06 +0900
+Subject: USB: serial: option: add D-Link DWM-222 device ID
+
+From: Hector Martin <marcan@marcan.st>
+
+commit fd1b8668af59a11bb754a6c9b0051c6c5ce73b74 upstream.
+
+Add device id for D-Link DWM-222.
+
+Signed-off-by: Hector Martin <marcan@marcan.st>
+Signed-off-by: Johan Hovold <johan@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/option.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -2020,6 +2020,8 @@ static const struct usb_device_id option
+       { USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7d04, 0xff) },                   /* D-Link DWM-158 */
+       { USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7e19, 0xff),                     /* D-Link DWM-221 B1 */
+         .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
++      { USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7e35, 0xff),                     /* D-Link DWM-222 */
++        .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
+       { USB_DEVICE_AND_INTERFACE_INFO(0x07d1, 0x3e01, 0xff, 0xff, 0xff) }, /* D-Link DWM-152/C1 */
+       { USB_DEVICE_AND_INTERFACE_INFO(0x07d1, 0x3e02, 0xff, 0xff, 0xff) }, /* D-Link DWM-156/C1 */
+       { USB_DEVICE_AND_INTERFACE_INFO(0x07d1, 0x7e11, 0xff, 0xff, 0xff) }, /* D-Link DWM-156/A3 */
diff --git a/queue-3.18/usb-xhci-add-quirk-for-certain-failing-hp-keyboard-on-reset-after-resume.patch b/queue-3.18/usb-xhci-add-quirk-for-certain-failing-hp-keyboard-on-reset-after-resume.patch
new file mode 100644 (file)
index 0000000..67efadd
--- /dev/null
@@ -0,0 +1,86 @@
+From e788787ef4f9c24aafefc480a8da5f92b914e5e6 Mon Sep 17 00:00:00 2001
+From: Sandeep Singh <sandeep.singh@amd.com>
+Date: Fri, 4 Aug 2017 16:35:56 +0530
+Subject: usb:xhci:Add quirk for Certain failing HP keyboard on reset after resume
+
+From: Sandeep Singh <sandeep.singh@amd.com>
+
+commit e788787ef4f9c24aafefc480a8da5f92b914e5e6 upstream.
+
+Certain HP keyboards would keep inputting a character automatically which
+is the wake-up key after S3 resume
+
+On some AMD platforms USB host fails to respond (by holding resume-K) to
+USB device (an HP keyboard) resume request within 1ms (TURSM) and ensures
+that resume is signaled for at least 20 ms (TDRSMDN), which is defined in
+USB 2.0 spec. The result is that the keyboard is out of function.
+
+In SNPS USB design, the host responds to the resume request only after
+system gets back to S0 and the host gets to functional after the internal
+HW restore operation that is more than 1 second after the initial resume
+request from the USB device.
+
+As a workaround for specific keyboard ID(HP Keyboards), applying port reset
+after resume when the keyboard is plugged in.
+
+Signed-off-by: Sandeep Singh <Sandeep.Singh@amd.com>
+Signed-off-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
+cc: Nehal Shah <Nehal-bakulchandra.Shah@amd.com>
+Reviewed-by: Felipe Balbi <felipe.balbi@linux.intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/core/quirks.c     |    1 +
+ drivers/usb/host/pci-quirks.c |   17 ++++++++++++-----
+ 2 files changed, 13 insertions(+), 5 deletions(-)
+
+--- a/drivers/usb/core/quirks.c
++++ b/drivers/usb/core/quirks.c
+@@ -245,6 +245,7 @@ static const struct usb_device_id usb_am
+       { USB_DEVICE(0x093a, 0x2500), .driver_info = USB_QUIRK_RESET_RESUME },
+       { USB_DEVICE(0x093a, 0x2510), .driver_info = USB_QUIRK_RESET_RESUME },
+       { USB_DEVICE(0x093a, 0x2521), .driver_info = USB_QUIRK_RESET_RESUME },
++      { USB_DEVICE(0x03f0, 0x2b4a), .driver_info = USB_QUIRK_RESET_RESUME },
+       /* Logitech Optical Mouse M90/M100 */
+       { USB_DEVICE(0x046d, 0xc05a), .driver_info = USB_QUIRK_RESET_RESUME },
+--- a/drivers/usb/host/pci-quirks.c
++++ b/drivers/usb/host/pci-quirks.c
+@@ -89,6 +89,7 @@ enum amd_chipset_gen {
+       AMD_CHIPSET_HUDSON2,
+       AMD_CHIPSET_BOLTON,
+       AMD_CHIPSET_YANGTZE,
++      AMD_CHIPSET_TAISHAN,
+       AMD_CHIPSET_UNKNOWN,
+ };
+@@ -132,6 +133,11 @@ static int amd_chipset_sb_type_init(stru
+                       pinfo->sb_type.gen = AMD_CHIPSET_SB700;
+               else if (rev >= 0x40 && rev <= 0x4f)
+                       pinfo->sb_type.gen = AMD_CHIPSET_SB800;
++      }
++      pinfo->smbus_dev = pci_get_device(PCI_VENDOR_ID_AMD,
++                                        0x145c, NULL);
++      if (pinfo->smbus_dev) {
++              pinfo->sb_type.gen = AMD_CHIPSET_TAISHAN;
+       } else {
+               pinfo->smbus_dev = pci_get_device(PCI_VENDOR_ID_AMD,
+                               PCI_DEVICE_ID_AMD_HUDSON2_SMBUS, NULL);
+@@ -253,11 +259,12 @@ int usb_hcd_amd_remote_wakeup_quirk(stru
+ {
+       /* Make sure amd chipset type has already been initialized */
+       usb_amd_find_chipset_info();
+-      if (amd_chipset.sb_type.gen != AMD_CHIPSET_YANGTZE)
+-              return 0;
+-
+-      dev_dbg(&pdev->dev, "QUIRK: Enable AMD remote wakeup fix\n");
+-      return 1;
++      if (amd_chipset.sb_type.gen == AMD_CHIPSET_YANGTZE ||
++          amd_chipset.sb_type.gen == AMD_CHIPSET_TAISHAN) {
++              dev_dbg(&pdev->dev, "QUIRK: Enable AMD remote wakeup fix\n");
++              return 1;
++      }
++      return 0;
+ }
+ EXPORT_SYMBOL_GPL(usb_hcd_amd_remote_wakeup_quirk);