2 This file defines GUIDs and associated data structures for records posted to the Data Hub.
3 The producers of these records use these definitions to construct records.
4 The consumers of these records use these definitions to retrieve, filter and parse records.
6 Copyright (c) 2007, Intel Corporation
7 All rights reserved. This program and the accompanying materials
8 are licensed and made available under the terms and conditions of the BSD License
9 which accompanies this distribution. The full text of the license may be found at
10 http://opensource.org/licenses/bsd-license.php
12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
15 @par Revision Reference:
16 DataHubRecord.h include all data hub sub class defitions from Cache subclass
17 spec 0.9, DataHub SubClass spec 0.9, Memory SubClass Spec 0.9, Processor
18 Subclass spec 0.9,Misc SubClass spec 0.9.
22 #ifndef _DATAHUB_RECORDS_H_
23 #define _DATAHUB_RECORDS_H_
25 #include <Protocol/FrameworkHii.h>
26 #include <Framework/FrameworkInternalFormRepresentation.h>
29 /// Inconsistent with specification here:
30 /// In MiscSubclass spec 0.9, the value is 0x0100.
31 /// Keep it unchanged from the perspective of binary consistency.
33 #define EFI_PROCESSOR_SUBCLASS_VERSION 0x00010000
37 typedef struct _USB_PORT_DEVICE_PATH
{
38 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath
;
39 PCI_DEVICE_PATH PciBusDevicePath
;
40 EFI_DEVICE_PATH_PROTOCOL EndDevicePath
;
41 } USB_PORT_DEVICE_PATH
;
46 typedef struct _IDE_DEVICE_PATH
{
47 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath
;
48 PCI_DEVICE_PATH PciBusDevicePath
;
49 EFI_DEVICE_PATH_PROTOCOL EndDevicePath
;
55 typedef struct _RMC_CONN_DEVICE_PATH
{
56 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath
;
57 PCI_DEVICE_PATH PciBridgeDevicePath
;
58 PCI_DEVICE_PATH PciBusDevicePath
;
59 EFI_DEVICE_PATH_PROTOCOL EndDevicePath
;
60 } RMC_CONN_DEVICE_PATH
;
65 typedef struct _RIDE_DEVICE_PATH
{
66 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath
;
67 PCI_DEVICE_PATH PciBridgeDevicePath
;
68 PCI_DEVICE_PATH PciBusDevicePath
;
69 EFI_DEVICE_PATH_PROTOCOL EndDevicePath
;
75 typedef struct _GB_NIC_DEVICE_PATH
{
76 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath
;
77 PCI_DEVICE_PATH PciBridgeDevicePath
;
78 PCI_DEVICE_PATH PciXBridgeDevicePath
;
79 PCI_DEVICE_PATH PciXBusDevicePath
;
80 EFI_DEVICE_PATH_PROTOCOL EndDevicePath
;
86 typedef struct _PS2_CONN_DEVICE_PATH
{
87 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath
;
88 PCI_DEVICE_PATH LpcBridgeDevicePath
;
89 ACPI_HID_DEVICE_PATH LpcBusDevicePath
;
90 EFI_DEVICE_PATH_PROTOCOL EndDevicePath
;
91 } PS2_CONN_DEVICE_PATH
;
94 // Serial Port Connector
96 typedef struct _SERIAL_CONN_DEVICE_PATH
{
97 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath
;
98 PCI_DEVICE_PATH LpcBridgeDevicePath
;
99 ACPI_HID_DEVICE_PATH LpcBusDevicePath
;
100 EFI_DEVICE_PATH_PROTOCOL EndDevicePath
;
101 } SERIAL_CONN_DEVICE_PATH
;
104 // Parallel Port Connector
106 typedef struct _PARALLEL_CONN_DEVICE_PATH
{
107 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath
;
108 PCI_DEVICE_PATH LpcBridgeDevicePath
;
109 ACPI_HID_DEVICE_PATH LpcBusDevicePath
;
110 EFI_DEVICE_PATH_PROTOCOL EndDevicePath
;
111 } PARALLEL_CONN_DEVICE_PATH
;
116 typedef struct _FLOOPY_CONN_DEVICE_PATH
{
117 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath
;
118 PCI_DEVICE_PATH LpcBridgeDevicePath
;
119 ACPI_HID_DEVICE_PATH LpcBusDevicePath
;
120 EFI_DEVICE_PATH_PROTOCOL EndDevicePath
;
121 } FLOOPY_CONN_DEVICE_PATH
;
124 /// Inconsistent with specification here:
125 /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.
126 /// It's implementation-specific to simplify the code logic.
128 typedef union _EFI_MISC_PORT_DEVICE_PATH
{
129 USB_PORT_DEVICE_PATH UsbDevicePath
;
130 IDE_DEVICE_PATH IdeDevicePath
;
131 RMC_CONN_DEVICE_PATH RmcConnDevicePath
;
132 RIDE_DEVICE_PATH RideDevicePath
;
133 GB_NIC_DEVICE_PATH GbNicDevicePath
;
134 PS2_CONN_DEVICE_PATH Ps2ConnDevicePath
;
135 SERIAL_CONN_DEVICE_PATH SerialConnDevicePath
;
136 PARALLEL_CONN_DEVICE_PATH ParallelConnDevicePath
;
137 FLOOPY_CONN_DEVICE_PATH FloppyConnDevicePath
;
138 } EFI_MISC_PORT_DEVICE_PATH
;
143 /// String Token Definition
145 /// Inconsistent with specification here:
146 /// The macro isn't defined by any spec.
147 /// Keep it unchanged for backward compatibility.
149 #define EFI_STRING_TOKEN UINT16
152 /// Each data record that is a member of some subclass starts with a standard
153 /// header of type EFI_SUBCLASS_TYPE1_HEADER.
154 /// This header is only a guideline and applicable only to a data
155 /// subclass that is producing SMBIOS data records. A subclass can start with a
156 /// different header if needed.
160 /// The version of the specification to which a specific subclass data record adheres.
164 /// The size in bytes of this data class header.
168 /// The instance number of the subclass with the same ProducerName. This number is
169 /// applicable in cases where multiple subclass instances that were produced by the same
170 /// driver exist in the system. This entry is 1 based; 0 means Reserved and -1 means Not
171 /// Applicable. All data consumer drivers should be able to handle all the possible values
172 /// of Instance, including Not Applicable and Reserved.
176 /// The instance number of the RecordType for the same Instance. This number is
177 /// applicable in cases where multiple instances of the RecordType exist for a specific
178 /// Instance. This entry is 1 based; 0 means Reserved and -1 means Not Applicable.
179 /// All data consumer drivers should be able to handle all the possible values of
180 /// SubInstance, including Not Applicable and Reserved.
184 /// The record number for the data record being specified. The numbering scheme and
185 /// definition is defined in the specific subclass specification.
188 } EFI_SUBCLASS_TYPE1_HEADER
;
191 /// This structure is used to link data records in the same subclasses. A data record is
192 /// defined as a link to another data record in the same subclass using this structure.
196 /// An EFI_GUID that identifies the component that produced this data record. Type
197 /// EFI_GUID is defined in InstallProtocolInterface() in the EFI 1.10 Specification.
199 EFI_GUID ProducerName
;
201 /// The instance number of the subclass with the same ProducerName. This number is
202 /// applicable in cases where multiple subclass instances that were produced by the same
203 /// driver exist in the system. This entry is 1 based; 0 means Reserved and -1 means Not
204 /// Applicable. All data consumer drivers should be able to handle all the possible values
205 /// of Instance, including Not Applicable and Reserved.
208 /// The instance number of the RecordType for the same Instance. This number is
209 /// applicable in cases where multiple instances of the RecordType exist for a specific
210 /// Instance. This entry is 1 based; 0 means Reserved and -1 means Not Applicable.
211 /// All data consumer drivers should be able to handle all the possible values of
212 /// SubInstance, including Not Applicable and Reserved.
214 } EFI_INTER_LINK_DATA
;
220 /// This macro provides a calculation for base-10 representations. Value and Exponent are each
221 /// INT16. It is signed to cover negative values and is 16 bits wide (15 bits for data and 1 bit
226 /// The INT16 number by which to multiply the base-10 representation.
230 /// The INT16 number by which to raise the base-10 calculation.
233 } EFI_EXP_BASE2_DATA
;
236 /// This macro provides a calculation for base-2 representations. Value and Exponent are each
237 /// INT16. It is 16 bits wide and is unsigned to mean nonnegative values.
241 /// The INT16 number by which to multiply the base-2 representation.
245 /// The INT16 number by which to raise the base-2 calculation.
248 } EFI_EXP_BASE10_DATA
;
250 typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_MAX_CORE_FREQUENCY_DATA
;
251 typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_MAX_FSB_FREQUENCY_DATA
;
252 typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_CORE_FREQUENCY_DATA
;
255 /// This data record refers to the list of frequencies that the processor core supports. The list of
256 /// supported frequencies is determined by the firmware based on hardware capabilities--for example,
257 /// it could be a common subset of all processors and the chipset. The unit of measurement of this data
258 /// record is in Hertz. For asynchronous processors, the content of this data record is zero.
259 /// The list is terminated by -1 in the Value field of the last element. A Value field of zero means
260 /// that the processor/driver supports automatic frequency selection.
262 /// Inconsistent with specification here:
263 /// According to MiscSubclass 0.9 spec, it should be a pointer since it refers to a list of frequencies.
265 typedef EFI_EXP_BASE10_DATA
*EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA
;
268 /// This data record refers to the list of supported frequencies of the processor external bus. The list of
269 /// supported frequencies is determined by the firmware based on hardware capabilities--for example,
270 /// it could be a common subset of all processors and the chipset. The unit of measurement of this data
271 /// record is in Hertz. For asynchronous processors, the content of this data record is NULL.
272 /// The list is terminated by -1 in the Value field of the last element. A Value field of zero means
273 /// that the processor/driver supports automatic frequency selection.
275 typedef EFI_EXP_BASE10_DATA
*EFI_PROCESSOR_FSB_FREQUENCY_LIST_DATA
;
276 typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_FSB_FREQUENCY_DATA
;
277 typedef STRING_REF EFI_PROCESSOR_VERSION_DATA
;
278 typedef STRING_REF EFI_PROCESSOR_MANUFACTURER_DATA
;
279 typedef STRING_REF EFI_PROCESSOR_SERIAL_NUMBER_DATA
;
280 typedef STRING_REF EFI_PROCESSOR_ASSET_TAG_DATA
;
283 UINT32 ProcessorSteppingId
:4;
284 UINT32 ProcessorModel
: 4;
285 UINT32 ProcessorFamily
: 4;
286 UINT32 ProcessorType
: 2;
287 UINT32 ProcessorReserved1
: 2;
288 UINT32 ProcessorXModel
: 4;
289 UINT32 ProcessorXFamily
: 8;
290 UINT32 ProcessorReserved2
: 4;
291 } EFI_PROCESSOR_SIGNATURE
;
295 /// Inconsistent with specification here:
296 /// The name of third field in ProcSubClass spec0.9 is LogicalProcessorCount.
297 /// Keep it unchanged for backward compatibility.
300 UINT32 ProcessorBrandIndex
:8;
301 UINT32 ProcessorClflush
:8;
302 UINT32 ProcessorReserved
:8;
303 UINT32 ProcessorDfltApicId
:8;
304 } EFI_PROCESSOR_MISC_INFO
;
307 UINT32 ProcessorFpu
: 1;
308 UINT32 ProcessorVme
: 1;
309 UINT32 ProcessorDe
: 1;
310 UINT32 ProcessorPse
: 1;
311 UINT32 ProcessorTsc
: 1;
312 UINT32 ProcessorMsr
: 1;
313 UINT32 ProcessorPae
: 1;
314 UINT32 ProcessorMce
: 1;
315 UINT32 ProcessorCx8
: 1;
316 UINT32 ProcessorApic
: 1;
317 UINT32 ProcessorReserved1
: 1;
318 UINT32 ProcessorSep
: 1;
319 UINT32 ProcessorMtrr
: 1;
320 UINT32 ProcessorPge
: 1;
321 UINT32 ProcessorMca
: 1;
322 UINT32 ProcessorCmov
: 1;
323 UINT32 ProcessorPat
: 1;
324 UINT32 ProcessorPse36
: 1;
325 UINT32 ProcessorPsn
: 1;
326 UINT32 ProcessorClfsh
: 1;
327 UINT32 ProcessorReserved2
: 1;
328 UINT32 ProcessorDs
: 1;
329 UINT32 ProcessorAcpi
: 1;
330 UINT32 ProcessorMmx
: 1;
331 UINT32 ProcessorFxsr
: 1;
332 UINT32 ProcessorSse
: 1;
333 UINT32 ProcessorSse2
: 1;
334 UINT32 ProcessorSs
: 1;
335 UINT32 ProcessorReserved3
: 1;
336 UINT32 ProcessorTm
: 1;
337 UINT32 ProcessorReserved4
: 2;
338 } EFI_PROCESSOR_FEATURE_FLAGS
;
341 /// This data record refers to the unique ID that identifies a set of processors. This data record is 16
342 /// bytes in length. The data in this structure is processor specific and reserved values can be defined
343 /// for future use. The consumer of this data should not make any assumption and should use this data
344 /// with respect to the processor family defined in the Family record number.
348 /// Identifies the processor.
350 EFI_PROCESSOR_SIGNATURE Signature
;
352 /// Provides additional processor information.
354 EFI_PROCESSOR_MISC_INFO MiscInfo
;
356 /// Reserved for future use.
360 /// Provides additional processor information.
362 EFI_PROCESSOR_FEATURE_FLAGS FeatureFlags
;
363 } EFI_PROCESSOR_ID_DATA
;
366 /// This data record refers to the general classification of the processor. This data record is 4 bytes in
370 EfiProcessorOther
= 1,
371 EfiProcessorUnknown
= 2,
372 EfiCentralProcessor
= 3,
373 EfiMathProcessor
= 4,
375 EfiVideoProcessor
= 6
376 } EFI_PROCESSOR_TYPE_DATA
;
379 /// This data record refers to the family of the processor as defined by the DMTF.
380 /// This data record is 4 bytes in length.
383 EfiProcessorFamilyOther
= 0x01,
384 EfiProcessorFamilyUnknown
= 0x02,
385 EfiProcessorFamily8086
= 0x03,
386 EfiProcessorFamily80286
= 0x04,
387 EfiProcessorFamilyIntel386
= 0x05,
388 EfiProcessorFamilyIntel486
= 0x06,
389 EfiProcessorFamily8087
= 0x07,
390 EfiProcessorFamily80287
= 0x08,
391 EfiProcessorFamily80387
= 0x09,
392 EfiProcessorFamily80487
= 0x0A,
393 EfiProcessorFamilyPentium
= 0x0B,
394 EfiProcessorFamilyPentiumPro
= 0x0C,
395 EfiProcessorFamilyPentiumII
= 0x0D,
396 EfiProcessorFamilyPentiumMMX
= 0x0E,
397 EfiProcessorFamilyCeleron
= 0x0F,
398 EfiProcessorFamilyPentiumIIXeon
= 0x10,
399 EfiProcessorFamilyPentiumIII
= 0x11,
400 EfiProcessorFamilyM1
= 0x12,
401 EfiProcessorFamilyM2
= 0x13,
402 EfiProcessorFamilyM1Reserved2
= 0x14,
403 EfiProcessorFamilyM1Reserved3
= 0x15,
404 EfiProcessorFamilyM1Reserved4
= 0x16,
405 EfiProcessorFamilyM1Reserved5
= 0x17,
406 EfiProcessorFamilyAmdDuron
= 0x18,
407 EfiProcessorFamilyK5
= 0x19,
408 EfiProcessorFamilyK6
= 0x1A,
409 EfiProcessorFamilyK6_2
= 0x1B,
410 EfiProcessorFamilyK6_3
= 0x1C,
411 EfiProcessorFamilyAmdAthlon
= 0x1D,
412 EfiProcessorFamilyAmd29000
= 0x1E,
413 EfiProcessorFamilyK6_2Plus
= 0x1F,
414 EfiProcessorFamilyPowerPC
= 0x20,
415 EfiProcessorFamilyPowerPC601
= 0x21,
416 EfiProcessorFamilyPowerPC603
= 0x22,
417 EfiProcessorFamilyPowerPC603Plus
= 0x23,
418 EfiProcessorFamilyPowerPC604
= 0x24,
419 EfiProcessorFamilyPowerPC620
= 0x25,
420 EfiProcessorFamilyPowerPCx704
= 0x26,
421 EfiProcessorFamilyPowerPC750
= 0x27,
422 EfiProcessorFamilyAlpha3
= 0x30,
423 EfiProcessorFamilyAlpha21064
= 0x31,
424 EfiProcessorFamilyAlpha21066
= 0x32,
425 EfiProcessorFamilyAlpha21164
= 0x33,
426 EfiProcessorFamilyAlpha21164PC
= 0x34,
427 EfiProcessorFamilyAlpha21164a
= 0x35,
428 EfiProcessorFamilyAlpha21264
= 0x36,
429 EfiProcessorFamilyAlpha21364
= 0x37,
430 EfiProcessorFamilyMips
= 0x40,
431 EfiProcessorFamilyMIPSR4000
= 0x41,
432 EfiProcessorFamilyMIPSR4200
= 0x42,
433 EfiProcessorFamilyMIPSR4400
= 0x43,
434 EfiProcessorFamilyMIPSR4600
= 0x44,
435 EfiProcessorFamilyMIPSR10000
= 0x45,
436 EfiProcessorFamilySparc
= 0x50,
437 EfiProcessorFamilySuperSparc
= 0x51,
438 EfiProcessorFamilymicroSparcII
= 0x52,
439 EfiProcessorFamilymicroSparcIIep
= 0x53,
440 EfiProcessorFamilyUltraSparc
= 0x54,
441 EfiProcessorFamilyUltraSparcII
= 0x55,
442 EfiProcessorFamilyUltraSparcIIi
= 0x56,
443 EfiProcessorFamilyUltraSparcIII
= 0x57,
445 /// Inconsistent with specification here:
446 /// This field in ProcSubClass spec 0.9 is defined as EfiProcessorFamilyUltraSparcIIi.
447 /// Change it to EfiProcessorFamilyUltraSparcIIIi to avoid build break.
449 EfiProcessorFamilyUltraSparcIIIi
= 0x58,
450 EfiProcessorFamily68040
= 0x60,
451 EfiProcessorFamily68xxx
= 0x61,
452 EfiProcessorFamily68000
= 0x62,
453 EfiProcessorFamily68010
= 0x63,
454 EfiProcessorFamily68020
= 0x64,
455 EfiProcessorFamily68030
= 0x65,
456 EfiProcessorFamilyHobbit
= 0x70,
457 EfiProcessorFamilyCrusoeTM5000
= 0x78,
458 EfiProcessorFamilyCrusoeTM3000
= 0x79,
459 EfiProcessorFamilyEfficeonTM8000
= 0x7A,
460 EfiProcessorFamilyWeitek
= 0x80,
461 EfiProcessorFamilyItanium
= 0x82,
462 EfiProcessorFamilyAmdAthlon64
= 0x83,
463 EfiProcessorFamilyAmdOpteron
= 0x84,
464 EfiProcessorFamilyAmdSempron
= 0x85,
465 EfiProcessorFamilyAmdTurion64Mobile
= 0x86,
466 EfiProcessorFamilyDualCoreAmdOpteron
= 0x87,
467 EfiProcessorFamilyAmdAthlon64X2DualCore
= 0x88,
468 EfiProcessorFamilyAmdTurion64X2Mobile
= 0x89,
469 EfiProcessorFamilyPARISC
= 0x90,
470 EfiProcessorFamilyPaRisc8500
= 0x91,
471 EfiProcessorFamilyPaRisc8000
= 0x92,
472 EfiProcessorFamilyPaRisc7300LC
= 0x93,
473 EfiProcessorFamilyPaRisc7200
= 0x94,
474 EfiProcessorFamilyPaRisc7100LC
= 0x95,
475 EfiProcessorFamilyPaRisc7100
= 0x96,
476 EfiProcessorFamilyV30
= 0xA0,
477 EfiProcessorFamilyPentiumIIIXeon
= 0xB0,
478 EfiProcessorFamilyPentiumIIISpeedStep
= 0xB1,
479 EfiProcessorFamilyPentium4
= 0xB2,
480 EfiProcessorFamilyIntelXeon
= 0xB3,
481 EfiProcessorFamilyAS400
= 0xB4,
482 EfiProcessorFamilyIntelXeonMP
= 0xB5,
483 EfiProcessorFamilyAMDAthlonXP
= 0xB6,
484 EfiProcessorFamilyAMDAthlonMP
= 0xB7,
485 EfiProcessorFamilyIntelItanium2
= 0xB8,
487 /// Inconsistent with specification here:
488 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
490 EfiProcessorFamilyIntelPentiumM
= 0xB9,
492 /// Inconsistent with specification here:
493 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
495 EfiProcessorFamilyIntelCeleronD
= 0xBA,
497 /// Inconsistent with specification here:
498 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
500 EfiProcessorFamilyIntelPentiumD
= 0xBB,
502 /// Inconsistent with specification here:
503 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
505 EfiProcessorFamilyIntelPentiumEx
= 0xBC,
507 /// Inconsistent with specification here:
508 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
510 EfiProcessorFamilyIntelCoreSolo
= 0xBD,
512 /// Inconsistent with specification here:
513 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
515 EfiProcessorFamilyReserved
= 0xBE,
517 /// Inconsistent with specification here:
518 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
520 EfiProcessorFamilyIntelCore2
= 0xBF,
521 EfiProcessorFamilyIBM390
= 0xC8,
522 EfiProcessorFamilyG4
= 0xC9,
523 EfiProcessorFamilyG5
= 0xCA,
525 /// Inconsistent with specification here:
526 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
528 EfiProcessorFamilyG6
= 0xCB,
530 /// Inconsistent with specification here:
531 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
533 EfiProcessorFamilyzArchitectur
= 0xCC,
535 /// Inconsistent with specification here:
536 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
538 EfiProcessorFamilyViaC7M
= 0xD2,
540 /// Inconsistent with specification here:
541 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
543 EfiProcessorFamilyViaC7D
= 0xD3,
545 /// Inconsistent with specification here:
546 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
548 EfiProcessorFamilyViaC7
= 0xD4,
550 /// Inconsistent with specification here:
551 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
553 EfiProcessorFamilyViaEden
= 0xD5,
554 EfiProcessorFamilyi860
= 0xFA,
555 EfiProcessorFamilyi960
= 0xFB,
557 /// Inconsistent with specification here:
558 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
560 EfiProcessorFamilyIndicatorFamily2
= 0xFE,
562 /// Inconsistent with specification here:
563 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
565 EfiProcessorFamilyReserved1
= 0xFF
566 } EFI_PROCESSOR_FAMILY_DATA
;
569 /// This data record refers to the core voltage of the processor being defined. The unit of measurement
570 /// of this data record is in volts.
572 typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_VOLTAGE_DATA
;
575 /// This data record refers to the base address of the APIC of the processor being defined. This data
576 /// record is a physical address location.
578 typedef EFI_PHYSICAL_ADDRESS EFI_PROCESSOR_APIC_BASE_ADDRESS_DATA
;
581 /// This data record refers to the ID of the APIC of the processor being defined. This data record is a
584 typedef UINT32 EFI_PROCESSOR_APIC_ID_DATA
;
587 /// This data record refers to the version number of the APIC of the processor being defined. This data
588 /// record is a 4-byte entry.
590 typedef UINT32 EFI_PROCESSOR_APIC_VERSION_NUMBER_DATA
;
593 EfiProcessorIa32Microcode
= 1,
594 EfiProcessorIpfPalAMicrocode
= 2,
595 EfiProcessorIpfPalBMicrocode
= 3
596 } EFI_PROCESSOR_MICROCODE_TYPE
;
599 /// This data record refers to the revision of the processor microcode that is loaded in the processor.
600 /// This data record is a 4-byte entry.
604 /// Identifies what type of microcode the data is.
606 EFI_PROCESSOR_MICROCODE_TYPE ProcessorMicrocodeType
;
608 /// Indicates the revision number of this microcode.
610 UINT32 ProcessorMicrocodeRevisionNumber
;
611 } EFI_PROCESSOR_MICROCODE_REVISION_DATA
;
614 /// This data record refers to the status of the processor.
617 UINT32 CpuStatus
:3; ///> Indicates the status of the processor.
618 UINT32 Reserved1
:3; ///> Reserved for future use. Should be set to zero.
619 UINT32 SocketPopulated
:1; ///> Indicates if the processor is socketed or not.
620 UINT32 Reserved2
:1; ///> Reserved for future use. Should be set to zero.
621 UINT32 ApicEnable
:1; ///> Indicates if the APIC is enabled or not.
622 UINT32 BootApplicationProcessor
:1; ///> Indicates if this processor is the boot processor.
623 UINT32 Reserved3
:22;///> Reserved for future use. Should be set to zero.
624 } EFI_PROCESSOR_STATUS_DATA
;
627 EfiCpuStatusUnknown
= 0,
628 EfiCpuStatusEnabled
= 1,
629 EfiCpuStatusDisabledByUser
= 2,
630 EfiCpuStatusDisabledbyBios
= 3,
631 EfiCpuStatusIdle
= 4,
632 EfiCpuStatusOther
= 7
636 EfiProcessorSocketOther
= 1,
637 EfiProcessorSocketUnknown
= 2,
638 EfiProcessorSocketDaughterBoard
= 3,
639 EfiProcessorSocketZIF
= 4,
640 EfiProcessorSocketReplacePiggyBack
= 5,
641 EfiProcessorSocketNone
= 6,
642 EfiProcessorSocketLIF
= 7,
643 EfiProcessorSocketSlot1
= 8,
644 EfiProcessorSocketSlot2
= 9,
645 EfiProcessorSocket370Pin
= 0xA,
646 EfiProcessorSocketSlotA
= 0xB,
647 EfiProcessorSocketSlotM
= 0xC,
648 EfiProcessorSocket423
= 0xD,
649 EfiProcessorSocketA462
= 0xE,
650 EfiProcessorSocket478
= 0xF,
651 EfiProcessorSocket754
= 0x10,
652 EfiProcessorSocket940
= 0x11,
654 /// Inconsistent with specification here:
655 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
657 EfiProcessorSocket939
= 0x12,
659 /// Inconsistent with specification here:
660 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
662 EfiProcessorSocketmPGA604
= 0x13,
664 /// Inconsistent with specification here:
665 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
667 EfiProcessorSocketLGA771
= 0x14,
669 /// Inconsistent with specification here:
670 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
672 EfiProcessorSocketLGA775
= 0x15
674 } EFI_PROCESSOR_SOCKET_TYPE_DATA
;
676 typedef STRING_REF EFI_PROCESSOR_SOCKET_NAME_DATA
;
679 /// Inconsistent with specification here:
680 /// In MiscSubclass spec 0.9, the naming is EFI_PROCESSOR_CACHE_ASSOCIATION_DATA.
681 /// Keep it unchanged for backward compatibilty.
683 typedef EFI_INTER_LINK_DATA EFI_CACHE_ASSOCIATION_DATA
;
686 /// This data record refers to the health status of the processor.
688 /// Inconsistent with specification here:
689 /// In MiscSubclass spec 0.9, the naming is EFI_PROCESSOR_HEALTH_STATUS_DATA.
690 /// Keep it unchanged for backward compatibilty.
693 EfiProcessorHealthy
= 1,
694 EfiProcessorPerfRestricted
= 2,
695 EfiProcessorFuncRestricted
= 3
696 } EFI_PROCESSOR_HEALTH_STATUS
;
699 /// This data record refers to the package number of this processor. Multiple logical processors can
700 /// exist in a system and each logical processor can be correlated to the physical processor using this
703 typedef UINTN EFI_PROCESSOR_PACKAGE_NUMBER_DATA
;
706 /// Inconsistent with specification here:
707 /// In ProcSubclass spec 0.9, the enumeration type data structure is NOT defined.
708 /// The equivalent in spec is
709 /// #define EFI_PROCESSOR_FREQUENCY_RECORD_NUMBER 0x00000001
710 /// #define EFI_PROCESSOR_BUS_FREQUENCY_RECORD_NUMBER 0x00000002
711 /// #define EFI_PROCESSOR_VERSION_RECORD_NUMBER 0x00000003
712 /// #define EFI_PROCESSOR_MANUFACTURER_RECORD_NUMBER 0x00000004
713 /// #define EFI_PROCESSOR_SERIAL_NUMBER_RECORD_NUMBER 0x00000005
714 /// #define EFI_PROCESSOR_ID_RECORD_NUMBER 0x00000006
715 /// #define EFI_PROCESSOR_TYPE_RECORD_NUMBER 0x00000007
716 /// #define EFI_PROCESSOR_FAMILY_RECORD_NUMBER 0x00000008
717 /// #define EFI_PROCESSOR_VOLTAGE_RECORD_NUMBER 0x00000009
718 /// #define EFI_PROCESSOR_APIC_BASE_ADDRESS_RECORD_NUMBER 0x0000000A
719 /// #define EFI_PROCESSOR_APIC_ID_RECORD_NUMBER 0x0000000B
720 /// #define EFI_PROCESSOR_APIC_VER_NUMBER_RECORD_NUMBER 0x0000000C
721 /// #define EFI_PROCESSOR_MICROCODE_REVISION_RECORD_NUMBER 0x0000000D
722 /// #define EFI_PROCESSOR_STATUS_RECORD_NUMBER 0x0000000E
723 /// #define EFI_PROCESSOR_SOCKET_TYPE_RECORD_NUMBER 0x0000000F
724 /// #define EFI_PROCESSOR_SOCKET_NAME_RECORD_NUMBER 0x00000010
725 /// #define EFI_PROCESSOR_CACHE_ASSOCIATION_RECORD_NUMBER 0x00000011
726 /// #define EFI_PROCESSOR_MAX_FREQUENCY_RECORD_NUMBER 0x00000012
727 /// #define EFI_PROCESSOR_ASSET_TAG_RECORD_NUMBER 0x00000013
728 /// #define EFI_PROCESSOR_MAX_FSB_FREQUENCY_RECORD_NUMBER 0x00000014
729 /// #define EFI_PROCESSOR_PACKAGE_NUMBER_RECORD_NUMBER 0x00000015
730 /// #define EFI_PROCESSOR_FREQUENCY_LIST_RECORD_NUMBER 0x00000016
731 /// #define EFI_PROCESSOR_FSB_FREQUENCY_LIST_RECORD_NUMBER 0x00000017
732 /// #define EFI_PROCESSOR_HEALTH_STATUS_RECORD_NUMBER 0x00000018
734 /// Keep the definition unchanged for backward compatibility.
736 ProcessorCoreFrequencyRecordType
= 1,
737 ProcessorFsbFrequencyRecordType
= 2,
738 ProcessorVersionRecordType
= 3,
739 ProcessorManufacturerRecordType
= 4,
740 ProcessorSerialNumberRecordType
= 5,
741 ProcessorIdRecordType
= 6,
742 ProcessorTypeRecordType
= 7,
743 ProcessorFamilyRecordType
= 8,
744 ProcessorVoltageRecordType
= 9,
745 ProcessorApicBaseAddressRecordType
= 10,
746 ProcessorApicIdRecordType
= 11,
747 ProcessorApicVersionNumberRecordType
= 12,
748 CpuUcodeRevisionDataRecordType
= 13,
749 ProcessorStatusRecordType
= 14,
750 ProcessorSocketTypeRecordType
= 15,
751 ProcessorSocketNameRecordType
= 16,
752 CacheAssociationRecordType
= 17,
753 ProcessorMaxCoreFrequencyRecordType
= 18,
754 ProcessorAssetTagRecordType
= 19,
755 ProcessorMaxFsbFrequencyRecordType
= 20,
756 ProcessorPackageNumberRecordType
= 21,
757 ProcessorCoreFrequencyListRecordType
= 22,
758 ProcessorFsbFrequencyListRecordType
= 23,
759 ProcessorHealthStatusRecordType
= 24
760 } EFI_CPU_VARIABLE_RECORD_TYPE
;
763 /// Inconsistent with specification here:
764 /// In ProcSubclass spec 0.9, the union type data structure is NOT defined.
765 /// It's implementation-specific to simplify the code logic.
768 EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA ProcessorCoreFrequencyList
;
769 EFI_PROCESSOR_FSB_FREQUENCY_LIST_DATA ProcessorFsbFrequencyList
;
770 EFI_PROCESSOR_SERIAL_NUMBER_DATA ProcessorSerialNumber
;
771 EFI_PROCESSOR_CORE_FREQUENCY_DATA ProcessorCoreFrequency
;
772 EFI_PROCESSOR_FSB_FREQUENCY_DATA ProcessorFsbFrequency
;
773 EFI_PROCESSOR_MAX_CORE_FREQUENCY_DATA ProcessorMaxCoreFrequency
;
774 EFI_PROCESSOR_MAX_FSB_FREQUENCY_DATA ProcessorMaxFsbFrequency
;
775 EFI_PROCESSOR_VERSION_DATA ProcessorVersion
;
776 EFI_PROCESSOR_MANUFACTURER_DATA ProcessorManufacturer
;
777 EFI_PROCESSOR_ID_DATA ProcessorId
;
778 EFI_PROCESSOR_TYPE_DATA ProcessorType
;
779 EFI_PROCESSOR_FAMILY_DATA ProcessorFamily
;
780 EFI_PROCESSOR_VOLTAGE_DATA ProcessorVoltage
;
781 EFI_PROCESSOR_APIC_BASE_ADDRESS_DATA ProcessorApicBase
;
782 EFI_PROCESSOR_APIC_ID_DATA ProcessorApicId
;
783 EFI_PROCESSOR_APIC_VERSION_NUMBER_DATA ProcessorApicVersionNumber
;
784 EFI_PROCESSOR_MICROCODE_REVISION_DATA CpuUcodeRevisionData
;
785 EFI_PROCESSOR_STATUS_DATA ProcessorStatus
;
786 EFI_PROCESSOR_SOCKET_TYPE_DATA ProcessorSocketType
;
787 EFI_PROCESSOR_SOCKET_NAME_DATA ProcessorSocketName
;
788 EFI_PROCESSOR_ASSET_TAG_DATA ProcessorAssetTag
;
789 EFI_PROCESSOR_HEALTH_STATUS ProcessorHealthStatus
;
790 EFI_PROCESSOR_PACKAGE_NUMBER_DATA ProcessorPackageNumber
;
791 } EFI_CPU_VARIABLE_RECORD
;
794 EFI_SUBCLASS_TYPE1_HEADER DataRecordHeader
;
795 EFI_CPU_VARIABLE_RECORD VariableRecord
;
796 } EFI_CPU_DATA_RECORD
;
798 #define EFI_CACHE_SUBCLASS_VERSION 0x00010000
800 typedef EFI_EXP_BASE2_DATA EFI_CACHE_SIZE_DATA
;
802 /// Inconsistent with specification here:
803 /// In MiscSubclass spec 0.9, the naming is EFI_CACHE_MAXIMUM_SIZE_DATA.
804 /// Keep it unchanged for backward compatibilty.
806 typedef EFI_EXP_BASE2_DATA EFI_MAXIMUM_CACHE_SIZE_DATA
;
807 typedef EFI_EXP_BASE10_DATA EFI_CACHE_SPEED_DATA
;
808 typedef STRING_REF EFI_CACHE_SOCKET_DATA
;
815 UINT32 PipelineBurst
:1;
816 UINT32 Asynchronous
:1;
817 UINT32 Synchronous
:1;
819 } EFI_CACHE_SRAM_TYPE_DATA
;
821 typedef EFI_CACHE_SRAM_TYPE_DATA EFI_CACHE_SRAM_INSTALL_DATA
;
824 EfiCacheErrorOther
= 1,
825 EfiCacheErrorUnknown
= 2,
826 EfiCacheErrorNone
= 3,
827 EfiCacheErrorParity
= 4,
828 EfiCacheErrorSingleBit
= 5,
829 EfiCacheErrorMultiBit
= 6
830 } EFI_CACHE_ERROR_TYPE_DATA
;
833 EfiCacheTypeOther
= 1,
834 EfiCacheTypeUnknown
= 2,
835 EfiCacheTypeInstruction
= 3,
836 EfiCacheTypeData
= 4,
837 EfiCacheTypeUnified
= 5
838 } EFI_CACHE_TYPE_DATA
;
841 EfiCacheAssociativityOther
= 1,
842 EfiCacheAssociativityUnknown
= 2,
843 EfiCacheAssociativityDirectMapped
= 3,
844 EfiCacheAssociativity2Way
= 4,
845 EfiCacheAssociativity4Way
= 5,
846 EfiCacheAssociativityFully
= 6,
847 EfiCacheAssociativity8Way
= 7,
848 EfiCacheAssociativity16Way
= 8
849 } EFI_CACHE_ASSOCIATIVITY_DATA
;
852 /// Inconsistent with specification here:
853 /// In CacheSubclass 0.9 spec. It defines the field type as UINT16.
854 /// In fact, it should be UINT32 type since it refers to a 32bit width data.
862 UINT32 OperationalMode
:2;
863 UINT32 Reserved1
:22;
864 } EFI_CACHE_CONFIGURATION_DATA
;
866 #define EFI_CACHE_L1 1
867 #define EFI_CACHE_L2 2
868 #define EFI_CACHE_L3 3
869 #define EFI_CACHE_L4 4
870 #define EFI_CACHE_LMAX EFI_CACHE_L4
872 #define EFI_CACHE_SOCKETED 1
873 #define EFI_CACHE_NOT_SOCKETED 0
876 EfiCacheInternal
= 0,
877 EfiCacheExternal
= 1,
878 EfiCacheReserved
= 2,
880 } EFI_CACHE_LOCATION
;
882 #define EFI_CACHE_ENABLED 1
883 #define EFI_CACHE_DISABLED 0
886 EfiCacheWriteThrough
= 0,
887 EfiCacheWriteBack
= 1,
888 EfiCacheDynamicMode
= 2,
889 EfiCacheUnknownMode
= 3
890 } EFI_CACHE_OPERATIONAL_MODE
;
895 CacheSizeRecordType
= 1,
896 MaximumSizeCacheRecordType
= 2,
897 CacheSpeedRecordType
= 3,
898 CacheSocketRecordType
= 4,
899 CacheSramTypeRecordType
= 5,
900 CacheInstalledSramTypeRecordType
= 6,
901 CacheErrorTypeRecordType
= 7,
902 CacheTypeRecordType
= 8,
903 CacheAssociativityRecordType
= 9,
904 CacheConfigRecordType
= 10
905 } EFI_CACHE_VARIABLE_RECORD_TYPE
;
908 /// Inconsistent with specification here:
909 /// In CacheSubclass spec0.9, the union type data structure is NOT defined.
910 /// It's implementation-specific to simplify the code logic.
913 EFI_CACHE_SIZE_DATA CacheSize
;
914 EFI_MAXIMUM_CACHE_SIZE_DATA MaximumCacheSize
;
915 EFI_CACHE_SPEED_DATA CacheSpeed
;
916 EFI_CACHE_SOCKET_DATA CacheSocket
;
917 EFI_CACHE_SRAM_TYPE_DATA CacheSramType
;
918 EFI_CACHE_SRAM_TYPE_DATA CacheInstalledSramType
;
919 EFI_CACHE_ERROR_TYPE_DATA CacheErrorType
;
920 EFI_CACHE_TYPE_DATA CacheType
;
921 EFI_CACHE_ASSOCIATIVITY_DATA CacheAssociativity
;
922 EFI_CACHE_CONFIGURATION_DATA CacheConfig
;
923 EFI_CACHE_ASSOCIATION_DATA CacheAssociation
;
924 } EFI_CACHE_VARIABLE_RECORD
;
927 EFI_SUBCLASS_TYPE1_HEADER DataRecordHeader
;
928 EFI_CACHE_VARIABLE_RECORD VariableRecord
;
929 } EFI_CACHE_DATA_RECORD
;
931 #define EFI_MEMORY_SUBCLASS_VERSION 0x0100
932 #define EFI_MEMORY_SIZE_RECORD_NUMBER 0x00000001
934 typedef enum _EFI_MEMORY_REGION_TYPE
{
935 EfiMemoryRegionMemory
= 0x01,
936 EfiMemoryRegionReserved
= 0x02,
937 EfiMemoryRegionAcpi
= 0x03,
938 EfiMemoryRegionNvs
= 0x04
939 } EFI_MEMORY_REGION_TYPE
;
942 /// This data record refers to the size of a memory region. The regions that are
943 /// described can refer to physical memory, memory-mapped I/O, or reserved BIOS memory regions.
944 /// The unit of measurement of this data record is in bytes.
948 /// A zero-based value that indicates which processor(s) can access the memory region.
949 /// A value of 0xFFFF indicates the region is accessible by all processors.
951 UINT32 ProcessorNumber
;
953 /// A zero-based value that indicates the starting bus that can access the memory region.
955 UINT16 StartBusNumber
;
957 /// A zero-based value that indicates the ending bus that can access the memory region.
958 /// A value of 0xFF for a PCI system indicates the region is accessible by all buses and
959 /// is global in scope. An example of the EndBusNumber not being 0xFF is a system
960 /// with two or more peer-to-host PCI bridges.
964 /// The type of memory region from the operating system's point of view.
965 /// MemoryRegionType values are equivalent to the legacy INT 15 AX = E820 BIOS
968 EFI_MEMORY_REGION_TYPE MemoryRegionType
;
970 /// The size of the memory region in bytes.
972 EFI_EXP_BASE2_DATA MemorySize
;
974 /// The starting physical address of the memory region.
976 EFI_PHYSICAL_ADDRESS MemoryStartAddress
;
977 } EFI_MEMORY_SIZE_DATA
;
980 #define EFI_MEMORY_ARRAY_LOCATION_RECORD_NUMBER 0x00000002
982 typedef enum _EFI_MEMORY_ARRAY_LOCATION
{
983 EfiMemoryArrayLocationOther
= 0x01,
984 EfiMemoryArrayLocationUnknown
= 0x02,
985 EfiMemoryArrayLocationSystemBoard
= 0x03,
986 EfiMemoryArrayLocationIsaAddonCard
= 0x04,
987 EfiMemoryArrayLocationEisaAddonCard
= 0x05,
988 EfiMemoryArrayLocationPciAddonCard
= 0x06,
989 EfiMemoryArrayLocationMcaAddonCard
= 0x07,
990 EfiMemoryArrayLocationPcmciaAddonCard
= 0x08,
991 EfiMemoryArrayLocationProprietaryAddonCard
= 0x09,
992 EfiMemoryArrayLocationNuBus
= 0x0A,
993 EfiMemoryArrayLocationPc98C20AddonCard
= 0xA0,
994 EfiMemoryArrayLocationPc98C24AddonCard
= 0xA1,
995 EfiMemoryArrayLocationPc98EAddonCard
= 0xA2,
996 EfiMemoryArrayLocationPc98LocalBusAddonCard
= 0xA3
997 } EFI_MEMORY_ARRAY_LOCATION
;
999 typedef enum _EFI_MEMORY_ARRAY_USE
{
1000 EfiMemoryArrayUseOther
= 0x01,
1001 EfiMemoryArrayUseUnknown
= 0x02,
1002 EfiMemoryArrayUseSystemMemory
= 0x03,
1003 EfiMemoryArrayUseVideoMemory
= 0x04,
1004 EfiMemoryArrayUseFlashMemory
= 0x05,
1005 EfiMemoryArrayUseNonVolatileRam
= 0x06,
1006 EfiMemoryArrayUseCacheMemory
= 0x07
1007 } EFI_MEMORY_ARRAY_USE
;
1009 typedef enum _EFI_MEMORY_ERROR_CORRECTION
{
1010 EfiMemoryErrorCorrectionOther
= 0x01,
1011 EfiMemoryErrorCorrectionUnknown
= 0x02,
1012 EfiMemoryErrorCorrectionNone
= 0x03,
1013 EfiMemoryErrorCorrectionParity
= 0x04,
1014 EfiMemoryErrorCorrectionSingleBitEcc
= 0x05,
1015 EfiMemoryErrorCorrectionMultiBitEcc
= 0x06,
1016 EfiMemoryErrorCorrectionCrc
= 0x07
1017 } EFI_MEMORY_ERROR_CORRECTION
;
1020 /// This data record refers to the physical memory array. This data record is a structure.
1021 /// The type definition structure for EFI_MEMORY_ARRAY_LOCATION_DATA is in SMBIOS 2.3.4:
1022 /// - Table 3.3.17.1, Type 16, Offset 0x4
1023 /// - Table 3.3.17.2, Type 16, Offset 0x5
1024 /// - Table 3.3.17.3, Type 16, with the following offsets:
1032 /// The physical location of the memory array.
1034 EFI_MEMORY_ARRAY_LOCATION MemoryArrayLocation
;
1036 /// The memory array usage.
1038 EFI_MEMORY_ARRAY_USE MemoryArrayUse
;
1040 /// The primary error correction or detection supported by this memory array.
1042 EFI_MEMORY_ERROR_CORRECTION MemoryErrorCorrection
;
1044 /// The maximum memory capacity size in kilobytes. If capacity is unknown, then
1045 /// values of MaximumMemoryCapacity.Value = 0x00 and
1046 /// MaximumMemoryCapacity.Exponent = 0x8000 are used.
1048 EFI_EXP_BASE2_DATA MaximumMemoryCapacity
;
1050 /// The number of memory slots or sockets that are available for memory devices
1053 UINT16 NumberMemoryDevices
;
1054 } EFI_MEMORY_ARRAY_LOCATION_DATA
;
1057 #define EFI_MEMORY_ARRAY_LINK_RECORD_NUMBER 0x00000003
1059 typedef enum _EFI_MEMORY_FORM_FACTOR
{
1060 EfiMemoryFormFactorOther
= 0x01,
1061 EfiMemoryFormFactorUnknown
= 0x02,
1062 EfiMemoryFormFactorSimm
= 0x03,
1063 EfiMemoryFormFactorSip
= 0x04,
1064 EfiMemoryFormFactorChip
= 0x05,
1065 EfiMemoryFormFactorDip
= 0x06,
1066 EfiMemoryFormFactorZip
= 0x07,
1067 EfiMemoryFormFactorProprietaryCard
= 0x08,
1068 EfiMemoryFormFactorDimm
= 0x09,
1069 EfiMemoryFormFactorTsop
= 0x0A,
1070 EfiMemoryFormFactorRowOfChips
= 0x0B,
1071 EfiMemoryFormFactorRimm
= 0x0C,
1072 EfiMemoryFormFactorSodimm
= 0x0D,
1073 EfiMemoryFormFactorSrimm
= 0x0E,
1075 /// Inconsistent with specification here:
1076 /// This field is NOT defined in MemSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
1078 EfiMemoryFormFactorFbDimm
= 0x0F
1079 } EFI_MEMORY_FORM_FACTOR
;
1081 typedef enum _EFI_MEMORY_ARRAY_TYPE
{
1082 EfiMemoryTypeOther
= 0x01,
1083 EfiMemoryTypeUnknown
= 0x02,
1084 EfiMemoryTypeDram
= 0x03,
1085 EfiMemoryTypeEdram
= 0x04,
1086 EfiMemoryTypeVram
= 0x05,
1087 EfiMemoryTypeSram
= 0x06,
1088 EfiMemoryTypeRam
= 0x07,
1089 EfiMemoryTypeRom
= 0x08,
1090 EfiMemoryTypeFlash
= 0x09,
1091 EfiMemoryTypeEeprom
= 0x0A,
1092 EfiMemoryTypeFeprom
= 0x0B,
1093 EfiMemoryTypeEprom
= 0x0C,
1094 EfiMemoryTypeCdram
= 0x0D,
1095 EfiMemoryType3Dram
= 0x0E,
1096 EfiMemoryTypeSdram
= 0x0F,
1097 EfiMemoryTypeSgram
= 0x10,
1098 EfiMemoryTypeRdram
= 0x11,
1099 EfiMemoryTypeDdr
= 0x12,
1101 /// Inconsistent with specification here:
1102 /// This field is NOT defined in MemSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
1104 EfiMemoryTypeDdr2
= 0x13,
1106 /// Inconsistent with specification here:
1107 /// This field is NOT defined in MemSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
1109 EfiMemoryTypeDdr2FbDimm
= 0x14
1110 } EFI_MEMORY_ARRAY_TYPE
;
1116 UINT32 FastPaged
:1;
1117 UINT32 StaticColumn
:1;
1118 UINT32 PseudoStatic
:1;
1120 UINT32 Synchronous
:1;
1123 UINT32 WindowDram
:1;
1124 UINT32 CacheDram
:1;
1125 UINT32 Nonvolatile
:1;
1126 UINT32 Reserved1
:19;
1127 } EFI_MEMORY_TYPE_DETAIL
;
1130 EfiMemoryStateEnabled
= 0,
1131 EfiMemoryStateUnknown
= 1,
1132 EfiMemoryStateUnsupported
= 2,
1133 EfiMemoryStateError
= 3,
1134 EfiMemoryStateAbsent
= 4,
1135 EfiMemoryStateDisabled
= 5,
1137 /// Inconsistent with specification here:
1138 /// This field is NOT defined in MemSubClass spec0.9. It's introduced for SMBIOS2.6 spec.
1140 EfiMemoryStatePartial
= 6
1144 /// This data record describes a memory device. This data record is a structure.
1145 /// The type definition structure for EFI_MEMORY_ARRAY_LINK_DATA is in SMBIOS 2.3.4.
1149 /// A string that identifies the physically labeled socket or board position where the
1150 /// memory device is located.
1152 STRING_REF MemoryDeviceLocator
;
1154 /// A string denoting the physically labeled bank where the memory device is located.
1156 STRING_REF MemoryBankLocator
;
1158 /// A string denoting the memory manufacturer.
1160 STRING_REF MemoryManufacturer
;
1162 /// A string denoting the serial number of the memory device.
1164 STRING_REF MemorySerialNumber
;
1166 /// The asset tag of the memory device.
1168 STRING_REF MemoryAssetTag
;
1170 /// A string denoting the part number of the memory device.
1172 STRING_REF MemoryPartNumber
;
1174 /// A link to a memory array structure set.
1176 EFI_INTER_LINK_DATA MemoryArrayLink
;
1178 /// A link to a memory array structure set.
1180 EFI_INTER_LINK_DATA MemorySubArrayLink
;
1182 /// The total width in bits of this memory device. If there are no error correcting bits,
1183 /// then the total width equals the data width. If the width is unknown, then set the field
1186 UINT16 MemoryTotalWidth
;
1188 /// The data width in bits of the memory device. A data width of 0x00 and a total width
1189 /// of 0x08 indicate that the device is used solely for error correction.
1191 UINT16 MemoryDataWidth
;
1193 /// The size in bytes of the memory device. A value of 0x00 denotes that no device is
1194 /// installed, while a value of all Fs denotes that the size is not known.
1196 EFI_EXP_BASE2_DATA MemoryDeviceSize
;
1198 /// The form factor of the memory device.
1200 EFI_MEMORY_FORM_FACTOR MemoryFormFactor
;
1202 /// A memory device set that must be populated with all devices of the same type and
1203 /// size. A value of 0x00 indicates that the device is not part of any set. A value of 0xFF
1204 /// indicates that the attribute is unknown. Any other value denotes the set number.
1206 UINT8 MemoryDeviceSet
;
1208 /// The memory type in the socket.
1210 EFI_MEMORY_ARRAY_TYPE MemoryType
;
1212 /// The memory type details.
1214 EFI_MEMORY_TYPE_DETAIL MemoryTypeDetail
;
1216 /// The memory speed in megahertz (MHz). A value of 0x00 denotes that
1217 /// the speed is unknown.
1218 /// Inconsistent with specification here:
1219 /// In MemSubclass spec 0.9, the naming is MemoryTypeSpeed.
1220 /// Keep it unchanged for backward compatibilty.
1222 EFI_EXP_BASE10_DATA MemorySpeed
;
1224 /// The memory state.
1226 EFI_MEMORY_STATE MemoryState
;
1227 } EFI_MEMORY_ARRAY_LINK_DATA
;
1230 #define EFI_MEMORY_ARRAY_START_ADDRESS_RECORD_NUMBER 0x00000004
1233 /// This data record refers to a specified physical memory array associated with
1234 /// a given memory range.
1238 /// The starting physical address in bytes of memory mapped to a specified physical
1241 EFI_PHYSICAL_ADDRESS MemoryArrayStartAddress
;
1243 /// The last physical address in bytes of memory mapped to a specified physical memory
1246 EFI_PHYSICAL_ADDRESS MemoryArrayEndAddress
;
1248 /// See Physical Memory Array (Type 16) for physical memory array structures.
1250 EFI_INTER_LINK_DATA PhysicalMemoryArrayLink
;
1252 /// The number of memory devices that form a single row of memory for the address
1255 UINT16 MemoryArrayPartitionWidth
;
1256 } EFI_MEMORY_ARRAY_START_ADDRESS_DATA
;
1259 #define EFI_MEMORY_DEVICE_START_ADDRESS_RECORD_NUMBER 0x00000005
1262 /// This data record refers to a physical memory device that is associated with
1263 /// a given memory range.
1267 /// The starting physical address that is associated with the device.
1269 EFI_PHYSICAL_ADDRESS MemoryDeviceStartAddress
;
1271 /// The ending physical address that is associated with the device.
1273 EFI_PHYSICAL_ADDRESS MemoryDeviceEndAddress
;
1275 /// A link to the memory device data structure.
1277 EFI_INTER_LINK_DATA PhysicalMemoryDeviceLink
;
1279 /// A link to the memory array data structure.
1281 EFI_INTER_LINK_DATA PhysicalMemoryArrayLink
;
1283 /// The position of the memory device in a row. A value of 0x00 is reserved and a value
1284 /// of 0xFF indicates that the position is unknown.
1286 UINT8 MemoryDevicePartitionRowPosition
;
1288 /// The position of the device in an interleave.
1290 UINT8 MemoryDeviceInterleavePosition
;
1292 /// The maximum number of consecutive rows from the device that are accessed in a
1293 /// single interleave transfer. A value of 0x00 indicates that the device is not interleaved
1294 /// and a value of 0xFF indicates that the interleave configuration is unknown.
1296 UINT8 MemoryDeviceInterleaveDataDepth
;
1297 } EFI_MEMORY_DEVICE_START_ADDRESS_DATA
;
1301 // Memory. Channel Device Type - SMBIOS Type 37
1304 #define EFI_MEMORY_CHANNEL_TYPE_RECORD_NUMBER 0x00000006
1306 typedef enum _EFI_MEMORY_CHANNEL_TYPE
{
1307 EfiMemoryChannelTypeOther
= 1,
1308 EfiMemoryChannelTypeUnknown
= 2,
1309 EfiMemoryChannelTypeRambus
= 3,
1310 EfiMemoryChannelTypeSyncLink
= 4
1311 } EFI_MEMORY_CHANNEL_TYPE
;
1314 /// This data record refers the type of memory that is associated with the channel. This data record is a
1316 /// The type definition structure for EFI_MEMORY_CHANNEL_TYPE_DATA is in SMBIOS 2.3.4,
1317 /// Table 3.3.38, Type 37, with the following offsets:
1324 /// The type of memory that is associated with the channel.
1326 EFI_MEMORY_CHANNEL_TYPE MemoryChannelType
;
1328 /// The maximum load that is supported by the channel.
1330 UINT8 MemoryChannelMaximumLoad
;
1332 /// The number of memory devices on this channel.
1334 UINT8 MemoryChannelDeviceCount
;
1335 } EFI_MEMORY_CHANNEL_TYPE_DATA
;
1337 #define EFI_MEMORY_CHANNEL_DEVICE_RECORD_NUMBER 0x00000007
1340 /// This data record refers to the memory device that is associated with the memory channel. This data
1341 /// record is a structure.
1342 /// The type definition structure for EFI_MEMORY_CHANNEL_DEVICE_DATA is in SMBIOS 2.3.4,
1343 /// Table 3.3.38, Type 37, with the following offsets:
1349 /// A number between one and MemoryChannelDeviceCount plus an arbitrary base.
1353 /// The Link of the associated memory device. See Memory Device (Type 17) for
1356 EFI_INTER_LINK_DATA DeviceLink
;
1358 /// The number of load units that this device consumes.
1360 UINT8 MemoryChannelDeviceLoad
;
1361 } EFI_MEMORY_CHANNEL_DEVICE_DATA
;
1364 // Memory. Controller Information - SMBIOS Type 5
1367 /// Inconsistent with specification here:
1368 /// In MemSubclass spec 0.9, the following data structures are NOT defined.
1369 /// It's introduced for SmBios 2.6 type 5.
1371 #define EFI_MEMORY_CONTROLLER_INFORMATION_RECORD_NUMBER 0x00000008
1374 /// Inconsistent with specification here:
1375 /// In MemSubclass spec 0.9, the following data structures are NOT defined.
1376 /// It's introduced for SmBios 2.6 type 5.
1379 EfiErrorDetectingMethodOther
= 1,
1380 EfiErrorDetectingMethodUnknown
= 2,
1381 EfiErrorDetectingMethodNone
= 3,
1382 EfiErrorDetectingMethodParity
= 4,
1383 EfiErrorDetectingMethod32Ecc
= 5,
1384 EfiErrorDetectingMethod64Ecc
= 6,
1385 EfiErrorDetectingMethod128Ecc
= 7,
1386 EfiErrorDetectingMethodCrc
= 8
1387 } EFI_MEMORY_ERROR_DETECT_METHOD_TYPE
;
1390 /// Inconsistent with specification here:
1391 /// In MemSubclass spec 0.9, the following data structures are NOT defined.
1392 /// It's introduced for SmBios 2.6 type 5.
1398 UINT8 SingleBitErrorCorrect
:1;
1399 UINT8 DoubleBitErrorCorrect
:1;
1400 UINT8 ErrorScrubbing
:1;
1402 } EFI_MEMORY_ERROR_CORRECT_CAPABILITY
;
1405 /// Inconsistent with specification here:
1406 /// In MemSubclass spec 0.9, the following data structures are NOT defined.
1407 /// It's introduced for SmBios 2.6 type 5.
1410 EfiMemoryInterleaveOther
= 1,
1411 EfiMemoryInterleaveUnknown
= 2,
1412 EfiMemoryInterleaveOneWay
= 3,
1413 EfiMemoryInterleaveTwoWay
= 4,
1414 EfiMemoryInterleaveFourWay
= 5,
1415 EfiMemoryInterleaveEightWay
= 6,
1416 EfiMemoryInterleaveSixteenWay
= 7
1417 } EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE
;
1420 /// Inconsistent with specification here:
1421 /// In MemSubclass spec 0.9, the following data structures are NOT defined.
1422 /// It's introduced for SmBios 2.6 type 5.
1430 UINT16 Reserved
:11;
1431 } EFI_MEMORY_SPEED_TYPE
;
1434 /// Inconsistent with specification here:
1435 /// In MemSubclass spec 0.9, the following data structures are NOT defined.
1436 /// It's introduced for SmBios 2.6 type 5.
1442 UINT16 FastPageMode
:1;
1451 } EFI_MEMORY_SUPPORTED_TYPE
;
1454 /// Inconsistent with specification here:
1455 /// In MemSubclass spec 0.9, the following data structures are NOT defined.
1456 /// It's introduced for SmBios 2.6 type 5.
1463 } EFI_MEMORY_MODULE_VOLTAGE_TYPE
;
1466 /// EFI_MEMORY_CONTROLLER_INFORMATION is obsolete
1467 /// Use EFI_MEMORY_CONTROLLER_INFORMATION_DATA instead
1469 /// Inconsistent with specification here:
1470 /// In MemSubclass spec 0.9, the following data structures are NOT defined.
1471 /// It's introduced for SmBios 2.6 type 5.
1474 EFI_MEMORY_ERROR_DETECT_METHOD_TYPE ErrorDetectingMethod
;
1475 EFI_MEMORY_ERROR_CORRECT_CAPABILITY ErrorCorrectingCapability
;
1476 EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE MemorySupportedInterleave
;
1477 EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE MemoryCurrentInterleave
;
1478 UINT8 MaxMemoryModuleSize
;
1479 EFI_MEMORY_SPEED_TYPE MemorySpeedType
;
1480 EFI_MEMORY_SUPPORTED_TYPE MemorySupportedType
;
1481 EFI_MEMORY_MODULE_VOLTAGE_TYPE MemoryModuleVoltage
;
1482 UINT8 NumberofMemorySlot
;
1483 EFI_MEMORY_ERROR_CORRECT_CAPABILITY EnabledCorrectingCapability
;
1484 UINT16
*MemoryModuleConfigHandles
;
1485 } EFI_MEMORY_CONTROLLER_INFORMATION
;
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 EFI_INTER_LINK_DATA MemoryModuleConfig
[1];
1504 } EFI_MEMORY_CONTROLLER_INFORMATION_DATA
;
1507 /// Memory. Error Information - SMBIOS Type 18
1509 /// Inconsistent with specification here:
1510 /// In MemSubclass spec 0.9, the following data structures are NOT defined.
1511 /// It's introduced for SmBios 2.6 type 18.
1513 #define EFI_MEMORY_32BIT_ERROR_INFORMATION_RECORD_NUMBER 0x00000009
1515 /// Inconsistent with specification here:
1516 /// In MemSubclass spec 0.9, the following data structures are NOT defined.
1517 /// It's introduced for SmBios 2.6 type 18.
1520 EfiMemoryErrorOther
= 1,
1521 EfiMemoryErrorUnknown
= 2,
1522 EfiMemoryErrorOk
= 3,
1523 EfiMemoryErrorBadRead
= 4,
1524 EfiMemoryErrorParity
= 5,
1525 EfiMemoryErrorSigleBit
= 6,
1526 EfiMemoryErrorDoubleBit
= 7,
1527 EfiMemoryErrorMultiBit
= 8,
1528 EfiMemoryErrorNibble
= 9,
1529 EfiMemoryErrorChecksum
= 10,
1530 EfiMemoryErrorCrc
= 11,
1531 EfiMemoryErrorCorrectSingleBit
= 12,
1532 EfiMemoryErrorCorrected
= 13,
1533 EfiMemoryErrorUnCorrectable
= 14
1534 } EFI_MEMORY_ERROR_TYPE
;
1536 /// Inconsistent with specification here:
1537 /// In MemSubclass spec 0.9, the following data structures are NOT defined.
1538 /// It's introduced for SmBios 2.6 type 18.
1541 EfiMemoryGranularityOther
= 1,
1542 EfiMemoryGranularityOtherUnknown
= 2,
1543 EfiMemoryGranularityDeviceLevel
= 3,
1544 EfiMemoryGranularityMemPartitionLevel
= 4
1545 } EFI_MEMORY_ERROR_GRANULARITY_TYPE
;
1547 /// Inconsistent with specification here:
1548 /// In MemSubclass spec 0.9, the following data structures are NOT defined.
1549 /// It's introduced for SmBios 2.6 type 18.
1552 EfiMemoryErrorOperationOther
= 1,
1553 EfiMemoryErrorOperationUnknown
= 2,
1554 EfiMemoryErrorOperationRead
= 3,
1555 EfiMemoryErrorOperationWrite
= 4,
1556 EfiMemoryErrorOperationPartialWrite
= 5
1557 } EFI_MEMORY_ERROR_OPERATION_TYPE
;
1559 /// Inconsistent with specification here:
1560 /// In MemSubclass spec 0.9, the following data structures are NOT defined.
1561 /// It's introduced for SmBios 2.6 type 18.
1564 EFI_MEMORY_ERROR_TYPE MemoryErrorType
;
1565 EFI_MEMORY_ERROR_GRANULARITY_TYPE MemoryErrorGranularity
;
1566 EFI_MEMORY_ERROR_OPERATION_TYPE MemoryErrorOperation
;
1567 UINT32 VendorSyndrome
;
1568 UINT32 MemoryArrayErrorAddress
;
1569 UINT32 DeviceErrorAddress
;
1570 UINT32 DeviceErrorResolution
;
1571 } EFI_MEMORY_32BIT_ERROR_INFORMATION
;
1574 /// Memory. Error Information - SMBIOS Type 33
1576 /// Inconsistent with specification here:
1577 /// In MemSubclass spec 0.9, the following data structures are NOT defined.
1578 /// It's introduced for SmBios 2.6 type 33.
1580 #define EFI_MEMORY_64BIT_ERROR_INFORMATION_RECORD_NUMBER 0x0000000A
1583 /// Inconsistent with specification here:
1584 /// In MemSubclass spec 0.9, the following data structures are NOT defined.
1585 /// It's introduced for SmBios 2.6 type 33.
1588 EFI_MEMORY_ERROR_TYPE MemoryErrorType
;
1589 EFI_MEMORY_ERROR_GRANULARITY_TYPE MemoryErrorGranularity
;
1590 EFI_MEMORY_ERROR_OPERATION_TYPE MemoryErrorOperation
;
1591 UINT32 VendorSyndrome
;
1592 UINT64 MemoryArrayErrorAddress
;
1593 UINT64 DeviceErrorAddress
;
1594 UINT32 DeviceErrorResolution
;
1595 } EFI_MEMORY_64BIT_ERROR_INFORMATION
;
1598 /// Inconsistent with specification here:
1599 /// In MemSubclass spec 0.9, the following data structures are NOT defined.
1600 /// It is implementation-specific to simplify the code logic.
1602 typedef union _EFI_MEMORY_SUBCLASS_RECORDS
{
1603 EFI_MEMORY_SIZE_DATA SizeData
;
1604 EFI_MEMORY_ARRAY_LOCATION_DATA ArrayLocationData
;
1605 EFI_MEMORY_ARRAY_LINK_DATA ArrayLink
;
1606 EFI_MEMORY_ARRAY_START_ADDRESS_DATA ArrayStartAddress
;
1607 EFI_MEMORY_DEVICE_START_ADDRESS_DATA DeviceStartAddress
;
1608 EFI_MEMORY_CHANNEL_TYPE_DATA ChannelTypeData
;
1609 EFI_MEMORY_CHANNEL_DEVICE_DATA ChannelDeviceData
;
1610 EFI_MEMORY_CONTROLLER_INFORMATION MemoryControllerInfo
;
1611 EFI_MEMORY_32BIT_ERROR_INFORMATION Memory32bitErrorInfo
;
1612 EFI_MEMORY_64BIT_ERROR_INFORMATION Memory64bitErrorInfo
;
1613 } EFI_MEMORY_SUBCLASS_RECORDS
;
1616 EFI_SUBCLASS_TYPE1_HEADER Header
;
1617 EFI_MEMORY_SUBCLASS_RECORDS Record
;
1618 } EFI_MEMORY_SUBCLASS_DRIVER_DATA
;
1620 #define EFI_MISC_SUBCLASS_VERSION 0x0100
1625 // Last PCI Bus Number
1627 #define EFI_MISC_LAST_PCI_BUS_RECORD_NUMBER 0x00000001
1631 } EFI_MISC_LAST_PCI_BUS_DATA
;
1634 // Misc. BIOS Vendor - SMBIOS Type 0
1636 #define EFI_MISC_BIOS_VENDOR_RECORD_NUMBER 0x00000002
1639 UINT64 Reserved1
:2;
1641 UINT64 BiosCharacteristicsNotSupported
:1;
1642 UINT64 IsaIsSupported
:1;
1643 UINT64 McaIsSupported
:1;
1644 UINT64 EisaIsSupported
:1;
1645 UINT64 PciIsSupported
:1;
1646 UINT64 PcmciaIsSupported
:1;
1647 UINT64 PlugAndPlayIsSupported
:1;
1648 UINT64 ApmIsSupported
:1;
1649 UINT64 BiosIsUpgradable
:1;
1650 UINT64 BiosShadowingAllowed
:1;
1651 UINT64 VlVesaIsSupported
:1;
1652 UINT64 EscdSupportIsAvailable
:1;
1653 UINT64 BootFromCdIsSupported
:1;
1654 UINT64 SelectableBootIsSupported
:1;
1655 UINT64 RomBiosIsSocketed
:1;
1656 UINT64 BootFromPcmciaIsSupported
:1;
1657 UINT64 EDDSpecificationIsSupported
:1;
1658 UINT64 JapaneseNecFloppyIsSupported
:1;
1659 UINT64 JapaneseToshibaFloppyIsSupported
:1;
1660 UINT64 Floppy525_360IsSupported
:1;
1661 UINT64 Floppy525_12IsSupported
:1;
1662 UINT64 Floppy35_720IsSupported
:1;
1663 UINT64 Floppy35_288IsSupported
:1;
1664 UINT64 PrintScreenIsSupported
:1;
1665 UINT64 Keyboard8042IsSupported
:1;
1666 UINT64 SerialIsSupported
:1;
1667 UINT64 PrinterIsSupported
:1;
1668 UINT64 CgaMonoIsSupported
:1;
1670 UINT64 AcpiIsSupported
:1;
1671 UINT64 UsbLegacyIsSupported
:1;
1672 UINT64 AgpIsSupported
:1;
1673 UINT64 I20BootIsSupported
:1;
1674 UINT64 Ls120BootIsSupported
:1;
1675 UINT64 AtapiZipDriveBootIsSupported
:1;
1676 UINT64 Boot1394IsSupported
:1;
1677 UINT64 SmartBatteryIsSupported
:1;
1678 UINT64 BiosBootSpecIsSupported
:1;
1679 UINT64 FunctionKeyNetworkBootIsSupported
:1;
1680 UINT64 Reserved
:22;
1681 } EFI_MISC_BIOS_CHARACTERISTICS
;
1684 UINT64 BiosReserved
:16;
1685 UINT64 SystemReserved
:16;
1686 UINT64 Reserved
:32;
1687 } EFI_MISC_BIOS_CHARACTERISTICS_EXTENSION
;
1690 STRING_REF BiosVendor
;
1691 STRING_REF BiosVersion
;
1692 STRING_REF BiosReleaseDate
;
1693 EFI_PHYSICAL_ADDRESS BiosStartingAddress
;
1694 EFI_EXP_BASE2_DATA BiosPhysicalDeviceSize
;
1695 EFI_MISC_BIOS_CHARACTERISTICS BiosCharacteristics1
;
1696 EFI_MISC_BIOS_CHARACTERISTICS_EXTENSION
1697 BiosCharacteristics2
;
1699 /// Inconsistent with specification here:
1700 /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.
1701 /// It's introduced for SmBios 2.6 spec type 0.
1703 UINT8 BiosMajorRelease
;
1705 /// Inconsistent with specification here:
1706 /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.
1707 /// It's introduced for SmBios 2.6 spec type 0.
1709 UINT8 BiosMinorRelease
;
1711 /// Inconsistent with specification here:
1712 /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.
1713 /// It's introduced for SmBios 2.6 spec type 0.
1715 UINT8 BiosEmbeddedFirmwareMajorRelease
;
1717 /// Inconsistent with specification here:
1718 /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.
1719 /// It's introduced for SmBios 2.6 spec type 0.
1721 UINT8 BiosEmbeddedFirmwareMinorRelease
;
1722 } EFI_MISC_BIOS_VENDOR_DATA
;
1725 // Misc. System Manufacturer - SMBIOS Type 1
1727 #define EFI_MISC_SYSTEM_MANUFACTURER_RECORD_NUMBER 0x00000003
1730 EfiSystemWakeupTypeReserved
= 0,
1731 EfiSystemWakeupTypeOther
= 1,
1732 EfiSystemWakeupTypeUnknown
= 2,
1733 EfiSystemWakeupTypeApmTimer
= 3,
1734 EfiSystemWakeupTypeModemRing
= 4,
1735 EfiSystemWakeupTypeLanRemote
= 5,
1736 EfiSystemWakeupTypePowerSwitch
= 6,
1737 EfiSystemWakeupTypePciPme
= 7,
1738 EfiSystemWakeupTypeAcPowerRestored
= 8
1739 } EFI_MISC_SYSTEM_WAKEUP_TYPE
;
1742 STRING_REF SystemManufacturer
;
1743 STRING_REF SystemProductName
;
1744 STRING_REF SystemVersion
;
1745 STRING_REF SystemSerialNumber
;
1746 EFI_GUID SystemUuid
;
1747 EFI_MISC_SYSTEM_WAKEUP_TYPE SystemWakeupType
;
1749 /// Inconsistent with specification here:
1750 /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.
1751 /// It's introduced for SmBios 2.6 spec type 1.
1753 STRING_REF SystemSKUNumber
;
1755 /// Inconsistent with specification here:
1756 /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.
1757 /// It's introduced for SmBios 2.6 spec type 1.
1759 STRING_REF SystemFamily
;
1760 } EFI_MISC_SYSTEM_MANUFACTURER_DATA
;
1763 // Misc. Base Board Manufacturer - SMBIOS Type 2
1765 #define EFI_MISC_BASE_BOARD_MANUFACTURER_RECORD_NUMBER 0x00000004
1768 UINT32 Motherboard
:1;
1769 UINT32 RequiresDaughterCard
:1;
1770 UINT32 Removable
:1;
1771 UINT32 Replaceable
:1;
1772 UINT32 HotSwappable
:1;
1773 UINT32 Reserved
:27;
1774 } EFI_BASE_BOARD_FEATURE_FLAGS
;
1777 EfiBaseBoardTypeUnknown
= 1,
1778 EfiBaseBoardTypeOther
= 2,
1779 EfiBaseBoardTypeServerBlade
= 3,
1780 EfiBaseBoardTypeConnectivitySwitch
= 4,
1781 EfiBaseBoardTypeSystemManagementModule
= 5,
1782 EfiBaseBoardTypeProcessorModule
= 6,
1783 EfiBaseBoardTypeIOModule
= 7,
1784 EfiBaseBoardTypeMemoryModule
= 8,
1785 EfiBaseBoardTypeDaughterBoard
= 9,
1786 EfiBaseBoardTypeMotherBoard
= 0xA,
1787 EfiBaseBoardTypeProcessorMemoryModule
= 0xB,
1788 EfiBaseBoardTypeProcessorIOModule
= 0xC,
1789 EfiBaseBoardTypeInterconnectBoard
= 0xD
1790 } EFI_BASE_BOARD_TYPE
;
1793 STRING_REF BaseBoardManufacturer
;
1794 STRING_REF BaseBoardProductName
;
1795 STRING_REF BaseBoardVersion
;
1796 STRING_REF BaseBoardSerialNumber
;
1797 STRING_REF BaseBoardAssetTag
;
1798 STRING_REF BaseBoardChassisLocation
;
1799 EFI_BASE_BOARD_FEATURE_FLAGS BaseBoardFeatureFlags
;
1800 EFI_BASE_BOARD_TYPE BaseBoardType
;
1801 EFI_INTER_LINK_DATA BaseBoardChassisLink
;
1802 UINT32 BaseBoardNumberLinks
;
1803 EFI_INTER_LINK_DATA LinkN
;
1804 } EFI_MISC_BASE_BOARD_MANUFACTURER_DATA
;
1807 // Misc. System/Chassis Enclosure - SMBIOS Type 3
1809 #define EFI_MISC_CHASSIS_MANUFACTURER_RECORD_NUMBER 0x00000005
1812 EfiMiscChassisTypeOther
= 0x1,
1813 EfiMiscChassisTypeUnknown
= 0x2,
1814 EfiMiscChassisTypeDeskTop
= 0x3,
1815 EfiMiscChassisTypeLowProfileDesktop
= 0x4,
1816 EfiMiscChassisTypePizzaBox
= 0x5,
1817 EfiMiscChassisTypeMiniTower
= 0x6,
1818 EfiMiscChassisTypeTower
= 0x7,
1819 EfiMiscChassisTypePortable
= 0x8,
1820 EfiMiscChassisTypeLapTop
= 0x9,
1821 EfiMiscChassisTypeNotebook
= 0xA,
1822 EfiMiscChassisTypeHandHeld
= 0xB,
1823 EfiMiscChassisTypeDockingStation
= 0xC,
1824 EfiMiscChassisTypeAllInOne
= 0xD,
1825 EfiMiscChassisTypeSubNotebook
= 0xE,
1826 EfiMiscChassisTypeSpaceSaving
= 0xF,
1827 EfiMiscChassisTypeLunchBox
= 0x10,
1828 EfiMiscChassisTypeMainServerChassis
= 0x11,
1829 EfiMiscChassisTypeExpansionChassis
= 0x12,
1830 EfiMiscChassisTypeSubChassis
= 0x13,
1831 EfiMiscChassisTypeBusExpansionChassis
= 0x14,
1832 EfiMiscChassisTypePeripheralChassis
= 0x15,
1833 EfiMiscChassisTypeRaidChassis
= 0x16,
1834 EfiMiscChassisTypeRackMountChassis
= 0x17,
1835 EfiMiscChassisTypeSealedCasePc
= 0x18,
1836 EfiMiscChassisMultiSystemChassis
= 0x19
1837 } EFI_MISC_CHASSIS_TYPE
;
1841 /// Inconsistent with specification here:
1842 /// In MiscSubclass 0.9 spec. It have a wrong field name "EFI_MISC_CHASSIS_TYPE".
1843 /// Change it to "ChassisType" to pass build.
1845 UINT32 ChassisType
:16;
1846 UINT32 ChassisLockPresent
:1;
1847 UINT32 Reserved
:15;
1848 } EFI_MISC_CHASSIS_STATUS
;
1851 EfiChassisStateOther
= 0x01,
1852 EfiChassisStateUnknown
= 0x02,
1853 EfiChassisStateSafe
= 0x03,
1854 EfiChassisStateWarning
= 0x04,
1855 EfiChassisStateCritical
= 0x05,
1856 EfiChassisStateNonRecoverable
= 0x06
1857 } EFI_MISC_CHASSIS_STATE
;
1860 EfiChassisSecurityStatusOther
= 0x01,
1861 EfiChassisSecurityStatusUnknown
= 0x02,
1862 EfiChassisSecurityStatusNone
= 0x03,
1863 EfiChassisSecurityStatusExternalInterfaceLockedOut
= 0x04,
1864 EfiChassisSecurityStatusExternalInterfaceLockedEnabled
= 0x05
1865 } EFI_MISC_CHASSIS_SECURITY_STATE
;
1868 UINT32 RecordType
:1;
1870 UINT32 Reserved
:24;
1871 } EFI_MISC_ELEMENT_TYPE
;
1874 EFI_MISC_ELEMENT_TYPE ChassisElementType
;
1875 EFI_INTER_LINK_DATA ChassisElementStructure
;
1876 EFI_BASE_BOARD_TYPE ChassisBaseBoard
;
1877 UINT32 ChassisElementMinimum
;
1878 UINT32 ChassisElementMaximum
;
1879 } EFI_MISC_ELEMENTS
;
1882 STRING_REF ChassisManufacturer
;
1883 STRING_REF ChassisVersion
;
1884 STRING_REF ChassisSerialNumber
;
1885 STRING_REF ChassisAssetTag
;
1886 EFI_MISC_CHASSIS_STATUS ChassisType
;
1887 EFI_MISC_CHASSIS_STATE ChassisBootupState
;
1888 EFI_MISC_CHASSIS_STATE ChassisPowerSupplyState
;
1889 EFI_MISC_CHASSIS_STATE ChassisThermalState
;
1890 EFI_MISC_CHASSIS_SECURITY_STATE ChassisSecurityState
;
1891 UINT32 ChassisOemDefined
;
1892 UINT32 ChassisHeight
;
1893 UINT32 ChassisNumberPowerCords
;
1894 UINT32 ChassisElementCount
;
1895 UINT32 ChassisElementRecordLength
;
1896 EFI_MISC_ELEMENTS ChassisElements
;
1897 } EFI_MISC_CHASSIS_MANUFACTURER_DATA
;
1900 // Misc. Port Connector Information - SMBIOS Type 8
1902 #define EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_RECORD_NUMBER 0x00000006
1905 EfiPortConnectorTypeNone
= 0x00,
1906 EfiPortConnectorTypeCentronics
= 0x01,
1907 EfiPortConnectorTypeMiniCentronics
= 0x02,
1908 EfiPortConnectorTypeProprietary
= 0x03,
1909 EfiPortConnectorTypeDB25Male
= 0x04,
1910 EfiPortConnectorTypeDB25Female
= 0x05,
1911 EfiPortConnectorTypeDB15Male
= 0x06,
1912 EfiPortConnectorTypeDB15Female
= 0x07,
1913 EfiPortConnectorTypeDB9Male
= 0x08,
1914 EfiPortConnectorTypeDB9Female
= 0x09,
1915 EfiPortConnectorTypeRJ11
= 0x0A,
1916 EfiPortConnectorTypeRJ45
= 0x0B,
1917 EfiPortConnectorType50PinMiniScsi
= 0x0C,
1918 EfiPortConnectorTypeMiniDin
= 0x0D,
1919 EfiPortConnectorTypeMicriDin
= 0x0E,
1920 EfiPortConnectorTypePS2
= 0x0F,
1921 EfiPortConnectorTypeInfrared
= 0x10,
1922 EfiPortConnectorTypeHpHil
= 0x11,
1923 EfiPortConnectorTypeUsb
= 0x12,
1924 EfiPortConnectorTypeSsaScsi
= 0x13,
1925 EfiPortConnectorTypeCircularDin8Male
= 0x14,
1926 EfiPortConnectorTypeCircularDin8Female
= 0x15,
1927 EfiPortConnectorTypeOnboardIde
= 0x16,
1928 EfiPortConnectorTypeOnboardFloppy
= 0x17,
1929 EfiPortConnectorType9PinDualInline
= 0x18,
1930 EfiPortConnectorType25PinDualInline
= 0x19,
1931 EfiPortConnectorType50PinDualInline
= 0x1A,
1932 EfiPortConnectorType68PinDualInline
= 0x1B,
1933 EfiPortConnectorTypeOnboardSoundInput
= 0x1C,
1934 EfiPortConnectorTypeMiniCentronicsType14
= 0x1D,
1935 EfiPortConnectorTypeMiniCentronicsType26
= 0x1E,
1936 EfiPortConnectorTypeHeadPhoneMiniJack
= 0x1F,
1937 EfiPortConnectorTypeBNC
= 0x20,
1938 EfiPortConnectorType1394
= 0x21,
1939 EfiPortConnectorTypePC98
= 0xA0,
1940 EfiPortConnectorTypePC98Hireso
= 0xA1,
1941 EfiPortConnectorTypePCH98
= 0xA2,
1942 EfiPortConnectorTypePC98Note
= 0xA3,
1943 EfiPortConnectorTypePC98Full
= 0xA4,
1944 EfiPortConnectorTypeOther
= 0xFF
1945 } EFI_MISC_PORT_CONNECTOR_TYPE
;
1948 EfiPortTypeNone
= 0x00,
1949 EfiPortTypeParallelXtAtCompatible
= 0x01,
1950 EfiPortTypeParallelPortPs2
= 0x02,
1951 EfiPortTypeParallelPortEcp
= 0x03,
1952 EfiPortTypeParallelPortEpp
= 0x04,
1953 EfiPortTypeParallelPortEcpEpp
= 0x05,
1954 EfiPortTypeSerialXtAtCompatible
= 0x06,
1955 EfiPortTypeSerial16450Compatible
= 0x07,
1956 EfiPortTypeSerial16550Compatible
= 0x08,
1957 EfiPortTypeSerial16550ACompatible
= 0x09,
1958 EfiPortTypeScsi
= 0x0A,
1959 EfiPortTypeMidi
= 0x0B,
1960 EfiPortTypeJoyStick
= 0x0C,
1961 EfiPortTypeKeyboard
= 0x0D,
1962 EfiPortTypeMouse
= 0x0E,
1963 EfiPortTypeSsaScsi
= 0x0F,
1964 EfiPortTypeUsb
= 0x10,
1965 EfiPortTypeFireWire
= 0x11,
1966 EfiPortTypePcmciaTypeI
= 0x12,
1967 EfiPortTypePcmciaTypeII
= 0x13,
1968 EfiPortTypePcmciaTypeIII
= 0x14,
1969 EfiPortTypeCardBus
= 0x15,
1970 EfiPortTypeAccessBusPort
= 0x16,
1971 EfiPortTypeScsiII
= 0x17,
1972 EfiPortTypeScsiWide
= 0x18,
1973 EfiPortTypePC98
= 0x19,
1974 EfiPortTypePC98Hireso
= 0x1A,
1975 EfiPortTypePCH98
= 0x1B,
1976 EfiPortTypeVideoPort
= 0x1C,
1977 EfiPortTypeAudioPort
= 0x1D,
1978 EfiPortTypeModemPort
= 0x1E,
1979 EfiPortTypeNetworkPort
= 0x1F,
1980 EfiPortType8251Compatible
= 0xA0,
1981 EfiPortType8251FifoCompatible
= 0xA1,
1982 EfiPortTypeOther
= 0xFF
1983 } EFI_MISC_PORT_TYPE
;
1986 STRING_REF PortInternalConnectorDesignator
;
1987 STRING_REF PortExternalConnectorDesignator
;
1988 EFI_MISC_PORT_CONNECTOR_TYPE PortInternalConnectorType
;
1989 EFI_MISC_PORT_CONNECTOR_TYPE PortExternalConnectorType
;
1990 EFI_MISC_PORT_TYPE PortType
;
1991 EFI_MISC_PORT_DEVICE_PATH PortPath
;
1992 } EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA
;
1995 // Misc. System Slots - SMBIOS Type 9
1997 #define EFI_MISC_SYSTEM_SLOT_DESIGNATION_RECORD_NUMBER 0x00000007
2000 EfiSlotTypeOther
= 0x01,
2001 EfiSlotTypeUnknown
= 0x02,
2002 EfiSlotTypeIsa
= 0x03,
2003 EfiSlotTypeMca
= 0x04,
2004 EfiSlotTypeEisa
= 0x05,
2005 EfiSlotTypePci
= 0x06,
2006 EfiSlotTypePcmcia
= 0x07,
2007 EfiSlotTypeVlVesa
= 0x08,
2008 EfiSlotTypeProprietary
= 0x09,
2009 EfiSlotTypeProcessorCardSlot
= 0x0A,
2010 EfiSlotTypeProprietaryMemoryCardSlot
= 0x0B,
2011 EfiSlotTypeIORiserCardSlot
= 0x0C,
2012 EfiSlotTypeNuBus
= 0x0D,
2013 EfiSlotTypePci66MhzCapable
= 0x0E,
2014 EfiSlotTypeAgp
= 0x0F,
2016 /// Inconsistent with specification here:
2017 /// In MiscSubclass spec 0.9, its naming should be EfiSlotTypeAgp2X
2018 /// rather than EfiSlotTypeApg2X.
2020 EfiSlotTypeAgp2X
= 0x10,
2021 EfiSlotTypeAgp4X
= 0x11,
2022 EfiSlotTypePciX
= 0x12,
2023 EfiSlotTypeAgp8x
= 0x13,
2024 EfiSlotTypePC98C20
= 0xA0,
2025 EfiSlotTypePC98C24
= 0xA1,
2026 EfiSlotTypePC98E
= 0xA2,
2027 EfiSlotTypePC98LocalBus
= 0xA3,
2028 EfiSlotTypePC98Card
= 0xA4,
2030 /// Inconsistent with specification here:
2031 /// In MiscSubclass spec 0.9, this field isn't defined.
2032 /// It's introduced for SmBios 2.6 spec type 9.
2034 EfiSlotTypePciExpress
= 0xA5
2035 } EFI_MISC_SLOT_TYPE
;
2038 EfiSlotDataBusWidthOther
= 0x01,
2039 EfiSlotDataBusWidthUnknown
= 0x02,
2040 EfiSlotDataBusWidth8Bit
= 0x03,
2041 EfiSlotDataBusWidth16Bit
= 0x04,
2042 EfiSlotDataBusWidth32Bit
= 0x05,
2043 EfiSlotDataBusWidth64Bit
= 0x06,
2044 EfiSlotDataBusWidth128Bit
= 0x07
2045 } EFI_MISC_SLOT_DATA_BUS_WIDTH
;
2048 EfiSlotUsageOther
= 1,
2049 EfiSlotUsageUnknown
= 2,
2050 EfiSlotUsageAvailable
= 3,
2051 EfiSlotUsageInUse
= 4
2052 } EFI_MISC_SLOT_USAGE
;
2055 EfiSlotLengthOther
= 1,
2056 EfiSlotLengthUnknown
= 2,
2057 EfiSlotLengthShort
= 3,
2058 EfiSlotLengthLong
= 4
2059 } EFI_MISC_SLOT_LENGTH
;
2062 UINT32 CharacteristicsUnknown
:1;
2063 UINT32 Provides50Volts
:1;
2064 UINT32 Provides33Volts
:1;
2065 UINT32 SharedSlot
:1;
2066 UINT32 PcCard16Supported
:1;
2067 UINT32 CardBusSupported
:1;
2068 UINT32 ZoomVideoSupported
:1;
2069 UINT32 ModemRingResumeSupported
:1;
2070 UINT32 PmeSignalSupported
:1;
2071 UINT32 HotPlugDevicesSupported
:1;
2072 UINT32 SmbusSignalSupported
:1;
2073 UINT32 Reserved
:21;
2074 } EFI_MISC_SLOT_CHARACTERISTICS
;
2077 STRING_REF SlotDesignation
;
2078 EFI_MISC_SLOT_TYPE SlotType
;
2079 EFI_MISC_SLOT_DATA_BUS_WIDTH SlotDataBusWidth
;
2080 EFI_MISC_SLOT_USAGE SlotUsage
;
2081 EFI_MISC_SLOT_LENGTH SlotLength
;
2083 EFI_MISC_SLOT_CHARACTERISTICS SlotCharacteristics
;
2084 EFI_DEVICE_PATH_PROTOCOL SlotDevicePath
;
2085 } EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA
;
2088 // Misc. Onboard Device - SMBIOS Type 10
2090 #define EFI_MISC_ONBOARD_DEVICE_RECORD_NUMBER 0x00000008
2093 EfiOnBoardDeviceTypeOther
= 1,
2094 EfiOnBoardDeviceTypeUnknown
= 2,
2095 EfiOnBoardDeviceTypeVideo
= 3,
2096 EfiOnBoardDeviceTypeScsiController
= 4,
2097 EfiOnBoardDeviceTypeEthernet
= 5,
2098 EfiOnBoardDeviceTypeTokenRing
= 6,
2099 EfiOnBoardDeviceTypeSound
= 7
2100 } EFI_MISC_ONBOARD_DEVICE_TYPE
;
2103 UINT32 DeviceType
:16;
2104 UINT32 DeviceEnabled
:1;
2105 UINT32 Reserved
:15;
2106 } EFI_MISC_ONBOARD_DEVICE_STATUS
;
2109 STRING_REF OnBoardDeviceDescription
;
2111 /// Inconsistent with specification here:
2112 /// In MiscSubclass spec 0.9, the naming is OnBoardDeviceType.
2113 /// Keep it unchanged for backward compatibilty.
2115 EFI_MISC_ONBOARD_DEVICE_STATUS OnBoardDeviceStatus
;
2116 EFI_DEVICE_PATH_PROTOCOL OnBoardDevicePath
;
2117 } EFI_MISC_ONBOARD_DEVICE_DATA
;
2120 // Misc. BIOS Language Information - SMBIOS Type 11
2122 #define EFI_MISC_OEM_STRING_RECORD_NUMBER 0x00000009
2125 STRING_REF OemStringRef
[1];
2126 } EFI_MISC_OEM_STRING_DATA
;
2129 // Misc. System Options - SMBIOS Type 12
2132 STRING_REF SystemOptionStringRef
[1];
2133 } EFI_MISC_SYSTEM_OPTION_STRING_DATA
;
2135 #define EFI_MISC_SYSTEM_OPTION_STRING_RECORD_NUMBER 0x0000000A
2138 // Misc. Number of Installable Languages - SMBIOS Type 13
2140 #define EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_RECORD_NUMBER 0x0000000B
2143 UINT32 AbbreviatedLanguageFormat
:1;
2144 UINT32 Reserved
:31;
2145 } EFI_MISC_LANGUAGE_FLAGS
;
2148 UINT16 NumberOfInstallableLanguages
;
2149 EFI_MISC_LANGUAGE_FLAGS LanguageFlags
;
2150 UINT16 CurrentLanguageNumber
;
2151 } EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA
;
2154 // Misc. System Language String
2156 #define EFI_MISC_SYSTEM_LANGUAGE_STRING_RECORD_NUMBER 0x0000000C
2160 STRING_REF SystemLanguageString
;
2161 } EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA
;
2164 // Group Associations - SMBIOS Type 14
2166 #define EFI_MISC_GROUP_NAME_RECORD_NUMBER 0x0000000D
2169 STRING_REF GroupName
;
2170 UINT16 NumberGroupItems
;
2172 } EFI_MISC_GROUP_NAME_DATA
;
2175 // Group Item Set Element
2177 #define EFI_MISC_GROUP_ITEM_SET_RECORD_NUMBER 0x0000000E
2181 EFI_INTER_LINK_DATA GroupLink
;
2183 UINT16 GroupElementId
;
2184 } EFI_MISC_GROUP_ITEM_SET_DATA
;
2187 // Misc. Pointing Device Type - SMBIOS Type 21
2189 #define EFI_MISC_POINTING_DEVICE_TYPE_RECORD_NUMBER 0x0000000F
2192 EfiPointingDeviceTypeOther
= 0x01,
2193 EfiPointingDeviceTypeUnknown
= 0x02,
2194 EfiPointingDeviceTypeMouse
= 0x03,
2195 EfiPointingDeviceTypeTrackBall
= 0x04,
2196 EfiPointingDeviceTypeTrackPoint
= 0x05,
2197 EfiPointingDeviceTypeGlidePoint
= 0x06,
2198 EfiPointingDeviceTouchPad
= 0x07,
2199 EfiPointingDeviceTouchScreen
= 0x08,
2200 EfiPointingDeviceOpticalSensor
= 0x09
2201 } EFI_MISC_POINTING_DEVICE_TYPE
;
2204 EfiPointingDeviceInterfaceOther
= 0x01,
2205 EfiPointingDeviceInterfaceUnknown
= 0x02,
2206 EfiPointingDeviceInterfaceSerial
= 0x03,
2207 EfiPointingDeviceInterfacePs2
= 0x04,
2208 EfiPointingDeviceInterfaceInfrared
= 0x05,
2209 EfiPointingDeviceInterfaceHpHil
= 0x06,
2210 EfiPointingDeviceInterfaceBusMouse
= 0x07,
2211 EfiPointingDeviceInterfaceADB
= 0x08,
2212 EfiPointingDeviceInterfaceBusMouseDB9
= 0xA0,
2213 EfiPointingDeviceInterfaceBusMouseMicroDin
= 0xA1,
2214 EfiPointingDeviceInterfaceUsb
= 0xA2
2215 } EFI_MISC_POINTING_DEVICE_INTERFACE
;
2218 EFI_MISC_POINTING_DEVICE_TYPE PointingDeviceType
;
2219 EFI_MISC_POINTING_DEVICE_INTERFACE PointingDeviceInterface
;
2220 UINT16 NumberPointingDeviceButtons
;
2221 EFI_DEVICE_PATH_PROTOCOL PointingDevicePath
;
2222 } EFI_MISC_POINTING_DEVICE_TYPE_DATA
;
2225 // Portable Battery - SMBIOS Type 22
2228 /// Inconsistent with specification here:
2229 /// In MiscSubclass spec 0.9, the naming is EFI_MISC_BATTERY_LOCATION_RECORD_NUMBER.
2230 /// Keep it unchanged for backward compatibilty.
2232 #define EFI_MISC_PORTABLE_BATTERY_RECORD_NUMBER 0x00000010
2235 /// Inconsistent with specification here:
2236 /// In MiscSubclass spec 0.9, the structure name is EFI_MISC_BATTERY_DEVICE_CHEMISTRY.
2237 /// And all field namings are also different with spec.
2238 /// Keep it unchanged for backward compatibilty.
2241 EfiPortableBatteryDeviceChemistryOther
= 1,
2242 EfiPortableBatteryDeviceChemistryUnknown
= 2,
2243 EfiPortableBatteryDeviceChemistryLeadAcid
= 3,
2244 EfiPortableBatteryDeviceChemistryNickelCadmium
= 4,
2245 EfiPortableBatteryDeviceChemistryNickelMetalHydride
= 5,
2246 EfiPortableBatteryDeviceChemistryLithiumIon
= 6,
2247 EfiPortableBatteryDeviceChemistryZincAir
= 7,
2248 EfiPortableBatteryDeviceChemistryLithiumPolymer
= 8
2249 } EFI_MISC_PORTABLE_BATTERY_DEVICE_CHEMISTRY
;
2252 /// Inconsistent with specification here:
2253 /// In MiscSubclass spec 0.9, the structure name is EFI_MISC_BATTERY_LOCATION_DATA.
2254 /// And the name and the order of the fields are also different with spec.
2255 /// Keep it unchanged for backward compatibilty.
2258 STRING_REF Location
;
2259 STRING_REF Manufacturer
;
2260 STRING_REF ManufactureDate
;
2261 STRING_REF SerialNumber
;
2262 STRING_REF DeviceName
;
2263 EFI_MISC_PORTABLE_BATTERY_DEVICE_CHEMISTRY
2265 UINT16 DesignCapacity
;
2266 UINT16 DesignVoltage
;
2267 STRING_REF SBDSVersionNumber
;
2269 UINT16 SBDSSerialNumber
;
2270 UINT16 SBDSManufactureDate
;
2271 STRING_REF SBDSDeviceChemistry
;
2272 UINT8 DesignCapacityMultiplier
;
2274 UINT8 BatteryNumber
; // Temporary
2275 BOOLEAN Valid
; // Is entry valid - Temporary
2276 } EFI_MISC_PORTABLE_BATTERY
;
2280 // Misc. Reset Capabilities - SMBIOS Type 23
2282 #define EFI_MISC_RESET_CAPABILITIES_RECORD_NUMBER 0x00000011
2286 UINT32 BootOption
:2;
2287 UINT32 BootOptionOnLimit
:2;
2288 UINT32 WatchdogTimerPresent
:1;
2289 UINT32 Reserved
:26;
2290 } EFI_MISC_RESET_CAPABILITIES_TYPE
;
2293 EFI_MISC_RESET_CAPABILITIES_TYPE ResetCapabilities
;
2296 UINT16 ResetTimerInterval
;
2297 UINT16 ResetTimeout
;
2298 } EFI_MISC_RESET_CAPABILITIES
;
2301 EFI_MISC_RESET_CAPABILITIES ResetCapabilities
;
2304 UINT16 ResetTimerInterval
;
2305 UINT16 ResetTimeout
;
2306 } EFI_MISC_RESET_CAPABILITIES_DATA
;
2309 // Misc. Hardware Security - SMBIOS Type 24
2311 #define EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA_RECORD_NUMBER 0x00000012
2314 /// Inconsistent with specification here:
2315 /// In MiscSubclass spec 0.9, it only mention the possible value of each field in
2316 /// EFI_MISC_HARDWARE_SECURITY_SETTINGS.
2317 /// It's implementation-specific to simplify the code logic.
2320 EfiHardwareSecurityStatusDisabled
= 0,
2321 EfiHardwareSecurityStatusEnabled
= 1,
2322 EfiHardwareSecurityStatusNotImplemented
= 2,
2323 EfiHardwareSecurityStatusUnknown
= 3
2324 } EFI_MISC_HARDWARE_SECURITY_STATUS
;
2327 UINT32 FrontPanelResetStatus
:2;
2328 UINT32 AdministratorPasswordStatus
:2;
2329 UINT32 KeyboardPasswordStatus
:2;
2330 UINT32 PowerOnPasswordStatus
:2;
2331 UINT32 Reserved
:24;
2332 } EFI_MISC_HARDWARE_SECURITY_SETTINGS
;
2335 EFI_MISC_HARDWARE_SECURITY_SETTINGS HardwareSecuritySettings
;
2336 } EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA
;
2339 // System Power Controls - SMBIOS Type 25
2341 #define EFI_MISC_SCHEDULED_POWER_ON_MONTH_RECORD_NUMBER 0x00000013
2344 UINT16 ScheduledPoweronMonth
;
2345 UINT16 ScheduledPoweronDayOfMonth
;
2346 UINT16 ScheduledPoweronHour
;
2347 UINT16 ScheduledPoweronMinute
;
2348 UINT16 ScheduledPoweronSecond
;
2349 } EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA
;
2352 // Voltage Probe - SMBIOS Type 26
2354 #define EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_RECORD_NUMBER 0x00000014
2357 UINT32 VoltageProbeSite
:5;
2358 UINT32 VoltageProbeStatus
:3;
2359 UINT32 Reserved
:24;
2360 } EFI_MISC_VOLTAGE_PROBE_LOCATION
;
2363 STRING_REF VoltageProbeDescription
;
2364 EFI_MISC_VOLTAGE_PROBE_LOCATION VoltageProbeLocation
;
2365 EFI_EXP_BASE10_DATA VoltageProbeMaximumValue
;
2366 EFI_EXP_BASE10_DATA VoltageProbeMinimumValue
;
2367 EFI_EXP_BASE10_DATA VoltageProbeResolution
;
2368 EFI_EXP_BASE10_DATA VoltageProbeTolerance
;
2369 EFI_EXP_BASE10_DATA VoltageProbeAccuracy
;
2370 EFI_EXP_BASE10_DATA VoltageProbeNominalValue
;
2371 EFI_EXP_BASE10_DATA MDLowerNoncriticalThreshold
;
2372 EFI_EXP_BASE10_DATA MDUpperNoncriticalThreshold
;
2373 EFI_EXP_BASE10_DATA MDLowerCriticalThreshold
;
2374 EFI_EXP_BASE10_DATA MDUpperCriticalThreshold
;
2375 EFI_EXP_BASE10_DATA MDLowerNonrecoverableThreshold
;
2376 EFI_EXP_BASE10_DATA MDUpperNonrecoverableThreshold
;
2377 UINT32 VoltageProbeOemDefined
;
2378 } EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_DATA
;
2381 // Cooling Device - SMBIOS Type 27
2383 #define EFI_MISC_COOLING_DEVICE_TEMP_LINK_RECORD_NUMBER 0x00000015
2386 UINT32 CoolingDevice
:5;
2387 UINT32 CoolingDeviceStatus
:3;
2388 UINT32 Reserved
:24;
2389 } EFI_MISC_COOLING_DEVICE_TYPE
;
2392 EFI_MISC_COOLING_DEVICE_TYPE CoolingDeviceType
;
2393 EFI_INTER_LINK_DATA CoolingDeviceTemperatureLink
;
2394 UINT16 CoolingDeviceUnitGroup
;
2395 EFI_EXP_BASE10_DATA CoolingDeviceNominalSpeed
;
2396 UINT32 CoolingDeviceOemDefined
;
2397 } EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA
;
2400 // Temperature Probe - SMBIOS Type 28
2402 #define EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_RECORD_NUMBER 0x00000016
2405 UINT32 TemperatureProbeSite
:5;
2406 UINT32 TemperatureProbeStatus
:3;
2407 UINT32 Reserved
:24;
2408 } EFI_MISC_TEMPERATURE_PROBE_LOCATION
;
2411 STRING_REF TemperatureProbeDescription
;
2412 EFI_MISC_TEMPERATURE_PROBE_LOCATION
2413 TemperatureProbeLocation
;
2414 EFI_EXP_BASE10_DATA TemperatureProbeMaximumValue
;
2415 EFI_EXP_BASE10_DATA TemperatureProbeMinimumValue
;
2416 EFI_EXP_BASE10_DATA TemperatureProbeResolution
;
2417 EFI_EXP_BASE10_DATA TemperatureProbeTolerance
;
2418 EFI_EXP_BASE10_DATA TemperatureProbeAccuracy
;
2419 EFI_EXP_BASE10_DATA TemperatureProbeNominalValue
;
2420 EFI_EXP_BASE10_DATA MDLowerNoncriticalThreshold
;
2421 EFI_EXP_BASE10_DATA MDUpperNoncriticalThreshold
;
2422 EFI_EXP_BASE10_DATA MDLowerCriticalThreshold
;
2423 EFI_EXP_BASE10_DATA MDUpperCriticalThreshold
;
2424 EFI_EXP_BASE10_DATA MDLowerNonrecoverableThreshold
;
2425 EFI_EXP_BASE10_DATA MDUpperNonrecoverableThreshold
;
2426 UINT32 TemperatureProbeOemDefined
;
2427 } EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA
;
2430 // Electrical Current Probe - SMBIOS Type 29
2433 #define EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_RECORD_NUMBER 0x00000017
2436 UINT32 ElectricalCurrentProbeSite
:5;
2437 UINT32 ElectricalCurrentProbeStatus
:3;
2438 UINT32 Reserved
:24;
2439 } EFI_MISC_ELECTRICAL_CURRENT_PROBE_LOCATION
;
2442 STRING_REF ElectricalCurrentProbeDescription
;
2443 EFI_MISC_ELECTRICAL_CURRENT_PROBE_LOCATION
2444 ElectricalCurrentProbeLocation
;
2445 EFI_EXP_BASE10_DATA ElectricalCurrentProbeMaximumValue
;
2446 EFI_EXP_BASE10_DATA ElectricalCurrentProbeMinimumValue
;
2447 EFI_EXP_BASE10_DATA ElectricalCurrentProbeResolution
;
2448 EFI_EXP_BASE10_DATA ElectricalCurrentProbeTolerance
;
2449 EFI_EXP_BASE10_DATA ElectricalCurrentProbeAccuracy
;
2450 EFI_EXP_BASE10_DATA ElectricalCurrentProbeNominalValue
;
2451 EFI_EXP_BASE10_DATA MDLowerNoncriticalThreshold
;
2452 EFI_EXP_BASE10_DATA MDUpperNoncriticalThreshold
;
2453 EFI_EXP_BASE10_DATA MDLowerCriticalThreshold
;
2454 EFI_EXP_BASE10_DATA MDUpperCriticalThreshold
;
2455 EFI_EXP_BASE10_DATA MDLowerNonrecoverableThreshold
;
2456 EFI_EXP_BASE10_DATA MDUpperNonrecoverableThreshold
;
2457 UINT32 ElectricalCurrentProbeOemDefined
;
2458 } EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA
;
2461 // Out-of-Band Remote Access - SMBIOS Type 30
2464 #define EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_RECORD_NUMBER 0x00000018
2467 UINT32 InboundConnectionEnabled
:1;
2468 UINT32 OutboundConnectionEnabled
:1;
2469 UINT32 Reserved
:30;
2470 } EFI_MISC_REMOTE_ACCESS_CONNECTIONS
;
2473 STRING_REF RemoteAccessManufacturerNameDescription
;
2474 EFI_MISC_REMOTE_ACCESS_CONNECTIONS RemoteAccessConnections
;
2475 } EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA
;
2478 // Misc. BIS Entry Point - SMBIOS Type 31
2480 #define EFI_MISC_BIS_ENTRY_POINT_RECORD_NUMBER 0x00000019
2483 EFI_PHYSICAL_ADDRESS BisEntryPoint
;
2484 } EFI_MISC_BIS_ENTRY_POINT_DATA
;
2487 // Misc. Boot Information - SMBIOS Type 32
2489 #define EFI_MISC_BOOT_INFORMATION_STATUS_RECORD_NUMBER 0x0000001A
2492 /// Inconsistent with specification here:
2493 /// In MiscSubclass spec 0.9, the structure name is EFI_MISC_BOOT_INFORMATION_STATUS_TYPE.
2494 /// Keep it unchanged for backward compatibilty.
2497 EfiBootInformationStatusNoError
= 0x00,
2498 EfiBootInformationStatusNoBootableMedia
= 0x01,
2499 EfiBootInformationStatusNormalOSFailedLoading
= 0x02,
2500 EfiBootInformationStatusFirmwareDetectedFailure
= 0x03,
2501 EfiBootInformationStatusOSDetectedFailure
= 0x04,
2502 EfiBootInformationStatusUserRequestedBoot
= 0x05,
2503 EfiBootInformationStatusSystemSecurityViolation
= 0x06,
2504 EfiBootInformationStatusPreviousRequestedImage
= 0x07,
2505 EfiBootInformationStatusWatchdogTimerExpired
= 0x08,
2506 EfiBootInformationStatusStartReserved
= 0x09,
2507 EfiBootInformationStatusStartOemSpecific
= 0x80,
2508 EfiBootInformationStatusStartProductSpecific
= 0xC0
2509 } EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE
;
2513 /// Inconsistent with specification here:
2514 /// In MiscSubclass spec 0.9, the field name is EFI_MISC_BOOT_INFORMATION_STATUS_TYPE.
2515 /// Keep it unchanged for backward compatibilty.
2517 EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE BootInformationStatus
;
2518 UINT8 BootInformationData
[9];
2519 } EFI_MISC_BOOT_INFORMATION_STATUS_DATA
;
2522 // Management Device - SMBIOS Type 34
2524 #define EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_RECORD_NUMBER 0x0000001B
2527 EfiManagementDeviceTypeOther
= 0x01,
2528 EfiManagementDeviceTypeUnknown
= 0x02,
2529 EfiManagementDeviceTypeLm75
= 0x03,
2530 EfiManagementDeviceTypeLm78
= 0x04,
2531 EfiManagementDeviceTypeLm79
= 0x05,
2532 EfiManagementDeviceTypeLm80
= 0x06,
2533 EfiManagementDeviceTypeLm81
= 0x07,
2534 EfiManagementDeviceTypeAdm9240
= 0x08,
2535 EfiManagementDeviceTypeDs1780
= 0x09,
2536 EfiManagementDeviceTypeMaxim1617
= 0x0A,
2537 EfiManagementDeviceTypeGl518Sm
= 0x0B,
2538 EfiManagementDeviceTypeW83781D
= 0x0C,
2539 EfiManagementDeviceTypeHt82H791
= 0x0D
2540 } EFI_MISC_MANAGEMENT_DEVICE_TYPE
;
2543 EfiManagementDeviceAddressTypeOther
= 1,
2544 EfiManagementDeviceAddressTypeUnknown
= 2,
2545 EfiManagementDeviceAddressTypeIOPort
= 3,
2546 EfiManagementDeviceAddressTypeMemory
= 4,
2547 EfiManagementDeviceAddressTypeSmbus
= 5
2548 } EFI_MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE
;
2551 STRING_REF ManagementDeviceDescription
;
2552 EFI_MISC_MANAGEMENT_DEVICE_TYPE ManagementDeviceType
;
2553 UINTN ManagementDeviceAddress
;
2554 EFI_MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE
2555 ManagementDeviceAddressType
;
2556 } EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA
;
2559 // Management Device Component - SMBIOS Type 35
2562 #define EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_RECORD_NUMBER 0x0000001C
2565 STRING_REF ManagementDeviceComponentDescription
;
2566 EFI_INTER_LINK_DATA ManagementDeviceLink
;
2567 EFI_INTER_LINK_DATA ManagementDeviceComponentLink
;
2569 /// Inconsistent with specification here:
2570 /// In MiscSubclass spec 0.9, this field is NOT defined.
2571 /// It's introduced for SmBios 2.6 spec type 35.
2573 EFI_INTER_LINK_DATA ManagementDeviceThresholdLink
;
2574 } EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA
;
2577 // IPMI Data Record - SMBIOS Type 38
2584 } EFI_MISC_IPMI_INTERFACE_TYPE
;
2587 UINT16 IpmiSpecLeastSignificantDigit
:4;
2588 UINT16 IpmiSpecMostSignificantDigit
: 4;
2590 } EFI_MISC_IPMI_SPECIFICATION_REVISION
;
2593 EFI_MISC_IPMI_INTERFACE_TYPE IpmiInterfaceType
;
2594 EFI_MISC_IPMI_SPECIFICATION_REVISION
2595 IpmiSpecificationRevision
;
2596 UINT16 IpmiI2CSlaveAddress
;
2597 UINT16 IpmiNvDeviceAddress
;
2598 UINT64 IpmiBaseAddress
;
2599 EFI_DEVICE_PATH_PROTOCOL IpmiDevicePath
;
2600 } EFI_MISC_IPMI_INTERFACE_TYPE_DATA
;
2602 #define EFI_MISC_IPMI_INTERFACE_TYPE_RECORD_NUMBER 0x0000001D
2605 /// System Power supply Record - SMBIOS Type 39
2607 /// Inconsistent with specification here:
2608 /// In MiscSubclass spec 0.9, the type of all fields are UINT32.
2609 /// Keep it unchanged for backward compatibilty.
2612 UINT16 PowerSupplyHotReplaceable
:1;
2613 UINT16 PowerSupplyPresent
:1;
2614 UINT16 PowerSupplyUnplugged
:1;
2615 UINT16 InputVoltageRangeSwitch
:4;
2616 UINT16 PowerSupplyStatus
:3;
2617 UINT16 PowerSupplyType
:4;
2619 } EFI_MISC_POWER_SUPPLY_CHARACTERISTICS
;
2622 /// Inconsistent with specification here:
2623 /// In MiscSubclass spec 0.9, the field name is EFI_MISC_POWER_SUPPLY_UNIT_GROUP_DATA.
2624 /// Keep it unchanged for backward compatibilty.
2627 UINT16 PowerUnitGroup
;
2628 STRING_REF PowerSupplyLocation
;
2629 STRING_REF PowerSupplyDeviceName
;
2630 STRING_REF PowerSupplyManufacturer
;
2631 STRING_REF PowerSupplySerialNumber
;
2632 STRING_REF PowerSupplyAssetTagNumber
;
2633 STRING_REF PowerSupplyModelPartNumber
;
2634 STRING_REF PowerSupplyRevisionLevel
;
2635 UINT16 PowerSupplyMaxPowerCapacity
;
2636 EFI_MISC_POWER_SUPPLY_CHARACTERISTICS PowerSupplyCharacteristics
;
2637 EFI_INTER_LINK_DATA PowerSupplyInputVoltageProbeLink
;
2638 EFI_INTER_LINK_DATA PowerSupplyCoolingDeviceLink
;
2639 EFI_INTER_LINK_DATA PowerSupplyInputCurrentProbeLink
;
2640 } EFI_MISC_SYSTEM_POWER_SUPPLY_DATA
;
2642 #define EFI_MISC_SYSTEM_POWER_SUPPLY_RECORD_NUMBER 0x0000001E
2645 /// OEM Data Record - SMBIOS Type 0x80-0xFF
2647 /// Inconsistent with specification here:
2648 /// In MiscSubclass spec 0.9, the structure name is EFI_SMBIOS_STRUCTURE_HDR.
2649 /// Due to this structure is commonly used by vendor to construct SmBios type 0x80~0xFF table,
2650 /// Keep it unchanged for backward compatibilty.
2656 } SMBIOS_STRUCTURE_HDR
;
2660 /// Inconsistent with specification here:
2661 /// In MiscSubclass spec 0.9, the field name is EFI_SMBIOS_STRUCTURE_HDR.
2662 /// Keep it unchanged for backward compatibilty.
2664 SMBIOS_STRUCTURE_HDR Header
;
2666 } EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA
;
2668 #define EFI_MISC_SMBIOS_STRUCT_ENCAP_RECORD_NUMBER 0x0000001F
2671 /// Misc. System Event Log - SMBIOS Type 15
2673 /// Inconsistent with specification here:
2674 /// In MiscSubclass spec 0.9, the following data structures are NOT defined.
2675 /// It's introduced for SmBios 2.6 spec type 15.
2677 #define EFI_MISC_SYSTEM_EVENT_LOG_RECORD_NUMBER 0x00000020
2680 /// Inconsistent with specification here:
2681 /// In MiscSubclass spec 0.9, the following data structures are NOT defined.
2682 /// It's introduced for SmBios 2.6 spec type 15.
2685 UINT16 LogAreaLength
;
2686 UINT16 LogHeaderStartOffset
;
2687 UINT16 LogDataStartOffset
;
2690 UINT32 LogChangeToken
;
2691 UINT32 AccessMethodAddress
;
2692 UINT8 LogHeaderFormat
;
2693 UINT8 NumberOfSupportedLogType
;
2694 UINT8 LengthOfLogDescriptor
;
2695 } EFI_MISC_SYSTEM_EVENT_LOG_DATA
;
2699 // 0x00~0x04: as following definition
2700 // 0x05~0x7f: Available for future assignment.
2701 // 0x80~0xff: BIOS Vendor/OEM-specific.
2703 #define ACCESS_INDEXIO_1INDEX8BIT_DATA8BIT 0x00
2704 #define ACCESS_INDEXIO_2INDEX8BIT_DATA8BIT 0X01
2705 #define ACCESS_INDEXIO_1INDEX16BIT_DATA8BIT 0X02
2706 #define ACCESS_MEMORY_MAPPED 0x03
2707 #define ACCESS_GPNV 0x04
2710 /// Management Device Threshold Data Record - SMBIOS Type 36
2712 /// Inconsistent with specification here:
2713 /// In MiscSubclass spec 0.9, the following data structures are NOT defined.
2714 /// It's introduced for SmBios 2.6 spec type 36.
2716 #define EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD_RECORD_NUMBER 0x00000021
2718 /// Inconsistent with specification here:
2719 /// In MiscSubclass spec 0.9, the following data structures are NOT defined.
2720 /// It's introduced for SmBios 2.6 spec type 36.
2723 UINT16 LowerThresNonCritical
;
2724 UINT16 UpperThresNonCritical
;
2725 UINT16 LowerThresCritical
;
2726 UINT16 UpperThresCritical
;
2727 UINT16 LowerThresNonRecover
;
2728 UINT16 UpperThresNonRecover
;
2729 } EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD
;
2732 // Declare the following strutures alias to use them more conviniently.
2734 typedef EFI_MISC_LAST_PCI_BUS_DATA EFI_MISC_LAST_PCI_BUS
;
2735 typedef EFI_MISC_BIOS_VENDOR_DATA EFI_MISC_BIOS_VENDOR
;
2736 typedef EFI_MISC_SYSTEM_MANUFACTURER_DATA EFI_MISC_SYSTEM_MANUFACTURER
;
2737 typedef EFI_MISC_BASE_BOARD_MANUFACTURER_DATA EFI_MISC_BASE_BOARD_MANUFACTURER
;
2738 typedef EFI_MISC_CHASSIS_MANUFACTURER_DATA EFI_MISC_CHASSIS_MANUFACTURER
;
2739 typedef EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR
;
2740 typedef EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA EFI_MISC_SYSTEM_SLOT_DESIGNATION
;
2741 typedef EFI_MISC_ONBOARD_DEVICE_DATA EFI_MISC_ONBOARD_DEVICE
;
2742 typedef EFI_MISC_POINTING_DEVICE_TYPE_DATA EFI_MISC_ONBOARD_DEVICE_TYPE_DATA
;
2743 typedef EFI_MISC_OEM_STRING_DATA EFI_MISC_OEM_STRING
;
2744 typedef EFI_MISC_SYSTEM_OPTION_STRING_DATA EFI_MISC_SYSTEM_OPTION_STRING
;
2745 typedef EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES
;
2746 typedef EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA EFI_MISC_SYSTEM_LANGUAGE_STRING
;
2747 typedef EFI_MISC_SYSTEM_EVENT_LOG_DATA EFI_MISC_SYSTEM_EVENT_LOG
;
2748 typedef EFI_MISC_BIS_ENTRY_POINT_DATA EFI_MISC_BIS_ENTRY_POINT
;
2749 typedef EFI_MISC_BOOT_INFORMATION_STATUS_DATA EFI_MISC_BOOT_INFORMATION_STATUS
;
2750 typedef EFI_MISC_SYSTEM_POWER_SUPPLY_DATA EFI_MISC_SYSTEM_POWER_SUPPLY
;
2751 typedef EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION
;
2752 typedef EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA EFI_MISC_SCHEDULED_POWER_ON_MONTH
;
2753 typedef EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_DATA EFI_MISC_VOLTAGE_PROBE_DESCRIPTION
;
2754 typedef EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA EFI_MISC_COOLING_DEVICE_TEMP_LINK
;
2755 typedef EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION
;
2756 typedef EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA
2757 EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION
;
2758 typedef EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION
;
2759 typedef EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION
;
2762 /// Inconsistent with specification here:
2763 /// In MemSubclass spec 0.9, the following data structures are NOT defined.
2764 /// It is implementation-specific to simplify the code logic.
2767 EFI_MISC_LAST_PCI_BUS_DATA LastPciBus
;
2768 EFI_MISC_BIOS_VENDOR_DATA MiscBiosVendor
;
2769 EFI_MISC_SYSTEM_MANUFACTURER_DATA MiscSystemManufacturer
;
2770 EFI_MISC_BASE_BOARD_MANUFACTURER_DATA MiscBaseBoardManufacturer
;
2771 EFI_MISC_CHASSIS_MANUFACTURER_DATA MiscChassisManufacturer
;
2772 EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA MiscPortInternalConnectorDesignator
;
2773 EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA MiscSystemSlotDesignation
;
2774 EFI_MISC_ONBOARD_DEVICE_DATA MiscOnboardDevice
;
2775 EFI_MISC_OEM_STRING_DATA MiscOemString
;
2776 EFI_MISC_SYSTEM_OPTION_STRING_DATA MiscOptionString
;
2777 EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA NumberOfInstallableLanguages
;
2778 EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA MiscSystemLanguageString
;
2779 EFI_MISC_SYSTEM_EVENT_LOG_DATA MiscSystemEventLog
;
2780 EFI_MISC_GROUP_NAME_DATA MiscGroupNameData
;
2781 EFI_MISC_GROUP_ITEM_SET_DATA MiscGroupItemSetData
;
2782 EFI_MISC_POINTING_DEVICE_TYPE_DATA MiscPointingDeviceTypeData
;
2783 EFI_MISC_RESET_CAPABILITIES_DATA MiscResetCapablilitiesData
;
2784 EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA MiscHardwareSecuritySettingsData
;
2785 EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA MiscScheduledPowerOnMonthData
;
2786 EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_DATA MiscVoltagePorbeDescriptionData
;
2787 EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA MiscCoolingDeviceTempLinkData
;
2788 EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA MiscTemperatureProbeDescriptionData
;
2789 EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA MiscElectricalCurrentProbeDescriptionData
;
2790 EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA
2791 MiscRemoteAccessManufacturerDescriptionData
;
2792 EFI_MISC_BIS_ENTRY_POINT_DATA MiscBisEntryPoint
;
2793 EFI_MISC_BOOT_INFORMATION_STATUS_DATA MiscBootInformationStatus
;
2794 EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA MiscMangementDeviceDescriptionData
;
2795 EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA
2796 MiscmangementDeviceComponentDescriptionData
;
2797 EFI_MISC_IPMI_INTERFACE_TYPE_DATA MiscIpmiInterfaceTypeData
;
2798 EFI_MISC_SYSTEM_POWER_SUPPLY_DATA MiscPowerSupplyInfo
;
2799 EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA MiscSmbiosStructEncapsulation
;
2800 EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD MiscManagementDeviceThreshold
;
2801 } EFI_MISC_SUBCLASS_RECORDS
;
2804 /// Inconsistent with specification here:
2805 /// In MemSubclass spec 0.9, the following data structures are NOT defined.
2806 /// It is implementation-specific to simplify the code logic.
2809 EFI_SUBCLASS_TYPE1_HEADER Header
;
2810 EFI_MISC_SUBCLASS_RECORDS Record
;
2811 } EFI_MISC_SUBCLASS_DRIVER_DATA
;
2815 /// Inconsistent with specification here:
2816 /// In DataHubSubclass spec 0.9 page 16, the following symbol is NOT defined.
2817 /// But value is meaningful, 0 means Reserved.
2819 #define EFI_SUBCLASS_INSTANCE_RESERVED 0
2821 /// Inconsistent with specification here:
2822 /// In DataHubSubclass spec 0.9 page 16, the following symbol is NOT defined.
2823 /// But value is meaningful, -1 means Not Applicable.
2825 #define EFI_SUBCLASS_INSTANCE_NON_APPLICABLE 0xFFFF