|
@@ -3185,6 +3185,29 @@ static void quirk_no_pm_reset(struct pci_dev *dev)
|
|
|
DECLARE_PCI_FIXUP_CLASS_HEADER(PCI_VENDOR_ID_ATI, PCI_ANY_ID,
|
|
|
PCI_CLASS_DISPLAY_VGA, 8, quirk_no_pm_reset);
|
|
|
|
|
|
+/*
|
|
|
+ * Thunderbolt controllers with broken MSI hotplug signaling:
|
|
|
+ * Entire 1st generation (Light Ridge, Eagle Ridge, Light Peak) and part
|
|
|
+ * of the 2nd generation (Cactus Ridge 4C up to revision 1, Port Ridge).
|
|
|
+ */
|
|
|
+static void quirk_thunderbolt_hotplug_msi(struct pci_dev *pdev)
|
|
|
+{
|
|
|
+ if (pdev->is_hotplug_bridge &&
|
|
|
+ (pdev->device != PCI_DEVICE_ID_INTEL_CACTUS_RIDGE_4C ||
|
|
|
+ pdev->revision <= 1))
|
|
|
+ pdev->no_msi = 1;
|
|
|
+}
|
|
|
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_LIGHT_RIDGE,
|
|
|
+ quirk_thunderbolt_hotplug_msi);
|
|
|
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_EAGLE_RIDGE,
|
|
|
+ quirk_thunderbolt_hotplug_msi);
|
|
|
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_LIGHT_PEAK,
|
|
|
+ quirk_thunderbolt_hotplug_msi);
|
|
|
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_CACTUS_RIDGE_4C,
|
|
|
+ quirk_thunderbolt_hotplug_msi);
|
|
|
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PORT_RIDGE,
|
|
|
+ quirk_thunderbolt_hotplug_msi);
|
|
|
+
|
|
|
#ifdef CONFIG_ACPI
|
|
|
/*
|
|
|
* Apple: Shutdown Cactus Ridge Thunderbolt controller.
|
|
@@ -3267,7 +3290,8 @@ static void quirk_apple_wait_for_thunderbolt(struct pci_dev *dev)
|
|
|
if (!nhi)
|
|
|
goto out;
|
|
|
if (nhi->vendor != PCI_VENDOR_ID_INTEL
|
|
|
- || (nhi->device != PCI_DEVICE_ID_INTEL_CACTUS_RIDGE_4C &&
|
|
|
+ || (nhi->device != PCI_DEVICE_ID_INTEL_LIGHT_RIDGE &&
|
|
|
+ nhi->device != PCI_DEVICE_ID_INTEL_CACTUS_RIDGE_4C &&
|
|
|
nhi->device != PCI_DEVICE_ID_INTEL_FALCON_RIDGE_4C_NHI)
|
|
|
|| nhi->subsystem_vendor != 0x2222
|
|
|
|| nhi->subsystem_device != 0x1111)
|
|
@@ -3278,6 +3302,9 @@ out:
|
|
|
pci_dev_put(nhi);
|
|
|
pci_dev_put(sibling);
|
|
|
}
|
|
|
+DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_INTEL,
|
|
|
+ PCI_DEVICE_ID_INTEL_LIGHT_RIDGE,
|
|
|
+ quirk_apple_wait_for_thunderbolt);
|
|
|
DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_INTEL,
|
|
|
PCI_DEVICE_ID_INTEL_CACTUS_RIDGE_4C,
|
|
|
quirk_apple_wait_for_thunderbolt);
|