On 30.12.2018 18:34, Philip Langdale wrote:
This fixes a regression since: 2815ef7fe4d43072b9eda448d04fbc184f2aa513

This motherboard is a strange beast, with an Alpine Ridge thunderbolt
controller configured to only do USB with no actual thunderbolt
capabilities (Apparently due to the wiring not being thunderbolt
compliant).

When runtime PM is enabled in this case, plugging in a USB device results
in nothing being detected. Everything works fine when runtime PM is not
enabled.

Signed-off-by: Philip Langdale <[email protected]>
Link: https://bugzilla.kernel.org/show_bug.cgi?id=202095
---
  drivers/usb/host/xhci-pci.c | 4 +++-
  1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
index a9ec7051f286..147ae893f055 100644
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
@@ -211,7 +211,9 @@ static void xhci_pci_quirks(struct device *dev, struct 
xhci_hcd *xhci)
             pdev->device == PCI_DEVICE_ID_INTEL_ALPINE_RIDGE_C_4C_XHCI ||
             pdev->device == PCI_DEVICE_ID_INTEL_TITAN_RIDGE_2C_XHCI ||
             pdev->device == PCI_DEVICE_ID_INTEL_TITAN_RIDGE_4C_XHCI ||
-            pdev->device == PCI_DEVICE_ID_INTEL_TITAN_RIDGE_DD_XHCI))
+            pdev->device == PCI_DEVICE_ID_INTEL_TITAN_RIDGE_DD_XHCI) &&
+           pdev->subsystem_vendor != 0x2222 &&
+           pdev->subsystem_device != 0x1111)
                xhci->quirks |= XHCI_DEFAULT_PM_RUNTIME_ALLOW;
if (pdev->vendor == PCI_VENDOR_ID_ETRON &&


Before doing this there are a couple other possible reasons why this is not 
working.

Mika (cc) suspects it might be related to a PCI PM patch, can you try reverting 
it?:

0e157e5 PCI/PME: Implement runtime PM callbacks

Another possibility is that xHC is stopped (runtime suspended), but still in 
PCI D0 state,
which would prevent PME from waking it up.

can you check the D state of the Alpine Ridge xHCI controller when it doesn't 
react:
cat /sys/bus/pci/devices/<your Alpine Ridge xHCI PCI bus 
address>/firmware_node/power_state

Don't use lspci for checking D state, it might wake up the PCI devices.

-Mathias


Reply via email to