PCI PM: Register power state of devices during initialization
Use the observation that the power state of a PCI device can be loaded into its pci_dev structure as soon as pci_pm_init() is run for it and make that happen. Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> Acked-by: Pavel Machek <pavel@suse.cz> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
This commit is contained in:
parent
ad8cfa1def
commit
98e6e286d7
1 changed files with 6 additions and 2 deletions
|
@ -1260,14 +1260,15 @@ void pci_pm_init(struct pci_dev *dev)
|
||||||
/* find PCI PM capability in list */
|
/* find PCI PM capability in list */
|
||||||
pm = pci_find_capability(dev, PCI_CAP_ID_PM);
|
pm = pci_find_capability(dev, PCI_CAP_ID_PM);
|
||||||
if (!pm)
|
if (!pm)
|
||||||
return;
|
goto Exit;
|
||||||
|
|
||||||
/* Check device's ability to generate PME# */
|
/* Check device's ability to generate PME# */
|
||||||
pci_read_config_word(dev, pm + PCI_PM_PMC, &pmc);
|
pci_read_config_word(dev, pm + PCI_PM_PMC, &pmc);
|
||||||
|
|
||||||
if ((pmc & PCI_PM_CAP_VER_MASK) > 3) {
|
if ((pmc & PCI_PM_CAP_VER_MASK) > 3) {
|
||||||
dev_err(&dev->dev, "unsupported PM cap regs version (%u)\n",
|
dev_err(&dev->dev, "unsupported PM cap regs version (%u)\n",
|
||||||
pmc & PCI_PM_CAP_VER_MASK);
|
pmc & PCI_PM_CAP_VER_MASK);
|
||||||
return;
|
goto Exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
dev->pm_cap = pm;
|
dev->pm_cap = pm;
|
||||||
|
@ -1306,6 +1307,9 @@ void pci_pm_init(struct pci_dev *dev)
|
||||||
} else {
|
} else {
|
||||||
dev->pme_support = 0;
|
dev->pme_support = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Exit:
|
||||||
|
pci_update_current_state(dev, PCI_D0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Add table
Reference in a new issue