diff options
| author | Michael Brown | 2009-10-14 03:06:01 +0200 |
|---|---|---|
| committer | Michael Brown | 2009-10-14 03:06:23 +0200 |
| commit | 4175b778c277c87980266c854139b7f93b5564d9 (patch) | |
| tree | e39d89ae8bd0b967273bf122e74030f8f96d8577 /src/include | |
| parent | [job] Report progress of downloader jobs via job_progress() (diff) | |
| download | ipxe-4175b778c277c87980266c854139b7f93b5564d9.tar.gz ipxe-4175b778c277c87980266c854139b7f93b5564d9.tar.xz ipxe-4175b778c277c87980266c854139b7f93b5564d9.zip | |
[pci] Add generic configuration space backup/restore facility
Some devices can only be reset via a mechanism that also resets the
card's PCI core, thus necessitating a backup and restore of all or
part of the PCI configuration space across a reset.
Diffstat (limited to 'src/include')
| -rw-r--r-- | src/include/gpxe/pcibackup.h | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/include/gpxe/pcibackup.h b/src/include/gpxe/pcibackup.h new file mode 100644 index 000000000..3d295c0fc --- /dev/null +++ b/src/include/gpxe/pcibackup.h @@ -0,0 +1,33 @@ +#ifndef _GPXE_PCIBACKUP_H +#define _GPXE_PCIBACKUP_H + +/** @file + * + * PCI configuration space backup and restoration + * + */ + +FILE_LICENCE ( GPL2_OR_LATER ); + +#include <stdint.h> + +/** A PCI configuration space backup */ +struct pci_config_backup { + uint32_t dwords[64]; +}; + +/** PCI configuration space backup exclusion list end marker */ +#define PCI_CONFIG_BACKUP_EXCLUDE_END 0xff + +/** Define a PCI configuration space backup exclusion list */ +#define PCI_CONFIG_BACKUP_EXCLUDE(...) \ + { __VA_ARGS__, PCI_CONFIG_BACKUP_EXCLUDE_END } + +extern void pci_backup ( struct pci_device *pci, + struct pci_config_backup *backup, + const uint8_t *exclude ); +extern void pci_restore ( struct pci_device *pci, + struct pci_config_backup *backup, + const uint8_t *exclude ); + +#endif /* _GPXE_PCIBACKUP_H */ |
