]>
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 | |
15 | extern EFI_GUID gPcdDataBaseSignatureGuid;\r | |
16 | \r | |
17 | //\r | |
18 | // Common definitions\r | |
19 | //\r | |
b6e89910 | 20 | typedef UINT64 SKU_ID;\r |
419db80b BF |
21 | \r |
22 | #define PCD_TYPE_SHIFT 28\r | |
23 | \r | |
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 | |
419db80b BF |
27 | #define PCD_TYPE_STRING (0x1U << PCD_TYPE_SHIFT)\r |
28 | \r | |
d154a4df | 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 | |
45 | #define PCD_DATUM_TYPE_SHIFT2 20\r | |
46 | \r | |
47 | #define PCD_DATUM_TYPE_UINT8_BOOLEAN (0x1U << PCD_DATUM_TYPE_SHIFT2)\r | |
48 | \r | |
49 | #define PCD_DATABASE_OFFSET_MASK (~(PCD_TYPE_ALL_SET | PCD_DATUM_TYPE_ALL_SET | PCD_DATUM_TYPE_UINT8_BOOLEAN))\r | |
50 | \r | |
51 | typedef struct {\r | |
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 | |
55 | } DYNAMICEX_MAPPING;\r | |
56 | \r | |
419db80b BF |
57 | typedef struct {\r |
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 | |
23f3e119 SZ |
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 | |
68 | UINT32 Offset;\r | |
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 | |
76 | UINT32 TokenSpaceCNameIndex; // Offset in String Table in units of UINT8.\r | |
77 | UINT32 PcdCNameIndex; // Offset in String Table in units of UINT8.\r | |
78 | } PCD_NAME_INDEX;\r | |
79 | \r | |
80 | typedef UINT32 TABLE_OFFSET;\r | |
81 | \r | |
82 | typedef struct {\r | |
83 | GUID Signature; // PcdDataBaseGuid.\r | |
84 | UINT32 BuildVersion;\r | |
7c736265 | 85 | UINT32 Length; // Length of DEFAULT SKU PCD DB\r |
b6e89910 | 86 | SKU_ID SystemSkuId; // Current SkuId value.\r |
7c736265 | 87 | UINT32 LengthForAllSkus; // Length of all SKU PCD DB\r |
419db80b BF |
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 | |
7c736265 | 99 | UINT8 Pad[6]; // Pad bytes to satisfy the alignment.\r |
419db80b BF |
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 | |
b6e89910 | 106 | //SKU_ID SkuIdTable[]; // SkuIds system supports.\r |
419db80b BF |
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 | |
23f3e119 | 113 | //STRING_HEAD StringHead[]; // String PCD\r |
419db80b BF |
114 | //PCD_NAME_INDEX PcdNameTable[]; // PCD name index info. It can be accessed by the PcdNameTableOffset.\r |
115 | //VARIABLE_HEAD VariableHead[]; // HII PCD\r | |
23f3e119 | 116 | //UINT8 StringTable[]; // String for String PCD value and HII PCD Variable Name. It can be accessed by StringTableOffset.\r |
419db80b BF |
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 | \r |
122 | } PCD_DATABASE_INIT;\r | |
123 | \r | |
124 | //\r | |
125 | // PEI and DXE Pcd driver use the same PCD database\r | |
126 | //\r | |
127 | typedef PCD_DATABASE_INIT PEI_PCD_DATABASE;\r | |
128 | typedef PCD_DATABASE_INIT DXE_PCD_DATABASE;\r | |
129 | \r | |
130 | \r | |
131 | typedef struct {\r | |
132 | PEI_PCD_DATABASE *PeiDb;\r | |
133 | DXE_PCD_DATABASE *DxeDb;\r | |
134 | } PCD_DATABASE;\r | |
135 | \r | |
fef4cfa7 LG |
136 | typedef struct {\r |
137 | UINT32 Offset:24;\r | |
138 | UINT32 Value:8;\r | |
139 | } PCD_DATA_DELTA;\r | |
140 | \r | |
141 | typedef struct {\r | |
142 | SKU_ID SkuId;\r | |
143 | UINT16 DefaultId;\r | |
144 | UINT8 Reserved[6];\r | |
145 | } PCD_DEFAULT_INFO;\r | |
146 | \r | |
147 | typedef struct {\r | |
148 | //\r | |
149 | // Full size, it must be at 8 byte alignment.\r | |
150 | //\r | |
151 | UINT32 DataSize;\r | |
152 | //\r | |
153 | // HeaderSize includes HeaderSize fields and DefaultInfo arrays\r | |
154 | //\r | |
155 | UINT32 HeaderSize;\r | |
156 | //\r | |
157 | // DefaultInfo arrays those have the same default setting.\r | |
158 | //\r | |
159 | PCD_DEFAULT_INFO DefaultInfo[1];\r | |
160 | //\r | |
161 | // Default data is stored as variable storage or the array of DATA_DELTA.\r | |
162 | //\r | |
163 | } PCD_DEFAULT_DATA;\r | |
164 | \r | |
165 | #define PCD_NV_STORE_DEFAULT_BUFFER_SIGNATURE SIGNATURE_32('N', 'S', 'D', 'B')\r | |
166 | \r | |
167 | typedef struct {\r | |
168 | //\r | |
169 | // PCD_NV_STORE_DEFAULT_BUFFER_SIGNATURE\r | |
170 | //\r | |
171 | UINT32 Signature;\r | |
172 | //\r | |
173 | // Length of the taken default buffer\r | |
174 | //\r | |
175 | UINT32 Length;\r | |
176 | //\r | |
177 | // Length of the total reserved buffer\r | |
178 | //\r | |
179 | UINT32 MaxLength;\r | |
180 | //\r | |
181 | // Reserved for 8 byte alignment\r | |
182 | //\r | |
183 | UINT32 Reserved;\r | |
184 | // one or more PCD_DEFAULT_DATA\r | |
185 | } PCD_NV_STORE_DEFAULT_BUFFER_HEADER;\r | |
186 | \r | |
187 | //\r | |
188 | // NvStoreDefaultValueBuffer layout:\r | |
189 | // +-------------------------------------+\r | |
190 | // | PCD_NV_STORE_DEFAULT_BUFFER_HEADER |\r | |
191 | // +-------------------------------------+\r | |
192 | // | PCD_DEFAULT_DATA (DEFAULT, Standard)|\r | |
193 | // +-------------------------------------+\r | |
194 | // | PCD_DATA_DELTA (DEFAULT, Standard)|\r | |
195 | // +-------------------------------------+\r | |
196 | // | ...... |\r | |
197 | // +-------------------------------------+\r | |
198 | // | PCD_DEFAULT_DATA (SKU A, Standard) |\r | |
199 | // +-------------------------------------+\r | |
200 | // | PCD_DATA_DELTA (SKU A, Standard) |\r | |
201 | // +-------------------------------------+\r | |
202 | // | ...... |\r | |
203 | // +-------------------------------------+\r | |
204 | //\r | |
419db80b | 205 | \r |
7c736265 LG |
206 | #pragma pack(1)\r |
207 | typedef struct {\r | |
208 | SKU_ID SkuId;\r | |
209 | SKU_ID SkuIdCompared;\r | |
210 | UINT32 Length;\r | |
211 | // PCD_DATA_DELTA DeltaData[]\r | |
212 | } PCD_DATABASE_SKU_DELTA;\r | |
213 | \r | |
214 | //\r | |
215 | // PCD database layout:\r | |
216 | // +---------------------------------+\r | |
217 | // | PCD_DATABASE_INIT (DEFAULT SKU) |\r | |
218 | // +---------------------------------+\r | |
219 | // | PCD_DATABASE_SKU_DELTA (SKU A) |\r | |
220 | // +---------------------------------+\r | |
221 | // | PCD_DATABASE_SKU_DELTA (SKU B) |\r | |
222 | // +---------------------------------+\r | |
223 | // | ...... |\r | |
224 | // +---------------------------------+\r | |
225 | //\r | |
226 | #pragma pack()\r | |
227 | \r | |
419db80b | 228 | #endif\r |