patch "xhci: Limit USB2 port wake support for AMD Promontory hosts" added to usb-linus
Subsystems (3)
This is a note to let you know that I've just added the patch titled
xhci: Limit USB2 port wake support for AMD Promontory hosts
to my usb git tree which can be found at
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git
in the usb-linus branch.
The patch will show up in the next release of the linux-next tree (usually sometime within the next 24 hours during the week.)
The patch will hopefully also be merged in Linus's tree for the next -rc kernel release.
If you have any questions about this process, please let me know.
Quoted 1 line
From
dec08194ffeccfa1cf085906b53d301930eae18fMon Sep 17 00:00:00 2001
From: Jiahau Chang <[email protected]>
Date: Mon, 19 Jun 2017 13:08:30 +0300
Subject: xhci: Limit USB2 port wake support for AMD Promontory hosts
For AMD Promontory xHCI host, although you can disable USB 2.0 ports in BIOS settings, those ports will be enabled anyway after you remove a device on that port and re-plug it in again. It's a known limitation of the chip. As a workaround we can clear the PORT_WAKE_BITS.
This will disable wake on connect, disconnect and overcurrent on AMD Promontory USB2 ports
--- drivers/usb/host/xhci-hub.c | 3 +++ drivers/usb/host/xhci-pci.c | 12 ++++++++++++ drivers/usb/host/xhci.h | 1 + 3 files changed, 16 insertions(+)
drivers/usb/host/xhci-hub.c +3 -0
@@ -1461,6 +1461,9 @@ int xhci_bus_suspend(struct usb_hcd *hcd) t2 |=PORT_WKOC_E |PORT_WKCONN_E ; t2 &= ~PORT_WKDISC_E ; } +if ((xhci->quirks &XHCI_U2_DISABLE_WAKE ) && + (hcd->speed <HCD_USB3 )) + t2 &= ~PORT_WAKE_BITS ; }else t2 &= ~PORT_WAKE_BITS ;
drivers/usb/host/xhci-pci.c +12 -0
@@ -54,6 +54,11 @@#define PCI_DEVICE_ID_INTEL_APL_XHCI 0x5aa8#define PCI_DEVICE_ID_INTEL_DNV_XHCI 0x19d0 +#define PCI_DEVICE_ID_AMD_PROMONTORYA_4 0x43b9 +#define PCI_DEVICE_ID_AMD_PROMONTORYA_3 0x43ba +#define PCI_DEVICE_ID_AMD_PROMONTORYA_2 0x43bb +#define PCI_DEVICE_ID_AMD_PROMONTORYA_1 0x43bc +static const char hcd_name[] ="xhci_hcd" ;static struct hc_driver __read_mostly xhci_pci_hc_driver;
@@ -135,6 +140,13 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)if (pdev->vendor ==PCI_VENDOR_ID_AMD ) xhci->quirks |=XHCI_TRUST_TX_LENGTH ; +if ((pdev->vendor ==PCI_VENDOR_ID_AMD ) && + ((pdev->device ==PCI_DEVICE_ID_AMD_PROMONTORYA_4 ) || + (pdev->device ==PCI_DEVICE_ID_AMD_PROMONTORYA_3 ) || + (pdev->device ==PCI_DEVICE_ID_AMD_PROMONTORYA_2 ) || + (pdev->device ==PCI_DEVICE_ID_AMD_PROMONTORYA_1 ))) + xhci->quirks |=XHCI_U2_DISABLE_WAKE ; +if (pdev->vendor ==PCI_VENDOR_ID_INTEL ) { xhci->quirks |=XHCI_LPM_SUPPORT ; xhci->quirks |=XHCI_INTEL_HOST ;
drivers/usb/host/xhci.h +1 -0
@@ -1819,6 +1819,7 @@ struct xhci_hcd {/* For controller with a broken Port Disable implementation */ #define XHCI_BROKEN_PORT_PED (1 << 25)#define XHCI_LIMIT_ENDPOINT_INTERVAL_7 (1 << 26) +#define XHCI_U2_DISABLE_WAKE (1 << 27)unsigned int num_active_eps;unsigned int limit_active_eps;
Signature · 1 line
2.13.1
Tsai, Nicholas
AppliedHi Gregkh and Mathias,
Sorry to bother you again.
May I know if the upstream process is completed?
Thanks.
Best Regards.
NICHOLAS TSAI
Project Leader | AMD CE TW
6F, 3, YuanCyu St.(Nankang Software Park) Taipei 115, Taiwan M +(886) 931 419 369 O +(886) 2-3789 3329
-----Original Message-----
From: [email protected] [mailto:[email protected]]
Sent: Tuesday, June 20, 2017 11:20 AM
To: [email protected]; [email protected]; [email protected]; [email protected]; Tsai, Nicholas <[email protected]>; [email protected]
Subject: patch "xhci: Limit USB2 port wake support for AMD Promontory hosts" added to usb-linus
This is a note to let you know that I've just added the patch titled
xhci: Limit USB2 port wake support for AMD Promontory hosts
to my usb git tree which can be found at
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git
in the usb-linus branch.
The patch will show up in the next release of the linux-next tree (usually sometime within the next 24 hours during the week.)
The patch will hopefully also be merged in Linus's tree for the next -rc kernel release.
If you have any questions about this process, please let me know.
Quoted 1 line
From
dec08194ffeccfa1cf085906b53d301930eae18fMon Sep 17 00:00:00 2001
From: Jiahau Chang <[email protected]>
Date: Mon, 19 Jun 2017 13:08:30 +0300
Subject: xhci: Limit USB2 port wake support for AMD Promontory hosts
For AMD Promontory xHCI host, although you can disable USB 2.0 ports in BIOS settings, those ports will be enabled anyway after you remove a device on that port and re-plug it in again. It's a known limitation of the chip. As a workaround we can clear the PORT_WAKE_BITS.
This will disable wake on connect, disconnect and overcurrent on AMD Promontory USB2 ports
--- drivers/usb/host/xhci-hub.c | 3 +++ drivers/usb/host/xhci-pci.c | 12 ++++++++++++ drivers/usb/host/xhci.h | 1 + 3 files changed, 16 insertions(+)
drivers/usb/host/xhci-hub.c +3 -0
@@ -1461,6 +1461,9 @@ int xhci_bus_suspend(struct usb_hcd *hcd) t2 |=PORT_WKOC_E |PORT_WKCONN_E ; t2 &= ~PORT_WKDISC_E ; } +if ((xhci->quirks &XHCI_U2_DISABLE_WAKE ) && + (hcd->speed <HCD_USB3 )) + t2 &= ~PORT_WAKE_BITS ; }else t2 &= ~PORT_WAKE_BITS ;
drivers/usb/host/xhci-pci.c +5 -0
@@ -54,6 +54,11 @@#define PCI_DEVICE_ID_INTEL_APL_XHCI 0x5aa8#define PCI_DEVICE_ID_INTEL_DNV_XHCI 0x19d0 +#define PCI_DEVICE_ID_AMD_PROMONTORYA_4 0x43b9 +#define PCI_DEVICE_ID_AMD_PROMONTORYA_3 0x43ba +#define PCI_DEVICE_ID_AMD_PROMONTORYA_2 0x43bb +#define PCI_DEVICE_ID_AMD_PROMONTORYA_1 0x43bc +static const char hcd_name[] ="xhci_hcd" ; static struct hc_driver __read_mostly xhci_pci_hc_driver; @@ -135,6 +140,13 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
if (pdev->vendor == PCI_VENDOR_ID_AMD)
xhci->quirks |= XHCI_TRUST_TX_LENGTH;
+ if ((pdev->vendor == PCI_VENDOR_ID_AMD) &&
+ ((pdev->device == PCI_DEVICE_ID_AMD_PROMONTORYA_4) || + (pdev->device == PCI_DEVICE_ID_AMD_PROMONTORYA_3) || + (pdev->device == PCI_DEVICE_ID_AMD_PROMONTORYA_2) ||
+ (pdev->device == PCI_DEVICE_ID_AMD_PROMONTORYA_1)))
+ xhci->quirks |= XHCI_U2_DISABLE_WAKE;
+
if (pdev->vendor == PCI_VENDOR_ID_INTEL) {
xhci->quirks |= XHCI_LPM_SUPPORT; xhci->quirks |= XHCI_INTEL_HOST;
drivers/usb/host/xhci.h +1 -0
@@ -1819,6 +1819,7 @@ struct xhci_hcd {/* For controller with a broken Port Disable implementation */ #define XHCI_BROKEN_PORT_PED (1 << 25)#define XHCI_LIMIT_ENDPOINT_INTERVAL_7 (1 << 26) +#define XHCI_U2_DISABLE_WAKE (1 << 27)unsigned int num_active_eps;unsigned int limit_active_eps;
--
2.13.1
[email protected]
maintainerQuoted 3 lines · Nicholas
Hi Gregkh and Mathias,
Sorry to bother you again.
May I know if the upstream process is completed?
For you, yes, I still have more work to do on my end :)
You have read Documentation/development_process/ right?
thanks,
greg k-h
Thanks for your quickly reply.
Because I am not familiar about the Linux upstream, could you point out where could I read the" Documentation/development_process/"?
Thanks.
NICHOLAS TSAI
Project Leader | AMD CE TW
6F, 3, YuanCyu St.(Nankang Software Park) Taipei 115, Taiwan M +(886) 931 419 369 O +(886) 2-3789 3329
-----Original Message-----
From: [email protected] [mailto:[email protected]]
Sent: Thursday, June 22, 2017 9:24 PM
To: Tsai, Nicholas
Cc: [email protected]; [email protected]; [email protected]; [email protected]
Subject: Re: patch "xhci: Limit USB2 port wake support for AMD Promontory hosts" added to usb-linus
Quoted 3 lines · Nicholas
Hi Gregkh and Mathias,
Sorry to bother you again.
May I know if the upstream process is completed?
For you, yes, I still have more work to do on my end :)
You have read Documentation/development_process/ right?
thanks,
greg k-h
[email protected]
maintainerQuoted 3 lines · Nicholas
Thanks for your quickly reply.
Because I am not familiar about the Linux upstream, could you point out where could I read the"Documentation/development_process/"?
That is a directory path within the kernel source tree itself.
Or you can read it online on many sites that build the kernel documentation tree. One example would be the following link:
https://01.org/linuxgraphics/gfx-docs/drm/process/development-process.html
hope this helps,
greg k-h