]>
Commit | Line | Data |
---|---|---|
6872900e SM |
1 | /** @file\r |
2 | \r | |
0d23c447 | 3 | Copyright (c) 2017 - 2022, Arm Limited. All rights reserved.\r |
6872900e | 4 | \r |
9cd9bdc6 | 5 | SPDX-License-Identifier: BSD-2-Clause-Patent\r |
6872900e SM |
6 | \r |
7 | @par Glossary:\r | |
8 | - Cm or CM - Configuration Manager\r | |
9 | - Obj or OBJ - Object\r | |
10 | - Std or STD - Standard\r | |
11 | **/\r | |
12 | \r | |
13 | #ifndef STANDARD_NAMESPACE_OBJECTS_H_\r | |
14 | #define STANDARD_NAMESPACE_OBJECTS_H_\r | |
15 | \r | |
16 | #include <AcpiTableGenerator.h>\r | |
17 | #include <SmbiosTableGenerator.h>\r | |
18 | \r | |
19 | #pragma pack(1)\r | |
20 | \r | |
21 | /** A macro defining a reserved zero/NULL token value that\r | |
22 | does not identify any object.\r | |
23 | */\r | |
24 | #define CM_NULL_TOKEN 0\r | |
25 | \r | |
26 | /** A reference token that the Configuration Manager can use\r | |
27 | to identify a Configuration Manager object.\r | |
28 | \r | |
29 | This can be used to differentiate between instances of\r | |
30 | objects of the same types. The identification scheme is\r | |
31 | implementation defined and is defined by the Configuration\r | |
32 | Manager.\r | |
33 | \r | |
34 | Typically the token is used to identify a specific instance\r | |
35 | from a set of objects in a call to the GetObject()/SetObject(),\r | |
36 | implemented by the Configuration Manager protocol.\r | |
37 | \r | |
38 | Note: The token value 0 is reserved for a NULL token and does\r | |
39 | not identify any object.\r | |
40 | **/\r | |
731c67e1 | 41 | typedef UINTN CM_OBJECT_TOKEN;\r |
6872900e SM |
42 | \r |
43 | /** The ESTD_OBJECT_ID enum describes the Object IDs\r | |
44 | in the Standard Namespace.\r | |
45 | */\r | |
46 | typedef enum StdObjectID {\r | |
47 | EStdObjCfgMgrInfo = 0x00000000, ///< 0 - Configuration Manager Info\r | |
48 | EStdObjAcpiTableList, ///< 1 - ACPI table Info List\r | |
49 | EStdObjSmbiosTableList, ///< 2 - SMBIOS table Info List\r | |
50 | EStdObjMax\r | |
51 | } ESTD_OBJECT_ID;\r | |
52 | \r | |
53 | /** A structure that describes the Configuration Manager Information.\r | |
54 | */\r | |
55 | typedef struct CmStdObjConfigurationManagerInfo {\r | |
56 | /// The Configuration Manager Revision.\r | |
731c67e1 | 57 | UINT32 Revision;\r |
6872900e SM |
58 | \r |
59 | /** The OEM ID. This information is used to\r | |
60 | populate the ACPI table header information.\r | |
61 | */\r | |
731c67e1 | 62 | UINT8 OemId[6];\r |
6872900e SM |
63 | } CM_STD_OBJ_CONFIGURATION_MANAGER_INFO;\r |
64 | \r | |
65 | /** A structure used to describe the ACPI table generators to be invoked.\r | |
66 | \r | |
67 | The AcpiTableData member of this structure may be used to directly provide\r | |
68 | the binary ACPI table data which is required by the following standard\r | |
69 | generators:\r | |
70 | - RAW\r | |
71 | - DSDT\r | |
72 | - SSDT\r | |
73 | \r | |
74 | Providing the ACPI table data is optional and depends on the generator\r | |
75 | that is being invoked. If unused, set AcpiTableData to NULL.\r | |
76 | */\r | |
77 | typedef struct CmAStdObjAcpiTableInfo {\r | |
78 | /// The signature of the ACPI Table to be installed\r | |
79 | UINT32 AcpiTableSignature;\r | |
80 | \r | |
81 | /// The ACPI table revision\r | |
90e52483 | 82 | UINT8 AcpiTableRevision;\r |
6872900e SM |
83 | \r |
84 | /// The ACPI Table Generator ID\r | |
85 | ACPI_TABLE_GENERATOR_ID TableGeneratorId;\r | |
86 | \r | |
87 | /// Optional pointer to the ACPI table data\r | |
731c67e1 | 88 | EFI_ACPI_DESCRIPTION_HEADER *AcpiTableData;\r |
6872900e | 89 | \r |
e12bdeb1 SM |
90 | /// An OEM-supplied string that the OEM uses to identify the particular\r |
91 | /// data table. This field is particularly useful when defining a definition\r | |
92 | /// block to distinguish definition block functions. The OEM assigns each\r | |
93 | /// dissimilar table a new OEM Table ID.\r | |
94 | /// This field could be constructed using the SIGNATURE_64() macro.\r | |
95 | /// e.g. SIGNATURE_64 ('A','R','M','H','G','T','D','T')\r | |
96 | /// Note: If this field is not populated (has value of Zero), then the\r | |
97 | /// Generators shall populate this information using part of the\r | |
98 | /// CM_STD_OBJ_CONFIGURATION_MANAGER_INFO.OemId field and the\r | |
99 | /// ACPI table signature.\r | |
731c67e1 | 100 | UINT64 OemTableId;\r |
e12bdeb1 SM |
101 | \r |
102 | /// An OEM-supplied revision number. Larger numbers are assumed to be\r | |
103 | /// newer revisions.\r | |
104 | /// Note: If this field is not populated (has value of Zero), then the\r | |
105 | /// Generators shall populate this information using the revision of the\r | |
106 | /// Configuration Manager (CM_STD_OBJ_CONFIGURATION_MANAGER_INFO.Revision).\r | |
731c67e1 | 107 | UINT32 OemRevision;\r |
0d23c447 SM |
108 | \r |
109 | /// The minor revision of an ACPI table if required by the table.\r | |
110 | /// Note: If this field is not populated (has value of Zero), then the\r | |
111 | /// Generators shall populate this information based on the latest minor\r | |
112 | /// revision of the table that is supported by the generator.\r | |
113 | /// e.g. This field can be used to specify the minor revision to be set\r | |
114 | /// for the FADT table.\r | |
115 | UINT8 MinorRevision;\r | |
6872900e SM |
116 | } CM_STD_OBJ_ACPI_TABLE_INFO;\r |
117 | \r | |
118 | /** A structure used to describe the SMBIOS table generators to be invoked.\r | |
119 | \r | |
120 | The SmbiosTableData member of this structure is used to provide\r | |
121 | the SMBIOS table data which is required by the following standard\r | |
122 | generator(s):\r | |
123 | - RAW\r | |
124 | \r | |
125 | Providing the SMBIOS table data is optional and depends on the\r | |
126 | generator that is being invoked. If unused, set the SmbiosTableData\r | |
127 | to NULL.\r | |
128 | */\r | |
129 | typedef struct CmStdObjSmbiosTableInfo {\r | |
130 | /// The SMBIOS Table Generator ID\r | |
731c67e1 | 131 | SMBIOS_TABLE_GENERATOR_ID TableGeneratorId;\r |
6872900e SM |
132 | \r |
133 | /// Optional pointer to the SMBIOS table data\r | |
731c67e1 | 134 | SMBIOS_STRUCTURE *SmbiosTableData;\r |
6872900e SM |
135 | } CM_STD_OBJ_SMBIOS_TABLE_INFO;\r |
136 | \r | |
137 | #pragma pack()\r | |
138 | \r | |
139 | #endif // STANDARD_NAMESPACE_OBJECTS_H_\r |