PCI/PM: Revert "PCI/PM: Apply D2 delay as milliseconds, not microseconds"
authorBjorn Helgaas <bhelgaas@google.com>
Tue, 29 Sep 2020 19:24:11 +0000 (14:24 -0500)
committerBjorn Helgaas <bhelgaas@google.com>
Wed, 30 Sep 2020 22:01:46 +0000 (17:01 -0500)
This reverts commit 7e24bc347e57992d532bc2ed700209b0fc0a4bf5.

7e24bc347e57 was based on PCIe r5.0, sec 5.9, which claims we need a 200 ms
delay when transitioning to or from D2.  However, sec 5.3.1.3 states the
delay as 200 μs (microseconds), as does the table in PCIe r4.0, sec 5.9.1.

This looks like a typo in the r5.0 spec, so revert back to a 200 μs delay
instead of a 200 ms delay.

Fixes: 7e24bc347e57 ("PCI/PM: Apply D2 delay as milliseconds, not microseconds")
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/pci/pci.c
drivers/pci/pci.h

index c4a26532a447488cd43537958789a570d652793c..d69578ad44a0399a71cece628d399845a0d958e5 100644 (file)
@@ -1065,7 +1065,7 @@ static int pci_raw_set_power_state(struct pci_dev *dev, pci_power_t state)
        if (state == PCI_D3hot || dev->current_state == PCI_D3hot)
                pci_dev_d3_sleep(dev);
        else if (state == PCI_D2 || dev->current_state == PCI_D2)
-               msleep(PCI_PM_D2_DELAY);
+               udelay(PCI_PM_D2_DELAY);
 
        pci_read_config_word(dev, dev->pm_cap + PCI_PM_CTRL, &pmcsr);
        dev->current_state = (pmcsr & PCI_PM_CTRL_STATE_MASK);
index f0a9cbe01bc719908f2a1cd02f8827af733a3fee..f86cae9aa1f4102c8ab684a7c930b82b5c8bdf2a 100644 (file)
@@ -43,9 +43,9 @@ int pci_probe_reset_function(struct pci_dev *dev);
 int pci_bridge_secondary_bus_reset(struct pci_dev *dev);
 int pci_bus_error_reset(struct pci_dev *dev);
 
-#define PCI_PM_D2_DELAY         200
-#define PCI_PM_D3HOT_WAIT       10
-#define PCI_PM_D3COLD_WAIT      100
+#define PCI_PM_D2_DELAY         200    /* usec; see PCIe r4.0, sec 5.9.1 */
+#define PCI_PM_D3HOT_WAIT       10     /* msec */
+#define PCI_PM_D3COLD_WAIT      100    /* msec */
 
 /**
  * struct pci_platform_pm_ops - Firmware PM callbacks