/** @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 #include #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__