]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
PCI: Add generic quirk for increasing D3hot delay
authorDaniel Drake <drake@endlessm.com>
Wed, 27 Nov 2019 05:38:35 +0000 (13:38 +0800)
committerBjorn Helgaas <bhelgaas@google.com>
Fri, 13 Dec 2019 20:30:00 +0000 (14:30 -0600)
Separate the D3 delay increase functionality out of quirk_radeon_pm() into
its own function so that it can be shared with other quirks, including the
AMD Ryzen XHCI quirk that will be introduced in a followup commit.

Tweak the function name and message to indicate more clearly that the delay
relates to a D3hot-to-D0 transition.

Link: https://lore.kernel.org/r/20191127053836.31624-1-drake@endlessm.com
Signed-off-by: Daniel Drake <drake@endlessm.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
drivers/pci/quirks.c

index 202837ed68c9b88dd87fe8a9af449a7924eeea07..92e08dd7d692998a860388ce629d227f4ede29ba 100644 (file)
@@ -1871,16 +1871,21 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL,    0x2609, quirk_intel_pcie_pm);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL,   0x260a, quirk_intel_pcie_pm);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL,   0x260b, quirk_intel_pcie_pm);
 
+static void quirk_d3hot_delay(struct pci_dev *dev, unsigned int delay)
+{
+       if (dev->d3_delay >= delay)
+               return;
+
+       dev->d3_delay = delay;
+       pci_info(dev, "extending delay after power-on from D3hot to %d msec\n",
+                dev->d3_delay);
+}
+
 static void quirk_radeon_pm(struct pci_dev *dev)
 {
        if (dev->subsystem_vendor == PCI_VENDOR_ID_APPLE &&
-           dev->subsystem_device == 0x00e2) {
-               if (dev->d3_delay < 20) {
-                       dev->d3_delay = 20;
-                       pci_info(dev, "extending delay after power-on from D3 to %d msec\n",
-                                dev->d3_delay);
-               }
-       }
+           dev->subsystem_device == 0x00e2)
+               quirk_d3hot_delay(dev, 20);
 }
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x6741, quirk_radeon_pm);