2 DataHubRecord.h includes all data hub sub class GUID definitions.
4 This file includes all data hub sub class defitions from
5 Cache subclass spec 0.9, DataHub SubClass spec 0.9, Memory SubClass Spec 0.9,
6 Processor Subclass spec 0.9, and Misc SubClass spec 0.9.
8 Copyright (c) 2007 - 2009, Intel Corporation
9 All rights reserved. This program and the accompanying materials
10 are licensed and made available under the terms and conditions of the BSD License
11 which accompanies this distribution. The full text of the license may be found at
12 http://opensource.org/licenses/bsd-license.php
14 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
15 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
18 #ifndef _DATAHUB_RECORDS_GUID_H_
19 #define _DATAHUB_RECORDS_GUID_H_
21 #define EFI_PROCESSOR_SUBCLASS_GUID \
22 { 0x26fdeb7e, 0xb8af, 0x4ccf, {0xaa, 0x97, 0x02, 0x63, 0x3c, 0xe4, 0x8c, 0xa7 } }
24 extern EFI_GUID gEfiProcessorSubClassGuid
;
27 #define EFI_CACHE_SUBCLASS_GUID \
28 { 0x7f0013a7, 0xdc79, 0x4b22, {0x80, 0x99, 0x11, 0xf7, 0x5f, 0xdc, 0x82, 0x9d } }
30 extern EFI_GUID gEfiCacheSubClassGuid
;
33 /// The memory subclass belongs to the data class and is identified as the memory
34 /// subclass by the GUID.
36 #define EFI_MEMORY_SUBCLASS_GUID \
37 {0x4E8F4EBB, 0x64B9, 0x4e05, {0x9B, 0x18, 0x4C, 0xFE, 0x49, 0x23, 0x50, 0x97} }
39 extern EFI_GUID gEfiMemorySubClassGuid
;
41 #define EFI_MISC_SUBCLASS_GUID \
42 { 0x772484B2, 0x7482, 0x4b91, {0x9F, 0x9A, 0xAD, 0x43, 0xF8, 0x1C, 0x58, 0x81 } }
44 extern EFI_GUID gEfiMiscSubClassGuid
;
48 /// Inconsistent with specification here:
49 /// In MiscSubclass spec 0.9, the value is 0x0100.
50 /// Keep it unchanged from the perspective of binary consistency.
52 #define EFI_PROCESSOR_SUBCLASS_VERSION 0x00010000
56 typedef struct _USB_PORT_DEVICE_PATH
{
57 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath
;
58 PCI_DEVICE_PATH PciBusDevicePath
;
59 EFI_DEVICE_PATH_PROTOCOL EndDevicePath
;
60 } USB_PORT_DEVICE_PATH
;
65 typedef struct _IDE_DEVICE_PATH
{
66 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath
;
67 PCI_DEVICE_PATH PciBusDevicePath
;
68 EFI_DEVICE_PATH_PROTOCOL EndDevicePath
;
74 typedef struct _RMC_CONN_DEVICE_PATH
{
75 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath
;
76 PCI_DEVICE_PATH PciBridgeDevicePath
;
77 PCI_DEVICE_PATH PciBusDevicePath
;
78 EFI_DEVICE_PATH_PROTOCOL EndDevicePath
;
79 } RMC_CONN_DEVICE_PATH
;
84 typedef struct _RIDE_DEVICE_PATH
{
85 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath
;
86 PCI_DEVICE_PATH PciBridgeDevicePath
;
87 PCI_DEVICE_PATH PciBusDevicePath
;
88 EFI_DEVICE_PATH_PROTOCOL EndDevicePath
;
94 typedef struct _GB_NIC_DEVICE_PATH
{
95 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath
;
96 PCI_DEVICE_PATH PciBridgeDevicePath
;
97 PCI_DEVICE_PATH PciXBridgeDevicePath
;
98 PCI_DEVICE_PATH PciXBusDevicePath
;
99 EFI_DEVICE_PATH_PROTOCOL EndDevicePath
;
100 } GB_NIC_DEVICE_PATH
;
105 typedef struct _PS2_CONN_DEVICE_PATH
{
106 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath
;
107 PCI_DEVICE_PATH LpcBridgeDevicePath
;
108 ACPI_HID_DEVICE_PATH LpcBusDevicePath
;
109 EFI_DEVICE_PATH_PROTOCOL EndDevicePath
;
110 } PS2_CONN_DEVICE_PATH
;
113 // Serial Port Connector
115 typedef struct _SERIAL_CONN_DEVICE_PATH
{
116 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath
;
117 PCI_DEVICE_PATH LpcBridgeDevicePath
;
118 ACPI_HID_DEVICE_PATH LpcBusDevicePath
;
119 EFI_DEVICE_PATH_PROTOCOL EndDevicePath
;
120 } SERIAL_CONN_DEVICE_PATH
;
123 // Parallel Port Connector
125 typedef struct _PARALLEL_CONN_DEVICE_PATH
{
126 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath
;
127 PCI_DEVICE_PATH LpcBridgeDevicePath
;
128 ACPI_HID_DEVICE_PATH LpcBusDevicePath
;
129 EFI_DEVICE_PATH_PROTOCOL EndDevicePath
;
130 } PARALLEL_CONN_DEVICE_PATH
;
135 typedef struct _FLOOPY_CONN_DEVICE_PATH
{
136 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath
;
137 PCI_DEVICE_PATH LpcBridgeDevicePath
;
138 ACPI_HID_DEVICE_PATH LpcBusDevicePath
;
139 EFI_DEVICE_PATH_PROTOCOL EndDevicePath
;
140 } FLOOPY_CONN_DEVICE_PATH
;
143 /// Inconsistent with specification here:
144 /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.
145 /// It's implementation-specific to simplify the code logic.
147 typedef union _EFI_MISC_PORT_DEVICE_PATH
{
148 USB_PORT_DEVICE_PATH UsbDevicePath
;
149 IDE_DEVICE_PATH IdeDevicePath
;
150 RMC_CONN_DEVICE_PATH RmcConnDevicePath
;
151 RIDE_DEVICE_PATH RideDevicePath
;
152 GB_NIC_DEVICE_PATH GbNicDevicePath
;
153 PS2_CONN_DEVICE_PATH Ps2ConnDevicePath
;
154 SERIAL_CONN_DEVICE_PATH SerialConnDevicePath
;
155 PARALLEL_CONN_DEVICE_PATH ParallelConnDevicePath
;
156 FLOOPY_CONN_DEVICE_PATH FloppyConnDevicePath
;
157 } EFI_MISC_PORT_DEVICE_PATH
;
162 /// String Token Definition
164 /// Inconsistent with specification here:
165 /// The macro isn't defined by any spec.
166 /// Keep it unchanged for backward compatibility.
168 #define EFI_STRING_TOKEN UINT16
171 /// Each data record that is a member of some subclass starts with a standard
172 /// header of type EFI_SUBCLASS_TYPE1_HEADER.
173 /// This header is only a guideline and applicable only to a data
174 /// subclass that is producing SMBIOS data records. A subclass can start with a
175 /// different header if needed.
179 /// The version of the specification to which a specific subclass data record adheres.
183 /// The size in bytes of this data class header.
187 /// The instance number of the subclass with the same ProducerName. This number is
188 /// applicable in cases where multiple subclass instances that were produced by the same
189 /// driver exist in the system. This entry is 1 based; 0 means Reserved and -1 means Not
190 /// Applicable. All data consumer drivers should be able to handle all the possible values
191 /// of Instance, including Not Applicable and Reserved.
195 /// The instance number of the RecordType for the same Instance. This number is
196 /// applicable in cases where multiple instances of the RecordType exist for a specific
197 /// Instance. This entry is 1 based; 0 means Reserved and -1 means Not Applicable.
198 /// All data consumer drivers should be able to handle all the possible values of
199 /// SubInstance, including Not Applicable and Reserved.
203 /// The record number for the data record being specified. The numbering scheme and
204 /// definition is defined in the specific subclass specification.
207 } EFI_SUBCLASS_TYPE1_HEADER
;
210 /// This structure is used to link data records in the same subclasses. A data record is
211 /// defined as a link to another data record in the same subclass using this structure.
215 /// An EFI_GUID that identifies the component that produced this data record. Type
216 /// EFI_GUID is defined in InstallProtocolInterface() in the EFI 1.10 Specification.
218 EFI_GUID ProducerName
;
220 /// The instance number of the subclass with the same ProducerName. This number is
221 /// applicable in cases where multiple subclass instances that were produced by the same
222 /// driver exist in the system. This entry is 1 based; 0 means Reserved and -1 means Not
223 /// Applicable. All data consumer drivers should be able to handle all the possible values
224 /// of Instance, including Not Applicable and Reserved.
227 /// The instance number of the RecordType for the same Instance. This number is
228 /// applicable in cases where multiple instances of the RecordType exist for a specific
229 /// Instance. This entry is 1 based; 0 means Reserved and -1 means Not Applicable.
230 /// All data consumer drivers should be able to handle all the possible values of
231 /// SubInstance, including Not Applicable and Reserved.
233 } EFI_INTER_LINK_DATA
;
239 /// This macro provides a calculation for base-10 representations. Value and Exponent are each
240 /// INT16. It is signed to cover negative values and is 16 bits wide (15 bits for data and 1 bit
245 /// The INT16 number by which to multiply the base-10 representation.
249 /// The INT16 number by which to raise the base-10 calculation.
252 } EFI_EXP_BASE2_DATA
;
255 /// This macro provides a calculation for base-2 representations. Value and Exponent are each
256 /// INT16. It is 16 bits wide and is unsigned to mean nonnegative values.
260 /// The INT16 number by which to multiply the base-2 representation.
264 /// The INT16 number by which to raise the base-2 calculation.
267 } EFI_EXP_BASE10_DATA
;
269 typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_MAX_CORE_FREQUENCY_DATA
;
270 typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_MAX_FSB_FREQUENCY_DATA
;
271 typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_CORE_FREQUENCY_DATA
;
274 /// This data record refers to the list of frequencies that the processor core supports. The list of
275 /// supported frequencies is determined by the firmware based on hardware capabilities--for example,
276 /// it could be a common subset of all processors and the chipset. The unit of measurement of this data
277 /// record is in Hertz. For asynchronous processors, the content of this data record is zero.
278 /// The list is terminated by -1 in the Value field of the last element. A Value field of zero means
279 /// that the processor/driver supports automatic frequency selection.
281 /// Inconsistent with specification here:
282 /// According to MiscSubclass 0.9 spec, it should be a pointer since it refers to a list of frequencies.
284 typedef EFI_EXP_BASE10_DATA
*EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA
;
287 /// This data record refers to the list of supported frequencies of the processor external bus. The list of
288 /// supported frequencies is determined by the firmware based on hardware capabilities--for example,
289 /// it could be a common subset of all processors and the chipset. The unit of measurement of this data
290 /// record is in Hertz. For asynchronous processors, the content of this data record is NULL.
291 /// The list is terminated by -1 in the Value field of the last element. A Value field of zero means
292 /// that the processor/driver supports automatic frequency selection.
294 typedef EFI_EXP_BASE10_DATA
*EFI_PROCESSOR_FSB_FREQUENCY_LIST_DATA
;
295 typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_FSB_FREQUENCY_DATA
;
296 typedef STRING_REF EFI_PROCESSOR_VERSION_DATA
;
297 typedef STRING_REF EFI_PROCESSOR_MANUFACTURER_DATA
;
298 typedef STRING_REF EFI_PROCESSOR_SERIAL_NUMBER_DATA
;
299 typedef STRING_REF EFI_PROCESSOR_ASSET_TAG_DATA
;
302 UINT32 ProcessorSteppingId
:4;
303 UINT32 ProcessorModel
: 4;
304 UINT32 ProcessorFamily
: 4;
305 UINT32 ProcessorType
: 2;
306 UINT32 ProcessorReserved1
: 2;
307 UINT32 ProcessorXModel
: 4;
308 UINT32 ProcessorXFamily
: 8;
309 UINT32 ProcessorReserved2
: 4;
310 } EFI_PROCESSOR_SIGNATURE
;
314 /// Inconsistent with specification here:
315 /// The name of third field in ProcSubClass spec0.9 is LogicalProcessorCount.
316 /// Keep it unchanged for backward compatibility.
319 UINT32 ProcessorBrandIndex
:8;
320 UINT32 ProcessorClflush
:8;
321 UINT32 ProcessorReserved
:8;
322 UINT32 ProcessorDfltApicId
:8;
323 } EFI_PROCESSOR_MISC_INFO
;
326 UINT32 ProcessorFpu
: 1;
327 UINT32 ProcessorVme
: 1;
328 UINT32 ProcessorDe
: 1;
329 UINT32 ProcessorPse
: 1;
330 UINT32 ProcessorTsc
: 1;
331 UINT32 ProcessorMsr
: 1;
332 UINT32 ProcessorPae
: 1;
333 UINT32 ProcessorMce
: 1;
334 UINT32 ProcessorCx8
: 1;
335 UINT32 ProcessorApic
: 1;
336 UINT32 ProcessorReserved1
: 1;
337 UINT32 ProcessorSep
: 1;
338 UINT32 ProcessorMtrr
: 1;
339 UINT32 ProcessorPge
: 1;
340 UINT32 ProcessorMca
: 1;
341 UINT32 ProcessorCmov
: 1;
342 UINT32 ProcessorPat
: 1;
343 UINT32 ProcessorPse36
: 1;
344 UINT32 ProcessorPsn
: 1;
345 UINT32 ProcessorClfsh
: 1;
346 UINT32 ProcessorReserved2
: 1;
347 UINT32 ProcessorDs
: 1;
348 UINT32 ProcessorAcpi
: 1;
349 UINT32 ProcessorMmx
: 1;
350 UINT32 ProcessorFxsr
: 1;
351 UINT32 ProcessorSse
: 1;
352 UINT32 ProcessorSse2
: 1;
353 UINT32 ProcessorSs
: 1;
354 UINT32 ProcessorReserved3
: 1;
355 UINT32 ProcessorTm
: 1;
356 UINT32 ProcessorReserved4
: 2;
357 } EFI_PROCESSOR_FEATURE_FLAGS
;
360 /// This data record refers to the unique ID that identifies a set of processors. This data record is 16
361 /// bytes in length. The data in this structure is processor specific and reserved values can be defined
362 /// for future use. The consumer of this data should not make any assumption and should use this data
363 /// with respect to the processor family defined in the Family record number.
367 /// Identifies the processor.
369 EFI_PROCESSOR_SIGNATURE Signature
;
371 /// Provides additional processor information.
373 EFI_PROCESSOR_MISC_INFO MiscInfo
;
375 /// Reserved for future use.
379 /// Provides additional processor information.
381 EFI_PROCESSOR_FEATURE_FLAGS FeatureFlags
;
382 } EFI_PROCESSOR_ID_DATA
;
385 /// This data record refers to the general classification of the processor. This data record is 4 bytes in
389 EfiProcessorOther
= 1,
390 EfiProcessorUnknown
= 2,
391 EfiCentralProcessor
= 3,
392 EfiMathProcessor
= 4,
394 EfiVideoProcessor
= 6
395 } EFI_PROCESSOR_TYPE_DATA
;
398 /// This data record refers to the family of the processor as defined by the DMTF.
399 /// This data record is 4 bytes in length.
402 EfiProcessorFamilyOther
= 0x01,
403 EfiProcessorFamilyUnknown
= 0x02,
404 EfiProcessorFamily8086
= 0x03,
405 EfiProcessorFamily80286
= 0x04,
406 EfiProcessorFamilyIntel386
= 0x05,
407 EfiProcessorFamilyIntel486
= 0x06,
408 EfiProcessorFamily8087
= 0x07,
409 EfiProcessorFamily80287
= 0x08,
410 EfiProcessorFamily80387
= 0x09,
411 EfiProcessorFamily80487
= 0x0A,
412 EfiProcessorFamilyPentium
= 0x0B,
413 EfiProcessorFamilyPentiumPro
= 0x0C,
414 EfiProcessorFamilyPentiumII
= 0x0D,
415 EfiProcessorFamilyPentiumMMX
= 0x0E,
416 EfiProcessorFamilyCeleron
= 0x0F,
417 EfiProcessorFamilyPentiumIIXeon
= 0x10,
418 EfiProcessorFamilyPentiumIII
= 0x11,
419 EfiProcessorFamilyM1
= 0x12,
420 EfiProcessorFamilyM2
= 0x13,
421 EfiProcessorFamilyM1Reserved2
= 0x14,
422 EfiProcessorFamilyM1Reserved3
= 0x15,
423 EfiProcessorFamilyM1Reserved4
= 0x16,
424 EfiProcessorFamilyM1Reserved5
= 0x17,
425 EfiProcessorFamilyAmdDuron
= 0x18,
426 EfiProcessorFamilyK5
= 0x19,
427 EfiProcessorFamilyK6
= 0x1A,
428 EfiProcessorFamilyK6_2
= 0x1B,
429 EfiProcessorFamilyK6_3
= 0x1C,
430 EfiProcessorFamilyAmdAthlon
= 0x1D,
431 EfiProcessorFamilyAmd29000
= 0x1E,
432 EfiProcessorFamilyK6_2Plus
= 0x1F,
433 EfiProcessorFamilyPowerPC
= 0x20,
434 EfiProcessorFamilyPowerPC601
= 0x21,
435 EfiProcessorFamilyPowerPC603
= 0x22,
436 EfiProcessorFamilyPowerPC603Plus
= 0x23,
437 EfiProcessorFamilyPowerPC604
= 0x24,
438 EfiProcessorFamilyPowerPC620
= 0x25,
439 EfiProcessorFamilyPowerPCx704
= 0x26,
440 EfiProcessorFamilyPowerPC750
= 0x27,
441 EfiProcessorFamilyAlpha3
= 0x30,
442 EfiProcessorFamilyAlpha21064
= 0x31,
443 EfiProcessorFamilyAlpha21066
= 0x32,
444 EfiProcessorFamilyAlpha21164
= 0x33,
445 EfiProcessorFamilyAlpha21164PC
= 0x34,
446 EfiProcessorFamilyAlpha21164a
= 0x35,
447 EfiProcessorFamilyAlpha21264
= 0x36,
448 EfiProcessorFamilyAlpha21364
= 0x37,
449 EfiProcessorFamilyMips
= 0x40,
450 EfiProcessorFamilyMIPSR4000
= 0x41,
451 EfiProcessorFamilyMIPSR4200
= 0x42,
452 EfiProcessorFamilyMIPSR4400
= 0x43,
453 EfiProcessorFamilyMIPSR4600
= 0x44,
454 EfiProcessorFamilyMIPSR10000
= 0x45,
455 EfiProcessorFamilySparc
= 0x50,
456 EfiProcessorFamilySuperSparc
= 0x51,
457 EfiProcessorFamilymicroSparcII
= 0x52,
458 EfiProcessorFamilymicroSparcIIep
= 0x53,
459 EfiProcessorFamilyUltraSparc
= 0x54,
460 EfiProcessorFamilyUltraSparcII
= 0x55,
461 EfiProcessorFamilyUltraSparcIIi
= 0x56,
462 EfiProcessorFamilyUltraSparcIII
= 0x57,
464 /// Inconsistent with specification here:
465 /// This field in ProcSubClass spec 0.9 is defined as EfiProcessorFamilyUltraSparcIIi.
466 /// Change it to EfiProcessorFamilyUltraSparcIIIi to avoid build break.
468 EfiProcessorFamilyUltraSparcIIIi
= 0x58,
469 EfiProcessorFamily68040
= 0x60,
470 EfiProcessorFamily68xxx
= 0x61,
471 EfiProcessorFamily68000
= 0x62,
472 EfiProcessorFamily68010
= 0x63,
473 EfiProcessorFamily68020
= 0x64,
474 EfiProcessorFamily68030
= 0x65,
475 EfiProcessorFamilyHobbit
= 0x70,
476 EfiProcessorFamilyCrusoeTM5000
= 0x78,
477 EfiProcessorFamilyCrusoeTM3000
= 0x79,
478 EfiProcessorFamilyEfficeonTM8000
= 0x7A,
479 EfiProcessorFamilyWeitek
= 0x80,
480 EfiProcessorFamilyItanium
= 0x82,
481 EfiProcessorFamilyAmdAthlon64
= 0x83,
482 EfiProcessorFamilyAmdOpteron
= 0x84,
483 EfiProcessorFamilyAmdSempron
= 0x85,
484 EfiProcessorFamilyAmdTurion64Mobile
= 0x86,
485 EfiProcessorFamilyDualCoreAmdOpteron
= 0x87,
486 EfiProcessorFamilyAmdAthlon64X2DualCore
= 0x88,
487 EfiProcessorFamilyAmdTurion64X2Mobile
= 0x89,
488 EfiProcessorFamilyPARISC
= 0x90,
489 EfiProcessorFamilyPaRisc8500
= 0x91,
490 EfiProcessorFamilyPaRisc8000
= 0x92,
491 EfiProcessorFamilyPaRisc7300LC
= 0x93,
492 EfiProcessorFamilyPaRisc7200
= 0x94,
493 EfiProcessorFamilyPaRisc7100LC
= 0x95,
494 EfiProcessorFamilyPaRisc7100
= 0x96,
495 EfiProcessorFamilyV30
= 0xA0,
496 EfiProcessorFamilyPentiumIIIXeon
= 0xB0,
497 EfiProcessorFamilyPentiumIIISpeedStep
= 0xB1,
498 EfiProcessorFamilyPentium4
= 0xB2,
499 EfiProcessorFamilyIntelXeon
= 0xB3,
500 EfiProcessorFamilyAS400
= 0xB4,
501 EfiProcessorFamilyIntelXeonMP
= 0xB5,
502 EfiProcessorFamilyAMDAthlonXP
= 0xB6,
503 EfiProcessorFamilyAMDAthlonMP
= 0xB7,
504 EfiProcessorFamilyIntelItanium2
= 0xB8,
506 /// Inconsistent with specification here:
507 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
509 EfiProcessorFamilyIntelPentiumM
= 0xB9,
511 /// Inconsistent with specification here:
512 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
514 EfiProcessorFamilyIntelCeleronD
= 0xBA,
516 /// Inconsistent with specification here:
517 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
519 EfiProcessorFamilyIntelPentiumD
= 0xBB,
521 /// Inconsistent with specification here:
522 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
524 EfiProcessorFamilyIntelPentiumEx
= 0xBC,
526 /// Inconsistent with specification here:
527 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
529 EfiProcessorFamilyIntelCoreSolo
= 0xBD,
531 /// Inconsistent with specification here:
532 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
534 EfiProcessorFamilyReserved
= 0xBE,
536 /// Inconsistent with specification here:
537 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
539 EfiProcessorFamilyIntelCore2
= 0xBF,
540 EfiProcessorFamilyIBM390
= 0xC8,
541 EfiProcessorFamilyG4
= 0xC9,
542 EfiProcessorFamilyG5
= 0xCA,
544 /// Inconsistent with specification here:
545 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
547 EfiProcessorFamilyG6
= 0xCB,
549 /// Inconsistent with specification here:
550 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
552 EfiProcessorFamilyzArchitectur
= 0xCC,
554 /// Inconsistent with specification here:
555 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
557 EfiProcessorFamilyViaC7M
= 0xD2,
559 /// Inconsistent with specification here:
560 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
562 EfiProcessorFamilyViaC7D
= 0xD3,
564 /// Inconsistent with specification here:
565 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
567 EfiProcessorFamilyViaC7
= 0xD4,
569 /// Inconsistent with specification here:
570 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
572 EfiProcessorFamilyViaEden
= 0xD5,
573 EfiProcessorFamilyi860
= 0xFA,
574 EfiProcessorFamilyi960
= 0xFB,
576 /// Inconsistent with specification here:
577 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
579 EfiProcessorFamilyIndicatorFamily2
= 0xFE,
581 /// Inconsistent with specification here:
582 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
584 EfiProcessorFamilyReserved1
= 0xFF
585 } EFI_PROCESSOR_FAMILY_DATA
;
588 /// This data record refers to the core voltage of the processor being defined. The unit of measurement
589 /// of this data record is in volts.
591 typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_VOLTAGE_DATA
;
594 /// This data record refers to the base address of the APIC of the processor being defined. This data
595 /// record is a physical address location.
597 typedef EFI_PHYSICAL_ADDRESS EFI_PROCESSOR_APIC_BASE_ADDRESS_DATA
;
600 /// This data record refers to the ID of the APIC of the processor being defined. This data record is a
603 typedef UINT32 EFI_PROCESSOR_APIC_ID_DATA
;
606 /// This data record refers to the version number of the APIC of the processor being defined. This data
607 /// record is a 4-byte entry.
609 typedef UINT32 EFI_PROCESSOR_APIC_VERSION_NUMBER_DATA
;
612 EfiProcessorIa32Microcode
= 1,
613 EfiProcessorIpfPalAMicrocode
= 2,
614 EfiProcessorIpfPalBMicrocode
= 3
615 } EFI_PROCESSOR_MICROCODE_TYPE
;
618 /// This data record refers to the revision of the processor microcode that is loaded in the processor.
619 /// This data record is a 4-byte entry.
623 /// Identifies what type of microcode the data is.
625 EFI_PROCESSOR_MICROCODE_TYPE ProcessorMicrocodeType
;
627 /// Indicates the revision number of this microcode.
629 UINT32 ProcessorMicrocodeRevisionNumber
;
630 } EFI_PROCESSOR_MICROCODE_REVISION_DATA
;
633 /// This data record refers to the status of the processor.
636 UINT32 CpuStatus
:3; ///< Indicates the status of the processor.
637 UINT32 Reserved1
:3; ///< Reserved for future use. Should be set to zero.
638 UINT32 SocketPopulated
:1; ///< Indicates if the processor is socketed or not.
639 UINT32 Reserved2
:1; ///< Reserved for future use. Should be set to zero.
640 UINT32 ApicEnable
:1; ///< Indicates if the APIC is enabled or not.
641 UINT32 BootApplicationProcessor
:1; ///< Indicates if this processor is the boot processor.
642 UINT32 Reserved3
:22;///< Reserved for future use. Should be set to zero.
643 } EFI_PROCESSOR_STATUS_DATA
;
646 EfiCpuStatusUnknown
= 0,
647 EfiCpuStatusEnabled
= 1,
648 EfiCpuStatusDisabledByUser
= 2,
649 EfiCpuStatusDisabledbyBios
= 3,
650 EfiCpuStatusIdle
= 4,
651 EfiCpuStatusOther
= 7
655 EfiProcessorSocketOther
= 1,
656 EfiProcessorSocketUnknown
= 2,
657 EfiProcessorSocketDaughterBoard
= 3,
658 EfiProcessorSocketZIF
= 4,
659 EfiProcessorSocketReplacePiggyBack
= 5,
660 EfiProcessorSocketNone
= 6,
661 EfiProcessorSocketLIF
= 7,
662 EfiProcessorSocketSlot1
= 8,
663 EfiProcessorSocketSlot2
= 9,
664 EfiProcessorSocket370Pin
= 0xA,
665 EfiProcessorSocketSlotA
= 0xB,
666 EfiProcessorSocketSlotM
= 0xC,
667 EfiProcessorSocket423
= 0xD,
668 EfiProcessorSocketA462
= 0xE,
669 EfiProcessorSocket478
= 0xF,
670 EfiProcessorSocket754
= 0x10,
671 EfiProcessorSocket940
= 0x11,
673 /// Inconsistent with specification here:
674 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
676 EfiProcessorSocket939
= 0x12,
678 /// Inconsistent with specification here:
679 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
681 EfiProcessorSocketmPGA604
= 0x13,
683 /// Inconsistent with specification here:
684 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
686 EfiProcessorSocketLGA771
= 0x14,
688 /// Inconsistent with specification here:
689 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
691 EfiProcessorSocketLGA775
= 0x15
693 } EFI_PROCESSOR_SOCKET_TYPE_DATA
;
695 typedef STRING_REF EFI_PROCESSOR_SOCKET_NAME_DATA
;
698 /// Inconsistent with specification here:
699 /// In MiscSubclass spec 0.9, the naming is EFI_PROCESSOR_CACHE_ASSOCIATION_DATA.
700 /// Keep it unchanged for backward compatibilty.
702 typedef EFI_INTER_LINK_DATA EFI_CACHE_ASSOCIATION_DATA
;
705 /// This data record refers to the health status of the processor.
707 /// Inconsistent with specification here:
708 /// In MiscSubclass spec 0.9, the naming is EFI_PROCESSOR_HEALTH_STATUS_DATA.
709 /// Keep it unchanged for backward compatibilty.
712 EfiProcessorHealthy
= 1,
713 EfiProcessorPerfRestricted
= 2,
714 EfiProcessorFuncRestricted
= 3
715 } EFI_PROCESSOR_HEALTH_STATUS
;
718 /// This data record refers to the package number of this processor. Multiple logical processors can
719 /// exist in a system and each logical processor can be correlated to the physical processor using this
722 typedef UINTN EFI_PROCESSOR_PACKAGE_NUMBER_DATA
;
725 /// Inconsistent with specification here:
726 /// In ProcSubclass spec 0.9, the enumeration type data structure is NOT defined.
727 /// The equivalent in spec is
728 /// #define EFI_PROCESSOR_FREQUENCY_RECORD_NUMBER 0x00000001
729 /// #define EFI_PROCESSOR_BUS_FREQUENCY_RECORD_NUMBER 0x00000002
730 /// #define EFI_PROCESSOR_VERSION_RECORD_NUMBER 0x00000003
731 /// #define EFI_PROCESSOR_MANUFACTURER_RECORD_NUMBER 0x00000004
732 /// #define EFI_PROCESSOR_SERIAL_NUMBER_RECORD_NUMBER 0x00000005
733 /// #define EFI_PROCESSOR_ID_RECORD_NUMBER 0x00000006
734 /// #define EFI_PROCESSOR_TYPE_RECORD_NUMBER 0x00000007
735 /// #define EFI_PROCESSOR_FAMILY_RECORD_NUMBER 0x00000008
736 /// #define EFI_PROCESSOR_VOLTAGE_RECORD_NUMBER 0x00000009
737 /// #define EFI_PROCESSOR_APIC_BASE_ADDRESS_RECORD_NUMBER 0x0000000A
738 /// #define EFI_PROCESSOR_APIC_ID_RECORD_NUMBER 0x0000000B
739 /// #define EFI_PROCESSOR_APIC_VER_NUMBER_RECORD_NUMBER 0x0000000C
740 /// #define EFI_PROCESSOR_MICROCODE_REVISION_RECORD_NUMBER 0x0000000D
741 /// #define EFI_PROCESSOR_STATUS_RECORD_NUMBER 0x0000000E
742 /// #define EFI_PROCESSOR_SOCKET_TYPE_RECORD_NUMBER 0x0000000F
743 /// #define EFI_PROCESSOR_SOCKET_NAME_RECORD_NUMBER 0x00000010
744 /// #define EFI_PROCESSOR_CACHE_ASSOCIATION_RECORD_NUMBER 0x00000011
745 /// #define EFI_PROCESSOR_MAX_FREQUENCY_RECORD_NUMBER 0x00000012
746 /// #define EFI_PROCESSOR_ASSET_TAG_RECORD_NUMBER 0x00000013
747 /// #define EFI_PROCESSOR_MAX_FSB_FREQUENCY_RECORD_NUMBER 0x00000014
748 /// #define EFI_PROCESSOR_PACKAGE_NUMBER_RECORD_NUMBER 0x00000015
749 /// #define EFI_PROCESSOR_FREQUENCY_LIST_RECORD_NUMBER 0x00000016
750 /// #define EFI_PROCESSOR_FSB_FREQUENCY_LIST_RECORD_NUMBER 0x00000017
751 /// #define EFI_PROCESSOR_HEALTH_STATUS_RECORD_NUMBER 0x00000018
753 /// Keep the definition unchanged for backward compatibility.
755 ProcessorCoreFrequencyRecordType
= 1,
756 ProcessorFsbFrequencyRecordType
= 2,
757 ProcessorVersionRecordType
= 3,
758 ProcessorManufacturerRecordType
= 4,
759 ProcessorSerialNumberRecordType
= 5,
760 ProcessorIdRecordType
= 6,
761 ProcessorTypeRecordType
= 7,
762 ProcessorFamilyRecordType
= 8,
763 ProcessorVoltageRecordType
= 9,
764 ProcessorApicBaseAddressRecordType
= 10,
765 ProcessorApicIdRecordType
= 11,
766 ProcessorApicVersionNumberRecordType
= 12,
767 CpuUcodeRevisionDataRecordType
= 13,
768 ProcessorStatusRecordType
= 14,
769 ProcessorSocketTypeRecordType
= 15,
770 ProcessorSocketNameRecordType
= 16,
771 CacheAssociationRecordType
= 17,
772 ProcessorMaxCoreFrequencyRecordType
= 18,
773 ProcessorAssetTagRecordType
= 19,
774 ProcessorMaxFsbFrequencyRecordType
= 20,
775 ProcessorPackageNumberRecordType
= 21,
776 ProcessorCoreFrequencyListRecordType
= 22,
777 ProcessorFsbFrequencyListRecordType
= 23,
778 ProcessorHealthStatusRecordType
= 24
779 } EFI_CPU_VARIABLE_RECORD_TYPE
;
782 /// Inconsistent with specification here:
783 /// In ProcSubclass spec 0.9, the union type data structure is NOT defined.
784 /// It's implementation-specific to simplify the code logic.
787 EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA ProcessorCoreFrequencyList
;
788 EFI_PROCESSOR_FSB_FREQUENCY_LIST_DATA ProcessorFsbFrequencyList
;
789 EFI_PROCESSOR_SERIAL_NUMBER_DATA ProcessorSerialNumber
;
790 EFI_PROCESSOR_CORE_FREQUENCY_DATA ProcessorCoreFrequency
;
791 EFI_PROCESSOR_FSB_FREQUENCY_DATA ProcessorFsbFrequency
;
792 EFI_PROCESSOR_MAX_CORE_FREQUENCY_DATA ProcessorMaxCoreFrequency
;
793 EFI_PROCESSOR_MAX_FSB_FREQUENCY_DATA ProcessorMaxFsbFrequency
;
794 EFI_PROCESSOR_VERSION_DATA ProcessorVersion
;
795 EFI_PROCESSOR_MANUFACTURER_DATA ProcessorManufacturer
;
796 EFI_PROCESSOR_ID_DATA ProcessorId
;
797 EFI_PROCESSOR_TYPE_DATA ProcessorType
;
798 EFI_PROCESSOR_FAMILY_DATA ProcessorFamily
;
799 EFI_PROCESSOR_VOLTAGE_DATA ProcessorVoltage
;
800 EFI_PROCESSOR_APIC_BASE_ADDRESS_DATA ProcessorApicBase
;
801 EFI_PROCESSOR_APIC_ID_DATA ProcessorApicId
;
802 EFI_PROCESSOR_APIC_VERSION_NUMBER_DATA ProcessorApicVersionNumber
;
803 EFI_PROCESSOR_MICROCODE_REVISION_DATA CpuUcodeRevisionData
;
804 EFI_PROCESSOR_STATUS_DATA ProcessorStatus
;
805 EFI_PROCESSOR_SOCKET_TYPE_DATA ProcessorSocketType
;
806 EFI_PROCESSOR_SOCKET_NAME_DATA ProcessorSocketName
;
807 EFI_PROCESSOR_ASSET_TAG_DATA ProcessorAssetTag
;
808 EFI_PROCESSOR_HEALTH_STATUS ProcessorHealthStatus
;
809 EFI_PROCESSOR_PACKAGE_NUMBER_DATA ProcessorPackageNumber
;
810 } EFI_CPU_VARIABLE_RECORD
;
813 EFI_SUBCLASS_TYPE1_HEADER DataRecordHeader
;
814 EFI_CPU_VARIABLE_RECORD VariableRecord
;
815 } EFI_CPU_DATA_RECORD
;
817 #define EFI_CACHE_SUBCLASS_VERSION 0x00010000
819 typedef EFI_EXP_BASE2_DATA EFI_CACHE_SIZE_DATA
;
821 /// Inconsistent with specification here:
822 /// In MiscSubclass spec 0.9, the naming is EFI_CACHE_MAXIMUM_SIZE_DATA.
823 /// Keep it unchanged for backward compatibilty.
825 typedef EFI_EXP_BASE2_DATA EFI_MAXIMUM_CACHE_SIZE_DATA
;
826 typedef EFI_EXP_BASE10_DATA EFI_CACHE_SPEED_DATA
;
827 typedef STRING_REF EFI_CACHE_SOCKET_DATA
;
834 UINT32 PipelineBurst
:1;
835 UINT32 Asynchronous
:1;
836 UINT32 Synchronous
:1;
838 } EFI_CACHE_SRAM_TYPE_DATA
;
840 typedef EFI_CACHE_SRAM_TYPE_DATA EFI_CACHE_SRAM_INSTALL_DATA
;
843 EfiCacheErrorOther
= 1,
844 EfiCacheErrorUnknown
= 2,
845 EfiCacheErrorNone
= 3,
846 EfiCacheErrorParity
= 4,
847 EfiCacheErrorSingleBit
= 5,
848 EfiCacheErrorMultiBit
= 6
849 } EFI_CACHE_ERROR_TYPE_DATA
;
852 EfiCacheTypeOther
= 1,
853 EfiCacheTypeUnknown
= 2,
854 EfiCacheTypeInstruction
= 3,
855 EfiCacheTypeData
= 4,
856 EfiCacheTypeUnified
= 5
857 } EFI_CACHE_TYPE_DATA
;
860 EfiCacheAssociativityOther
= 1,
861 EfiCacheAssociativityUnknown
= 2,
862 EfiCacheAssociativityDirectMapped
= 3,
863 EfiCacheAssociativity2Way
= 4,
864 EfiCacheAssociativity4Way
= 5,
865 EfiCacheAssociativityFully
= 6,
866 EfiCacheAssociativity8Way
= 7,
867 EfiCacheAssociativity16Way
= 8
868 } EFI_CACHE_ASSOCIATIVITY_DATA
;
871 /// Inconsistent with specification here:
872 /// In CacheSubclass 0.9 spec. It defines the field type as UINT16.
873 /// In fact, it should be UINT32 type since it refers to a 32bit width data.
881 UINT32 OperationalMode
:2;
882 UINT32 Reserved1
:22;
883 } EFI_CACHE_CONFIGURATION_DATA
;
885 #define EFI_CACHE_L1 1
886 #define EFI_CACHE_L2 2
887 #define EFI_CACHE_L3 3
888 #define EFI_CACHE_L4 4
889 #define EFI_CACHE_LMAX EFI_CACHE_L4
891 #define EFI_CACHE_SOCKETED 1
892 #define EFI_CACHE_NOT_SOCKETED 0
895 EfiCacheInternal
= 0,
896 EfiCacheExternal
= 1,
897 EfiCacheReserved
= 2,
899 } EFI_CACHE_LOCATION
;
901 #define EFI_CACHE_ENABLED 1
902 #define EFI_CACHE_DISABLED 0
905 EfiCacheWriteThrough
= 0,
906 EfiCacheWriteBack
= 1,
907 EfiCacheDynamicMode
= 2,
908 EfiCacheUnknownMode
= 3
909 } EFI_CACHE_OPERATIONAL_MODE
;
914 CacheSizeRecordType
= 1,
915 MaximumSizeCacheRecordType
= 2,
916 CacheSpeedRecordType
= 3,
917 CacheSocketRecordType
= 4,
918 CacheSramTypeRecordType
= 5,
919 CacheInstalledSramTypeRecordType
= 6,
920 CacheErrorTypeRecordType
= 7,
921 CacheTypeRecordType
= 8,
922 CacheAssociativityRecordType
= 9,
923 CacheConfigRecordType
= 10
924 } EFI_CACHE_VARIABLE_RECORD_TYPE
;
927 /// Inconsistent with specification here:
928 /// In CacheSubclass spec0.9, the union type data structure is NOT defined.
929 /// It's implementation-specific to simplify the code logic.
932 EFI_CACHE_SIZE_DATA CacheSize
;
933 EFI_MAXIMUM_CACHE_SIZE_DATA MaximumCacheSize
;
934 EFI_CACHE_SPEED_DATA CacheSpeed
;
935 EFI_CACHE_SOCKET_DATA CacheSocket
;
936 EFI_CACHE_SRAM_TYPE_DATA CacheSramType
;
937 EFI_CACHE_SRAM_TYPE_DATA CacheInstalledSramType
;
938 EFI_CACHE_ERROR_TYPE_DATA CacheErrorType
;
939 EFI_CACHE_TYPE_DATA CacheType
;
940 EFI_CACHE_ASSOCIATIVITY_DATA CacheAssociativity
;
941 EFI_CACHE_CONFIGURATION_DATA CacheConfig
;
942 EFI_CACHE_ASSOCIATION_DATA CacheAssociation
;
943 } EFI_CACHE_VARIABLE_RECORD
;
946 EFI_SUBCLASS_TYPE1_HEADER DataRecordHeader
;
947 EFI_CACHE_VARIABLE_RECORD VariableRecord
;
948 } EFI_CACHE_DATA_RECORD
;
950 #define EFI_MEMORY_SUBCLASS_VERSION 0x0100
951 #define EFI_MEMORY_SIZE_RECORD_NUMBER 0x00000001
953 typedef enum _EFI_MEMORY_REGION_TYPE
{
954 EfiMemoryRegionMemory
= 0x01,
955 EfiMemoryRegionReserved
= 0x02,
956 EfiMemoryRegionAcpi
= 0x03,
957 EfiMemoryRegionNvs
= 0x04
958 } EFI_MEMORY_REGION_TYPE
;
961 /// This data record refers to the size of a memory region. The regions that are
962 /// described can refer to physical memory, memory-mapped I/O, or reserved BIOS memory regions.
963 /// The unit of measurement of this data record is in bytes.
967 /// A zero-based value that indicates which processor(s) can access the memory region.
968 /// A value of 0xFFFF indicates the region is accessible by all processors.
970 UINT32 ProcessorNumber
;
972 /// A zero-based value that indicates the starting bus that can access the memory region.
974 UINT16 StartBusNumber
;
976 /// A zero-based value that indicates the ending bus that can access the memory region.
977 /// A value of 0xFF for a PCI system indicates the region is accessible by all buses and
978 /// is global in scope. An example of the EndBusNumber not being 0xFF is a system
979 /// with two or more peer-to-host PCI bridges.
983 /// The type of memory region from the operating system's point of view.
984 /// MemoryRegionType values are equivalent to the legacy INT 15 AX = E820 BIOS
987 EFI_MEMORY_REGION_TYPE MemoryRegionType
;
989 /// The size of the memory region in bytes.
991 EFI_EXP_BASE2_DATA MemorySize
;
993 /// The starting physical address of the memory region.
995 EFI_PHYSICAL_ADDRESS MemoryStartAddress
;
996 } EFI_MEMORY_SIZE_DATA
;
999 #define EFI_MEMORY_ARRAY_LOCATION_RECORD_NUMBER 0x00000002
1001 typedef enum _EFI_MEMORY_ARRAY_LOCATION
{
1002 EfiMemoryArrayLocationOther
= 0x01,
1003 EfiMemoryArrayLocationUnknown
= 0x02,
1004 EfiMemoryArrayLocationSystemBoard
= 0x03,
1005 EfiMemoryArrayLocationIsaAddonCard
= 0x04,
1006 EfiMemoryArrayLocationEisaAddonCard
= 0x05,
1007 EfiMemoryArrayLocationPciAddonCard
= 0x06,
1008 EfiMemoryArrayLocationMcaAddonCard
= 0x07,
1009 EfiMemoryArrayLocationPcmciaAddonCard
= 0x08,
1010 EfiMemoryArrayLocationProprietaryAddonCard
= 0x09,
1011 EfiMemoryArrayLocationNuBus
= 0x0A,
1012 EfiMemoryArrayLocationPc98C20AddonCard
= 0xA0,
1013 EfiMemoryArrayLocationPc98C24AddonCard
= 0xA1,
1014 EfiMemoryArrayLocationPc98EAddonCard
= 0xA2,
1015 EfiMemoryArrayLocationPc98LocalBusAddonCard
= 0xA3
1016 } EFI_MEMORY_ARRAY_LOCATION
;
1018 typedef enum _EFI_MEMORY_ARRAY_USE
{
1019 EfiMemoryArrayUseOther
= 0x01,
1020 EfiMemoryArrayUseUnknown
= 0x02,
1021 EfiMemoryArrayUseSystemMemory
= 0x03,
1022 EfiMemoryArrayUseVideoMemory
= 0x04,
1023 EfiMemoryArrayUseFlashMemory
= 0x05,
1024 EfiMemoryArrayUseNonVolatileRam
= 0x06,
1025 EfiMemoryArrayUseCacheMemory
= 0x07
1026 } EFI_MEMORY_ARRAY_USE
;
1028 typedef enum _EFI_MEMORY_ERROR_CORRECTION
{
1029 EfiMemoryErrorCorrectionOther
= 0x01,
1030 EfiMemoryErrorCorrectionUnknown
= 0x02,
1031 EfiMemoryErrorCorrectionNone
= 0x03,
1032 EfiMemoryErrorCorrectionParity
= 0x04,
1033 EfiMemoryErrorCorrectionSingleBitEcc
= 0x05,
1034 EfiMemoryErrorCorrectionMultiBitEcc
= 0x06,
1035 EfiMemoryErrorCorrectionCrc
= 0x07
1036 } EFI_MEMORY_ERROR_CORRECTION
;
1039 /// This data record refers to the physical memory array. This data record is a structure.
1040 /// The type definition structure for EFI_MEMORY_ARRAY_LOCATION_DATA is in SMBIOS 2.3.4:
1041 /// - Table 3.3.17.1, Type 16, Offset 0x4
1042 /// - Table 3.3.17.2, Type 16, Offset 0x5
1043 /// - Table 3.3.17.3, Type 16, with the following offsets:
1051 /// The physical location of the memory array.
1053 EFI_MEMORY_ARRAY_LOCATION MemoryArrayLocation
;
1055 /// The memory array usage.
1057 EFI_MEMORY_ARRAY_USE MemoryArrayUse
;
1059 /// The primary error correction or detection supported by this memory array.
1061 EFI_MEMORY_ERROR_CORRECTION MemoryErrorCorrection
;
1063 /// The maximum memory capacity size in kilobytes. If capacity is unknown, then
1064 /// values of MaximumMemoryCapacity.Value = 0x00 and
1065 /// MaximumMemoryCapacity.Exponent = 0x8000 are used.
1067 EFI_EXP_BASE2_DATA MaximumMemoryCapacity
;
1069 /// The number of memory slots or sockets that are available for memory devices
1072 UINT16 NumberMemoryDevices
;
1073 } EFI_MEMORY_ARRAY_LOCATION_DATA
;
1076 #define EFI_MEMORY_ARRAY_LINK_RECORD_NUMBER 0x00000003
1078 typedef enum _EFI_MEMORY_FORM_FACTOR
{
1079 EfiMemoryFormFactorOther
= 0x01,
1080 EfiMemoryFormFactorUnknown
= 0x02,
1081 EfiMemoryFormFactorSimm
= 0x03,
1082 EfiMemoryFormFactorSip
= 0x04,
1083 EfiMemoryFormFactorChip
= 0x05,
1084 EfiMemoryFormFactorDip
= 0x06,
1085 EfiMemoryFormFactorZip
= 0x07,
1086 EfiMemoryFormFactorProprietaryCard
= 0x08,
1087 EfiMemoryFormFactorDimm
= 0x09,
1088 EfiMemoryFormFactorTsop
= 0x0A,
1089 EfiMemoryFormFactorRowOfChips
= 0x0B,
1090 EfiMemoryFormFactorRimm
= 0x0C,
1091 EfiMemoryFormFactorSodimm
= 0x0D,
1092 EfiMemoryFormFactorSrimm
= 0x0E,
1094 /// Inconsistent with specification here:
1095 /// This field is NOT defined in MemSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
1097 EfiMemoryFormFactorFbDimm
= 0x0F
1098 } EFI_MEMORY_FORM_FACTOR
;
1100 typedef enum _EFI_MEMORY_ARRAY_TYPE
{
1101 EfiMemoryTypeOther
= 0x01,
1102 EfiMemoryTypeUnknown
= 0x02,
1103 EfiMemoryTypeDram
= 0x03,
1104 EfiMemoryTypeEdram
= 0x04,
1105 EfiMemoryTypeVram
= 0x05,
1106 EfiMemoryTypeSram
= 0x06,
1107 EfiMemoryTypeRam
= 0x07,
1108 EfiMemoryTypeRom
= 0x08,
1109 EfiMemoryTypeFlash
= 0x09,
1110 EfiMemoryTypeEeprom
= 0x0A,
1111 EfiMemoryTypeFeprom
= 0x0B,
1112 EfiMemoryTypeEprom
= 0x0C,
1113 EfiMemoryTypeCdram
= 0x0D,
1114 EfiMemoryType3Dram
= 0x0E,
1115 EfiMemoryTypeSdram
= 0x0F,
1116 EfiMemoryTypeSgram
= 0x10,
1117 EfiMemoryTypeRdram
= 0x11,
1118 EfiMemoryTypeDdr
= 0x12,
1120 /// Inconsistent with specification here:
1121 /// This field is NOT defined in MemSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
1123 EfiMemoryTypeDdr2
= 0x13,
1125 /// Inconsistent with specification here:
1126 /// This field is NOT defined in MemSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
1128 EfiMemoryTypeDdr2FbDimm
= 0x14
1129 } EFI_MEMORY_ARRAY_TYPE
;
1135 UINT32 FastPaged
:1;
1136 UINT32 StaticColumn
:1;
1137 UINT32 PseudoStatic
:1;
1139 UINT32 Synchronous
:1;
1142 UINT32 WindowDram
:1;
1143 UINT32 CacheDram
:1;
1144 UINT32 Nonvolatile
:1;
1145 UINT32 Reserved1
:19;
1146 } EFI_MEMORY_TYPE_DETAIL
;
1149 EfiMemoryStateEnabled
= 0,
1150 EfiMemoryStateUnknown
= 1,
1151 EfiMemoryStateUnsupported
= 2,
1152 EfiMemoryStateError
= 3,
1153 EfiMemoryStateAbsent
= 4,
1154 EfiMemoryStateDisabled
= 5,
1156 /// Inconsistent with specification here:
1157 /// This field is NOT defined in MemSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
1159 EfiMemoryStatePartial
= 6
1163 /// This data record describes a memory device. This data record is a structure.
1164 /// The type definition structure for EFI_MEMORY_ARRAY_LINK_DATA is in SMBIOS 2.3.4.
1168 /// A string that identifies the physically labeled socket or board position where the
1169 /// memory device is located.
1171 STRING_REF MemoryDeviceLocator
;
1173 /// A string denoting the physically labeled bank where the memory device is located.
1175 STRING_REF MemoryBankLocator
;
1177 /// A string denoting the memory manufacturer.
1179 STRING_REF MemoryManufacturer
;
1181 /// A string denoting the serial number of the memory device.
1183 STRING_REF MemorySerialNumber
;
1185 /// The asset tag of the memory device.
1187 STRING_REF MemoryAssetTag
;
1189 /// A string denoting the part number of the memory device.
1191 STRING_REF MemoryPartNumber
;
1193 /// A link to a memory array structure set.
1195 EFI_INTER_LINK_DATA MemoryArrayLink
;
1197 /// A link to a memory array structure set.
1199 EFI_INTER_LINK_DATA MemorySubArrayLink
;
1201 /// The total width in bits of this memory device. If there are no error correcting bits,
1202 /// then the total width equals the data width. If the width is unknown, then set the field
1205 UINT16 MemoryTotalWidth
;
1207 /// The data width in bits of the memory device. A data width of 0x00 and a total width
1208 /// of 0x08 indicate that the device is used solely for error correction.
1210 UINT16 MemoryDataWidth
;
1212 /// The size in bytes of the memory device. A value of 0x00 denotes that no device is
1213 /// installed, while a value of all Fs denotes that the size is not known.
1215 EFI_EXP_BASE2_DATA MemoryDeviceSize
;
1217 /// The form factor of the memory device.
1219 EFI_MEMORY_FORM_FACTOR MemoryFormFactor
;
1221 /// A memory device set that must be populated with all devices of the same type and
1222 /// size. A value of 0x00 indicates that the device is not part of any set. A value of 0xFF
1223 /// indicates that the attribute is unknown. Any other value denotes the set number.
1225 UINT8 MemoryDeviceSet
;
1227 /// The memory type in the socket.
1229 EFI_MEMORY_ARRAY_TYPE MemoryType
;
1231 /// The memory type details.
1233 EFI_MEMORY_TYPE_DETAIL MemoryTypeDetail
;
1235 /// The memory speed in megahertz (MHz). A value of 0x00 denotes that
1236 /// the speed is unknown.
1237 /// Inconsistent with specification here:
1238 /// In MemSubclass spec 0.9, the naming is MemoryTypeSpeed.
1239 /// Keep it unchanged for backward compatibilty.
1241 EFI_EXP_BASE10_DATA MemorySpeed
;
1243 /// The memory state.
1245 EFI_MEMORY_STATE MemoryState
;
1246 } EFI_MEMORY_ARRAY_LINK_DATA
;
1249 #define EFI_MEMORY_ARRAY_START_ADDRESS_RECORD_NUMBER 0x00000004
1252 /// This data record refers to a specified physical memory array associated with
1253 /// a given memory range.
1257 /// The starting physical address in bytes of memory mapped to a specified physical
1260 EFI_PHYSICAL_ADDRESS MemoryArrayStartAddress
;
1262 /// The last physical address in bytes of memory mapped to a specified physical memory
1265 EFI_PHYSICAL_ADDRESS MemoryArrayEndAddress
;
1267 /// See Physical Memory Array (Type 16) for physical memory array structures.
1269 EFI_INTER_LINK_DATA PhysicalMemoryArrayLink
;
1271 /// The number of memory devices that form a single row of memory for the address
1274 UINT16 MemoryArrayPartitionWidth
;
1275 } EFI_MEMORY_ARRAY_START_ADDRESS_DATA
;
1278 #define EFI_MEMORY_DEVICE_START_ADDRESS_RECORD_NUMBER 0x00000005
1281 /// This data record refers to a physical memory device that is associated with
1282 /// a given memory range.
1286 /// The starting physical address that is associated with the device.
1288 EFI_PHYSICAL_ADDRESS MemoryDeviceStartAddress
;
1290 /// The ending physical address that is associated with the device.
1292 EFI_PHYSICAL_ADDRESS MemoryDeviceEndAddress
;
1294 /// A link to the memory device data structure.
1296 EFI_INTER_LINK_DATA PhysicalMemoryDeviceLink
;
1298 /// A link to the memory array data structure.
1300 EFI_INTER_LINK_DATA PhysicalMemoryArrayLink
;
1302 /// The position of the memory device in a row. A value of 0x00 is reserved and a value
1303 /// of 0xFF indicates that the position is unknown.
1305 UINT8 MemoryDevicePartitionRowPosition
;
1307 /// The position of the device in an interleave.
1309 UINT8 MemoryDeviceInterleavePosition
;
1311 /// The maximum number of consecutive rows from the device that are accessed in a
1312 /// single interleave transfer. A value of 0x00 indicates that the device is not interleaved
1313 /// and a value of 0xFF indicates that the interleave configuration is unknown.
1315 UINT8 MemoryDeviceInterleaveDataDepth
;
1316 } EFI_MEMORY_DEVICE_START_ADDRESS_DATA
;
1320 // Memory. Channel Device Type - SMBIOS Type 37
1323 #define EFI_MEMORY_CHANNEL_TYPE_RECORD_NUMBER 0x00000006
1325 typedef enum _EFI_MEMORY_CHANNEL_TYPE
{
1326 EfiMemoryChannelTypeOther
= 1,
1327 EfiMemoryChannelTypeUnknown
= 2,
1328 EfiMemoryChannelTypeRambus
= 3,
1329 EfiMemoryChannelTypeSyncLink
= 4
1330 } EFI_MEMORY_CHANNEL_TYPE
;
1333 /// This data record refers the type of memory that is associated with the channel. This data record is a
1335 /// The type definition structure for EFI_MEMORY_CHANNEL_TYPE_DATA is in SMBIOS 2.3.4,
1336 /// Table 3.3.38, Type 37, with the following offsets:
1343 /// The type of memory that is associated with the channel.
1345 EFI_MEMORY_CHANNEL_TYPE MemoryChannelType
;
1347 /// The maximum load that is supported by the channel.
1349 UINT8 MemoryChannelMaximumLoad
;
1351 /// The number of memory devices on this channel.
1353 UINT8 MemoryChannelDeviceCount
;
1354 } EFI_MEMORY_CHANNEL_TYPE_DATA
;
1356 #define EFI_MEMORY_CHANNEL_DEVICE_RECORD_NUMBER 0x00000007
1359 /// This data record refers to the memory device that is associated with the memory channel. This data
1360 /// record is a structure.
1361 /// The type definition structure for EFI_MEMORY_CHANNEL_DEVICE_DATA is in SMBIOS 2.3.4,
1362 /// Table 3.3.38, Type 37, with the following offsets:
1368 /// A number between one and MemoryChannelDeviceCount plus an arbitrary base.
1372 /// The Link of the associated memory device. See Memory Device (Type 17) for
1375 EFI_INTER_LINK_DATA DeviceLink
;
1377 /// The number of load units that this device consumes.
1379 UINT8 MemoryChannelDeviceLoad
;
1380 } EFI_MEMORY_CHANNEL_DEVICE_DATA
;
1383 // Memory. Controller Information - SMBIOS Type 5
1386 /// Inconsistent with specification here:
1387 /// In MemSubclass spec 0.9, the following data structures are NOT defined.
1388 /// It's introduced for SmBios 2.6 type 5.
1390 #define EFI_MEMORY_CONTROLLER_INFORMATION_RECORD_NUMBER 0x00000008
1393 /// Inconsistent with specification here:
1394 /// In MemSubclass spec 0.9, the following data structures are NOT defined.
1395 /// It's introduced for SmBios 2.6 type 5.
1398 EfiErrorDetectingMethodOther
= 1,
1399 EfiErrorDetectingMethodUnknown
= 2,
1400 EfiErrorDetectingMethodNone
= 3,
1401 EfiErrorDetectingMethodParity
= 4,
1402 EfiErrorDetectingMethod32Ecc
= 5,
1403 EfiErrorDetectingMethod64Ecc
= 6,
1404 EfiErrorDetectingMethod128Ecc
= 7,
1405 EfiErrorDetectingMethodCrc
= 8
1406 } EFI_MEMORY_ERROR_DETECT_METHOD_TYPE
;
1409 /// Inconsistent with specification here:
1410 /// In MemSubclass spec 0.9, the following data structures are NOT defined.
1411 /// It's introduced for SmBios 2.6 type 5.
1417 UINT8 SingleBitErrorCorrect
:1;
1418 UINT8 DoubleBitErrorCorrect
:1;
1419 UINT8 ErrorScrubbing
:1;
1421 } EFI_MEMORY_ERROR_CORRECT_CAPABILITY
;
1424 /// Inconsistent with specification here:
1425 /// In MemSubclass spec 0.9, the following data structures are NOT defined.
1426 /// It's introduced for SmBios 2.6 type 5.
1429 EfiMemoryInterleaveOther
= 1,
1430 EfiMemoryInterleaveUnknown
= 2,
1431 EfiMemoryInterleaveOneWay
= 3,
1432 EfiMemoryInterleaveTwoWay
= 4,
1433 EfiMemoryInterleaveFourWay
= 5,
1434 EfiMemoryInterleaveEightWay
= 6,
1435 EfiMemoryInterleaveSixteenWay
= 7
1436 } EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE
;
1439 /// Inconsistent with specification here:
1440 /// In MemSubclass spec 0.9, the following data structures are NOT defined.
1441 /// It's introduced for SmBios 2.6 type 5.
1449 UINT16 Reserved
:11;
1450 } EFI_MEMORY_SPEED_TYPE
;
1453 /// Inconsistent with specification here:
1454 /// In MemSubclass spec 0.9, the following data structures are NOT defined.
1455 /// It's introduced for SmBios 2.6 type 5.
1461 UINT16 FastPageMode
:1;
1470 } EFI_MEMORY_SUPPORTED_TYPE
;
1473 /// Inconsistent with specification here:
1474 /// In MemSubclass spec 0.9, the following data structures are NOT defined.
1475 /// It's introduced for SmBios 2.6 type 5.
1482 } EFI_MEMORY_MODULE_VOLTAGE_TYPE
;
1485 /// EFI_MEMORY_CONTROLLER_INFORMATION is obsolete
1486 /// Use EFI_MEMORY_CONTROLLER_INFORMATION_DATA instead
1488 /// Inconsistent with specification here:
1489 /// In MemSubclass spec 0.9, the following data structures are NOT defined.
1490 /// It's introduced for SmBios 2.6 type 5.
1493 EFI_MEMORY_ERROR_DETECT_METHOD_TYPE ErrorDetectingMethod
;
1494 EFI_MEMORY_ERROR_CORRECT_CAPABILITY ErrorCorrectingCapability
;
1495 EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE MemorySupportedInterleave
;
1496 EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE MemoryCurrentInterleave
;
1497 UINT8 MaxMemoryModuleSize
;
1498 EFI_MEMORY_SPEED_TYPE MemorySpeedType
;
1499 EFI_MEMORY_SUPPORTED_TYPE MemorySupportedType
;
1500 EFI_MEMORY_MODULE_VOLTAGE_TYPE MemoryModuleVoltage
;
1501 UINT8 NumberofMemorySlot
;
1502 EFI_MEMORY_ERROR_CORRECT_CAPABILITY EnabledCorrectingCapability
;
1503 UINT16
*MemoryModuleConfigHandles
;
1504 } EFI_MEMORY_CONTROLLER_INFORMATION
;
1507 /// Inconsistent with specification here:
1508 /// In MemSubclass spec 0.9, the following data structures are NOT defined.
1509 /// It's introduced for SmBios 2.6 type 5.
1512 EFI_MEMORY_ERROR_DETECT_METHOD_TYPE ErrorDetectingMethod
;
1513 EFI_MEMORY_ERROR_CORRECT_CAPABILITY ErrorCorrectingCapability
;
1514 EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE MemorySupportedInterleave
;
1515 EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE MemoryCurrentInterleave
;
1516 UINT8 MaxMemoryModuleSize
;
1517 EFI_MEMORY_SPEED_TYPE MemorySpeedType
;
1518 EFI_MEMORY_SUPPORTED_TYPE MemorySupportedType
;
1519 EFI_MEMORY_MODULE_VOLTAGE_TYPE MemoryModuleVoltage
;
1520 UINT8 NumberofMemorySlot
;
1521 EFI_MEMORY_ERROR_CORRECT_CAPABILITY EnabledCorrectingCapability
;
1522 EFI_INTER_LINK_DATA MemoryModuleConfig
[1];
1523 } EFI_MEMORY_CONTROLLER_INFORMATION_DATA
;
1526 /// Memory. Error Information - SMBIOS Type 18
1528 /// Inconsistent with specification here:
1529 /// In MemSubclass spec 0.9, the following data structures are NOT defined.
1530 /// It's introduced for SmBios 2.6 type 18.
1532 #define EFI_MEMORY_32BIT_ERROR_INFORMATION_RECORD_NUMBER 0x00000009
1534 /// Inconsistent with specification here:
1535 /// In MemSubclass spec 0.9, the following data structures are NOT defined.
1536 /// It's introduced for SmBios 2.6 type 18.
1539 EfiMemoryErrorOther
= 1,
1540 EfiMemoryErrorUnknown
= 2,
1541 EfiMemoryErrorOk
= 3,
1542 EfiMemoryErrorBadRead
= 4,
1543 EfiMemoryErrorParity
= 5,
1544 EfiMemoryErrorSigleBit
= 6,
1545 EfiMemoryErrorDoubleBit
= 7,
1546 EfiMemoryErrorMultiBit
= 8,
1547 EfiMemoryErrorNibble
= 9,
1548 EfiMemoryErrorChecksum
= 10,
1549 EfiMemoryErrorCrc
= 11,
1550 EfiMemoryErrorCorrectSingleBit
= 12,
1551 EfiMemoryErrorCorrected
= 13,
1552 EfiMemoryErrorUnCorrectable
= 14
1553 } EFI_MEMORY_ERROR_TYPE
;
1555 /// Inconsistent with specification here:
1556 /// In MemSubclass spec 0.9, the following data structures are NOT defined.
1557 /// It's introduced for SmBios 2.6 type 18.
1560 EfiMemoryGranularityOther
= 1,
1561 EfiMemoryGranularityOtherUnknown
= 2,
1562 EfiMemoryGranularityDeviceLevel
= 3,
1563 EfiMemoryGranularityMemPartitionLevel
= 4
1564 } EFI_MEMORY_ERROR_GRANULARITY_TYPE
;
1566 /// Inconsistent with specification here:
1567 /// In MemSubclass spec 0.9, the following data structures are NOT defined.
1568 /// It's introduced for SmBios 2.6 type 18.
1571 EfiMemoryErrorOperationOther
= 1,
1572 EfiMemoryErrorOperationUnknown
= 2,
1573 EfiMemoryErrorOperationRead
= 3,
1574 EfiMemoryErrorOperationWrite
= 4,
1575 EfiMemoryErrorOperationPartialWrite
= 5
1576 } EFI_MEMORY_ERROR_OPERATION_TYPE
;
1578 /// Inconsistent with specification here:
1579 /// In MemSubclass spec 0.9, the following data structures are NOT defined.
1580 /// It's introduced for SmBios 2.6 type 18.
1583 EFI_MEMORY_ERROR_TYPE MemoryErrorType
;
1584 EFI_MEMORY_ERROR_GRANULARITY_TYPE MemoryErrorGranularity
;
1585 EFI_MEMORY_ERROR_OPERATION_TYPE MemoryErrorOperation
;
1586 UINT32 VendorSyndrome
;
1587 UINT32 MemoryArrayErrorAddress
;
1588 UINT32 DeviceErrorAddress
;
1589 UINT32 DeviceErrorResolution
;
1590 } EFI_MEMORY_32BIT_ERROR_INFORMATION
;
1593 /// Memory. Error Information - SMBIOS Type 33
1595 /// Inconsistent with specification here:
1596 /// In MemSubclass spec 0.9, the following data structures are NOT defined.
1597 /// It's introduced for SmBios 2.6 type 33.
1599 #define EFI_MEMORY_64BIT_ERROR_INFORMATION_RECORD_NUMBER 0x0000000A
1602 /// Inconsistent with specification here:
1603 /// In MemSubclass spec 0.9, the following data structures are NOT defined.
1604 /// It's introduced for SmBios 2.6 type 33.
1607 EFI_MEMORY_ERROR_TYPE MemoryErrorType
;
1608 EFI_MEMORY_ERROR_GRANULARITY_TYPE MemoryErrorGranularity
;
1609 EFI_MEMORY_ERROR_OPERATION_TYPE MemoryErrorOperation
;
1610 UINT32 VendorSyndrome
;
1611 UINT64 MemoryArrayErrorAddress
;
1612 UINT64 DeviceErrorAddress
;
1613 UINT32 DeviceErrorResolution
;
1614 } EFI_MEMORY_64BIT_ERROR_INFORMATION
;
1617 /// Inconsistent with specification here:
1618 /// In MemSubclass spec 0.9, the following data structures are NOT defined.
1619 /// It is implementation-specific to simplify the code logic.
1621 typedef union _EFI_MEMORY_SUBCLASS_RECORDS
{
1622 EFI_MEMORY_SIZE_DATA SizeData
;
1623 EFI_MEMORY_ARRAY_LOCATION_DATA ArrayLocationData
;
1624 EFI_MEMORY_ARRAY_LINK_DATA ArrayLink
;
1625 EFI_MEMORY_ARRAY_START_ADDRESS_DATA ArrayStartAddress
;
1626 EFI_MEMORY_DEVICE_START_ADDRESS_DATA DeviceStartAddress
;
1627 EFI_MEMORY_CHANNEL_TYPE_DATA ChannelTypeData
;
1628 EFI_MEMORY_CHANNEL_DEVICE_DATA ChannelDeviceData
;
1629 EFI_MEMORY_CONTROLLER_INFORMATION MemoryControllerInfo
;
1630 EFI_MEMORY_32BIT_ERROR_INFORMATION Memory32bitErrorInfo
;
1631 EFI_MEMORY_64BIT_ERROR_INFORMATION Memory64bitErrorInfo
;
1632 } EFI_MEMORY_SUBCLASS_RECORDS
;
1635 EFI_SUBCLASS_TYPE1_HEADER Header
;
1636 EFI_MEMORY_SUBCLASS_RECORDS Record
;
1637 } EFI_MEMORY_SUBCLASS_DRIVER_DATA
;
1639 #define EFI_MISC_SUBCLASS_VERSION 0x0100
1644 // Last PCI Bus Number
1646 #define EFI_MISC_LAST_PCI_BUS_RECORD_NUMBER 0x00000001
1650 } EFI_MISC_LAST_PCI_BUS_DATA
;
1653 // Misc. BIOS Vendor - SMBIOS Type 0
1655 #define EFI_MISC_BIOS_VENDOR_RECORD_NUMBER 0x00000002
1658 UINT64 Reserved1
:2;
1660 UINT64 BiosCharacteristicsNotSupported
:1;
1661 UINT64 IsaIsSupported
:1;
1662 UINT64 McaIsSupported
:1;
1663 UINT64 EisaIsSupported
:1;
1664 UINT64 PciIsSupported
:1;
1665 UINT64 PcmciaIsSupported
:1;
1666 UINT64 PlugAndPlayIsSupported
:1;
1667 UINT64 ApmIsSupported
:1;
1668 UINT64 BiosIsUpgradable
:1;
1669 UINT64 BiosShadowingAllowed
:1;
1670 UINT64 VlVesaIsSupported
:1;
1671 UINT64 EscdSupportIsAvailable
:1;
1672 UINT64 BootFromCdIsSupported
:1;
1673 UINT64 SelectableBootIsSupported
:1;
1674 UINT64 RomBiosIsSocketed
:1;
1675 UINT64 BootFromPcmciaIsSupported
:1;
1676 UINT64 EDDSpecificationIsSupported
:1;
1677 UINT64 JapaneseNecFloppyIsSupported
:1;
1678 UINT64 JapaneseToshibaFloppyIsSupported
:1;
1679 UINT64 Floppy525_360IsSupported
:1;
1680 UINT64 Floppy525_12IsSupported
:1;
1681 UINT64 Floppy35_720IsSupported
:1;
1682 UINT64 Floppy35_288IsSupported
:1;
1683 UINT64 PrintScreenIsSupported
:1;
1684 UINT64 Keyboard8042IsSupported
:1;
1685 UINT64 SerialIsSupported
:1;
1686 UINT64 PrinterIsSupported
:1;
1687 UINT64 CgaMonoIsSupported
:1;
1689 UINT64 AcpiIsSupported
:1;
1690 UINT64 UsbLegacyIsSupported
:1;
1691 UINT64 AgpIsSupported
:1;
1692 UINT64 I20BootIsSupported
:1;
1693 UINT64 Ls120BootIsSupported
:1;
1694 UINT64 AtapiZipDriveBootIsSupported
:1;
1695 UINT64 Boot1394IsSupported
:1;
1696 UINT64 SmartBatteryIsSupported
:1;
1697 UINT64 BiosBootSpecIsSupported
:1;
1698 UINT64 FunctionKeyNetworkBootIsSupported
:1;
1699 UINT64 Reserved
:22;
1700 } EFI_MISC_BIOS_CHARACTERISTICS
;
1703 UINT64 BiosReserved
:16;
1704 UINT64 SystemReserved
:16;
1705 UINT64 Reserved
:32;
1706 } EFI_MISC_BIOS_CHARACTERISTICS_EXTENSION
;
1709 STRING_REF BiosVendor
;
1710 STRING_REF BiosVersion
;
1711 STRING_REF BiosReleaseDate
;
1712 EFI_PHYSICAL_ADDRESS BiosStartingAddress
;
1713 EFI_EXP_BASE2_DATA BiosPhysicalDeviceSize
;
1714 EFI_MISC_BIOS_CHARACTERISTICS BiosCharacteristics1
;
1715 EFI_MISC_BIOS_CHARACTERISTICS_EXTENSION
1716 BiosCharacteristics2
;
1718 /// Inconsistent with specification here:
1719 /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.
1720 /// It's introduced for SmBios 2.6 spec type 0.
1722 UINT8 BiosMajorRelease
;
1724 /// Inconsistent with specification here:
1725 /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.
1726 /// It's introduced for SmBios 2.6 spec type 0.
1728 UINT8 BiosMinorRelease
;
1730 /// Inconsistent with specification here:
1731 /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.
1732 /// It's introduced for SmBios 2.6 spec type 0.
1734 UINT8 BiosEmbeddedFirmwareMajorRelease
;
1736 /// Inconsistent with specification here:
1737 /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.
1738 /// It's introduced for SmBios 2.6 spec type 0.
1740 UINT8 BiosEmbeddedFirmwareMinorRelease
;
1741 } EFI_MISC_BIOS_VENDOR_DATA
;
1744 // Misc. System Manufacturer - SMBIOS Type 1
1746 #define EFI_MISC_SYSTEM_MANUFACTURER_RECORD_NUMBER 0x00000003
1749 EfiSystemWakeupTypeReserved
= 0,
1750 EfiSystemWakeupTypeOther
= 1,
1751 EfiSystemWakeupTypeUnknown
= 2,
1752 EfiSystemWakeupTypeApmTimer
= 3,
1753 EfiSystemWakeupTypeModemRing
= 4,
1754 EfiSystemWakeupTypeLanRemote
= 5,
1755 EfiSystemWakeupTypePowerSwitch
= 6,
1756 EfiSystemWakeupTypePciPme
= 7,
1757 EfiSystemWakeupTypeAcPowerRestored
= 8
1758 } EFI_MISC_SYSTEM_WAKEUP_TYPE
;
1761 STRING_REF SystemManufacturer
;
1762 STRING_REF SystemProductName
;
1763 STRING_REF SystemVersion
;
1764 STRING_REF SystemSerialNumber
;
1765 EFI_GUID SystemUuid
;
1766 EFI_MISC_SYSTEM_WAKEUP_TYPE SystemWakeupType
;
1768 /// Inconsistent with specification here:
1769 /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.
1770 /// It's introduced for SmBios 2.6 spec type 1.
1772 STRING_REF SystemSKUNumber
;
1774 /// Inconsistent with specification here:
1775 /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.
1776 /// It's introduced for SmBios 2.6 spec type 1.
1778 STRING_REF SystemFamily
;
1779 } EFI_MISC_SYSTEM_MANUFACTURER_DATA
;
1782 // Misc. Base Board Manufacturer - SMBIOS Type 2
1784 #define EFI_MISC_BASE_BOARD_MANUFACTURER_RECORD_NUMBER 0x00000004
1787 UINT32 Motherboard
:1;
1788 UINT32 RequiresDaughterCard
:1;
1789 UINT32 Removable
:1;
1790 UINT32 Replaceable
:1;
1791 UINT32 HotSwappable
:1;
1792 UINT32 Reserved
:27;
1793 } EFI_BASE_BOARD_FEATURE_FLAGS
;
1796 EfiBaseBoardTypeUnknown
= 1,
1797 EfiBaseBoardTypeOther
= 2,
1798 EfiBaseBoardTypeServerBlade
= 3,
1799 EfiBaseBoardTypeConnectivitySwitch
= 4,
1800 EfiBaseBoardTypeSystemManagementModule
= 5,
1801 EfiBaseBoardTypeProcessorModule
= 6,
1802 EfiBaseBoardTypeIOModule
= 7,
1803 EfiBaseBoardTypeMemoryModule
= 8,
1804 EfiBaseBoardTypeDaughterBoard
= 9,
1805 EfiBaseBoardTypeMotherBoard
= 0xA,
1806 EfiBaseBoardTypeProcessorMemoryModule
= 0xB,
1807 EfiBaseBoardTypeProcessorIOModule
= 0xC,
1808 EfiBaseBoardTypeInterconnectBoard
= 0xD
1809 } EFI_BASE_BOARD_TYPE
;
1812 STRING_REF BaseBoardManufacturer
;
1813 STRING_REF BaseBoardProductName
;
1814 STRING_REF BaseBoardVersion
;
1815 STRING_REF BaseBoardSerialNumber
;
1816 STRING_REF BaseBoardAssetTag
;
1817 STRING_REF BaseBoardChassisLocation
;
1818 EFI_BASE_BOARD_FEATURE_FLAGS BaseBoardFeatureFlags
;
1819 EFI_BASE_BOARD_TYPE BaseBoardType
;
1820 EFI_INTER_LINK_DATA BaseBoardChassisLink
;
1821 UINT32 BaseBoardNumberLinks
;
1822 EFI_INTER_LINK_DATA LinkN
;
1823 } EFI_MISC_BASE_BOARD_MANUFACTURER_DATA
;
1826 // Misc. System/Chassis Enclosure - SMBIOS Type 3
1828 #define EFI_MISC_CHASSIS_MANUFACTURER_RECORD_NUMBER 0x00000005
1831 EfiMiscChassisTypeOther
= 0x1,
1832 EfiMiscChassisTypeUnknown
= 0x2,
1833 EfiMiscChassisTypeDeskTop
= 0x3,
1834 EfiMiscChassisTypeLowProfileDesktop
= 0x4,
1835 EfiMiscChassisTypePizzaBox
= 0x5,
1836 EfiMiscChassisTypeMiniTower
= 0x6,
1837 EfiMiscChassisTypeTower
= 0x7,
1838 EfiMiscChassisTypePortable
= 0x8,
1839 EfiMiscChassisTypeLapTop
= 0x9,
1840 EfiMiscChassisTypeNotebook
= 0xA,
1841 EfiMiscChassisTypeHandHeld
= 0xB,
1842 EfiMiscChassisTypeDockingStation
= 0xC,
1843 EfiMiscChassisTypeAllInOne
= 0xD,
1844 EfiMiscChassisTypeSubNotebook
= 0xE,
1845 EfiMiscChassisTypeSpaceSaving
= 0xF,
1846 EfiMiscChassisTypeLunchBox
= 0x10,
1847 EfiMiscChassisTypeMainServerChassis
= 0x11,
1848 EfiMiscChassisTypeExpansionChassis
= 0x12,
1849 EfiMiscChassisTypeSubChassis
= 0x13,
1850 EfiMiscChassisTypeBusExpansionChassis
= 0x14,
1851 EfiMiscChassisTypePeripheralChassis
= 0x15,
1852 EfiMiscChassisTypeRaidChassis
= 0x16,
1853 EfiMiscChassisTypeRackMountChassis
= 0x17,
1854 EfiMiscChassisTypeSealedCasePc
= 0x18,
1855 EfiMiscChassisMultiSystemChassis
= 0x19
1856 } EFI_MISC_CHASSIS_TYPE
;
1860 /// Inconsistent with specification here:
1861 /// In MiscSubclass 0.9 spec. It have a wrong field name "EFI_MISC_CHASSIS_TYPE".
1862 /// Change it to "ChassisType" to pass build.
1864 UINT32 ChassisType
:16;
1865 UINT32 ChassisLockPresent
:1;
1866 UINT32 Reserved
:15;
1867 } EFI_MISC_CHASSIS_STATUS
;
1870 EfiChassisStateOther
= 0x01,
1871 EfiChassisStateUnknown
= 0x02,
1872 EfiChassisStateSafe
= 0x03,
1873 EfiChassisStateWarning
= 0x04,
1874 EfiChassisStateCritical
= 0x05,
1875 EfiChassisStateNonRecoverable
= 0x06
1876 } EFI_MISC_CHASSIS_STATE
;
1879 EfiChassisSecurityStatusOther
= 0x01,
1880 EfiChassisSecurityStatusUnknown
= 0x02,
1881 EfiChassisSecurityStatusNone
= 0x03,
1882 EfiChassisSecurityStatusExternalInterfaceLockedOut
= 0x04,
1883 EfiChassisSecurityStatusExternalInterfaceLockedEnabled
= 0x05
1884 } EFI_MISC_CHASSIS_SECURITY_STATE
;
1887 UINT32 RecordType
:1;
1889 UINT32 Reserved
:24;
1890 } EFI_MISC_ELEMENT_TYPE
;
1893 EFI_MISC_ELEMENT_TYPE ChassisElementType
;
1894 EFI_INTER_LINK_DATA ChassisElementStructure
;
1895 EFI_BASE_BOARD_TYPE ChassisBaseBoard
;
1896 UINT32 ChassisElementMinimum
;
1897 UINT32 ChassisElementMaximum
;
1898 } EFI_MISC_ELEMENTS
;
1901 STRING_REF ChassisManufacturer
;
1902 STRING_REF ChassisVersion
;
1903 STRING_REF ChassisSerialNumber
;
1904 STRING_REF ChassisAssetTag
;
1905 EFI_MISC_CHASSIS_STATUS ChassisType
;
1906 EFI_MISC_CHASSIS_STATE ChassisBootupState
;
1907 EFI_MISC_CHASSIS_STATE ChassisPowerSupplyState
;
1908 EFI_MISC_CHASSIS_STATE ChassisThermalState
;
1909 EFI_MISC_CHASSIS_SECURITY_STATE ChassisSecurityState
;
1910 UINT32 ChassisOemDefined
;
1911 UINT32 ChassisHeight
;
1912 UINT32 ChassisNumberPowerCords
;
1913 UINT32 ChassisElementCount
;
1914 UINT32 ChassisElementRecordLength
;
1915 EFI_MISC_ELEMENTS ChassisElements
;
1916 } EFI_MISC_CHASSIS_MANUFACTURER_DATA
;
1919 // Misc. Port Connector Information - SMBIOS Type 8
1921 #define EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_RECORD_NUMBER 0x00000006
1924 EfiPortConnectorTypeNone
= 0x00,
1925 EfiPortConnectorTypeCentronics
= 0x01,
1926 EfiPortConnectorTypeMiniCentronics
= 0x02,
1927 EfiPortConnectorTypeProprietary
= 0x03,
1928 EfiPortConnectorTypeDB25Male
= 0x04,
1929 EfiPortConnectorTypeDB25Female
= 0x05,
1930 EfiPortConnectorTypeDB15Male
= 0x06,
1931 EfiPortConnectorTypeDB15Female
= 0x07,
1932 EfiPortConnectorTypeDB9Male
= 0x08,
1933 EfiPortConnectorTypeDB9Female
= 0x09,
1934 EfiPortConnectorTypeRJ11
= 0x0A,
1935 EfiPortConnectorTypeRJ45
= 0x0B,
1936 EfiPortConnectorType50PinMiniScsi
= 0x0C,
1937 EfiPortConnectorTypeMiniDin
= 0x0D,
1938 EfiPortConnectorTypeMicriDin
= 0x0E,
1939 EfiPortConnectorTypePS2
= 0x0F,
1940 EfiPortConnectorTypeInfrared
= 0x10,
1941 EfiPortConnectorTypeHpHil
= 0x11,
1942 EfiPortConnectorTypeUsb
= 0x12,
1943 EfiPortConnectorTypeSsaScsi
= 0x13,
1944 EfiPortConnectorTypeCircularDin8Male
= 0x14,
1945 EfiPortConnectorTypeCircularDin8Female
= 0x15,
1946 EfiPortConnectorTypeOnboardIde
= 0x16,
1947 EfiPortConnectorTypeOnboardFloppy
= 0x17,
1948 EfiPortConnectorType9PinDualInline
= 0x18,
1949 EfiPortConnectorType25PinDualInline
= 0x19,
1950 EfiPortConnectorType50PinDualInline
= 0x1A,
1951 EfiPortConnectorType68PinDualInline
= 0x1B,
1952 EfiPortConnectorTypeOnboardSoundInput
= 0x1C,
1953 EfiPortConnectorTypeMiniCentronicsType14
= 0x1D,
1954 EfiPortConnectorTypeMiniCentronicsType26
= 0x1E,
1955 EfiPortConnectorTypeHeadPhoneMiniJack
= 0x1F,
1956 EfiPortConnectorTypeBNC
= 0x20,
1957 EfiPortConnectorType1394
= 0x21,
1958 EfiPortConnectorTypePC98
= 0xA0,
1959 EfiPortConnectorTypePC98Hireso
= 0xA1,
1960 EfiPortConnectorTypePCH98
= 0xA2,
1961 EfiPortConnectorTypePC98Note
= 0xA3,
1962 EfiPortConnectorTypePC98Full
= 0xA4,
1963 EfiPortConnectorTypeOther
= 0xFF
1964 } EFI_MISC_PORT_CONNECTOR_TYPE
;
1967 EfiPortTypeNone
= 0x00,
1968 EfiPortTypeParallelXtAtCompatible
= 0x01,
1969 EfiPortTypeParallelPortPs2
= 0x02,
1970 EfiPortTypeParallelPortEcp
= 0x03,
1971 EfiPortTypeParallelPortEpp
= 0x04,
1972 EfiPortTypeParallelPortEcpEpp
= 0x05,
1973 EfiPortTypeSerialXtAtCompatible
= 0x06,
1974 EfiPortTypeSerial16450Compatible
= 0x07,
1975 EfiPortTypeSerial16550Compatible
= 0x08,
1976 EfiPortTypeSerial16550ACompatible
= 0x09,
1977 EfiPortTypeScsi
= 0x0A,
1978 EfiPortTypeMidi
= 0x0B,
1979 EfiPortTypeJoyStick
= 0x0C,
1980 EfiPortTypeKeyboard
= 0x0D,
1981 EfiPortTypeMouse
= 0x0E,
1982 EfiPortTypeSsaScsi
= 0x0F,
1983 EfiPortTypeUsb
= 0x10,
1984 EfiPortTypeFireWire
= 0x11,
1985 EfiPortTypePcmciaTypeI
= 0x12,
1986 EfiPortTypePcmciaTypeII
= 0x13,
1987 EfiPortTypePcmciaTypeIII
= 0x14,
1988 EfiPortTypeCardBus
= 0x15,
1989 EfiPortTypeAccessBusPort
= 0x16,
1990 EfiPortTypeScsiII
= 0x17,
1991 EfiPortTypeScsiWide
= 0x18,
1992 EfiPortTypePC98
= 0x19,
1993 EfiPortTypePC98Hireso
= 0x1A,
1994 EfiPortTypePCH98
= 0x1B,
1995 EfiPortTypeVideoPort
= 0x1C,
1996 EfiPortTypeAudioPort
= 0x1D,
1997 EfiPortTypeModemPort
= 0x1E,
1998 EfiPortTypeNetworkPort
= 0x1F,
1999 EfiPortType8251Compatible
= 0xA0,
2000 EfiPortType8251FifoCompatible
= 0xA1,
2001 EfiPortTypeOther
= 0xFF
2002 } EFI_MISC_PORT_TYPE
;
2005 STRING_REF PortInternalConnectorDesignator
;
2006 STRING_REF PortExternalConnectorDesignator
;
2007 EFI_MISC_PORT_CONNECTOR_TYPE PortInternalConnectorType
;
2008 EFI_MISC_PORT_CONNECTOR_TYPE PortExternalConnectorType
;
2009 EFI_MISC_PORT_TYPE PortType
;
2010 EFI_MISC_PORT_DEVICE_PATH PortPath
;
2011 } EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA
;
2014 // Misc. System Slots - SMBIOS Type 9
2016 #define EFI_MISC_SYSTEM_SLOT_DESIGNATION_RECORD_NUMBER 0x00000007
2019 EfiSlotTypeOther
= 0x01,
2020 EfiSlotTypeUnknown
= 0x02,
2021 EfiSlotTypeIsa
= 0x03,
2022 EfiSlotTypeMca
= 0x04,
2023 EfiSlotTypeEisa
= 0x05,
2024 EfiSlotTypePci
= 0x06,
2025 EfiSlotTypePcmcia
= 0x07,
2026 EfiSlotTypeVlVesa
= 0x08,
2027 EfiSlotTypeProprietary
= 0x09,
2028 EfiSlotTypeProcessorCardSlot
= 0x0A,
2029 EfiSlotTypeProprietaryMemoryCardSlot
= 0x0B,
2030 EfiSlotTypeIORiserCardSlot
= 0x0C,
2031 EfiSlotTypeNuBus
= 0x0D,
2032 EfiSlotTypePci66MhzCapable
= 0x0E,
2033 EfiSlotTypeAgp
= 0x0F,
2035 /// Inconsistent with specification here:
2036 /// In MiscSubclass spec 0.9, its naming should be EfiSlotTypeAgp2X
2037 /// rather than EfiSlotTypeApg2X.
2039 EfiSlotTypeAgp2X
= 0x10,
2040 EfiSlotTypeAgp4X
= 0x11,
2041 EfiSlotTypePciX
= 0x12,
2042 EfiSlotTypeAgp8x
= 0x13,
2043 EfiSlotTypePC98C20
= 0xA0,
2044 EfiSlotTypePC98C24
= 0xA1,
2045 EfiSlotTypePC98E
= 0xA2,
2046 EfiSlotTypePC98LocalBus
= 0xA3,
2047 EfiSlotTypePC98Card
= 0xA4,
2049 /// Inconsistent with specification here:
2050 /// In MiscSubclass spec 0.9, this field isn't defined.
2051 /// It's introduced for SmBios 2.6 spec type 9.
2053 EfiSlotTypePciExpress
= 0xA5
2054 } EFI_MISC_SLOT_TYPE
;
2057 EfiSlotDataBusWidthOther
= 0x01,
2058 EfiSlotDataBusWidthUnknown
= 0x02,
2059 EfiSlotDataBusWidth8Bit
= 0x03,
2060 EfiSlotDataBusWidth16Bit
= 0x04,
2061 EfiSlotDataBusWidth32Bit
= 0x05,
2062 EfiSlotDataBusWidth64Bit
= 0x06,
2063 EfiSlotDataBusWidth128Bit
= 0x07
2064 } EFI_MISC_SLOT_DATA_BUS_WIDTH
;
2067 EfiSlotUsageOther
= 1,
2068 EfiSlotUsageUnknown
= 2,
2069 EfiSlotUsageAvailable
= 3,
2070 EfiSlotUsageInUse
= 4
2071 } EFI_MISC_SLOT_USAGE
;
2074 EfiSlotLengthOther
= 1,
2075 EfiSlotLengthUnknown
= 2,
2076 EfiSlotLengthShort
= 3,
2077 EfiSlotLengthLong
= 4
2078 } EFI_MISC_SLOT_LENGTH
;
2081 UINT32 CharacteristicsUnknown
:1;
2082 UINT32 Provides50Volts
:1;
2083 UINT32 Provides33Volts
:1;
2084 UINT32 SharedSlot
:1;
2085 UINT32 PcCard16Supported
:1;
2086 UINT32 CardBusSupported
:1;
2087 UINT32 ZoomVideoSupported
:1;
2088 UINT32 ModemRingResumeSupported
:1;
2089 UINT32 PmeSignalSupported
:1;
2090 UINT32 HotPlugDevicesSupported
:1;
2091 UINT32 SmbusSignalSupported
:1;
2092 UINT32 Reserved
:21;
2093 } EFI_MISC_SLOT_CHARACTERISTICS
;
2096 STRING_REF SlotDesignation
;
2097 EFI_MISC_SLOT_TYPE SlotType
;
2098 EFI_MISC_SLOT_DATA_BUS_WIDTH SlotDataBusWidth
;
2099 EFI_MISC_SLOT_USAGE SlotUsage
;
2100 EFI_MISC_SLOT_LENGTH SlotLength
;
2102 EFI_MISC_SLOT_CHARACTERISTICS SlotCharacteristics
;
2103 EFI_DEVICE_PATH_PROTOCOL SlotDevicePath
;
2104 } EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA
;
2107 // Misc. Onboard Device - SMBIOS Type 10
2109 #define EFI_MISC_ONBOARD_DEVICE_RECORD_NUMBER 0x00000008
2112 EfiOnBoardDeviceTypeOther
= 1,
2113 EfiOnBoardDeviceTypeUnknown
= 2,
2114 EfiOnBoardDeviceTypeVideo
= 3,
2115 EfiOnBoardDeviceTypeScsiController
= 4,
2116 EfiOnBoardDeviceTypeEthernet
= 5,
2117 EfiOnBoardDeviceTypeTokenRing
= 6,
2118 EfiOnBoardDeviceTypeSound
= 7
2119 } EFI_MISC_ONBOARD_DEVICE_TYPE
;
2122 UINT32 DeviceType
:16;
2123 UINT32 DeviceEnabled
:1;
2124 UINT32 Reserved
:15;
2125 } EFI_MISC_ONBOARD_DEVICE_STATUS
;
2128 STRING_REF OnBoardDeviceDescription
;
2130 /// Inconsistent with specification here:
2131 /// In MiscSubclass spec 0.9, the naming is OnBoardDeviceType.
2132 /// Keep it unchanged for backward compatibilty.
2134 EFI_MISC_ONBOARD_DEVICE_STATUS OnBoardDeviceStatus
;
2135 EFI_DEVICE_PATH_PROTOCOL OnBoardDevicePath
;
2136 } EFI_MISC_ONBOARD_DEVICE_DATA
;
2139 // Misc. BIOS Language Information - SMBIOS Type 11
2141 #define EFI_MISC_OEM_STRING_RECORD_NUMBER 0x00000009
2144 STRING_REF OemStringRef
[1];
2145 } EFI_MISC_OEM_STRING_DATA
;
2148 // Misc. System Options - SMBIOS Type 12
2151 STRING_REF SystemOptionStringRef
[1];
2152 } EFI_MISC_SYSTEM_OPTION_STRING_DATA
;
2154 #define EFI_MISC_SYSTEM_OPTION_STRING_RECORD_NUMBER 0x0000000A
2157 // Misc. Number of Installable Languages - SMBIOS Type 13
2159 #define EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_RECORD_NUMBER 0x0000000B
2162 UINT32 AbbreviatedLanguageFormat
:1;
2163 UINT32 Reserved
:31;
2164 } EFI_MISC_LANGUAGE_FLAGS
;
2167 UINT16 NumberOfInstallableLanguages
;
2168 EFI_MISC_LANGUAGE_FLAGS LanguageFlags
;
2169 UINT16 CurrentLanguageNumber
;
2170 } EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA
;
2173 // Misc. System Language String
2175 #define EFI_MISC_SYSTEM_LANGUAGE_STRING_RECORD_NUMBER 0x0000000C
2179 STRING_REF SystemLanguageString
;
2180 } EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA
;
2183 // Group Associations - SMBIOS Type 14
2185 #define EFI_MISC_GROUP_NAME_RECORD_NUMBER 0x0000000D
2188 STRING_REF GroupName
;
2189 UINT16 NumberGroupItems
;
2191 } EFI_MISC_GROUP_NAME_DATA
;
2194 // Group Item Set Element
2196 #define EFI_MISC_GROUP_ITEM_SET_RECORD_NUMBER 0x0000000E
2200 EFI_INTER_LINK_DATA GroupLink
;
2202 UINT16 GroupElementId
;
2203 } EFI_MISC_GROUP_ITEM_SET_DATA
;
2206 // Misc. Pointing Device Type - SMBIOS Type 21
2208 #define EFI_MISC_POINTING_DEVICE_TYPE_RECORD_NUMBER 0x0000000F
2211 EfiPointingDeviceTypeOther
= 0x01,
2212 EfiPointingDeviceTypeUnknown
= 0x02,
2213 EfiPointingDeviceTypeMouse
= 0x03,
2214 EfiPointingDeviceTypeTrackBall
= 0x04,
2215 EfiPointingDeviceTypeTrackPoint
= 0x05,
2216 EfiPointingDeviceTypeGlidePoint
= 0x06,
2217 EfiPointingDeviceTouchPad
= 0x07,
2218 EfiPointingDeviceTouchScreen
= 0x08,
2219 EfiPointingDeviceOpticalSensor
= 0x09
2220 } EFI_MISC_POINTING_DEVICE_TYPE
;
2223 EfiPointingDeviceInterfaceOther
= 0x01,
2224 EfiPointingDeviceInterfaceUnknown
= 0x02,
2225 EfiPointingDeviceInterfaceSerial
= 0x03,
2226 EfiPointingDeviceInterfacePs2
= 0x04,
2227 EfiPointingDeviceInterfaceInfrared
= 0x05,
2228 EfiPointingDeviceInterfaceHpHil
= 0x06,
2229 EfiPointingDeviceInterfaceBusMouse
= 0x07,
2230 EfiPointingDeviceInterfaceADB
= 0x08,
2231 EfiPointingDeviceInterfaceBusMouseDB9
= 0xA0,
2232 EfiPointingDeviceInterfaceBusMouseMicroDin
= 0xA1,
2233 EfiPointingDeviceInterfaceUsb
= 0xA2
2234 } EFI_MISC_POINTING_DEVICE_INTERFACE
;
2237 EFI_MISC_POINTING_DEVICE_TYPE PointingDeviceType
;
2238 EFI_MISC_POINTING_DEVICE_INTERFACE PointingDeviceInterface
;
2239 UINT16 NumberPointingDeviceButtons
;
2240 EFI_DEVICE_PATH_PROTOCOL PointingDevicePath
;
2241 } EFI_MISC_POINTING_DEVICE_TYPE_DATA
;
2244 // Portable Battery - SMBIOS Type 22
2247 /// Inconsistent with specification here:
2248 /// In MiscSubclass spec 0.9, the naming is EFI_MISC_BATTERY_LOCATION_RECORD_NUMBER.
2249 /// Keep it unchanged for backward compatibilty.
2251 #define EFI_MISC_PORTABLE_BATTERY_RECORD_NUMBER 0x00000010
2254 /// Inconsistent with specification here:
2255 /// In MiscSubclass spec 0.9, the structure name is EFI_MISC_BATTERY_DEVICE_CHEMISTRY.
2256 /// And all field namings are also different with spec.
2257 /// Keep it unchanged for backward compatibilty.
2260 EfiPortableBatteryDeviceChemistryOther
= 1,
2261 EfiPortableBatteryDeviceChemistryUnknown
= 2,
2262 EfiPortableBatteryDeviceChemistryLeadAcid
= 3,
2263 EfiPortableBatteryDeviceChemistryNickelCadmium
= 4,
2264 EfiPortableBatteryDeviceChemistryNickelMetalHydride
= 5,
2265 EfiPortableBatteryDeviceChemistryLithiumIon
= 6,
2266 EfiPortableBatteryDeviceChemistryZincAir
= 7,
2267 EfiPortableBatteryDeviceChemistryLithiumPolymer
= 8
2268 } EFI_MISC_PORTABLE_BATTERY_DEVICE_CHEMISTRY
;
2271 /// Inconsistent with specification here:
2272 /// In MiscSubclass spec 0.9, the structure name is EFI_MISC_BATTERY_LOCATION_DATA.
2273 /// And the name and the order of the fields are also different with spec.
2274 /// Keep it unchanged for backward compatibilty.
2277 STRING_REF Location
;
2278 STRING_REF Manufacturer
;
2279 STRING_REF ManufactureDate
;
2280 STRING_REF SerialNumber
;
2281 STRING_REF DeviceName
;
2282 EFI_MISC_PORTABLE_BATTERY_DEVICE_CHEMISTRY
2284 UINT16 DesignCapacity
;
2285 UINT16 DesignVoltage
;
2286 STRING_REF SBDSVersionNumber
;
2288 UINT16 SBDSSerialNumber
;
2289 UINT16 SBDSManufactureDate
;
2290 STRING_REF SBDSDeviceChemistry
;
2291 UINT8 DesignCapacityMultiplier
;
2293 UINT8 BatteryNumber
; // Temporary
2294 BOOLEAN Valid
; // Is entry valid - Temporary
2295 } EFI_MISC_PORTABLE_BATTERY
;
2299 // Misc. Reset Capabilities - SMBIOS Type 23
2301 #define EFI_MISC_RESET_CAPABILITIES_RECORD_NUMBER 0x00000011
2305 UINT32 BootOption
:2;
2306 UINT32 BootOptionOnLimit
:2;
2307 UINT32 WatchdogTimerPresent
:1;
2308 UINT32 Reserved
:26;
2309 } EFI_MISC_RESET_CAPABILITIES_TYPE
;
2312 EFI_MISC_RESET_CAPABILITIES_TYPE ResetCapabilities
;
2315 UINT16 ResetTimerInterval
;
2316 UINT16 ResetTimeout
;
2317 } EFI_MISC_RESET_CAPABILITIES
;
2320 EFI_MISC_RESET_CAPABILITIES ResetCapabilities
;
2323 UINT16 ResetTimerInterval
;
2324 UINT16 ResetTimeout
;
2325 } EFI_MISC_RESET_CAPABILITIES_DATA
;
2328 // Misc. Hardware Security - SMBIOS Type 24
2330 #define EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA_RECORD_NUMBER 0x00000012
2333 /// Inconsistent with specification here:
2334 /// In MiscSubclass spec 0.9, it only mention the possible value of each field in
2335 /// EFI_MISC_HARDWARE_SECURITY_SETTINGS.
2336 /// It's implementation-specific to simplify the code logic.
2339 EfiHardwareSecurityStatusDisabled
= 0,
2340 EfiHardwareSecurityStatusEnabled
= 1,
2341 EfiHardwareSecurityStatusNotImplemented
= 2,
2342 EfiHardwareSecurityStatusUnknown
= 3
2343 } EFI_MISC_HARDWARE_SECURITY_STATUS
;
2346 UINT32 FrontPanelResetStatus
:2;
2347 UINT32 AdministratorPasswordStatus
:2;
2348 UINT32 KeyboardPasswordStatus
:2;
2349 UINT32 PowerOnPasswordStatus
:2;
2350 UINT32 Reserved
:24;
2351 } EFI_MISC_HARDWARE_SECURITY_SETTINGS
;
2354 EFI_MISC_HARDWARE_SECURITY_SETTINGS HardwareSecuritySettings
;
2355 } EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA
;
2358 // System Power Controls - SMBIOS Type 25
2360 #define EFI_MISC_SCHEDULED_POWER_ON_MONTH_RECORD_NUMBER 0x00000013
2363 UINT16 ScheduledPoweronMonth
;
2364 UINT16 ScheduledPoweronDayOfMonth
;
2365 UINT16 ScheduledPoweronHour
;
2366 UINT16 ScheduledPoweronMinute
;
2367 UINT16 ScheduledPoweronSecond
;
2368 } EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA
;
2371 // Voltage Probe - SMBIOS Type 26
2373 #define EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_RECORD_NUMBER 0x00000014
2376 UINT32 VoltageProbeSite
:5;
2377 UINT32 VoltageProbeStatus
:3;
2378 UINT32 Reserved
:24;
2379 } EFI_MISC_VOLTAGE_PROBE_LOCATION
;
2382 STRING_REF VoltageProbeDescription
;
2383 EFI_MISC_VOLTAGE_PROBE_LOCATION VoltageProbeLocation
;
2384 EFI_EXP_BASE10_DATA VoltageProbeMaximumValue
;
2385 EFI_EXP_BASE10_DATA VoltageProbeMinimumValue
;
2386 EFI_EXP_BASE10_DATA VoltageProbeResolution
;
2387 EFI_EXP_BASE10_DATA VoltageProbeTolerance
;
2388 EFI_EXP_BASE10_DATA VoltageProbeAccuracy
;
2389 EFI_EXP_BASE10_DATA VoltageProbeNominalValue
;
2390 EFI_EXP_BASE10_DATA MDLowerNoncriticalThreshold
;
2391 EFI_EXP_BASE10_DATA MDUpperNoncriticalThreshold
;
2392 EFI_EXP_BASE10_DATA MDLowerCriticalThreshold
;
2393 EFI_EXP_BASE10_DATA MDUpperCriticalThreshold
;
2394 EFI_EXP_BASE10_DATA MDLowerNonrecoverableThreshold
;
2395 EFI_EXP_BASE10_DATA MDUpperNonrecoverableThreshold
;
2396 UINT32 VoltageProbeOemDefined
;
2397 } EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_DATA
;
2400 // Cooling Device - SMBIOS Type 27
2402 #define EFI_MISC_COOLING_DEVICE_TEMP_LINK_RECORD_NUMBER 0x00000015
2405 UINT32 CoolingDevice
:5;
2406 UINT32 CoolingDeviceStatus
:3;
2407 UINT32 Reserved
:24;
2408 } EFI_MISC_COOLING_DEVICE_TYPE
;
2411 EFI_MISC_COOLING_DEVICE_TYPE CoolingDeviceType
;
2412 EFI_INTER_LINK_DATA CoolingDeviceTemperatureLink
;
2413 UINT16 CoolingDeviceUnitGroup
;
2414 EFI_EXP_BASE10_DATA CoolingDeviceNominalSpeed
;
2415 UINT32 CoolingDeviceOemDefined
;
2416 } EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA
;
2419 // Temperature Probe - SMBIOS Type 28
2421 #define EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_RECORD_NUMBER 0x00000016
2424 UINT32 TemperatureProbeSite
:5;
2425 UINT32 TemperatureProbeStatus
:3;
2426 UINT32 Reserved
:24;
2427 } EFI_MISC_TEMPERATURE_PROBE_LOCATION
;
2430 STRING_REF TemperatureProbeDescription
;
2431 EFI_MISC_TEMPERATURE_PROBE_LOCATION
2432 TemperatureProbeLocation
;
2433 EFI_EXP_BASE10_DATA TemperatureProbeMaximumValue
;
2434 EFI_EXP_BASE10_DATA TemperatureProbeMinimumValue
;
2435 EFI_EXP_BASE10_DATA TemperatureProbeResolution
;
2436 EFI_EXP_BASE10_DATA TemperatureProbeTolerance
;
2437 EFI_EXP_BASE10_DATA TemperatureProbeAccuracy
;
2438 EFI_EXP_BASE10_DATA TemperatureProbeNominalValue
;
2439 EFI_EXP_BASE10_DATA MDLowerNoncriticalThreshold
;
2440 EFI_EXP_BASE10_DATA MDUpperNoncriticalThreshold
;
2441 EFI_EXP_BASE10_DATA MDLowerCriticalThreshold
;
2442 EFI_EXP_BASE10_DATA MDUpperCriticalThreshold
;
2443 EFI_EXP_BASE10_DATA MDLowerNonrecoverableThreshold
;
2444 EFI_EXP_BASE10_DATA MDUpperNonrecoverableThreshold
;
2445 UINT32 TemperatureProbeOemDefined
;
2446 } EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA
;
2449 // Electrical Current Probe - SMBIOS Type 29
2452 #define EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_RECORD_NUMBER 0x00000017
2455 UINT32 ElectricalCurrentProbeSite
:5;
2456 UINT32 ElectricalCurrentProbeStatus
:3;
2457 UINT32 Reserved
:24;
2458 } EFI_MISC_ELECTRICAL_CURRENT_PROBE_LOCATION
;
2461 STRING_REF ElectricalCurrentProbeDescription
;
2462 EFI_MISC_ELECTRICAL_CURRENT_PROBE_LOCATION
2463 ElectricalCurrentProbeLocation
;
2464 EFI_EXP_BASE10_DATA ElectricalCurrentProbeMaximumValue
;
2465 EFI_EXP_BASE10_DATA ElectricalCurrentProbeMinimumValue
;
2466 EFI_EXP_BASE10_DATA ElectricalCurrentProbeResolution
;
2467 EFI_EXP_BASE10_DATA ElectricalCurrentProbeTolerance
;
2468 EFI_EXP_BASE10_DATA ElectricalCurrentProbeAccuracy
;
2469 EFI_EXP_BASE10_DATA ElectricalCurrentProbeNominalValue
;
2470 EFI_EXP_BASE10_DATA MDLowerNoncriticalThreshold
;
2471 EFI_EXP_BASE10_DATA MDUpperNoncriticalThreshold
;
2472 EFI_EXP_BASE10_DATA MDLowerCriticalThreshold
;
2473 EFI_EXP_BASE10_DATA MDUpperCriticalThreshold
;
2474 EFI_EXP_BASE10_DATA MDLowerNonrecoverableThreshold
;
2475 EFI_EXP_BASE10_DATA MDUpperNonrecoverableThreshold
;
2476 UINT32 ElectricalCurrentProbeOemDefined
;
2477 } EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA
;
2480 // Out-of-Band Remote Access - SMBIOS Type 30
2483 #define EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_RECORD_NUMBER 0x00000018
2486 UINT32 InboundConnectionEnabled
:1;
2487 UINT32 OutboundConnectionEnabled
:1;
2488 UINT32 Reserved
:30;
2489 } EFI_MISC_REMOTE_ACCESS_CONNECTIONS
;
2492 STRING_REF RemoteAccessManufacturerNameDescription
;
2493 EFI_MISC_REMOTE_ACCESS_CONNECTIONS RemoteAccessConnections
;
2494 } EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA
;
2497 // Misc. BIS Entry Point - SMBIOS Type 31
2499 #define EFI_MISC_BIS_ENTRY_POINT_RECORD_NUMBER 0x00000019
2502 EFI_PHYSICAL_ADDRESS BisEntryPoint
;
2503 } EFI_MISC_BIS_ENTRY_POINT_DATA
;
2506 // Misc. Boot Information - SMBIOS Type 32
2508 #define EFI_MISC_BOOT_INFORMATION_STATUS_RECORD_NUMBER 0x0000001A
2511 /// Inconsistent with specification here:
2512 /// In MiscSubclass spec 0.9, the structure name is EFI_MISC_BOOT_INFORMATION_STATUS_TYPE.
2513 /// Keep it unchanged for backward compatibilty.
2516 EfiBootInformationStatusNoError
= 0x00,
2517 EfiBootInformationStatusNoBootableMedia
= 0x01,
2518 EfiBootInformationStatusNormalOSFailedLoading
= 0x02,
2519 EfiBootInformationStatusFirmwareDetectedFailure
= 0x03,
2520 EfiBootInformationStatusOSDetectedFailure
= 0x04,
2521 EfiBootInformationStatusUserRequestedBoot
= 0x05,
2522 EfiBootInformationStatusSystemSecurityViolation
= 0x06,
2523 EfiBootInformationStatusPreviousRequestedImage
= 0x07,
2524 EfiBootInformationStatusWatchdogTimerExpired
= 0x08,
2525 EfiBootInformationStatusStartReserved
= 0x09,
2526 EfiBootInformationStatusStartOemSpecific
= 0x80,
2527 EfiBootInformationStatusStartProductSpecific
= 0xC0
2528 } EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE
;
2532 /// Inconsistent with specification here:
2533 /// In MiscSubclass spec 0.9, the field name is EFI_MISC_BOOT_INFORMATION_STATUS_TYPE.
2534 /// Keep it unchanged for backward compatibilty.
2536 EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE BootInformationStatus
;
2537 UINT8 BootInformationData
[9];
2538 } EFI_MISC_BOOT_INFORMATION_STATUS_DATA
;
2541 // Management Device - SMBIOS Type 34
2543 #define EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_RECORD_NUMBER 0x0000001B
2546 EfiManagementDeviceTypeOther
= 0x01,
2547 EfiManagementDeviceTypeUnknown
= 0x02,
2548 EfiManagementDeviceTypeLm75
= 0x03,
2549 EfiManagementDeviceTypeLm78
= 0x04,
2550 EfiManagementDeviceTypeLm79
= 0x05,
2551 EfiManagementDeviceTypeLm80
= 0x06,
2552 EfiManagementDeviceTypeLm81
= 0x07,
2553 EfiManagementDeviceTypeAdm9240
= 0x08,
2554 EfiManagementDeviceTypeDs1780
= 0x09,
2555 EfiManagementDeviceTypeMaxim1617
= 0x0A,
2556 EfiManagementDeviceTypeGl518Sm
= 0x0B,
2557 EfiManagementDeviceTypeW83781D
= 0x0C,
2558 EfiManagementDeviceTypeHt82H791
= 0x0D
2559 } EFI_MISC_MANAGEMENT_DEVICE_TYPE
;
2562 EfiManagementDeviceAddressTypeOther
= 1,
2563 EfiManagementDeviceAddressTypeUnknown
= 2,
2564 EfiManagementDeviceAddressTypeIOPort
= 3,
2565 EfiManagementDeviceAddressTypeMemory
= 4,
2566 EfiManagementDeviceAddressTypeSmbus
= 5
2567 } EFI_MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE
;
2570 STRING_REF ManagementDeviceDescription
;
2571 EFI_MISC_MANAGEMENT_DEVICE_TYPE ManagementDeviceType
;
2572 UINTN ManagementDeviceAddress
;
2573 EFI_MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE
2574 ManagementDeviceAddressType
;
2575 } EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA
;
2578 // Management Device Component - SMBIOS Type 35
2581 #define EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_RECORD_NUMBER 0x0000001C
2584 STRING_REF ManagementDeviceComponentDescription
;
2585 EFI_INTER_LINK_DATA ManagementDeviceLink
;
2586 EFI_INTER_LINK_DATA ManagementDeviceComponentLink
;
2588 /// Inconsistent with specification here:
2589 /// In MiscSubclass spec 0.9, this field is NOT defined.
2590 /// It's introduced for SmBios 2.6 spec type 35.
2592 EFI_INTER_LINK_DATA ManagementDeviceThresholdLink
;
2593 } EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA
;
2596 // IPMI Data Record - SMBIOS Type 38
2603 } EFI_MISC_IPMI_INTERFACE_TYPE
;
2606 UINT16 IpmiSpecLeastSignificantDigit
:4;
2607 UINT16 IpmiSpecMostSignificantDigit
: 4;
2609 } EFI_MISC_IPMI_SPECIFICATION_REVISION
;
2612 EFI_MISC_IPMI_INTERFACE_TYPE IpmiInterfaceType
;
2613 EFI_MISC_IPMI_SPECIFICATION_REVISION
2614 IpmiSpecificationRevision
;
2615 UINT16 IpmiI2CSlaveAddress
;
2616 UINT16 IpmiNvDeviceAddress
;
2617 UINT64 IpmiBaseAddress
;
2618 EFI_DEVICE_PATH_PROTOCOL IpmiDevicePath
;
2619 } EFI_MISC_IPMI_INTERFACE_TYPE_DATA
;
2621 #define EFI_MISC_IPMI_INTERFACE_TYPE_RECORD_NUMBER 0x0000001D
2624 /// System Power supply Record - SMBIOS Type 39
2626 /// Inconsistent with specification here:
2627 /// In MiscSubclass spec 0.9, the type of all fields are UINT32.
2628 /// Keep it unchanged for backward compatibilty.
2631 UINT16 PowerSupplyHotReplaceable
:1;
2632 UINT16 PowerSupplyPresent
:1;
2633 UINT16 PowerSupplyUnplugged
:1;
2634 UINT16 InputVoltageRangeSwitch
:4;
2635 UINT16 PowerSupplyStatus
:3;
2636 UINT16 PowerSupplyType
:4;
2638 } EFI_MISC_POWER_SUPPLY_CHARACTERISTICS
;
2641 /// Inconsistent with specification here:
2642 /// In MiscSubclass spec 0.9, the field name is EFI_MISC_POWER_SUPPLY_UNIT_GROUP_DATA.
2643 /// Keep it unchanged for backward compatibilty.
2646 UINT16 PowerUnitGroup
;
2647 STRING_REF PowerSupplyLocation
;
2648 STRING_REF PowerSupplyDeviceName
;
2649 STRING_REF PowerSupplyManufacturer
;
2650 STRING_REF PowerSupplySerialNumber
;
2651 STRING_REF PowerSupplyAssetTagNumber
;
2652 STRING_REF PowerSupplyModelPartNumber
;
2653 STRING_REF PowerSupplyRevisionLevel
;
2654 UINT16 PowerSupplyMaxPowerCapacity
;
2655 EFI_MISC_POWER_SUPPLY_CHARACTERISTICS PowerSupplyCharacteristics
;
2656 EFI_INTER_LINK_DATA PowerSupplyInputVoltageProbeLink
;
2657 EFI_INTER_LINK_DATA PowerSupplyCoolingDeviceLink
;
2658 EFI_INTER_LINK_DATA PowerSupplyInputCurrentProbeLink
;
2659 } EFI_MISC_SYSTEM_POWER_SUPPLY_DATA
;
2661 #define EFI_MISC_SYSTEM_POWER_SUPPLY_RECORD_NUMBER 0x0000001E
2664 /// OEM Data Record - SMBIOS Type 0x80-0xFF
2666 /// Inconsistent with specification here:
2667 /// In MiscSubclass spec 0.9, the structure name is EFI_SMBIOS_STRUCTURE_HDR.
2668 /// Due to this structure is commonly used by vendor to construct SmBios type 0x80~0xFF table,
2669 /// Keep it unchanged for backward compatibilty.
2675 } SMBIOS_STRUCTURE_HDR
;
2679 /// Inconsistent with specification here:
2680 /// In MiscSubclass spec 0.9, the field name is EFI_SMBIOS_STRUCTURE_HDR.
2681 /// Keep it unchanged for backward compatibilty.
2683 SMBIOS_STRUCTURE_HDR Header
;
2685 } EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA
;
2687 #define EFI_MISC_SMBIOS_STRUCT_ENCAP_RECORD_NUMBER 0x0000001F
2690 /// Misc. System Event Log - SMBIOS Type 15
2692 /// Inconsistent with specification here:
2693 /// In MiscSubclass spec 0.9, the following data structures are NOT defined.
2694 /// It's introduced for SmBios 2.6 spec type 15.
2696 #define EFI_MISC_SYSTEM_EVENT_LOG_RECORD_NUMBER 0x00000020
2699 /// Inconsistent with specification here:
2700 /// In MiscSubclass spec 0.9, the following data structures are NOT defined.
2701 /// It's introduced for SmBios 2.6 spec type 15.
2704 UINT16 LogAreaLength
;
2705 UINT16 LogHeaderStartOffset
;
2706 UINT16 LogDataStartOffset
;
2709 UINT32 LogChangeToken
;
2710 UINT32 AccessMethodAddress
;
2711 UINT8 LogHeaderFormat
;
2712 UINT8 NumberOfSupportedLogType
;
2713 UINT8 LengthOfLogDescriptor
;
2714 } EFI_MISC_SYSTEM_EVENT_LOG_DATA
;
2718 // 0x00~0x04: as following definition
2719 // 0x05~0x7f: Available for future assignment.
2720 // 0x80~0xff: BIOS Vendor/OEM-specific.
2722 #define ACCESS_INDEXIO_1INDEX8BIT_DATA8BIT 0x00
2723 #define ACCESS_INDEXIO_2INDEX8BIT_DATA8BIT 0X01
2724 #define ACCESS_INDEXIO_1INDEX16BIT_DATA8BIT 0X02
2725 #define ACCESS_MEMORY_MAPPED 0x03
2726 #define ACCESS_GPNV 0x04
2729 /// Management Device Threshold Data Record - SMBIOS Type 36
2731 /// Inconsistent with specification here:
2732 /// In MiscSubclass spec 0.9, the following data structures are NOT defined.
2733 /// It's introduced for SmBios 2.6 spec type 36.
2735 #define EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD_RECORD_NUMBER 0x00000021
2737 /// Inconsistent with specification here:
2738 /// In MiscSubclass spec 0.9, the following data structures are NOT defined.
2739 /// It's introduced for SmBios 2.6 spec type 36.
2742 UINT16 LowerThresNonCritical
;
2743 UINT16 UpperThresNonCritical
;
2744 UINT16 LowerThresCritical
;
2745 UINT16 UpperThresCritical
;
2746 UINT16 LowerThresNonRecover
;
2747 UINT16 UpperThresNonRecover
;
2748 } EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD
;
2751 // Declare the following strutures alias to use them more conviniently.
2753 typedef EFI_MISC_LAST_PCI_BUS_DATA EFI_MISC_LAST_PCI_BUS
;
2754 typedef EFI_MISC_BIOS_VENDOR_DATA EFI_MISC_BIOS_VENDOR
;
2755 typedef EFI_MISC_SYSTEM_MANUFACTURER_DATA EFI_MISC_SYSTEM_MANUFACTURER
;
2756 typedef EFI_MISC_BASE_BOARD_MANUFACTURER_DATA EFI_MISC_BASE_BOARD_MANUFACTURER
;
2757 typedef EFI_MISC_CHASSIS_MANUFACTURER_DATA EFI_MISC_CHASSIS_MANUFACTURER
;
2758 typedef EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR
;
2759 typedef EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA EFI_MISC_SYSTEM_SLOT_DESIGNATION
;
2760 typedef EFI_MISC_ONBOARD_DEVICE_DATA EFI_MISC_ONBOARD_DEVICE
;
2761 typedef EFI_MISC_POINTING_DEVICE_TYPE_DATA EFI_MISC_ONBOARD_DEVICE_TYPE_DATA
;
2762 typedef EFI_MISC_OEM_STRING_DATA EFI_MISC_OEM_STRING
;
2763 typedef EFI_MISC_SYSTEM_OPTION_STRING_DATA EFI_MISC_SYSTEM_OPTION_STRING
;
2764 typedef EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES
;
2765 typedef EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA EFI_MISC_SYSTEM_LANGUAGE_STRING
;
2766 typedef EFI_MISC_SYSTEM_EVENT_LOG_DATA EFI_MISC_SYSTEM_EVENT_LOG
;
2767 typedef EFI_MISC_BIS_ENTRY_POINT_DATA EFI_MISC_BIS_ENTRY_POINT
;
2768 typedef EFI_MISC_BOOT_INFORMATION_STATUS_DATA EFI_MISC_BOOT_INFORMATION_STATUS
;
2769 typedef EFI_MISC_SYSTEM_POWER_SUPPLY_DATA EFI_MISC_SYSTEM_POWER_SUPPLY
;
2770 typedef EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION
;
2771 typedef EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA EFI_MISC_SCHEDULED_POWER_ON_MONTH
;
2772 typedef EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_DATA EFI_MISC_VOLTAGE_PROBE_DESCRIPTION
;
2773 typedef EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA EFI_MISC_COOLING_DEVICE_TEMP_LINK
;
2774 typedef EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION
;
2775 typedef EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA
2776 EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION
;
2777 typedef EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION
;
2778 typedef EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION
;
2781 /// Inconsistent with specification here:
2782 /// In MemSubclass spec 0.9, the following data structures are NOT defined.
2783 /// It is implementation-specific to simplify the code logic.
2786 EFI_MISC_LAST_PCI_BUS_DATA LastPciBus
;
2787 EFI_MISC_BIOS_VENDOR_DATA MiscBiosVendor
;
2788 EFI_MISC_SYSTEM_MANUFACTURER_DATA MiscSystemManufacturer
;
2789 EFI_MISC_BASE_BOARD_MANUFACTURER_DATA MiscBaseBoardManufacturer
;
2790 EFI_MISC_CHASSIS_MANUFACTURER_DATA MiscChassisManufacturer
;
2791 EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA MiscPortInternalConnectorDesignator
;
2792 EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA MiscSystemSlotDesignation
;
2793 EFI_MISC_ONBOARD_DEVICE_DATA MiscOnboardDevice
;
2794 EFI_MISC_OEM_STRING_DATA MiscOemString
;
2795 EFI_MISC_SYSTEM_OPTION_STRING_DATA MiscOptionString
;
2796 EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA NumberOfInstallableLanguages
;
2797 EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA MiscSystemLanguageString
;
2798 EFI_MISC_SYSTEM_EVENT_LOG_DATA MiscSystemEventLog
;
2799 EFI_MISC_GROUP_NAME_DATA MiscGroupNameData
;
2800 EFI_MISC_GROUP_ITEM_SET_DATA MiscGroupItemSetData
;
2801 EFI_MISC_POINTING_DEVICE_TYPE_DATA MiscPointingDeviceTypeData
;
2802 EFI_MISC_RESET_CAPABILITIES_DATA MiscResetCapablilitiesData
;
2803 EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA MiscHardwareSecuritySettingsData
;
2804 EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA MiscScheduledPowerOnMonthData
;
2805 EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_DATA MiscVoltagePorbeDescriptionData
;
2806 EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA MiscCoolingDeviceTempLinkData
;
2807 EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA MiscTemperatureProbeDescriptionData
;
2808 EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA MiscElectricalCurrentProbeDescriptionData
;
2809 EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA
2810 MiscRemoteAccessManufacturerDescriptionData
;
2811 EFI_MISC_BIS_ENTRY_POINT_DATA MiscBisEntryPoint
;
2812 EFI_MISC_BOOT_INFORMATION_STATUS_DATA MiscBootInformationStatus
;
2813 EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA MiscMangementDeviceDescriptionData
;
2814 EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA
2815 MiscmangementDeviceComponentDescriptionData
;
2816 EFI_MISC_IPMI_INTERFACE_TYPE_DATA MiscIpmiInterfaceTypeData
;
2817 EFI_MISC_SYSTEM_POWER_SUPPLY_DATA MiscPowerSupplyInfo
;
2818 EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA MiscSmbiosStructEncapsulation
;
2819 EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD MiscManagementDeviceThreshold
;
2820 } EFI_MISC_SUBCLASS_RECORDS
;
2823 /// Inconsistent with specification here:
2824 /// In MemSubclass spec 0.9, the following data structures are NOT defined.
2825 /// It is implementation-specific to simplify the code logic.
2828 EFI_SUBCLASS_TYPE1_HEADER Header
;
2829 EFI_MISC_SUBCLASS_RECORDS Record
;
2830 } EFI_MISC_SUBCLASS_DRIVER_DATA
;
2834 /// Inconsistent with specification here:
2835 /// In DataHubSubclass spec 0.9 page 16, the following symbol is NOT defined.
2836 /// But value is meaningful, 0 means Reserved.
2838 #define EFI_SUBCLASS_INSTANCE_RESERVED 0
2840 /// Inconsistent with specification here:
2841 /// In DataHubSubclass spec 0.9 page 16, the following symbol is NOT defined.
2842 /// But value is meaningful, -1 means Not Applicable.
2844 #define EFI_SUBCLASS_INSTANCE_NON_APPLICABLE 0xFFFF