]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
usb: xhci: Fix problem with xhci resume from suspend
authorJose Alberto Reguero <jose.alberto.reguero@gmail.com>
Thu, 19 Sep 2024 18:42:02 +0000 (20:42 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 17 Oct 2024 13:11:59 +0000 (15:11 +0200)
commit d44238d8254a36249d576c96473269dbe500f5e4 upstream.

I have a ASUS PN51 S mini pc that has two xhci devices. One from AMD,
and other from ASMEDIA. The one from ASMEDIA have problems when resume
from suspend, and keep broken until unplug the  power cord. I use this
kernel parameter: xhci-hcd.quirks=128 and then it works ok. I make a
path to reset only the ASMEDIA xhci.

Signed-off-by: Jose Alberto Reguero <jose.alberto.reguero@gmail.com>
Cc: stable <stable@kernel.org>
Link: https://lore.kernel.org/r/20240919184202.22249-1-jose.alberto.reguero@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/host/xhci-pci.c

index e47a3cc078aed04ef39ee3e793c0381850d5b5d6..3332b31a1354e7ccc0ab07fd3869894328b62cd3 100644 (file)
@@ -73,6 +73,7 @@
 #define PCI_DEVICE_ID_ASMEDIA_1042A_XHCI               0x1142
 #define PCI_DEVICE_ID_ASMEDIA_1142_XHCI                        0x1242
 #define PCI_DEVICE_ID_ASMEDIA_2142_XHCI                        0x2142
+#define PCI_DEVICE_ID_ASMEDIA_3042_XHCI                        0x3042
 #define PCI_DEVICE_ID_ASMEDIA_3242_XHCI                        0x3242
 
 #define PCI_DEVICE_ID_CADENCE                          0x17CD
@@ -331,6 +332,10 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
                pdev->device == PCI_DEVICE_ID_ASMEDIA_1042A_XHCI)
                xhci->quirks |= XHCI_ASMEDIA_MODIFY_FLOWCONTROL;
 
+       if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
+           pdev->device == PCI_DEVICE_ID_ASMEDIA_3042_XHCI)
+               xhci->quirks |= XHCI_RESET_ON_RESUME;
+
        if (pdev->vendor == PCI_VENDOR_ID_TI && pdev->device == 0x8241)
                xhci->quirks |= XHCI_LIMIT_ENDPOINT_INTERVAL_7;