]> git.proxmox.com Git - mirror_edk2.git/blame - EdkModulePkg/Universal/PCD/Pei/Pcd.c
Initial import.
[mirror_edk2.git] / EdkModulePkg / Universal / PCD / Pei / Pcd.c
CommitLineData
878ddf1f 1/** @file\r
2PCD PEIM\r
3\r
4Copyright (c) 2006, Intel Corporation \r
5All rights reserved. This program and the accompanying materials \r
6are licensed and made available under the terms and conditions of the BSD License \r
7which accompanies this distribution. The full text of the license may be found at \r
8http://opensource.org/licenses/bsd-license.php \r
9 \r
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
12\r
13\r
14Module Name: Pcd.c\r
15\r
16**/\r
17\r
18#include "../Common/PcdCommon.h"\r
19#include "Service.h"\r
20\r
21\r
22PCD_PPI mPcdPpiInstance = {\r
23 PeiPcdSetSku,\r
24\r
25 PeiPcdGet8,\r
26 PeiPcdGet16, \r
27 PeiPcdGet32, \r
28 PeiPcdGet64, \r
29 PeiPcdGetPtr, \r
30 PeiPcdGetBool, \r
31 PeiPcdGetSize,\r
32\r
33 PeiPcdGet8Ex,\r
34 PeiPcdGet16Ex, \r
35 PeiPcdGet32Ex, \r
36 PeiPcdGet64Ex, \r
37 PeiPcdGetPtrEx, \r
38 PeiPcdGetBoolEx, \r
39 PeiPcdGetSizeEx,\r
40 \r
41 PeiPcdSet8,\r
42 PeiPcdSet16, \r
43 PeiPcdSet32, \r
44 PeiPcdSet64, \r
45 PeiPcdSetPtr, \r
46 PeiPcdSetBool, \r
47\r
48 PeiPcdSet8Ex,\r
49 PeiPcdSet16Ex, \r
50 PeiPcdSet32Ex, \r
51 PeiPcdSet64Ex, \r
52 PeiPcdSetPtrEx, \r
53 PeiPcdSetBoolEx,\r
54\r
55 PcdRegisterCallBackOnSet,\r
56 PcdUnRegisterCallBackOnSet,\r
57 PeiPcdGetNextToken\r
58};\r
59\r
60\r
61\r
62STATIC EFI_PEI_PPI_DESCRIPTOR mPpiPCD = {\r
63 (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),\r
64 &gPcdPpiGuid,\r
65 &mPcdPpiInstance\r
66};\r
67\r
68\r
69\r
70EFI_STATUS\r
71EFIAPI\r
72PcdPeimInit (\r
73 IN EFI_FFS_FILE_HEADER *FfsHeader,\r
74 IN EFI_PEI_SERVICES **PeiServices\r
75 )\r
76{\r
77 EFI_STATUS Status;\r
78 UINT8 *PcdImage;\r
79\r
80 PcdImage = (UINT8 *) LocatePcdImage ();\r
81\r
82 BuildPcdDatabase (PcdImage);\r
83\r
84 Status = PeiCoreInstallPpi (&mPpiPCD);\r
85\r
86 ASSERT_EFI_ERROR (Status);\r
87 \r
88 return EFI_SUCCESS;\r
89}\r
90\r
91\r
92\r
93EFI_STATUS\r
94EFIAPI\r
95PeiPcdSetSku (\r
96 IN UINTN SkuId\r
97 )\r
98{\r
99 PCD_DATABASE *Database;\r
100 EFI_HOB_GUID_TYPE *GuidHob;\r
101\r
102 GuidHob = GetFirstGuidHob (&gPcdDataBaseHobGuid);\r
103 ASSERT (GuidHob != NULL);\r
104 \r
105 Database = (PCD_DATABASE *) GET_GUID_HOB_DATA (GuidHob);\r
106\r
107 Database->Info.SkuId = SkuId;\r
108\r
109 return SkuId;\r
110}\r
111\r
112\r
113\r
114UINT8\r
115EFIAPI\r
116PeiPcdGet8 (\r
117 IN UINTN TokenNumber\r
118 )\r
119{\r
120 return PeiPcdGet8Ex (NULL, TokenNumber);\r
121}\r
122\r
123\r
124\r
125UINT16\r
126EFIAPI\r
127PeiPcdGet16 (\r
128 IN UINTN TokenNumber\r
129 )\r
130{\r
131 return PeiPcdGet16Ex (NULL, TokenNumber);\r
132}\r
133\r
134\r
135\r
136UINT32\r
137EFIAPI\r
138PeiPcdGet32 (\r
139 IN UINTN TokenNumber\r
140 )\r
141{\r
142 return PeiPcdGet32Ex (NULL, TokenNumber);\r
143}\r
144\r
145\r
146\r
147UINT64\r
148EFIAPI\r
149PeiPcdGet64 (\r
150 IN UINTN TokenNumber\r
151 )\r
152{\r
153 return PeiPcdGet64Ex (NULL, TokenNumber);\r
154}\r
155\r
156\r
157\r
158VOID *\r
159EFIAPI\r
160PeiPcdGetPtr (\r
161 IN UINTN TokenNumber\r
162 )\r
163{\r
164 return PeiPcdGetPtrEx (NULL, TokenNumber);\r
165}\r
166\r
167\r
168\r
169BOOLEAN\r
170EFIAPI\r
171PeiPcdGetBool (\r
172 IN UINTN TokenNumber\r
173 )\r
174{\r
175 return PeiPcdGetBoolEx (NULL, TokenNumber);\r
176}\r
177\r
178\r
179\r
180UINTN\r
181EFIAPI\r
182PeiPcdGetSize (\r
183 IN UINTN TokenNumber\r
184 )\r
185{\r
186 return PeiPcdGetSizeEx (NULL, TokenNumber);\r
187}\r
188\r
189\r
190\r
191UINT8\r
192EFIAPI\r
193PeiPcdGet8Ex (\r
194 IN CONST EFI_GUID *Guid,\r
195 IN UINTN TokenNumber\r
196 )\r
197{\r
198 UINT8 Data;\r
199 \r
200 PeiGetPcdEntryWorker (TokenNumber, Guid, PcdByte8, &Data);\r
201 \r
202 return Data;\r
203}\r
204\r
205\r
206\r
207UINT16\r
208EFIAPI\r
209PeiPcdGet16Ex (\r
210 IN CONST EFI_GUID *Guid,\r
211 IN UINTN TokenNumber\r
212 )\r
213{\r
214 UINT16 Data;\r
215 \r
216 PeiGetPcdEntryWorker (TokenNumber, Guid, PcdByte16, &Data);\r
217 \r
218 return Data;\r
219}\r
220\r
221\r
222\r
223UINT32\r
224EFIAPI\r
225PeiPcdGet32Ex (\r
226 IN CONST EFI_GUID *Guid,\r
227 IN UINTN TokenNumber\r
228 )\r
229{\r
230 UINT32 Data;\r
231 \r
232 PeiGetPcdEntryWorker (TokenNumber, Guid, PcdByte32, &Data);\r
233 \r
234 return Data;\r
235}\r
236\r
237\r
238\r
239UINT64\r
240EFIAPI\r
241PeiPcdGet64Ex (\r
242 IN CONST EFI_GUID *Guid,\r
243 IN UINTN TokenNumber\r
244 )\r
245{\r
246 UINT64 Data;\r
247 \r
248 PeiGetPcdEntryWorker (TokenNumber, Guid, PcdByte64, &Data);\r
249 \r
250 return Data;\r
251}\r
252\r
253\r
254\r
255VOID *\r
256EFIAPI\r
257PeiPcdGetPtrEx (\r
258 IN CONST EFI_GUID *Guid,\r
259 IN UINTN TokenNumber\r
260 )\r
261{\r
262 VOID *Data;\r
263 \r
264 PeiGetPcdEntryWorker (TokenNumber, Guid, PcdPointer, &Data);\r
265 \r
266 return Data;\r
267}\r
268\r
269\r
270\r
271BOOLEAN\r
272EFIAPI\r
273PeiPcdGetBoolEx (\r
274 IN CONST EFI_GUID *Guid,\r
275 IN UINTN TokenNumber\r
276 )\r
277{\r
278 BOOLEAN Data;\r
279 \r
280 PeiGetPcdEntryWorker (TokenNumber, Guid, PcdBoolean, &Data);\r
281 \r
282 return Data;\r
283}\r
284\r
285\r
286\r
287UINTN\r
288EFIAPI\r
289PeiPcdGetSizeEx (\r
290 IN CONST EFI_GUID *Guid,\r
291 IN UINTN TokenNumber\r
292 )\r
293{\r
294 return PeiGetPcdEntrySizeWorker (TokenNumber, Guid);\r
295}\r
296\r
297\r
298\r
299EFI_STATUS\r
300EFIAPI\r
301PeiPcdSet8 (\r
302 IN UINTN TokenNumber,\r
303 IN UINT8 Value\r
304 )\r
305{\r
306 return PeiPcdSet8Ex (NULL, TokenNumber, Value);\r
307}\r
308\r
309\r
310\r
311EFI_STATUS\r
312EFIAPI\r
313PeiPcdSet16 (\r
314 IN UINTN TokenNumber,\r
315 IN UINT16 Value\r
316 )\r
317{\r
318 return PeiPcdSet16Ex (NULL, TokenNumber, Value);\r
319}\r
320\r
321\r
322\r
323EFI_STATUS\r
324EFIAPI\r
325PeiPcdSet32 (\r
326 IN UINTN TokenNumber,\r
327 IN UINT32 Value\r
328 )\r
329{\r
330 return PeiPcdSet32Ex (NULL, TokenNumber, Value);\r
331}\r
332\r
333\r
334\r
335EFI_STATUS\r
336EFIAPI\r
337PeiPcdSet64 (\r
338 IN UINTN TokenNumber,\r
339 IN UINT64 Value\r
340 )\r
341{\r
342 return PeiPcdSet64Ex (NULL, TokenNumber, Value);\r
343}\r
344\r
345\r
346EFI_STATUS\r
347EFIAPI\r
348PeiPcdSetPtr (\r
349 IN UINTN TokenNumber,\r
350 IN CONST VOID *Value\r
351 )\r
352{\r
353 return PeiPcdSetPtrEx (NULL, TokenNumber, Value);\r
354}\r
355\r
356\r
357\r
358EFI_STATUS\r
359EFIAPI\r
360PeiPcdSetBool (\r
361 IN UINTN TokenNumber,\r
362 IN BOOLEAN Value\r
363 )\r
364{\r
365 return PeiPcdSetBoolEx (NULL, TokenNumber, Value);\r
366}\r
367\r
368\r
369\r
370EFI_STATUS\r
371EFIAPI\r
372PeiPcdSet8Ex (\r
373 IN CONST EFI_GUID *Guid,\r
374 IN UINTN TokenNumber,\r
375 IN UINT8 Value\r
376 )\r
377{\r
378 return PeiSetPcdEntryWorker (TokenNumber, Guid, PcdByte8, &Value);\r
379}\r
380\r
381\r
382\r
383EFI_STATUS\r
384EFIAPI\r
385PeiPcdSet16Ex (\r
386 IN CONST EFI_GUID *Guid,\r
387 IN UINTN TokenNumber,\r
388 IN UINT16 Value\r
389 )\r
390{\r
391 return PeiSetPcdEntryWorker (TokenNumber, Guid, PcdByte16, &Value);\r
392}\r
393\r
394\r
395\r
396EFI_STATUS\r
397EFIAPI\r
398PeiPcdSet32Ex (\r
399 IN CONST EFI_GUID *Guid,\r
400 IN UINTN TokenNumber,\r
401 IN UINT32 Value\r
402 )\r
403{\r
404 return PeiSetPcdEntryWorker (TokenNumber, Guid, PcdByte32, &Value);\r
405}\r
406\r
407\r
408\r
409EFI_STATUS\r
410EFIAPI\r
411PeiPcdSet64Ex (\r
412 IN CONST EFI_GUID *Guid,\r
413 IN UINTN TokenNumber,\r
414 IN UINT64 Value\r
415 )\r
416{\r
417 return PeiSetPcdEntryWorker (TokenNumber, Guid, PcdByte64, &Value);\r
418}\r
419\r
420\r
421\r
422EFI_STATUS\r
423EFIAPI\r
424PeiPcdSetPtrEx (\r
425 IN CONST EFI_GUID *Guid,\r
426 IN UINTN TokenNumber,\r
427 IN CONST VOID *Value\r
428 )\r
429{\r
430 return PeiSetPcdEntryWorker (TokenNumber, Guid, PcdPointer, (VOID *)Value);\r
431}\r
432\r
433\r
434\r
435EFI_STATUS\r
436EFIAPI\r
437PeiPcdSetBoolEx (\r
438 IN CONST EFI_GUID *Guid,\r
439 IN UINTN TokenNumber,\r
440 IN BOOLEAN Value\r
441 )\r
442{\r
443 return PeiSetPcdEntryWorker (TokenNumber, Guid, PcdBoolean, &Value);\r
444\r
445}\r
446\r
447\r
448\r
449\r
450EFI_STATUS\r
451EFIAPI\r
452PcdRegisterCallBackOnSet (\r
453 IN UINTN TokenNumber,\r
454 IN CONST EFI_GUID *Guid, OPTIONAL\r
455 IN PCD_PPI_CALLBACK CallBackFunction\r
456 )\r
457{\r
458 return PeiRegisterCallBackWorker (TokenNumber, Guid, CallBackFunction, TRUE);\r
459}\r
460\r
461\r
462\r
463EFI_STATUS\r
464EFIAPI\r
465PcdUnRegisterCallBackOnSet (\r
466 IN UINTN TokenNumber,\r
467 IN CONST EFI_GUID *Guid, OPTIONAL\r
468 IN PCD_PPI_CALLBACK CallBackFunction\r
469 )\r
470{\r
471 return PeiRegisterCallBackWorker (TokenNumber, Guid, CallBackFunction, FALSE);\r
472}\r
473\r
474\r
475\r
476EFI_STATUS\r
477EFIAPI\r
478PeiPcdGetNextToken (\r
479 IN CONST EFI_GUID *Guid, OPTIONAL\r
480 IN OUT UINTN *TokenNumber\r
481 )\r
482{\r
483 return PeiGetNextTokenWorker (TokenNumber, Guid);\r
484}\r
485\r
486\r