]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkPkg/Include/Guid/DataHubRecords.h
Remove IntelFrameworkPkg
[mirror_edk2.git] / IntelFrameworkPkg / Include / Guid / DataHubRecords.h
diff --git a/IntelFrameworkPkg/Include/Guid/DataHubRecords.h b/IntelFrameworkPkg/Include/Guid/DataHubRecords.h
deleted file mode 100644 (file)
index 5699113..0000000
+++ /dev/null
@@ -1,2929 +0,0 @@
-/** @file\r
-  DataHubRecord.h includes all data hub subclass GUID definitions.\r
-\r
-  This file includes all data hub sub class defitions from\r
-  Cache subclass specification 0.9, DataHub SubClass specification 0.9, Memory SubClass Spec 0.9,\r
-  Processor Subclass specification 0.9, and Misc SubClass specification 0.9.\r
-\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-**/\r
-#ifndef _DATAHUB_RECORDS_GUID_H_\r
-#define _DATAHUB_RECORDS_GUID_H_\r
-\r
-//\r
-// The include is required to retrieve type EFI_EXP_BASE10_DATA\r
-//\r
-#include <Guid/StatusCodeDataTypeId.h>\r
-\r
-#define EFI_PROCESSOR_SUBCLASS_GUID \\r
-  { 0x26fdeb7e, 0xb8af, 0x4ccf, {0xaa, 0x97, 0x02, 0x63, 0x3c, 0xe4, 0x8c, 0xa7 } }\r
-\r
-extern  EFI_GUID gEfiProcessorSubClassGuid;\r
-\r
-\r
-#define EFI_CACHE_SUBCLASS_GUID \\r
-  { 0x7f0013a7, 0xdc79, 0x4b22, {0x80, 0x99, 0x11, 0xf7, 0x5f, 0xdc, 0x82, 0x9d } }\r
-\r
-extern  EFI_GUID gEfiCacheSubClassGuid;\r
-\r
-///\r
-/// The memory subclass belongs to the data class and is identified as the memory\r
-/// subclass by the GUID.\r
-///\r
-#define EFI_MEMORY_SUBCLASS_GUID \\r
-  {0x4E8F4EBB, 0x64B9, 0x4e05, {0x9B, 0x18, 0x4C, 0xFE, 0x49, 0x23, 0x50, 0x97} }\r
-\r
-extern  EFI_GUID  gEfiMemorySubClassGuid;\r
-\r
-#define EFI_MISC_SUBCLASS_GUID \\r
-  { 0x772484B2, 0x7482, 0x4b91, {0x9F, 0x9A, 0xAD, 0x43, 0xF8, 0x1C, 0x58, 0x81 } }\r
-\r
-extern  EFI_GUID  gEfiMiscSubClassGuid;\r
-\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In ProcSubclass specification 0.9, the value is 0x0100.\r
-/// Keep it unchanged from the perspective of binary consistency.\r
-///\r
-#define EFI_PROCESSOR_SUBCLASS_VERSION    0x00010000\r
-\r
-#pragma pack(1)\r
-\r
-typedef struct _USB_PORT_DEVICE_PATH {\r
-  ACPI_HID_DEVICE_PATH              PciRootBridgeDevicePath;\r
-  PCI_DEVICE_PATH                   PciBusDevicePath;\r
-  EFI_DEVICE_PATH_PROTOCOL          EndDevicePath;\r
-} USB_PORT_DEVICE_PATH;\r
-\r
-//\r
-// IDE\r
-//\r
-typedef struct _IDE_DEVICE_PATH {\r
-  ACPI_HID_DEVICE_PATH              PciRootBridgeDevicePath;\r
-  PCI_DEVICE_PATH                   PciBusDevicePath;\r
-  EFI_DEVICE_PATH_PROTOCOL          EndDevicePath;\r
-} IDE_DEVICE_PATH;\r
-\r
-//\r
-// RMC Connector\r
-//\r
-typedef struct _RMC_CONN_DEVICE_PATH {\r
-  ACPI_HID_DEVICE_PATH              PciRootBridgeDevicePath;\r
-  PCI_DEVICE_PATH                   PciBridgeDevicePath;\r
-  PCI_DEVICE_PATH                   PciBusDevicePath;\r
-  EFI_DEVICE_PATH_PROTOCOL          EndDevicePath;\r
-} RMC_CONN_DEVICE_PATH;\r
-\r
-//\r
-// RIDE\r
-//\r
-typedef struct _RIDE_DEVICE_PATH {\r
-  ACPI_HID_DEVICE_PATH              PciRootBridgeDevicePath;\r
-  PCI_DEVICE_PATH                   PciBridgeDevicePath;\r
-  PCI_DEVICE_PATH                   PciBusDevicePath;\r
-  EFI_DEVICE_PATH_PROTOCOL          EndDevicePath;\r
-} RIDE_DEVICE_PATH;\r
-\r
-//\r
-// Gigabit NIC\r
-//\r
-typedef struct _GB_NIC_DEVICE_PATH {\r
-  ACPI_HID_DEVICE_PATH              PciRootBridgeDevicePath;\r
-  PCI_DEVICE_PATH                   PciBridgeDevicePath;\r
-  PCI_DEVICE_PATH                   PciXBridgeDevicePath;\r
-  PCI_DEVICE_PATH                   PciXBusDevicePath;\r
-  EFI_DEVICE_PATH_PROTOCOL          EndDevicePath;\r
-} GB_NIC_DEVICE_PATH;\r
-\r
-//\r
-// P/S2 Connector\r
-//\r
-typedef struct _PS2_CONN_DEVICE_PATH {\r
-  ACPI_HID_DEVICE_PATH              PciRootBridgeDevicePath;\r
-  PCI_DEVICE_PATH                   LpcBridgeDevicePath;\r
-  ACPI_HID_DEVICE_PATH              LpcBusDevicePath;\r
-  EFI_DEVICE_PATH_PROTOCOL          EndDevicePath;\r
-} PS2_CONN_DEVICE_PATH;\r
-\r
-//\r
-// Serial Port Connector\r
-//\r
-typedef struct _SERIAL_CONN_DEVICE_PATH {\r
-  ACPI_HID_DEVICE_PATH              PciRootBridgeDevicePath;\r
-  PCI_DEVICE_PATH                   LpcBridgeDevicePath;\r
-  ACPI_HID_DEVICE_PATH              LpcBusDevicePath;\r
-  EFI_DEVICE_PATH_PROTOCOL          EndDevicePath;\r
-} SERIAL_CONN_DEVICE_PATH;\r
-\r
-//\r
-// Parallel Port Connector\r
-//\r
-typedef struct _PARALLEL_CONN_DEVICE_PATH {\r
-  ACPI_HID_DEVICE_PATH              PciRootBridgeDevicePath;\r
-  PCI_DEVICE_PATH                   LpcBridgeDevicePath;\r
-  ACPI_HID_DEVICE_PATH              LpcBusDevicePath;\r
-  EFI_DEVICE_PATH_PROTOCOL          EndDevicePath;\r
-} PARALLEL_CONN_DEVICE_PATH;\r
-\r
-//\r
-// Floopy Connector\r
-//\r
-typedef struct _FLOOPY_CONN_DEVICE_PATH {\r
-  ACPI_HID_DEVICE_PATH              PciRootBridgeDevicePath;\r
-  PCI_DEVICE_PATH                   LpcBridgeDevicePath;\r
-  ACPI_HID_DEVICE_PATH              LpcBusDevicePath;\r
-  EFI_DEVICE_PATH_PROTOCOL          EndDevicePath;\r
-} FLOOPY_CONN_DEVICE_PATH;\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MiscSubclass specification 0.9, this data structure and corrsponding fields are NOT defined.\r
-/// It's implementation-specific to simplify the code logic.\r
-///\r
-typedef union _EFI_MISC_PORT_DEVICE_PATH {\r
-  USB_PORT_DEVICE_PATH              UsbDevicePath;\r
-  IDE_DEVICE_PATH                   IdeDevicePath;\r
-  RMC_CONN_DEVICE_PATH              RmcConnDevicePath;\r
-  RIDE_DEVICE_PATH                  RideDevicePath;\r
-  GB_NIC_DEVICE_PATH                GbNicDevicePath;\r
-  PS2_CONN_DEVICE_PATH              Ps2ConnDevicePath;\r
-  SERIAL_CONN_DEVICE_PATH           SerialConnDevicePath;\r
-  PARALLEL_CONN_DEVICE_PATH         ParallelConnDevicePath;\r
-  FLOOPY_CONN_DEVICE_PATH           FloppyConnDevicePath;\r
-} EFI_MISC_PORT_DEVICE_PATH;\r
-\r
-#pragma pack()\r
-\r
-///\r
-/// String Token Definition\r
-///\r
-/// Inconsistent with specification here:\r
-/// The macro isn't defined by any specification.\r
-/// Keep it unchanged for backward compatibility.\r
-///\r
-#define EFI_STRING_TOKEN          UINT16\r
-\r
-///\r
-/// Each data record that is a member of some subclass starts with a standard\r
-/// header of type EFI_SUBCLASS_TYPE1_HEADER.\r
-/// This header is only a guideline and applicable only to a data\r
-/// subclass that is producing SMBIOS data records. A subclass can start with a\r
-/// different header if needed.\r
-///\r
-typedef struct {\r
-  ///\r
-  /// The version of the specification to which a specific subclass data record adheres.\r
-  ///\r
-  UINT32                            Version;\r
-  ///\r
-  /// The size in bytes of this data class header.\r
-  ///\r
-  UINT32                            HeaderSize;\r
-  ///\r
-  /// The instance number of the subclass with the same ProducerName. This number is\r
-  /// applicable in cases where multiple subclass instances that were produced by the same\r
-  /// driver exist in the system. This entry is 1 based; 0 means Reserved and -1 means Not\r
-  /// Applicable. All data consumer drivers should be able to handle all the possible values\r
-  /// of Instance, including Not Applicable and Reserved.\r
-  ///\r
-  UINT16                            Instance;\r
-  ///\r
-  /// The instance number of the RecordType for the same Instance. This number is\r
-  /// applicable in cases where multiple instances of the RecordType exist for a specific\r
-  /// Instance. This entry is 1 based; 0 means Reserved and -1 means Not Applicable.\r
-  /// All data consumer drivers should be able to handle all the possible values of\r
-  /// SubInstance, including Not Applicable and Reserved.\r
-  ///\r
-  UINT16                            SubInstance;\r
-  ///\r
-  /// The record number for the data record being specified. The numbering scheme and\r
-  /// definition is defined in the specific subclass specification.\r
-  ///\r
-  UINT32                            RecordType;\r
-} EFI_SUBCLASS_TYPE1_HEADER;\r
-\r
-///\r
-/// This structure is used to link data records in the same subclasses. A data record is\r
-/// defined as a link to another data record in the same subclass using this structure.\r
-///\r
-typedef struct {\r
-  ///\r
-  /// An EFI_GUID that identifies the component that produced this data record. Type\r
-  /// EFI_GUID is defined in InstallProtocolInterface() in the EFI 1.10 Specification.\r
-  ///\r
-  EFI_GUID                          ProducerName;\r
-  ///\r
-  /// The instance number of the subclass with the same ProducerName. This number is\r
-  /// applicable in cases where multiple subclass instances that were produced by the same\r
-  /// driver exist in the system. This entry is 1 based; 0 means Reserved and -1 means Not\r
-  /// Applicable. All data consumer drivers should be able to handle all the possible values\r
-  /// of Instance, including Not Applicable and Reserved.\r
-  ///\r
-  UINT16                            Instance;\r
-  /// The instance number of the RecordType for the same Instance. This number is\r
-  /// applicable in cases where multiple instances of the RecordType exist for a specific\r
-  /// Instance. This entry is 1 based; 0 means Reserved and -1 means Not Applicable.\r
-  /// All data consumer drivers should be able to handle all the possible values of\r
-  /// SubInstance, including Not Applicable and Reserved.\r
-  UINT16                            SubInstance;\r
-} EFI_INTER_LINK_DATA;\r
-\r
-//\r
-// EXP data\r
-//\r
-///\r
-/// This macro provides a calculation for base-10 representations. Value and Exponent are each\r
-/// INT16. It is signed to cover negative values and is 16 bits wide (15 bits for data and 1 bit\r
-/// for the sign).\r
-///\r
-typedef struct {\r
-  ///\r
-  /// The INT16 number by which to multiply the base-10 representation.\r
-  ///\r
-  UINT16                            Value;\r
-  ///\r
-  /// The INT16 number by which to raise the base-10 calculation.\r
-  ///\r
-  UINT16                            Exponent;\r
-} EFI_EXP_BASE2_DATA;\r
-\r
-typedef EFI_EXP_BASE10_DATA        EFI_PROCESSOR_MAX_CORE_FREQUENCY_DATA;\r
-typedef EFI_EXP_BASE10_DATA        EFI_PROCESSOR_MAX_FSB_FREQUENCY_DATA;\r
-typedef EFI_EXP_BASE10_DATA        EFI_PROCESSOR_CORE_FREQUENCY_DATA;\r
-\r
-///\r
-/// This data record refers to the list of frequencies that the processor core supports. The list of\r
-/// supported frequencies is determined by the firmware based on hardware capabilities--for example,\r
-/// it could be a common subset of all processors and the chipset. The unit of measurement of this data\r
-/// record is in Hertz. For asynchronous processors, the content of this data record is zero.\r
-/// The list is terminated by -1 in the Value field of the last element. A Value field of zero means\r
-/// that the processor/driver supports automatic frequency selection.\r
-///\r
-/// Inconsistent with specification here:\r
-/// According to MiscSubclass 0.9 specification, it should be a pointer since it refers to a list of frequencies.\r
-///\r
-typedef EFI_EXP_BASE10_DATA        *EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA;\r
-\r
-///\r
-/// This data record refers to the list of supported frequencies of the processor external bus. The list of\r
-/// supported frequencies is determined by the firmware based on hardware capabilities--for example,\r
-/// it could be a common subset of all processors and the chipset. The unit of measurement of this data\r
-/// record is in Hertz. For asynchronous processors, the content of this data record is NULL.\r
-/// The list is terminated by -1 in the Value field of the last element. A Value field of zero means\r
-/// that the processor/driver supports automatic frequency selection.\r
-///\r
-typedef EFI_EXP_BASE10_DATA        *EFI_PROCESSOR_FSB_FREQUENCY_LIST_DATA;\r
-typedef EFI_EXP_BASE10_DATA        EFI_PROCESSOR_FSB_FREQUENCY_DATA;\r
-typedef STRING_REF                 EFI_PROCESSOR_VERSION_DATA;\r
-typedef STRING_REF                 EFI_PROCESSOR_MANUFACTURER_DATA;\r
-typedef STRING_REF                 EFI_PROCESSOR_SERIAL_NUMBER_DATA;\r
-typedef STRING_REF                 EFI_PROCESSOR_ASSET_TAG_DATA;\r
-typedef STRING_REF                 EFI_PROCESSOR_PART_NUMBER_DATA;\r
-\r
-typedef struct {\r
-  UINT32                            ProcessorSteppingId:4;\r
-  UINT32                            ProcessorModel:     4;\r
-  UINT32                            ProcessorFamily:    4;\r
-  UINT32                            ProcessorType:      2;\r
-  UINT32                            ProcessorReserved1: 2;\r
-  UINT32                            ProcessorXModel:    4;\r
-  UINT32                            ProcessorXFamily:   8;\r
-  UINT32                            ProcessorReserved2: 4;\r
-} EFI_PROCESSOR_SIGNATURE;\r
-\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// The name of third field in ProcSubClass specification 0.9 is LogicalProcessorCount.\r
-/// Keep it unchanged for backward compatibility.\r
-///\r
-typedef struct {\r
-  UINT32                            ProcessorBrandIndex    :8;\r
-  UINT32                            ProcessorClflush       :8;\r
-  UINT32                            ProcessorReserved      :8;\r
-  UINT32                            ProcessorDfltApicId    :8;\r
-} EFI_PROCESSOR_MISC_INFO;\r
-\r
-typedef struct {\r
-  UINT32                            ProcessorFpu:       1;\r
-  UINT32                            ProcessorVme:       1;\r
-  UINT32                            ProcessorDe:        1;\r
-  UINT32                            ProcessorPse:       1;\r
-  UINT32                            ProcessorTsc:       1;\r
-  UINT32                            ProcessorMsr:       1;\r
-  UINT32                            ProcessorPae:       1;\r
-  UINT32                            ProcessorMce:       1;\r
-  UINT32                            ProcessorCx8:       1;\r
-  UINT32                            ProcessorApic:      1;\r
-  UINT32                            ProcessorReserved1: 1;\r
-  UINT32                            ProcessorSep:       1;\r
-  UINT32                            ProcessorMtrr:      1;\r
-  UINT32                            ProcessorPge:       1;\r
-  UINT32                            ProcessorMca:       1;\r
-  UINT32                            ProcessorCmov:      1;\r
-  UINT32                            ProcessorPat:       1;\r
-  UINT32                            ProcessorPse36:     1;\r
-  UINT32                            ProcessorPsn:       1;\r
-  UINT32                            ProcessorClfsh:     1;\r
-  UINT32                            ProcessorReserved2: 1;\r
-  UINT32                            ProcessorDs:        1;\r
-  UINT32                            ProcessorAcpi:      1;\r
-  UINT32                            ProcessorMmx:       1;\r
-  UINT32                            ProcessorFxsr:      1;\r
-  UINT32                            ProcessorSse:       1;\r
-  UINT32                            ProcessorSse2:      1;\r
-  UINT32                            ProcessorSs:        1;\r
-  UINT32                            ProcessorReserved3: 1;\r
-  UINT32                            ProcessorTm:        1;\r
-  UINT32                            ProcessorReserved4: 2;\r
-} EFI_PROCESSOR_FEATURE_FLAGS;\r
-\r
-///\r
-/// This data record refers to the unique ID that identifies a set of processors. This data record is 16\r
-/// bytes in length. The data in this structure is processor specific and reserved values can be defined\r
-/// for future use. The consumer of this data should not make any assumption and should use this data\r
-/// with respect to the processor family defined in the Family record number.\r
-///\r
-typedef struct {\r
-  ///\r
-  /// Identifies the processor.\r
-  ///\r
-  EFI_PROCESSOR_SIGNATURE           Signature;\r
-  ///\r
-  /// Provides additional processor information.\r
-  ///\r
-  EFI_PROCESSOR_MISC_INFO           MiscInfo;\r
-  ///\r
-  /// Reserved for future use.\r
-  ///\r
-  UINT32                            Reserved;\r
-  ///\r
-  /// Provides additional processor information.\r
-  ///\r
-  EFI_PROCESSOR_FEATURE_FLAGS       FeatureFlags;\r
-} EFI_PROCESSOR_ID_DATA;\r
-\r
-///\r
-/// This data record refers to the general classification of the processor. This data record is 4 bytes in\r
-/// length.\r
-///\r
-typedef enum {\r
-  EfiProcessorOther    = 1,\r
-  EfiProcessorUnknown  = 2,\r
-  EfiCentralProcessor  = 3,\r
-  EfiMathProcessor     = 4,\r
-  EfiDspProcessor      = 5,\r
-  EfiVideoProcessor    = 6\r
-} EFI_PROCESSOR_TYPE_DATA;\r
-\r
-///\r
-/// This data record refers to the family of the processor as defined by the DMTF.\r
-/// This data record is 4 bytes in length.\r
-///\r
-typedef enum {\r
-  EfiProcessorFamilyOther                  = 0x01,\r
-  EfiProcessorFamilyUnknown                = 0x02,\r
-  EfiProcessorFamily8086                   = 0x03,\r
-  EfiProcessorFamily80286                  = 0x04,\r
-  EfiProcessorFamilyIntel386               = 0x05,\r
-  EfiProcessorFamilyIntel486               = 0x06,\r
-  EfiProcessorFamily8087                   = 0x07,\r
-  EfiProcessorFamily80287                  = 0x08,\r
-  EfiProcessorFamily80387                  = 0x09,\r
-  EfiProcessorFamily80487                  = 0x0A,\r
-  EfiProcessorFamilyPentium                = 0x0B,\r
-  EfiProcessorFamilyPentiumPro             = 0x0C,\r
-  EfiProcessorFamilyPentiumII              = 0x0D,\r
-  EfiProcessorFamilyPentiumMMX             = 0x0E,\r
-  EfiProcessorFamilyCeleron                = 0x0F,\r
-  EfiProcessorFamilyPentiumIIXeon          = 0x10,\r
-  EfiProcessorFamilyPentiumIII             = 0x11,\r
-  EfiProcessorFamilyM1                     = 0x12,\r
-  EfiProcessorFamilyM2                     = 0x13,\r
-  EfiProcessorFamilyM1Reserved2            = 0x14,\r
-  EfiProcessorFamilyM1Reserved3            = 0x15,\r
-  EfiProcessorFamilyM1Reserved4            = 0x16,\r
-  EfiProcessorFamilyM1Reserved5            = 0x17,\r
-  EfiProcessorFamilyAmdDuron               = 0x18,\r
-  EfiProcessorFamilyK5                     = 0x19,\r
-  EfiProcessorFamilyK6                     = 0x1A,\r
-  EfiProcessorFamilyK6_2                   = 0x1B,\r
-  EfiProcessorFamilyK6_3                   = 0x1C,\r
-  EfiProcessorFamilyAmdAthlon              = 0x1D,\r
-  EfiProcessorFamilyAmd29000               = 0x1E,\r
-  EfiProcessorFamilyK6_2Plus               = 0x1F,\r
-  EfiProcessorFamilyPowerPC                = 0x20,\r
-  EfiProcessorFamilyPowerPC601             = 0x21,\r
-  EfiProcessorFamilyPowerPC603             = 0x22,\r
-  EfiProcessorFamilyPowerPC603Plus         = 0x23,\r
-  EfiProcessorFamilyPowerPC604             = 0x24,\r
-  EfiProcessorFamilyPowerPC620             = 0x25,\r
-  EfiProcessorFamilyPowerPCx704            = 0x26,\r
-  EfiProcessorFamilyPowerPC750             = 0x27,\r
-  EfiProcessorFamilyAlpha3                 = 0x30,\r
-  EfiProcessorFamilyAlpha21064             = 0x31,\r
-  EfiProcessorFamilyAlpha21066             = 0x32,\r
-  EfiProcessorFamilyAlpha21164             = 0x33,\r
-  EfiProcessorFamilyAlpha21164PC           = 0x34,\r
-  EfiProcessorFamilyAlpha21164a            = 0x35,\r
-  EfiProcessorFamilyAlpha21264             = 0x36,\r
-  EfiProcessorFamilyAlpha21364             = 0x37,\r
-  EfiProcessorFamilyMips                   = 0x40,\r
-  EfiProcessorFamilyMIPSR4000              = 0x41,\r
-  EfiProcessorFamilyMIPSR4200              = 0x42,\r
-  EfiProcessorFamilyMIPSR4400              = 0x43,\r
-  EfiProcessorFamilyMIPSR4600              = 0x44,\r
-  EfiProcessorFamilyMIPSR10000             = 0x45,\r
-  EfiProcessorFamilySparc                  = 0x50,\r
-  EfiProcessorFamilySuperSparc             = 0x51,\r
-  EfiProcessorFamilymicroSparcII           = 0x52,\r
-  EfiProcessorFamilymicroSparcIIep         = 0x53,\r
-  EfiProcessorFamilyUltraSparc             = 0x54,\r
-  EfiProcessorFamilyUltraSparcII           = 0x55,\r
-  EfiProcessorFamilyUltraSparcIIi          = 0x56,\r
-  EfiProcessorFamilyUltraSparcIII          = 0x57,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field in ProcSubClass specification 0.9 is defined as EfiProcessorFamilyUltraSparcIIi.\r
-  /// Change it to EfiProcessorFamilyUltraSparcIIIi to avoid build break.\r
-  ///\r
-  EfiProcessorFamilyUltraSparcIIIi         = 0x58,\r
-  EfiProcessorFamily68040                  = 0x60,\r
-  EfiProcessorFamily68xxx                  = 0x61,\r
-  EfiProcessorFamily68000                  = 0x62,\r
-  EfiProcessorFamily68010                  = 0x63,\r
-  EfiProcessorFamily68020                  = 0x64,\r
-  EfiProcessorFamily68030                  = 0x65,\r
-  EfiProcessorFamilyHobbit                 = 0x70,\r
-  EfiProcessorFamilyCrusoeTM5000           = 0x78,\r
-  EfiProcessorFamilyCrusoeTM3000           = 0x79,\r
-  EfiProcessorFamilyEfficeonTM8000         = 0x7A,\r
-  EfiProcessorFamilyWeitek                 = 0x80,\r
-  EfiProcessorFamilyItanium                = 0x82,\r
-  EfiProcessorFamilyAmdAthlon64            = 0x83,\r
-  EfiProcessorFamilyAmdOpteron             = 0x84,\r
-  EfiProcessorFamilyAmdSempron             = 0x85,\r
-  EfiProcessorFamilyAmdTurion64Mobile      = 0x86,\r
-  EfiProcessorFamilyDualCoreAmdOpteron     = 0x87,\r
-  EfiProcessorFamilyAmdAthlon64X2DualCore  = 0x88,\r
-  EfiProcessorFamilyAmdTurion64X2Mobile    = 0x89,\r
-  EfiProcessorFamilyPARISC                 = 0x90,\r
-  EfiProcessorFamilyPaRisc8500             = 0x91,\r
-  EfiProcessorFamilyPaRisc8000             = 0x92,\r
-  EfiProcessorFamilyPaRisc7300LC           = 0x93,\r
-  EfiProcessorFamilyPaRisc7200             = 0x94,\r
-  EfiProcessorFamilyPaRisc7100LC           = 0x95,\r
-  EfiProcessorFamilyPaRisc7100             = 0x96,\r
-  EfiProcessorFamilyV30                    = 0xA0,\r
-  EfiProcessorFamilyPentiumIIIXeon         = 0xB0,\r
-  EfiProcessorFamilyPentiumIIISpeedStep    = 0xB1,\r
-  EfiProcessorFamilyPentium4               = 0xB2,\r
-  EfiProcessorFamilyIntelXeon              = 0xB3,\r
-  EfiProcessorFamilyAS400                  = 0xB4,\r
-  EfiProcessorFamilyIntelXeonMP            = 0xB5,\r
-  EfiProcessorFamilyAMDAthlonXP            = 0xB6,\r
-  EfiProcessorFamilyAMDAthlonMP            = 0xB7,\r
-  EfiProcessorFamilyIntelItanium2          = 0xB8,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiProcessorFamilyIntelPentiumM          = 0xB9,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiProcessorFamilyIntelCeleronD          = 0xBA,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiProcessorFamilyIntelPentiumD          = 0xBB,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiProcessorFamilyIntelPentiumEx         = 0xBC,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiProcessorFamilyIntelCoreSolo          = 0xBD,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiProcessorFamilyReserved               = 0xBE,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiProcessorFamilyIntelCore2             = 0xBF,\r
-  EfiProcessorFamilyIBM390                 = 0xC8,\r
-  EfiProcessorFamilyG4                     = 0xC9,\r
-  EfiProcessorFamilyG5                     = 0xCA,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in ProcSubClass specification  0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiProcessorFamilyG6                     = 0xCB,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiProcessorFamilyzArchitectur           = 0xCC,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiProcessorFamilyViaC7M                 = 0xD2,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiProcessorFamilyViaC7D                 = 0xD3,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiProcessorFamilyViaC7                  = 0xD4,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiProcessorFamilyViaEden                = 0xD5,\r
-  EfiProcessorFamilyi860                   = 0xFA,\r
-  EfiProcessorFamilyi960                   = 0xFB,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiProcessorFamilyIndicatorFamily2       = 0xFE,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiProcessorFamilyReserved1              = 0xFF\r
-} EFI_PROCESSOR_FAMILY_DATA;\r
-\r
-typedef enum {\r
-  EfiProcessorFamilySh3           = 0x104,\r
-  EfiProcessorFamilySh4           = 0x105,\r
-  EfiProcessorFamilyArm           = 0x118,\r
-  EfiProcessorFamilyStrongArm     = 0x119,\r
-  EfiProcessorFamily6x86          = 0x12C,\r
-  EfiProcessorFamilyMediaGx       = 0x12D,\r
-  EfiProcessorFamilyMii           = 0x12E,\r
-  EfiProcessorFamilyWinChip       = 0x140,\r
-  EfiProcessorFamilyDsp           = 0x15E,\r
-  EfiProcessorFamilyVideo         = 0x1F4\r
-} EFI_PROCESSOR_FAMILY2_DATA;\r
-\r
-///\r
-/// This data record refers to the core voltage of the processor being defined. The unit of measurement\r
-/// of this data record is in volts.\r
-///\r
-typedef EFI_EXP_BASE10_DATA         EFI_PROCESSOR_VOLTAGE_DATA;\r
-\r
-///\r
-/// This data record refers to the base address of the APIC of the processor being defined. This data\r
-/// record is a physical address location.\r
-///\r
-typedef EFI_PHYSICAL_ADDRESS        EFI_PROCESSOR_APIC_BASE_ADDRESS_DATA;\r
-\r
-///\r
-/// This data record refers to the ID of the APIC of the processor being defined. This data record is a\r
-/// 4-byte entry.\r
-///\r
-typedef UINT32                      EFI_PROCESSOR_APIC_ID_DATA;\r
-\r
-///\r
-/// This data record refers to the version number of the APIC of the processor being defined. This data\r
-/// record is a 4-byte entry.\r
-///\r
-typedef UINT32                      EFI_PROCESSOR_APIC_VERSION_NUMBER_DATA;\r
-\r
-typedef enum {\r
-  EfiProcessorIa32Microcode    = 1,\r
-  EfiProcessorIpfPalAMicrocode = 2,\r
-  EfiProcessorIpfPalBMicrocode = 3\r
-} EFI_PROCESSOR_MICROCODE_TYPE;\r
-\r
-///\r
-/// This data record refers to the revision of the processor microcode that is loaded in the processor.\r
-/// This data record is a 4-byte entry.\r
-///\r
-typedef struct {\r
-  ///\r
-  /// Identifies what type of microcode the data is.\r
-  ///\r
-  EFI_PROCESSOR_MICROCODE_TYPE      ProcessorMicrocodeType;\r
-  ///\r
-  /// Indicates the revision number of this microcode.\r
-  ///\r
-  UINT32                            ProcessorMicrocodeRevisionNumber;\r
-} EFI_PROCESSOR_MICROCODE_REVISION_DATA;\r
-\r
-///\r
-/// This data record refers to the status of the processor.\r
-///\r
-typedef struct {\r
-  UINT32       CpuStatus                 :3; ///< Indicates the status of the processor.\r
-  UINT32       Reserved1                 :3; ///< Reserved for future use. Should be set to zero.\r
-  UINT32       SocketPopulated           :1; ///< Indicates if the processor is socketed or not.\r
-  UINT32       Reserved2                 :1; ///< Reserved for future use. Should be set to zero.\r
-  UINT32       ApicEnable                :1; ///< Indicates if the APIC is enabled or not.\r
-  UINT32       BootApplicationProcessor  :1; ///< Indicates if this processor is the boot processor.\r
-  UINT32       Reserved3                 :22;///< Reserved for future use. Should be set to zero.\r
-} EFI_PROCESSOR_STATUS_DATA;\r
-\r
-typedef enum {\r
-  EfiCpuStatusUnknown        = 0,\r
-  EfiCpuStatusEnabled        = 1,\r
-  EfiCpuStatusDisabledByUser = 2,\r
-  EfiCpuStatusDisabledbyBios = 3,\r
-  EfiCpuStatusIdle           = 4,\r
-  EfiCpuStatusOther          = 7\r
-} EFI_CPU_STATUS;\r
-\r
-typedef enum {\r
-  EfiProcessorSocketOther            = 1,\r
-  EfiProcessorSocketUnknown          = 2,\r
-  EfiProcessorSocketDaughterBoard    = 3,\r
-  EfiProcessorSocketZIF              = 4,\r
-  EfiProcessorSocketReplacePiggyBack = 5,\r
-  EfiProcessorSocketNone             = 6,\r
-  EfiProcessorSocketLIF              = 7,\r
-  EfiProcessorSocketSlot1            = 8,\r
-  EfiProcessorSocketSlot2            = 9,\r
-  EfiProcessorSocket370Pin           = 0xA,\r
-  EfiProcessorSocketSlotA            = 0xB,\r
-  EfiProcessorSocketSlotM            = 0xC,\r
-  EfiProcessorSocket423              = 0xD,\r
-  EfiProcessorSocketA462             = 0xE,\r
-  EfiProcessorSocket478              = 0xF,\r
-  EfiProcessorSocket754              = 0x10,\r
-  EfiProcessorSocket940              = 0x11,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiProcessorSocket939              = 0x12,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiProcessorSocketmPGA604          = 0x13,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiProcessorSocketLGA771           = 0x14,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiProcessorSocketLGA775           = 0x15\r
-\r
-} EFI_PROCESSOR_SOCKET_TYPE_DATA;\r
-\r
-typedef STRING_REF                  EFI_PROCESSOR_SOCKET_NAME_DATA;\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In ProcSubclass specification 0.9, the naming is EFI_PROCESSOR_CACHE_ASSOCIATION_DATA.\r
-/// Keep it unchanged for backward compatibilty.\r
-///\r
-typedef EFI_INTER_LINK_DATA         EFI_CACHE_ASSOCIATION_DATA;\r
-\r
-///\r
-/// This data record refers to the health status of the processor.\r
-///\r
-/// Inconsistent with specification here:\r
-/// In ProcSubclass specification 0.9, the naming is EFI_PROCESSOR_HEALTH_STATUS_DATA.\r
-/// Keep it unchanged for backward compatibilty.\r
-///\r
-typedef enum {\r
-  EfiProcessorHealthy        = 1,\r
-  EfiProcessorPerfRestricted = 2,\r
-  EfiProcessorFuncRestricted = 3\r
-} EFI_PROCESSOR_HEALTH_STATUS;\r
-\r
-///\r
-/// This data record refers to the package number of this processor. Multiple logical processors can\r
-/// exist in a system and each logical processor can be correlated to the physical processor using this\r
-/// record type.\r
-///\r
-typedef UINTN                       EFI_PROCESSOR_PACKAGE_NUMBER_DATA;\r
-\r
-typedef UINT8                       EFI_PROCESSOR_CORE_COUNT_DATA;\r
-typedef UINT8                       EFI_PROCESSOR_ENABLED_CORE_COUNT_DATA;\r
-typedef UINT8                       EFI_PROCESSOR_THREAD_COUNT_DATA;\r
-\r
-typedef struct {\r
-  UINT16  Reserved              :1;\r
-  UINT16  Unknown               :1;\r
-  UINT16  Capable64Bit          :1;\r
-  UINT16  Reserved2             :13;\r
-} EFI_PROCESSOR_CHARACTERISTICS_DATA;\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In ProcSubclass specification 0.9, the enumeration type data structure is NOT defined.\r
-/// The equivalent in specification is\r
-///      #define EFI_PROCESSOR_FREQUENCY_RECORD_NUMBER           0x00000001\r
-///      #define EFI_PROCESSOR_BUS_FREQUENCY_RECORD_NUMBER       0x00000002\r
-///      #define EFI_PROCESSOR_VERSION_RECORD_NUMBER             0x00000003\r
-///      #define EFI_PROCESSOR_MANUFACTURER_RECORD_NUMBER        0x00000004\r
-///      #define EFI_PROCESSOR_SERIAL_NUMBER_RECORD_NUMBER       0x00000005\r
-///      #define EFI_PROCESSOR_ID_RECORD_NUMBER                  0x00000006\r
-///      #define EFI_PROCESSOR_TYPE_RECORD_NUMBER                0x00000007\r
-///      #define EFI_PROCESSOR_FAMILY_RECORD_NUMBER              0x00000008\r
-///      #define EFI_PROCESSOR_VOLTAGE_RECORD_NUMBER             0x00000009\r
-///      #define EFI_PROCESSOR_APIC_BASE_ADDRESS_RECORD_NUMBER   0x0000000A\r
-///      #define EFI_PROCESSOR_APIC_ID_RECORD_NUMBER             0x0000000B\r
-///      #define EFI_PROCESSOR_APIC_VER_NUMBER_RECORD_NUMBER     0x0000000C\r
-///      #define EFI_PROCESSOR_MICROCODE_REVISION_RECORD_NUMBER  0x0000000D\r
-///      #define EFI_PROCESSOR_STATUS_RECORD_NUMBER              0x0000000E\r
-///      #define EFI_PROCESSOR_SOCKET_TYPE_RECORD_NUMBER         0x0000000F\r
-///      #define EFI_PROCESSOR_SOCKET_NAME_RECORD_NUMBER         0x00000010\r
-///      #define EFI_PROCESSOR_CACHE_ASSOCIATION_RECORD_NUMBER   0x00000011\r
-///      #define EFI_PROCESSOR_MAX_FREQUENCY_RECORD_NUMBER       0x00000012\r
-///      #define EFI_PROCESSOR_ASSET_TAG_RECORD_NUMBER           0x00000013\r
-///      #define EFI_PROCESSOR_MAX_FSB_FREQUENCY_RECORD_NUMBER   0x00000014\r
-///      #define EFI_PROCESSOR_PACKAGE_NUMBER_RECORD_NUMBER      0x00000015\r
-///      #define EFI_PROCESSOR_FREQUENCY_LIST_RECORD_NUMBER      0x00000016\r
-///      #define EFI_PROCESSOR_FSB_FREQUENCY_LIST_RECORD_NUMBER  0x00000017\r
-///      #define EFI_PROCESSOR_HEALTH_STATUS_RECORD_NUMBER       0x00000018\r
-///\r
-/// Keep the definition unchanged for backward compatibility.\r
-typedef enum {\r
-  ProcessorCoreFrequencyRecordType     = 1,\r
-  ProcessorFsbFrequencyRecordType      = 2,\r
-  ProcessorVersionRecordType           = 3,\r
-  ProcessorManufacturerRecordType      = 4,\r
-  ProcessorSerialNumberRecordType      = 5,\r
-  ProcessorIdRecordType                = 6,\r
-  ProcessorTypeRecordType              = 7,\r
-  ProcessorFamilyRecordType            = 8,\r
-  ProcessorVoltageRecordType           = 9,\r
-  ProcessorApicBaseAddressRecordType   = 10,\r
-  ProcessorApicIdRecordType            = 11,\r
-  ProcessorApicVersionNumberRecordType = 12,\r
-  CpuUcodeRevisionDataRecordType       = 13,\r
-  ProcessorStatusRecordType            = 14,\r
-  ProcessorSocketTypeRecordType        = 15,\r
-  ProcessorSocketNameRecordType        = 16,\r
-  CacheAssociationRecordType           = 17,\r
-  ProcessorMaxCoreFrequencyRecordType  = 18,\r
-  ProcessorAssetTagRecordType          = 19,\r
-  ProcessorMaxFsbFrequencyRecordType   = 20,\r
-  ProcessorPackageNumberRecordType     = 21,\r
-  ProcessorCoreFrequencyListRecordType = 22,\r
-  ProcessorFsbFrequencyListRecordType  = 23,\r
-  ProcessorHealthStatusRecordType      = 24,\r
-  ProcessorCoreCountRecordType         = 25,\r
-  ProcessorEnabledCoreCountRecordType  = 26,\r
-  ProcessorThreadCountRecordType       = 27,\r
-  ProcessorCharacteristicsRecordType   = 28,\r
-  ProcessorFamily2RecordType           = 29,\r
-  ProcessorPartNumberRecordType        = 30,\r
-} EFI_CPU_VARIABLE_RECORD_TYPE;\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In ProcSubclass specification 0.9, the union type data structure is NOT defined.\r
-/// It's implementation-specific to simplify the code logic.\r
-///\r
-typedef union {\r
-  EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA  ProcessorCoreFrequencyList;\r
-  EFI_PROCESSOR_FSB_FREQUENCY_LIST_DATA   ProcessorFsbFrequencyList;\r
-  EFI_PROCESSOR_SERIAL_NUMBER_DATA        ProcessorSerialNumber;\r
-  EFI_PROCESSOR_CORE_FREQUENCY_DATA       ProcessorCoreFrequency;\r
-  EFI_PROCESSOR_FSB_FREQUENCY_DATA        ProcessorFsbFrequency;\r
-  EFI_PROCESSOR_MAX_CORE_FREQUENCY_DATA   ProcessorMaxCoreFrequency;\r
-  EFI_PROCESSOR_MAX_FSB_FREQUENCY_DATA    ProcessorMaxFsbFrequency;\r
-  EFI_PROCESSOR_VERSION_DATA              ProcessorVersion;\r
-  EFI_PROCESSOR_MANUFACTURER_DATA         ProcessorManufacturer;\r
-  EFI_PROCESSOR_ID_DATA                   ProcessorId;\r
-  EFI_PROCESSOR_TYPE_DATA                 ProcessorType;\r
-  EFI_PROCESSOR_FAMILY_DATA               ProcessorFamily;\r
-  EFI_PROCESSOR_VOLTAGE_DATA              ProcessorVoltage;\r
-  EFI_PROCESSOR_APIC_BASE_ADDRESS_DATA    ProcessorApicBase;\r
-  EFI_PROCESSOR_APIC_ID_DATA              ProcessorApicId;\r
-  EFI_PROCESSOR_APIC_VERSION_NUMBER_DATA  ProcessorApicVersionNumber;\r
-  EFI_PROCESSOR_MICROCODE_REVISION_DATA   CpuUcodeRevisionData;\r
-  EFI_PROCESSOR_STATUS_DATA               ProcessorStatus;\r
-  EFI_PROCESSOR_SOCKET_TYPE_DATA          ProcessorSocketType;\r
-  EFI_PROCESSOR_SOCKET_NAME_DATA          ProcessorSocketName;\r
-  EFI_PROCESSOR_ASSET_TAG_DATA            ProcessorAssetTag;\r
-  EFI_PROCESSOR_PART_NUMBER_DATA          ProcessorPartNumber;\r
-  EFI_PROCESSOR_HEALTH_STATUS             ProcessorHealthStatus;\r
-  EFI_PROCESSOR_PACKAGE_NUMBER_DATA       ProcessorPackageNumber;\r
-  EFI_PROCESSOR_CORE_COUNT_DATA           ProcessorCoreCount;\r
-  EFI_PROCESSOR_ENABLED_CORE_COUNT_DATA   ProcessorEnabledCoreCount;\r
-  EFI_PROCESSOR_THREAD_COUNT_DATA         ProcessorThreadCount;\r
-  EFI_PROCESSOR_CHARACTERISTICS_DATA      ProcessorCharacteristics;\r
-  EFI_PROCESSOR_FAMILY2_DATA              ProcessorFamily2;\r
-} EFI_CPU_VARIABLE_RECORD;\r
-\r
-typedef struct {\r
-  EFI_SUBCLASS_TYPE1_HEADER         DataRecordHeader;\r
-  EFI_CPU_VARIABLE_RECORD           VariableRecord;\r
-} EFI_CPU_DATA_RECORD;\r
-\r
-#define EFI_CACHE_SUBCLASS_VERSION    0x00010000\r
-\r
-typedef EFI_EXP_BASE2_DATA          EFI_CACHE_SIZE_DATA;\r
-///\r
-/// Inconsistent with specification here:\r
-/// In CacheSubclass specification 0.9, the naming is EFI_CACHE_MAXIMUM_SIZE_DATA.\r
-/// Keep it unchanged for backward compatibilty.\r
-///\r
-typedef EFI_EXP_BASE2_DATA          EFI_MAXIMUM_CACHE_SIZE_DATA;\r
-typedef EFI_EXP_BASE10_DATA         EFI_CACHE_SPEED_DATA;\r
-typedef STRING_REF                  EFI_CACHE_SOCKET_DATA;\r
-\r
-typedef struct {\r
-  UINT32                            Other         :1;\r
-  UINT32                            Unknown       :1;\r
-  UINT32                            NonBurst      :1;\r
-  UINT32                            Burst         :1;\r
-  UINT32                            PipelineBurst :1;\r
-  ///\r
-  /// Inconsistent between CacheSubclass 0.9 and SMBIOS specifications here:\r
-  /// In CacheSubclass specification 0.9, the sequence of Asynchronous and Synchronous fileds\r
-  /// are opposite to SMBIOS specification.\r
-  ///\r
-  UINT32                            Asynchronous  :1;\r
-  UINT32                            Synchronous   :1;\r
-  UINT32                            Reserved      :25;\r
-} EFI_CACHE_SRAM_TYPE_DATA;\r
-\r
-typedef EFI_CACHE_SRAM_TYPE_DATA    EFI_CACHE_SRAM_INSTALL_DATA;\r
-\r
-typedef enum {\r
-  EfiCacheErrorOther     = 1,\r
-  EfiCacheErrorUnknown   = 2,\r
-  EfiCacheErrorNone      = 3,\r
-  EfiCacheErrorParity    = 4,\r
-  EfiCacheErrorSingleBit = 5,\r
-  EfiCacheErrorMultiBit  = 6\r
-} EFI_CACHE_ERROR_TYPE_DATA;\r
-\r
-typedef enum {\r
-  EfiCacheTypeOther       = 1,\r
-  EfiCacheTypeUnknown     = 2,\r
-  EfiCacheTypeInstruction = 3,\r
-  EfiCacheTypeData        = 4,\r
-  EfiCacheTypeUnified     = 5\r
-} EFI_CACHE_TYPE_DATA;\r
-\r
-typedef enum {\r
-  EfiCacheAssociativityOther        = 1,\r
-  EfiCacheAssociativityUnknown      = 2,\r
-  EfiCacheAssociativityDirectMapped = 3,\r
-  EfiCacheAssociativity2Way         = 4,\r
-  EfiCacheAssociativity4Way         = 5,\r
-  EfiCacheAssociativityFully        = 6,\r
-  EfiCacheAssociativity8Way         = 7,\r
-  EfiCacheAssociativity16Way        = 8\r
-} EFI_CACHE_ASSOCIATIVITY_DATA;\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In CacheSubclass 0.9 specification. It defines the field type as UINT16.\r
-/// In fact, it should be UINT32 type because it refers to a 32bit width data.\r
-///\r
-typedef struct {\r
-  UINT32                            Level           :3;\r
-  UINT32                            Socketed        :1;\r
-  UINT32                            Reserved2       :1;\r
-  UINT32                            Location        :2;\r
-  UINT32                            Enable          :1;\r
-  UINT32                            OperationalMode :2;\r
-  UINT32                            Reserved1       :22;\r
-} EFI_CACHE_CONFIGURATION_DATA;\r
-\r
-#define EFI_CACHE_L1            1\r
-#define EFI_CACHE_L2            2\r
-#define EFI_CACHE_L3            3\r
-#define EFI_CACHE_L4            4\r
-#define EFI_CACHE_LMAX          EFI_CACHE_L4\r
-\r
-#define EFI_CACHE_SOCKETED      1\r
-#define EFI_CACHE_NOT_SOCKETED  0\r
-\r
-typedef enum {\r
-  EfiCacheInternal = 0,\r
-  EfiCacheExternal = 1,\r
-  EfiCacheReserved = 2,\r
-  EfiCacheUnknown  = 3\r
-} EFI_CACHE_LOCATION;\r
-\r
-#define EFI_CACHE_ENABLED       1\r
-#define EFI_CACHE_DISABLED      0\r
-\r
-typedef enum {\r
-  EfiCacheWriteThrough = 0,\r
-  EfiCacheWriteBack    = 1,\r
-  EfiCacheDynamicMode  = 2,\r
-  EfiCacheUnknownMode  = 3\r
-} EFI_CACHE_OPERATIONAL_MODE;\r
-\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In CacheSubclass specification 0.9, the enumeration type data structure is NOT defined.\r
-/// The equivalent in specification is\r
-///      #define EFI_CACHE_SIZE_RECORD_NUMBER                    0x00000001\r
-///      #define EFI_CACHE_MAXIMUM_SIZE_RECORD_NUMBER            0x00000002\r
-///      #define EFI_CACHE_SPEED_RECORD_NUMBER                   0x00000003\r
-///      #define EFI_CACHE_SOCKET_RECORD_NUMBER                  0x00000004\r
-///      #define EFI_CACHE_SRAM_SUPPORT_RECORD_NUMBER            0x00000005\r
-///      #define EFI_CACHE_SRAM_INSTALL_RECORD_NUMBER            0x00000006\r
-///      #define EFI_CACHE_ERROR_SUPPORT_RECORD_NUMBER           0x00000007\r
-///      #define EFI_CACHE_TYPE_RECORD_NUMBER                    0x00000008\r
-///      #define EFI_CACHE_ASSOCIATIVITY_RECORD_NUMBER           0x00000009\r
-///      #define EFI_CACHE_CONFIGURATION_RECORD_NUMBER           0x0000000A\r
-/// Keep the definition unchanged for backward compatibility.\r
-///\r
-typedef enum {\r
-  CacheSizeRecordType              = 1,\r
-  MaximumSizeCacheRecordType       = 2,\r
-  CacheSpeedRecordType             = 3,\r
-  CacheSocketRecordType            = 4,\r
-  CacheSramTypeRecordType          = 5,\r
-  CacheInstalledSramTypeRecordType = 6,\r
-  CacheErrorTypeRecordType         = 7,\r
-  CacheTypeRecordType              = 8,\r
-  CacheAssociativityRecordType     = 9,\r
-  CacheConfigRecordType            = 10\r
-} EFI_CACHE_VARIABLE_RECORD_TYPE;\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In CacheSubclass specification 0.9, the union type data structure is NOT defined.\r
-/// It's implementation-specific to simplify the code logic.\r
-///\r
-typedef union {\r
-  EFI_CACHE_SIZE_DATA                         CacheSize;\r
-  EFI_MAXIMUM_CACHE_SIZE_DATA                 MaximumCacheSize;\r
-  EFI_CACHE_SPEED_DATA                        CacheSpeed;\r
-  EFI_CACHE_SOCKET_DATA                       CacheSocket;\r
-  EFI_CACHE_SRAM_TYPE_DATA                    CacheSramType;\r
-  EFI_CACHE_SRAM_TYPE_DATA                    CacheInstalledSramType;\r
-  EFI_CACHE_ERROR_TYPE_DATA                   CacheErrorType;\r
-  EFI_CACHE_TYPE_DATA                         CacheType;\r
-  EFI_CACHE_ASSOCIATIVITY_DATA                CacheAssociativity;\r
-  EFI_CACHE_CONFIGURATION_DATA                CacheConfig;\r
-  EFI_CACHE_ASSOCIATION_DATA                  CacheAssociation;\r
-} EFI_CACHE_VARIABLE_RECORD;\r
-\r
-typedef struct {\r
-   EFI_SUBCLASS_TYPE1_HEADER        DataRecordHeader;\r
-   EFI_CACHE_VARIABLE_RECORD        VariableRecord;\r
-} EFI_CACHE_DATA_RECORD;\r
-\r
-#define EFI_MEMORY_SUBCLASS_VERSION     0x0100\r
-#define EFI_MEMORY_SIZE_RECORD_NUMBER   0x00000001\r
-\r
-typedef enum _EFI_MEMORY_REGION_TYPE {\r
-  EfiMemoryRegionMemory             = 0x01,\r
-  EfiMemoryRegionReserved           = 0x02,\r
-  EfiMemoryRegionAcpi               = 0x03,\r
-  EfiMemoryRegionNvs                = 0x04\r
-} EFI_MEMORY_REGION_TYPE;\r
-\r
-///\r
-/// This data record refers to the size of a memory region. The regions that are\r
-/// described can refer to physical memory, memory-mapped I/O, or reserved BIOS memory regions.\r
-/// The unit of measurement of this data record is in bytes.\r
-///\r
-typedef struct {\r
-  ///\r
-  /// A zero-based value that indicates which processor(s) can access the memory region.\r
-  /// A value of 0xFFFF indicates the region is accessible by all processors.\r
-  ///\r
-  UINT32                            ProcessorNumber;\r
-  ///\r
-  /// A zero-based value that indicates the starting bus that can access the memory region.\r
-  ///\r
-  UINT16                            StartBusNumber;\r
-  ///\r
-  /// A zero-based value that indicates the ending bus that can access the memory region.\r
-  /// A value of 0xFF for a PCI system indicates the region is accessible by all buses and\r
-  /// is global in scope. An example of the EndBusNumber not being 0xFF is a system\r
-  /// with two or more peer-to-host PCI bridges.\r
-  ///\r
-  UINT16                            EndBusNumber;\r
-  ///\r
-  /// The type of memory region from the operating system's point of view.\r
-  /// MemoryRegionType values are equivalent to the legacy INT 15 AX = E820 BIOS\r
-  /// command values.\r
-  ///\r
-  EFI_MEMORY_REGION_TYPE            MemoryRegionType;\r
-  ///\r
-  /// The size of the memory region in bytes.\r
-  ///\r
-  EFI_EXP_BASE2_DATA                MemorySize;\r
-  ///\r
-  /// The starting physical address of the memory region.\r
-  ///\r
-  EFI_PHYSICAL_ADDRESS              MemoryStartAddress;\r
-} EFI_MEMORY_SIZE_DATA;\r
-\r
-\r
-#define EFI_MEMORY_ARRAY_LOCATION_RECORD_NUMBER    0x00000002\r
-\r
-typedef enum _EFI_MEMORY_ARRAY_LOCATION {\r
-  EfiMemoryArrayLocationOther                 = 0x01,\r
-  EfiMemoryArrayLocationUnknown               = 0x02,\r
-  EfiMemoryArrayLocationSystemBoard           = 0x03,\r
-  EfiMemoryArrayLocationIsaAddonCard          = 0x04,\r
-  EfiMemoryArrayLocationEisaAddonCard         = 0x05,\r
-  EfiMemoryArrayLocationPciAddonCard          = 0x06,\r
-  EfiMemoryArrayLocationMcaAddonCard          = 0x07,\r
-  EfiMemoryArrayLocationPcmciaAddonCard       = 0x08,\r
-  EfiMemoryArrayLocationProprietaryAddonCard  = 0x09,\r
-  EfiMemoryArrayLocationNuBus                 = 0x0A,\r
-  EfiMemoryArrayLocationPc98C20AddonCard      = 0xA0,\r
-  EfiMemoryArrayLocationPc98C24AddonCard      = 0xA1,\r
-  EfiMemoryArrayLocationPc98EAddonCard        = 0xA2,\r
-  EfiMemoryArrayLocationPc98LocalBusAddonCard = 0xA3\r
-} EFI_MEMORY_ARRAY_LOCATION;\r
-\r
-typedef enum _EFI_MEMORY_ARRAY_USE {\r
-  EfiMemoryArrayUseOther                      = 0x01,\r
-  EfiMemoryArrayUseUnknown                    = 0x02,\r
-  EfiMemoryArrayUseSystemMemory               = 0x03,\r
-  EfiMemoryArrayUseVideoMemory                = 0x04,\r
-  EfiMemoryArrayUseFlashMemory                = 0x05,\r
-  EfiMemoryArrayUseNonVolatileRam             = 0x06,\r
-  EfiMemoryArrayUseCacheMemory                = 0x07\r
-} EFI_MEMORY_ARRAY_USE;\r
-\r
-typedef enum _EFI_MEMORY_ERROR_CORRECTION {\r
-  EfiMemoryErrorCorrectionOther               = 0x01,\r
-  EfiMemoryErrorCorrectionUnknown             = 0x02,\r
-  EfiMemoryErrorCorrectionNone                = 0x03,\r
-  EfiMemoryErrorCorrectionParity              = 0x04,\r
-  EfiMemoryErrorCorrectionSingleBitEcc        = 0x05,\r
-  EfiMemoryErrorCorrectionMultiBitEcc         = 0x06,\r
-  EfiMemoryErrorCorrectionCrc                 = 0x07\r
-} EFI_MEMORY_ERROR_CORRECTION;\r
-\r
-///\r
-/// This data record refers to the physical memory array. This data record is a structure.\r
-/// The type definition structure for EFI_MEMORY_ARRAY_LOCATION_DATA is in SMBIOS 2.3.4:\r
-/// - Table 3.3.17.1, Type 16, Offset 0x4\r
-/// - Table 3.3.17.2, Type 16, Offset 0x5\r
-/// - Table 3.3.17.3, Type 16, with the following offsets:\r
-///     -- Offset 0x6\r
-///     -- Offset 0x7\r
-///     -- Offset 0xB\r
-///     -- Offset 0xD\r
-///\r
-typedef struct {\r
-  ///\r
-  /// The physical location of the memory array.\r
-  ///\r
-  EFI_MEMORY_ARRAY_LOCATION         MemoryArrayLocation;\r
-  ///\r
-  /// The memory array usage.\r
-  ///\r
-  EFI_MEMORY_ARRAY_USE              MemoryArrayUse;\r
-  ///\r
-  /// The primary error correction or detection supported by this memory array.\r
-  ///\r
-  EFI_MEMORY_ERROR_CORRECTION       MemoryErrorCorrection;\r
-  ///\r
-  /// The maximum memory capacity size in kilobytes. If capacity is unknown, then\r
-  /// values of MaximumMemoryCapacity.Value = 0x00 and\r
-  /// MaximumMemoryCapacity.Exponent = 0x8000 are used.\r
-  ///\r
-  EFI_EXP_BASE2_DATA                MaximumMemoryCapacity;\r
-  ///\r
-  /// The number of memory slots or sockets that are available for memory devices\r
-  /// in this array.\r
-  ///\r
-  UINT16                            NumberMemoryDevices;\r
-} EFI_MEMORY_ARRAY_LOCATION_DATA;\r
-\r
-\r
-#define EFI_MEMORY_ARRAY_LINK_RECORD_NUMBER    0x00000003\r
-\r
-typedef enum _EFI_MEMORY_FORM_FACTOR {\r
-  EfiMemoryFormFactorOther                    = 0x01,\r
-  EfiMemoryFormFactorUnknown                  = 0x02,\r
-  EfiMemoryFormFactorSimm                     = 0x03,\r
-  EfiMemoryFormFactorSip                      = 0x04,\r
-  EfiMemoryFormFactorChip                     = 0x05,\r
-  EfiMemoryFormFactorDip                      = 0x06,\r
-  EfiMemoryFormFactorZip                      = 0x07,\r
-  EfiMemoryFormFactorProprietaryCard          = 0x08,\r
-  EfiMemoryFormFactorDimm                     = 0x09,\r
-  EfiMemoryFormFactorTsop                     = 0x0A,\r
-  EfiMemoryFormFactorRowOfChips               = 0x0B,\r
-  EfiMemoryFormFactorRimm                     = 0x0C,\r
-  EfiMemoryFormFactorSodimm                   = 0x0D,\r
-  EfiMemoryFormFactorSrimm                    = 0x0E,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in MemSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiMemoryFormFactorFbDimm                   = 0x0F\r
-} EFI_MEMORY_FORM_FACTOR;\r
-\r
-typedef enum _EFI_MEMORY_ARRAY_TYPE {\r
-  EfiMemoryTypeOther                          = 0x01,\r
-  EfiMemoryTypeUnknown                        = 0x02,\r
-  EfiMemoryTypeDram                           = 0x03,\r
-  EfiMemoryTypeEdram                          = 0x04,\r
-  EfiMemoryTypeVram                           = 0x05,\r
-  EfiMemoryTypeSram                           = 0x06,\r
-  EfiMemoryTypeRam                            = 0x07,\r
-  EfiMemoryTypeRom                            = 0x08,\r
-  EfiMemoryTypeFlash                          = 0x09,\r
-  EfiMemoryTypeEeprom                         = 0x0A,\r
-  EfiMemoryTypeFeprom                         = 0x0B,\r
-  EfiMemoryTypeEprom                          = 0x0C,\r
-  EfiMemoryTypeCdram                          = 0x0D,\r
-  EfiMemoryType3Dram                          = 0x0E,\r
-  EfiMemoryTypeSdram                          = 0x0F,\r
-  EfiMemoryTypeSgram                          = 0x10,\r
-  EfiMemoryTypeRdram                          = 0x11,\r
-  EfiMemoryTypeDdr                            = 0x12,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in MemSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiMemoryTypeDdr2                           = 0x13,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in MemSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiMemoryTypeDdr2FbDimm                     = 0x14\r
-} EFI_MEMORY_ARRAY_TYPE;\r
-\r
-typedef struct {\r
-  UINT32                            Reserved        :1;\r
-  UINT32                            Other           :1;\r
-  UINT32                            Unknown         :1;\r
-  UINT32                            FastPaged       :1;\r
-  UINT32                            StaticColumn    :1;\r
-  UINT32                            PseudoStatic    :1;\r
-  UINT32                            Rambus          :1;\r
-  UINT32                            Synchronous     :1;\r
-  UINT32                            Cmos            :1;\r
-  UINT32                            Edo             :1;\r
-  UINT32                            WindowDram      :1;\r
-  UINT32                            CacheDram       :1;\r
-  UINT32                            Nonvolatile     :1;\r
-  UINT32                            Reserved1       :19;\r
-} EFI_MEMORY_TYPE_DETAIL;\r
-\r
-typedef enum {\r
-  EfiMemoryStateEnabled      = 0,\r
-  EfiMemoryStateUnknown      = 1,\r
-  EfiMemoryStateUnsupported  = 2,\r
-  EfiMemoryStateError        = 3,\r
-  EfiMemoryStateAbsent       = 4,\r
-  EfiMemoryStateDisabled     = 5,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// This field is NOT defined in MemSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
-  ///\r
-  EfiMemoryStatePartial      = 6\r
-} EFI_MEMORY_STATE;\r
-\r
-///\r
-/// This data record describes a memory device. This data record is a structure.\r
-/// The type definition structure for EFI_MEMORY_ARRAY_LINK_DATA is in SMBIOS 2.3.4.\r
-///\r
-typedef struct {\r
-  ///\r
-  /// A string that identifies the physically labeled socket or board position where the\r
-  /// memory device is located.\r
-  ///\r
-  STRING_REF                        MemoryDeviceLocator;\r
-  ///\r
-  /// A string denoting the physically labeled bank where the memory device is located.\r
-  ///\r
-  STRING_REF                        MemoryBankLocator;\r
-  ///\r
-  /// A string denoting the memory manufacturer.\r
-  ///\r
-  STRING_REF                        MemoryManufacturer;\r
-  ///\r
-  /// A string denoting the serial number of the memory device.\r
-  ///\r
-  STRING_REF                        MemorySerialNumber;\r
-  ///\r
-  /// The asset tag of the memory device.\r
-  ///\r
-  STRING_REF                        MemoryAssetTag;\r
-  ///\r
-  /// A string denoting the part number of the memory device.\r
-  ///\r
-  STRING_REF                        MemoryPartNumber;\r
-  ///\r
-  /// A link to a memory array structure set.\r
-  ///\r
-  EFI_INTER_LINK_DATA               MemoryArrayLink;\r
-  ///\r
-  /// A link to a memory array structure set.\r
-  ///\r
-  EFI_INTER_LINK_DATA               MemorySubArrayLink;\r
-  ///\r
-  /// The total width in bits of this memory device. If there are no error correcting bits,\r
-  /// then the total width equals the data width. If the width is unknown, then set the field\r
-  /// to 0xFFFF.\r
-  ///\r
-  UINT16                            MemoryTotalWidth;\r
-  ///\r
-  /// The data width in bits of the memory device. A data width of 0x00 and a total width\r
-  /// of 0x08 indicate that the device is used solely for error correction.\r
-  ///\r
-  UINT16                            MemoryDataWidth;\r
-  ///\r
-  /// The size in bytes of the memory device. A value of 0x00 denotes that no device is\r
-  /// installed, while a value of all Fs denotes that the size is not known.\r
-  ///\r
-  EFI_EXP_BASE2_DATA                MemoryDeviceSize;\r
-  ///\r
-  /// The form factor of the memory device.\r
-  ///\r
-  EFI_MEMORY_FORM_FACTOR            MemoryFormFactor;\r
-  ///\r
-  /// A memory device set that must be populated with all devices of the same type and\r
-  /// size. A value of 0x00 indicates that the device is not part of any set. A value of 0xFF\r
-  /// indicates that the attribute is unknown. Any other value denotes the set number.\r
-  ///\r
-  UINT8                             MemoryDeviceSet;\r
-  ///\r
-  /// The memory type in the socket.\r
-  ///\r
-  EFI_MEMORY_ARRAY_TYPE             MemoryType;\r
-  ///\r
-  /// The memory type details.\r
-  ///\r
-  EFI_MEMORY_TYPE_DETAIL            MemoryTypeDetail;\r
-  ///\r
-  /// The memory speed in megahertz (MHz). A value of 0x00 denotes that\r
-  /// the speed is unknown.\r
-  /// Inconsistent with specification here:\r
-  /// In MemSubclass specification 0.9, the naming is MemoryTypeSpeed.\r
-  /// Keep it unchanged for backward compatibilty.\r
-  ///\r
-  EFI_EXP_BASE10_DATA               MemorySpeed;\r
-  ///\r
-  /// The memory state.\r
-  ///\r
-  EFI_MEMORY_STATE                  MemoryState;\r
-} EFI_MEMORY_ARRAY_LINK_DATA;\r
-\r
-\r
-#define EFI_MEMORY_ARRAY_START_ADDRESS_RECORD_NUMBER    0x00000004\r
-\r
-///\r
-/// This data record refers to a specified physical memory array associated with\r
-/// a given memory range.\r
-///\r
-typedef struct {\r
-  ///\r
-  /// The starting physical address in bytes of memory mapped to a specified physical\r
-  /// memory array.\r
-  ///\r
-  EFI_PHYSICAL_ADDRESS              MemoryArrayStartAddress;\r
-  ///\r
-  /// The last physical address in bytes of memory mapped to a specified physical memory\r
-  /// array.\r
-  ///\r
-  EFI_PHYSICAL_ADDRESS              MemoryArrayEndAddress;\r
-  ///\r
-  /// See Physical Memory Array (Type 16) for physical memory array structures.\r
-  ///\r
-  EFI_INTER_LINK_DATA               PhysicalMemoryArrayLink;\r
-  ///\r
-  /// The number of memory devices that form a single row of memory for the address\r
-  /// partition.\r
-  ///\r
-  UINT16                            MemoryArrayPartitionWidth;\r
-} EFI_MEMORY_ARRAY_START_ADDRESS_DATA;\r
-\r
-\r
-#define EFI_MEMORY_DEVICE_START_ADDRESS_RECORD_NUMBER    0x00000005\r
-\r
-///\r
-/// This data record refers to a physical memory device that is associated with\r
-/// a given memory range.\r
-///\r
-typedef struct {\r
-  ///\r
-  /// The starting physical address that is associated with the device.\r
-  ///\r
-  EFI_PHYSICAL_ADDRESS              MemoryDeviceStartAddress;\r
-  ///\r
-  /// The ending physical address that is associated with the device.\r
-  ///\r
-  EFI_PHYSICAL_ADDRESS              MemoryDeviceEndAddress;\r
-  ///\r
-  /// A link to the memory device data structure.\r
-  ///\r
-  EFI_INTER_LINK_DATA               PhysicalMemoryDeviceLink;\r
-  ///\r
-  /// A link to the memory array data structure.\r
-  ///\r
-  EFI_INTER_LINK_DATA               PhysicalMemoryArrayLink;\r
-  ///\r
-  /// The position of the memory device in a row. A value of 0x00 is reserved and a value\r
-  /// of 0xFF indicates that the position is unknown.\r
-  ///\r
-  UINT8                             MemoryDevicePartitionRowPosition;\r
-  ///\r
-  /// The position of the device in an interleave.\r
-  ///\r
-  UINT8                             MemoryDeviceInterleavePosition;\r
-  ///\r
-  /// The maximum number of consecutive rows from the device that are accessed in a\r
-  /// single interleave transfer. A value of 0x00 indicates that the device is not interleaved\r
-  /// and a value of 0xFF indicates that the interleave configuration is unknown.\r
-  ///\r
-  UINT8                             MemoryDeviceInterleaveDataDepth;\r
-} EFI_MEMORY_DEVICE_START_ADDRESS_DATA;\r
-\r
-\r
-//\r
-//  Memory. Channel Device Type -  SMBIOS Type 37\r
-//\r
-\r
-#define EFI_MEMORY_CHANNEL_TYPE_RECORD_NUMBER    0x00000006\r
-\r
-typedef enum _EFI_MEMORY_CHANNEL_TYPE {\r
-  EfiMemoryChannelTypeOther                   = 1,\r
-  EfiMemoryChannelTypeUnknown                 = 2,\r
-  EfiMemoryChannelTypeRambus                  = 3,\r
-  EfiMemoryChannelTypeSyncLink                = 4\r
-} EFI_MEMORY_CHANNEL_TYPE;\r
-\r
-///\r
-/// This data record refers the type of memory that is associated with the channel. This data record is a\r
-/// structure.\r
-/// The type definition structure for EFI_MEMORY_CHANNEL_TYPE_DATA is in SMBIOS 2.3.4,\r
-/// Table 3.3.38, Type 37, with the following offsets:\r
-///   - Offset 0x4\r
-///   - Offset 0x5\r
-///   - Offset 0x6\r
-///\r
-typedef struct {\r
-  ///\r
-  /// The type of memory that is associated with the channel.\r
-  ///\r
-  EFI_MEMORY_CHANNEL_TYPE           MemoryChannelType;\r
-  ///\r
-  /// The maximum load that is supported by the channel.\r
-  ///\r
-  UINT8                             MemoryChannelMaximumLoad;\r
-  ///\r
-  /// The number of memory devices on this channel.\r
-  ///\r
-  UINT8                             MemoryChannelDeviceCount;\r
-} EFI_MEMORY_CHANNEL_TYPE_DATA;\r
-\r
-#define EFI_MEMORY_CHANNEL_DEVICE_RECORD_NUMBER    0x00000007\r
-\r
-///\r
-/// This data record refers to the memory device that is associated with the memory channel. This data\r
-/// record is a structure.\r
-/// The type definition structure for EFI_MEMORY_CHANNEL_DEVICE_DATA is in SMBIOS 2.3.4,\r
-/// Table 3.3.38, Type 37, with the following offsets:\r
-///   - Offset 0x7\r
-///   - Offset 0x8\r
-///\r
-typedef struct {\r
-  ///\r
-  /// A number between one and MemoryChannelDeviceCount plus an arbitrary base.\r
-  ///\r
-  UINT8                             DeviceId;\r
-  ///\r
-  /// The Link of the associated memory device. See Memory Device (Type 17) for\r
-  /// memory devices.\r
-  ///\r
-  EFI_INTER_LINK_DATA               DeviceLink;\r
-  ///\r
-  /// The number of load units that this device consumes.\r
-  ///\r
-  UINT8                             MemoryChannelDeviceLoad;\r
-} EFI_MEMORY_CHANNEL_DEVICE_DATA;\r
-\r
-//\r
-//  Memory. Controller Information - SMBIOS Type 5\r
-//\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 type 5.\r
-///\r
-#define EFI_MEMORY_CONTROLLER_INFORMATION_RECORD_NUMBER    0x00000008\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 type 5.\r
-///\r
-typedef enum {\r
-  EfiErrorDetectingMethodOther   = 1,\r
-  EfiErrorDetectingMethodUnknown = 2,\r
-  EfiErrorDetectingMethodNone    = 3,\r
-  EfiErrorDetectingMethodParity  = 4,\r
-  EfiErrorDetectingMethod32Ecc   = 5,\r
-  EfiErrorDetectingMethod64Ecc   = 6,\r
-  EfiErrorDetectingMethod128Ecc  = 7,\r
-  EfiErrorDetectingMethodCrc     = 8\r
-} EFI_MEMORY_ERROR_DETECT_METHOD_TYPE;\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 type 5.\r
-///\r
-typedef struct {\r
-  UINT8                             Other                 :1;\r
-  UINT8                             Unknown               :1;\r
-  UINT8                             None                  :1;\r
-  UINT8                             SingleBitErrorCorrect :1;\r
-  UINT8                             DoubleBitErrorCorrect :1;\r
-  UINT8                             ErrorScrubbing        :1;\r
-  UINT8                             Reserved              :2;\r
-} EFI_MEMORY_ERROR_CORRECT_CAPABILITY;\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 type 5.\r
-///\r
-typedef enum {\r
-  EfiMemoryInterleaveOther      = 1,\r
-  EfiMemoryInterleaveUnknown    = 2,\r
-  EfiMemoryInterleaveOneWay     = 3,\r
-  EfiMemoryInterleaveTwoWay     = 4,\r
-  EfiMemoryInterleaveFourWay    = 5,\r
-  EfiMemoryInterleaveEightWay   = 6,\r
-  EfiMemoryInterleaveSixteenWay = 7\r
-} EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE;\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 type 5.\r
-///\r
-typedef struct {\r
-  UINT16                            Other    :1;\r
-  UINT16                            Unknown  :1;\r
-  UINT16                            SeventyNs:1;\r
-  UINT16                            SixtyNs  :1;\r
-  UINT16                            FiftyNs  :1;\r
-  UINT16                            Reserved :11;\r
-} EFI_MEMORY_SPEED_TYPE;\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 type 5.\r
-///\r
-typedef struct {\r
-  UINT16                            Other       :1;\r
-  UINT16                            Unknown     :1;\r
-  UINT16                            Standard    :1;\r
-  UINT16                            FastPageMode:1;\r
-  UINT16                            EDO         :1;\r
-  UINT16                            Parity      :1;\r
-  UINT16                            ECC         :1;\r
-  UINT16                            SIMM        :1;\r
-  UINT16                            DIMM        :1;\r
-  UINT16                            BurstEdo    :1;\r
-  UINT16                            SDRAM       :1;\r
-  UINT16                            Reserved    :5;\r
-} EFI_MEMORY_SUPPORTED_TYPE;\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 type 5.\r
-///\r
-typedef struct {\r
-  UINT8                             Five    :1;\r
-  UINT8                             Three   :1;\r
-  UINT8                             Two     :1;\r
-  UINT8                             Reserved:5;\r
-} EFI_MEMORY_MODULE_VOLTAGE_TYPE;\r
-\r
-///\r
-/// EFI_MEMORY_CONTROLLER_INFORMATION is obsolete\r
-/// Use EFI_MEMORY_CONTROLLER_INFORMATION_DATA instead\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 type 5.\r
-///\r
-typedef struct {\r
-  EFI_MEMORY_ERROR_DETECT_METHOD_TYPE ErrorDetectingMethod;\r
-  EFI_MEMORY_ERROR_CORRECT_CAPABILITY ErrorCorrectingCapability;\r
-  EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE  MemorySupportedInterleave;\r
-  EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE  MemoryCurrentInterleave;\r
-  UINT8                               MaxMemoryModuleSize;\r
-  EFI_MEMORY_SPEED_TYPE               MemorySpeedType;\r
-  EFI_MEMORY_SUPPORTED_TYPE           MemorySupportedType;\r
-  EFI_MEMORY_MODULE_VOLTAGE_TYPE      MemoryModuleVoltage;\r
-  UINT8                               NumberofMemorySlot;\r
-  EFI_MEMORY_ERROR_CORRECT_CAPABILITY EnabledCorrectingCapability;\r
-  UINT16                              *MemoryModuleConfigHandles;\r
-} EFI_MEMORY_CONTROLLER_INFORMATION;\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 type 5.\r
-///\r
-typedef struct {\r
-  EFI_MEMORY_ERROR_DETECT_METHOD_TYPE   ErrorDetectingMethod;\r
-  EFI_MEMORY_ERROR_CORRECT_CAPABILITY   ErrorCorrectingCapability;\r
-  EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE    MemorySupportedInterleave;\r
-  EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE    MemoryCurrentInterleave;\r
-  UINT8                                 MaxMemoryModuleSize;\r
-  EFI_MEMORY_SPEED_TYPE                 MemorySpeedType;\r
-  EFI_MEMORY_SUPPORTED_TYPE             MemorySupportedType;\r
-  EFI_MEMORY_MODULE_VOLTAGE_TYPE        MemoryModuleVoltage;\r
-  UINT8                                 NumberofMemorySlot;\r
-  EFI_MEMORY_ERROR_CORRECT_CAPABILITY   EnabledCorrectingCapability;\r
-  EFI_INTER_LINK_DATA                   MemoryModuleConfig[1];\r
-} EFI_MEMORY_CONTROLLER_INFORMATION_DATA;\r
-\r
-///\r
-/// Memory. Error Information - SMBIOS Type 18\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 type 18.\r
-///\r
-#define EFI_MEMORY_32BIT_ERROR_INFORMATION_RECORD_NUMBER    0x00000009\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 type 18.\r
-///\r
-typedef enum {\r
-  EfiMemoryErrorOther             = 1,\r
-  EfiMemoryErrorUnknown           = 2,\r
-  EfiMemoryErrorOk                = 3,\r
-  EfiMemoryErrorBadRead           = 4,\r
-  EfiMemoryErrorParity            = 5,\r
-  EfiMemoryErrorSigleBit          = 6,\r
-  EfiMemoryErrorDoubleBit         = 7,\r
-  EfiMemoryErrorMultiBit          = 8,\r
-  EfiMemoryErrorNibble            = 9,\r
-  EfiMemoryErrorChecksum          = 10,\r
-  EfiMemoryErrorCrc               = 11,\r
-  EfiMemoryErrorCorrectSingleBit  = 12,\r
-  EfiMemoryErrorCorrected         = 13,\r
-  EfiMemoryErrorUnCorrectable     = 14\r
-} EFI_MEMORY_ERROR_TYPE;\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 type 18.\r
-///\r
-typedef enum {\r
-  EfiMemoryGranularityOther               = 1,\r
-  EfiMemoryGranularityOtherUnknown        = 2,\r
-  EfiMemoryGranularityDeviceLevel         = 3,\r
-  EfiMemoryGranularityMemPartitionLevel   = 4\r
-} EFI_MEMORY_ERROR_GRANULARITY_TYPE;\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 type 18.\r
-///\r
-typedef enum {\r
-  EfiMemoryErrorOperationOther            = 1,\r
-  EfiMemoryErrorOperationUnknown          = 2,\r
-  EfiMemoryErrorOperationRead             = 3,\r
-  EfiMemoryErrorOperationWrite            = 4,\r
-  EfiMemoryErrorOperationPartialWrite     = 5\r
-} EFI_MEMORY_ERROR_OPERATION_TYPE;\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 type 18.\r
-///\r
-typedef struct {\r
-  EFI_MEMORY_ERROR_TYPE               MemoryErrorType;\r
-  EFI_MEMORY_ERROR_GRANULARITY_TYPE   MemoryErrorGranularity;\r
-  EFI_MEMORY_ERROR_OPERATION_TYPE     MemoryErrorOperation;\r
-  UINT32                              VendorSyndrome;\r
-  UINT32                              MemoryArrayErrorAddress;\r
-  UINT32                              DeviceErrorAddress;\r
-  UINT32                              DeviceErrorResolution;\r
-} EFI_MEMORY_32BIT_ERROR_INFORMATION;\r
-\r
-///\r
-/// Memory. Error Information - SMBIOS Type 33.\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 type 33.\r
-///\r
-#define EFI_MEMORY_64BIT_ERROR_INFORMATION_RECORD_NUMBER    0x0000000A\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 type 33.\r
-///\r
-typedef struct {\r
-  EFI_MEMORY_ERROR_TYPE             MemoryErrorType;\r
-  EFI_MEMORY_ERROR_GRANULARITY_TYPE MemoryErrorGranularity;\r
-  EFI_MEMORY_ERROR_OPERATION_TYPE   MemoryErrorOperation;\r
-  UINT32                            VendorSyndrome;\r
-  UINT64                            MemoryArrayErrorAddress;\r
-  UINT64                            DeviceErrorAddress;\r
-  UINT32                            DeviceErrorResolution;\r
-} EFI_MEMORY_64BIT_ERROR_INFORMATION;\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It is implementation-specific to simplify the code logic.\r
-///\r
-typedef union _EFI_MEMORY_SUBCLASS_RECORDS {\r
-  EFI_MEMORY_SIZE_DATA                 SizeData;\r
-  EFI_MEMORY_ARRAY_LOCATION_DATA       ArrayLocationData;\r
-  EFI_MEMORY_ARRAY_LINK_DATA           ArrayLink;\r
-  EFI_MEMORY_ARRAY_START_ADDRESS_DATA  ArrayStartAddress;\r
-  EFI_MEMORY_DEVICE_START_ADDRESS_DATA DeviceStartAddress;\r
-  EFI_MEMORY_CHANNEL_TYPE_DATA         ChannelTypeData;\r
-  EFI_MEMORY_CHANNEL_DEVICE_DATA       ChannelDeviceData;\r
-  EFI_MEMORY_CONTROLLER_INFORMATION    MemoryControllerInfo;\r
-  EFI_MEMORY_32BIT_ERROR_INFORMATION   Memory32bitErrorInfo;\r
-  EFI_MEMORY_64BIT_ERROR_INFORMATION   Memory64bitErrorInfo;\r
-} EFI_MEMORY_SUBCLASS_RECORDS;\r
-\r
-typedef struct {\r
-  EFI_SUBCLASS_TYPE1_HEADER         Header;\r
-  EFI_MEMORY_SUBCLASS_RECORDS       Record;\r
-} EFI_MEMORY_SUBCLASS_DRIVER_DATA;\r
-\r
-#define EFI_MISC_SUBCLASS_VERSION     0x0100\r
-\r
-#pragma pack(1)\r
-\r
-//\r
-// Last PCI Bus Number\r
-//\r
-#define EFI_MISC_LAST_PCI_BUS_RECORD_NUMBER    0x00000001\r
-\r
-typedef struct {\r
-  UINT8                             LastPciBus;\r
-} EFI_MISC_LAST_PCI_BUS_DATA;\r
-\r
-//\r
-// Misc. BIOS Vendor - SMBIOS Type 0\r
-//\r
-#define EFI_MISC_BIOS_VENDOR_RECORD_NUMBER    0x00000002\r
-\r
-typedef struct {\r
-  UINT64                            Reserved1                         :2;\r
-  UINT64                            Unknown                           :1;\r
-  UINT64                            BiosCharacteristicsNotSupported   :1;\r
-  UINT64                            IsaIsSupported                    :1;\r
-  UINT64                            McaIsSupported                    :1;\r
-  UINT64                            EisaIsSupported                   :1;\r
-  UINT64                            PciIsSupported                    :1;\r
-  UINT64                            PcmciaIsSupported                 :1;\r
-  UINT64                            PlugAndPlayIsSupported            :1;\r
-  UINT64                            ApmIsSupported                    :1;\r
-  UINT64                            BiosIsUpgradable                  :1;\r
-  UINT64                            BiosShadowingAllowed              :1;\r
-  UINT64                            VlVesaIsSupported                 :1;\r
-  UINT64                            EscdSupportIsAvailable            :1;\r
-  UINT64                            BootFromCdIsSupported             :1;\r
-  UINT64                            SelectableBootIsSupported         :1;\r
-  UINT64                            RomBiosIsSocketed                 :1;\r
-  UINT64                            BootFromPcmciaIsSupported         :1;\r
-  UINT64                            EDDSpecificationIsSupported       :1;\r
-  UINT64                            JapaneseNecFloppyIsSupported      :1;\r
-  UINT64                            JapaneseToshibaFloppyIsSupported  :1;\r
-  UINT64                            Floppy525_360IsSupported          :1;\r
-  UINT64                            Floppy525_12IsSupported           :1;\r
-  UINT64                            Floppy35_720IsSupported           :1;\r
-  UINT64                            Floppy35_288IsSupported           :1;\r
-  UINT64                            PrintScreenIsSupported            :1;\r
-  UINT64                            Keyboard8042IsSupported           :1;\r
-  UINT64                            SerialIsSupported                 :1;\r
-  UINT64                            PrinterIsSupported                :1;\r
-  UINT64                            CgaMonoIsSupported                :1;\r
-  UINT64                            NecPc98                           :1;\r
-  UINT64                            AcpiIsSupported                   :1;\r
-  UINT64                            UsbLegacyIsSupported              :1;\r
-  UINT64                            AgpIsSupported                    :1;\r
-  UINT64                            I20BootIsSupported                :1;\r
-  UINT64                            Ls120BootIsSupported              :1;\r
-  UINT64                            AtapiZipDriveBootIsSupported      :1;\r
-  UINT64                            Boot1394IsSupported               :1;\r
-  UINT64                            SmartBatteryIsSupported           :1;\r
-  UINT64                            BiosBootSpecIsSupported           :1;\r
-  UINT64                            FunctionKeyNetworkBootIsSupported :1;\r
-  UINT64                            Reserved                          :22;\r
-} EFI_MISC_BIOS_CHARACTERISTICS;\r
-\r
-typedef struct {\r
-  UINT64                            BiosReserved  :16;\r
-  UINT64                            SystemReserved:16;\r
-  UINT64                            Reserved      :32;\r
-} EFI_MISC_BIOS_CHARACTERISTICS_EXTENSION;\r
-\r
-typedef struct {\r
-  STRING_REF                        BiosVendor;\r
-  STRING_REF                        BiosVersion;\r
-  STRING_REF                        BiosReleaseDate;\r
-  EFI_PHYSICAL_ADDRESS              BiosStartingAddress;\r
-  EFI_EXP_BASE2_DATA                BiosPhysicalDeviceSize;\r
-  EFI_MISC_BIOS_CHARACTERISTICS     BiosCharacteristics1;\r
-  EFI_MISC_BIOS_CHARACTERISTICS_EXTENSION\r
-                                    BiosCharacteristics2;\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// In MiscSubclass specification 0.9, this data structure and corrsponding fields are NOT defined.\r
-  /// It's introduced for SmBios 2.6 specification type 0.\r
-  ///\r
-  UINT8                             BiosMajorRelease;\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// In MiscSubclass specification 0.9, this data structure and corrsponding fields are NOT defined.\r
-  /// It's introduced for SmBios 2.6 specification type 0.\r
-  ///\r
-  UINT8                             BiosMinorRelease;\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// In MiscSubclass specification 0.9, this data structure and corrsponding fields are NOT defined.\r
-  /// It's introduced for SmBios 2.6 specification type 0.\r
-  ///\r
-  UINT8                             BiosEmbeddedFirmwareMajorRelease;\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// In MiscSubclass specification 0.9, this data structure and corrsponding fields are NOT defined.\r
-  /// It's introduced for SmBios 2.6 specification type 0.\r
-  ///\r
-  UINT8                             BiosEmbeddedFirmwareMinorRelease;\r
-} EFI_MISC_BIOS_VENDOR_DATA;\r
-\r
-//\r
-// Misc. System Manufacturer - SMBIOS Type 1\r
-//\r
-#define EFI_MISC_SYSTEM_MANUFACTURER_RECORD_NUMBER    0x00000003\r
-\r
-typedef enum {\r
-  EfiSystemWakeupTypeReserved        = 0,\r
-  EfiSystemWakeupTypeOther           = 1,\r
-  EfiSystemWakeupTypeUnknown         = 2,\r
-  EfiSystemWakeupTypeApmTimer        = 3,\r
-  EfiSystemWakeupTypeModemRing       = 4,\r
-  EfiSystemWakeupTypeLanRemote       = 5,\r
-  EfiSystemWakeupTypePowerSwitch     = 6,\r
-  EfiSystemWakeupTypePciPme          = 7,\r
-  EfiSystemWakeupTypeAcPowerRestored = 8\r
-} EFI_MISC_SYSTEM_WAKEUP_TYPE;\r
-\r
-typedef struct {\r
-  STRING_REF                        SystemManufacturer;\r
-  STRING_REF                        SystemProductName;\r
-  STRING_REF                        SystemVersion;\r
-  STRING_REF                        SystemSerialNumber;\r
-  EFI_GUID                          SystemUuid;\r
-  EFI_MISC_SYSTEM_WAKEUP_TYPE       SystemWakeupType;\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// In MiscSubclass specification 0.9, this data structure and corrsponding fields are NOT defined.\r
-  /// It's introduced for SmBios 2.6 specification type 1.\r
-  ///\r
-  STRING_REF                        SystemSKUNumber;\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// In MiscSubclass specification 0.9, this data structure and corrsponding fields are NOT defined.\r
-  /// It's introduced for SmBios 2.6 specification type 1.\r
-  ///\r
-  STRING_REF                        SystemFamily;\r
-} EFI_MISC_SYSTEM_MANUFACTURER_DATA;\r
-\r
-//\r
-// Misc. Base Board Manufacturer - SMBIOS Type 2\r
-//\r
-#define EFI_MISC_BASE_BOARD_MANUFACTURER_RECORD_NUMBER    0x00000004\r
-\r
-typedef struct {\r
-  UINT32                            Motherboard           :1;\r
-  UINT32                            RequiresDaughterCard  :1;\r
-  UINT32                            Removable             :1;\r
-  UINT32                            Replaceable           :1;\r
-  UINT32                            HotSwappable          :1;\r
-  UINT32                            Reserved              :27;\r
-} EFI_BASE_BOARD_FEATURE_FLAGS;\r
-\r
-typedef enum {\r
-  EfiBaseBoardTypeUnknown                = 1,\r
-  EfiBaseBoardTypeOther                  = 2,\r
-  EfiBaseBoardTypeServerBlade            = 3,\r
-  EfiBaseBoardTypeConnectivitySwitch     = 4,\r
-  EfiBaseBoardTypeSystemManagementModule = 5,\r
-  EfiBaseBoardTypeProcessorModule        = 6,\r
-  EfiBaseBoardTypeIOModule               = 7,\r
-  EfiBaseBoardTypeMemoryModule           = 8,\r
-  EfiBaseBoardTypeDaughterBoard          = 9,\r
-  EfiBaseBoardTypeMotherBoard            = 0xA,\r
-  EfiBaseBoardTypeProcessorMemoryModule  = 0xB,\r
-  EfiBaseBoardTypeProcessorIOModule      = 0xC,\r
-  EfiBaseBoardTypeInterconnectBoard      = 0xD\r
-} EFI_BASE_BOARD_TYPE;\r
-\r
-typedef struct {\r
-  STRING_REF                        BaseBoardManufacturer;\r
-  STRING_REF                        BaseBoardProductName;\r
-  STRING_REF                        BaseBoardVersion;\r
-  STRING_REF                        BaseBoardSerialNumber;\r
-  STRING_REF                        BaseBoardAssetTag;\r
-  STRING_REF                        BaseBoardChassisLocation;\r
-  EFI_BASE_BOARD_FEATURE_FLAGS      BaseBoardFeatureFlags;\r
-  EFI_BASE_BOARD_TYPE               BaseBoardType;\r
-  EFI_INTER_LINK_DATA               BaseBoardChassisLink;\r
-  UINT32                            BaseBoardNumberLinks;\r
-  EFI_INTER_LINK_DATA               LinkN;\r
-} EFI_MISC_BASE_BOARD_MANUFACTURER_DATA;\r
-\r
-//\r
-// Misc. System/Chassis Enclosure - SMBIOS Type 3\r
-//\r
-#define EFI_MISC_CHASSIS_MANUFACTURER_RECORD_NUMBER    0x00000005\r
-\r
-typedef enum {\r
-  EfiMiscChassisTypeOther               = 0x1,\r
-  EfiMiscChassisTypeUnknown             = 0x2,\r
-  EfiMiscChassisTypeDeskTop             = 0x3,\r
-  EfiMiscChassisTypeLowProfileDesktop   = 0x4,\r
-  EfiMiscChassisTypePizzaBox            = 0x5,\r
-  EfiMiscChassisTypeMiniTower           = 0x6,\r
-  EfiMiscChassisTypeTower               = 0x7,\r
-  EfiMiscChassisTypePortable            = 0x8,\r
-  EfiMiscChassisTypeLapTop              = 0x9,\r
-  EfiMiscChassisTypeNotebook            = 0xA,\r
-  EfiMiscChassisTypeHandHeld            = 0xB,\r
-  EfiMiscChassisTypeDockingStation      = 0xC,\r
-  EfiMiscChassisTypeAllInOne            = 0xD,\r
-  EfiMiscChassisTypeSubNotebook         = 0xE,\r
-  EfiMiscChassisTypeSpaceSaving         = 0xF,\r
-  EfiMiscChassisTypeLunchBox            = 0x10,\r
-  EfiMiscChassisTypeMainServerChassis   = 0x11,\r
-  EfiMiscChassisTypeExpansionChassis    = 0x12,\r
-  EfiMiscChassisTypeSubChassis          = 0x13,\r
-  EfiMiscChassisTypeBusExpansionChassis = 0x14,\r
-  EfiMiscChassisTypePeripheralChassis   = 0x15,\r
-  EfiMiscChassisTypeRaidChassis         = 0x16,\r
-  EfiMiscChassisTypeRackMountChassis    = 0x17,\r
-  EfiMiscChassisTypeSealedCasePc        = 0x18,\r
-  EfiMiscChassisMultiSystemChassis      = 0x19\r
-} EFI_MISC_CHASSIS_TYPE;\r
-\r
-typedef struct {\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// In MiscSubclass 0.9 specification, it has the incorrect field name "EFI_MISC_CHASSIS_TYPE".\r
-  /// Change it to "ChassisType" to pass build.\r
-  ///\r
-  UINT32                            ChassisType       :16;\r
-  UINT32                            ChassisLockPresent:1;\r
-  UINT32                            Reserved          :15;\r
-} EFI_MISC_CHASSIS_STATUS;\r
-\r
-typedef enum {\r
-  EfiChassisStateOther           = 0x01,\r
-  EfiChassisStateUnknown         = 0x02,\r
-  EfiChassisStateSafe            = 0x03,\r
-  EfiChassisStateWarning         = 0x04,\r
-  EfiChassisStateCritical        = 0x05,\r
-  EfiChassisStateNonRecoverable  = 0x06\r
-} EFI_MISC_CHASSIS_STATE;\r
-\r
-typedef enum {\r
-  EfiChassisSecurityStatusOther                          = 0x01,\r
-  EfiChassisSecurityStatusUnknown                        = 0x02,\r
-  EfiChassisSecurityStatusNone                           = 0x03,\r
-  EfiChassisSecurityStatusExternalInterfaceLockedOut     = 0x04,\r
-  EfiChassisSecurityStatusExternalInterfaceLockedEnabled = 0x05\r
-} EFI_MISC_CHASSIS_SECURITY_STATE;\r
-\r
-typedef struct {\r
-  UINT32                            RecordType :1;\r
-  UINT32                            Type       :7;\r
-  UINT32                            Reserved   :24;\r
-} EFI_MISC_ELEMENT_TYPE;\r
-\r
-typedef struct {\r
-  EFI_MISC_ELEMENT_TYPE             ChassisElementType;\r
-  EFI_INTER_LINK_DATA               ChassisElementStructure;\r
-  EFI_BASE_BOARD_TYPE               ChassisBaseBoard;\r
-  UINT32                            ChassisElementMinimum;\r
-  UINT32                            ChassisElementMaximum;\r
-} EFI_MISC_ELEMENTS;\r
-\r
-typedef struct {\r
-  STRING_REF                        ChassisManufacturer;\r
-  STRING_REF                        ChassisVersion;\r
-  STRING_REF                        ChassisSerialNumber;\r
-  STRING_REF                        ChassisAssetTag;\r
-  EFI_MISC_CHASSIS_STATUS           ChassisType;\r
-  EFI_MISC_CHASSIS_STATE            ChassisBootupState;\r
-  EFI_MISC_CHASSIS_STATE            ChassisPowerSupplyState;\r
-  EFI_MISC_CHASSIS_STATE            ChassisThermalState;\r
-  EFI_MISC_CHASSIS_SECURITY_STATE   ChassisSecurityState;\r
-  UINT32                            ChassisOemDefined;\r
-  UINT32                            ChassisHeight;\r
-  UINT32                            ChassisNumberPowerCords;\r
-  UINT32                            ChassisElementCount;\r
-  UINT32                            ChassisElementRecordLength;\r
-  EFI_MISC_ELEMENTS                 ChassisElements;\r
-} EFI_MISC_CHASSIS_MANUFACTURER_DATA;\r
-\r
-//\r
-// Misc. Port Connector Information - SMBIOS Type 8\r
-//\r
-#define EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_RECORD_NUMBER    0x00000006\r
-\r
-typedef enum {\r
-  EfiPortConnectorTypeNone                   = 0x00,\r
-  EfiPortConnectorTypeCentronics             = 0x01,\r
-  EfiPortConnectorTypeMiniCentronics         = 0x02,\r
-  EfiPortConnectorTypeProprietary            = 0x03,\r
-  EfiPortConnectorTypeDB25Male               = 0x04,\r
-  EfiPortConnectorTypeDB25Female             = 0x05,\r
-  EfiPortConnectorTypeDB15Male               = 0x06,\r
-  EfiPortConnectorTypeDB15Female             = 0x07,\r
-  EfiPortConnectorTypeDB9Male                = 0x08,\r
-  EfiPortConnectorTypeDB9Female              = 0x09,\r
-  EfiPortConnectorTypeRJ11                   = 0x0A,\r
-  EfiPortConnectorTypeRJ45                   = 0x0B,\r
-  EfiPortConnectorType50PinMiniScsi          = 0x0C,\r
-  EfiPortConnectorTypeMiniDin                = 0x0D,\r
-  EfiPortConnectorTypeMicriDin               = 0x0E,\r
-  EfiPortConnectorTypePS2                    = 0x0F,\r
-  EfiPortConnectorTypeInfrared               = 0x10,\r
-  EfiPortConnectorTypeHpHil                  = 0x11,\r
-  EfiPortConnectorTypeUsb                    = 0x12,\r
-  EfiPortConnectorTypeSsaScsi                = 0x13,\r
-  EfiPortConnectorTypeCircularDin8Male       = 0x14,\r
-  EfiPortConnectorTypeCircularDin8Female     = 0x15,\r
-  EfiPortConnectorTypeOnboardIde             = 0x16,\r
-  EfiPortConnectorTypeOnboardFloppy          = 0x17,\r
-  EfiPortConnectorType9PinDualInline         = 0x18,\r
-  EfiPortConnectorType25PinDualInline        = 0x19,\r
-  EfiPortConnectorType50PinDualInline        = 0x1A,\r
-  EfiPortConnectorType68PinDualInline        = 0x1B,\r
-  EfiPortConnectorTypeOnboardSoundInput      = 0x1C,\r
-  EfiPortConnectorTypeMiniCentronicsType14   = 0x1D,\r
-  EfiPortConnectorTypeMiniCentronicsType26   = 0x1E,\r
-  EfiPortConnectorTypeHeadPhoneMiniJack      = 0x1F,\r
-  EfiPortConnectorTypeBNC                    = 0x20,\r
-  EfiPortConnectorType1394                   = 0x21,\r
-  EfiPortConnectorTypePC98                   = 0xA0,\r
-  EfiPortConnectorTypePC98Hireso             = 0xA1,\r
-  EfiPortConnectorTypePCH98                  = 0xA2,\r
-  EfiPortConnectorTypePC98Note               = 0xA3,\r
-  EfiPortConnectorTypePC98Full               = 0xA4,\r
-  EfiPortConnectorTypeOther                  = 0xFF\r
-} EFI_MISC_PORT_CONNECTOR_TYPE;\r
-\r
-typedef enum {\r
-  EfiPortTypeNone                      = 0x00,\r
-  EfiPortTypeParallelXtAtCompatible    = 0x01,\r
-  EfiPortTypeParallelPortPs2           = 0x02,\r
-  EfiPortTypeParallelPortEcp           = 0x03,\r
-  EfiPortTypeParallelPortEpp           = 0x04,\r
-  EfiPortTypeParallelPortEcpEpp        = 0x05,\r
-  EfiPortTypeSerialXtAtCompatible      = 0x06,\r
-  EfiPortTypeSerial16450Compatible     = 0x07,\r
-  EfiPortTypeSerial16550Compatible     = 0x08,\r
-  EfiPortTypeSerial16550ACompatible    = 0x09,\r
-  EfiPortTypeScsi                      = 0x0A,\r
-  EfiPortTypeMidi                      = 0x0B,\r
-  EfiPortTypeJoyStick                  = 0x0C,\r
-  EfiPortTypeKeyboard                  = 0x0D,\r
-  EfiPortTypeMouse                     = 0x0E,\r
-  EfiPortTypeSsaScsi                   = 0x0F,\r
-  EfiPortTypeUsb                       = 0x10,\r
-  EfiPortTypeFireWire                  = 0x11,\r
-  EfiPortTypePcmciaTypeI               = 0x12,\r
-  EfiPortTypePcmciaTypeII              = 0x13,\r
-  EfiPortTypePcmciaTypeIII             = 0x14,\r
-  EfiPortTypeCardBus                   = 0x15,\r
-  EfiPortTypeAccessBusPort             = 0x16,\r
-  EfiPortTypeScsiII                    = 0x17,\r
-  EfiPortTypeScsiWide                  = 0x18,\r
-  EfiPortTypePC98                      = 0x19,\r
-  EfiPortTypePC98Hireso                = 0x1A,\r
-  EfiPortTypePCH98                     = 0x1B,\r
-  EfiPortTypeVideoPort                 = 0x1C,\r
-  EfiPortTypeAudioPort                 = 0x1D,\r
-  EfiPortTypeModemPort                 = 0x1E,\r
-  EfiPortTypeNetworkPort               = 0x1F,\r
-  EfiPortType8251Compatible            = 0xA0,\r
-  EfiPortType8251FifoCompatible        = 0xA1,\r
-  EfiPortTypeOther                     = 0xFF\r
-} EFI_MISC_PORT_TYPE;\r
-\r
-typedef struct {\r
-  STRING_REF                        PortInternalConnectorDesignator;\r
-  STRING_REF                        PortExternalConnectorDesignator;\r
-  EFI_MISC_PORT_CONNECTOR_TYPE      PortInternalConnectorType;\r
-  EFI_MISC_PORT_CONNECTOR_TYPE      PortExternalConnectorType;\r
-  EFI_MISC_PORT_TYPE                PortType;\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// In MiscSubclass specification 0.9, this type of field is defined as EFI_DEVICE_PATH_PROTOCOL,\r
-  /// which causes the implementation some complexity. Keep it unchanged for backward\r
-  /// compatibility.\r
-  ///\r
-  EFI_MISC_PORT_DEVICE_PATH         PortPath;\r
-} EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA;\r
-\r
-//\r
-// Misc. System Slots - SMBIOS Type 9\r
-//\r
-#define EFI_MISC_SYSTEM_SLOT_DESIGNATION_RECORD_NUMBER    0x00000007\r
-\r
-typedef enum {\r
-  EfiSlotTypeOther                        = 0x01,\r
-  EfiSlotTypeUnknown                      = 0x02,\r
-  EfiSlotTypeIsa                          = 0x03,\r
-  EfiSlotTypeMca                          = 0x04,\r
-  EfiSlotTypeEisa                         = 0x05,\r
-  EfiSlotTypePci                          = 0x06,\r
-  EfiSlotTypePcmcia                       = 0x07,\r
-  EfiSlotTypeVlVesa                       = 0x08,\r
-  EfiSlotTypeProprietary                  = 0x09,\r
-  EfiSlotTypeProcessorCardSlot            = 0x0A,\r
-  EfiSlotTypeProprietaryMemoryCardSlot    = 0x0B,\r
-  EfiSlotTypeIORiserCardSlot              = 0x0C,\r
-  EfiSlotTypeNuBus                        = 0x0D,\r
-  EfiSlotTypePci66MhzCapable              = 0x0E,\r
-  EfiSlotTypeAgp                          = 0x0F,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// In MiscSubclass specification 0.9, its naming should be EfiSlotTypeAgp2X\r
-  /// rather than EfiSlotTypeApg2X.\r
-  ///\r
-  EfiSlotTypeAgp2X                        = 0x10,\r
-  EfiSlotTypeAgp4X                        = 0x11,\r
-  EfiSlotTypePciX                         = 0x12,\r
-  EfiSlotTypeAgp8x                        = 0x13,\r
-  EfiSlotTypePC98C20                      = 0xA0,\r
-  EfiSlotTypePC98C24                      = 0xA1,\r
-  EfiSlotTypePC98E                        = 0xA2,\r
-  EfiSlotTypePC98LocalBus                 = 0xA3,\r
-  EfiSlotTypePC98Card                     = 0xA4,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// In MiscSubclass specification 0.9, these fields aren't defined.\r
-  /// They're introduced for SmBios 2.6 specification type 9.\r
-  ///\r
-  EfiSlotTypePciExpress                   = 0xA5,\r
-  EfiSlotTypePciExpressX1                 = 0xA6,\r
-  EfiSlotTypePciExpressX2                 = 0xA7,\r
-  EfiSlotTypePciExpressX4                 = 0xA8,\r
-  EfiSlotTypePciExpressX8                 = 0xA9,\r
-  EfiSlotTypePciExpressX16                = 0xAA\r
-} EFI_MISC_SLOT_TYPE;\r
-\r
-typedef enum {\r
-  EfiSlotDataBusWidthOther      = 0x01,\r
-  EfiSlotDataBusWidthUnknown    = 0x02,\r
-  EfiSlotDataBusWidth8Bit       = 0x03,\r
-  EfiSlotDataBusWidth16Bit      = 0x04,\r
-  EfiSlotDataBusWidth32Bit      = 0x05,\r
-  EfiSlotDataBusWidth64Bit      = 0x06,\r
-  EfiSlotDataBusWidth128Bit     = 0x07,\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// In MiscSubclass specification 0.9, these fields aren't defined.\r
-  /// They're introduced for SmBios 2.6 specification type 9.\r
-  ///\r
-  EfiSlotDataBusWidth1xOrx1     = 0x8,\r
-  EfiSlotDataBusWidth2xOrx2     = 0x9,\r
-  EfiSlotDataBusWidth4xOrx4     = 0xA,\r
-  EfiSlotDataBusWidth8xOrx8     = 0xB,\r
-  EfiSlotDataBusWidth12xOrx12   = 0xC,\r
-  EfiSlotDataBusWidth16xOrx16   = 0xD,\r
-  EfiSlotDataBusWidth32xOrx32   = 0xE\r
-} EFI_MISC_SLOT_DATA_BUS_WIDTH;\r
-\r
-typedef enum {\r
-  EfiSlotUsageOther     = 1,\r
-  EfiSlotUsageUnknown   = 2,\r
-  EfiSlotUsageAvailable = 3,\r
-  EfiSlotUsageInUse     = 4\r
-} EFI_MISC_SLOT_USAGE;\r
-\r
-typedef enum {\r
-  EfiSlotLengthOther   = 1,\r
-  EfiSlotLengthUnknown = 2,\r
-  EfiSlotLengthShort   = 3,\r
-  EfiSlotLengthLong    = 4\r
-} EFI_MISC_SLOT_LENGTH;\r
-\r
-typedef struct {\r
-  UINT32                            CharacteristicsUnknown  :1;\r
-  UINT32                            Provides50Volts         :1;\r
-  UINT32                            Provides33Volts         :1;\r
-  UINT32                            SharedSlot              :1;\r
-  UINT32                            PcCard16Supported       :1;\r
-  UINT32                            CardBusSupported        :1;\r
-  UINT32                            ZoomVideoSupported      :1;\r
-  UINT32                            ModemRingResumeSupported:1;\r
-  UINT32                            PmeSignalSupported      :1;\r
-  UINT32                            HotPlugDevicesSupported :1;\r
-  UINT32                            SmbusSignalSupported    :1;\r
-  UINT32                            Reserved                :21;\r
-} EFI_MISC_SLOT_CHARACTERISTICS;\r
-\r
-typedef struct {\r
-  STRING_REF                        SlotDesignation;\r
-  EFI_MISC_SLOT_TYPE                SlotType;\r
-  EFI_MISC_SLOT_DATA_BUS_WIDTH      SlotDataBusWidth;\r
-  EFI_MISC_SLOT_USAGE               SlotUsage;\r
-  EFI_MISC_SLOT_LENGTH              SlotLength;\r
-  UINT16                            SlotId;\r
-  EFI_MISC_SLOT_CHARACTERISTICS     SlotCharacteristics;\r
-  EFI_DEVICE_PATH_PROTOCOL          SlotDevicePath;\r
-} EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA;\r
-\r
-//\r
-// Misc. Onboard Device - SMBIOS Type 10\r
-//\r
-#define EFI_MISC_ONBOARD_DEVICE_RECORD_NUMBER    0x00000008\r
-\r
-typedef enum {\r
-  EfiOnBoardDeviceTypeOther          = 1,\r
-  EfiOnBoardDeviceTypeUnknown        = 2,\r
-  EfiOnBoardDeviceTypeVideo          = 3,\r
-  EfiOnBoardDeviceTypeScsiController = 4,\r
-  EfiOnBoardDeviceTypeEthernet       = 5,\r
-  EfiOnBoardDeviceTypeTokenRing      = 6,\r
-  EfiOnBoardDeviceTypeSound          = 7\r
-} EFI_MISC_ONBOARD_DEVICE_TYPE;\r
-\r
-typedef struct {\r
-  UINT32                            DeviceType    :16;\r
-  UINT32                            DeviceEnabled :1;\r
-  UINT32                            Reserved      :15;\r
-} EFI_MISC_ONBOARD_DEVICE_STATUS;\r
-\r
-typedef struct {\r
-  STRING_REF                        OnBoardDeviceDescription;\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// In MiscSubclass specification 0.9, the name is OnBoardDeviceType.\r
-  /// Keep it unchanged for backward compatibilty.\r
-  ///\r
-  EFI_MISC_ONBOARD_DEVICE_STATUS    OnBoardDeviceStatus;\r
-  EFI_DEVICE_PATH_PROTOCOL          OnBoardDevicePath;\r
-} EFI_MISC_ONBOARD_DEVICE_DATA;\r
-\r
-//\r
-// Misc. BIOS Language Information - SMBIOS Type 11\r
-//\r
-#define EFI_MISC_OEM_STRING_RECORD_NUMBER    0x00000009\r
-\r
-typedef struct {\r
-  STRING_REF                        OemStringRef[1];\r
-} EFI_MISC_OEM_STRING_DATA;\r
-\r
-//\r
-// Misc. System Options - SMBIOS Type 12\r
-//\r
-typedef struct {\r
-  STRING_REF                        SystemOptionStringRef[1];\r
-} EFI_MISC_SYSTEM_OPTION_STRING_DATA;\r
-\r
-#define EFI_MISC_SYSTEM_OPTION_STRING_RECORD_NUMBER    0x0000000A\r
-\r
-//\r
-// Misc. Number of Installable Languages - SMBIOS Type 13\r
-//\r
-#define EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_RECORD_NUMBER    0x0000000B\r
-\r
-typedef struct {\r
-  UINT32                            AbbreviatedLanguageFormat :1;\r
-  UINT32                            Reserved                  :31;\r
-} EFI_MISC_LANGUAGE_FLAGS;\r
-\r
-typedef struct {\r
-  UINT16                            NumberOfInstallableLanguages;\r
-  EFI_MISC_LANGUAGE_FLAGS           LanguageFlags;\r
-  UINT16                            CurrentLanguageNumber;\r
-} EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA;\r
-\r
-//\r
-// Misc. System Language String\r
-//\r
-#define EFI_MISC_SYSTEM_LANGUAGE_STRING_RECORD_NUMBER    0x0000000C\r
-\r
-typedef struct {\r
-  UINT16                            LanguageId;\r
-  STRING_REF                        SystemLanguageString;\r
-} EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA;\r
-\r
-//\r
-// Group Associations - SMBIOS Type 14\r
-//\r
-#define EFI_MISC_GROUP_NAME_RECORD_NUMBER    0x0000000D\r
-\r
-typedef struct {\r
-  STRING_REF                        GroupName;\r
-  UINT16                            NumberGroupItems;\r
-  UINT16                            GroupId;\r
-} EFI_MISC_GROUP_NAME_DATA;\r
-\r
-//\r
-// Group Item Set Element\r
-//\r
-#define EFI_MISC_GROUP_ITEM_SET_RECORD_NUMBER    0x0000000E\r
-\r
-typedef struct {\r
-  EFI_GUID                          SubClass;\r
-  EFI_INTER_LINK_DATA               GroupLink;\r
-  UINT16                            GroupId;\r
-  UINT16                            GroupElementId;\r
-} EFI_MISC_GROUP_ITEM_SET_DATA;\r
-\r
-//\r
-//  Misc. Pointing Device Type - SMBIOS Type 21\r
-//\r
-#define EFI_MISC_POINTING_DEVICE_TYPE_RECORD_NUMBER    0x0000000F\r
-\r
-typedef enum {\r
-  EfiPointingDeviceTypeOther         = 0x01,\r
-  EfiPointingDeviceTypeUnknown       = 0x02,\r
-  EfiPointingDeviceTypeMouse         = 0x03,\r
-  EfiPointingDeviceTypeTrackBall     = 0x04,\r
-  EfiPointingDeviceTypeTrackPoint    = 0x05,\r
-  EfiPointingDeviceTypeGlidePoint    = 0x06,\r
-  EfiPointingDeviceTouchPad          = 0x07,\r
-  EfiPointingDeviceTouchScreen       = 0x08,\r
-  EfiPointingDeviceOpticalSensor     = 0x09\r
-} EFI_MISC_POINTING_DEVICE_TYPE;\r
-\r
-typedef enum {\r
-  EfiPointingDeviceInterfaceOther              = 0x01,\r
-  EfiPointingDeviceInterfaceUnknown            = 0x02,\r
-  EfiPointingDeviceInterfaceSerial             = 0x03,\r
-  EfiPointingDeviceInterfacePs2                = 0x04,\r
-  EfiPointingDeviceInterfaceInfrared           = 0x05,\r
-  EfiPointingDeviceInterfaceHpHil              = 0x06,\r
-  EfiPointingDeviceInterfaceBusMouse           = 0x07,\r
-  EfiPointingDeviceInterfaceADB                = 0x08,\r
-  EfiPointingDeviceInterfaceBusMouseDB9        = 0xA0,\r
-  EfiPointingDeviceInterfaceBusMouseMicroDin   = 0xA1,\r
-  EfiPointingDeviceInterfaceUsb                = 0xA2\r
-} EFI_MISC_POINTING_DEVICE_INTERFACE;\r
-\r
-typedef struct {\r
-  EFI_MISC_POINTING_DEVICE_TYPE       PointingDeviceType;\r
-  EFI_MISC_POINTING_DEVICE_INTERFACE  PointingDeviceInterface;\r
-  UINT16                              NumberPointingDeviceButtons;\r
-  EFI_DEVICE_PATH_PROTOCOL            PointingDevicePath;\r
-} EFI_MISC_POINTING_DEVICE_TYPE_DATA;\r
-\r
-//\r
-// Portable Battery - SMBIOS Type 22\r
-//\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MiscSubclass specification 0.9, the name is EFI_MISC_BATTERY_LOCATION_RECORD_NUMBER.\r
-/// Keep it unchanged for backward compatibilty.\r
-///\r
-#define EFI_MISC_PORTABLE_BATTERY_RECORD_NUMBER   0x00000010\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MiscSubclass specification 0.9, the structure name is EFI_MISC_BATTERY_DEVICE_CHEMISTRY.\r
-/// And all field namings are also different with specification.\r
-/// Keep it unchanged for backward compatibilty.\r
-///\r
-typedef enum {\r
-  EfiPortableBatteryDeviceChemistryOther = 1,\r
-  EfiPortableBatteryDeviceChemistryUnknown = 2,\r
-  EfiPortableBatteryDeviceChemistryLeadAcid = 3,\r
-  EfiPortableBatteryDeviceChemistryNickelCadmium = 4,\r
-  EfiPortableBatteryDeviceChemistryNickelMetalHydride = 5,\r
-  EfiPortableBatteryDeviceChemistryLithiumIon = 6,\r
-  EfiPortableBatteryDeviceChemistryZincAir = 7,\r
-  EfiPortableBatteryDeviceChemistryLithiumPolymer = 8\r
-} EFI_MISC_PORTABLE_BATTERY_DEVICE_CHEMISTRY;\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MiscSubclass specification 0.9, the structure name is EFI_MISC_BATTERY_LOCATION_DATA.\r
-/// Also, the name and the order of the fields vary with specifications.\r
-/// Keep it unchanged for backward compatibilty.\r
-///\r
-typedef struct {\r
-  STRING_REF                        Location;\r
-  STRING_REF                        Manufacturer;\r
-  STRING_REF                        ManufactureDate;\r
-  STRING_REF                        SerialNumber;\r
-  STRING_REF                        DeviceName;\r
-  EFI_MISC_PORTABLE_BATTERY_DEVICE_CHEMISTRY\r
-                                    DeviceChemistry;\r
-  UINT16                            DesignCapacity;\r
-  UINT16                            DesignVoltage;\r
-  STRING_REF                        SBDSVersionNumber;\r
-  UINT8                             MaximumError;\r
-  UINT16                            SBDSSerialNumber;\r
-  UINT16                            SBDSManufactureDate;\r
-  STRING_REF                        SBDSDeviceChemistry;\r
-  UINT8                             DesignCapacityMultiplier;\r
-  UINT32                            OEMSpecific;\r
-  UINT8                             BatteryNumber; // Temporary\r
-  BOOLEAN                           Valid; // Is entry valid - Temporary\r
-} EFI_MISC_PORTABLE_BATTERY;\r
-\r
-\r
-//\r
-// Misc. Reset Capabilities - SMBIOS Type 23\r
-//\r
-#define EFI_MISC_RESET_CAPABILITIES_RECORD_NUMBER    0x00000011\r
-\r
-typedef struct {\r
-  UINT32                            Status              :1;\r
-  UINT32                            BootOption          :2;\r
-  UINT32                            BootOptionOnLimit   :2;\r
-  UINT32                            WatchdogTimerPresent:1;\r
-  UINT32                            Reserved            :26;\r
-} EFI_MISC_RESET_CAPABILITIES_TYPE;\r
-\r
-typedef struct {\r
-  EFI_MISC_RESET_CAPABILITIES_TYPE  ResetCapabilities;\r
-  UINT16                            ResetCount;\r
-  UINT16                            ResetLimit;\r
-  UINT16                            ResetTimerInterval;\r
-  UINT16                            ResetTimeout;\r
-} EFI_MISC_RESET_CAPABILITIES;\r
-\r
-typedef struct {\r
-    EFI_MISC_RESET_CAPABILITIES     ResetCapabilities;\r
-    UINT16                          ResetCount;\r
-    UINT16                          ResetLimit;\r
-    UINT16                          ResetTimerInterval;\r
-    UINT16                          ResetTimeout;\r
-} EFI_MISC_RESET_CAPABILITIES_DATA;\r
-\r
-//\r
-// Misc. Hardware Security - SMBIOS Type 24\r
-//\r
-#define EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA_RECORD_NUMBER    0x00000012\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// The MiscSubclass specification 0.9 only mentions the possible value of each field in\r
-/// EFI_MISC_HARDWARE_SECURITY_SETTINGS.\r
-/// It's implementation-specific in order to to simplify the code logic.\r
-///\r
-typedef enum {\r
-  EfiHardwareSecurityStatusDisabled       = 0,\r
-  EfiHardwareSecurityStatusEnabled        = 1,\r
-  EfiHardwareSecurityStatusNotImplemented = 2,\r
-  EfiHardwareSecurityStatusUnknown        = 3\r
-} EFI_MISC_HARDWARE_SECURITY_STATUS;\r
-\r
-typedef struct {\r
-  UINT32 FrontPanelResetStatus       :2;\r
-  UINT32 AdministratorPasswordStatus :2;\r
-  UINT32 KeyboardPasswordStatus      :2;\r
-  UINT32 PowerOnPasswordStatus       :2;\r
-  UINT32 Reserved                    :24;\r
-} EFI_MISC_HARDWARE_SECURITY_SETTINGS;\r
-\r
-typedef struct {\r
-  EFI_MISC_HARDWARE_SECURITY_SETTINGS HardwareSecuritySettings;\r
-} EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA;\r
-\r
-//\r
-// System Power Controls - SMBIOS Type 25\r
-//\r
-#define EFI_MISC_SCHEDULED_POWER_ON_MONTH_RECORD_NUMBER    0x00000013\r
-\r
-typedef struct {\r
-  UINT16                            ScheduledPoweronMonth;\r
-  UINT16                            ScheduledPoweronDayOfMonth;\r
-  UINT16                            ScheduledPoweronHour;\r
-  UINT16                            ScheduledPoweronMinute;\r
-  UINT16                            ScheduledPoweronSecond;\r
-} EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA;\r
-\r
-//\r
-// Voltage Probe - SMBIOS Type 26\r
-//\r
-#define EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_RECORD_NUMBER    0x00000014\r
-\r
-typedef struct {\r
-  UINT32                            VoltageProbeSite        :5;\r
-  UINT32                            VoltageProbeStatus      :3;\r
-  UINT32                            Reserved                :24;\r
-} EFI_MISC_VOLTAGE_PROBE_LOCATION;\r
-\r
-typedef struct {\r
-  STRING_REF                        VoltageProbeDescription;\r
-  EFI_MISC_VOLTAGE_PROBE_LOCATION   VoltageProbeLocation;\r
-  EFI_EXP_BASE10_DATA               VoltageProbeMaximumValue;\r
-  EFI_EXP_BASE10_DATA               VoltageProbeMinimumValue;\r
-  EFI_EXP_BASE10_DATA               VoltageProbeResolution;\r
-  EFI_EXP_BASE10_DATA               VoltageProbeTolerance;\r
-  EFI_EXP_BASE10_DATA               VoltageProbeAccuracy;\r
-  EFI_EXP_BASE10_DATA               VoltageProbeNominalValue;\r
-  EFI_EXP_BASE10_DATA               MDLowerNoncriticalThreshold;\r
-  EFI_EXP_BASE10_DATA               MDUpperNoncriticalThreshold;\r
-  EFI_EXP_BASE10_DATA               MDLowerCriticalThreshold;\r
-  EFI_EXP_BASE10_DATA               MDUpperCriticalThreshold;\r
-  EFI_EXP_BASE10_DATA               MDLowerNonrecoverableThreshold;\r
-  EFI_EXP_BASE10_DATA               MDUpperNonrecoverableThreshold;\r
-  UINT32                            VoltageProbeOemDefined;\r
-} EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_DATA;\r
-\r
-//\r
-// Cooling Device - SMBIOS Type 27\r
-//\r
-#define EFI_MISC_COOLING_DEVICE_TEMP_LINK_RECORD_NUMBER    0x00000015\r
-\r
-typedef struct {\r
-  UINT32                            CoolingDevice       :5;\r
-  UINT32                            CoolingDeviceStatus :3;\r
-  UINT32                            Reserved            :24;\r
-} EFI_MISC_COOLING_DEVICE_TYPE;\r
-\r
-typedef struct {\r
-  EFI_MISC_COOLING_DEVICE_TYPE      CoolingDeviceType;\r
-  EFI_INTER_LINK_DATA               CoolingDeviceTemperatureLink;\r
-  UINT8                             CoolingDeviceUnitGroup;\r
-  UINT16                            CoolingDeviceNominalSpeed;\r
-  UINT32                            CoolingDeviceOemDefined;\r
-} EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA;\r
-\r
-//\r
-// Temperature Probe - SMBIOS Type 28\r
-//\r
-#define EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_RECORD_NUMBER    0x00000016\r
-\r
-typedef struct {\r
-  UINT32                            TemperatureProbeSite   :5;\r
-  UINT32                            TemperatureProbeStatus :3;\r
-  UINT32                            Reserved               :24;\r
-} EFI_MISC_TEMPERATURE_PROBE_LOCATION;\r
-\r
-typedef struct {\r
-  STRING_REF                        TemperatureProbeDescription;\r
-  EFI_MISC_TEMPERATURE_PROBE_LOCATION\r
-                                    TemperatureProbeLocation;\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// MiscSubclass 0.9 specification defines the fields type as EFI_EXP_BASE10_DATA.\r
-  /// In fact, they should be UINT16 type because they refer to 16bit width data.\r
-  /// Keeping this inconsistency for backward compatibility.\r
-  ///\r
-  UINT16                            TemperatureProbeMaximumValue;\r
-  UINT16                            TemperatureProbeMinimumValue;\r
-  UINT16                            TemperatureProbeResolution;\r
-  UINT16                            TemperatureProbeTolerance;\r
-  UINT16                            TemperatureProbeAccuracy;\r
-  UINT16                            TemperatureProbeNominalValue;\r
-  UINT16                            MDLowerNoncriticalThreshold;\r
-  UINT16                            MDUpperNoncriticalThreshold;\r
-  UINT16                            MDLowerCriticalThreshold;\r
-  UINT16                            MDUpperCriticalThreshold;\r
-  UINT16                            MDLowerNonrecoverableThreshold;\r
-  UINT16                            MDUpperNonrecoverableThreshold;\r
-  UINT32                            TemperatureProbeOemDefined;\r
-} EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA;\r
-\r
-//\r
-// Electrical Current Probe - SMBIOS Type 29\r
-//\r
-\r
-#define EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_RECORD_NUMBER    0x00000017\r
-\r
-typedef struct {\r
-  UINT32                            ElectricalCurrentProbeSite    :5;\r
-  UINT32                            ElectricalCurrentProbeStatus  :3;\r
-  UINT32                            Reserved                      :24;\r
-} EFI_MISC_ELECTRICAL_CURRENT_PROBE_LOCATION;\r
-\r
-typedef struct {\r
-  STRING_REF                        ElectricalCurrentProbeDescription;\r
-  EFI_MISC_ELECTRICAL_CURRENT_PROBE_LOCATION\r
-                                    ElectricalCurrentProbeLocation;\r
-  EFI_EXP_BASE10_DATA               ElectricalCurrentProbeMaximumValue;\r
-  EFI_EXP_BASE10_DATA               ElectricalCurrentProbeMinimumValue;\r
-  EFI_EXP_BASE10_DATA               ElectricalCurrentProbeResolution;\r
-  EFI_EXP_BASE10_DATA               ElectricalCurrentProbeTolerance;\r
-  EFI_EXP_BASE10_DATA               ElectricalCurrentProbeAccuracy;\r
-  EFI_EXP_BASE10_DATA               ElectricalCurrentProbeNominalValue;\r
-  EFI_EXP_BASE10_DATA               MDLowerNoncriticalThreshold;\r
-  EFI_EXP_BASE10_DATA               MDUpperNoncriticalThreshold;\r
-  EFI_EXP_BASE10_DATA               MDLowerCriticalThreshold;\r
-  EFI_EXP_BASE10_DATA               MDUpperCriticalThreshold;\r
-  EFI_EXP_BASE10_DATA               MDLowerNonrecoverableThreshold;\r
-  EFI_EXP_BASE10_DATA               MDUpperNonrecoverableThreshold;\r
-  UINT32                            ElectricalCurrentProbeOemDefined;\r
-} EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA;\r
-\r
-//\r
-// Out-of-Band Remote Access - SMBIOS Type 30\r
-//\r
-\r
-#define EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_RECORD_NUMBER    0x00000018\r
-\r
-typedef struct  {\r
-  UINT32                            InboundConnectionEnabled  :1;\r
-  UINT32                            OutboundConnectionEnabled :1;\r
-  UINT32                            Reserved                  :30;\r
-} EFI_MISC_REMOTE_ACCESS_CONNECTIONS;\r
-\r
-typedef struct {\r
-  STRING_REF                         RemoteAccessManufacturerNameDescription;\r
-  EFI_MISC_REMOTE_ACCESS_CONNECTIONS RemoteAccessConnections;\r
-} EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA;\r
-\r
-//\r
-// Misc. BIS Entry Point - SMBIOS Type 31\r
-//\r
-#define EFI_MISC_BIS_ENTRY_POINT_RECORD_NUMBER    0x00000019\r
-\r
-typedef struct {\r
-  EFI_PHYSICAL_ADDRESS              BisEntryPoint;\r
-} EFI_MISC_BIS_ENTRY_POINT_DATA;\r
-\r
-//\r
-// Misc. Boot Information - SMBIOS Type 32\r
-//\r
-#define EFI_MISC_BOOT_INFORMATION_STATUS_RECORD_NUMBER    0x0000001A\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MiscSubclass specification 0.9, the structure name is EFI_MISC_BOOT_INFORMATION_STATUS_TYPE.\r
-/// Keep it unchanged for backward compatibilty.\r
-///\r
-typedef enum {\r
-  EfiBootInformationStatusNoError                  = 0x00,\r
-  EfiBootInformationStatusNoBootableMedia          = 0x01,\r
-  EfiBootInformationStatusNormalOSFailedLoading    = 0x02,\r
-  EfiBootInformationStatusFirmwareDetectedFailure  = 0x03,\r
-  EfiBootInformationStatusOSDetectedFailure        = 0x04,\r
-  EfiBootInformationStatusUserRequestedBoot        = 0x05,\r
-  EfiBootInformationStatusSystemSecurityViolation  = 0x06,\r
-  EfiBootInformationStatusPreviousRequestedImage   = 0x07,\r
-  EfiBootInformationStatusWatchdogTimerExpired     = 0x08,\r
-  EfiBootInformationStatusStartReserved            = 0x09,\r
-  EfiBootInformationStatusStartOemSpecific         = 0x80,\r
-  EfiBootInformationStatusStartProductSpecific     = 0xC0\r
-} EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE;\r
-\r
-typedef struct {\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// In MiscSubclass specification 0.9, the field name is EFI_MISC_BOOT_INFORMATION_STATUS_TYPE.\r
-  /// Keep it unchanged for backward compatibilty.\r
-  ///\r
-  EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE BootInformationStatus;\r
-  UINT8                                      BootInformationData[9];\r
-} EFI_MISC_BOOT_INFORMATION_STATUS_DATA;\r
-\r
-//\r
-// Management Device - SMBIOS Type 34\r
-//\r
-#define EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_RECORD_NUMBER    0x0000001B\r
-\r
-typedef enum {\r
-  EfiManagementDeviceTypeOther      = 0x01,\r
-  EfiManagementDeviceTypeUnknown    = 0x02,\r
-  EfiManagementDeviceTypeLm75       = 0x03,\r
-  EfiManagementDeviceTypeLm78       = 0x04,\r
-  EfiManagementDeviceTypeLm79       = 0x05,\r
-  EfiManagementDeviceTypeLm80       = 0x06,\r
-  EfiManagementDeviceTypeLm81       = 0x07,\r
-  EfiManagementDeviceTypeAdm9240    = 0x08,\r
-  EfiManagementDeviceTypeDs1780     = 0x09,\r
-  EfiManagementDeviceTypeMaxim1617  = 0x0A,\r
-  EfiManagementDeviceTypeGl518Sm    = 0x0B,\r
-  EfiManagementDeviceTypeW83781D    = 0x0C,\r
-  EfiManagementDeviceTypeHt82H791   = 0x0D\r
-} EFI_MISC_MANAGEMENT_DEVICE_TYPE;\r
-\r
-typedef enum {\r
-  EfiManagementDeviceAddressTypeOther   = 1,\r
-  EfiManagementDeviceAddressTypeUnknown = 2,\r
-  EfiManagementDeviceAddressTypeIOPort  = 3,\r
-  EfiManagementDeviceAddressTypeMemory  = 4,\r
-  EfiManagementDeviceAddressTypeSmbus   = 5\r
-} EFI_MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE;\r
-\r
-typedef struct {\r
-  STRING_REF                        ManagementDeviceDescription;\r
-  EFI_MISC_MANAGEMENT_DEVICE_TYPE   ManagementDeviceType;\r
-  UINTN                             ManagementDeviceAddress;\r
-  EFI_MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE\r
-                                    ManagementDeviceAddressType;\r
-} EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA;\r
-\r
-//\r
-// Management Device Component - SMBIOS Type 35\r
-//\r
-\r
-#define EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_RECORD_NUMBER    0x0000001C\r
-\r
-typedef struct {\r
-  STRING_REF                        ManagementDeviceComponentDescription;\r
-  EFI_INTER_LINK_DATA               ManagementDeviceLink;\r
-  EFI_INTER_LINK_DATA               ManagementDeviceComponentLink;\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// In MiscSubclass specification 0.9, this field is NOT defined.\r
-  /// It's introduced for SmBios 2.6 specification type 35.\r
-  ///\r
-  EFI_INTER_LINK_DATA               ManagementDeviceThresholdLink;\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// In MiscSubclass specification 0.9, this field is NOT defined.\r
-  /// It's implementation-specific to simplify the code logic.\r
-  ///\r
-  UINT8                             ComponentType;\r
-} EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA;\r
-\r
-//\r
-// IPMI Data Record - SMBIOS Type 38\r
-//\r
-typedef enum {\r
-  EfiIpmiOther = 0,\r
-  EfiIpmiKcs   = 1,\r
-  EfiIpmiSmic  = 2,\r
-  EfiIpmiBt    = 3\r
-} EFI_MISC_IPMI_INTERFACE_TYPE;\r
-\r
-typedef struct {\r
-  UINT16                            IpmiSpecLeastSignificantDigit:4;\r
-  UINT16                            IpmiSpecMostSignificantDigit: 4;\r
-  UINT16                            Reserved:                     8;\r
-} EFI_MISC_IPMI_SPECIFICATION_REVISION;\r
-\r
-typedef struct {\r
-  EFI_MISC_IPMI_INTERFACE_TYPE      IpmiInterfaceType;\r
-  EFI_MISC_IPMI_SPECIFICATION_REVISION\r
-                                    IpmiSpecificationRevision;\r
-  UINT16                            IpmiI2CSlaveAddress;\r
-  UINT16                            IpmiNvDeviceAddress;\r
-  UINT64                            IpmiBaseAddress;\r
-  EFI_DEVICE_PATH_PROTOCOL          IpmiDevicePath;\r
-} EFI_MISC_IPMI_INTERFACE_TYPE_DATA;\r
-\r
-#define EFI_MISC_IPMI_INTERFACE_TYPE_RECORD_NUMBER    0x0000001D\r
-///\r
-/// The definition above is *NOT* defined in MiscSubclass specifications 0.9.\r
-/// It's defined for backward compatibility.\r
-///\r
-#define EFI_MISC_IPMI_INTERFACE_TYPE_DATA_RECORD_NUMBER EFI_MISC_IPMI_INTERFACE_TYPE_RECORD_NUMBER\r
-\r
-///\r
-/// System Power supply Record - SMBIOS Type 39\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MiscSubclass specification 0.9, the type of all fields are UINT32.\r
-/// Keep it unchanged for backward compatibilty.\r
-///\r
-typedef struct {\r
-  UINT16                            PowerSupplyHotReplaceable:1;\r
-  UINT16                            PowerSupplyPresent       :1;\r
-  UINT16                            PowerSupplyUnplugged     :1;\r
-  UINT16                            InputVoltageRangeSwitch  :4;\r
-  UINT16                            PowerSupplyStatus        :3;\r
-  UINT16                            PowerSupplyType          :4;\r
-  UINT16                            Reserved                 :2;\r
-} EFI_MISC_POWER_SUPPLY_CHARACTERISTICS;\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MiscSubclass specification 0.9, the structure name is EFI_MISC_POWER_SUPPLY_UNIT_GROUP_DATA.\r
-/// Keep it unchanged for backward compatibilty.\r
-///\r
-typedef struct {\r
-  UINT16                                 PowerUnitGroup;\r
-  STRING_REF                             PowerSupplyLocation;\r
-  STRING_REF                             PowerSupplyDeviceName;\r
-  STRING_REF                             PowerSupplyManufacturer;\r
-  STRING_REF                             PowerSupplySerialNumber;\r
-  STRING_REF                             PowerSupplyAssetTagNumber;\r
-  STRING_REF                             PowerSupplyModelPartNumber;\r
-  STRING_REF                             PowerSupplyRevisionLevel;\r
-  UINT16                                 PowerSupplyMaxPowerCapacity;\r
-  EFI_MISC_POWER_SUPPLY_CHARACTERISTICS  PowerSupplyCharacteristics;\r
-  EFI_INTER_LINK_DATA                    PowerSupplyInputVoltageProbeLink;\r
-  EFI_INTER_LINK_DATA                    PowerSupplyCoolingDeviceLink;\r
-  EFI_INTER_LINK_DATA                    PowerSupplyInputCurrentProbeLink;\r
-} EFI_MISC_SYSTEM_POWER_SUPPLY_DATA;\r
-\r
-#define EFI_MISC_SYSTEM_POWER_SUPPLY_RECORD_NUMBER    0x0000001E\r
-\r
-///\r
-/// OEM Data Record - SMBIOS Type 0x80-0xFF\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MiscSubclass specification 0.9, the structure name is EFI_SMBIOS_STRUCTURE_HDR.\r
-/// Due to this, the structure is commonly used by vendors to construct SmBios type 0x80~0xFF table,\r
-/// Keep it unchanged for backward compatibilty.\r
-///\r
-typedef struct {\r
-  UINT8                             Type;\r
-  UINT8                             Length;\r
-  UINT16                            Handle;\r
-} SMBIOS_STRUCTURE_HDR;\r
-\r
-typedef struct {\r
-  ///\r
-  /// Inconsistent with specification here:\r
-  /// In MiscSubclass specification 0.9, the field name is EFI_SMBIOS_STRUCTURE_HDR.\r
-  /// Keep it unchanged for backward compatibilty.\r
-  ///\r
-  SMBIOS_STRUCTURE_HDR              Header;\r
-  UINT8                             RawData[1];\r
-} EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA;\r
-\r
-#define EFI_MISC_SMBIOS_STRUCT_ENCAP_RECORD_NUMBER    0x0000001F\r
-\r
-///\r
-/// Misc. System Event Log  - SMBIOS Type 15\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MiscSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 specification type 15.\r
-///\r
-#define EFI_MISC_SYSTEM_EVENT_LOG_RECORD_NUMBER    0x00000020\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MiscSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 specification type 15.\r
-///\r
-typedef struct {\r
-  UINT16                            LogAreaLength;\r
-  UINT16                            LogHeaderStartOffset;\r
-  UINT16                            LogDataStartOffset;\r
-  UINT8                             AccessMethod;\r
-  UINT8                             LogStatus;\r
-  UINT32                            LogChangeToken;\r
-  UINT32                            AccessMethodAddress;\r
-  UINT8                             LogHeaderFormat;\r
-  UINT8                             NumberOfSupportedLogType;\r
-  UINT8                             LengthOfLogDescriptor;\r
-} EFI_MISC_SYSTEM_EVENT_LOG_DATA;\r
-\r
-//\r
-// Access Method.\r
-//  0x00~0x04:  as following definition\r
-//  0x05~0x7f:  Available for future assignment.\r
-//  0x80~0xff:  BIOS Vendor/OEM-specific.\r
-//\r
-#define ACCESS_INDEXIO_1INDEX8BIT_DATA8BIT    0x00\r
-#define ACCESS_INDEXIO_2INDEX8BIT_DATA8BIT    0X01\r
-#define ACCESS_INDEXIO_1INDEX16BIT_DATA8BIT   0X02\r
-#define ACCESS_MEMORY_MAPPED                  0x03\r
-#define ACCESS_GPNV                           0x04\r
-\r
-///\r
-/// Management Device Threshold Data Record - SMBIOS Type 36\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MiscSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 specification type 36.\r
-///\r
-#define EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD_RECORD_NUMBER    0x00000021\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MiscSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 specification type 36.\r
-///\r
-typedef struct {\r
-  UINT16                            LowerThresNonCritical;\r
-  UINT16                            UpperThresNonCritical;\r
-  UINT16                            LowerThresCritical;\r
-  UINT16                            UpperThresCritical;\r
-  UINT16                            LowerThresNonRecover;\r
-  UINT16                            UpperThresNonRecover;\r
-} EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD;\r
-\r
-//\r
-// Declare the following strutures alias to use them more conviniently.\r
-//\r
-typedef EFI_MISC_LAST_PCI_BUS_DATA                        EFI_MISC_LAST_PCI_BUS;\r
-typedef EFI_MISC_BIOS_VENDOR_DATA                         EFI_MISC_BIOS_VENDOR;\r
-typedef EFI_MISC_SYSTEM_MANUFACTURER_DATA                 EFI_MISC_SYSTEM_MANUFACTURER;\r
-typedef EFI_MISC_BASE_BOARD_MANUFACTURER_DATA             EFI_MISC_BASE_BOARD_MANUFACTURER;\r
-typedef EFI_MISC_CHASSIS_MANUFACTURER_DATA                EFI_MISC_CHASSIS_MANUFACTURER;\r
-typedef EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA  EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR;\r
-typedef EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA             EFI_MISC_SYSTEM_SLOT_DESIGNATION;\r
-typedef EFI_MISC_ONBOARD_DEVICE_DATA                      EFI_MISC_ONBOARD_DEVICE;\r
-typedef EFI_MISC_POINTING_DEVICE_TYPE_DATA                EFI_MISC_ONBOARD_DEVICE_TYPE_DATA;\r
-typedef EFI_MISC_OEM_STRING_DATA                          EFI_MISC_OEM_STRING;\r
-typedef EFI_MISC_SYSTEM_OPTION_STRING_DATA                EFI_MISC_SYSTEM_OPTION_STRING;\r
-typedef EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA     EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES;\r
-typedef EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA              EFI_MISC_SYSTEM_LANGUAGE_STRING;\r
-typedef EFI_MISC_SYSTEM_EVENT_LOG_DATA                    EFI_MISC_SYSTEM_EVENT_LOG;\r
-typedef EFI_MISC_BIS_ENTRY_POINT_DATA                     EFI_MISC_BIS_ENTRY_POINT;\r
-typedef EFI_MISC_BOOT_INFORMATION_STATUS_DATA             EFI_MISC_BOOT_INFORMATION_STATUS;\r
-typedef EFI_MISC_SYSTEM_POWER_SUPPLY_DATA                 EFI_MISC_SYSTEM_POWER_SUPPLY;\r
-typedef EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA         EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION;\r
-typedef EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA            EFI_MISC_SCHEDULED_POWER_ON_MONTH;\r
-typedef EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_DATA           EFI_MISC_VOLTAGE_PROBE_DESCRIPTION;\r
-typedef EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA            EFI_MISC_COOLING_DEVICE_TEMP_LINK;\r
-typedef EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA       EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION;\r
-typedef EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA\r
-                                                          EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION;\r
-typedef EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA       EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION;\r
-typedef EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION;\r
-typedef EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA\r
-                                                          EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION;\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It is implementation-specific to simplify the code logic.\r
-///\r
-typedef union {\r
-  EFI_MISC_LAST_PCI_BUS_DATA                         LastPciBus;\r
-  EFI_MISC_BIOS_VENDOR_DATA                          MiscBiosVendor;\r
-  EFI_MISC_SYSTEM_MANUFACTURER_DATA                  MiscSystemManufacturer;\r
-  EFI_MISC_BASE_BOARD_MANUFACTURER_DATA              MiscBaseBoardManufacturer;\r
-  EFI_MISC_CHASSIS_MANUFACTURER_DATA                 MiscChassisManufacturer;\r
-  EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA   MiscPortInternalConnectorDesignator;\r
-  EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA              MiscSystemSlotDesignation;\r
-  EFI_MISC_ONBOARD_DEVICE_DATA                       MiscOnboardDevice;\r
-  EFI_MISC_OEM_STRING_DATA                           MiscOemString;\r
-  EFI_MISC_SYSTEM_OPTION_STRING_DATA                 MiscOptionString;\r
-  EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA      NumberOfInstallableLanguages;\r
-  EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA               MiscSystemLanguageString;\r
-  EFI_MISC_SYSTEM_EVENT_LOG_DATA                     MiscSystemEventLog;\r
-  EFI_MISC_GROUP_NAME_DATA                           MiscGroupNameData;\r
-  EFI_MISC_GROUP_ITEM_SET_DATA                       MiscGroupItemSetData;\r
-  EFI_MISC_POINTING_DEVICE_TYPE_DATA                 MiscPointingDeviceTypeData;\r
-  EFI_MISC_RESET_CAPABILITIES_DATA                   MiscResetCapablilitiesData;\r
-  EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA           MiscHardwareSecuritySettingsData;\r
-  EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA             MiscScheduledPowerOnMonthData;\r
-  EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_DATA            MiscVoltagePorbeDescriptionData;\r
-  EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA             MiscCoolingDeviceTempLinkData;\r
-  EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA        MiscTemperatureProbeDescriptionData;\r
-  EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA MiscElectricalCurrentProbeDescriptionData;\r
-  EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA\r
-                                                     MiscRemoteAccessManufacturerDescriptionData;\r
-  EFI_MISC_BIS_ENTRY_POINT_DATA                      MiscBisEntryPoint;\r
-  EFI_MISC_BOOT_INFORMATION_STATUS_DATA              MiscBootInformationStatus;\r
-  EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA        MiscMangementDeviceDescriptionData;\r
-  EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA\r
-                                                     MiscmangementDeviceComponentDescriptionData;\r
-  EFI_MISC_IPMI_INTERFACE_TYPE_DATA                  MiscIpmiInterfaceTypeData;\r
-  EFI_MISC_SYSTEM_POWER_SUPPLY_DATA                  MiscPowerSupplyInfo;\r
-  EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA          MiscSmbiosStructEncapsulation;\r
-  EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD               MiscManagementDeviceThreshold;\r
-} EFI_MISC_SUBCLASS_RECORDS;\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
-/// It is implementation-specific to simplify the code logic.\r
-///\r
-typedef struct {\r
-  EFI_SUBCLASS_TYPE1_HEADER         Header;\r
-  EFI_MISC_SUBCLASS_RECORDS         Record;\r
-} EFI_MISC_SUBCLASS_DRIVER_DATA;\r
-#pragma pack()\r
-\r
-///\r
-/// Inconsistent with specification here:\r
-/// In DataHubSubclass specification 0.9 page 16, the following symbol is NOT defined.\r
-/// But value is meaningful, 0 means Reserved.\r
-///\r
-#define EFI_SUBCLASS_INSTANCE_RESERVED       0\r
-///\r
-/// Inconsistent with specification here:\r
-/// In DataHubSubclass specification 0.9 page 16, the following symbol is NOT defined.\r
-/// But value is meaningful, -1 means Not Applicable.\r
-///\r
-#define EFI_SUBCLASS_INSTANCE_NON_APPLICABLE 0xFFFF\r
-\r
-#endif\r