]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/pci/pci-acpi.c
Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap
[mv-sheeva.git] / drivers / pci / pci-acpi.c
index 4ecb6408b0d61e2128c26100bba3d6690402de5d..060fd22a1103856988d6866b64c4d8e8e3e95a89 100644 (file)
@@ -45,16 +45,20 @@ static void pci_acpi_wake_dev(acpi_handle handle, u32 event, void *context)
 {
        struct pci_dev *pci_dev = context;
 
-       if (event == ACPI_NOTIFY_DEVICE_WAKE && pci_dev) {
+       if (event != ACPI_NOTIFY_DEVICE_WAKE || !pci_dev)
+               return;
+
+       if (!pci_dev->pm_cap || !pci_dev->pme_support
+            || pci_check_pme_status(pci_dev)) {
                if (pci_dev->pme_poll)
                        pci_dev->pme_poll = false;
 
                pci_wakeup_event(pci_dev);
-               pci_check_pme_status(pci_dev);
                pm_runtime_resume(&pci_dev->dev);
-               if (pci_dev->subordinate)
-                       pci_pme_wakeup_bus(pci_dev->subordinate);
        }
+
+       if (pci_dev->subordinate)
+               pci_pme_wakeup_bus(pci_dev->subordinate);
 }
 
 /**
@@ -395,7 +399,6 @@ static int __init acpi_pci_init(void)
 
        if (acpi_gbl_FADT.boot_flags & ACPI_FADT_NO_ASPM) {
                printk(KERN_INFO"ACPI FADT declares the system doesn't support PCIe ASPM, so disable it\n");
-               pcie_clear_aspm();
                pcie_no_aspm();
        }