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