diff options
Diffstat (limited to 'drivers/pci')
-rw-r--r-- | drivers/pci/pci.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index e91dcc05b790..7ae709024456 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c | |||
@@ -392,6 +392,14 @@ pci_set_power_state(struct pci_dev *dev, pci_power_t state) | |||
392 | if (state > PCI_D3hot) | 392 | if (state > PCI_D3hot) |
393 | state = PCI_D3hot; | 393 | state = PCI_D3hot; |
394 | 394 | ||
395 | /* | ||
396 | * If the device or the parent bridge can't support PCI PM, ignore | ||
397 | * the request if we're doing anything besides putting it into D0 | ||
398 | * (which would only happen on boot). | ||
399 | */ | ||
400 | if ((state == PCI_D1 || state == PCI_D2) && pci_no_d1d2(dev)) | ||
401 | return 0; | ||
402 | |||
395 | /* Validate current state: | 403 | /* Validate current state: |
396 | * Can enter D0 from any state, but if we can only go deeper | 404 | * Can enter D0 from any state, but if we can only go deeper |
397 | * to sleep if we're already in a low power state | 405 | * to sleep if we're already in a low power state |
@@ -403,13 +411,6 @@ pci_set_power_state(struct pci_dev *dev, pci_power_t state) | |||
403 | } else if (dev->current_state == state) | 411 | } else if (dev->current_state == state) |
404 | return 0; /* we're already there */ | 412 | return 0; /* we're already there */ |
405 | 413 | ||
406 | /* | ||
407 | * If the device or the parent bridge can't support PCI PM, ignore | ||
408 | * the request if we're doing anything besides putting it into D0 | ||
409 | * (which would only happen on boot). | ||
410 | */ | ||
411 | if ((state == PCI_D1 || state == PCI_D2) && pci_no_d1d2(dev)) | ||
412 | return 0; | ||
413 | 414 | ||
414 | /* find PCI PM capability in list */ | 415 | /* find PCI PM capability in list */ |
415 | pm = pci_find_capability(dev, PCI_CAP_ID_PM); | 416 | pm = pci_find_capability(dev, PCI_CAP_ID_PM); |