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