|
@@ -378,6 +378,26 @@ static void quirk_ati_exploding_mce(struct pci_dev *dev)
|
|
|
}
|
|
|
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS100, quirk_ati_exploding_mce);
|
|
|
|
|
|
+/*
|
|
|
+ * In the AMD NL platform, this device ([1022:7912]) has a class code of
|
|
|
+ * PCI_CLASS_SERIAL_USB_XHCI (0x0c0330), which means the xhci driver will
|
|
|
+ * claim it.
|
|
|
+ * But the dwc3 driver is a more specific driver for this device, and we'd
|
|
|
+ * prefer to use it instead of xhci. To prevent xhci from claiming the
|
|
|
+ * device, change the class code to 0x0c03fe, which the PCI r3.0 spec
|
|
|
+ * defines as "USB device (not host controller)". The dwc3 driver can then
|
|
|
+ * claim it based on its Vendor and Device ID.
|
|
|
+ */
|
|
|
+static void quirk_amd_nl_class(struct pci_dev *pdev)
|
|
|
+{
|
|
|
+ /*
|
|
|
+ * Use 'USB Device' (0x0c03fe) instead of PCI header provided
|
|
|
+ */
|
|
|
+ pdev->class = 0x0c03fe;
|
|
|
+}
|
|
|
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_NL_USB,
|
|
|
+ quirk_amd_nl_class);
|
|
|
+
|
|
|
/*
|
|
|
* Let's make the southbridge information explicit instead
|
|
|
* of having to worry about people probing the ACPI areas,
|