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