| /** @file | |
| Plug a PciSegmentLib backend into PciCapLib, for config space access -- | |
| internal macro and type definitions. | |
| Copyright (C) 2018, Red Hat, Inc. | |
| SPDX-License-Identifier: BSD-2-Clause-Patent | |
| **/ | |
| #ifndef __BASE_PCI_CAP_PCI_SEGMENT_LIB_H__ | |
| #define __BASE_PCI_CAP_PCI_SEGMENT_LIB_H__ | |
| #include <Library/DebugLib.h> | |
| #include <Library/PciCapPciSegmentLib.h> | |
| #define SEGMENT_DEV_SIG SIGNATURE_64 ('P', 'C', 'P', 'S', 'G', 'M', 'N', 'T') | |
| typedef struct { | |
| // | |
| // Signature identifying the derived class. | |
| // | |
| UINT64 Signature; | |
| // | |
| // Members added by the derived class, specific to the use of PciSegmentLib. | |
| // | |
| PCI_CAP_DOMAIN MaxDomain; | |
| UINT16 SegmentNr; | |
| UINT8 BusNr; | |
| UINT8 DeviceNr; | |
| UINT8 FunctionNr; | |
| // | |
| // Base class. | |
| // | |
| PCI_CAP_DEV BaseDevice; | |
| } SEGMENT_DEV; | |
| #define SEGMENT_DEV_FROM_PCI_CAP_DEV(PciDevice) \ | |
| CR (PciDevice, SEGMENT_DEV, BaseDevice, SEGMENT_DEV_SIG) | |
| #endif // __BASE_PCI_CAP_PCI_SEGMENT_LIB_H__ |