From 69d23df15933b6d26a6299138e5a363c057dcd26 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Sun, 13 Aug 2017 15:18:38 -0700 Subject: [PATCH] 3.18-stable patches 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 --- ...lock-flag-in-fuse_file-on-allocation.patch | 38 ++++++++ ...light-tsl2563-use-correct-event-code.patch | 39 +++++++++ queue-3.18/series | 11 +++ ...s1210-fix-negative-iio_angl_vel-read.patch | 38 ++++++++ ...due-for-initio-corporation-inic-3069.patch | 41 +++++++++ ...ction-before-switching-to-full-speed.patch | 65 ++++++++++++++ ...-hcd-as-dead-if-the-primary-one-died.patch | 40 +++++++++ ...usb-fix-tx-fifo-flush-handling-again.patch | 36 ++++++++ ...rk-for-moshi-usb-to-ethernet-adapter.patch | 37 ++++++++ ...upport-for-qivicon-usb-zigbee-dongle.patch | 32 +++++++ ...-option-add-d-link-dwm-222-device-id.patch | 30 +++++++ ...ng-hp-keyboard-on-reset-after-resume.patch | 86 +++++++++++++++++++ 12 files changed, 493 insertions(+) create mode 100644 queue-3.18/fuse-initialize-the-flock-flag-in-fuse_file-on-allocation.patch create mode 100644 queue-3.18/iio-light-tsl2563-use-correct-event-code.patch create mode 100644 queue-3.18/staging-iio-resolver-ad2s1210-fix-negative-iio_angl_vel-read.patch create mode 100644 queue-3.18/uas-add-us_fl_ignore_residue-for-initio-corporation-inic-3069.patch create mode 100644 queue-3.18/usb-check-for-dropped-connection-before-switching-to-full-speed.patch create mode 100644 queue-3.18/usb-hcd-mark-secondary-hcd-as-dead-if-the-primary-one-died.patch create mode 100644 queue-3.18/usb-musb-fix-tx-fifo-flush-handling-again.patch create mode 100644 queue-3.18/usb-quirks-add-no-lpm-quirk-for-moshi-usb-to-ethernet-adapter.patch create mode 100644 queue-3.18/usb-serial-cp210x-add-support-for-qivicon-usb-zigbee-dongle.patch create mode 100644 queue-3.18/usb-serial-option-add-d-link-dwm-222-device-id.patch create mode 100644 queue-3.18/usb-xhci-add-quirk-for-certain-failing-hp-keyboard-on-reset-after-resume.patch 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 index 00000000000..dae2652e7b0 --- /dev/null +++ b/queue-3.18/fuse-initialize-the-flock-flag-in-fuse_file-on-allocation.patch @@ -0,0 +1,38 @@ +From 68227c03cba84a24faf8a7277d2b1a03c8959c2c Mon Sep 17 00:00:00 2001 +From: Mateusz Jurczyk +Date: Wed, 7 Jun 2017 12:26:49 +0200 +Subject: fuse: initialize the flock flag in fuse_file on allocation + +From: Mateusz Jurczyk + +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 +Fixes: 37fb3a30b462 ("fuse: fix flock") +Signed-off-by: Miklos Szeredi +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..424e8c38b0f --- /dev/null +++ b/queue-3.18/iio-light-tsl2563-use-correct-event-code.patch @@ -0,0 +1,39 @@ +From a3507e48d3f99a93a3056a34a5365f310434570f Mon Sep 17 00:00:00 2001 +From: Akinobu Mita +Date: Wed, 21 Jun 2017 01:46:37 +0900 +Subject: iio: light: tsl2563: use correct event code + +From: Akinobu Mita + +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 +Signed-off-by: Akinobu Mita +Signed-off-by: Jonathan Cameron +Signed-off-by: Greg Kroah-Hartman + +--- + 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), diff --git a/queue-3.18/series b/queue-3.18/series index 381ae9cf0fe..657947e314b 100644 --- a/queue-3.18/series +++ b/queue-3.18/series @@ -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 index 00000000000..d0657f8974b --- /dev/null +++ b/queue-3.18/staging-iio-resolver-ad2s1210-fix-negative-iio_angl_vel-read.patch @@ -0,0 +1,38 @@ +From 105967ad68d2eb1a041bc041f9cf96af2a653b65 Mon Sep 17 00:00:00 2001 +From: Arnd Bergmann +Date: Fri, 14 Jul 2017 11:31:03 +0200 +Subject: staging:iio:resolver:ad2s1210 fix negative IIO_ANGL_VEL read + +From: Arnd Bergmann + +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 +Signed-off-by: Jonathan Cameron +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..db5695e5681 --- /dev/null +++ b/queue-3.18/uas-add-us_fl_ignore_residue-for-initio-corporation-inic-3069.patch @@ -0,0 +1,41 @@ +From 89f23d51defcb94a5026d4b5da13faf4e1150a6f Mon Sep 17 00:00:00 2001 +From: Alan Swanson +Date: Wed, 26 Jul 2017 12:03:33 +0100 +Subject: uas: Add US_FL_IGNORE_RESIDUE for Initio Corporation INIC-3069 + +From: Alan Swanson + +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 +Acked-by: Oliver Neukum +Signed-off-by: Greg Kroah-Hartman + +--- + 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 */ + 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 */ + 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 index 00000000000..aedad0af519 --- /dev/null +++ b/queue-3.18/usb-check-for-dropped-connection-before-switching-to-full-speed.patch @@ -0,0 +1,65 @@ +From 94c43b9897abf4ea366ed4dba027494e080c7050 Mon Sep 17 00:00:00 2001 +From: Alan Stern +Date: Tue, 1 Aug 2017 10:41:56 -0400 +Subject: USB: Check for dropped connection before switching to full speed + +From: Alan Stern + +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 +Reported-and-tested-by: Zdenek Kabelac +Reviewed-by: Guenter Roeck +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..2a5291e73e8 --- /dev/null +++ b/queue-3.18/usb-hcd-mark-secondary-hcd-as-dead-if-the-primary-one-died.patch @@ -0,0 +1,40 @@ +From cd5a6a4fdaba150089af2afc220eae0fef74878a Mon Sep 17 00:00:00 2001 +From: "Rafael J. Wysocki" +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 + +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 +Signed-off-by: Rafael J. Wysocki +Acked-by: Alan Stern +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..dc526d7379f --- /dev/null +++ b/queue-3.18/usb-musb-fix-tx-fifo-flush-handling-again.patch @@ -0,0 +1,36 @@ +From 45d73860530a14c608f410b91c6c341777bfa85d Mon Sep 17 00:00:00 2001 +From: Bin Liu +Date: Tue, 25 Jul 2017 09:31:34 -0500 +Subject: usb: musb: fix tx fifo flush handling again + +From: Bin Liu + +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 +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..a89a3a31bf8 --- /dev/null +++ b/queue-3.18/usb-quirks-add-no-lpm-quirk-for-moshi-usb-to-ethernet-adapter.patch @@ -0,0 +1,37 @@ +From 7496cfe5431f21da5d27a8388c326397e3f0a5db Mon Sep 17 00:00:00 2001 +From: Kai-Heng Feng +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 + +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 +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..e0b7abe868e --- /dev/null +++ b/queue-3.18/usb-serial-cp210x-add-support-for-qivicon-usb-zigbee-dongle.patch @@ -0,0 +1,32 @@ +From 9585e340db9f6cc1c0928d82c3a23cc4460f0a3f Mon Sep 17 00:00:00 2001 +From: Stefan Triller +Date: Fri, 30 Jun 2017 14:44:03 +0200 +Subject: USB: serial: cp210x: add support for Qivicon USB ZigBee dongle + +From: Stefan Triller + +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 +Reviewed-by: Frans Klaver +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 +@@ -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 index 00000000000..af343a81b60 --- /dev/null +++ b/queue-3.18/usb-serial-option-add-d-link-dwm-222-device-id.patch @@ -0,0 +1,30 @@ +From fd1b8668af59a11bb754a6c9b0051c6c5ce73b74 Mon Sep 17 00:00:00 2001 +From: Hector Martin +Date: Wed, 2 Aug 2017 00:45:06 +0900 +Subject: USB: serial: option: add D-Link DWM-222 device ID + +From: Hector Martin + +commit fd1b8668af59a11bb754a6c9b0051c6c5ce73b74 upstream. + +Add device id for D-Link DWM-222. + +Signed-off-by: Hector Martin +Signed-off-by: Johan Hovold +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..67efadd2b67 --- /dev/null +++ b/queue-3.18/usb-xhci-add-quirk-for-certain-failing-hp-keyboard-on-reset-after-resume.patch @@ -0,0 +1,86 @@ +From e788787ef4f9c24aafefc480a8da5f92b914e5e6 Mon Sep 17 00:00:00 2001 +From: Sandeep Singh +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 + +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 +Signed-off-by: Shyam Sundar S K +cc: Nehal Shah +Reviewed-by: Felipe Balbi +Signed-off-by: Greg Kroah-Hartman + +--- + 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); + -- 2.47.3