blob: 5d587ceca3e47cc97b1db57156bbec5ebee4d325 [file] [log] [blame]
/** @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__