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 | UINT8 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_
|
---|