]>
Commit | Line | Data |
---|---|---|
419db80b BF |
1 | /** @file\r |
2 | Guid for Pcd DataBase Signature.\r | |
3 | \r | |
e8d2a980 | 4 | Copyright (c) 2012 - 2018, Intel Corporation. All rights reserved.<BR>\r |
9d510e61 | 5 | SPDX-License-Identifier: BSD-2-Clause-Patent\r |
419db80b BF |
6 | \r |
7 | **/\r | |
8 | \r | |
9 | #ifndef _PCD_DATABASE_SIGNATURE_GUID_H_\r | |
10 | #define _PCD_DATABASE_SIGNATURE_GUID_H_\r | |
11 | \r | |
12 | #define PCD_DATA_BASE_SIGNATURE_GUID \\r | |
13 | { 0x3c7d193c, 0x682c, 0x4c14, { 0xa6, 0x8f, 0x55, 0x2d, 0xea, 0x4f, 0x43, 0x7e } }\r | |
14 | \r | |
1436aea4 | 15 | extern EFI_GUID gPcdDataBaseSignatureGuid;\r |
419db80b BF |
16 | \r |
17 | //\r | |
18 | // Common definitions\r | |
19 | //\r | |
b6e89910 | 20 | typedef UINT64 SKU_ID;\r |
419db80b | 21 | \r |
1436aea4 | 22 | #define PCD_TYPE_SHIFT 28\r |
419db80b | 23 | \r |
1436aea4 MK |
24 | #define PCD_TYPE_DATA (0x0U << PCD_TYPE_SHIFT)\r |
25 | #define PCD_TYPE_HII (0x8U << PCD_TYPE_SHIFT)\r | |
26 | #define PCD_TYPE_VPD (0x4U << PCD_TYPE_SHIFT)\r | |
27 | #define PCD_TYPE_STRING (0x1U << PCD_TYPE_SHIFT)\r | |
419db80b | 28 | \r |
1436aea4 | 29 | #define PCD_TYPE_ALL_SET (PCD_TYPE_DATA | PCD_TYPE_HII | PCD_TYPE_VPD | PCD_TYPE_STRING)\r |
419db80b BF |
30 | \r |
31 | #define PCD_DATUM_TYPE_SHIFT 24\r | |
32 | \r | |
33 | #define PCD_DATUM_TYPE_POINTER (0x0U << PCD_DATUM_TYPE_SHIFT)\r | |
34 | #define PCD_DATUM_TYPE_UINT8 (0x1U << PCD_DATUM_TYPE_SHIFT)\r | |
35 | #define PCD_DATUM_TYPE_UINT16 (0x2U << PCD_DATUM_TYPE_SHIFT)\r | |
36 | #define PCD_DATUM_TYPE_UINT32 (0x4U << PCD_DATUM_TYPE_SHIFT)\r | |
37 | #define PCD_DATUM_TYPE_UINT64 (0x8U << PCD_DATUM_TYPE_SHIFT)\r | |
38 | \r | |
39 | #define PCD_DATUM_TYPE_ALL_SET (PCD_DATUM_TYPE_POINTER | \\r | |
40 | PCD_DATUM_TYPE_UINT8 | \\r | |
41 | PCD_DATUM_TYPE_UINT16 | \\r | |
42 | PCD_DATUM_TYPE_UINT32 | \\r | |
43 | PCD_DATUM_TYPE_UINT64)\r | |
44 | \r | |
1436aea4 | 45 | #define PCD_DATUM_TYPE_SHIFT2 20\r |
419db80b | 46 | \r |
1436aea4 | 47 | #define PCD_DATUM_TYPE_UINT8_BOOLEAN (0x1U << PCD_DATUM_TYPE_SHIFT2)\r |
419db80b | 48 | \r |
1436aea4 | 49 | #define PCD_DATABASE_OFFSET_MASK (~(PCD_TYPE_ALL_SET | PCD_DATUM_TYPE_ALL_SET | PCD_DATUM_TYPE_UINT8_BOOLEAN))\r |
419db80b BF |
50 | \r |
51 | typedef struct {\r | |
1436aea4 MK |
52 | UINT32 ExTokenNumber;\r |
53 | UINT16 TokenNumber; // Token Number for Dynamic-Ex PCD.\r | |
54 | UINT16 ExGuidIndex; // Index of GuidTable in units of GUID.\r | |
419db80b BF |
55 | } DYNAMICEX_MAPPING;\r |
56 | \r | |
419db80b | 57 | typedef struct {\r |
1436aea4 MK |
58 | UINT32 StringIndex; // Offset in String Table in units of UINT8.\r |
59 | UINT32 DefaultValueOffset; // Offset of the Default Value.\r | |
60 | UINT16 GuidTableIndex; // Offset in Guid Table in units of GUID.\r | |
61 | UINT16 Offset; // Offset in Variable.\r | |
62 | UINT32 Attributes; // Variable attributes.\r | |
63 | UINT16 Property; // Variable property.\r | |
64 | UINT16 Reserved;\r | |
419db80b BF |
65 | } VARIABLE_HEAD;\r |
66 | \r | |
67 | typedef struct {\r | |
1436aea4 | 68 | UINT32 Offset;\r |
419db80b BF |
69 | } VPD_HEAD;\r |
70 | \r | |
71 | typedef UINT32 STRING_HEAD;\r | |
72 | \r | |
73 | typedef UINT16 SIZE_INFO;\r | |
74 | \r | |
75 | typedef struct {\r | |
1436aea4 MK |
76 | UINT32 TokenSpaceCNameIndex; // Offset in String Table in units of UINT8.\r |
77 | UINT32 PcdCNameIndex; // Offset in String Table in units of UINT8.\r | |
419db80b BF |
78 | } PCD_NAME_INDEX;\r |
79 | \r | |
80 | typedef UINT32 TABLE_OFFSET;\r | |
81 | \r | |
82 | typedef struct {\r | |
1436aea4 MK |
83 | GUID Signature; // PcdDataBaseGuid.\r |
84 | UINT32 BuildVersion;\r | |
85 | UINT32 Length; // Length of DEFAULT SKU PCD DB\r | |
86 | SKU_ID SystemSkuId; // Current SkuId value.\r | |
87 | UINT32 LengthForAllSkus; // Length of all SKU PCD DB\r | |
88 | UINT32 UninitDataBaseSize; // Total size for PCD those default value with 0.\r | |
89 | TABLE_OFFSET LocalTokenNumberTableOffset;\r | |
90 | TABLE_OFFSET ExMapTableOffset;\r | |
91 | TABLE_OFFSET GuidTableOffset;\r | |
92 | TABLE_OFFSET StringTableOffset;\r | |
93 | TABLE_OFFSET SizeTableOffset;\r | |
94 | TABLE_OFFSET SkuIdTableOffset;\r | |
95 | TABLE_OFFSET PcdNameTableOffset;\r | |
96 | UINT16 LocalTokenCount; // LOCAL_TOKEN_NUMBER for all.\r | |
97 | UINT16 ExTokenCount; // EX_TOKEN_NUMBER for DynamicEx.\r | |
98 | UINT16 GuidTableCount; // The Number of Guid in GuidTable.\r | |
99 | UINT8 Pad[6]; // Pad bytes to satisfy the alignment.\r | |
100 | \r | |
101 | //\r | |
102 | // Default initialized external PCD database binary structure\r | |
103 | //\r | |
104 | // Padding is needed to keep necessary alignment\r | |
105 | //\r | |
106 | // SKU_ID SkuIdTable[]; // SkuIds system supports.\r | |
107 | // UINT64 ValueUint64[];\r | |
108 | // UINT32 ValueUint32[];\r | |
109 | // VPD_HEAD VpdHead[]; // VPD Offset\r | |
110 | // DYNAMICEX_MAPPING ExMapTable[]; // DynamicEx PCD mapped to LocalIndex in LocalTokenNumberTable. It can be accessed by the ExMapTableOffset.\r | |
111 | // UINT32 LocalTokenNumberTable[]; // Offset | DataType | PCD Type. It can be accessed by LocalTokenNumberTableOffset.\r | |
112 | // GUID GuidTable[]; // GUID for DynamicEx and HII PCD variable Guid. It can be accessed by the GuidTableOffset.\r | |
113 | // STRING_HEAD StringHead[]; // String PCD\r | |
114 | // PCD_NAME_INDEX PcdNameTable[]; // PCD name index info. It can be accessed by the PcdNameTableOffset.\r | |
115 | // VARIABLE_HEAD VariableHead[]; // HII PCD\r | |
116 | // UINT8 StringTable[]; // String for String PCD value and HII PCD Variable Name. It can be accessed by StringTableOffset.\r | |
117 | // SIZE_INFO SizeTable[]; // MaxSize and CurSize for String PCD. It can be accessed by SizeTableOffset.\r | |
118 | // UINT16 ValueUint16[];\r | |
119 | // UINT8 ValueUint8[];\r | |
120 | // BOOLEAN ValueBoolean[];\r | |
419db80b BF |
121 | } PCD_DATABASE_INIT;\r |
122 | \r | |
123 | //\r | |
124 | // PEI and DXE Pcd driver use the same PCD database\r | |
125 | //\r | |
1436aea4 MK |
126 | typedef PCD_DATABASE_INIT PEI_PCD_DATABASE;\r |
127 | typedef PCD_DATABASE_INIT DXE_PCD_DATABASE;\r | |
419db80b BF |
128 | \r |
129 | typedef struct {\r | |
1436aea4 MK |
130 | PEI_PCD_DATABASE *PeiDb;\r |
131 | DXE_PCD_DATABASE *DxeDb;\r | |
419db80b BF |
132 | } PCD_DATABASE;\r |
133 | \r | |
fef4cfa7 | 134 | typedef struct {\r |
1436aea4 MK |
135 | UINT32 Offset : 24;\r |
136 | UINT32 Value : 8;\r | |
fef4cfa7 LG |
137 | } PCD_DATA_DELTA;\r |
138 | \r | |
139 | typedef struct {\r | |
1436aea4 MK |
140 | SKU_ID SkuId;\r |
141 | UINT16 DefaultId;\r | |
142 | UINT8 Reserved[6];\r | |
fef4cfa7 LG |
143 | } PCD_DEFAULT_INFO;\r |
144 | \r | |
145 | typedef struct {\r | |
146 | //\r | |
147 | // Full size, it must be at 8 byte alignment.\r | |
148 | //\r | |
1436aea4 | 149 | UINT32 DataSize;\r |
fef4cfa7 LG |
150 | //\r |
151 | // HeaderSize includes HeaderSize fields and DefaultInfo arrays\r | |
152 | //\r | |
1436aea4 | 153 | UINT32 HeaderSize;\r |
fef4cfa7 LG |
154 | //\r |
155 | // DefaultInfo arrays those have the same default setting.\r | |
156 | //\r | |
1436aea4 | 157 | PCD_DEFAULT_INFO DefaultInfo[1];\r |
fef4cfa7 LG |
158 | //\r |
159 | // Default data is stored as variable storage or the array of DATA_DELTA.\r | |
160 | //\r | |
161 | } PCD_DEFAULT_DATA;\r | |
162 | \r | |
1436aea4 | 163 | #define PCD_NV_STORE_DEFAULT_BUFFER_SIGNATURE SIGNATURE_32('N', 'S', 'D', 'B')\r |
fef4cfa7 LG |
164 | \r |
165 | typedef struct {\r | |
166 | //\r | |
167 | // PCD_NV_STORE_DEFAULT_BUFFER_SIGNATURE\r | |
168 | //\r | |
169 | UINT32 Signature;\r | |
170 | //\r | |
171 | // Length of the taken default buffer\r | |
172 | //\r | |
173 | UINT32 Length;\r | |
174 | //\r | |
175 | // Length of the total reserved buffer\r | |
176 | //\r | |
177 | UINT32 MaxLength;\r | |
178 | //\r | |
179 | // Reserved for 8 byte alignment\r | |
180 | //\r | |
181 | UINT32 Reserved;\r | |
182 | // one or more PCD_DEFAULT_DATA\r | |
183 | } PCD_NV_STORE_DEFAULT_BUFFER_HEADER;\r | |
184 | \r | |
185 | //\r | |
186 | // NvStoreDefaultValueBuffer layout:\r | |
187 | // +-------------------------------------+\r | |
188 | // | PCD_NV_STORE_DEFAULT_BUFFER_HEADER |\r | |
189 | // +-------------------------------------+\r | |
190 | // | PCD_DEFAULT_DATA (DEFAULT, Standard)|\r | |
191 | // +-------------------------------------+\r | |
192 | // | PCD_DATA_DELTA (DEFAULT, Standard)|\r | |
193 | // +-------------------------------------+\r | |
194 | // | ...... |\r | |
195 | // +-------------------------------------+\r | |
196 | // | PCD_DEFAULT_DATA (SKU A, Standard) |\r | |
197 | // +-------------------------------------+\r | |
198 | // | PCD_DATA_DELTA (SKU A, Standard) |\r | |
199 | // +-------------------------------------+\r | |
200 | // | ...... |\r | |
201 | // +-------------------------------------+\r | |
202 | //\r | |
419db80b | 203 | \r |
7c736265 LG |
204 | #pragma pack(1)\r |
205 | typedef struct {\r | |
206 | SKU_ID SkuId;\r | |
207 | SKU_ID SkuIdCompared;\r | |
208 | UINT32 Length;\r | |
209 | // PCD_DATA_DELTA DeltaData[]\r | |
210 | } PCD_DATABASE_SKU_DELTA;\r | |
211 | \r | |
212 | //\r | |
213 | // PCD database layout:\r | |
214 | // +---------------------------------+\r | |
215 | // | PCD_DATABASE_INIT (DEFAULT SKU) |\r | |
216 | // +---------------------------------+\r | |
217 | // | PCD_DATABASE_SKU_DELTA (SKU A) |\r | |
218 | // +---------------------------------+\r | |
219 | // | PCD_DATABASE_SKU_DELTA (SKU B) |\r | |
220 | // +---------------------------------+\r | |
221 | // | ...... |\r | |
222 | // +---------------------------------+\r | |
223 | //\r | |
224 | #pragma pack()\r | |
225 | \r | |
419db80b | 226 | #endif\r |