aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci/pci-driver.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/pci/pci-driver.c')
-rw-r--r--drivers/pci/pci-driver.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c
index edd78e04b693..1ccce1cd6aca 100644
--- a/drivers/pci/pci-driver.c
+++ b/drivers/pci/pci-driver.c
@@ -682,8 +682,19 @@ static int pci_pm_prepare(struct device *dev)
682 682
683static void pci_pm_complete(struct device *dev) 683static void pci_pm_complete(struct device *dev)
684{ 684{
685 pci_dev_complete_resume(to_pci_dev(dev)); 685 struct pci_dev *pci_dev = to_pci_dev(dev);
686 pm_complete_with_resume_check(dev); 686
687 pci_dev_complete_resume(pci_dev);
688 pm_generic_complete(dev);
689
690 /* Resume device if platform firmware has put it in reset-power-on */
691 if (dev->power.direct_complete && pm_resume_via_firmware()) {
692 pci_power_t pre_sleep_state = pci_dev->current_state;
693
694 pci_update_current_state(pci_dev, pci_dev->current_state);
695 if (pci_dev->current_state < pre_sleep_state)
696 pm_request_resume(dev);
697 }
687} 698}
688 699
689#else /* !CONFIG_PM_SLEEP */ 700#else /* !CONFIG_PM_SLEEP */