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