aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci/pci-acpi.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/pci/pci-acpi.c')
-rw-r--r--drivers/pci/pci-acpi.c21
1 files changed, 8 insertions, 13 deletions
diff --git a/drivers/pci/pci-acpi.c b/drivers/pci/pci-acpi.c
index 24e19c594e57..d36f41ea8cbf 100644
--- a/drivers/pci/pci-acpi.c
+++ b/drivers/pci/pci-acpi.c
@@ -46,9 +46,9 @@ static void pci_acpi_wake_dev(acpi_handle handle, u32 event, void *context)
46 struct pci_dev *pci_dev = context; 46 struct pci_dev *pci_dev = context;
47 47
48 if (event == ACPI_NOTIFY_DEVICE_WAKE && pci_dev) { 48 if (event == ACPI_NOTIFY_DEVICE_WAKE && pci_dev) {
49 pci_wakeup_event(pci_dev);
49 pci_check_pme_status(pci_dev); 50 pci_check_pme_status(pci_dev);
50 pm_runtime_resume(&pci_dev->dev); 51 pm_runtime_resume(&pci_dev->dev);
51 pci_wakeup_event(pci_dev);
52 if (pci_dev->subordinate) 52 if (pci_dev->subordinate)
53 pci_pme_wakeup_bus(pci_dev->subordinate); 53 pci_pme_wakeup_bus(pci_dev->subordinate);
54 } 54 }
@@ -195,6 +195,8 @@ static pci_power_t acpi_pci_choose_state(struct pci_dev *pdev)
195 return PCI_D2; 195 return PCI_D2;
196 case ACPI_STATE_D3: 196 case ACPI_STATE_D3:
197 return PCI_D3hot; 197 return PCI_D3hot;
198 case ACPI_STATE_D3_COLD:
199 return PCI_D3cold;
198 } 200 }
199 return PCI_POWER_ERROR; 201 return PCI_POWER_ERROR;
200} 202}
@@ -293,19 +295,11 @@ static int acpi_dev_run_wake(struct device *phys_dev, bool enable)
293 } 295 }
294 296
295 if (enable) { 297 if (enable) {
296 if (!dev->wakeup.run_wake_count++) { 298 acpi_enable_wakeup_device_power(dev, ACPI_STATE_S0);
297 acpi_enable_wakeup_device_power(dev, ACPI_STATE_S0); 299 acpi_enable_gpe(dev->wakeup.gpe_device, dev->wakeup.gpe_number);
298 acpi_enable_gpe(dev->wakeup.gpe_device,
299 dev->wakeup.gpe_number);
300 }
301 } else if (dev->wakeup.run_wake_count > 0) {
302 if (!--dev->wakeup.run_wake_count) {
303 acpi_disable_gpe(dev->wakeup.gpe_device,
304 dev->wakeup.gpe_number);
305 acpi_disable_wakeup_device_power(dev);
306 }
307 } else { 300 } else {
308 error = -EALREADY; 301 acpi_disable_gpe(dev->wakeup.gpe_device, dev->wakeup.gpe_number);
302 acpi_disable_wakeup_device_power(dev);
309 } 303 }
310 304
311 return error; 305 return error;
@@ -399,6 +393,7 @@ static int __init acpi_pci_init(void)
399 393
400 if (acpi_gbl_FADT.boot_flags & ACPI_FADT_NO_ASPM) { 394 if (acpi_gbl_FADT.boot_flags & ACPI_FADT_NO_ASPM) {
401 printk(KERN_INFO"ACPI FADT declares the system doesn't support PCIe ASPM, so disable it\n"); 395 printk(KERN_INFO"ACPI FADT declares the system doesn't support PCIe ASPM, so disable it\n");
396 pcie_clear_aspm();
402 pcie_no_aspm(); 397 pcie_no_aspm();
403 } 398 }
404 399