aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci/quirks.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/pci/quirks.c')
-rw-r--r--drivers/pci/quirks.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 90acb32c85b1..ed6f89b6efe5 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -379,6 +379,26 @@ static void quirk_ati_exploding_mce(struct pci_dev *dev)
379DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS100, quirk_ati_exploding_mce); 379DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS100, quirk_ati_exploding_mce);
380 380
381/* 381/*
382 * In the AMD NL platform, this device ([1022:7912]) has a class code of
383 * PCI_CLASS_SERIAL_USB_XHCI (0x0c0330), which means the xhci driver will
384 * claim it.
385 * But the dwc3 driver is a more specific driver for this device, and we'd
386 * prefer to use it instead of xhci. To prevent xhci from claiming the
387 * device, change the class code to 0x0c03fe, which the PCI r3.0 spec
388 * defines as "USB device (not host controller)". The dwc3 driver can then
389 * claim it based on its Vendor and Device ID.
390 */
391static void quirk_amd_nl_class(struct pci_dev *pdev)
392{
393 /*
394 * Use 'USB Device' (0x0c03fe) instead of PCI header provided
395 */
396 pdev->class = 0x0c03fe;
397}
398DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_NL_USB,
399 quirk_amd_nl_class);
400
401/*
382 * Let's make the southbridge information explicit instead 402 * Let's make the southbridge information explicit instead
383 * of having to worry about people probing the ACPI areas, 403 * of having to worry about people probing the ACPI areas,
384 * for example.. (Yes, it happens, and if you read the wrong 404 * for example.. (Yes, it happens, and if you read the wrong