Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1711762

[PATCH 3.18 12/16] usb:xhci:Add quirk for Certain failing HP keyboard on reset after resume

From Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Newsgroups linux.kernel
Subject [PATCH 3.18 12/16] usb:xhci:Add quirk for Certain failing HP keyboard on reset after resume
Date 2017-08-15 04:10 +0200
Message-ID <uezsR-3CJ-1@gated-at.bofh.it> (permalink)
References <ueyGu-35K-19@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


3.18-stable review patch.  If anyone has any objections, please let me know.

------------------

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);
 

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH 3.18 00/16] 3.18.66-stable review Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-08-15 03:20 +0200
  [PATCH 3.18 01/16] mm: ratelimit PFNs busy info message Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-08-15 03:20 +0200
  [PATCH 3.18 11/16] usb: quirks: Add no-lpm quirk for Moshi USB to Ethernet Adapter Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-08-15 04:00 +0200
  [PATCH 3.18 06/16] USB: hcd: Mark secondary HCD as dead if the primary one died Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-08-15 04:00 +0200
  [PATCH 3.18 08/16] iio: light: tsl2563: use correct event code Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-08-15 04:00 +0200
  [PATCH 3.18 05/16] usb: musb: fix tx fifo flush handling again Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-08-15 04:00 +0200
  [PATCH 3.18 14/16] pnfs/blocklayout: require 64-bit sector_t Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-08-15 04:00 +0200
  [PATCH 3.18 03/16] USB: serial: option: add D-Link DWM-222 device ID Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-08-15 04:00 +0200
  [PATCH 3.18 07/16] staging:iio:resolver:ad2s1210 fix negative IIO_ANGL_VEL read Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-08-15 04:00 +0200
  [PATCH 3.18 15/16] pinctrl: sunxi: add a missing function of A10/A20 pinctrl driver Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-08-15 04:00 +0200
  [PATCH 3.18 10/16] USB: Check for dropped connection before switching to full speed Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-08-15 04:00 +0200
  [PATCH 3.18 04/16] USB: serial: cp210x: add support for Qivicon USB ZigBee dongle Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-08-15 04:00 +0200
  [PATCH 3.18 16/16] pinctrl: samsung: Remove bogus irq_[un]mask from resource management Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-08-15 04:00 +0200
  [PATCH 3.18 12/16] usb:xhci:Add quirk for Certain failing HP keyboard on reset after resume Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-08-15 04:10 +0200
  [PATCH 3.18 02/16] fuse: initialize the flock flag in fuse_file on allocation Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-08-15 04:10 +0200
  [PATCH 3.18 13/16] iio: adc: vf610_adc: Fix VALT selection value for REFSEL bits Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-08-15 04:10 +0200
  Re: [PATCH 3.18 00/16] 3.18.66-stable review Guenter Roeck <linux@roeck-us.net> - 2017-08-15 12:50 +0200
  Re: [PATCH 3.18 00/16] 3.18.66-stable review Shuah Khan <shuahkh@osg.samsung.com> - 2017-08-15 20:10 +0200

csiph-web