diff options
| author | Warner Losh <imp@FreeBSD.org> | 2004-04-09 20:41:18 +0000 |
|---|---|---|
| committer | Warner Losh <imp@FreeBSD.org> | 2004-04-09 20:41:18 +0000 |
| commit | bbecd97c0ba40ec47d3b0f44668e6b2745729595 (patch) | |
| tree | fdfc8cbb14e4d05da83d561e9a0d40364f4baa08 /sys/dev/pci | |
| parent | d1006b25a939ffbe8ddfb5695648a37cadc294f9 (diff) | |
Notes
Diffstat (limited to 'sys/dev/pci')
| -rw-r--r-- | sys/dev/pci/pci.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c index 3da138674dc46..cf9ffe2b8f473 100644 --- a/sys/dev/pci/pci.c +++ b/sys/dev/pci/pci.c @@ -1703,9 +1703,11 @@ pci_cfg_restore(device_t dev, struct pci_devinfo *dinfo) */ if (dinfo->cfg.hdrtype != 0) return; - printf("pci%d:%d:%d: setting power state D0\n", dinfo->cfg.bus, - dinfo->cfg.slot, dinfo->cfg.func); - pci_set_powerstate(dev, PCI_POWERSTATE_D0); + if (pci_get_powerstate(dev) != PCI_POWERSTATE_D0) { + printf("pci%d:%d:%d: setting power state D0\n", dinfo->cfg.bus, + dinfo->cfg.slot, dinfo->cfg.func); + pci_set_powerstate(dev, PCI_POWERSTATE_D0); + } for (i = 0; i < dinfo->cfg.nummaps; i++) pci_write_config(dev, PCIR_MAPS + i * 4, dinfo->cfg.bar[i], 4); pci_write_config(dev, PCIR_BIOS, dinfo->cfg.bios, 4); @@ -1768,8 +1770,10 @@ pci_cfg_save(device_t dev, struct pci_devinfo *dinfo, int setstate) */ cls = pci_get_class(dev); if (setstate && cls != PCIC_DISPLAY && cls != PCIC_MEMORY) { - pci_set_powerstate(dev, PCI_POWERSTATE_D3); - printf("pci%d:%d:%d: setting power state D3\n", dinfo->cfg.bus, - dinfo->cfg.slot, dinfo->cfg.func); + if (pci_get_powerstate(dev) != PCI_POWERSTATE_D3) { + printf("pci%d:%d:%d: setting power state D3\n", dinfo->cfg.bus, + dinfo->cfg.slot, dinfo->cfg.func); + pci_set_powerstate(dev, PCI_POWERSTATE_D3); + } } } |
