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


Groups > linux.kernel > #1711636 > unrolled thread

[PATCH 4.12 47/65] usb:xhci:Add quirk for Certain failing HP keyboard on reset after resume

Started byGreg Kroah-Hartman <gregkh@linuxfoundation.org>
First post2017-08-15 03:30 +0200
Last post2017-08-19 01:00 +0200
Articles 3 — 2 participants

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  [PATCH 4.12 47/65] usb:xhci:Add quirk for Certain failing HP keyboard on reset after resume Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-08-15 03:30 +0200
    Re: [PATCH 4.12 47/65] usb:xhci:Add quirk for Certain failing HP  keyboard on reset after resume Ben Hutchings <ben@decadent.org.uk> - 2017-08-18 22:10 +0200
      Re: [PATCH 4.12 47/65] usb:xhci:Add quirk for Certain failing HP  keyboard on reset after resume Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-08-19 01:00 +0200

#1711636 — [PATCH 4.12 47/65] usb:xhci:Add quirk for Certain failing HP keyboard on reset after resume

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-08-15 03:30 +0200
Subject[PATCH 4.12 47/65] usb:xhci:Add quirk for Certain failing HP keyboard on reset after resume
Message-ID<ueyQc-39h-63@gated-at.bofh.it>
4.12-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
@@ -252,6 +252,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
@@ -98,6 +98,7 @@ enum amd_chipset_gen {
 	AMD_CHIPSET_HUDSON2,
 	AMD_CHIPSET_BOLTON,
 	AMD_CHIPSET_YANGTZE,
+	AMD_CHIPSET_TAISHAN,
 	AMD_CHIPSET_UNKNOWN,
 };
 
@@ -141,6 +142,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);
@@ -260,11 +266,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);
 

[toc] | [next] | [standalone]


#1715422 — Re: [PATCH 4.12 47/65] usb:xhci:Add quirk for Certain failing HP keyboard on reset after resume

FromBen Hutchings <ben@decadent.org.uk>
Date2017-08-18 22:10 +0200
SubjectRe: [PATCH 4.12 47/65] usb:xhci:Add quirk for Certain failing HP keyboard on reset after resume
Message-ID<ufVKF-8rE-5@gated-at.bofh.it>
In reply to#1711636

[Multipart message — attachments visible in raw view] — view raw

On Mon, 2017-08-14 at 18:19 -0700, Greg Kroah-Hartman wrote:
> 4.12-stable review patch.  If anyone has any objections, please let me know.
> 
> ------------------
> 
> From: Sandeep Singh <sandeep.singh@amd.com>
> 
> commit e788787ef4f9c24aafefc480a8da5f92b914e5e6 upstream.
[...]
> --- a/drivers/usb/host/pci-quirks.c
> +++ b/drivers/usb/host/pci-quirks.c
> @@ -98,6 +98,7 @@ enum amd_chipset_gen {
>  	AMD_CHIPSET_HUDSON2,
>  	AMD_CHIPSET_BOLTON,
>  	AMD_CHIPSET_YANGTZE,
> +	AMD_CHIPSET_TAISHAN,
>  	AMD_CHIPSET_UNKNOWN,
>  };
>  
> @@ -141,6 +142,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);
[...]

This causes pinfo->smbus_dev to be wrongly set to NULL on systems with
the ATI chipset that this function checks for first.

Ben.

-- 
Ben Hutchings
Reality is just a crutch for people who can't handle science fiction.

[toc] | [prev] | [next] | [standalone]


#1715493 — Re: [PATCH 4.12 47/65] usb:xhci:Add quirk for Certain failing HP keyboard on reset after resume

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-08-19 01:00 +0200
SubjectRe: [PATCH 4.12 47/65] usb:xhci:Add quirk for Certain failing HP keyboard on reset after resume
Message-ID<ufYpb-1AN-13@gated-at.bofh.it>
In reply to#1715422
On Fri, Aug 18, 2017 at 09:02:48PM +0100, Ben Hutchings wrote:
> On Mon, 2017-08-14 at 18:19 -0700, Greg Kroah-Hartman wrote:
> > 4.12-stable review patch.  If anyone has any objections, please let me know.
> > 
> > ------------------
> > 
> > From: Sandeep Singh <sandeep.singh@amd.com>
> > 
> > commit e788787ef4f9c24aafefc480a8da5f92b914e5e6 upstream.
> [...]
> > --- a/drivers/usb/host/pci-quirks.c
> > +++ b/drivers/usb/host/pci-quirks.c
> > @@ -98,6 +98,7 @@ enum amd_chipset_gen {
> >  	AMD_CHIPSET_HUDSON2,
> >  	AMD_CHIPSET_BOLTON,
> >  	AMD_CHIPSET_YANGTZE,
> > +	AMD_CHIPSET_TAISHAN,
> >  	AMD_CHIPSET_UNKNOWN,
> >  };
> >  
> > @@ -141,6 +142,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);
> [...]
> 
> This causes pinfo->smbus_dev to be wrongly set to NULL on systems with
> the ATI chipset that this function checks for first.

Ugh, for such a "simple" quirk, this has gone through so many different
iterations, all of which seem broken :(

Sandeep, can you fix this up and send a follow-on patch to us and the
linux-usb mailing list so we can get it fixed up properly?

thanks,

greg k-h

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web