]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/Library/HardwareInfoLib/HardwareInfoTypesLib.h
OvmfPkg/Library: Create base HardwareInfoLib for PCI Host Bridges
[mirror_edk2.git] / OvmfPkg / Library / HardwareInfoLib / HardwareInfoTypesLib.h
diff --git a/OvmfPkg/Library/HardwareInfoLib/HardwareInfoTypesLib.h b/OvmfPkg/Library/HardwareInfoLib/HardwareInfoTypesLib.h
new file mode 100644 (file)
index 0000000..8508e42
--- /dev/null
@@ -0,0 +1,59 @@
+/**@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