[pci] Add generic configuration space backup/restore facility
[people/cooldavid/gpxe.git] / src / include / gpxe / pcibackup.h
1 #ifndef _GPXE_PCIBACKUP_H
2 #define _GPXE_PCIBACKUP_H
3
4 /** @file
5  *
6  * PCI configuration space backup and restoration
7  *
8  */
9
10 FILE_LICENCE ( GPL2_OR_LATER );
11
12 #include <stdint.h>
13
14 /** A PCI configuration space backup */
15 struct pci_config_backup {
16         uint32_t dwords[64];
17 };
18
19 /** PCI configuration space backup exclusion list end marker */
20 #define PCI_CONFIG_BACKUP_EXCLUDE_END 0xff
21
22 /** Define a PCI configuration space backup exclusion list */
23 #define PCI_CONFIG_BACKUP_EXCLUDE(...) \
24         { __VA_ARGS__, PCI_CONFIG_BACKUP_EXCLUDE_END }
25
26 extern void pci_backup ( struct pci_device *pci,
27                          struct pci_config_backup *backup,
28                          const uint8_t *exclude );
29 extern void pci_restore ( struct pci_device *pci,
30                           struct pci_config_backup *backup,
31                           const uint8_t *exclude );
32
33 #endif /* _GPXE_PCIBACKUP_H */