Home | History | Annotate | Download | only in DataHubRecords
      1 /*++
      2 
      3 Copyright (c) 2004 - 2010, Intel Corporation. All rights reserved.<BR>
      4 This program and the accompanying materials
      5 are licensed and made available under the terms and conditions of the BSD License
      6 which accompanies this distribution.  The full text of the license may be found at
      7 http://opensource.org/licenses/bsd-license.php
      8 
      9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     11 
     12 Module Name:
     13 
     14   DataHubSubClassMisc.h
     15 
     16 Abstract:
     17 
     18   Definitions for Misc sub class data records
     19 
     20 Revision History
     21 
     22 --*/
     23 
     24 #ifndef _DATAHUB_SUBCLASS_MISC_H_
     25 #define _DATAHUB_SUBCLASS_MISC_H_
     26 
     27 #include EFI_GUID_DEFINITION(DataHubRecords)
     28 
     29 #define EFI_MISC_SUBCLASS_GUID \
     30 { 0x772484B2, 0x7482, 0x4b91, {0x9F, 0x9A, 0xAD, 0x43, 0xF8, 0x1C, 0x58, 0x81} }
     31 
     32 #define EFI_MISC_SUBCLASS_VERSION     0x0100
     33 
     34 #pragma pack(1)
     35 //
     36 //////////////////////////////////////////////////////////////////////////////
     37 //
     38 // Last PCI Bus Number
     39 //
     40 #define EFI_MISC_LAST_PCI_BUS_RECORD_NUMBER   0x00000001
     41 
     42 typedef struct {
     43   UINT8   LastPciBus;
     44 } EFI_MISC_LAST_PCI_BUS;
     45 
     46 typedef struct {
     47   UINT8      FunctionNum  :3;
     48   UINT8      DeviceNum    :5;
     49 } EFI_MISC_DEV_FUNC_NUM;
     50 
     51 //
     52 //////////////////////////////////////////////////////////////////////////////
     53 //
     54 // Misc. BIOS Vendor - SMBIOS Type 0
     55 //
     56 #define EFI_MISC_BIOS_VENDOR_RECORD_NUMBER  0x00000002
     57 
     58 typedef struct {
     59   UINT32  Reserved1                         :2;
     60   UINT32  Unknown                           :1;
     61   UINT32  BiosCharacteristicsNotSupported   :1;
     62   UINT32  IsaIsSupported                    :1;
     63   UINT32  McaIsSupported                    :1;
     64   UINT32  EisaIsSupported                   :1;
     65   UINT32  PciIsSupported                    :1;
     66   UINT32  PcmciaIsSupported                 :1;
     67   UINT32  PlugAndPlayIsSupported            :1;
     68   UINT32  ApmIsSupported                    :1;
     69   UINT32  BiosIsUpgradable                  :1;
     70   UINT32  BiosShadowingAllowed              :1;
     71   UINT32  VlVesaIsSupported                 :1;
     72   UINT32  EscdSupportIsAvailable            :1;
     73   UINT32  BootFromCdIsSupported             :1;
     74   UINT32  SelectableBootIsSupported         :1;
     75   UINT32  RomBiosIsSocketed                 :1;
     76   UINT32  BootFromPcmciaIsSupported         :1;
     77   UINT32  EDDSpecificationIsSupported       :1;
     78   UINT32  JapaneseNecFloppyIsSupported      :1;
     79   UINT32  JapaneseToshibaFloppyIsSupported  :1;
     80   UINT32  Floppy525_360IsSupported          :1;
     81   UINT32  Floppy525_12IsSupported           :1;
     82   UINT32  Floppy35_720IsSupported           :1;
     83   UINT32  Floppy35_288IsSupported           :1;
     84   UINT32  PrintScreenIsSupported            :1;
     85   UINT32  Keyboard8042IsSupported           :1;
     86   UINT32  SerialIsSupported                 :1;
     87   UINT32  PrinterIsSupported                :1;
     88   UINT32  CgaMonoIsSupported                :1;
     89   UINT32  NecPc98                           :1;
     90   UINT32  AcpiIsSupported                   :1;
     91   UINT32  UsbLegacyIsSupported              :1;
     92   UINT32  AgpIsSupported                    :1;
     93   UINT32  I20BootIsSupported                :1;
     94   UINT32  Ls120BootIsSupported              :1;
     95   UINT32  AtapiZipDriveBootIsSupported      :1;
     96   UINT32  Boot1394IsSupported               :1;
     97   UINT32  SmartBatteryIsSupported           :1;
     98   UINT32  BiosBootSpecIsSupported           :1;
     99   UINT32  FunctionKeyNetworkBootIsSupported :1;
    100   UINT32  TargetContentDistributionEnabled  :1;
    101   UINT32  Reserved                          :21;
    102 } EFI_MISC_BIOS_CHARACTERISTICS;
    103 
    104 typedef struct {
    105   UINT32  BiosReserved                      :16;
    106   UINT32  SystemReserved                    :16;
    107   UINT32  Reserved                          :32;
    108 } EFI_MISC_BIOS_CHARACTERISTICS_EXTENSION;
    109 
    110 typedef struct {
    111   STRING_REF                      BiosVendor;
    112   STRING_REF                      BiosVersion;
    113   STRING_REF                      BiosReleaseDate;
    114   EFI_PHYSICAL_ADDRESS            BiosStartingAddress;
    115   EFI_EXP_BASE2_DATA              BiosPhysicalDeviceSize;
    116   EFI_MISC_BIOS_CHARACTERISTICS   BiosCharacteristics1;
    117   EFI_MISC_BIOS_CHARACTERISTICS_EXTENSION  BiosCharacteristics2;
    118   UINT8                           BiosMajorRelease;
    119   UINT8                           BiosMinorRelease;
    120   UINT8                           BiosEmbeddedFirmwareMajorRelease;
    121   UINT8                           BiosEmbeddedFirmwareMinorRelease;
    122 } EFI_MISC_BIOS_VENDOR;
    123 
    124 //
    125 //////////////////////////////////////////////////////////////////////////////
    126 //
    127 // Misc. System Manufacturer - SMBIOS Type 1
    128 //
    129 #define EFI_MISC_SYSTEM_MANUFACTURER_RECORD_NUMBER 0x00000003
    130 
    131 typedef enum {
    132   EfiSystemWakeupTypeReserved = 0,
    133   EfiSystemWakeupTypeOther = 1,
    134   EfiSystemWakeupTypeUnknown = 2,
    135   EfiSystemWakeupTypeApmTimer = 3,
    136   EfiSystemWakeupTypeModemRing = 4,
    137   EfiSystemWakeupTypeLanRemote = 5,
    138   EfiSystemWakeupTypePowerSwitch = 6,
    139   EfiSystemWakeupTypePciPme = 7,
    140   EfiSystemWakeupTypeAcPowerRestored = 8
    141 } EFI_MISC_SYSTEM_WAKEUP_TYPE;
    142 
    143 typedef struct {
    144   STRING_REF                      SystemManufacturer;
    145   STRING_REF                      SystemProductName;
    146   STRING_REF                      SystemVersion;
    147   STRING_REF                      SystemSerialNumber;
    148   EFI_GUID                        SystemUuid;
    149   EFI_MISC_SYSTEM_WAKEUP_TYPE     SystemWakeupType;
    150   STRING_REF                      SystemSKUNumber;
    151   STRING_REF                      SystemFamily;
    152 } EFI_MISC_SYSTEM_MANUFACTURER;
    153 
    154 //
    155 //////////////////////////////////////////////////////////////////////////////
    156 //
    157 // Misc. Base Board Manufacturer - SMBIOS Type 2
    158 //
    159 #define EFI_MISC_BASE_BOARD_MANUFACTURER_RECORD_NUMBER 0x00000004
    160 
    161 typedef struct {
    162   UINT32  Motherboard           :1;
    163   UINT32  RequiresDaughterCard  :1;
    164   UINT32  Removable             :1;
    165   UINT32  Replaceable           :1;
    166   UINT32  HotSwappable          :1;
    167   UINT32  Reserved              :27;
    168 } EFI_BASE_BOARD_FEATURE_FLAGS;
    169 
    170 typedef enum {
    171   EfiBaseBoardTypeUnknown = 1,
    172   EfiBaseBoardTypeOther = 2,
    173   EfiBaseBoardTypeServerBlade = 3,
    174   EfiBaseBoardTypeConnectivitySwitch = 4,
    175   EfiBaseBoardTypeSystemManagementModule = 5,
    176   EfiBaseBoardTypeProcessorModule = 6,
    177   EfiBaseBoardTypeIOModule = 7,
    178   EfiBaseBoardTypeMemoryModule = 8,
    179   EfiBaseBoardTypeDaughterBoard = 9,
    180   EfiBaseBoardTypeMotherBoard = 0xA,
    181   EfiBaseBoardTypeProcessorMemoryModule = 0xB,
    182   EfiBaseBoardTypeProcessorIOModule = 0xC,
    183   EfiBaseBoardTypeInterconnectBoard = 0xD
    184 } EFI_BASE_BOARD_TYPE;
    185 
    186 typedef struct {
    187   STRING_REF                      BaseBoardManufacturer;
    188   STRING_REF                      BaseBoardProductName;
    189   STRING_REF                      BaseBoardVersion;
    190   STRING_REF                      BaseBoardSerialNumber;
    191   STRING_REF                      BaseBoardAssetTag;
    192   STRING_REF                      BaseBoardChassisLocation;
    193   EFI_BASE_BOARD_FEATURE_FLAGS    BaseBoardFeatureFlags;
    194   EFI_BASE_BOARD_TYPE             BaseBoardType;
    195   EFI_INTER_LINK_DATA             BaseBoardChassisLink;
    196   UINT32                          BaseBoardNumberLinks;
    197   EFI_INTER_LINK_DATA             LinkN;
    198 } EFI_MISC_BASE_BOARD_MANUFACTURER;
    199 
    200 //
    201 //////////////////////////////////////////////////////////////////////////////
    202 //
    203 // Misc. System/Chassis Enclosure - SMBIOS Type 3
    204 //
    205 #define EFI_MISC_CHASSIS_MANUFACTURER_RECORD_NUMBER  0x00000005
    206 
    207 typedef enum {
    208   EfiMiscChassisTypeOther = 0x1,
    209   EfiMiscChassisTypeUnknown = 0x2,
    210   EfiMiscChassisTypeDeskTop = 0x3,
    211   EfiMiscChassisTypeLowProfileDesktop = 0x4,
    212   EfiMiscChassisTypePizzaBox = 0x5,
    213   EfiMiscChassisTypeMiniTower = 0x6,
    214   EfiMiscChassisTypeTower = 0x7,
    215   EfiMiscChassisTypePortable = 0x8,
    216   EfiMiscChassisTypeLapTop = 0x9,
    217   EfiMiscChassisTypeNotebook = 0xA,
    218   EfiMiscChassisTypeHandHeld = 0xB,
    219   EfiMiscChassisTypeDockingStation = 0xC,
    220   EfiMiscChassisTypeAllInOne = 0xD,
    221   EfiMiscChassisTypeSubNotebook = 0xE,
    222   EfiMiscChassisTypeSpaceSaving = 0xF,
    223   EfiMiscChassisTypeLunchBox = 0x10,
    224   EfiMiscChassisTypeMainServerChassis = 0x11,
    225   EfiMiscChassisTypeExpansionChassis = 0x12,
    226   EfiMiscChassisTypeSubChassis = 0x13,
    227   EfiMiscChassisTypeBusExpansionChassis = 0x14,
    228   EfiMiscChassisTypePeripheralChassis = 0x15,
    229   EfiMiscChassisTypeRaidChassis = 0x16,
    230   EfiMiscChassisTypeRackMountChassis = 0x17,
    231   EfiMiscChassisTypeSealedCasePc = 0x18,
    232   EfiMiscChassisMultiSystemChassis = 0x19,
    233   EfiMiscChassisCompactPCI = 0x1A,
    234   EfiMiscChassisAdvancedTCA = 0x1B,
    235   EfiMiscChassisBlade = 0x1C,
    236   EfiMiscChassisBladeEnclosure = 0x1D
    237 } EFI_MISC_CHASSIS_TYPE;
    238 
    239 typedef struct {
    240   UINT32  ChassisType       :16;
    241   UINT32  ChassisLockPresent:1;
    242   UINT32  Reserved          :15;
    243 } EFI_MISC_CHASSIS_STATUS;
    244 
    245 typedef enum {
    246   EfiChassisStateOther = 1,
    247   EfiChassisStateUnknown = 2,
    248   EfiChassisStateSafe = 3,
    249   EfiChassisStateWarning = 4,
    250   EfiChassisStateCritical = 5,
    251   EfiChassisStateNonRecoverable = 6
    252 } EFI_MISC_CHASSIS_STATE;
    253 
    254 typedef enum {
    255   EfiChassisSecurityStatusOther = 1,
    256   EfiChassisSecurityStatusUnknown = 2,
    257   EfiChassisSecurityStatusNone = 3,
    258   EfiChassisSecurityStatusExternalInterfaceLockedOut = 4,
    259   EfiChassisSecurityStatusExternalInterfaceLockedEnabled = 5
    260 } EFI_MISC_CHASSIS_SECURITY_STATE;
    261 
    262 typedef struct {
    263   UINT32  RecordType  :1;
    264   UINT32  Type        :7;
    265   UINT32  Reserved    :24;
    266 } EFI_MISC_ELEMENT_TYPE;
    267 
    268 typedef struct {
    269   EFI_MISC_ELEMENT_TYPE   ChassisElementType;
    270   EFI_INTER_LINK_DATA     ChassisElementStructure;
    271   EFI_BASE_BOARD_TYPE     ChassisBaseBoard;
    272   UINT32                  ChassisElementMinimum;
    273   UINT32                  ChassisElementMaximum;
    274 } EFI_MISC_ELEMENTS;
    275 
    276 typedef struct {
    277   STRING_REF                      ChassisManufacturer;
    278   STRING_REF                      ChassisVersion;
    279   STRING_REF                      ChassisSerialNumber;
    280   STRING_REF                      ChassisAssetTag;
    281   EFI_MISC_CHASSIS_STATUS         ChassisType;
    282   EFI_MISC_CHASSIS_STATE          ChassisBootupState;
    283   EFI_MISC_CHASSIS_STATE          ChassisPowerSupplyState;
    284   EFI_MISC_CHASSIS_STATE          ChassisThermalState;
    285   EFI_MISC_CHASSIS_SECURITY_STATE ChassisSecurityState;
    286   UINT32                          ChassisOemDefined;
    287   UINT32                          ChassisHeight;
    288   UINT32                          ChassisNumberPowerCords;
    289   UINT32                          ChassisElementCount;
    290   UINT32                          ChassisElementRecordLength;//
    291   EFI_MISC_ELEMENTS               ChassisElements;
    292 } EFI_MISC_CHASSIS_MANUFACTURER;
    293 
    294 //
    295 //////////////////////////////////////////////////////////////////////////////
    296 //
    297 // Misc. Port Connector Information - SMBIOS Type 8
    298 //
    299 #define EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_RECORD_NUMBER 0x00000006
    300 
    301 typedef enum {
    302   EfiPortConnectorTypeNone = 0x0,
    303   EfiPortConnectorTypeCentronics = 0x1,
    304   EfiPortConnectorTypeMiniCentronics = 0x2,
    305   EfiPortConnectorTypeProprietary = 0x3,
    306   EfiPortConnectorTypeDB25Male = 0x4,
    307   EfiPortConnectorTypeDB25Female = 0x5,
    308   EfiPortConnectorTypeDB15Male = 0x6,
    309   EfiPortConnectorTypeDB15Female = 0x7,
    310   EfiPortConnectorTypeDB9Male = 0x8,
    311   EfiPortConnectorTypeDB9Female = 0x9,
    312   EfiPortConnectorTypeRJ11 = 0xA,
    313   EfiPortConnectorTypeRJ45 = 0xB,
    314   EfiPortConnectorType50PinMiniScsi = 0xC,
    315   EfiPortConnectorTypeMiniDin = 0xD,
    316   EfiPortConnectorTypeMicriDin = 0xE,
    317   EfiPortConnectorTypePS2 = 0xF,
    318   EfiPortConnectorTypeInfrared = 0x10,
    319   EfiPortConnectorTypeHpHil = 0x11,
    320   EfiPortConnectorTypeUsb = 0x12,
    321   EfiPortConnectorTypeSsaScsi = 0x13,
    322   EfiPortConnectorTypeCircularDin8Male = 0x14,
    323   EfiPortConnectorTypeCircularDin8Female = 0x15,
    324   EfiPortConnectorTypeOnboardIde = 0x16,
    325   EfiPortConnectorTypeOnboardFloppy = 0x17,
    326   EfiPortConnectorType9PinDualInline = 0x18,
    327   EfiPortConnectorType25PinDualInline = 0x19,
    328   EfiPortConnectorType50PinDualInline = 0x1A,
    329   EfiPortConnectorType68PinDualInline = 0x1B,
    330   EfiPortConnectorTypeOnboardSoundInput = 0x1C,
    331   EfiPortConnectorTypeMiniCentronicsType14 = 0x1D,
    332   EfiPortConnectorTypeMiniCentronicsType26 = 0x1E,
    333   EfiPortConnectorTypeHeadPhoneMiniJack = 0x1F,
    334   EfiPortConnectorTypeBNC = 0x20,
    335   EfiPortConnectorType1394 = 0x21,
    336   EfiPortConnectorTypeSasSata = 0x22,
    337   EfiPortConnectorTypePC98 = 0xA0,
    338   EfiPortConnectorTypePC98Hireso = 0xA1,
    339   EfiPortConnectorTypePCH98 = 0xA2,
    340   EfiPortConnectorTypePC98Note = 0xA3,
    341   EfiPortConnectorTypePC98Full = 0xA4,
    342   EfiPortConnectorTypeOther = 0xFF
    343 } EFI_MISC_PORT_CONNECTOR_TYPE;
    344 
    345 typedef enum {
    346   EfiPortTypeNone = 0x0,
    347   EfiPortTypeParallelXtAtCompatible = 0x1,
    348   EfiPortTypeParallelPortPs2 = 0x2,
    349   EfiPortTypeParallelPortEcp = 0x3,
    350   EfiPortTypeParallelPortEpp = 0x4,
    351   EfiPortTypeParallelPortEcpEpp = 0x5,
    352   EfiPortTypeSerialXtAtCompatible = 0x6,
    353   EfiPortTypeSerial16450Compatible = 0x7,
    354   EfiPortTypeSerial16550Compatible = 0x8,
    355   EfiPortTypeSerial16550ACompatible = 0x9,
    356   EfiPortTypeScsi = 0xA,
    357   EfiPortTypeMidi = 0xB,
    358   EfiPortTypeJoyStick = 0xC,
    359   EfiPortTypeKeyboard = 0xD,
    360   EfiPortTypeMouse = 0xE,
    361   EfiPortTypeSsaScsi = 0xF,
    362   EfiPortTypeUsb = 0x10,
    363   EfiPortTypeFireWire = 0x11,
    364   EfiPortTypePcmciaTypeI = 0x12,
    365   EfiPortTypePcmciaTypeII = 0x13,
    366   EfiPortTypePcmciaTypeIII = 0x14,
    367   EfiPortTypeCardBus = 0x15,
    368   EfiPortTypeAccessBusPort = 0x16,
    369   EfiPortTypeScsiII = 0x17,
    370   EfiPortTypeScsiWide = 0x18,
    371   EfiPortTypePC98 = 0x19,
    372   EfiPortTypePC98Hireso = 0x1A,
    373   EfiPortTypePCH98 = 0x1B,
    374   EfiPortTypeVideoPort = 0x1C,
    375   EfiPortTypeAudioPort = 0x1D,
    376   EfiPortTypeModemPort = 0x1E,
    377   EfiPortTypeNetworkPort = 0x1F,
    378   EfiPortTypeSata = 0x20,
    379   EfiPortTypeSas = 0x21,
    380   EfiPortType8251Compatible = 0xA0,
    381   EfiPortType8251FifoCompatible = 0xA1,
    382   EfiPortTypeOther = 0xFF
    383 } EFI_MISC_PORT_TYPE;
    384 
    385 
    386 typedef struct {
    387   EFI_STRING_TOKEN              PortInternalConnectorDesignator;
    388   EFI_STRING_TOKEN              PortExternalConnectorDesignator;
    389   EFI_MISC_PORT_CONNECTOR_TYPE  PortInternalConnectorType;
    390   EFI_MISC_PORT_CONNECTOR_TYPE  PortExternalConnectorType;
    391   EFI_MISC_PORT_TYPE            PortType;
    392   EFI_MISC_PORT_DEVICE_PATH      PortPath;
    393 } EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR;
    394 
    395 //
    396 //////////////////////////////////////////////////////////////////////////////
    397 //
    398 // Misc. System Slots - SMBIOS Type 9
    399 //
    400 #define EFI_MISC_SYSTEM_SLOT_DESIGNATION_RECORD_NUMBER 0x00000007
    401 
    402 typedef enum {
    403   EfiSlotTypeOther = 0x1,
    404   EfiSlotTypeUnknown = 0x2,
    405   EfiSlotTypeIsa = 0x3,
    406   EfiSlotTypeMca = 0x4,
    407   EfiSlotTypeEisa = 0x5,
    408   EfiSlotTypePci = 0x6,
    409   EfiSlotTypePcmcia = 0x7,
    410   EfiSlotTypeVlVesa = 0x8,
    411   EfiSlotTypeProprietary = 0x9,
    412   EfiSlotTypeProcessorCardSlot = 0xA,
    413   EfiSlotTypeProprietaryMemoryCardSlot = 0xB,
    414   EfiSlotTypeIORiserCardSlot = 0xC,
    415   EfiSlotTypeNuBus = 0xD,
    416   EfiSlotTypePci66MhzCapable = 0xE,
    417   EfiSlotTypeAgp = 0xF,
    418   EfiSlotTypeApg2X = 0x10,
    419   EfiSlotTypeAgp4X = 0x11,
    420   EfiSlotTypePciX = 0x12,
    421   EfiSlotTypeAgp8X = 0x13,
    422   EfiSlotTypePC98C20 = 0xA0,
    423   EfiSlotTypePC98C24 = 0xA1,
    424   EfiSlotTypePC98E = 0xA2,
    425   EfiSlotTypePC98LocalBus = 0xA3,
    426   EfiSlotTypePC98Card = 0xA4,
    427   EfiSlotTypePciExpress = 0xA5,
    428   EfiSlotTypePciExpressX1 = 0xA6,
    429   EfiSlotTypePciExpressX2 = 0xA7,
    430   EfiSlotTypePciExpressX4 = 0xA8,
    431   EfiSlotTypePciExpressX8 = 0xA9,
    432   EfiSlotTypePciExpressX16 = 0xAA,
    433   EfiSlotTypePciExpressGen2    = 0xAB,
    434   EfiSlotTypePciExpressGen2X1  = 0xAC,
    435   EfiSlotTypePciExpressGen2X2  = 0xAD,
    436   EfiSlotTypePciExpressGen2X4  = 0xAE,
    437   EfiSlotTypePciExpressGen2X8  = 0xAF,
    438   EfiSlotTypePciExpressGen2X16 = 0xB0
    439 } EFI_MISC_SLOT_TYPE;
    440 
    441 typedef enum {
    442   EfiSlotDataBusWidthOther = 1,
    443   EfiSlotDataBusWidthUnknown = 2,
    444   EfiSlotDataBusWidth8Bit = 3,
    445   EfiSlotDataBusWidth16Bit = 4,
    446   EfiSlotDataBusWidth32Bit = 5,
    447   EfiSlotDataBusWidth64Bit = 6,
    448   EfiSlotDataBusWidth128Bit = 7,
    449   EfiSlotDataBusWidth1xOrx1 = 8,
    450   EfiSlotDataBusWidth2xOrx2 = 9,
    451   EfiSlotDataBusWidth4xOrx4 = 0xA,
    452   EfiSlotDataBusWidth8xOrx8 = 0xB,
    453   EfiSlotDataBusWidth12xOrx12 = 0xC,
    454   EfiSlotDataBusWidth16xOrx16 = 0xD,
    455   EfiSlotDataBusWidth32xOrx32 = 0xE
    456 } EFI_MISC_SLOT_DATA_BUS_WIDTH;
    457 
    458 typedef enum {
    459   EfiSlotUsageOther = 1,
    460   EfiSlotUsageUnknown = 2,
    461   EfiSlotUsageAvailable = 3,
    462   EfiSlotUsageInUse = 4
    463 } EFI_MISC_SLOT_USAGE;
    464 
    465 typedef enum {
    466   EfiSlotLengthOther = 1,
    467   EfiSlotLengthUnknown = 2,
    468   EfiSlotLengthShort = 3,
    469   EfiSlotLengthLong = 4
    470 } EFI_MISC_SLOT_LENGTH;
    471 
    472 typedef struct {
    473   UINT32  CharacteristicsUnknown  :1;
    474   UINT32  Provides50Volts         :1;
    475   UINT32  Provides33Volts         :1;
    476   UINT32  SharedSlot              :1;
    477   UINT32  PcCard16Supported       :1;
    478   UINT32  CardBusSupported        :1;
    479   UINT32  ZoomVideoSupported      :1;
    480   UINT32  ModemRingResumeSupported:1;
    481   UINT32  PmeSignalSupported      :1;
    482   UINT32  HotPlugDevicesSupported :1;
    483   UINT32  SmbusSignalSupported    :1;
    484   UINT32  Reserved                :21;
    485 } EFI_MISC_SLOT_CHARACTERISTICS;
    486 
    487 typedef struct {
    488   STRING_REF                    SlotDesignation;
    489   EFI_MISC_SLOT_TYPE            SlotType;
    490   EFI_MISC_SLOT_DATA_BUS_WIDTH  SlotDataBusWidth;
    491   EFI_MISC_SLOT_USAGE           SlotUsage;
    492   EFI_MISC_SLOT_LENGTH          SlotLength;
    493   UINT16                        SlotId;
    494   EFI_MISC_SLOT_CHARACTERISTICS SlotCharacteristics;
    495   EFI_DEVICE_PATH_PROTOCOL      SlotDevicePath;
    496   UINT16                        SegmentGroupNum;
    497   UINT8                         BusNum;
    498   EFI_MISC_DEV_FUNC_NUM         DevFuncNum;
    499 } EFI_MISC_SYSTEM_SLOT_DESIGNATION;
    500 
    501 //
    502 //////////////////////////////////////////////////////////////////////////////
    503 //
    504 // Misc. Onboard Device - SMBIOS Type 10
    505 //
    506 #define EFI_MISC_ONBOARD_DEVICE_RECORD_NUMBER 0x00000008
    507 
    508 typedef enum {
    509   EfiOnBoardDeviceTypeOther = 1,
    510   EfiOnBoardDeviceTypeUnknown = 2,
    511   EfiOnBoardDeviceTypeVideo = 3,
    512   EfiOnBoardDeviceTypeScsiController = 4,
    513   EfiOnBoardDeviceTypeEthernet = 5,
    514   EfiOnBoardDeviceTypeTokenRing = 6,
    515   EfiOnBoardDeviceTypeSound = 7,
    516   EfiOnBoardDeviceTypePataController = 8,
    517   EfiOnBoardDeviceTypeSataController = 9,
    518   EfiOnBoardDeviceTypeSasController = 10
    519 } EFI_MISC_ONBOARD_DEVICE_TYPE;
    520 
    521 typedef struct {
    522   UINT32  DeviceType    :16;
    523   UINT32  DeviceEnabled :1;
    524   UINT32  Reserved      :15;
    525 } EFI_MISC_ONBOARD_DEVICE_STATUS;
    526 
    527 typedef struct {
    528   STRING_REF                      OnBoardDeviceDescription;
    529   EFI_MISC_ONBOARD_DEVICE_STATUS  OnBoardDeviceStatus;
    530   EFI_DEVICE_PATH_PROTOCOL        OnBoardDevicePath;
    531 } EFI_MISC_ONBOARD_DEVICE;
    532 
    533 //
    534 //////////////////////////////////////////////////////////////////////////////
    535 //
    536 // Misc. BIOS Language Information - SMBIOS Type 11
    537 //
    538 #define EFI_MISC_OEM_STRING_RECORD_NUMBER 0x00000009
    539 
    540 typedef struct {
    541   STRING_REF                          OemStringRef[1];
    542 } EFI_MISC_OEM_STRING;
    543 
    544 //
    545 //////////////////////////////////////////////////////////////////////////////
    546 //
    547 // Misc. System Options - SMBIOS Type 12
    548 //
    549 typedef struct {
    550   STRING_REF                          SystemOptionStringRef[1];
    551 } EFI_MISC_SYSTEM_OPTION_STRING;
    552 
    553 #define EFI_MISC_SYSTEM_OPTION_STRING_RECORD_NUMBER 0x0000000A
    554 
    555 //
    556 //////////////////////////////////////////////////////////////////////////////
    557 //
    558 // Misc. Number of Installable Languages - SMBIOS Type 13
    559 //
    560 #define EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_RECORD_NUMBER 0x0000000B
    561 
    562 typedef struct {
    563   UINT32                              AbbreviatedLanguageFormat :1;
    564   UINT32                              Reserved                  :31;
    565 } EFI_MISC_LANGUAGE_FLAGS;
    566 
    567 typedef struct {
    568   UINT16                              NumberOfInstallableLanguages;
    569   EFI_MISC_LANGUAGE_FLAGS             LanguageFlags;
    570   UINT16                              CurrentLanguageNumber;
    571 } EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES;
    572 
    573 //
    574 //////////////////////////////////////////////////////////////////////////////
    575 //
    576 // Misc. System Language String
    577 //
    578 #define EFI_MISC_SYSTEM_LANGUAGE_STRING_RECORD_NUMBER 0x0000000C
    579 
    580 typedef struct {
    581   UINT16                              LanguageId;
    582   STRING_REF                          SystemLanguageString;
    583 } EFI_MISC_SYSTEM_LANGUAGE_STRING;
    584 
    585 //
    586 //////////////////////////////////////////////////////////////////////////////
    587 //
    588 //  Misc. Group Associations  - SMBIOS Type 14
    589 //
    590 #define EFI_MISC_GROUP_NAME_RECORD_NUMBER 0x0000000D
    591 
    592 typedef struct {
    593   STRING_REF                          GroupName;
    594   UINT16                              NumberGroupItems;
    595   UINT16                              GroupId;
    596 } EFI_MISC_GROUP_NAME_DATA;
    597 
    598 #define EFI_MISC_GROUP_ITEM_SET_RECORD_NUMBER 0x0000000E
    599 
    600 typedef struct {
    601   EFI_GUID            SubClass;
    602   EFI_INTER_LINK_DATA GroupLink;
    603   UINT16              GroupId;
    604   UINT16              GroupElementId;
    605   UINT8               ItemType;
    606 } EFI_MISC_GROUP_ITEM_SET_DATA;
    607 
    608 //
    609 //////////////////////////////////////////////////////////////////////////////
    610 //
    611 //  Misc. Pointing Device Type - SMBIOS Type 21
    612 //
    613 #define EFI_MISC_POINTING_DEVICE_TYPE_RECORD_NUMBER 0x0000000F
    614 
    615 typedef enum {
    616   EfiPointingDeviceTypeOther = 1,
    617   EfiPointingDeviceTypeUnknown = 2,
    618   EfiPointingDeviceTypeMouse = 3,
    619   EfiPointingDeviceTypeTrackBall = 4,
    620   EfiPointingDeviceTypeTrackPoint = 5,
    621   EfiPointingDeviceTypeGlidePoint = 6,
    622   EfiPointingDeviceTouchPad = 7,
    623   EfiPointingDeviceTouchScreen = 8,
    624   EfiPointingDeviceOpticalSensor = 9
    625 } EFI_MISC_POINTING_DEVICE_TYPE;
    626 
    627 typedef enum {
    628   EfiPointingDeviceInterfaceOther = 1,
    629   EfiPointingDeviceInterfaceUnknown = 2,
    630   EfiPointingDeviceInterfaceSerial = 3,
    631   EfiPointingDeviceInterfacePs2 = 4,
    632   EfiPointingDeviceInterfaceInfrared = 5,
    633   EfiPointingDeviceInterfaceHpHil = 6,
    634   EfiPointingDeviceInterfaceBusMouse = 7,
    635   EfiPointingDeviceInterfaceADB = 8,
    636   EfiPointingDeviceInterfaceBusMouseDB9 = 0xA0,
    637   EfiPointingDeviceInterfaceBusMouseMicroDin = 0xA1,
    638   EfiPointingDeviceInterfaceUsb = 0xA2
    639 } EFI_MISC_POINTING_DEVICE_INTERFACE;
    640 
    641 typedef struct {
    642   EFI_MISC_POINTING_DEVICE_TYPE       PointingDeviceType;
    643   EFI_MISC_POINTING_DEVICE_INTERFACE  PointingDeviceInterface;
    644   UINT16                              NumberPointingDeviceButtons;
    645   EFI_DEVICE_PATH_PROTOCOL            PointingDevicePath;
    646 } EFI_MISC_ONBOARD_DEVICE_TYPE_DATA;
    647 
    648 //
    649 //////////////////////////////////////////////////////////////////////////////
    650 //
    651 //  Misc. Portable Battery - SMBIOS Type 22
    652 //
    653 #define EFI_MISC_PORTABLE_BATTERY_RECORD_NUMBER 0x00000010
    654 
    655 typedef enum {
    656   EfiPortableBatteryDeviceChemistryOther = 1,
    657   EfiPortableBatteryDeviceChemistryUnknown = 2,
    658   EfiPortableBatteryDeviceChemistryLeadAcid = 3,
    659   EfiPortableBatteryDeviceChemistryNickelCadmium = 4,
    660   EfiPortableBatteryDeviceChemistryNickelMetalHydride = 5,
    661   EfiPortableBatteryDeviceChemistryLithiumIon = 6,
    662   EfiPortableBatteryDeviceChemistryZincAir = 7,
    663   EfiPortableBatteryDeviceChemistryLithiumPolymer = 8
    664 } EFI_MISC_PORTABLE_BATTERY_DEVICE_CHEMISTRY;
    665 
    666 typedef struct {
    667   STRING_REF                                  Location;
    668   STRING_REF                                  Manufacturer;
    669   STRING_REF                                  ManufactureDate;
    670   STRING_REF                                  SerialNumber;
    671   STRING_REF                                  DeviceName;
    672   EFI_MISC_PORTABLE_BATTERY_DEVICE_CHEMISTRY  DeviceChemistry;
    673   UINT16                                      DesignCapacity;
    674   UINT16                                      DesignVoltage;
    675   STRING_REF                                  SBDSVersionNumber;
    676   UINT8                                       MaximumError;
    677   UINT16                                      SBDSSerialNumber;
    678   UINT16                                      SBDSManufactureDate;
    679   STRING_REF                                  SBDSDeviceChemistry;
    680   UINT8                                       DesignCapacityMultiplier;
    681   UINT32                                      OEMSpecific;
    682   UINT8                                       BatteryNumber; // Temporary
    683   BOOLEAN                                     Valid; // Is entry valid - Temporary
    684 } EFI_MISC_PORTABLE_BATTERY;
    685 
    686 //
    687 //////////////////////////////////////////////////////////////////////////////
    688 //
    689 // Misc. Reset Capabilities - SMBIOS Type 23
    690 //
    691 #define EFI_MISC_RESET_CAPABILITIES_RECORD_NUMBER 0x00000011
    692 
    693 typedef struct {
    694   UINT32  Status              :1;
    695   UINT32  BootOption          :2;
    696   UINT32  BootOptionOnLimit   :2;
    697   UINT32  WatchdogTimerPresent:1;
    698   UINT32  Reserved            :26;
    699 } EFI_MISC_RESET_CAPABILITIES_TYPE;
    700 
    701 typedef struct {
    702   EFI_MISC_RESET_CAPABILITIES_TYPE  ResetCapabilities;
    703   UINT16                            ResetCount;
    704   UINT16                            ResetLimit;
    705   UINT16                            ResetTimerInterval;
    706   UINT16                            ResetTimeout;
    707 } EFI_MISC_RESET_CAPABILITIES;
    708 
    709 typedef struct {
    710     EFI_MISC_RESET_CAPABILITIES   ResetCapabilities;
    711     UINT16                        ResetCount;
    712     UINT16                        ResetLimit;
    713     UINT16                        ResetTimerInterval;
    714     UINT16                        ResetTimeout;
    715 } EFI_MISC_RESET_CAPABILITIES_DATA;
    716 
    717 //
    718 //////////////////////////////////////////////////////////////////////////////
    719 //
    720 // Misc. Hardware Security - SMBIOS Type 24
    721 //
    722 #define EFI_MISC_HARDWARE_SECURITY_RECORD_NUMBER 0x00000012
    723 
    724 //
    725 // Backward Compatibility
    726 //
    727 #define EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA_RECORD_NUMBER  EFI_MISC_HARDWARE_SECURITY_RECORD_NUMBER
    728 
    729 typedef enum {
    730   EfiHardwareSecurityStatusDisabled = 0,
    731   EfiHardwareSecurityStatusEnabled = 1,
    732   EfiHardwareSecurityStatusNotImplemented = 2,
    733   EfiHardwareSecurityStatusUnknown = 3
    734 } EFI_MISC_HARDWARE_SECURITY_STATUS;
    735 
    736 typedef struct {
    737   EFI_MISC_HARDWARE_SECURITY_STATUS   FrontPanelResetStatus   :2;
    738   EFI_MISC_HARDWARE_SECURITY_STATUS   AdministratorPasswordStatus   :2;
    739   EFI_MISC_HARDWARE_SECURITY_STATUS   KeyboardPasswordStatus :2;
    740   EFI_MISC_HARDWARE_SECURITY_STATUS   PowerOnPasswordStatus :2;
    741   EFI_MISC_HARDWARE_SECURITY_STATUS   Reserved :24;
    742 } EFI_MISC_HARDWARE_SECURITY_SETTINGS;
    743 
    744 typedef struct {
    745   EFI_MISC_HARDWARE_SECURITY_SETTINGS HardwareSecuritySettings;
    746 } EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA;
    747 
    748 //
    749 //////////////////////////////////////////////////////////////////////////////
    750 //
    751 // Misc. System Power Controls - SMBIOS Type 25
    752 //
    753 #define EFI_MISC_SCHEDULED_POWER_ON_MONTH_RECORD_NUMBER 0x00000013
    754 
    755 typedef struct {
    756   UINT8     ScheduledPoweronMonth;
    757   UINT8     ScheduledPoweronDayOfMonth;
    758   UINT8     ScheduledPoweronHour;
    759   UINT8     ScheduledPoweronMinute;
    760   UINT8     ScheduledPoweronSecond;
    761 } EFI_MISC_SCHEDULED_POWER_ON_MONTH;
    762 
    763 //
    764 //////////////////////////////////////////////////////////////////////////////
    765 //
    766 // Misc. Voltage Probe - SMBIOS Type 26
    767 //
    768 #define EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_RECORD_NUMBER 0x00000014
    769 
    770 typedef struct {
    771   UINT32    VoltageProbeSite :5;
    772   UINT32    VoltageProbeStatus :3;
    773   UINT32    Reserved :24;
    774 } EFI_MISC_VOLTAGE_PROBE_LOCATION;
    775 
    776 typedef struct {
    777   STRING_REF                        VoltageProbeDescription;
    778   EFI_MISC_VOLTAGE_PROBE_LOCATION   VoltageProbeLocation;
    779   UINT16                            VoltageProbeMaximumValue;
    780   UINT16                            VoltageProbeMinimumValue;
    781   UINT16                            VoltageProbeResolution;
    782   UINT16                            VoltageProbeTolerance;
    783   UINT16                            VoltageProbeAccuracy;
    784   UINT16                            VoltageProbeNominalValue;
    785   UINT16                            MDLowerNoncriticalThreshold;
    786   UINT16                            MDUpperNoncriticalThreshold;
    787   UINT16                            MDLowerCriticalThreshold;
    788   UINT16                            MDUpperCriticalThreshold;
    789   UINT16                            MDLowerNonrecoverableThreshold;
    790   UINT16                            MDUpperNonrecoverableThreshold;
    791   UINT32                            VoltageProbeOemDefined;
    792 } EFI_MISC_VOLTAGE_PROBE_DESCRIPTION;
    793 
    794 //
    795 //////////////////////////////////////////////////////////////////////////////
    796 //
    797 // Misc. Cooling Device - SMBIOS Type 27
    798 //
    799 #define EFI_MISC_COOLING_DEVICE_TEMP_LINK_RECORD_NUMBER 0x00000015
    800 
    801 typedef struct {
    802   UINT32 CoolingDevice :5;
    803   UINT32 CoolingDeviceStatus :3;
    804   UINT32 Reserved :24;
    805 } EFI_MISC_COOLING_DEVICE_TYPE;
    806 
    807 typedef struct {
    808   EFI_MISC_COOLING_DEVICE_TYPE  CoolingDeviceType;
    809   EFI_INTER_LINK_DATA           CoolingDeviceTemperatureLink;
    810   UINT8                         CoolingDeviceUnitGroup;
    811   UINT16                        CoolingDeviceNominalSpeed;
    812   UINT32                        CoolingDeviceOemDefined;
    813 } EFI_MISC_COOLING_DEVICE_TEMP_LINK;
    814 
    815 //
    816 //////////////////////////////////////////////////////////////////////////////
    817 //
    818 // Misc. Temperature Probe - SMBIOS Type 28
    819 //
    820 #define EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_RECORD_NUMBER 0x00000016
    821 
    822 typedef struct {
    823   UINT32 TemperatureProbeSite :5;
    824   UINT32 TemperatureProbeStatus :3;
    825   UINT32 Reserved :24;
    826 } EFI_MISC_TEMPERATURE_PROBE_LOCATION;
    827 
    828 typedef struct {
    829   STRING_REF                            TemperatureProbeDescription;
    830   EFI_MISC_TEMPERATURE_PROBE_LOCATION   TemperatureProbeLocation;
    831   UINT16                                TemperatureProbeMaximumValue;
    832   UINT16                                TemperatureProbeMinimumValue;
    833   UINT16                                TemperatureProbeResolution;
    834   UINT16                                TemperatureProbeTolerance;
    835   UINT16                                TemperatureProbeAccuracy;
    836   UINT16                                TemperatureProbeNominalValue;
    837   UINT16                                MDLowerNoncriticalThreshold;
    838   UINT16                                MDUpperNoncriticalThreshold;
    839   UINT16                                MDLowerCriticalThreshold;
    840   UINT16                                MDUpperCriticalThreshold;
    841   UINT16                                MDLowerNonrecoverableThreshold;
    842   UINT16                                MDUpperNonrecoverableThreshold;
    843   UINT32                                TemperatureProbeOemDefined;
    844 } EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION;
    845 
    846 //
    847 //////////////////////////////////////////////////////////////////////////////
    848 //
    849 // Misc. Electrical Current Probe - SMBIOS Type 29
    850 //
    851 #define EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_RECORD_NUMBER 0x00000017
    852 
    853 typedef struct {
    854   UINT32 ElectricalCurrentProbeSite :5;
    855   UINT32 ElectricalCurrentProbeStatus :3;
    856   UINT32 Reserved :24;
    857 } EFI_MISC_ELECTRICAL_CURRENT_PROBE_LOCATION;
    858 
    859 typedef struct {
    860   STRING_REF                                  ElectricalCurrentProbeDescription;
    861   EFI_MISC_ELECTRICAL_CURRENT_PROBE_LOCATION  ElectricalCurrentProbeLocation;
    862   UINT16                                      ElectricalCurrentProbeMaximumValue;
    863   UINT16                                      ElectricalCurrentProbeMinimumValue;
    864   UINT16                                      ElectricalCurrentProbeResolution;
    865   UINT16                                      ElectricalCurrentProbeTolerance;
    866   UINT16                                      ElectricalCurrentProbeAccuracy;
    867   UINT16                                      ElectricalCurrentProbeNominalValue;
    868   UINT16                                      MDLowerNoncriticalThreshold;
    869   UINT16                                      MDUpperNoncriticalThreshold;
    870   UINT16                                      MDLowerCriticalThreshold;
    871   UINT16                                      MDUpperCriticalThreshold;
    872   UINT16                                      MDLowerNonrecoverableThreshold;
    873   UINT16                                      MDUpperNonrecoverableThreshold;
    874   UINT32                                      ElectricalCurrentProbeOemDefined;
    875 } EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION;
    876 
    877 //
    878 //////////////////////////////////////////////////////////////////////////////
    879 //
    880 // Misc. Out-of-Band Remote Access - SMBIOS Type 30
    881 //
    882 #define EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_RECORD_NUMBER 0x00000018
    883 
    884 typedef struct {
    885   UINT32 InboundConnectionEnabled :1;
    886   UINT32 OutboundConnectionEnabled :1;
    887   UINT32 Reserved :30;
    888 } EFI_MISC_REMOTE_ACCESS_CONNECTIONS;
    889 
    890 typedef struct {
    891   STRING_REF                          RemoteAccessManufacturerNameDescription;
    892   EFI_MISC_REMOTE_ACCESS_CONNECTIONS  RemoteAccessConnections;
    893 } EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION;
    894 //
    895 //////////////////////////////////////////////////////////////////////////////
    896 //
    897 // Misc. BIS Entry Point - SMBIOS Type 31
    898 //
    899 #define EFI_MISC_BIS_ENTRY_POINT_RECORD_NUMBER          0x00000019
    900 
    901 typedef struct {
    902   EFI_PHYSICAL_ADDRESS       BisEntryPoint;
    903 } EFI_MISC_BIS_ENTRY_POINT;
    904 
    905 //
    906 //////////////////////////////////////////////////////////////////////////////
    907 //
    908 // Misc. Boot Information - SMBIOS Type 32
    909 //
    910 #define EFI_MISC_BOOT_INFORMATION_STATUS_RECORD_NUMBER  0x0000001A
    911 
    912 typedef enum {
    913   EfiBootInformationStatusNoError = 0,
    914   EfiBootInformationStatusNoBootableMedia = 1,
    915   EfiBootInformationStatusNormalOSFailedLoading = 2,
    916   EfiBootInformationStatusFirmwareDetectedFailure = 3,
    917   EfiBootInformationStatusOSDetectedFailure = 4,
    918   EfiBootInformationStatusUserRequestedBoot = 5,
    919   EfiBootInformationStatusSystemSecurityViolation = 6,
    920   EfiBootInformationStatusPreviousRequestedImage = 7,
    921   EfiBootInformationStatusWatchdogTimerExpired = 8,
    922   EfiBootInformationStatusStartReserved = 9,
    923   EfiBootInformationStatusStartOemSpecific = 128,
    924   EfiBootInformationStatusStartProductSpecific = 192
    925 } EFI_MISC_BOOT_INFORMATION_STATUS_TYPE;
    926 
    927 typedef struct {
    928     EFI_MISC_BOOT_INFORMATION_STATUS_TYPE BootInformationStatus;
    929     UINT8                                 BootInformationData[9];
    930 } EFI_MISC_BOOT_INFORMATION_STATUS;
    931 
    932 //
    933 //////////////////////////////////////////////////////////////////////////////
    934 //
    935 // Misc. Management Device - SMBIOS Type 34
    936 //
    937 #define EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_RECORD_NUMBER 0x0000001B
    938 
    939 typedef enum {
    940   EfiManagementDeviceTypeOther     = 1,
    941   EfiManagementDeviceTypeUnknown   = 2,
    942   EfiManagementDeviceTypeLm75      = 3,
    943   EfiManagementDeviceTypeLm78      = 4,
    944   EfiManagementDeviceTypeLm79      = 5,
    945   EfiManagementDeviceTypeLm80      = 6,
    946   EfiManagementDeviceTypeLm81      = 7,
    947   EfiManagementDeviceTypeAdm9240   = 8,
    948   EfiManagementDeviceTypeDs1780    = 9,
    949   EfiManagementDeviceTypeMaxim1617 = 0xA,
    950   EfiManagementDeviceTypeGl518Sm   = 0xB,
    951   EfiManagementDeviceTypeW83781D   = 0xC,
    952   EfiManagementDeviceTypeHt82H791  = 0xD
    953 } EFI_MISC_MANAGEMENT_DEVICE_TYPE;
    954 
    955 typedef enum {
    956   EfiManagementDeviceAddressTypeOther   = 1,
    957   EfiManagementDeviceAddressTypeUnknown = 2,
    958   EfiManagementDeviceAddressTypeIOPort  = 3,
    959   EfiManagementDeviceAddressTypeMemory  = 4,
    960   EfiManagementDeviceAddressTypeSmbus   = 5
    961 } EFI_MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE;
    962 
    963 typedef struct {
    964   STRING_REF                              ManagementDeviceDescription;
    965   EFI_MISC_MANAGEMENT_DEVICE_TYPE         ManagementDeviceType;
    966   UINTN                                   ManagementDeviceAddress;
    967   EFI_MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE ManagementDeviceAddressType;
    968 } EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION;
    969 
    970 //
    971 //////////////////////////////////////////////////////////////////////////////
    972 //
    973 // Misc. Management Device Component - SMBIOS Type 35
    974 //
    975 #define EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_RECORD_NUMBER 0x0000001C
    976 
    977 typedef struct {
    978   STRING_REF            ManagementDeviceComponentDescription;
    979   EFI_INTER_LINK_DATA   ManagementDeviceLink;
    980   EFI_INTER_LINK_DATA   ManagementDeviceComponentLink;
    981   EFI_INTER_LINK_DATA   ManagementDeviceThresholdLink;
    982   UINT8                 ComponentType;
    983 } EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION;
    984 
    985 //
    986 //////////////////////////////////////////////////////////////////////////////
    987 //
    988 // IPMI Data Record - SMBIOS Type 38
    989 //
    990 typedef enum {
    991   EfiIpmiOther = 0,
    992   EfiIpmiKcs = 1,
    993   EfiIpmiSmic = 2,
    994   EfiIpmiBt = 3
    995 } EFI_MISC_IPMI_INTERFACE_TYPE;
    996 
    997 typedef struct {
    998   UINT16  IpmiSpecLeastSignificantDigit:4;
    999   UINT16  IpmiSpecMostSignificantDigit:4;
   1000   UINT16  Reserved:8;
   1001 } EFI_MISC_IPMI_SPECIFICATION_REVISION;
   1002 
   1003 typedef struct {
   1004   EFI_MISC_IPMI_INTERFACE_TYPE          IpmiInterfaceType;
   1005   EFI_MISC_IPMI_SPECIFICATION_REVISION  IpmiSpecificationRevision;
   1006   UINT16                                IpmiI2CSlaveAddress;
   1007   UINT16                                IpmiNvDeviceAddress;
   1008   UINT64                                IpmiBaseAddress;
   1009   EFI_DEVICE_PATH_PROTOCOL              IpmiDevicePath;
   1010 } EFI_MISC_IPMI_INTERFACE_TYPE_DATA;
   1011 
   1012 #define EFI_MISC_IPMI_INTERFACE_TYPE_RECORD_NUMBER  0x0000001D
   1013 
   1014 //
   1015 //////////////////////////////////////////////////////////////////////////////
   1016 //
   1017 //System Power supply Record - SMBIOS Type 39
   1018 //
   1019 typedef struct {
   1020   UINT16  PowerSupplyHotReplaceable  :1;
   1021   UINT16  PowerSupplyPresent         :1;
   1022   UINT16  PowerSupplyUnplugged       :1;
   1023   UINT16  InputVoltageRangeSwitch    :4;
   1024   UINT16  PowerSupplyStatus           :3;
   1025   UINT16  PowerSupplyType             :4;
   1026   UINT16  Reserved                   :2;
   1027 } POWER_SUPPLY_CHARACTERISTICS;
   1028 
   1029 typedef struct {
   1030   UINT16                          PowerUnitGroup;
   1031   STRING_REF                      PowerSupplyLocation;
   1032   STRING_REF                      PowerSupplyDeviceName;
   1033   STRING_REF                      PowerSupplyManufacturer;
   1034   STRING_REF                      PowerSupplySerialNumber;
   1035   STRING_REF                      PowerSupplyAssetTagNumber;
   1036   STRING_REF                      PowerSupplyModelPartNumber;
   1037   STRING_REF                      PowerSupplyRevisionLevel;
   1038   UINT16                          PowerSupplyMaxPowerCapacity;
   1039   POWER_SUPPLY_CHARACTERISTICS    PowerSupplyCharacteristics;
   1040   EFI_INTER_LINK_DATA             PowerSupplyInputVoltageProbeLink;
   1041   EFI_INTER_LINK_DATA             PowerSupplyCoolingDeviceLink;
   1042   EFI_INTER_LINK_DATA             PowerSupplyInputCurrentProbeLink;
   1043 } EFI_MISC_SYSTEM_POWER_SUPPLY;
   1044 
   1045 #define EFI_MISC_SYSTEM_POWER_SUPPLY_RECORD_NUMBER 0x0000001E
   1046 
   1047 //
   1048 //////////////////////////////////////////////////////////////////////////////
   1049 //
   1050 //Additional Information Record - SMBIOS Type 40
   1051 //
   1052 typedef struct {
   1053   UINT8                   EntryLength;
   1054   UINT8                   ReferencedSmbiosType;
   1055   EFI_INTER_LINK_DATA     ReferencedLink;
   1056   UINT8                   ReferencedOffset;
   1057   STRING_REF              EntryString;
   1058   EFI_PHYSICAL_ADDRESS    ValueAddress;
   1059 } EFI_MISC_ADDITIONAL_INFORMATION_ENTRY;
   1060 
   1061 typedef struct {
   1062   UINT8                                  NumberOfAdditionalInformationEntries;
   1063   EFI_PHYSICAL_ADDRESS                   AdditionalInfoEntriesAddr;
   1064 } EFI_MISC_ADDITIONAL_INFORMATION;
   1065 
   1066 #define EFI_MISC_ADDITIONAL_INFORMATION_RECORD_NUMBER 0x00000022
   1067 
   1068 //
   1069 //////////////////////////////////////////////////////////////////////////////
   1070 //
   1071 //Onboard Devices Extended Infomation Record - SMBIOS Type 41
   1072 //
   1073 typedef struct {
   1074   UINT8     TypeOfDevice:7;
   1075   UINT8     DeviceStatus:1;
   1076 } EFI_MISC_DEVICE_TYPE;
   1077 
   1078 typedef struct {
   1079   STRING_REF              ReferenceDesignation;
   1080   EFI_MISC_DEVICE_TYPE    DeviceType;
   1081   UINT8                   DeviceTypeInstance;
   1082   UINT16                  SegmentGroupNum;
   1083   UINT8                   BusNum;
   1084   EFI_MISC_DEV_FUNC_NUM   DevFuncNum;
   1085 } EFI_MISC_ONBOARD_DEVICES_EXTENDED_INFORMATION;
   1086 
   1087 #define EFI_MISC_ONBOARD_DEVICES_EXTENDED_INFORMATION_RECORD_NUMBER 0x00000023
   1088 
   1089 //
   1090 //////////////////////////////////////////////////////////////////////////////
   1091 //
   1092 // Generic Data Record - All SMBIOS Type
   1093 // Put smbios raw data into one datahub record directly. Smbios driver would
   1094 // copy smbios raw data into smbios table but not take any translation.
   1095 //
   1096 typedef struct {
   1097   UINT8       Type;
   1098   UINT8       Length;
   1099   UINT16      Handle;
   1100 } SMBIOS_STRUCTURE_HDR;
   1101 
   1102 typedef struct {
   1103   SMBIOS_STRUCTURE_HDR          Header;
   1104   UINT8                         RawData[1];
   1105 } EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION;
   1106 
   1107 #define EFI_MISC_SMBIOS_STRUCT_ENCAP_RECORD_NUMBER  0x0000001F
   1108 
   1109 //
   1110 //////////////////////////////////////////////////////////////////////////////
   1111 //
   1112 //  Misc. System Event Log  - SMBIOS Type 15
   1113 //
   1114 #define EFI_MISC_SYSTEM_EVENT_LOG_RECORD_NUMBER 0x00000020
   1115 
   1116 typedef enum {
   1117   EfiEventLogTypeReserved1                          = 0,
   1118   EfiEventLogTypeSingleBitEccMemoryError            = 1,
   1119   EfiEventLogTypeMultiBitEccMemoryError             = 2,
   1120   EfiEventLogTypeParityMemoryError                  = 3,
   1121   EfiEventLogTypeBusTimeOut                         = 4,
   1122   EfiEventLogTypeIoChannelCheck                     = 5,
   1123   EfiEventLogTypeSoftwareNmi                        = 6,
   1124   EfiEventLogTypePostMemoryResize                   = 7,
   1125   EfiEventLogTypePostError                          = 8,
   1126   EfiEventLogTypePciParityError                     = 9,
   1127   EfiEventLogTypePciSystemError                     = 0xA,
   1128   EfiEventLogTypeCpuFailure                         = 0xB,
   1129   EfiEventLogTypeEisaFailSafeTimerTimeOut           = 0xC,
   1130   EfiEventLogTypeCorrectableMemoryLogDisabled       = 0xD,
   1131   EfiEventLogTypeLoggingDisabled                    = 0xE,
   1132   EfiEventLogTypeReserved2                          = 0xF,
   1133   EfiEventLogTypeSystemLimitExceeded                = 0x10,
   1134   EfiEventLogTypeAsynchronousHardwareTimerExpired   = 0x11,
   1135   EfiEventLogTypeSystemConfigurationInformation     = 0x12,
   1136   EfiEventLogTypeHardDiskInformation                = 0x13,
   1137   EfiEventLogTypeSystemReconfigured                 = 0x14,
   1138   EfiEventLogTypeUncorrectableCpuComplexError       = 0x15,
   1139   EfiEventLogTypeLogAreaResetCleared                = 0x16,
   1140   EfiEventLogTypeSystemBoot                         = 0x17,
   1141   EfiEventLogTypeEndOfLog                           = 0xFF
   1142 } EFI_MISC_LOG_TYPE;
   1143 
   1144 typedef enum {
   1145   EfiEventLogDataFormatTypeNone = 0,
   1146   EfiEventLogDataFormatTypeHandle = 1,
   1147   EfiEventLogDataFormatTypeMultipleEvent = 2,
   1148   EfiEventLogDataFormatTypeMultipleEventHandle = 3,
   1149   EfiEventLogDataFormatTypePostResultsBitmap = 4,
   1150   EfiEventLogDataFormatTypeSystemManagement = 5,
   1151   EfiEventLogDataFormatTypeMultipleEventSystemManagement = 6
   1152 } EFI_MISC_VARIABLE_DATA_FORMAT_TYPE;
   1153 
   1154 typedef struct {
   1155   UINT8                 LogType;
   1156   UINT8                 DataFormatType;
   1157 } EFI_MISC_EVENT_LOG_TYPE;
   1158 
   1159 typedef struct {
   1160   UINT16                    LogAreaLength;
   1161   UINT16                    LogHeaderStartOffset;
   1162   UINT16                    LogDataStartOffset;
   1163   UINT8                     AccessMethod;
   1164   UINT8                     LogStatus;
   1165   UINT32                    LogChangeToken;
   1166   UINT32                    AccessMethodAddress;
   1167   UINT8                     LogHeaderFormat;
   1168   UINT8                     NumberOfSupportedLogType;
   1169   UINT8                     LengthOfLogDescriptor;
   1170   EFI_PHYSICAL_ADDRESS      EventLogTypeDescriptors; // Pointer to EFI_MISC_EVENT_LOG_TYPE
   1171 } EFI_MISC_SYSTEM_EVENT_LOG;
   1172 
   1173 //
   1174 // Access Method.
   1175 //  0x00~0x04:  as following definition
   1176 //  0x05~0x7f:  Available for future assignment.
   1177 //  0x80~0xff:  BIOS Vendor/OEM-specific.
   1178 //
   1179 #define ACCESS_INDEXIO_1INDEX8BIT_DATA8BIT    0x00
   1180 #define ACCESS_INDEXIO_2INDEX8BIT_DATA8BIT    0X01
   1181 #define ACCESS_INDEXIO_1INDEX16BIT_DATA8BIT   0X02
   1182 #define ACCESS_MEMORY_MAPPED                  0x03
   1183 #define ACCESS_GPNV                           0x04
   1184 
   1185 //
   1186 //////////////////////////////////////////////////////////////////////////////
   1187 //
   1188 //Management Device Threshold Data Record - SMBIOS Type 36
   1189 //
   1190 #define EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD_RECORD_NUMBER  0x00000021
   1191 
   1192 typedef struct {
   1193   UINT16                          LowerThresNonCritical;
   1194   UINT16                          UpperThresNonCritical;
   1195   UINT16                          LowerThresCritical;
   1196   UINT16                          UpperThresCritical;
   1197   UINT16                          LowerThresNonRecover;
   1198   UINT16                          UpperThresNonRecover;
   1199 } EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD;
   1200 
   1201 //
   1202 //////////////////////////////////////////////////////////////////////////////
   1203 //
   1204 //
   1205 //
   1206 typedef union {
   1207   EFI_MISC_LAST_PCI_BUS                                 LastPciBus;
   1208   EFI_MISC_BIOS_VENDOR                                  MiscBiosVendor;
   1209   EFI_MISC_SYSTEM_MANUFACTURER                          MiscSystemManufacturer;
   1210   EFI_MISC_BASE_BOARD_MANUFACTURER                      MiscBaseBoardManufacturer;
   1211   EFI_MISC_CHASSIS_MANUFACTURER                         MiscChassisManufacturer;
   1212   EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR           MiscPortInternalConnectorDesignator;
   1213   EFI_MISC_SYSTEM_SLOT_DESIGNATION                      MiscSystemSlotDesignation;
   1214   EFI_MISC_ONBOARD_DEVICE                               MiscOnboardDevice;
   1215   EFI_MISC_OEM_STRING                                   MiscOemString;
   1216   EFI_MISC_SYSTEM_OPTION_STRING                         MiscOptionString;
   1217   EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES              NumberOfInstallableLanguages;
   1218   EFI_MISC_SYSTEM_LANGUAGE_STRING                       MiscSystemLanguageString;
   1219   EFI_MISC_GROUP_NAME_DATA                              MiscGroupNameData;
   1220   EFI_MISC_GROUP_ITEM_SET_DATA                          MiscGroupItemSetData;
   1221   EFI_MISC_SYSTEM_EVENT_LOG                             MiscSystemEventLog;
   1222   EFI_MISC_ONBOARD_DEVICE_TYPE_DATA                     MiscOnboardDeviceTypeData;
   1223   EFI_MISC_PORTABLE_BATTERY                             MiscPortableBattery;
   1224   EFI_MISC_RESET_CAPABILITIES_DATA                      MiscResetCapablilitiesData;
   1225   EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA              MiscHardwareSecuritySettingsData;
   1226   EFI_MISC_SCHEDULED_POWER_ON_MONTH                     MiscScheduledPowerOnMonth;
   1227   EFI_MISC_VOLTAGE_PROBE_DESCRIPTION                    MiscVoltageProbeDescription;
   1228   EFI_MISC_COOLING_DEVICE_TEMP_LINK                     MiscCoolingDeviceTempLink;
   1229   EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION                MiscTemperatureProbeDescription;
   1230   EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION         MiscElectricalCurrentProbeDescription;
   1231   EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION       MiscRemoteAccessManufacturerDescription;
   1232   EFI_MISC_BIS_ENTRY_POINT                              MiscBisEntryPoint;
   1233   EFI_MISC_BOOT_INFORMATION_STATUS                      MiscBootInformationStatus;
   1234   EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION                MiscManagementDeviceDescription;
   1235   EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION      MiscManagementDeviceComponentDescription;
   1236   EFI_MISC_IPMI_INTERFACE_TYPE_DATA                     MiscIpmiInterfaceTypeData;
   1237   EFI_MISC_SYSTEM_POWER_SUPPLY                          MiscPowerSupplyInfo;
   1238   EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION                  MiscSmbiosStructEncapsulation;
   1239   EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD                  MiscManagementDeviceThreshold;
   1240   EFI_MISC_ADDITIONAL_INFORMATION                       MiscAdditionalInformation;
   1241   EFI_MISC_ONBOARD_DEVICES_EXTENDED_INFORMATION         MiscOnBoardDevicesExtendedInformation;
   1242 } EFI_MISC_SUBCLASS_RECORDS;
   1243 
   1244 //
   1245 //
   1246 //
   1247 typedef struct {
   1248   EFI_SUBCLASS_TYPE1_HEADER       Header;
   1249   EFI_MISC_SUBCLASS_RECORDS       Record;
   1250 } EFI_MISC_SUBCLASS_DRIVER_DATA;
   1251 
   1252 #pragma pack()
   1253 
   1254 #endif /* _DATAHUB_SUBCLASS_MISC_H_ */
   1255 /* eof - DataHubSubClassMisc.h */
   1256