diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index 66cd9678c672..0bcf908b33d4 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -4912,6 +4912,17 @@ static void quirk_intel_no_flr(struct pci_dev *dev) DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x1502, quirk_intel_no_flr); DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x1503, quirk_intel_no_flr); +/* + * Ryzen 3rd-gen CPU-provided USB and audio advertise FLR, but invoking it hangs. + * NOTE: Not true for chipset-provided USB which has the same ID. + */ +static void quirk_amd_no_flr(struct pci_dev *dev) +{ + dev->dev_flags |= PCI_DEV_FLAGS_NO_FLR_RESET; +} +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_AMD, 0x149c, quirk_amd_no_flr); +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_AMD, 0x1487, quirk_amd_no_flr); + static void quirk_intel_th_rtit_bar(struct pci_dev *dev) { struct resource *r = &dev->resource[4];