ACK: [PATCH][SRU][Xenial] UBUNTU: SAUCE: xhci: AMD Promontory USB disable port support
Thadeu Lima de Souza Cascardo
cascardo at canonical.com
Wed Jun 28 17:42:50 UTC 2017
On Mon, Jun 26, 2017 at 11:39:04AM +0800, Jesse Sung wrote:
> 2017-06-26 11:02 GMT+08:00 AceLan Kao <acelan.kao at canonical.com>:
> > From: Jiahau Chang <jiahau at gmail.com>
> >
> > BugLink: http://bugs.launchpad.net/bugs/1695216
> >
> > v4: Remove the patch code in case USB_PORT_FEAT_REMOTE_WAKE_MASK
> >
> > 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 patch only affects selected devices and test result is positive.
>
Sorry, Jesse.
Your ACK has been ignored because your email does not set the usual
headers as a reply to the original message. That's probably because you
used the gmail web interface.
I am ignoring any such responses from now on. Please use a decent MUA
when using this list. :-)
Regards.
Cascardo.
> >
> > Signed-off-by: Jiahau Chang <Lars_Chang at asmedia.com.tw>
> > Signed-off-by: AceLan Kao <acelan.kao at canonical.com>
> > ---
> > drivers/usb/host/xhci-hub.c | 2 ++
> > drivers/usb/host/xhci-pci.c | 13 +++++++++++++
> > drivers/usb/host/xhci.h | 2 ++
> > 3 files changed, 17 insertions(+)
> >
> > diff --git a/drivers/usb/host/xhci-hub.c b/drivers/usb/host/xhci-hub.c
> > index 7e2c0de..635198d 100644
> > --- a/drivers/usb/host/xhci-hub.c
> > +++ b/drivers/usb/host/xhci-hub.c
> > @@ -1342,6 +1342,8 @@ 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;
> >
> > diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
> > index 9604600..02c3fca 100644
> > --- a/drivers/usb/host/xhci-pci.c
> > +++ b/drivers/usb/host/xhci-pci.c
> > @@ -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;
> > @@ -136,6 +141,14 @@ 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;
> > diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h
> > index 2e34c9f..d723fef 100644
> > --- a/drivers/usb/host/xhci.h
> > +++ b/drivers/usb/host/xhci.h
> > @@ -1644,6 +1644,8 @@ struct xhci_hcd {
> > #define XHCI_BROKEN_STREAMS (1 << 19)
> > #define XHCI_PME_STUCK_QUIRK (1 << 20)
> > #define XHCI_MISSING_CAS (1 << 24)
> > +#define XHCI_U2_DISABLE_WAKE (1 << 27)
> > +
> > unsigned int num_active_eps;
> > unsigned int limit_active_eps;
> > /* There are two roothubs to keep track of bus suspend info for */
> > --
> > 2.7.4
> >
> >
> > --
> > kernel-team mailing list
> > kernel-team at lists.ubuntu.com
> > https://lists.ubuntu.com/mailman/listinfo/kernel-team
>
> --
> kernel-team mailing list
> kernel-team at lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team
More information about the kernel-team
mailing list