summaryrefslogtreecommitdiffstats
path: root/sys/dev/pci/pci.c
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2012-03-01 20:20:55 +0000
committerjhb <jhb@FreeBSD.org>2012-03-01 20:20:55 +0000
commit87af6ebd2e92f46676ab96bbb6db52e01b9a85ce (patch)
tree58f45f74c955b124a7f04c4b6c9387dc9a70b6bc /sys/dev/pci/pci.c
parent0b4e8b5716a2cec48f18114a48d0ac11a0865ea0 (diff)
downloadFreeBSD-src-87af6ebd2e92f46676ab96bbb6db52e01b9a85ce.zip
FreeBSD-src-87af6ebd2e92f46676ab96bbb6db52e01b9a85ce.tar.gz
Add pci_save_state() and pci_restore_state() wrappers around
pci_cfg_save() and pci_cfg_restore() for device drivers to use when saving and restoring state (e.g. to handle device-specific resets). Reviewed by: imp MFC after: 2 weeks
Diffstat (limited to 'sys/dev/pci/pci.c')
-rw-r--r--sys/dev/pci/pci.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c
index 584c9c3..e62babb 100644
--- a/sys/dev/pci/pci.c
+++ b/sys/dev/pci/pci.c
@@ -4426,3 +4426,22 @@ pci_cfg_save(device_t dev, struct pci_devinfo *dinfo, int setstate)
if (pci_get_powerstate(dev) != PCI_POWERSTATE_D3)
pci_set_powerstate(dev, PCI_POWERSTATE_D3);
}
+
+/* Wrapper APIs suitable for device driver use. */
+void
+pci_save_state(device_t dev)
+{
+ struct pci_devinfo *dinfo;
+
+ dinfo = device_get_ivars(dev);
+ pci_cfg_save(dev, dinfo, 0);
+}
+
+void
+pci_restore_state(device_t dev)
+{
+ struct pci_devinfo *dinfo;
+
+ dinfo = device_get_ivars(dev);
+ pci_cfg_restore(dev, dinfo);
+}
OpenPOWER on IntegriCloud