xhci: Add reset resume quirk for AMD xhci controller.
authorSandeep Singh <sandeep.singh@amd.com>
Wed, 12 May 2021 08:08:16 +0000 (11:08 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 13 May 2021 12:47:36 +0000 (14:47 +0200)
One of AMD xhci controller require reset on resume.
Occasionally AMD xhci controller does not respond to
Stop endpoint command.
Once the issue happens controller goes into bad state
and in that case controller needs to be reset.

Cc: <stable@vger.kernel.org>
Signed-off-by: Sandeep Singh <sandeep.singh@amd.com>
Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Link: https://lore.kernel.org/r/20210512080816.866037-6-mathias.nyman@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/host/xhci-pci.c

index a858add..7bc18cf 100644 (file)
@@ -167,8 +167,10 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
            (pdev->device == 0x15e0 || pdev->device == 0x15e1))
                xhci->quirks |= XHCI_SNPS_BROKEN_SUSPEND;
 
-       if (pdev->vendor == PCI_VENDOR_ID_AMD && pdev->device == 0x15e5)
+       if (pdev->vendor == PCI_VENDOR_ID_AMD && pdev->device == 0x15e5) {
                xhci->quirks |= XHCI_DISABLE_SPARSE;
+               xhci->quirks |= XHCI_RESET_ON_RESUME;
+       }
 
        if (pdev->vendor == PCI_VENDOR_ID_AMD)
                xhci->quirks |= XHCI_TRUST_TX_LENGTH;