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