summaryrefslogtreecommitdiffstats
path: root/drivers/pci/pci.c
diff options
context:
space:
mode:
authorAndrew Lunn <andrew.lunn@ascom.ch>2007-07-09 11:55:58 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2007-07-11 16:02:12 -0700
commitcca03dec2f0eb8f3c4578e067d2b20a366b940db (patch)
tree501dcae4c17a2aa0d074a7d1b8b10160447e7a1a /drivers/pci/pci.c
parent0bec2c85bb269446358dceae82ca7822ccfd4e9f (diff)
downloadlinux-cca03dec2f0eb8f3c4578e067d2b20a366b940db.tar.gz
linux-cca03dec2f0eb8f3c4578e067d2b20a366b940db.tar.bz2
linux-cca03dec2f0eb8f3c4578e067d2b20a366b940db.zip
PCI: pci_set_power_state(): check for PM capabilities earlier
Check for PCI_CAP_ID_PM before checking the device state. Apparently fixes some log spam via the 3c59x driver. Signed-off-by: Andrew Lunn <andrew.lunn@ascom.ch> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/pci/pci.c')
-rw-r--r--drivers/pci/pci.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 35fa30aa3065..03fd59e80fef 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -406,6 +406,13 @@ pci_set_power_state(struct pci_dev *dev, pci_power_t state)
if ((state == PCI_D1 || state == PCI_D2) && pci_no_d1d2(dev))
return 0;
+ /* find PCI PM capability in list */
+ pm = pci_find_capability(dev, PCI_CAP_ID_PM);
+
+ /* abort if the device doesn't support PM capabilities */
+ if (!pm)
+ return -EIO;
+
/* Validate current state:
* Can enter D0 from any state, but if we can only go deeper
* to sleep if we're already in a low power state
@@ -418,13 +425,6 @@ pci_set_power_state(struct pci_dev *dev, pci_power_t state)
return 0; /* we're already there */
- /* find PCI PM capability in list */
- pm = pci_find_capability(dev, PCI_CAP_ID_PM);
-
- /* abort if the device doesn't support PM capabilities */
- if (!pm)
- return -EIO;
-
pci_read_config_word(dev,pm + PCI_PM_PMC,&pmc);
if ((pmc & PCI_PM_CAP_VER_MASK) > 3) {
printk(KERN_DEBUG