]> git.proxmox.com Git - mirror_edk2.git/blob - EdkCompatibilityPkg/Compatibility/PiSmbiosRecordOnDataHubSmbiosRecordThunk/Thunk.h
Vlv2TbltDevicePkg: Remove SMM binary modules from FDF
[mirror_edk2.git] / EdkCompatibilityPkg / Compatibility / PiSmbiosRecordOnDataHubSmbiosRecordThunk / Thunk.h
1 /** @file
2 The common header file for the thunk driver.
3
4 Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.<BR>
5 This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13 **/
14
15 #ifndef _DATAHUB_TO_SMBIOS_THUNK_
16 #define _DATAHUB_TO_SMBIOS_THUNK_
17
18 #include <FrameworkDxe.h>
19 #include <IndustryStandard/SmBios.h>
20
21 #include <Guid/EventGroup.h>
22 #include <Guid/SmBios.h>
23 #include <Guid/ZeroGuid.h>
24 #include <Protocol/DataHub.h>
25 #include <Guid/DataHubRecords.h>
26 #include <Protocol/HiiDatabase.h>
27 #include <Protocol/Smbios.h>
28
29 #include <Library/BaseLib.h>
30 #include <Library/PcdLib.h>
31 #include <Library/DebugLib.h>
32 #include <Library/UefiLib.h>
33 #include <Library/HiiLib.h>
34 #include <Library/BaseMemoryLib.h>
35 #include <Library/ReportStatusCodeLib.h>
36 #include <Library/UefiDriverEntryPoint.h>
37 #include <Library/MemoryAllocationLib.h>
38 #include <Library/UefiBootServicesTableLib.h>
39
40 //
41 // Conversion Table that describes the translation method for
42 // Data Hub Data Records of certain SubClass and RecordNumber
43 //
44 typedef enum {
45 BySubclassInstanceSubinstanceProducer,
46 BySubClassInstanceProducer,
47 MaxLocatingMethod
48 } SMBIOS_STRUCTURE_LOCATING_METHOD;
49
50 typedef enum {
51 RecordDataUnchangedOffsetSpecified,
52 ByFunctionWithOffsetSpecified,
53 ByFunction,
54 ByFunctionWithWholeDataRecord,
55 MaxFieldFillingMethod
56 } SMBIOS_FIELD_FILLING_METHOD;
57
58 typedef struct _SMBIOS_STRUCTURE_NODE SMBIOS_STRUCTURE_NODE;
59
60 typedef struct {
61 UINT8 Type;
62 UINT8 Length;
63 UINT16 Handle;
64 UINT8 Tailing[2];
65 } EFI_SMBIOS_TABLE_TYPE127;
66
67 typedef
68 EFI_STATUS
69 (*SMBIOS_FIELD_FILLING_FUNCTION) (
70 IN OUT SMBIOS_STRUCTURE_NODE * StructureNode,
71 IN UINT32 Offset OPTIONAL,
72 IN VOID *RecordData,
73 IN UINT32 RecordDataSize
74 );
75
76 typedef struct {
77 //
78 // Data Hub Data Record's SubClass and RecordNumber
79 //
80 EFI_GUID SubClass;
81 UINT32 RecordType;
82
83 //
84 // Translation method applied
85 //
86 UINT8 SmbiosType;
87 SMBIOS_STRUCTURE_LOCATING_METHOD StructureLocatingMethod;
88 SMBIOS_FIELD_FILLING_METHOD FieldFillingMethod;
89 UINT32 FieldOffset;
90 SMBIOS_FIELD_FILLING_FUNCTION FieldFillingFunction;
91
92 } SMBIOS_CONVERSION_TABLE_ENTRY;
93
94 //
95 // SMBIOS_LINK_DATA_FIXUP nodes indicate the Link fields that
96 // need to be fixed up when creating the resulting Smbios image.
97 //
98 #define SMBIOS_LINK_DATA_FIXUP_NODE_SIGNATURE SIGNATURE_32 ('S', 'm', 'l', 'n')
99
100 typedef struct {
101
102 UINT32 Signature;
103 LIST_ENTRY Link;
104
105 UINT32 Offset;
106 UINT8 TargetType;
107 EFI_GUID SubClass;
108 EFI_INTER_LINK_DATA LinkData;
109
110 } SMBIOS_LINK_DATA_FIXUP_NODE;
111
112 //
113 // The global Structure List node.
114 // The Structure List is populated as more and more
115 // Structures (of various types) are discovered and inserted.
116 // The nodes in the Structure List will be concatenated
117 // to form the ultimate SMBIOS table.
118 //
119 #define SMBIOS_STRUCTURE_NODE_SIGNATURE SIGNATURE_32 ('S', 'm', 'b', 's')
120
121 struct _SMBIOS_STRUCTURE_NODE {
122
123 UINT32 Signature;
124 LIST_ENTRY Link;
125
126 //
127 // Tags
128 //
129 EFI_GUID SubClass;
130 UINT16 Instance;
131 UINT16 SubInstance;
132 EFI_GUID ProducerName;
133
134 //
135 // the Smbios structure
136 //
137 UINT32 StructureSize; // Actual structure size including strings
138
139 EFI_SMBIOS_TABLE_HEADER *Structure;
140
141
142 EFI_SMBIOS_HANDLE SmbiosHandle; // Smbios Handle in SMBIOS database.
143
144 EFI_SMBIOS_TYPE SmbiosType;
145
146 LIST_ENTRY LinkDataFixup;
147
148 };
149
150 //
151 // Smbios type info table. Indicates minimum length
152 // for each Smbios type as the indicator of the initial size of buffer
153 // allocated for the structure instance of a specific type.
154 //
155 typedef struct {
156
157 UINT8 Type;
158 UINT8 MinLength; // Minimal structure size including
159 // TWO trailing bytes of 0x00
160 //
161 BOOLEAN IsRequired; // Required structure type defined by Smbios Spec
162 BOOLEAN IsCreated; // Created in this run
163 } SMBIOS_TYPE_INFO_TABLE_ENTRY;
164
165 //
166 // EDK framwork Memory Data hub definition to support EDK/Framework driver.
167 //
168 typedef struct {
169 STRING_REF MemoryDeviceLocator;
170 STRING_REF MemoryBankLocator;
171 STRING_REF MemoryManufacturer;
172 STRING_REF MemorySerialNumber;
173 STRING_REF MemoryAssetTag;
174 STRING_REF MemoryPartNumber;
175 EFI_INTER_LINK_DATA MemoryArrayLink;
176 EFI_INTER_LINK_DATA MemorySubArrayLink;
177 UINT16 MemoryTotalWidth;
178 UINT16 MemoryDataWidth;
179 UINT64 MemoryDeviceSize;
180 EFI_MEMORY_FORM_FACTOR MemoryFormFactor;
181 UINT8 MemoryDeviceSet;
182 EFI_MEMORY_ARRAY_TYPE MemoryType;
183 EFI_MEMORY_TYPE_DETAIL MemoryTypeDetail;
184 UINT16 MemorySpeed;
185 EFI_MEMORY_STATE MemoryState;
186 UINT8 MemoryAttributes;
187 } FRAMEWORK_MEMORY_ARRAY_LINK_DATA;
188
189 typedef struct {
190 EFI_MEMORY_ARRAY_LOCATION MemoryArrayLocation;
191 EFI_MEMORY_ARRAY_USE MemoryArrayUse;
192 EFI_MEMORY_ERROR_CORRECTION MemoryErrorCorrection;
193 UINT32 MaximumMemoryCapacity;
194 UINT16 NumberMemoryDevices;
195 } FRAMEWORK_MEMORY_ARRAY_LOCATION_DATA;
196
197 //
198 // Global variables
199 //
200 extern SMBIOS_CONVERSION_TABLE_ENTRY mConversionTable[];
201 extern SMBIOS_TYPE_INFO_TABLE_ENTRY mTypeInfoTable[];
202 extern LIST_ENTRY mStructureList;
203
204 //
205 // Function Prototypes
206 //
207 /**
208 Smbios data filter function. This function is invoked when there is data records
209 available in the Data Hub.
210
211 @param Event The event that is signaled.
212 @param Context not used here.
213 **/
214 VOID
215 EFIAPI
216 SmbiosDataFilter (
217 IN EFI_EVENT Event,
218 IN VOID *Context
219 );
220
221 //
222 // Function prototypes
223 //
224 /**
225 Process a datahub's record and find corresponding translation way to translate
226 to SMBIOS record.
227
228 @param Record Point to datahub record.
229 **/
230 VOID
231 SmbiosProcessDataRecord (
232 IN EFI_DATA_RECORD_HEADER *Record
233 );
234
235 /**
236 Calculate the minimal length for a SMBIOS type. This length maybe not equal
237 to sizeof (SMBIOS_RECORD_STRUCTURE), but defined in conformance chapter in SMBIOS specification.
238
239 @param Type SMBIOS's type.
240
241 @return the minimal length of a smbios record.
242 **/
243 UINT32
244 SmbiosGetTypeMinimalLength (
245 IN UINT8 Type
246 );
247
248 /**
249 Enlarge the structure buffer of a structure node in SMBIOS database.
250 The function maybe lead the structure pointer for SMBIOS record changed.
251
252 @param StructureNode The structure node whose structure buffer is to be enlarged.
253 @param NewLength The new length of SMBIOS record which does not include unformat area.
254 @param OldBufferSize The old size of SMBIOS record buffer.
255 @param NewBufferSize The new size is targeted for enlarged.
256
257 @retval EFI_OUT_OF_RESOURCES No more memory to allocate new record
258 @retval EFI_SUCCESS Success to enlarge the record buffer size.
259 **/
260 EFI_STATUS
261 SmbiosEnlargeStructureBuffer (
262 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
263 UINT8 NewLength,
264 UINTN OldBufferSize,
265 UINTN NewBufferSize
266 );
267
268 /**
269 Update the structure buffer of a structure node in SMBIOS database.
270 The function lead the structure pointer for SMBIOS record changed.
271
272 @param StructureNode The structure node whose structure buffer is to be enlarged.
273 @param NewRecord The new SMBIOS record.
274
275 **/
276 VOID
277 SmbiosUpdateStructureBuffer (
278 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
279 IN EFI_SMBIOS_TABLE_HEADER *NewRecord
280 );
281
282 /**
283 Fill a standard Smbios string field.
284
285 This function will convert the unicode string to single byte chars, and only
286 English language is supported.
287 This function changes the Structure pointer value of the structure node,
288 which should be noted by Caller.
289
290 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
291 @param Offset Offset of SMBIOS record which RecordData will be filled.
292 @param RecordData RecordData buffer will be filled.
293 @param RecordDataSize The size of RecordData buffer.
294
295 @retval EFI_INVALID_PARAMETER RecordDataSize is too larger
296 @retval EFI_OUT_OF_RESOURCES No memory to allocate new buffer for string
297 @retval EFI_SUCCESS Sucess append string for a SMBIOS record.
298 **/
299 EFI_STATUS
300 SmbiosFldString (
301 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
302 IN UINT32 Offset,
303 IN VOID *RecordData,
304 IN UINT32 RecordDataSize
305 );
306
307 /**
308 Fill the inter link field for a SMBIOS recorder.
309
310 Some SMBIOS recorder need to reference the handle of another SMBIOS record. But
311 maybe another SMBIOS record has not been added, so put the InterLink request into
312 a linked list and the interlink will be fixedup when a new SMBIOS record is added.
313
314 @param StructureNode Point to SMBIOS_STRUCTURE_NODE which reference another record's handle
315 @param LinkSmbiosNodeOffset The offset in this record for holding the handle of another SMBIOS record
316 @param LinkSmbiosType The type of SMBIOS record want to be linked.
317 @param InterLink Point to EFI_INTER_LINK_DATA will be put linked list.
318 @param SubClassGuid The guid of subclass for linked SMBIOS record.
319
320 @retval EFI_SUCESS The linked record is found and no need fixup in future.
321 @retval !EFI_SUCESS The linked record can not be found and InterLink is put a fixing-p linked list.
322 **/
323 EFI_STATUS
324 SmbiosFldInterLink (
325 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
326 IN UINT16 LinkSmbiosNodeOffset,
327 IN UINT8 LinkSmbiosType,
328 IN EFI_INTER_LINK_DATA *InterLink,
329 IN EFI_GUID *SubClassGuid
330 );
331
332 /**
333 Find a handle that matches the Link Data and the target Smbios type.
334
335 @param TargetType the Smbios type
336 @param SubClass the SubClass
337 @param LinkData Specifies Instance, SubInstance and ProducerName
338 @param Handle the HandleNum found
339
340 @retval EFI_NOT_FOUND Can not find the record according to handle
341 @retval EFI_SUCCESS Success to find the handle
342 **/
343 EFI_STATUS
344 SmbiosFindHandle (
345 IN UINT8 TargetType,
346 IN EFI_GUID *SubClass,
347 IN EFI_INTER_LINK_DATA *LinkData,
348 IN OUT UINT16 *HandleNum
349 );
350
351 /**
352 Field Filling Function. Transform an EFI_EXP_BASE10_DATA to a word, with 'Mega'
353 as the unit.
354
355 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
356 @param Offset Offset of SMBIOS record which RecordData will be filled.
357 @param RecordData RecordData buffer will be filled.
358 @param RecordDataSize The size of RecordData buffer.
359
360 @retval EFI_INVALID_PARAMETER RecordDataSize is invalid.
361 @retval EFI_SUCCESS RecordData is successed to be filled into given SMBIOS record.
362 **/
363 EFI_STATUS
364 SmbiosFldBase10ToWordWithMega (
365 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
366 IN UINT32 Offset,
367 IN VOID *RecordData,
368 IN UINT32 RecordDataSize
369 );
370
371 /**
372 Field Filling Function. Transform an EFI_EXP_BASE2_DATA to a word, with 'Kilo'
373 as the unit. Granularity implemented for Cache Size.
374
375 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
376 @param Offset Offset of SMBIOS record which RecordData will be filled.
377 @param RecordData RecordData buffer will be filled.
378 @param RecordDataSize The size of RecordData buffer.
379
380 @retval EFI_INVALID_PARAMETER RecordDataSize is invalid.
381 @retval EFI_SUCCESS RecordData is successed to be filled into given SMBIOS record.
382 **/
383 EFI_STATUS
384 SmbiosFldBase2ToWordWithKilo (
385 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
386 IN UINT32 Offset,
387 IN VOID *RecordData,
388 IN UINT32 RecordDataSize
389 );
390
391 /**
392 Field Filling Function: truncate record data to byte and fill in the
393 field as indicated by Offset.
394
395 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
396 @param Offset Offset of SMBIOS record which RecordData will be filled.
397 @param RecordData RecordData buffer will be filled.
398 @param RecordDataSize The size of RecordData buffer.
399
400 @retval EFI_INVALID_PARAMETER RecordDataSize is invalid.
401 @retval EFI_SUCCESS RecordData is successed to be filled into given SMBIOS record.
402 **/
403 EFI_STATUS
404 SmbiosFldTruncateToByte (
405 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
406 IN UINT32 Offset,
407 IN VOID *RecordData,
408 IN UINT32 RecordDataSize
409 );
410
411 /**
412 Field Filling Function for Processor SubClass record type 6 -- ProcessorID.
413 Offset is mandatory.
414
415 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
416 @param Offset Offset of SMBIOS record which RecordData will be filled.
417 @param RecordData RecordData buffer will be filled.
418 @param RecordDataSize The size of RecordData buffer.
419
420 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
421 **/
422 EFI_STATUS
423 SmbiosFldProcessorType6 (
424 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
425 IN UINT32 Offset,
426 IN VOID *RecordData,
427 IN UINT32 RecordDataSize
428 );
429
430 /**
431 Field Filling Function for Processor SubClass record type 9 -- Voltage.
432 Offset is mandatory.
433
434 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
435 @param Offset Offset of SMBIOS record which RecordData will be filled.
436 @param RecordData RecordData buffer will be filled.
437 @param RecordDataSize The size of RecordData buffer.
438
439 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
440 **/
441 EFI_STATUS
442 SmbiosFldProcessorType9 (
443 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
444 IN UINT32 Offset,
445 IN VOID *RecordData,
446 IN UINT32 RecordDataSize
447 );
448
449 /**
450 Field Filling Function for Processor SubClass record type 17 -- Cache association.
451
452 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
453 @param Offset Offset of SMBIOS record which RecordData will be filled.
454 @param RecordData RecordData buffer will be filled.
455 @param RecordDataSize The size of RecordData buffer.
456
457 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
458 **/
459 EFI_STATUS
460 SmbiosFldProcessorType17 (
461 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
462 IN UINT32 Offset,
463 IN VOID *RecordData,
464 IN UINT32 RecordDataSize
465 );
466
467 /**
468 Field Filling Function. Transform an EFI_EXP_BASE2_DATA to a word, with 10exp-9
469 as the unit.
470
471 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
472 @param Offset Offset of SMBIOS record which RecordData will be filled.
473 @param RecordData RecordData buffer will be filled.
474 @param RecordDataSize The size of RecordData buffer.
475
476 @retval EFI_INVALID_PARAMETER RecordDataSize is invalid.
477 @retval EFI_SUCCESS RecordData is successed to be filled into given SMBIOS record.
478 **/
479 EFI_STATUS
480 SmbiosFldBase10ToByteWithNano (
481 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
482 IN UINT32 Offset,
483 IN VOID *RecordData,
484 IN UINT32 RecordDataSize
485 );
486
487 /**
488 Field Filling Function: truncate record data to byte and fill in the
489 field as indicated by Offset.
490
491 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
492 @param Offset Offset of SMBIOS record which RecordData will be filled.
493 @param RecordData RecordData buffer will be filled.
494 @param RecordDataSize The size of RecordData buffer.
495
496 @retval EFI_INVALID_PARAMETER RecordDataSize is invalid.
497 @retval EFI_SUCCESS RecordData is successed to be filled into given SMBIOS record.
498 **/
499 EFI_STATUS
500 SmbiosFldTruncateToWord (
501 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
502 IN UINT32 Offset,
503 IN VOID *RecordData,
504 IN UINT32 RecordDataSize
505 );
506
507 /**
508 Field Filling Function for Cache SubClass record type 10 -- Cache Config.
509 Offset is mandatory
510
511 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
512 @param Offset Offset of SMBIOS record which RecordData will be filled.
513 @param RecordData RecordData buffer will be filled.
514 @param RecordDataSize The size of RecordData buffer.
515
516 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
517 **/
518 EFI_STATUS
519 SmbiosFldCacheType10 (
520 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
521 IN UINT32 Offset,
522 IN VOID *RecordData,
523 IN UINT32 RecordDataSize
524 );
525
526 /**
527 Check if OEM structure has included 2 trailing 0s in data record.
528
529 @param RecordData Point to record data will be checked.
530 @param RecordDataSize The size of record data.
531
532 @retval 0 2 trailing 0s exist in unformatted section
533 @retval 1 1 trailing 0 exists at the end of unformatted section
534 @retval -1 There is no 0 at the end of unformatted section
535 **/
536 INT8
537 SmbiosCheckTrailingZero (
538 IN VOID *RecordData,
539 IN UINT32 RecordDataSize
540 );
541
542 /**
543 Field Filling Function for Cache SubClass record type 5&6 -- Cache SRAM type.
544 Offset is mandatory
545
546 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
547 @param Offset Offset of SMBIOS record which RecordData will be filled.
548 @param RecordData RecordData buffer will be filled.
549 @param RecordDataSize The size of RecordData buffer.
550
551 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
552 **/
553 EFI_STATUS
554 SmbiosFldCacheType5 (
555 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
556 IN UINT32 Offset,
557 IN VOID *RecordData,
558 IN UINT32 RecordDataSize
559 );
560
561 /**
562 Field Filling Function for Memory SubClass record type 2 -- Physical Memory
563 Array.
564
565 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
566 @param Offset Offset of SMBIOS record which RecordData will be filled.
567 @param RecordData RecordData buffer will be filled.
568 @param RecordDataSize The size of RecordData buffer.
569
570 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
571 **/
572 EFI_STATUS
573 SmbiosFldMemoryType2 (
574 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
575 IN UINT32 Offset,
576 IN VOID *RecordData,
577 IN UINT32 RecordDataSize
578 );
579
580 /**
581 Field Filling Function for Memory SubClass record type 3 -
582 - Memory Device: SMBIOS Type 17
583
584 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
585 @param Offset Offset of SMBIOS record which RecordData will be filled.
586 @param RecordData RecordData buffer will be filled.
587 @param RecordDataSize The size of RecordData buffer.
588
589 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
590 **/
591 EFI_STATUS
592 SmbiosFldMemoryType3 (
593 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
594 IN UINT32 Offset,
595 IN VOID *RecordData,
596 IN UINT32 RecordDataSize
597 );
598
599 /**
600 Field Filling Function for Memory SubClass record type 4
601 -- Memory Array Mapped Address: SMBIOS Type 19
602
603 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
604 @param Offset Offset of SMBIOS record which RecordData will be filled.
605 @param RecordData RecordData buffer will be filled.
606 @param RecordDataSize The size of RecordData buffer.
607
608 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
609 **/
610 EFI_STATUS
611 SmbiosFldMemoryType4 (
612 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
613 IN UINT32 Offset,
614 IN VOID *RecordData,
615 IN UINT32 RecordDataSize
616 );
617
618 /**
619 Field Filling Function for Memory SubClass record type 5
620 -- Memory Device Mapped Address: SMBIOS Type 20
621
622 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
623 @param Offset Offset of SMBIOS record which RecordData will be filled.
624 @param RecordData RecordData buffer will be filled.
625 @param RecordDataSize The size of RecordData buffer.
626
627 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
628 **/
629 EFI_STATUS
630 SmbiosFldMemoryType5 (
631 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
632 IN UINT32 Offset,
633 IN VOID *RecordData,
634 IN UINT32 RecordDataSize
635 );
636
637 /**
638 Field Filling Function for Memory SubClass record type 6
639 -- Memory Channel Type: SMBIOS Type 37
640
641 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
642 @param Offset Offset of SMBIOS record which RecordData will be filled.
643 @param RecordData RecordData buffer will be filled.
644 @param RecordDataSize The size of RecordData buffer.
645
646 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
647 **/
648 EFI_STATUS
649 SmbiosFldMemoryType6 (
650 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
651 IN UINT32 Offset,
652 IN VOID *RecordData,
653 IN UINT32 RecordDataSize
654 );
655
656 /**
657 Field Filling Function for Memory SubClass record type 7
658 -- Memory Channel Device: SMBIOS Type 37
659
660 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
661 @param Offset Offset of SMBIOS record which RecordData will be filled.
662 @param RecordData RecordData buffer will be filled.
663 @param RecordDataSize The size of RecordData buffer.
664
665 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
666 **/
667 EFI_STATUS
668 SmbiosFldMemoryType7 (
669 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
670 IN UINT32 Offset,
671 IN VOID *RecordData,
672 IN UINT32 RecordDataSize
673 );
674
675 /**
676 Field Filling Function for Memory SubClass record type 8
677 -- Memory Controller information: SMBIOS Type 5
678
679 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
680 @param Offset Offset of SMBIOS record which RecordData will be filled.
681 @param RecordData RecordData buffer will be filled.
682 @param RecordDataSize The size of RecordData buffer.
683
684 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
685 **/
686 EFI_STATUS
687 SmbiosFldMemoryType8 (
688 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
689 IN UINT32 Offset,
690 IN VOID *RecordData,
691 IN UINT32 RecordDataSize
692 );
693
694 /**
695 Field Filling Function for Memory SubClass record type
696 -- Memory 32 Bit Error Information: SMBIOS Type 18
697
698 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
699 @param Offset Offset of SMBIOS record which RecordData will be filled.
700 @param RecordData RecordData buffer will be filled.
701 @param RecordDataSize The size of RecordData buffer.
702
703 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
704 **/
705 EFI_STATUS
706 SmbiosFldMemoryType9 (
707 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
708 IN UINT32 Offset,
709 IN VOID *RecordData,
710 IN UINT32 RecordDataSize
711 );
712
713 /**
714 Field Filling Function for Memory SubClass record type
715 -- Memory 64 Bit Error Information: SMBIOS Type 33
716
717 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
718 @param Offset Offset of SMBIOS record which RecordData will be filled.
719 @param RecordData RecordData buffer will be filled.
720 @param RecordDataSize The size of RecordData buffer.
721
722 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
723 **/
724 EFI_STATUS
725 SmbiosFldMemoryType10 (
726 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
727 IN UINT32 Offset,
728 IN VOID *RecordData,
729 IN UINT32 RecordDataSize
730 );
731
732 /**
733 Field Filling Function for Misc SubClass record type 0 -- Bios Information.
734
735 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
736 @param Offset Offset of SMBIOS record which RecordData will be filled.
737 @param RecordData RecordData buffer will be filled.
738 @param RecordDataSize The size of RecordData buffer.
739
740 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
741 **/
742 EFI_STATUS
743 SmbiosFldMiscType0 (
744 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
745 IN UINT32 Offset,
746 IN VOID *RecordData,
747 IN UINT32 RecordDataSize
748 );
749
750 /**
751 Field Filling Function. Transform an EFI_EXP_BASE2_DATA to a byte, with '64k'
752 as the unit.
753
754 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
755 @param Offset Offset of SMBIOS record which RecordData will be filled.
756 @param RecordData RecordData buffer will be filled.
757 @param RecordDataSize The size of RecordData buffer.
758
759 @retval EFI_INVALID_PARAMETER RecordDataSize is invalid.
760 @retval EFI_SUCCESS RecordData is successed to be filled into given SMBIOS record.
761 **/
762 EFI_STATUS
763 SmbiosFldBase2ToByteWith64K (
764 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
765 IN UINT32 Offset,
766 IN VOID *RecordData,
767 IN UINT32 RecordDataSize
768 );
769
770 /**
771 Field Filling Function for Misc SubClass record type 1 -- System Information.
772
773 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
774 @param Offset Offset of SMBIOS record which RecordData will be filled.
775 @param RecordData RecordData buffer will be filled.
776 @param RecordDataSize The size of RecordData buffer.
777
778 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
779 **/
780 EFI_STATUS
781 SmbiosFldMiscType1 (
782 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
783 IN UINT32 Offset,
784 IN VOID *RecordData,
785 IN UINT32 RecordDataSize
786 );
787
788 /**
789 Field Filling Function for record type 2 -- Base Board Manufacture.
790
791 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
792 @param Offset Offset of SMBIOS record which RecordData will be filled.
793 @param RecordData RecordData buffer will be filled.
794 @param RecordDataSize The size of RecordData buffer.
795
796 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
797 **/
798 EFI_STATUS
799 SmbiosFldMiscType2 (
800 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
801 IN UINT32 Offset,
802 IN VOID *RecordData,
803 IN UINT32 RecordDataSize
804 );
805
806 /**
807 Field Filling Function for Misc SubClass record type 3 -
808 - System Enclosure or Chassis.
809
810 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
811 @param Offset Offset of SMBIOS record which RecordData will be filled.
812 @param RecordData RecordData buffer will be filled.
813 @param RecordDataSize The size of RecordData buffer.
814
815 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
816 **/
817 EFI_STATUS
818 SmbiosFldMiscType3 (
819 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
820 IN UINT32 Offset,
821 IN VOID *RecordData,
822 IN UINT32 RecordDataSize
823 );
824
825 /**
826 Field Filling Function for Misc SubClass record type 8 -- Port Connector.
827
828 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
829 @param Offset Offset of SMBIOS record which RecordData will be filled.
830 @param RecordData RecordData buffer will be filled.
831 @param RecordDataSize The size of RecordData buffer.
832
833 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
834 **/
835 EFI_STATUS
836 SmbiosFldMiscType8 (
837 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
838 IN UINT32 Offset,
839 IN VOID *RecordData,
840 IN UINT32 RecordDataSize
841 );
842
843 /**
844 Field Filling Function for Misc SubClass record type 9 -- System slot.
845
846 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
847 @param Offset Offset of SMBIOS record which RecordData will be filled.
848 @param RecordData RecordData buffer will be filled.
849 @param RecordDataSize The size of RecordData buffer.
850
851 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
852 **/
853 EFI_STATUS
854 SmbiosFldMiscType9 (
855 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
856 IN UINT32 Offset,
857 IN VOID *RecordData,
858 IN UINT32 RecordDataSize
859 );
860
861 /**
862 Field Filling Function for Misc SubClass record type 10 - Onboard Device.
863
864 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
865 @param Offset Offset of SMBIOS record which RecordData will be filled.
866 @param RecordData RecordData buffer will be filled.
867 @param RecordDataSize The size of RecordData buffer.
868
869 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
870 **/
871 EFI_STATUS
872 SmbiosFldMiscType10 (
873 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
874 IN UINT32 Offset,
875 IN VOID *RecordData,
876 IN UINT32 RecordDataSize
877 );
878
879 /**
880 Field Filling Function for Misc SubClass record type 11 - OEM Strings.
881
882 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
883 @param Offset Offset of SMBIOS record which RecordData will be filled.
884 @param RecordData RecordData buffer will be filled.
885 @param RecordDataSize The size of RecordData buffer.
886
887 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
888 **/
889 EFI_STATUS
890 SmbiosFldMiscType11 (
891 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
892 IN UINT32 Offset,
893 IN VOID *RecordData,
894 IN UINT32 RecordDataSize
895 );
896
897 /**
898 Field Filling Function for Misc SubClass record type 12 - System Options.
899
900 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
901 @param Offset Offset of SMBIOS record which RecordData will be filled.
902 @param RecordData RecordData buffer will be filled.
903 @param RecordDataSize The size of RecordData buffer.
904
905 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
906 **/
907 EFI_STATUS
908 SmbiosFldMiscType12 (
909 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
910 IN UINT32 Offset,
911 IN VOID *RecordData,
912 IN UINT32 RecordDataSize
913 );
914
915 /**
916 Field Filling Function for Misc SubClass record type 13 - BIOS Language.
917
918 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
919 @param Offset Offset of SMBIOS record which RecordData will be filled.
920 @param RecordData RecordData buffer will be filled.
921 @param RecordDataSize The size of RecordData buffer.
922
923 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
924 **/
925 EFI_STATUS
926 SmbiosFldMiscType13 (
927 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
928 IN UINT32 Offset,
929 IN VOID *RecordData,
930 IN UINT32 RecordDataSize
931 );
932
933 /**
934 Field Filling Function for Misc SubClass record type 14 - System Language String
935 Current solution assumes that EFI_MISC_SYSTEM_LANGUAGE_STRINGs are logged with
936 their LanguageId having ascending orders.
937
938 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
939 @param Offset Offset of SMBIOS record which RecordData will be filled.
940 @param RecordData RecordData buffer will be filled.
941 @param RecordDataSize The size of RecordData buffer.
942
943 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
944 **/
945 EFI_STATUS
946 SmbiosFldMiscType14 (
947 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
948 IN UINT32 Offset,
949 IN VOID *RecordData,
950 IN UINT32 RecordDataSize
951 );
952
953 /**
954 Field Filling Function for Misc SubClass record type 15 -- System Event Log.
955
956 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
957 @param Offset Offset of SMBIOS record which RecordData will be filled.
958 @param RecordData RecordData buffer will be filled.
959 @param RecordDataSize The size of RecordData buffer.
960
961 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
962 **/
963 EFI_STATUS
964 SmbiosFldMiscType15 (
965 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
966 IN UINT32 Offset,
967 IN VOID *RecordData,
968 IN UINT32 RecordDataSize
969 );
970
971 /**
972 Field Filling Function for Misc SubClass record type 21 - Pointing Device.
973
974 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
975 @param Offset Offset of SMBIOS record which RecordData will be filled.
976 @param RecordData RecordData buffer will be filled.
977 @param RecordDataSize The size of RecordData buffer.
978
979 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
980 **/
981 EFI_STATUS
982 SmbiosFldMiscType21 (
983 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
984 IN UINT32 Offset,
985 IN VOID *RecordData,
986 IN UINT32 RecordDataSize
987 );
988
989
990 /**
991 Field Filling Function for Misc SubClass record type 32 -- System Boot Information.
992
993 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
994 @param Offset Offset of SMBIOS record which RecordData will be filled.
995 @param RecordData RecordData buffer will be filled.
996 @param RecordDataSize The size of RecordData buffer.
997
998 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
999 **/
1000 EFI_STATUS
1001 SmbiosFldMiscType32 (
1002 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
1003 IN UINT32 Offset,
1004 IN VOID *RecordData,
1005 IN UINT32 RecordDataSize
1006 );
1007
1008 /**
1009 Field Filling Function for Misc SubClass record type 38 -- IPMI device info.
1010
1011 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
1012 @param Offset Offset of SMBIOS record which RecordData will be filled.
1013 @param RecordData RecordData buffer will be filled.
1014 @param RecordDataSize The size of RecordData buffer.
1015
1016 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
1017 **/
1018 EFI_STATUS
1019 SmbiosFldMiscType38 (
1020 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
1021 IN UINT32 Offset,
1022 IN VOID *RecordData,
1023 IN UINT32 RecordDataSize
1024 );
1025
1026 /**
1027 Field Filling Function for Misc SubClass record type 0x80-0xFF -- OEM.
1028
1029 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
1030 @param Offset Offset of SMBIOS record which RecordData will be filled.
1031 @param RecordData RecordData buffer will be filled.
1032 @param RecordDataSize The size of RecordData buffer.
1033
1034 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
1035 **/
1036 EFI_STATUS
1037 SmbiosFldMiscTypeOEM (
1038 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
1039 IN UINT32 Offset,
1040 IN VOID *RecordData,
1041 IN UINT32 RecordDataSize
1042 );
1043
1044 /**
1045 Field Filling Function for Memory SubClass record type 3 -
1046 - Memory Device: SMBIOS Type 6
1047
1048 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
1049 @param Offset Offset of SMBIOS record which RecordData will be filled.
1050 @param RecordData RecordData buffer will be filled.
1051 @param RecordDataSize The size of RecordData buffer.
1052
1053 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
1054 **/
1055 EFI_STATUS
1056 SmbiosFldSMBIOSType6 (
1057 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
1058 IN UINT32 Offset,
1059 IN VOID *RecordData,
1060 IN UINT32 RecordDataSize
1061 );
1062
1063 /**
1064 Field Filling Function for Misc SubClass record type 22 - Portable Battery.
1065
1066 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
1067 @param Offset Offset of SMBIOS record which RecordData will be filled.
1068 @param RecordData RecordData buffer will be filled.
1069 @param RecordDataSize The size of RecordData buffer.
1070
1071 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
1072 **/
1073 EFI_STATUS
1074 SmbiosFldMiscType22 (
1075 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
1076 IN UINT32 Offset,
1077 IN VOID *RecordData,
1078 IN UINT32 RecordDataSize
1079 );
1080
1081 /**
1082 Field Filling Function for Misc SubClass record type 22 - Portable Battery.
1083
1084 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
1085 @param Offset Offset of SMBIOS record which RecordData will be filled.
1086 @param RecordData RecordData buffer will be filled.
1087 @param RecordDataSize The size of RecordData buffer.
1088
1089 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
1090 **/
1091 EFI_STATUS
1092 SmbiosFldMiscType22 (
1093 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
1094 IN UINT32 Offset,
1095 IN VOID *RecordData,
1096 IN UINT32 RecordDataSize
1097 );
1098
1099 /**
1100 Field Filling Function for Misc SubClass record type 23 - System Reset.
1101
1102 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
1103 @param Offset Offset of SMBIOS record which RecordData will be filled.
1104 @param RecordData RecordData buffer will be filled.
1105 @param RecordDataSize The size of RecordData buffer.
1106
1107 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
1108 **/
1109 EFI_STATUS
1110 SmbiosFldMiscType23 (
1111 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
1112 IN UINT32 Offset,
1113 IN VOID *RecordData,
1114 IN UINT32 RecordDataSize
1115 );
1116
1117 /**
1118 Field Filling Function for Misc SubClass record type 24 - Hardware Security.
1119
1120 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
1121 @param Offset Offset of SMBIOS record which RecordData will be filled.
1122 @param RecordData RecordData buffer will be filled.
1123 @param RecordDataSize The size of RecordData buffer.
1124
1125 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
1126 **/
1127 EFI_STATUS
1128 SmbiosFldMiscType24 (
1129 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
1130 IN UINT32 Offset,
1131 IN VOID *RecordData,
1132 IN UINT32 RecordDataSize
1133 );
1134
1135 /**
1136 Field Filling Function for Misc SubClass record type 25 - System Power Controls.
1137
1138 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
1139 @param Offset Offset of SMBIOS record which RecordData will be filled.
1140 @param RecordData RecordData buffer will be filled.
1141 @param RecordDataSize The size of RecordData buffer.
1142
1143 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
1144 **/
1145 EFI_STATUS
1146 SmbiosFldMiscType25 (
1147 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
1148 IN UINT32 Offset,
1149 IN VOID *RecordData,
1150 IN UINT32 RecordDataSize
1151 );
1152
1153 /**
1154 Field Filling Function for Misc SubClass record type 26 - Voltage Probe.
1155
1156 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
1157 @param Offset Offset of SMBIOS record which RecordData will be filled.
1158 @param RecordData RecordData buffer will be filled.
1159 @param RecordDataSize The size of RecordData buffer.
1160
1161 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
1162 **/
1163 EFI_STATUS
1164 SmbiosFldMiscType26 (
1165 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
1166 IN UINT32 Offset,
1167 IN VOID *RecordData,
1168 IN UINT32 RecordDataSize
1169 );
1170
1171 /**
1172 Field Filling Function for Misc SubClass record type 27 - Cooling Device.
1173
1174 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
1175 @param Offset Offset of SMBIOS record which RecordData will be filled.
1176 @param RecordData RecordData buffer will be filled.
1177 @param RecordDataSize The size of RecordData buffer.
1178
1179 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
1180 **/
1181 EFI_STATUS
1182 SmbiosFldMiscType27 (
1183 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
1184 IN UINT32 Offset,
1185 IN VOID *RecordData,
1186 IN UINT32 RecordDataSize
1187 );
1188
1189 /**
1190 Field Filling Function for Misc SubClass record type 28 -- Temperature Probe.
1191
1192 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
1193 @param Offset Offset of SMBIOS record which RecordData will be filled.
1194 @param RecordData RecordData buffer will be filled.
1195 @param RecordDataSize The size of RecordData buffer.
1196
1197 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
1198 **/
1199 EFI_STATUS
1200 SmbiosFldMiscType28 (
1201 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
1202 IN UINT32 Offset,
1203 IN VOID *RecordData,
1204 IN UINT32 RecordDataSize
1205 );
1206
1207 /**
1208 Field Filling Function for Misc SubClass record type 29 -- Electrical Current Probe.
1209
1210 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
1211 @param Offset Offset of SMBIOS record which RecordData will be filled.
1212 @param RecordData RecordData buffer will be filled.
1213 @param RecordDataSize The size of RecordData buffer.
1214
1215 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
1216 **/
1217 EFI_STATUS
1218 SmbiosFldMiscType29 (
1219 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
1220 IN UINT32 Offset,
1221 IN VOID *RecordData,
1222 IN UINT32 RecordDataSize
1223 );
1224
1225 /**
1226 Field Filling Function for Misc SubClass record type 30 -- Out-of-Band Remote Access.
1227
1228 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
1229 @param Offset Offset of SMBIOS record which RecordData will be filled.
1230 @param RecordData RecordData buffer will be filled.
1231 @param RecordDataSize The size of RecordData buffer.
1232
1233 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
1234 **/
1235 EFI_STATUS
1236 SmbiosFldMiscType30 (
1237 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
1238 IN UINT32 Offset,
1239 IN VOID *RecordData,
1240 IN UINT32 RecordDataSize
1241 );
1242
1243 /**
1244 Field Filling Function for Misc SubClass record type 34 -- Management Device.
1245
1246 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
1247 @param Offset Offset of SMBIOS record which RecordData will be filled.
1248 @param RecordData RecordData buffer will be filled.
1249 @param RecordDataSize The size of RecordData buffer.
1250
1251 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
1252 **/
1253 EFI_STATUS
1254 SmbiosFldMiscType34 (
1255 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
1256 IN UINT32 Offset,
1257 IN VOID *RecordData,
1258 IN UINT32 RecordDataSize
1259 );
1260
1261 /**
1262 Field Filling Function for Misc SubClass record type 35 -- Management Device Component.
1263
1264 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
1265 @param Offset Offset of SMBIOS record which RecordData will be filled.
1266 @param RecordData RecordData buffer will be filled.
1267 @param RecordDataSize The size of RecordData buffer.
1268
1269 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
1270 **/
1271 EFI_STATUS
1272 SmbiosFldMiscType35 (
1273 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
1274 IN UINT32 Offset,
1275 IN VOID *RecordData,
1276 IN UINT32 RecordDataSize
1277 );
1278
1279 /**
1280 Field Filling Function for Misc SubClass record type 36 -- Management Device Threshold.
1281
1282 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
1283 @param Offset Offset of SMBIOS record which RecordData will be filled.
1284 @param RecordData RecordData buffer will be filled.
1285 @param RecordDataSize The size of RecordData buffer.
1286
1287 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
1288 **/
1289 EFI_STATUS
1290 SmbiosFldMiscType36 (
1291 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
1292 IN UINT32 Offset,
1293 IN VOID *RecordData,
1294 IN UINT32 RecordDataSize
1295 );
1296
1297 /**
1298 Field Filling Function for Misc SubClass record type 38 -- IPMI device info.
1299
1300 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
1301 @param Offset Offset of SMBIOS record which RecordData will be filled.
1302 @param RecordData RecordData buffer will be filled.
1303 @param RecordDataSize The size of RecordData buffer.
1304
1305 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
1306 **/
1307 EFI_STATUS
1308 SmbiosFldMiscType38 (
1309 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
1310 IN UINT32 Offset,
1311 IN VOID *RecordData,
1312 IN UINT32 RecordDataSize
1313 );
1314
1315 /**
1316 Field Filling Function for Misc SubClass record type 39 -- Power supply.
1317
1318 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
1319 @param Offset Offset of SMBIOS record which RecordData will be filled.
1320 @param RecordData RecordData buffer will be filled.
1321 @param RecordDataSize The size of RecordData buffer.
1322
1323 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
1324 **/
1325 EFI_STATUS
1326 SmbiosFldMiscType39 (
1327 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
1328 IN UINT32 Offset,
1329 IN VOID *RecordData,
1330 IN UINT32 RecordDataSize
1331 );
1332
1333 /**
1334 Field Filling Function for Misc SubClass record type 127 - End-of-Table.
1335
1336 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
1337 @param Offset Offset of SMBIOS record which RecordData will be filled.
1338 @param RecordData RecordData buffer will be filled.
1339 @param RecordDataSize The size of RecordData buffer.
1340
1341 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
1342 **/
1343 EFI_STATUS
1344 SmbiosFldMiscType127 (
1345 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
1346 IN UINT32 Offset,
1347 IN VOID *RecordData,
1348 IN UINT32 RecordDataSize
1349 );
1350
1351 /**
1352 Create a blank smbios record. The datahub record is only a field of smbios record.
1353 So before fill any field from datahub's record. A blank smbios record need to be
1354 created.
1355
1356 @param ProducerHandle The produce handle for a datahub record
1357 @param StructureNode Point to SMBIOS_STRUCTURE_NODE
1358
1359 @retval EFI_OUT_OF_RESOURCES Fail to allocate memory for new blank SMBIOS record.
1360 @retval EFI_SUCCESS Success to create blank smbios record.
1361 **/
1362 EFI_STATUS
1363 SmbiosProtocolCreateRecord (
1364 IN EFI_HANDLE ProducerHandle, OPTIONAL
1365 IN SMBIOS_STRUCTURE_NODE *StructureNode
1366 );
1367
1368 /**
1369 Get pointer of EFI_SMBIOS_PROTOCOL.
1370
1371 @return pointer of EFI_SMBIOS_PROTOCOL.
1372 **/
1373 EFI_SMBIOS_PROTOCOL*
1374 GetSmbiosProtocol (
1375 VOID
1376 );
1377
1378 /**
1379 Get pointer of a SMBIOS record's buffer according to its handle.
1380
1381 @param Handle The handle of SMBIOS record want to be searched.
1382 @param Type The type of SMBIOS record want to be searched.
1383 @param ProducerHandle The producer handle of SMBIOS record.
1384
1385 @return EFI_SMBIOS_TABLE_HEADER Point to a SMBIOS record's buffer.
1386 **/
1387 EFI_SMBIOS_TABLE_HEADER*
1388 GetSmbiosBufferFromHandle (
1389 IN EFI_SMBIOS_HANDLE Handle,
1390 IN EFI_SMBIOS_TYPE Type,
1391 IN EFI_HANDLE ProducerHandle OPTIONAL
1392 );
1393
1394 /**
1395
1396 Get the full size of smbios structure including optional strings that follow the formatted structure.
1397
1398 @param Head Pointer to the beginning of smbios structure.
1399 @param Size The returned size.
1400 @param NumberOfStrings The returned number of optional strings that follow the formatted structure.
1401
1402 @retval EFI_SUCCESS Size retured in Size.
1403 @retval EFI_INVALID_PARAMETER Input smbios structure mal-formed or Size is NULL.
1404
1405 **/
1406 EFI_STATUS
1407 EFIAPI
1408 GetSmbiosStructureSize (
1409 IN EFI_SMBIOS_TABLE_HEADER *Head,
1410 OUT UINT32 *Size,
1411 OUT UINT8 *NumberOfStrings
1412 );
1413
1414 #endif