/**@file Hardware info types' definitions. General hardware info types to parse the binary data Copyright 2021 - 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef __HARDWARE_INFO_TYPES_LIB_H__ #define __HARDWARE_INFO_TYPES_LIB_H__ // Specific hardware types: #include "HardwareInfoPciHostBridgeLib.h" // // Hardware info types enumeration listing the supported // types which have an associated type definition // typedef enum { HardwareInfoTypeUndefined = 0, HardwareInfoTypeHostBridge = 1, HardwareInfoTypeMax } HARDWARE_INFO_TYPE; // // Header format preceding and describing an associated hardware // info element // #pragma pack(1) typedef struct { union { UINT64 Uint64; HARDWARE_INFO_TYPE Value; } Type; UINT64 Size; } HARDWARE_INFO_HEADER; #pragma pack() // // Generic data structure to access any supported hardware type // resource definition // #pragma pack(1) typedef struct { LIST_ENTRY Link; HARDWARE_INFO_HEADER Header; union { UINT8 *Raw; HOST_BRIDGE_INFO *PciHostBridge; } Data; } HARDWARE_INFO; #pragma pack() #define HARDWARE_INFO_FROM_LINK(a) \ BASE_CR (a, HARDWARE_INFO, Link) #endif // __HARDWARE_INFO_TYPES_LIB_H__