]>
Commit | Line | Data |
---|---|---|
6872900e SM |
1 | /** @file\r |
2 | \r | |
3 | Copyright (c) 2017 - 2019, ARM Limited. All rights reserved.\r | |
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 | |
41 | typedef UINTN CM_OBJECT_TOKEN;\r | |
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 | |
57 | UINT32 Revision;\r | |
58 | \r | |
59 | /** The OEM ID. This information is used to\r | |
60 | populate the ACPI table header information.\r | |
61 | */\r | |
62 | UINT8 OemId[6];\r | |
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 | |
82 | UINT32 AcpiTableRevision;\r | |
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 | |
88 | EFI_ACPI_DESCRIPTION_HEADER * AcpiTableData;\r | |
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 | |
100 | UINT64 OemTableId;\r | |
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 | |
107 | UINT32 OemRevision;\r | |
6872900e SM |
108 | } CM_STD_OBJ_ACPI_TABLE_INFO;\r |
109 | \r | |
110 | /** A structure used to describe the SMBIOS table generators to be invoked.\r | |
111 | \r | |
112 | The SmbiosTableData member of this structure is used to provide\r | |
113 | the SMBIOS table data which is required by the following standard\r | |
114 | generator(s):\r | |
115 | - RAW\r | |
116 | \r | |
117 | Providing the SMBIOS table data is optional and depends on the\r | |
118 | generator that is being invoked. If unused, set the SmbiosTableData\r | |
119 | to NULL.\r | |
120 | */\r | |
121 | typedef struct CmStdObjSmbiosTableInfo {\r | |
122 | /// The SMBIOS Table Generator ID\r | |
123 | SMBIOS_TABLE_GENERATOR_ID TableGeneratorId;\r | |
124 | \r | |
125 | /// Optional pointer to the SMBIOS table data\r | |
126 | SMBIOS_STRUCTURE * SmbiosTableData;\r | |
127 | } CM_STD_OBJ_SMBIOS_TABLE_INFO;\r | |
128 | \r | |
129 | #pragma pack()\r | |
130 | \r | |
131 | #endif // STANDARD_NAMESPACE_OBJECTS_H_\r |