diff options
author | Paul Mundt <lethal@linux-sh.org> | 2010-11-18 03:35:56 -0500 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2010-11-18 03:35:56 -0500 |
commit | 0421860a5a75b59a76b7a864a172eb090e3d0785 (patch) | |
tree | df22f28abfa4c8bb77d650b674a44e0aedc586be /drivers/pci/pci.c | |
parent | cf655c36fad7b6488a56f18ab56f7d608ca6552b (diff) | |
parent | 89ba4d12fca24d373e1b10fce498d68157bafaf0 (diff) |
Merge branch 'rmobile/ag5' into rmobile-latest
Diffstat (limited to 'drivers/pci/pci.c')
-rw-r--r-- | drivers/pci/pci.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index e98c8104297b..710c8a29be0d 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c | |||
@@ -1007,6 +1007,18 @@ static int __pci_enable_device_flags(struct pci_dev *dev, | |||
1007 | int err; | 1007 | int err; |
1008 | int i, bars = 0; | 1008 | int i, bars = 0; |
1009 | 1009 | ||
1010 | /* | ||
1011 | * Power state could be unknown at this point, either due to a fresh | ||
1012 | * boot or a device removal call. So get the current power state | ||
1013 | * so that things like MSI message writing will behave as expected | ||
1014 | * (e.g. if the device really is in D0 at enable time). | ||
1015 | */ | ||
1016 | if (dev->pm_cap) { | ||
1017 | u16 pmcsr; | ||
1018 | pci_read_config_word(dev, dev->pm_cap + PCI_PM_CTRL, &pmcsr); | ||
1019 | dev->current_state = (pmcsr & PCI_PM_CTRL_STATE_MASK); | ||
1020 | } | ||
1021 | |||
1010 | if (atomic_add_return(1, &dev->enable_cnt) > 1) | 1022 | if (atomic_add_return(1, &dev->enable_cnt) > 1) |
1011 | return 0; /* already enabled */ | 1023 | return 0; /* already enabled */ |
1012 | 1024 | ||