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