]> git.proxmox.com Git - mirror_edk2.git/blame - OvmfPkg/Library/HardwareInfoLib/HardwareInfoTypesLib.h
OvmfPkg/Library: Create base HardwareInfoLib for PCI Host Bridges
[mirror_edk2.git] / OvmfPkg / Library / HardwareInfoLib / HardwareInfoTypesLib.h
CommitLineData
6c9f218b
NOL
1/**@file\r
2 Hardware info types' definitions.\r
3 General hardware info types to parse the binary data\r
4\r
5 Copyright 2021 - 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\r
6 SPDX-License-Identifier: BSD-2-Clause-Patent\r
7\r
8**/\r
9\r
10#ifndef __HARDWARE_INFO_TYPES_LIB_H__\r
11#define __HARDWARE_INFO_TYPES_LIB_H__\r
12\r
13// Specific hardware types:\r
14#include "HardwareInfoPciHostBridgeLib.h"\r
15\r
16//\r
17// Hardware info types enumeration listing the supported\r
18// types which have an associated type definition\r
19//\r
20typedef enum {\r
21 HardwareInfoTypeUndefined = 0,\r
22 HardwareInfoTypeHostBridge = 1,\r
23\r
24 HardwareInfoTypeMax\r
25} HARDWARE_INFO_TYPE;\r
26\r
27//\r
28// Header format preceding and describing an associated hardware\r
29// info element\r
30//\r
31#pragma pack(1)\r
32typedef struct {\r
33 union {\r
34 UINT64 Uint64;\r
35 HARDWARE_INFO_TYPE Value;\r
36 } Type;\r
37 UINT64 Size;\r
38} HARDWARE_INFO_HEADER;\r
39#pragma pack()\r
40\r
41//\r
42// Generic data structure to access any supported hardware type\r
43// resource definition\r
44//\r
45#pragma pack(1)\r
46typedef struct {\r
47 LIST_ENTRY Link;\r
48 HARDWARE_INFO_HEADER Header;\r
49 union {\r
50 UINT8 *Raw;\r
51 HOST_BRIDGE_INFO *PciHostBridge;\r
52 } Data;\r
53} HARDWARE_INFO;\r
54#pragma pack()\r
55\r
56#define HARDWARE_INFO_FROM_LINK(a) \\r
57 BASE_CR (a, HARDWARE_INFO, Link)\r
58\r
59#endif // __HARDWARE_INFO_TYPES_LIB_H__\r