summaryrefslogtreecommitdiff
path: root/Board/EM/SMBIOS/SMBiosStaticData
diff options
context:
space:
mode:
authorraywu <raywu0301@gmail.com>2018-06-15 00:00:50 +0800
committerraywu <raywu0301@gmail.com>2018-06-15 00:00:50 +0800
commitb7c51c9cf4864df6aabb99a1ae843becd577237c (patch)
treeeebe9b0d0ca03062955223097e57da84dd618b9a /Board/EM/SMBIOS/SMBiosStaticData
downloadzprj-b7c51c9cf4864df6aabb99a1ae843becd577237c.tar.xz
init. 1AQQW051HEADmaster
Diffstat (limited to 'Board/EM/SMBIOS/SMBiosStaticData')
-rw-r--r--Board/EM/SMBIOS/SMBiosStaticData/SMB.EQU1345
-rw-r--r--Board/EM/SMBIOS/SMBiosStaticData/SMBDATA.MAC2708
-rw-r--r--Board/EM/SMBIOS/SMBiosStaticData/SMBMACRO.AID1228
-rw-r--r--Board/EM/SMBIOS/SMBiosStaticData/SMBSTRUC.DEF793
-rw-r--r--Board/EM/SMBIOS/SMBiosStaticData/Smbdesc.def2021
-rw-r--r--Board/EM/SMBIOS/SMBiosStaticData/Smbhdr.equ297
-rw-r--r--Board/EM/SMBIOS/SMBiosStaticData/SmbiosStaticData.asm259
-rw-r--r--Board/EM/SMBIOS/SMBiosStaticData/SmbiosStaticData.cif17
-rw-r--r--Board/EM/SMBIOS/SMBiosStaticData/SmbiosStaticData.mak81
-rw-r--r--Board/EM/SMBIOS/SMBiosStaticData/SmbiosStaticData.sdl4036
-rw-r--r--Board/EM/SMBIOS/SMBiosStaticData/SmbiosStaticDataEnd.asm81
11 files changed, 12866 insertions, 0 deletions
diff --git a/Board/EM/SMBIOS/SMBiosStaticData/SMB.EQU b/Board/EM/SMBIOS/SMBiosStaticData/SMB.EQU
new file mode 100644
index 0000000..ca721db
--- /dev/null
+++ b/Board/EM/SMBIOS/SMBiosStaticData/SMB.EQU
@@ -0,0 +1,1345 @@
+;Inclusion guard
+ifndef _SMB_EQU_
+_SMB_EQU_ equ 1
+
+;----------------------------------------------------------------------------
+; Do not change any structure definition unless otherwise specified
+;----------------------------------------------------------------------------
+
+;****************************************************************************
+;****************************************************************************
+;** **
+;** (C)Copyright 1985-2013, American Megatrends, Inc. **
+;** **
+;** All Rights Reserved. **
+;** **
+;** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **
+;** **
+;** Phone: (770)-246-8600 **
+;** **
+;****************************************************************************
+;****************************************************************************
+
+;****************************************************************************
+; $Header: /Alaska/BIN/Modules/SMBIOS/SmbiosStaticData/SMB.EQU 9 5/29/13 12:50p Davidd $
+;
+; $Revision: 9 $
+;
+; $Date: 5/29/13 12:50p $
+;
+;****************************************************************************
+; Revision History
+; ----------------
+; $Log: /Alaska/BIN/Modules/SMBIOS/SmbiosStaticData/SMB.EQU $
+;
+; 9 5/29/13 12:50p Davidd
+; [TAG] EIP124735
+; [Category] Spec Update
+; [Severity] Normal
+; [Description] SMBIOS 2.8.0 specification support for Aptio 4
+; [Files] Smb.equ
+; Smbdata.mac
+; Smbdesc.def
+; Smbstruc.def
+; Smbios.c
+; Smbios.h
+; SmbiosDynamicData.h
+;
+; 8 4/06/11 10:30a Davidd
+; [TAG] EIP56234
+; [Category] Spec Update
+; [Severity] Minor
+; [Description] SMBIOS 2.7.1 requirement
+; [Files] Smb.equ
+;
+; 7 10/08/10 8:17p Davidd
+; [TAG] EIP43278
+;
+; [Category] Function Request
+;
+; [Severity] Normal
+;
+; [Description] SMBIOS 2.7 requirement
+;
+; [Files] Include\Protocol\Smbios.h
+; Include\Protocol\SmbiosDynamicData.h
+; Board\EM\SMBIOS\SMBiosStaticData\SmbiosStaticData.sdl
+; Board\EM\SMBIOS\SMBiosStaticData\SMBDATA.MAC
+; Board\EM\SMBIOS\SMBiosStaticData\SMBSTRUC.DEF
+; Board\EM\SMBIOS\SMBiosStaticData\SMBMACRO.AID
+; Board\EM\SMBIOS\SMBiosStaticData\Smbdesc.def
+; Board\EM\SMBIOS\SMBiosStaticData\SMB.EQU
+;
+; 6 6/02/09 4:47p Davidd
+; Updated AMI headers (EIP 22180)
+;
+; 5 5/21/09 3:42p Davidd
+; Added new equates per SMBIOS 2.6.1 specification.
+;
+; 4 10/13/08 12:02p Davidd
+; Changes made to support SMBIOS specification v2.5 and v2.6
+;
+; 3 3/29/07 5:15p Davidd
+; Changed the year in the AMI banner.
+;
+; 2 5/31/05 12:03p Davidd
+; Added equates for PCI Express.
+;
+; 1 4/29/05 2:15p Davidd
+; Initial checkin.
+;
+; 9 11/07/03 4:39p Girim
+; Corrected the Type Equates, added the Processor Type, Processor Upgrade
+; and Pointing Device Equates and Updated the Copyright Headers.
+;
+; 8 10/18/02 3:45p Girim
+; SMBIOS 2.3.3 Compliance.
+;
+; 7 10/18/02 3:40p Girim
+; Added new equates in Base Board Info (Type 2) and Processor Info (Type
+; 4) as defined in SMBIOS 2.3.3.
+; Removed duplicate definitions in System Enclosure (Type 3)
+;
+; 6 9/09/02 7:07p Girim
+; Added Safe Keyword Log:
+;
+;****************************************************************************
+
+;----------------------------------------------------------------------------
+; GENERAL EQUATES
+;----------------------------------------------------------------------------
+; indicate the presence/absence of an item/structure, used in SMBDESC.DEF
+Present EQU 1 ; present
+Absent EQU 0 ; absent
+
+; indicate the item yes/not supported information, used in SMBDESC.DEF
+Yes EQU 1 ; supported
+No EQU 0 ; not supported
+
+; indicate the item enabled/disabled information, used in SMBDESC.DEF
+ENABLED EQU 1 ; enabled
+DISABLED EQU 0 ; disabled
+
+IEPS_LENGTH EQU 10h ; length of IEPS
+DEFINE textequ <TEXTEQU>
+
+;----------------------------------------------------------------------------
+; DIFFERENT STRUCTURE TYPE EQUATES
+;----------------------------------------------------------------------------
+; Structure Name Structure Type
+BIOS_INFORMATION_TYPE equ 00h ; type 00
+SYSTEM_INFORMATION_TYPE equ 01h ; type 01
+BASE_BOARD_INFORMATION_TYPE equ 02h ; type 02
+SYSTEM_ENCLOSURE_CHASSIS_TYPE equ 03h ; type 03
+PROCESSOR_INFORMATION_TYPE equ 04h ; type 04
+MEMORY_CONTROLLER_INFORMATION_TYPE equ 05h ; type 05
+MEMORY_MODULE_INFORMATION_TYPE equ 06h ; type 06
+CACHE_INFORMATION_TYPE equ 07h ; type 07
+PORT_CONNECTOR_INFORMATION_TYPE equ 08h ; type 08
+SYSTEM_SLOT_INFORMATION_TYPE equ 09h ; type 09
+ONBOARD_DEVICE_INFORMATION_TYPE equ 0Ah ; type 10
+OEM_STRING_INFORMATION_TYPE equ 0Bh ; type 11
+SYSTEM_CONFIGURATION_TYPE equ 0Ch ; type 12
+BIOS_LANGUAGE_INFORMATION_TYPE equ 0Dh ; type 13
+GROUP_ASSOCIATION_TYPE equ 0Eh ; type 14
+EVENTLOG_INFORMATION_TYPE equ 0Fh ; type 15
+MEMORY_ARRAY_INFORMATION_TYPE equ 10h ; type 16
+MEMORY_DEVICE_INFORMATION_TYPE equ 11h ; type 17
+MEMORY_ERROR_INFORMATION_TYPE equ 12h ; type 18
+MEMORY_ARRAY_MAPPED_ADDRESS_INFORMATION_TYPE equ 13h ; type 19
+MEMORY_DEVICE_MAPPED_ADDRESS_INFORMATION_TYPE equ 14h ; type 20
+BUILTIN_POINTING_DEVICE_TYPE equ 15h ; type 21
+PORTABLE_BATTERY_TYPE equ 16h ; type 22
+SYSTEM_RESET_TYPE equ 17h ; type 23
+HARDWARE_SECURITY_TYPE equ 18h ; type 24
+SYSTEM_POWER_CONTROLS_TYPE equ 19h ; type 25
+VOLTAGE_PROBE_TYPE equ 1Ah ; type 26
+COOLING_DEVICE_TYPE equ 1Bh ; type 27
+TEMPATURE_PROBE_TYPE equ 1Ch ; type 28
+ELECTRICAL_CURRENT_PROBE_TYPE equ 1Dh ; type 29
+OUT_OF_BAND_REMOTE_ACCESS_TYPE equ 1Eh ; type 30
+BOOT_INTEGRITY_SERVICES_TYPE equ 1Fh ; type 31
+SYSTEM_BOOT_INFORMATION_TYPE equ 20h ; type 32
+SIXTYFOUR_BIT_MEMORY_ERROR_INFORMATION_TYPE equ 21h ; type 33
+MANAGEMENT_DEVICE_TYPE equ 22h ; type 34
+MANAGEMENT_DEVICE_COMPONENT_TYPE equ 23h ; type 35
+MANAGEMENT_DEVICE_THRESHOLD_DATA_TYPE equ 24h ; type 36
+MEMORY_CHANNEL_TYPE equ 25h ; type 37
+IPMI_DEVICE_INFORMATION_TYPE equ 26h ; type 38
+SYSTEM_POWER_SUPPLY_TYPE equ 27h ; type 39
+INACTIVE_STRUCTURE_TYPE equ 7Eh ; type 126
+END_OF_TABLE_TYPE equ 7Fh ; type 127
+OEM_IO_GPNV_INFORMATION_TYPE equ 0F0h ; type F0..OEM Defined
+OEM_MEMORY_GPNV_INFORMATION_TYPE equ 0F1h ; type F1..OEM Defined
+
+;----------------------------------------------------------------------------
+; Structure Type 0: No equates used in BIOS INFORMATION Structure
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 1: Equates used in SYSTEM INFORMATION Structure
+;----------------------------------------------------------------------------
+; Wakeup Type (an enumerated BYTE value)
+; Equate Name Value Meaning
+; 00h ; Reserved
+SI_OTHER equ 01h ; Other
+SI_UNKNOWN equ 02h ; Unknown
+SI_APM_TIMER equ 03h ; APM Timer
+SI_MODEM_RING equ 04h ; Modem Ring
+SI_LAN_REMOTE equ 05h ; LAN Remote
+SI_POWER_SWITCH equ 06h ; Power Switch
+SI_PCI_PME equ 07h ; PCI PME#
+SI_AC_POWER equ 08h ; AC Power Restored
+
+;----------------------------------------------------------------------------
+; Structure Type 2: Equates used in BASE BOARD INFORMATION Structure
+;----------------------------------------------------------------------------
+; Base Board Type (an enumerated BYTE value)
+; Equate Name Value Meaning
+; 00h ; Reserved
+BB_UNKNOWN equ 01h ; Unknown
+BB_OTHER equ 02h ; Other
+BB_SERVER_BLADE equ 03h ; Server Blade
+BB_CONNECTIVITY_SWITCH equ 04h ; Connectivity Switch
+BB_SYS_MGMT_MODULE equ 05h ; System Management Module
+BB_PROCESSOR_MODULE equ 06h ; Processor Module
+BB_IO_MODULE equ 07h ; I/O Module
+BB_MEMORY_MODULE equ 08h ; Memory Module
+BB_DAUGHTER_BOARD equ 09h ; Daughter Board
+BB_MOTHER_BOARD equ 0Ah ; Motherboard (includes Processor, Memory, and I/O)
+BB_PROC_MEM_MODULE equ 0Bh ; Processor/Memory Module
+BB_PROC_IO_MODULE equ 0Ch ; Processor/IO Module
+BB_INTERCONNECT_BOARD equ 0Dh ; Interconnect Board
+
+;----------------------------------------------------------------------------
+; Structure Type 3: Equates used in SYSTEM ENCLOSURE/CHASSIS Structure
+;----------------------------------------------------------------------------
+; System Chassis Type (an enumerated BYTE value)
+; Equate Name Value Meaning
+; 00h ; Reserved
+SE_OTHER equ 01h ; Other
+SE_UNKNOWN equ 02h ; Unknown
+SE_DESKTOP equ 03h ; Desktop
+SE_LOW_PROFILE_DTP equ 04h ; Low Profile Desktop
+SE_PIZZA_BOX equ 05h ; Pizza Box
+SE_MINI_TOWER equ 06h ; Mini Tower
+SE_TOWER equ 07h ; Tower
+SE_PORTABLE equ 08h ; Portable
+SE_LAPTOP equ 09h ; Laptop
+SE_NOTEBOOK equ 0Ah ; Notebook
+SE_HAND_HELD equ 0Bh ; Handheld
+SE_DOCKING_STATION equ 0Ch ; Docking Station
+SE_ALL_IN_ONE equ 0Dh ; All in One
+SE_SUB_NOTEBOOK equ 0Eh ; Sub Notebook
+SE_SPACE_SAVING equ 0Fh ; Space Saving
+SE_LUNCH_BOX equ 10h ; Lunch Box
+SE_MAIN_SER_CHASIS equ 11h ; Main Server Chassis
+SE_EXP_CHASIS equ 12h ; Expansion Chassis
+SE_SUB_CHASIS equ 13h ; SubChassis
+SE_BUS_EXP_CHASIS equ 14h ; Bus Expansion Chassis
+SE_PERPL_CHASIS equ 15h ; Peripheral Chassis
+SE_RAID_CHASIS equ 16h ; RAID Chassis
+SE_ROCK_MOUNT_CHASIS equ 17h ; Rack Mount Chassis
+SE_SEALED_CASE_PC equ 18h ; Sealed-case PC
+SE_MULTI_SYS_CHASIS equ 19h ; Multi-System Chasis
+SE_COMPACT_PCI equ 1Ah ; CompactPCI
+SE_ADVANCED_TCA equ 1Bh ; AdvancedTCA
+SE_BLADE equ 1Ch ; Blade
+SE_BLADE_ENCLOSURE equ 1Dh ; Blade Enclosure
+
+;----------------------------------------------------------------------------
+; System Chassis Bootup state, Chassis Power Supply and Chassis Thermal State
+; equates (an enumerated BYTE value)
+; Equate Name Value Meaning
+SCS_OTHER equ 01h ; Other
+SCS_UNKNOWN equ 02h ; Unknown
+SCS_SAFE equ 03h ; Safe
+SCS_WARNING equ 04h ; Warning
+SCS_CRITICAL equ 05h ; Critical
+SCS_NON_RECOVERABLE equ 06h ; Non-recoverable
+
+;----------------------------------------------------------------------------
+; System Chassis Security state equates (an enumerated BYTE value)
+; Equate Name Value Meaning
+SSS_OTHER equ 01h ; Other
+SSS_UNKNOWN equ 02h ; Unknown
+SSS_NONE equ 03h ; None
+SSS_EXT_INTE_LOCKED equ 04h ; External interface locked out
+SSS_EXT_INTE_ENABLE equ 05h ; External interface enabled
+
+;----------------------------------------------------------------------------
+; Structure Type 4: Equates used in PROCESSOR INFORMATION Structure
+;----------------------------------------------------------------------------
+; Processor Type equates (an enumerated BYTE value)
+; Equate Name Value Meaning
+CPU_OTHER equ 01h ; Other
+CPU_UNKNOWN equ 02h ; Unknown
+CPU_CENTRAL_PROCESSOR equ 03h ; Central processor
+CPU_MATH_PROCESSOR equ 04h ; Math processor
+CPU_DSP_PROCESSOR equ 05h ; DSP processor
+CPU_VIDEO_PROCESSOR equ 06h ; Video Processor
+
+;----------------------------------------------------------------------------
+; Processor Family equates (an enumerated BYTE value)
+; Equate Name Value Meaning
+FA_OTHER equ 01h ; Other
+FA_UNKNOWN equ 02h ; Unknown
+FA_8086 equ 03h ; 8086
+FA_80286 equ 04h ; 80286
+FA_80386 equ 05h ; 80386
+FA_80486 equ 06h ; 80486
+FA_8087 equ 07h ; 8087
+FA_80287 equ 08h ; 80287
+FA_80387 equ 09h ; 80387
+FA_80487 equ 0Ah ; 80487
+FA_PENTIUM_FAMILY equ 0Bh ; Pentium family
+FA_PENTIUM_PRO_FAMILY equ 0Ch ; Pemtium-Pro family
+FA_PENTIUM_II_FAMILY equ 0Dh ; Pentium II family
+FA_PENTIUM_MMX_FAMILY equ 0Eh ; Pentium mmx family
+FA_CELERON_FAMILY equ 0Fh ; Pentium Celeron family
+FA_PII_XEON_FAMILY equ 10h ; Pentium II Xeon family
+FA_PIII_FAMILY equ 11h ; Pentium III family
+FA_M1_FAMILY equ 12h ; M1 family
+FA_M2_FAMILY equ 13h ; M2 family
+FA_CELERON_M equ 14h ; Intel(R) Celeron(R) M Processor
+FA_PENTIUM_4_HT equ 15h ; Intel(R) Pentium(R) 4 HT Processor
+FA_AMD_DURON_FAMILY equ 18h ; AMD Duron family
+FA_K5_FAMILY equ 19h ; AMD K5 family
+FA_K6_FAMILY equ 1Ah ; AMD K6 family
+FA_K6_2_FAMILY equ 1Bh ; AMD K6-2 family
+FA_K6_3_FAMILY equ 1Ch ; AMD K6-3 family
+FA_AMD_ATHLON_FAMILY equ 1Dh ; AMD Athlon family
+FA_AMD_2900_FAMILY equ 1Eh ; AMD29000 family
+FA_K6_2P_FAMILY equ 1Fh ; AMD K6-2+ family
+FA_POWER_PC_FAMILY equ 20h ; Power Pc family
+FA_POWER_PC_601 equ 21h ; Power Pc 601 family
+FA_POWER_PC_603 equ 22h ; Power Pc 603 family
+FA_POWER_PC_603_PLUS equ 23h ; Power Pc 603 Plus family
+FA_POWER_PC_604 equ 24h ; Power Pc 604 family
+FA_POWER_PC_620 equ 25h ; Power Pc 620 family
+FA_POWER_PC_X704 equ 26h ; Power Pc x704 family
+FA_POWER_PC_750 equ 27h ; Power Pc 750 family
+FA_CORE_DUO equ 28h ; Intel(R) Core(TM) Duo Processor
+FA_CORE_DUO_MOBILE equ 29h ; Intel(R) Core(TM) Duo Mobile Processor
+FA_CORE_SOLO_MOBILE equ 2Ah ; Intel(R) Core(TM) Solo Mobile Processor
+FA_ATOM equ 2Bh ; Intel(R) Atom(TM) Processor
+FA_ALPHA_FAMILY equ 30h ; DEC Aplpha family
+FA_ALPHA_21064 equ 31h ; Alpha 21064
+FA_ALPHA_21066 equ 32h ; Alpha 21066
+FA_ALPHA_21164 equ 33h ; Alpha 21164
+FA_ALPHA_21164PC equ 34h ; Alpha 21064PC
+FA_ALPHA_21164a equ 35h ; Alpha 21164a
+FA_ALPHA_21264 equ 36h ; Alpha 21264
+FA_ALPHA_21364 equ 37h ; Alpha 21364
+FA_AMD_TURION_II_ULTRA equ 38h ; AMD Turion II Ultra Dual-Core Mobile M Processor Family
+FA_AMD_TURION_II_DUAL equ 39h ; AMD Turion II Dual-Core Mobile M Processor Family
+FA_ATHLON_II_DUAL equ 3Ah ; AMD Athlon II Dual-Core M Processor
+FA_OPTERON_6100 equ 3Bh ; AMD Opteron 6100 Series Processor
+FA_OPTERON_4100 equ 3Ch ; AMD Opteron 4100 Series Processor
+FA_OPTERON_6200 equ 3Dh ; AMD Opteron 6200 Series Processor
+FA_OPTERON_4200 equ 3Eh ; AMD Opteron 4200 Series Processor
+FA_AMD_FX equ 3Fh ; AMD FX(TM) Series Processor
+FA_MIPS_FAMILY equ 40h ; Mips family
+FA_MIPS_R4000 equ 41h ; Mips R4000
+FA_MIPS_R4200 equ 42h ; Mips R4200
+FA_MIPS_R4400 equ 43h ; Mips R4400
+FA_MIPS_R4600 equ 44h ; Mips R4600
+FA_MIPS_R10000 equ 45h ; Mips R10000
+FA_AMD_C equ 46h ; AMD C-Series Processor
+FA_AMD_E equ 47h ; AMD E-Series Processor
+FA_AMD_A equ 48h ; AMD A-Series Processor
+FA_AMD_G equ 49h ; AMD G-Series Processor
+FA_AMD_Z equ 4Ah ; AMD Z-Series Processor
+FA_AMD_R equ 4Bh ; AMD R-Series Processor
+FA_OPTERON_4300 equ 4Ch ; AMD Opteron(TM) 4300 Series Processor
+FA_OPTERON_6300 equ 4Dh ; AMD Opteron(TM) 6300 Series Processor
+FA_OPTERON_3300 equ 4Eh ; AMD Opteron(TM) 3300 Series Processor
+FA_FIREPRO equ 4Fh ; AMD FirePro(TM) Series Processor
+FA_SPARC_FAMILY equ 50h ; Sparc family
+FA_SPARC_SUPPERSPARC equ 51h ; SupperSPARC
+FA_SPARC_MICROSPARC_II equ 52h ; microSPARC II
+FA_SPARC_MICROSPARC_IIep equ 53h ; microSPARC IIep
+FA_SPARC_ULTRASPARC equ 54h ; ultraSPARC
+FA_SPARC_ULTRASPARC_II equ 55h ; ultraSPARC II
+FA_SPARC_ULTRASPARC_II_i equ 56h ; ultraSPARC IIi
+FA_SPARC_ULTRASPARC_III equ 57h ; ultraSPARC III
+FA_SPARC_ULTRASPARC_III_i equ 58h ; ultraSPARC IIIi
+FA_68040_FAMILY equ 60h ; 68040 family
+FA_68xxx_FAMILY equ 61h ; 68xxx family
+FA_68000 equ 62h ; Motorola 68000 family
+FA_68010 equ 63h ; Motorola 68010 family
+FA_68020 equ 64h ; Motorola 68020 family
+FA_68030 equ 65h ; Motorola 68030 family
+FA_HOBBIT_FAMILY equ 70h ; Hobbit family
+FA_CRUSOE_TM5000 equ 78h ; Crusoe TM5000
+FA_CRUSOE_TM3000 equ 79h ; Crusoe TM3000
+FA_EFFICEON_TM8000 equ 7Ah ; Efficeon TM8000
+FA_WEITEK_FAMILY equ 80h ; Weitek family
+FA_ITANIUM_FAMILY equ 82h ; Itanium family
+FA_AMD_ATHLON_64_FAMILY equ 83h ; AMD Athlon 64 family
+FA_AMD_OPTERON_FAMILY equ 84h ; AMD Opteron family
+FA_AMD_SEMPRON_FAMILY equ 85h ; AMD Sempron family
+FA_AMD_TURION_FAMILY equ 86h ; AMD Turion family
+FA_AMD_OPTERON_DUALCORE equ 87h ; Dual-Core AMD Opteron family
+FA_AMD_ATHLON_64X2_DUALCORE equ 88h ; AMD Athlon 64 X2 Dual-Core
+FA_AMD_TURION_64X2_MOBILE equ 89h ; AMD Turion 64 X2 Mobile
+FA_AMD_QUAD_CORE_OPTERON equ 8Ah ; Quad-Core AMD Opteron(TM) Processor Family
+FA_AMD_3RD_GEN_OPTERON equ 8Bh ; Third-Generation AMD Opteron(TM) Processor Family
+FA_AMD_PHENOM_FX_QUAD_CORE equ 8Ch ; AMD Phenom(TM) FX Quad-Core Processor Family
+FA_AMD_PHENOM_X4_QUAD_CORE equ 8Dh ; AMD Phenom(TM) X4 Quad-Core Processor Family
+FA_AMD_PHENOM_X2_DUAL_CORE equ 8Eh ; AMD Phenom(TM) X2 Dual-Core Processor Family
+FA_AMD_ATHLON_X2_DUAL_CORE equ 8Fh ; AMD Athlon(TM) X2 Dual-Core Processor Family
+FA_RISC_FAMILY equ 90h ; RISC family
+FA_PA_RISC_8500 equ 91h ; PA-RISC 8500
+FA_PA_RISC_8000 equ 92h ; PA-RISC 8000
+FA_PA_RISC_7300LC equ 93h ; PA-RISC 7300LC
+FA_PA_RISC_7200 equ 94h ; PA-RISC 7200
+FA_PA_RISC_7100LC equ 95h ; PA-RISC 7100LC
+FA_PA_RISC_7100 equ 96h ; PA-RISC 7100
+FA_V30_FAMILY equ 0A0h ; V30 family
+FA_QUAD_CORE_XEON_3200 equ 0A1h ; Quad-Core Intel(R) Xeon(R) processor 3200 Series
+FA_DUAL_CORE_XEON_3000 equ 0A2h ; Dual-Core Intel(R) Xeon(R) processor 3000 Series
+FA_QUAD_CORE_XEON_5300 equ 0A3h ; Quad-Core Intel(R) Xeon(R) processor 5300 Series
+FA_DUAL_CORE_XEON_5100 equ 0A4h ; Dual-Core Intel(R) Xeon(R) processor 5100 Series
+FA_DUAL_CORE_XEON_5000 equ 0A5h ; Dual-Core Intel(R) Xeon(R) processor 5000 Series
+FA_DUAL_CORE_XEON_LV equ 0A6h ; Dual-Core Intel(R) Xeon(R) processor LV
+FA_DUAL_CORE_XEON_ULV equ 0A7h ; Dual-Core Intel(R) Xeon(R) processor ULV
+FA_DUAL_CORE_XEON_7100 equ 0A8h ; Dual-Core Intel(R) Xeon(R) processor 7100 Series
+FA_QUAD_CORE_XEON_5400 equ 0A9h ; Quad-Core Intel(R) Xeon(R) processor 5400 Series
+FA_QUAD_CORE_XEON equ 0AAh ; Quad-Core Intel(R) Xeon(R) processor
+FA_DUAL_CORE_XEON_5200 equ 0ABh ; Dual-Core Intel(R) Xeon(R) processor 5200 Series
+FA_DUAL_CORE_XEON_7200 equ 0ACh ; Dual-Core Intel(R) Xeon(R) processor 7200 Series
+FA_QUAD_CORE_XEON_7300 equ 0ADh ; Quad-Core Intel(R) Xeon(R) processor 7300 Series
+FA_QUAD_CORE_XEON_7400 equ 0AEh ; Quad-Core Intel(R) Xeon(R) processor 7400 Series
+FA_MULTI_CORE_XEON_7400 equ 0AFh ; Multi-Core Intel(R) Xeon(R) processor 7400 Series
+FA_PIII_XEON_FAMILY equ 0B0h ; Pentium III Xeon processor
+FA_PIII_SPEED_STEP equ 0B1h ; Pentium Processor with Intel Speed Step Technology
+FA_P4_FAMILY equ 0B2h ; Pentium 4 Processor
+FA_XEON_FAMILY equ 0B3h ; Intel Xeon Family
+FA_AS400_FAMILY equ 0B4h ; AS400 Family
+FA_XEON_MP equ 0B5h ; Intel Xeon Processor MP
+FA_AMD_ATHLON_XP equ 0B6h ; AMD Athlon XP Processor Family
+FA_AMD_ATHLON_MP equ 0B7h ; AMD Athlon MP Processor Family
+FA_ITANIUM2 equ 0B8h ; Intel Itanium2 Processor
+FA_PENTIUM_M_FAMILY equ 0B9h ; Intel Pentium M Processor
+FA_CELERON_D_FAMILY equ 0BAh ; Intel Celeron D Processor
+FA_PENTIUM_D_FAMILY equ 0BBh ; Intel Pentium D Processor
+FA_PENTIUM_EXTREME_FAMILY equ 0BCh ; Intel Pentium Processor Extreme Edition
+FA_INTEL_CORE_SOLE equ 0BDh ; Intel(R) Core(TM) Solo Processor
+FA_INTEL_CORE_2 equ 0BFh ; Intel(R) Core(TM)2 Duo Processor
+FA_INTEL_CORE_2_SOLO equ 0C0h ; Intel(R) Core(TM)2 Solo processor
+FA_INTEL_CORE_2_EXTREME equ 0C1h ; Intel(R) Core(TM)2 Extreme processor
+FA_INTEL_CORE_2_QUAD equ 0C2h ; Intel(R) Core(TM)2 Quad processor
+FA_CORE_2_EXTREME_MOBIL equ 0C3h ; Intel(R) Core(TM)2 Extreme Mobile processor
+FA_CORE_2_DUO_MOBIL equ 0C4h ; Intel(R) Core(TM)2 Duo Mobile processor
+FA_CORE_2_SOLO_MOBIL equ 0C5h ; Intel(R) Core(TM)2 Solo Mobile processor
+FA_CORE_I7 equ 0C6h ; Intel(R) Core(TM)2 i7 processor
+FA_DUAL_CORE_CELERON equ 0C7h ; Dual-Core Intel(R) Celeron(R) processor
+FA_IBM390_FAMILY equ 0C8h ; IBM390 family
+FA_G4_FAMILY equ 0C9h ; G4 family
+FA_G5_FAMILY equ 0CAh ; G5 family
+FA_G6_FAMILY equ 0CBh ; ESA/390 G6 family
+FA_Z_ARCHITECTURE equ 0CCh ; z/Architecture Base
+FA_INTEL_CORE_I5 equ 0CDh ; Intel Core i5 Processor
+FA_INTEL_CORE_I3 equ 0CEh ; Intel Core i3 Processor
+FA_VIA_C7_M equ 0D2h ; VIA C7 M Processor
+FA_VIA_C7_D equ 0D3h ; VIA C7 D Processor
+FA_VIA_C7 equ 0D4h ; VIA C7 Processor
+FA_VIA_EDEN equ 0D5h ; VIA Eden Processor
+FA_MULTI_CORE_XEON equ 0D6h ; Multi-Core Intel(R) Xeon(R) processor
+FA_DUAL_CORE_XEON_3XXX equ 0D7h ; Dual-Core Intel(R) Xeon(R) processor 3xxx Series
+FA_QUAD_CORE_XEON_3XXX equ 0D8h ; Quad-Core Intel(R) Xeon(R) processor 3xxx Series
+FA_DUAL_CORE_XEON_5XXX equ 0DAh ; Dual-Core Intel(R) Xeon(R) processor 5xxx Series
+FA_QUAD_CORE_XEON_5XXX equ 0DBh ; Quad-Core Intel(R) Xeon(R) processor 5xxx Series
+FA_DUAL_CORE_XEON_7XXX equ 0DDh ; Dual-Core Intel(R) Xeon(R) processor 7xxx Series
+FA_QUAD_CORE_XEON_7XXX equ 0DEh ; Quad-Core Intel(R) Xeon(R) processor 7xxx Series
+FA_MULTI_CORE_XEON_7XXX equ 0DFh ; Multi-Core Intel(R) Xeon(R) processor 7xxx Series
+FA_MULTI_CORE_XEON_3400 equ 0E0h ; Multi-Core Intel(R) Xeon(R) processor 3400 Series
+FA_OPTERON_3000 equ 0E4h ; AMD Opteron(TM) 3000 Series Processor
+FA_SEMPRON_II equ 0E5h ; AMD Sempron(TM) II Processor
+FA_EMBEDED_OPTERON_QUAD_CORE equ 0E6h ; Embedded AMD Opteron(TM) Quad-Core Processor Family
+FA_PHENOM_TRIPLE_CORE equ 0E7h ; AMD Phenom(TM) Triple-Core Processor Family
+FA_TUIRON_ULTRA_DUAL_CORE_MOBILE equ 0E8h ; AMD Tuiron(TM) Ultra Dual-Core Mobile Processor Family
+FA_TUIRON_DUAL_CORE_MOBILE equ 0E9h ; AMD Tuiron(TM) Dual-Core Mobile Processor Family
+FA_ATHLON_DUAL_CORE equ 0EAh ; AMD Athlon(TM) Dual-Core Processor Family
+FA_SEMPRON_SI equ 0EBh ; AMD Sempron(TM) SI Processor Family
+FA_PHENOM_II equ 0ECh ; AMD Phenom II Processor Family
+FA_ATHLON_FAMILY equ 0EDh ; AMD Athlon II Processor Family
+FA_AMD_OPTERON_6CORE equ 0EEh ; Six-Core AMD Opteron Processor Family
+FA_AMD_SEMPRON_M equ 0EFh ; AMD Sempron M Processor Family
+FA_I860_FAMILY equ 0FAh ; i860 family
+FA_I960_FAMILY equ 0FBh ; i960 family
+FA_PROC_FAMILY_2 equ 0FEh ; Indicator to obtain the processor
+ ; family from the Processor Family 2
+ ; field
+FA_SH_3 equ 104h ; SH-3
+FA_SH_4 equ 105h ; SH-4
+FA_ARM equ 118h ; ARM
+FA_STRONG_ARM equ 119h ; StrongARM
+FA_6x86 equ 12Ch ; 6x86
+FA_MEDIA_GX equ 12Dh ; MediaGX
+FA_MII equ 12Eh ; MII
+FA_WINCHIP equ 140h ; WinChip
+FA_DSP equ 15Eh ; DSP
+FA_VIDEO_PROCESSOR equ 1F4h ; Video Processor
+;----------------------------------------------------------------------------
+; Processor Upgrade equates (an enumerated BYTE value)
+; Equate Name Value Meaning
+UPG_OTHER equ 01h ; Other
+UPG_UNKNOWN equ 02h ; Unknown
+UPG_DAUGHTER_BOARD equ 03h ; Daughter board
+UPG_ZIF_SOCKET equ 04h ; ZIF socket
+UPG_REPLACEABLE_PIGGY_BACK equ 05h ; Replaceable Piggy Back
+UPG_NONE equ 06h ; None
+UPG_LIF_SOCKET equ 07h ; LIF socket
+UPG_SLOT1 equ 08h ; Slot 1
+UPG_SLOT2 equ 09h ; Slot 2
+UPG_370 equ 0Ah ; 370 Pin Socket
+UPG_SLOTA equ 0Bh ; Slot A
+UPG_SLOTM equ 0Ch ; Slot M
+UPG_423 equ 0Dh ; Socket 423
+UPG_SOCKETA equ 0Eh ; Socket A (Socket 462)
+UPG_SOCKET478 equ 0Fh ; Socket 478
+UPG_SOCKET754 equ 10h ; Socket 754
+UPG_SOCKET940 equ 11h ; Socket 940
+UPG_SOCKET939 equ 12h ; Socket 939
+UPG_SOCKET604 equ 13h ; Socket mPGA604
+UPG_SOCKET771 equ 14h ; Socket LGA771
+UPG_SOCKET775 equ 15h ; Socket LGA775
+UPG_SOCKET_S1 equ 16h ; Socket S1
+UPG_SOCKET_AM2 equ 17h ; Socket AM2
+UPG_SOCKET_F equ 18h ; Socket F (1207)
+UPG_SOCKET_LGA_1366 equ 19h ; Socket LGA 1366
+UPG_SOCKET_G34 equ 1Ah ; Socket G34
+UPG_SOCKET_AM3 equ 1Bh ; Socket AM3
+UPG_SOCKET_C32 equ 1Ch ; Socket C32
+UPG_SOCKET_LGA_1156 equ 1Dh ; Socket LGA 1156
+UPG_SOCKET_LGA_1567 equ 1Eh ; Socket LGA 1567
+UPG_SOCKET_PGA_988A equ 1Fh ; Socket PGA 988A
+UPG_SOCKET_BGA_1288 equ 20h ; Socket BGA 1288
+UPG_SOCKET_RPGA_988B equ 21h ; Socket rPGA988B
+UPG_SOCKET_BGA_1023 equ 22h ; Socket BGA 1023
+UPG_SOCKET_BGA_1224 equ 23h ; Socket BGA 1224
+UPG_SOCKET_BGA_1155 equ 24h ; Socket BGA 1155
+UPG_SOCKET_LGA_1356 equ 25h ; Socket LGA 1356
+UPG_SOCKET_LGA_2011 equ 26h ; Socket LGA 2011
+UPG_SOCKET_FS_1 equ 27h ; Socket FS 1
+UPG_SOCKET_FS_2 equ 28h ; Socket FS 2
+UPG_SOCKET_FM_1 equ 29h ; Socket FM 1
+UPG_SOCKET_FM_2 equ 2Ah ; Socket FM 2
+UPG_SOCKET_LGA_2011_3 equ 2Bh ; Socket LGA2011-3
+UPG_SOCKET_LGA_1356_3 equ 2Ch ; Socket LGA1356-3
+
+;----------------------------------------------------------------------------
+; Processor Voltage (a byte value)
+; Voltage is specified in Bit6-0 of this byte. Bit6-0 is interpreted according
+; to Bit-7.
+; Bit-7 = 0, Standard type
+; In this case Bit6-0 is a bit-mapped list of allowed voltages
+; (bit-mapped voltage equates below)
+; = 1, User defined type
+; In this case Bit6-0 is an enumerated value calculated as follows
+; value = 10*the voltage in volts
+; e.g. for 2.9V, bit6-0 should contain 29 decimal or 13h.
+;----------------------------------------------------------------------------
+; Equate Name Value Meaning
+STANDARD equ 00000000b ; Bit-7 = 0, Standard (bit6-0 is a list of allowed voltages)
+USER_DEFINED equ 10000000b ; Bit-7 = 1, User defined (bit6-0 is an enumerated value)
+
+; Bit-mappes Voltage equates
+VOLT_5 equ 00000001b ; Bit-0 = 1, 5 Volt
+VOLT_33 equ 00000010b ; Bit-1 = 1, 3.3 Volt
+VOLT_29 equ 00000100b ; Bit-2 = 1, 2.9 Volt
+ ; Bit6-3.....not defined
+
+;----------------------------------------------------------------------------
+; Structure Type 5: Equates used in MEMORY CONTROLLER Structure
+;----------------------------------------------------------------------------
+; Memory Controller Error Detecting method equates (an enumerated BYTE value)
+; Equate Name Value Meaning
+MC_OTHER equ 01h ; Other
+MC_UNKNOWN equ 02h ; Unknown
+MC_NONE equ 03h ; None
+MC_8BIT_PARITY equ 04h ; Parity
+MC_32BIT_ECC equ 05h ; 32-bit ECC
+MC_64BIT_ECC equ 06h ; 64-bit ECC
+MC_128BIT_ECC equ 07h ; 128-bit ECC
+MC_CRC equ 08h ; CRC
+
+;----------------------------------------------------------------------------
+; Memory Controller supported Interleave equates (an enumerated BYTE value)
+; Equate Name Value Meaning
+IS_OTHER equ 01h ; Other
+IS_UNKNOWN equ 02h ; Unknown
+IS_ONEWAY_INTLEAVE equ 03h ; One-way Interleave
+IS_TWOWAY_INTLEAVE equ 04h ; Two-way Interleave
+IS_FORWAY_INTLEAVE equ 05h ; Four-way Interleave
+IS_EHTWAY_INTLEAVE equ 06h ; Eight-way Interleave
+IS_STNWAY_INTLEAVE equ 07h ; Sixteen-way Interleave
+
+;----------------------------------------------------------------------------
+; Memory Controller Current Interleave equates (an enumerated BYTE value)
+; Equate Name Value Meaning
+ICS_OTHER equ 01h ; Other
+ICS_UNKNOWN equ 02h ; Unknown
+ICS_ONEWAY_INTLEAVE equ 03h ; One-way Interleave
+ICS_TWOWAY_INTLEAVE equ 04h ; Two-way Interleave
+ICS_FORWAY_INTLEAVE equ 05h ; Four-way Interleave
+ICS_EHTWAY_INTLEAVE equ 06h ; Eight-way Interleave
+ICS_STNWAY_INTLEAVE equ 07h ; Sixteen-way Interleave
+
+;----------------------------------------------------------------------------
+; Structure Type 6: Equates used in MEMORY MODULE Structure
+;----------------------------------------------------------------------------
+; Memory Speed equates (an enumerated byte value)
+; Equate Name Value Meaning
+MM_SPEED_UNKNOWN equ 00h ; Memory speed unknown
+ ; if memory speed is known, specify it as mentioned in SMBDESC.DEF
+; Memory Module Bank Connection equates (an enumerated byte value)
+; Equate Name Value Meaning
+MM_NO_BANK_CONNECTION equ 0Fh ; No Bank connection
+RAS_1 equ 00 ; Ras-1 line
+RAS_2 equ 01 ; Ras-2 line
+RAS_3 equ 02 ; Ras-3 line
+RAS_4 equ 03 ; Ras-4 line
+RAS_5 equ 04 ; Ras-5 line
+RAS_6 equ 05 ; Ras-6 line
+RAS_7 equ 06 ; Ras-7 line
+RAS_8 equ 07 ; Ras-8 line
+RAS_9 equ 08 ; Ras-9 line
+RAS_10 equ 09 ; Ras-10 line
+RAS_11 equ 10 ; Ras-11 line
+RAS_12 equ 11 ; Ras-12 line
+RAS_13 equ 12 ; Ras-13 line
+RAS_14 equ 13 ; Ras-14 line
+RAS_15 equ 14 ; Ras-15 line
+RAS_16 equ 15 ; Ras-16 line
+
+;----------------------------------------------------------------------------
+; Memory Module Size equates (a byte value)
+; Bit-7 = 0, module has signle-bank connection
+; 1, module has double-bank connection
+; Bit6-0= n, where 2^n is the memory module size in MB
+; (7Dh = Not determinable
+; 7Eh = Module is installed but not enabled
+; 7Fh - Module is not installed)
+;----------------------------------------------------------------------------
+; Equate Name Value Meaning
+MM_SINGLE_BANK equ 00000000b; Bit-7 = 0, Single bank connection
+MM_DOUBLE_BANK equ 10000000b; Bit-7 = 1, Double bank Connection
+MM_SIZE_NOT_DETERMINABLE equ 7Dh ; Memory Size is not determinable
+MM_NOT_ENABLED equ 7Eh ; Memory Socket is populated but not enabled
+MM_NOT_INSTALLED equ 7Fh ; Memory Not installed
+
+;----------------------------------------------------------------------------
+; Memory Module Type equates (Bit-field word Value)
+; Equate Name Value Meaning
+; 1 0
+; 5432109876543210
+MM_TYPE_OTHER equ 0000000000000001b; Other type
+MM_TYPE_UNKNOWN equ 0000000000000010b; Unknown type
+MM_TYPE_STANDARD equ 0000000000000100b; Standard type
+MM_TYPE_FAST_PAGE_MODE equ 0000000000001000b; Fast page mode type
+MM_TYPE_EDO equ 0000000000010000b; EDO type
+MM_TYPE_PARITY equ 0000000000100000b; Parity type
+MM_TYPE_ECC equ 0000000001000000b; ECC type
+MM_TYPE_SIMM equ 0000000010000000b; SIMM type
+MM_TYPE_DIMM equ 0000000100000000b; DIMM type
+MM_TYPE_BURST_EDO equ 0000001000000000b; BURST EDO type
+MM_TYPE_SDRAM equ 0000010000000000b; SDRAM type
+ ; Bit15-11 Reserved and must be zero
+;----------------------------------------------------------------------------
+; Structure Type 7: Equates used in CACHE INFORMATION Structure
+;----------------------------------------------------------------------------
+; Cache Error Correction Type equates (an enumerated BYTE value)
+; Equate Name Value Meaning
+SR_OTHER equ 01h ; Other
+SR_UNKNOWN equ 02h ; Unknown
+SR_NONE equ 03h ; None
+SR_PARITY equ 04h ; Parity
+SR_SINGLEBIT_ECC equ 05h ; Single-bit ECC
+SR_MULTIBIT_ECC equ 06h ; Multi-bit ECC
+
+;----------------------------------------------------------------------------
+; System Cache Type equates (an enumerated BYTE Value)
+; Equate Name Value Meaning
+SCT_OTHER equ 01h ; Other
+SCT_UNKNOWN equ 02h ; Unknown
+SCT_INSTRUCTION equ 03h ; Instruction
+SCT_DATA equ 04h ; Data
+SCT_UNIFIED equ 05h ; Unified
+
+;----------------------------------------------------------------------------
+; System Cache Associativity equates (an enumerated BYTE Value)
+; Equate Name Value Meaning
+CA_OTHER equ 01h ; Other
+CA_UNKNOWN equ 02h ; Unknown
+CA_DIRECT_MAPPED equ 03h ; Direct Mapped
+CA_2WAY_ASSOC equ 04h ; 2way Associativity
+CA_4WAY_ASSOC equ 05h ; 4way Associativity
+CA_FULLY_ASSOC equ 06h ; Fully Associativity
+CA_8WAY_ASSOC equ 07h ; 8way Associativity
+CA_16WAY_ASSOC equ 08h ; 16way Associativity
+CA_12WAY_ASSOC equ 09h ; 12way Associativity
+CA_24WAY_ASSOC equ 0Ah ; 24way Associativity
+CA_32WAY_ASSOC equ 0Bh ; 32way Associativity
+CA_48WAY_ASSOC equ 0Ch ; 48way Associativity
+CA_64WAY_ASSOC equ 0Dh ; 64way Associativity
+CA_20WAY_ASSOC equ 0Eh ; 20way Associativity
+
+;----------------------------------------------------------------------------
+; Cache Type equates (Bit-field word Value)
+; Equate Name Value Meaning
+; 1 0
+; 5432109876543210
+CH_OTHER equ 0000000000000001b ; Other
+CH_UNKNOWN equ 0000000000000010b ; Unknown
+CH_NON_BURST equ 0000000000000100b ; Non-burst
+CH_BURST equ 0000000000001000b ; Burst
+CH_PIPELINE_BURST equ 0000000000010000b ; Pipeline Burst
+CH_SYNCHRONOUS equ 0000000000100000b ; Synchronous
+CH_ASYNCHRONOUS equ 0000000001000000b ; Asynchronous
+ ; Bit15-7 is reserved and must be zero
+
+;----------------------------------------------------------------------------
+; Equates used in the WORD defining the following:
+; Bit15-10= Reserved, must be 0
+; Bit9-8 = Cache Configuration Operational Mode
+; Bit-7 = Cache Enable/Disable information at boot time
+; Bit6-5 = Cache Configuration Location relative to CPU module
+; Bit4 = Reserved, must be zero
+; Bit3 = Cache Socket
+; Bit2-0 = Cache Level
+;----------------------------------------------------------------------------
+; Equate Name Value Meaning
+; 1 0
+; 5432109876543210
+; Bit9-8 = Cache Configuration Operational Mode equates
+COM_WRITE_THROUGH equ 0000000000000000b ; Write-thru
+COM_WRITE_BACK equ 0000000100000000b ; Write-back
+COM_VARIES_WITH_MEM equ 0000001000000000b ; Varies with Memory Address
+COM_UNKNOWN equ 0000001100000000b ; Unknown
+; Bit-7 = Cache Enable/Disable information at Boot time equates
+CACHE_ENABLED equ 0000000010000000b ; Enabled
+CACHE_DISABLED equ 0000000000000000b ; Disabled
+; Bit6-5 = Cache Configuration Location relative to CPU equates
+CCL_INTERNAL equ 0000000000000000b ; Internal
+CCL_EXTERNAL equ 0000000000100000b ; External
+CCL_RESERVED equ 0000000001000000b ; Reserved
+CCL_UNKNOWN equ 0000000001100000b ; Unknown
+; Bit-3 = Cache Configuration Socket equates
+CS_NOT_SOCKETED equ 0000000000000000b ; Not socketed
+CS_SOCKETED equ 0000000000001000b ; Socketed
+; Bit2-0 = Cache Configuration Level equates
+CL_L1 equ 0000000000000000b ; Level 1
+CL_L2 equ 0000000000000001b ; Level 2
+CL_L3 equ 0000000000000010b ; Level 3
+
+;----------------------------------------------------------------------------
+; Structure Type 8: Equates used in PORT CONNECTOR INFORMATION Structure
+;----------------------------------------------------------------------------
+; Internal Port Connector Type equates (an enumerated BYTE value)
+; Equate Name Value Meaning
+PC_NONE equ 00h ; None
+PC_CENTRONICS equ 01h ; Centronic
+PC_MINI_CENTRONIC equ 02h ; Mini Centronic
+PC_PROPRIETARY equ 03h ; Proprietary
+PC_DB25_PIN_MALE equ 04h ; DB-25 Pin Male
+PC_DB25_PIN_FEMALE equ 05h ; DB-25 Pin Female
+PC_DB15_PIN_MALE equ 06h ; DB-15 Pin Male
+PC_DB15_PIN_FEMALE equ 07h ; DB-15 Pin Female
+PC_DB9_PIN_MALE equ 08h ; DB-9 Pin Male
+PC_DB9_PIN_FEMALE equ 09h ; DB-9 Pin female
+PC_RJ_11 equ 0Ah ; RJ-11
+PC_RJ_45 equ 0Bh ; RJ-45
+PC_50_PINMINI_SCSI equ 0Ch ; 50 Pin mini SCSI
+PC_MINI_DIN equ 0Dh ; Mini-DIN
+PC_MICRO_DIN equ 0Eh ; Miciro-DIN
+PC_PS_2 equ 0Fh ; PS/2
+PC_INFRARED equ 10h ; Infrared
+PC_HP_HIL equ 11h ; HP-HIL
+PC_ACCESS_BUS_USB equ 12h ; Access Bus (USB)
+PC_SSA_SCSI equ 13h ; SSA SCSI
+PC_CIR_DIN8_MALE equ 14h ; Circular DIN-8 Male
+PC_CIR_DIN8_FEMALE equ 15h ; Circular DIN-8 Female
+PC_ONBOARD_IDE equ 16h ; On board IDE
+PC_ONBOARD_FLOPPY equ 17h ; On board Floppy
+PC_DUAL_INLINE_9PIN equ 18h ; 9 pin dual inline (pin 10 cut)
+PC_DUL_INLINE_25PIN equ 19h ; 25 pin dual inline (pin 26 cut)
+PC_DUL_INLINE_50PIN equ 1Ah ; 50 pin dual inline
+PC_DUL_INLINE_68PIN equ 1Bh ; 68 pin dual inline
+PC_ONBRD_SND_INPUT equ 1Ch ; On board sound input from CD-ROM
+PC_CENTRONIC_TYPE14 equ 1Dh ; Mini-centronic type-14
+PC_CENTRONIC_TYPE26 equ 1Eh ; Mini-centronic type-26
+PC_MINI_JACK equ 1Fh ; Mini-jack (headphones)
+PC_BNC equ 20h ; BNC
+PC_IEEE_1394 equ 21h ; 1394
+PC_SAS_SATA equ 22h ; SAS/SATA Plug Receptacle
+PC_PC_98 equ 0A0h ; PC-98
+PC_PC_98_HIRESO equ 0A1h ; PC-98Hireso
+PC_PC_H98 equ 0A2h ; PC-H98
+PC_PC_98_NOTE equ 0A3h ; PC-98Note
+PC_PC_98_FULL equ 0A4h ; PC-98Full
+PC_OTHER equ 0FFh ; Other- Use Reference Designator Strings to supply information
+
+;----------------------------------------------------------------------------
+; Port Connector Type equates (an enumerated BYTE value)
+; Equate Name Value Meaning
+PT_NONE equ 00h ; None
+PT_PARL_XT_AT equ 01h ; Parallel Port XT/AT Compatible
+PT_PARL_PORT_PS2 equ 02h ; Parallel Port PS/2
+PT_PARL_PORT_ECP equ 03h ; Parallel Port ECP
+PT_PARL_PORT_EPP equ 04h ; Parallel Port EPP
+PT_PARL_ECP_EPP equ 05h ; Parallel Port ECC/EPP
+PT_SR_PORT_XT_AT equ 06h ; Serial Port XT/AT Compatible
+PT_SR_PORT_16450 equ 07h ; Serial Port 16450 Compatible
+PT_SR_PORT_16550 equ 08h ; Serial Port 16550 Compatible
+PT_SR_PORT_16550A equ 09h ; Serial Port 16550A Compatible
+PT_SCSI_PORT equ 0Ah ; SCSI Port
+PT_MIDI_PORT equ 0Bh ; MIDI Port
+PT_JOY_STIC_PORT equ 0Ch ; Joy stick Port
+PT_KEYBOARD_PORT equ 0Dh ; Keyboard Port
+PT_MOUSE_PORT equ 0Eh ; Mouse Port
+PT_SSA_SCSI equ 0Fh ; SSA SCSI Port
+PT_USB equ 10h ; USB Port
+PT_FIREWIRE_1394 equ 11h ; Firewire-1394 Port
+PT_PCMCIA_TYPE1 equ 12h ; PCMCIA TYPE I
+PT_PCMCIA_TYPE2 equ 13h ; PCMCIA TYPE II
+PT_PCMCIA_TYPE3 equ 14h ; PCMCIA TYPE III
+PT_CARDBUS equ 15h ; Cardbus
+PT_ACCESS_BUS_PORT equ 16h ; Access bus port
+PT_SCSI2 equ 17h ; SCSI II
+PT_SCSI_WIDE equ 18h ; SCSI Wide
+PT_PC_98 equ 19h ; PC-98
+PT_PC_98_HIRESO equ 1Ah ; PC-98Hireso
+PT_PC_H98 equ 1Bh ; PC-H98
+PT_VIDEO_PORT equ 1Ch ; Video port
+PT_AUDIO_PORT equ 1Dh ; Audi port
+PT_MODEM_PORT equ 1Eh ; Modem Port
+PT_NETWORK_PORT equ 1Fh ; Network port
+PT_SATA_PORT equ 20h ; SATA
+PT_SAS_PORT equ 21h ; SAS
+PT_8251_COMPATIBLE equ 0A0h ; 8251 Compatible
+PT_8251_FIFO_COMP equ 0A1h ; 8251 FIFO Compatible
+PT_OTHER equ 0FFh ; Other
+
+;----------------------------------------------------------------------------
+; Structure Type 9: Equates used in SYSTEM SLOT INFORMATION Structure
+;----------------------------------------------------------------------------
+; System Slot Type equates (an enumerated BYTE value)
+; Equate Name Value Meaning
+SYS_SLOT_OTHER equ 01h ; Other
+SYS_SLOT_UNKNOWN equ 02h ; Unknown
+SYS_SLOT_ISA equ 03h ; ISA
+SYS_SLOT_MCA equ 04h ; MCA
+SYS_SLOT_EISA equ 05h ; EISA
+SYS_SLOT_PCI equ 06h ; PCI
+SYS_SLOT_PCMCIA equ 07h ; PCMCIA
+SYS_SLOT_VL_VESA equ 08h ; Vl-vesa
+SYS_SLOT_PROPRIETARY equ 09h ; Proprietary type
+SYS_SLOT_PROC_CARD_SLOT equ 0Ah ; Processor Card slot
+SYS_SLOT_PROP_CARD_SLOT equ 0Bh ; Proprietary Memory card slot
+SYS_SLOT_IO_RISER_SLOT equ 0Ch ; I/O Riser card slot
+SYS_SLOT_NU_BUS equ 0Dh ; NuBus
+SYS_SLOT_PCI_66MHZ equ 0Eh ; PCI-66Mhz Capable
+SYS_SLOT_AGP equ 0Fh ; Advance Graphics Port
+SYS_SLOT_AGP_2X equ 10h ; AGP 2X
+SYS_SLOT_AGP_4X equ 11h ; AGP 4X
+SYS_SLOT_PCI_X equ 12h ; PCI-X
+SYS_SLOT_AGP_8X equ 13h ; AGP 8X
+SYS_SLOT_PC98_C20 equ 0A0h ; PC-98/C20
+SYS_SLOT_PC98_C24 equ 0A1h ; PC-98/C24
+SYS_SLOT_PC98_E equ 0A2h ; PC-98/E
+SYS_SLOT_PC98_LOCAL equ 0A3h ; PC-98/Local Bus
+SYS_SLOT_PC98_CARD equ 0A4h ; PC-98 Card
+SYS_SLOT_PCIE equ 0A5h ; PCI Express
+SYS_SLOT_PCIE_X1 equ 0A6h ; PCI Express x1
+SYS_SLOT_PCIE_X2 equ 0A7h ; PCI Express x2
+SYS_SLOT_PCIE_X4 equ 0A8h ; PCI Express x4
+SYS_SLOT_PCIE_X8 equ 0A9h ; PCI Express x8
+SYS_SLOT_PCIE_X16 equ 0AAh ; PCI Express x16
+SYS_SLOT_PCIE_2 equ 0ABh ; PCI Express Gen 2
+SYS_SLOT_PCIE_2_X1 equ 0ACh ; PCI Express Gen 2 x1
+SYS_SLOT_PCIE_2_X2 equ 0ADh ; PCI Express Gen 2 x2
+SYS_SLOT_PCIE_2_X4 equ 0AEh ; PCI Express Gen 2 x4
+SYS_SLOT_PCIE_2_X8 equ 0AFh ; PCI Express Gen 2 x8
+SYS_SLOT_PCIE_2_X16 equ 0B0h ; PCI Express Gen 2 x16
+SYS_SLOT_PCIE_3 equ 0B1h ; PCI Express Gen 3
+SYS_SLOT_PCIE_3_X1 equ 0B2h ; PCI Express Gen 3 x1
+SYS_SLOT_PCIE_3_X2 equ 0B3h ; PCI Express Gen 3 x2
+SYS_SLOT_PCIE_3_X4 equ 0B4h ; PCI Express Gen 3 x4
+SYS_SLOT_PCIE_3_X8 equ 0B5h ; PCI Express Gen 3 x8
+SYS_SLOT_PCIE_3_X16 equ 0B6h ; PCI Express Gen 3 x16
+
+;----------------------------------------------------------------------------
+; System Slot Data bus width equates (an enumerated BYTE value)
+; Equate Name Value Meaning
+DBW_OTHER equ 01h ; Other
+DBW_UNKNOWN equ 02h ; Unknown
+DBW_8BIT equ 03h ; 8-bit
+DBW_16BIT equ 04h ; 16-bit
+DBW_32BIT equ 05h ; 32-bit
+DBW_64BIT equ 06h ; 64-bit
+DBW_128BIT equ 07h ; 128-bit
+DBW_1X equ 08h ; PCIE 1X
+DBW_2X equ 09h ; PCIE 2X
+DBW_4X equ 0Ah ; PCIE 4X
+DBW_8X equ 0Bh ; PCIE 8X
+DBW_12X equ 0Ch ; PCIE 12X
+DBW_16X equ 0Dh ; PCIE 16X
+DBW_32X equ 0Eh ; PCIE 32X
+
+;----------------------------------------------------------------------------
+; System Slot Usage equates (an enumerated BYTE value)
+; Equate Name Value Meaning
+SCU_OTHER equ 01h ; Other
+SCU_UNKNOWN equ 02h ; Unknown
+SCU_AVAILABLE equ 03h ; Available
+SCU_IN_USE equ 04h ; In use
+
+;----------------------------------------------------------------------------
+; System Slot Length equates (an enumerated BYTE value)
+; Equate Name Value Meaning
+SL_OTHER equ 01h ; Other
+SL_UNKNOWN equ 02h ; Unknown
+SL_SHORT_LENGTH equ 03h ; Short length
+SL_LONG_LENGTH equ 04h ; Long length
+
+;----------------------------------------------------------------------------
+; System Slot Characteristic-1 equates (Bit-field byte value)
+; Equate Name Value Meaning
+; 76543210
+
+SCH_UNKNOWN equ 00000001b ; Unknown
+SCH_5V equ 00000010b ; 5 volt
+SCH_33V equ 00000100b ; 3.3 volt
+SCH_SHARED equ 00001000b ; Shared
+SCH_PCCARD16 equ 00010000b ; PC Card bus
+SCH_CARDBUS equ 00100000b ; Card bus
+SCH_ZOOMVIDEO equ 01000000b ; Zoom Video
+SCH_MODEMRING equ 10000000b ; Modem ring resume
+
+;----------------------------------------------------------------------------
+; System Slot Characteristic-2 equates (Bit-field byte value)
+; Equate Name Value Meaning
+; 76543210
+SCH_PME equ 0000000100000000b ; PCI Slot supports Power management (PME#) signal
+SCH_HOT_PLUG equ 0000001000000000b ; supports Hot Plug devices
+SCH_PCI_SUPPORT_SMBUS equ 0000010000000000b ; PCI Slot Supports SMBUS Signal
+ ; Bit7-3 = Reserved set to 0
+;----------------------------------------------------------------------------
+; Structure Type 10: Equates used in ON-BOARD DEVICE INFORMATION Structure
+;----------------------------------------------------------------------------
+; On-board Device Type equates (an enumerated BYTE value)
+; Equate Name Value Meaning
+OBD_OTHER equ 01h ; Other
+OBD_UNKNOWN equ 02h ; Unknown
+OBD_VIDEO equ 03h ; Video
+OBD_SCSI equ 04h ; SCSI
+OBD_ETHERNET equ 05h ; Ethernet
+OBD_TOKEN_RING equ 06h ; Token ring
+OBD_SOUND equ 07h ; Sound
+OBD_PATA equ 08h ; PATA Controller
+OBD_SATA equ 09h ; SATA Controller
+OBD_SAS equ 0Ah ; SAS Controller
+
+;----------------------------------------------------------------------------
+; Structure Type 11: No equates used in OEM STRINGS INFORMATION
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 12: No equates used in SYSTEM CONFIGURATION
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 13: Equates used in BIOS LANGUAGE INFORMATION Structure
+;----------------------------------------------------------------------------
+; BIOS Language Flag equates (bit-field byte value)
+; Equate Name Value Meaning
+; 76543210
+LONG_FORMAT equ 00000000b ; Long format
+ABBRIVIATED_FORMAT equ 00000001b ; Abbreviated format
+ ; bit7-1 = reserved
+; Note: In Long Format, each language string is in the form of
+; "ISO 639 Language name |ISO 3166 Territory Name| Encoding Method"
+; LONG FORMAT -> db 'en|US|iso8859-1', 0
+; ABBRIVATED FORMAT -> db 'enUS', 0
+
+;----------------------------------------------------------------------------
+; Structure Type 14: No equates used in GROUP ASSOCIATION
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 16: Equates used in PHYSICAL MEMORY ARRAY Structure
+;----------------------------------------------------------------------------
+; Memory Array Location equates (an enumerated BYTE value)
+; Equate Name Value Meaning
+ARRAY_LOC_OTHER equ 001h ; Other
+ARRAY_LOC_UNKNOWN equ 002h ; Unknown
+ARRAY_LOC_MOTHERBOARD equ 003h ; System board/ Motherboard
+ARRAY_LOC_ISAADDONCARD equ 004h ; ISA Add on card
+ARRAY_LOC_EISAADDONCARD equ 005h ; EISA Add on card
+ARRAY_LOC_PCIADDONCARD equ 006h ; PCI Add on card
+ARRAY_LOC_MCAADDONCARD equ 007h ; MCA Add on card
+ARRAY_LOC_PCMCIAADDONCARD equ 008h ; PCMCIA Add on card
+ARRAY_LOC_PROPADDONCARD equ 009h ; Propriatery Add on card
+ARRAY_LOC_NuBus equ 00Ah ; Nubus
+ARRAY_LOC_PC98_C20 equ 0A0h ; PC98/C20
+ARRAY_LOC_PC98_C24 equ 0A1h ; PC98/C24
+ARRAY_LOC_PC98_E equ 0A2h ; PC98-E
+ARRAY_LOC_PC98_LOCALBUS equ 0A3h ; PC-98 Local bus
+
+;----------------------------------------------------------------------------
+; Memory Array Use equates (an enumerated BYTE value)
+; Equate Name Value Meaning
+ARRAY_USE_OTHER equ 01h ; Other
+ARRAY_USE_UNKNOWN equ 02h ; Unknown
+ARRAY_USE_SYSTEM_MEMORY equ 03h ; System Memory
+ARRAY_USE_VIDEOMEMORY equ 04h ; Video Memory
+ARRAY_USE_FLASHMEMORY equ 05h ; Flash Memory
+ARRAY_USE_NONVOLMEMORY equ 06h ; Non volatile Memory
+ARRAY_USE_CACHEMEMORY equ 07h ; Cache Memory
+
+;----------------------------------------------------------------------------
+; Memory Array Error Correction Type equates (an enumerated BYTE value)
+; Equate Name Value Meaning
+ARRAY_ERROR_OTHER equ 01h ; Other
+ARRAY_ERROR_UNKNOWN equ 02h ; Unknown
+ARRAY_ERROR_NONE equ 03h ; None
+ARRAY_ERROR_PARITY equ 04h ; Parity
+ARRAY_ERROR_SINGLEBIT_ECC equ 05h ; Single-bit ECC
+ARRAY_ERROR_MULTIBIT_ECC equ 06h ; Multi-bit ECC
+ARRAY_ERROR_CRC equ 07H ; CRC
+
+;----------------------------------------------------------------------------
+; Structure Type 17: Equates used in MEMORY DEVICES Structure
+;----------------------------------------------------------------------------
+; Memory Device Form Factor equates (an enumerated BYTE value)
+; Equate Name Value Meaning
+DEVICE_FORMFACTOR_OTHER equ 01h ; other
+DEVICE_FORMFACTOR_UNKNOWN equ 02h ; unknown
+DEVICE_FORMFACTOR_SIMM equ 03h ; SIMM
+DEVICE_FORMFACTOR_SIP equ 04h ; SIP
+DEVICE_FORMFACTOR_CHIP equ 05h ; CHIP
+DEVICE_FORMFACTOR_DIP equ 06h ; DIP
+DEVICE_FORMFACTOR_ZIP equ 07h ; ZIP
+DEVICE_FORMFACTOR_PROPCARD equ 08h ; Propriatery Card
+DEVICE_FORMFACTOR_DIMM equ 09h ; DIMM
+DEVICE_FORMFACTOR_TSOP equ 0Ah ; TSOP
+DEVICE_FORMFACTOR_ROWOFCHIP equ 0Bh ; ROWCHIP
+DEVICE_FORMFACTOR_RIMM equ 0Ch ; RIMM
+DEVICE_FORMFACTOR_SODIMM equ 0Dh ; SODIMM
+DEVICE_FORMFACTOR_SRIMM equ 0Eh ; SRIMM
+DEVICE_FORMFACTOR_FBDIMM equ 0Fh ; FB-DIMM
+
+;----------------------------------------------------------------------------
+; Memory Device Type equates (an enumerated BYTE value)
+; Equate Name Value Meaning
+MEMORY_DEVICE_TYPE_OTHER equ 01h ; Other
+MEMORY_DEVICE_TYPE_UNKNOWN equ 02h ; Unknown
+MEMORY_DEVICE_TYPE_DRAM equ 03h ; DRAM
+MEMORY_DEVICE_TYPE_EDRAM equ 04h ; EDRAM
+MEMORY_DEVICE_TYPE_VRAM equ 05h ; VRAM
+MEMORY_DEVICE_TYPE_SRAM equ 06h ; SRAM
+MEMORY_DEVICE_TYPE_RAM equ 07h ; RAM
+MEMORY_DEVICE_TYPE_ROM equ 08h ; ROM
+MEMORY_DEVICE_TYPE_FLASH equ 09h ; FLASH
+MEMORY_DEVICE_TYPE_EEPROM equ 0Ah ; EEPROM
+MEMORY_DEVICE_TYPE_FEPROM equ 0Bh ; FEPROM
+MEMORY_DEVICE_TYPE_EPROM equ 0Ch ; EPROM
+MEMORY_DEVICE_TYPE_CDRAM equ 0Dh ; CDRAM
+MEMORY_DEVICE_TYPE_3DRAM equ 0Eh ; 3DRAM
+MEMORY_DEVICE_TYPE_SDRAM equ 0Fh ; SDRAM
+MEMORY_DEVICE_TYPE_SGRAM equ 10h ; SGRAM
+MEMORY_DEVICE_TYPE_RDRAM equ 11h ; RDRAM
+MEMORY_DEVICE_TYPE_DDR equ 12h ; DDR
+MEMORY_DEVICE_TYPE_DDR2 equ 13h ; DDR2
+MEMORY_DEVICE_TYPE_DDR2_FB_DIM equ 14h ; DDR2 FB-DIMM
+MEMORY_DEVICE_TYPE_DDR3 equ 18h ; DDR3
+MEMORY_DEVICE_TYPE_FBD2 equ 19h ; FBD2
+
+;----------------------------------------------------------------------------
+; Structure Type 18: Equates used in 32Bit MEMORY ERROR Structure
+;----------------------------------------------------------------------------
+; 32bit Memory Error equates (an enumerated BYTE value)
+; Equate Name Value Meaning
+ERR_TYP_OTHER equ 01h ; Other
+ERR_TYP_UNKNOWN equ 02h ; Unknown
+ERR_TYP_OK equ 03h ; OK
+ERR_TYP_BADREAD equ 04h ; BAD Read
+ERR_TYP_PARITYERROR equ 05h ; Parity Error
+ERR_TYP_SINGLEBITERROR equ 06h ; Single bit Error
+ERR_TYP_DOUBLEBITERROR equ 07h ; Double bit Error
+ERR_TYP_MULTIBITERROR equ 08h ; Multi bit Error
+ERR_TYP_NIBBLEERROR equ 09h ; Nibble Error
+ERR_TYP_CHECKSUMERROR equ 0Ah ; Checksum Error
+ERR_TYP_CRCERROR equ 0Bh ; CRC Error
+ERR_TYP_CORRECTSINGERR equ 0Ch ; Correctable Single bit Error
+ERR_TYP_CORRECTEDERROR equ 0Dh ; Corrected Error
+ERR_TYP_UNCORRECTABLEERR equ 0Eh ; Uncorrectable Error
+
+;----------------------------------------------------------------------------
+; 32bit Memory Error Granularity equates (an enumerated BYTE value)
+; Equate Name Value Meaning
+GRANULARITY_OTHER equ 01h ; Other
+GRANULARITY_UNKNOWN equ 02h ; Unknown
+GRANULARITY_DEVICELEVEL equ 03h ; Device level
+GRANULARITY_MEMPARTIONLEVEL equ 04h ; Memory Partition Level
+
+;----------------------------------------------------------------------------
+; 32bit Memory Error Operation equates (an enumerated BYTE value)
+; Equate Name Value Meaning
+OPERATION_OTHER equ 01h ; Other
+OPERATION_UNKNOWN equ 02h ; Unknown
+OPERATION_READ equ 03h ; Read
+OPERATION_WRITE equ 04h ; Write
+OPERATION_PARTIAL_WRITE equ 05h ; Partial Write
+;----------------------------------------------------------------------------
+; Structure Type 19: No equates used in MEMORY ARRAY MAPPED ADDRESS
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 20: No equates used in MEMORY DEVICE MAPPED ADDRESS
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 21: Equates used in Pointing Device Structure
+;----------------------------------------------------------------------------
+; Pointing Device Type equates (an enumerated BYTE value)
+; Equate Name Value Meaning
+POR_OTHER equ 01h ; Other
+POR_UNKNOWN equ 02h ; Unknown
+POR_MOUSE equ 03h ; Mouse
+POR_TRACK_BALL equ 04h ; Track ball
+POR_TRACK_POINT equ 05h ; Track Point
+POR_GLIDE_POINT equ 06h ; Glide Point
+POR_TOUCH_PAD equ 07h ; Touch Pad
+POR_TOUCH_SCR equ 08h ; Touch Screen
+POR_OPTICAL_SENSOR equ 09h ; Optical Sensor
+
+;----------------------------------------------------------------------------
+; Pointing Device Interface equates (an enumerated BYTE value)
+; Equate Name Value Meaning
+PDI_OTHER equ 001h ; Other
+PDI_UNKNOWN equ 002h ; Unknown
+PDI_SERIAL equ 003h ; Serial
+PDI_PS2 equ 004h ; PS2
+PDI_INFRARED equ 005h ; Infrared
+PDI_HP_HIL equ 006h ; HP-HIL
+PDI_BUS_MOUSE equ 007h ; Bus Mouse
+PDI_APPLE_DESKTOP_BUS equ 008h ; Apple Desktop Bus
+PDI_BUS_MOUSE_DB9 equ 0A0h ; Bus Mouse DB9
+PDI_BUS_MOUSE_MICRO_DIN equ 0A1h ; Bus Mouse Micro DIN
+PDI_USB equ 0A2h ; USB
+
+;----------------------------------------------------------------------------
+; Structure Type 22: Equates used in Portable Battery Structure
+;----------------------------------------------------------------------------
+; Device Chemistry Type equates (an enumerated BYTE value)
+; Equate Name Value Meaning
+PBC_OTHER equ 01h ; Other
+PBC_UNKNOWN equ 02h ; Unknown
+PBC_LEAD_ACID equ 03h ; Lead ACID
+PBC_NICKEL_CAD equ 04h ; Nickle Cadmium
+PBC_NICKEL_HYDRIDE equ 05h ; Nickle metal hydride
+PBC_LITHIUM_ION equ 06h ; Lithium-ion
+PBC_ZINC_AIR equ 07h ; Zinc air
+PBC_LITHIUM_POLYMER equ 08h ; Lithium Polymer
+
+;----------------------------------------------------------------------------
+; Structure Type 23: Equates used in System Reset Structure
+;----------------------------------------------------------------------------
+; Capabilities equates (Bit-field byte value)
+; Equate name Value Meaning
+; 76543210
+SRC_SYSTEM_RESET equ 00000001b; Bit-0 = System Reset enabled
+SRC_BOOT_OPTION_OS equ 00000010b; Bit2-1 = 01, OS
+SRC_BOOT_OPTION_SU equ 00000100b; Bit2-1 = 10, System Utilities
+SRC_BOOT_OPTION_NRB equ 00001100b; Bit2-1 = 11, do not reboot
+SRC_BOOT_OPTION_LIMIT_OS equ 00000010b; Bit4-3 = 01, OS
+SRC_BOOT_OPTION_LIMIT_SU equ 00000100b; Bit4-3 = 10, System Utilities
+SRC_BOOT_OPTION_LIMIT_NRB equ 00001100b; Bit4-3 = 11, do not reboot
+SRC_WATCHDOG_TIMER equ 00100000b; Bit-5 = Watchdog timer
+ ; Bit7-6 = Reserved
+
+;----------------------------------------------------------------------------
+; Structure Type 24: equates used in Hardware Security Structure
+;----------------------------------------------------------------------------
+; Hardware Security Settings equates (Bit-field byte value)
+; Equate name Value Meaning
+; 76543210
+HSS_FRONT_PANEL_RESET_DISABLED equ 00000000b; Bit1-0 = 00, disabled
+HSS_FRONT_PANEL_RESET_ENABLED equ 00000001b; Bit1-0 = 01, enabled
+HSS_FRONT_PANEL_RESET_ABSENT equ 00000010b; Bit1-0 = 10, not implemented
+HSS_FRONT_PANEL_RESET_UNKNOWN equ 00000011b; Bit1-0 = 11, unknown
+HSS_SUPERVISOR_PASSWORD_DISABLED equ 00000000b; Bit3-2 = 00, disabled
+HSS_SUPERVISOR_PASSWORD_ENABLED equ 00000100b; Bit3-2 = 01, enabled
+HSS_SUPERVISOR_PASSWORD_ABSENT equ 00001000b; Bit3-2 = 10, not implemented
+HSS_SUPERVISOR_PASSWORD_UNKNOWN equ 00001100b; Bit3-2 = 11, unknown
+HSS_KEYBOARD_PASSWORD_DISABLED equ 00000000b; Bit5-4 = 00, disabled
+HSS_KEYBOARD_PASSWORD_ENABLED equ 00000100b; Bit5-4 = 01, enabled
+HSS_KEYBOARD_PASSWORD_ABSENT equ 00001000b; Bit5-4 = 10, not implemented
+HSS_KEYBOARD_PASSWORD_UNKNOWN equ 00001100b; Bit5-4 = 11, unknown
+HSS_POWERON_PASSWORD_DISABLED equ 00000000b; Bit7-6 = 00, disabled
+HSS_POWERON_PASSWORD_ENABLED equ 00000100b; Bit7-6 = 01, enabled
+HSS_POWERON_PASSWORD_ABSENT equ 00001000b; Bit7-6 = 10, not implemented
+HSS_POWERON_PASSWORD_UNKNOWN equ 00001100b; Bit7-6 = 11, unknown
+
+;----------------------------------------------------------------------------
+; Structure Type 25: No equates used in System Power Controls Structure
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 26: Equates used in Voltage Probe Structure
+;----------------------------------------------------------------------------
+; Location and Status (a byte value) Bit7-5 = Status (enumerated value)
+; Bit4-0 = Location (enumerated value)
+; Location
+; Equate name Value Meaning
+PL_OTHER equ 01h ; Other
+PL_UNKNOWN equ 02h ; Unknown
+PL_PROCESSOR equ 03h ; Processor
+PL_DISK equ 04h ; Disk
+PL_PERIPHERAL_BAY equ 05h ; Peripheral Bay
+PL_SYSTEM_MGMT_MODULE equ 06h ; System Management Module
+PL_MOTHERBOARD equ 07h ; Motherboard
+PL_MEMORY_MODULE equ 08h ; Memory Module
+PL_PROCESSOR_MODULE equ 09h ; Processor Module
+PL_POWER_UNIT equ 0Ah ; Power Unit
+PL_ADDIN_CARD equ 0Bh ; Add-in card
+; Status
+; Equate name Value Meaning
+PS_OTHER equ 020h ; Other
+PS_UNKNOWN equ 040h ; Unknown
+PS_OK equ 060h ; OK
+PS_NON_CRITICAL equ 080h ; Non-critical
+PS_CRITICAL equ 0A0h ; Critical
+PS_NON_RECOVERABLE equ 0C0h ; Non-recoverable
+
+;----------------------------------------------------------------------------
+; Structure Type 27: Equates used in Cooling Device Structure
+;----------------------------------------------------------------------------
+; Device Type and Status (a byte value) Bit7-5 = Status (enumerated value)
+; Bit4-0 = Device Type (enumerated value)
+; Device Type
+; Equate name Value Meaning
+CDT_OTHER equ 01h ; Other
+CDT_UNKNOWN equ 02h ; Unknown
+CDT_FAN equ 03h ; Fan
+CDT_CENTRIFUGAL_BLOWER equ 04h ; Centrifugal Blower
+CDT_CHIP_FAN equ 05h ; Chip Fan
+CDT_CABINET_FAN equ 06h ; Cabinet Fan
+CDT_POWER_SUPPLY_FAN equ 07h ; Power Supply Fan
+CDT_HEAT_PIPE equ 08h ; Heat Pipe
+CDT_INTEGRATED_FREEZE equ 09h ; Integrated Refrigeration
+CDT_ACTIVE_COOLING equ 14h ; Active Cooling
+CDT_PASSIVE_COOLING equ 15h ; Passive Cooling
+
+;----------------------------------------------------------------------------
+; Status
+; Equate name Value Meaning
+CDS_OTHER equ 020h ; Other
+CDS_UNKNOWN equ 040h ; Unknown
+CDS_OK equ 060h ; OK
+CDS_NON_CRITICAL equ 080h ; Non-critical
+CDS_CRITICAL equ 0A0h ; Critical
+CDS_NON_RECOVERABLE equ 0C0h ; Non-recoverable
+
+;----------------------------------------------------------------------------
+; Structure Type 28: Equates used in Temperature Probe Structure
+;----------------------------------------------------------------------------
+; This structure uses the same equates as Voltage Probe Structure to
+; indicate corresponding probe location and status.
+
+;----------------------------------------------------------------------------
+; Structure Type 29: Equates used in Electrical Current Probe Structure
+;----------------------------------------------------------------------------
+; This structure uses the same equates as Voltage Probe Structure to
+; indicate corresponding probe location and status.
+
+;----------------------------------------------------------------------------
+; Structure Type 30: Equates used in Out-of-Band Remote Access Structure
+;----------------------------------------------------------------------------
+; Connections Bit7-2 = Reserved
+; Bit-1 = Outbound Connection 0/1 -> disabled/enabled
+; Bit-0 = Inbound Connection 0/1 -> disabled/enabled
+; Equate name Value Meaning
+; 76543210
+INBOUND_CONNECTION_ENABLED equ 00000001b; inbound connection
+OUTBOUND_CONNECTION_ENABLED equ 00000010b; outbound connection
+
+;----------------------------------------------------------------------------
+; Structure Type 34: Equates used in MANAGEMENT DEVICE Structure
+;----------------------------------------------------------------------------
+; Management Device Type equates (an enumerated BYTE value)
+; Equate Name Value Meaning
+MGMT_DEVICE_TYPE_OTHER equ 01h ; Other
+MGMT_DEVICE_TYPE_UNKNOWN equ 02h ; Unknown
+MGMT_DEVICE_TYPE_LM75 equ 03h ; LM75
+MGMT_DEVICE_TYPE_LM78 equ 04h ; LM78
+MGMT_DEVICE_TYPE_LM79 equ 05h ; LM79
+MGMT_DEVICE_TYPE_LM80 equ 06h ; LM80
+MGMT_DEVICE_TYPE_LM81 equ 07h ; LM81
+MGMT_DEVICE_TYPE_ADM9240 equ 08h ; ADM9240
+MGMT_DEVICE_TYPE_DS1780 equ 09h ; DS1780
+MGMT_DEVICE_TYPE_MAXIM1617 equ 0Ah ; MAXIM1617
+MGMT_DEVICE_TYPE_GL518SM equ 0Bh ; GL518SM
+MGMT_DEVICE_TYPE_W83781D equ 0Ch ; W83781D
+MGMT_DEVICE_TYPE_HT82H791 equ 0Dh ; HT82H791
+
+;----------------------------------------------------------------------------
+; Management Device Address Type equates (an enumerated BYTE value)
+; Equate Name Value Meaning
+MGMT_DEVICE_ADDRESS_TYPE_OTHER equ 01h ; Other
+MGMT_DEVICE_ADDRESS_TYPE_UNKNOWN equ 02h ; Unknown
+MGMT_DEVICE_ADDRESS_TYPE_IO_PORT equ 03h ; IO Port
+MGMT_DEVICE_ADDRESS_TYPE_MEMORY equ 04h ; Memory Mapped
+MGMT_DEVICE_ADDRESS_TYPE_SMBUS equ 05h ; SMBUS
+
+;----------------------------------------------------------------------------
+; Structure Type 37: Equates used in MEMORY CHANNEL Structure
+;----------------------------------------------------------------------------
+; Memory Channel Type equates (an enumerated BYTE value)
+; Equate Name Value Meaning
+MEMORY_CHANNEL_TYPE_OTHER equ 01h ; Other
+MEMORY_CHANNEL_TYPE_UNKNOWN equ 02h ; Unknown
+MEMORY_CHANNEL_TYPE_RAMBUS equ 03h ; RamBus
+MEMORY_CHANNEL_TYPE_SYNCLINK equ 04h ; SyncLink
+
+;----------------------------------------------------------------------------
+; Structure Type 38: Equates used in IPMI DEVICE INFORMATION Structure
+;----------------------------------------------------------------------------
+; Memory Channel Type equates (an enumerated BYTE value)
+; Equate Name Value Meaning
+IPMI_DEVICE_INTERFACE_TYPE_UNKNOWN equ 00h ; Unknown
+IPMI_DEVICE_INTERFACE_TYPE_KCS equ 01h ; KCS: Keyboard Controller Style
+IPMI_DEVICE_INTERFACE_TYPE_SMIC equ 02h ; SMIC: Server Management Interface Chip
+IPMI_DEVICE_INTERFACE_TYPE_BT equ 03h ; BT: Block Transfer
+
+;----------------------------------------------------------------------------
+; Structure Type 38: No equates used in SYSTEM POWER SUPPLY Structure
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; SMBIOS BIOS related error codes
+SMBIOS_ERROR_CODE_START equ 08300h
+ERRSMBIOS_NOT_ENOUGH_SPACE_IN_F000 equ (SMBIOS_ERROR_CODE_START + 1)
+
+;----------------------------------------------------------------------------
+;End of Inclusion guard
+endif ;_SMB_EQU_
+;----------------------------------------------------------------------------
+
+;****************************************************************************
+;****************************************************************************
+;** **
+;** (C)Copyright 1985-2013, American Megatrends, Inc. **
+;** **
+;** All Rights Reserved. **
+;** **
+;** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **
+;** **
+;** Phone: (770)-246-8600 **
+;** **
+;****************************************************************************
+;****************************************************************************
diff --git a/Board/EM/SMBIOS/SMBiosStaticData/SMBDATA.MAC b/Board/EM/SMBIOS/SMBiosStaticData/SMBDATA.MAC
new file mode 100644
index 0000000..4249c0f
--- /dev/null
+++ b/Board/EM/SMBIOS/SMBiosStaticData/SMBDATA.MAC
@@ -0,0 +1,2708 @@
+ ECHO --Including: SMBDATA.MAC
+
+;----------------------------------------------------------------------------
+; DO NOT CHANGE ANY STRUCTURE DEFINITION UNLESS OTHERWISE SPECIFIED
+;----------------------------------------------------------------------------
+
+;****************************************************************************
+;****************************************************************************
+;** **
+;** (C)Copyright 1985-2016, American Megatrends, Inc. **
+;** **
+;** All Rights Reserved. **
+;** **
+;** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **
+;** **
+;** Phone: (770)-246-8600 **
+;** **
+;****************************************************************************
+;****************************************************************************
+
+;****************************************************************************
+; $Header: /Alaska/BIN/Modules/SMBIOS/SmbiosStaticData/SMBDATA.MAC 39 4/07/16 5:54p Davidd $
+;
+; $Revision: 39 $
+;
+; $Date: 4/07/16 5:54p $
+;****************************************************************************
+; Revision History
+; ----------------
+; $Log: /Alaska/BIN/Modules/SMBIOS/SmbiosStaticData/SMBDATA.MAC $
+;
+; 39 4/07/16 5:54p Davidd
+; [TAG] EIP231162
+; [Category] New Feature
+; [Description] Merge Aptio V Smbios -09 changes for Aptio 4
+; 4.6.5.5_SMBIOS_40 release
+; [Files] Smbios.sdl
+; SmbiosDynamicData.h
+; Smbios.h
+; SmbiosStaticData.sdl
+; SmbiosStaticData.asm
+; SmbData.mac
+; SmbMacro.aid
+; SmbDesc.def
+;
+; 38 2/17/15 1:08p Davidd
+; [TAG] EIP205509
+; [Category] Improvement
+; [Description] Merge Aptio V Smbios EIP193807, 193858, 196901 changes
+; into Aptio 4 Smbios
+; [Files] SmbiosStaticData.asm
+; Smbdata.mac
+; Smbdesc.def
+;
+; 37 11/13/13 3:40p Davidd
+; [TAG] EIP143030
+; [Category] Improvement
+; [Description] Synchronize Aptio 4 Smbios with recent changes on Aptio
+; V Smbios for '4.6.5.1_SMBIOS_36' release
+; [Files] SmbiosStaticData.sdl
+; Smbdesc.def
+; SMBDATA.MAC
+;
+; 36 6/03/13 6:23p Davidd
+; [TAG] EIP125665
+; [Category] New Feature
+; [Description] Request to Support multiple instances of SMBIOS Type 3
+; structure (merge EIP106206 into Aptio 4)
+; [Files] Smbdata.mac
+; SmbiosStaticData.sdl
+; Smbstruc.def
+; Smbios.c
+; SmbiosDMIEditFunc.c
+; Smbios.h
+;
+; 35 5/29/13 12:49p Davidd
+; [TAG] EIP124735
+; [Category] Spec Update
+; [Severity] Normal
+; [Description] SMBIOS 2.8.0 specification support for Aptio 4
+; [Files] Smb.equ
+; Smbdata.mac
+; Smbdesc.def
+; Smbstruc.def
+; Smbios.c
+; Smbios.h
+; SmbiosDynamicData.h
+;
+; 34 11/12/12 10:17a Davidd
+; [TAG] EIP106202
+; [Category] Bug Fix
+; [Severity] Minor
+; [Symptom] 16-bit and 32-bit were display 0
+; [RootCause] Error in CreateBootIntegrityServicesInfo macro
+; [Solution] Corrected error in CreateBootIntegrityServicesInfo macro
+; [Files] Smbdata.mac
+;
+; 33 9/13/12 12:10p Davidd
+; [TAG] EIP99388
+; [Category] Improvement
+; [Description] can not modified SMBIOS type 38 by
+; smbiosstaticdata.sdl
+; [Files] Smbdata.mac
+; Smbdesc.def
+;
+; 32 3/26/12 11:54a Davidd
+; [TAG] EIP84370
+; [Category] New Feature
+; [Description] Flash memory(type 16 and 17) on aptio
+; [Files] Smbdata.mac
+; SmbiosStaticData.asm
+; SmbiosStaticData.sdl
+; Smbios.c
+; Smbios.mak
+; Smbios.h
+;
+; 31 3/12/12 3:06p Davidd
+; [TAG] EIP82983
+; [Category] Improvement
+; [Description] Need Creating Tokens for Type1:UUID/Type11/Typ12/Type22
+; [Files] SmbiosStaticData.sdl
+; Smbdata.mac
+; Smbdesc.def
+;
+; 30 1/17/12 4:50p Davidd
+; [TAG] EIP78264
+; [Category] Improvement
+; [Description] SMBOS Type 2 (Spec 2.7.1) - No multiple type 2 support
+; [Files] Smbios.c
+; Smbios.h
+; Smbdata.mac
+; Smbdesc.def
+; SmbiosStaticData.sdl
+;
+; 29 9/29/11 4:41p Davidd
+; [TAG] EIP68202
+; [Category] NEW FEATURE
+; [Description] Allow Smbios Type 2 Location field and Type 3 SKU
+; Number field
+; to be apdated by dmieditwingui tool
+; [Files] Smbios.c
+; SmbiosDMIEditFunc.c
+; Smbdata.mac
+;
+; 28 4/05/11 11:46a Davidd
+; [TAG] EIP55656
+; [Category] Improvement
+; [Description] Provide generic support in SMBIOS module to include
+; build time EC version
+; [Files] SmbiosBoard.c
+; Smbdata.mac
+; Smbios.sdl
+;
+; 27 2/09/11 10:27a Davidd
+; [TAG] EIP53081
+; [Category] Bug Fix
+; [Severity] Minor
+; [Symptom] Smbios Management Device (type 34) must be enabled in
+; order to
+; see System Power Supply (type 39)
+; [RootCause] Macro to create System Power Supply structure (type 39)
+; was grouped inside macro to create Smbios Management
+; Device
+; (type 34)
+; [Solution] Seperated Type 39 macro from 34.
+; [Files] SmbiosStaticData.asm
+; Smbdata.mac
+; Smbmacro.aid
+; Smbdesc.def
+;
+; 26 12/14/10 11:15a Davidd
+; [TAG] EIP49944
+; [Category] Improvement
+; [Description] Smbios enhancements for incorporating no strings
+; [Files] Smbdata.mac
+;
+; 25 12/10/10 3:06p Davidd
+; [TAG] EIP49728
+; [Category] BUG FIX
+; [Severity] Normal
+; [Symptom] SMBIOS Type 10 Data incorrect
+; [RootCause] Macro to create Type 10 structure is incorrect.
+; [Solution] Modified macro to create one Type 10 Entry containing
+; the number of ONBOARD_DEVICES.
+; [Files]
+; Smbdata.mac
+; Smbios.c
+;
+; 24 12/02/10 12:02p Davidd
+; [TAG] EIP48600
+; [Category] BUG FIX
+; [Severity] Normal
+; [Symptom] With SMBIOS 4.6.1_ALPHA_01.28 eModule, the DMIEDIT.EXE
+; tool would hang and type10 Description String is wrong
+; [RootCause] Recent change in macro used to create Type 10 structure
+; was causing the problem.
+; [Solution] Reverted the change (for Type 10) to previous
+; 4.6.1_ALPHA_01.27 label.
+; [Files] Smbdata.mac
+;
+; 23 10/08/10 8:15p Davidd
+; [TAG] EIP43278
+;
+; [Category] Function Request
+;
+; [Severity] Normal
+;
+; [Description] SMBIOS 2.7 requirement
+;
+; [Files] Include\Protocol\Smbios.h
+; Include\Protocol\SmbiosDynamicData.h
+; Board\EM\SMBIOS\SMBiosStaticData\SmbiosStaticData.sdl
+; Board\EM\SMBIOS\SMBiosStaticData\SMBDATA.MAC
+; Board\EM\SMBIOS\SMBiosStaticData\SMBSTRUC.DEF
+; Board\EM\SMBIOS\SMBiosStaticData\SMBMACRO.AID
+; Board\EM\SMBIOS\SMBiosStaticData\Smbdesc.def
+; Board\EM\SMBIOS\SMBiosStaticData\SMB.EQU
+;
+; 22 8/18/09 8:43a Davidd
+; Change made to increase the handle number at the end of type 39 (System
+; Power Supply)
+;
+; 21 6/02/09 4:44p Davidd
+; Updated AMI headers (EIP 22180)
+;
+; 20 5/19/09 11:05a Davidd
+; Corrected CreateOnboardDevicesExtendedInfo macro returning used handle
+; in the next structure (EIP 21149).
+;
+; 19 2/03/09 2:56p Davidd
+;
+; 18 10/23/08 6:31p Davidd
+; More changes for SMBIOS v2.5 and v2.6 support
+;
+; 17 10/13/08 11:16a Davidd
+; Changes made to support SMBIOS v2.5 and v2.6
+;
+; 16 4/04/08 5:12p Davidd
+; Made changes to use SDL token Ax_MEMORY_SOCKETS as number of memory
+; slot for each memory array.
+;
+; 15 2/22/08 10:29a Davidd
+; Simplified the way the number of memory slots for each physical memory
+; array are defined.
+;
+; 14 2/01/08 11:58a Davidd
+; Changes made to support SMBIOS type 17 with multiple memory arrays.
+;
+; 13 11/21/07 10:15a Davidd
+; Modified CreatePortableBatteryInfo to support multiple entries.
+;
+; 12 11/16/07 6:41p Davidd
+; Made changes to support multiple entries for Physical Memory Array
+; Information type 16 and Built-in Pointing Device Information type 21.
+;
+; 11 11/07/07 3:24p Davidd
+; Fixed ROM image build verification problem by setting the BIOS Release
+; Date to "TODAY" field in timestamp.equ instead of the system date.
+;
+; 10 3/29/07 4:55p Davidd
+; Changed the year in the AMI banner.
+;
+; 9 3/21/07 4:07p Michaela
+; made changes to CreateMemoryInfo macro to support multiple
+; memory arrays
+;
+; 8 3/14/07 2:17p Pavell
+; Changes for ITK
+;
+; 7 7/14/06 9:08a Pavell
+;
+; 6 3/01/06 5:04p Davidd
+; Modified loop counters to correctly handle more than one physical
+; memory array.
+;
+; 5 8/10/05 4:07p Davidd
+; In CreateBiosLanguageInfo, changed the current language to 1.
+;
+; 4 7/13/05 5:23p Davidd
+; Added changes to automatically fill in BIOS release date using system
+; date at build time.
+;
+; 3 7/08/05 12:58p Davidd
+; Updated Type 0 structure to use CORE major and minor version from
+; Core.sdl tokens.
+;
+; 2 6/21/05 12:07p Davidd
+; Corrected hanging problem as BIOS Version was changed starting from
+; label "ALPHA-1.00.12".
+;
+; 1 4/29/05 2:15p Davidd
+; Initial checkin.
+;
+;****************************************************************************
+
+include timestamp.equ
+include token.equ
+
+IFNDEF _smbdata_mac_ ; Start of Inclusion Guard _smbdata_mac_
+_smbdata_mac_ EQU 1
+
+;----------------------------------------------------------------------------
+; Structure Type 0 : BIOS INFORMATION
+;----------------------------------------------------------------------------
+CreateBiosInfo macro xHandle:REQ
+
+ LOCAL xBVersion
+
+ MKF_CMA = MKF_CORE_MAJOR_VERSION
+ MKF_CMI = MKF_CORE_MINOR_VERSION
+ IFDEF MKF_ITK_SUPPORT
+ IF MKF_ITK_SUPPORT EQ -1
+ xBVersionNoTime TEXTEQU @CATSTR (%MKF_TWO_LETTER_PRODUCT_NAME, %MKF_PRODUCT_CHIPSET_FAMILY, %MKF_PRODUCT_BOARD_REVISION, %MKF_PRODUCT_BOARD_SUB_REVISION, <.>, %MKF_THREE_LETTER_OEMID, <.>, %MKF_PRODUCT_BUILD_NUMBER)
+ xBVersion TEXTEQU @CATSTR(xBVersionNoTime, <.>, %FOUR_DIGIT_YEAR, <.>, %TWO_DIGIT_MONTH, %TWO_DIGIT_DAY, <.>, %TWO_DIGIT_HOUR, %TWO_DIGIT_MINUTE)
+ ELSE
+ xBVersion TEXTEQU @CATSTR (%MKF_CORE_MAJOR_VERSION, <.>, %MKF_CORE_MINOR_VERSION, <.>, %MKF_CORE_REVISION)
+ ENDIF
+ ENDIF
+ IFNDEF MKF_ITK_SUPPORT
+ xBVersion TEXTEQU @CATSTR (%MKF_CORE_MAJOR_VERSION, <.>, %MKF_CORE_MINOR_VERSION, <.>, %MKF_CORE_REVISION)
+ ENDIF
+ BIOSINFO_STRUC {\
+ { 0, sizeof(BIOSINFO_STRUC), xHandle },
+ 1,
+ 2,
+ MKF_BI_BIOS_START_ADDR,
+ 3,
+ BIOS_SIZE_IN_KB(MKF_BIOS_SIZE),
+ BIOS_CHAR(),BIOS_CHAR1(),EXT_CHAR(),EXT_CHAR2(),
+ MKF_CMA,MKF_CMI,MKF_ECMA,MKF_ECMI\
+ }
+ SCAN_PUT_STR %MKF_BIOS_VENDOR
+ PUT_STR %xBVersion
+ SCAN_PUT_STR %TODAY
+ TERMINATOR
+ EXITM %xHandle
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 1 : SYSTEM INFORMATION
+;----------------------------------------------------------------------------
+CreateSysInfo macro xHandle:REQ
+
+ LOCAL length, strnum, nMN, nPN, nVE, nSN, nSK, nFA
+
+ xHandle = xHandle + 1
+ length = sizeof SYSINFO_STRUC
+ strnum = 1
+
+ IFNDEF MKF_SYSTEM_MANUFACTURER
+ nMN = 0
+ ELSE
+ nMN = strnum
+ strnum = strnum + 1
+ ENDIF
+
+ IFNDEF MKF_SYSTEM_PRODUCT_NAME
+ nPN = 0
+ ELSE
+ nPN = strnum
+ strnum = strnum + 1
+ ENDIF
+
+ IFNDEF MKF_SYSTEM_VERSION
+ nVE = 0
+ ELSE
+ nVE = strnum
+ strnum = strnum + 1
+ ENDIF
+
+ IFNDEF MKF_SYSTEM_SERIAL_NUMBER
+ nSN = 0
+ ELSE
+ nSN = strnum
+ strnum = strnum + 1
+ ENDIF
+
+ IFNDEF MKF_SYSTEM_SKU_NUMBER
+ nSK = 0
+ ELSE
+ nSK = strnum
+ strnum = strnum + 1
+ ENDIF
+
+ IFNDEF MKF_SYSTEM_FAMILY
+ nFA = 0
+ ELSE
+ nFA = strnum
+ ENDIF
+
+ SYSINFO_STRUC {\
+ {1, length, xHandle},
+ nMN,
+ nPN,
+ nVE,
+ nSN,
+ MKF_SMBIOS_UUID,
+ MKF_SYSTEM_WAKEUP_TYPE,
+ nSK,
+ nFA\
+ }
+ IFDEF MKF_SYSTEM_MANUFACTURER
+ SCAN_PUT_STR %MKF_SYSTEM_MANUFACTURER
+ ENDIF
+ IFDEF MKF_SYSTEM_PRODUCT_NAME
+ SCAN_PUT_STR %MKF_SYSTEM_PRODUCT_NAME
+ ENDIF
+ IFDEF MKF_SYSTEM_VERSION
+ SCAN_PUT_STR %MKF_SYSTEM_VERSION
+ ENDIF
+ IFDEF MKF_SYSTEM_SERIAL_NUMBER
+ SCAN_PUT_STR %MKF_SYSTEM_SERIAL_NUMBER
+ ENDIF
+ IFDEF MKF_SYSTEM_SKU_NUMBER
+ SCAN_PUT_STR %MKF_SYSTEM_SKU_NUMBER
+ ENDIF
+ IFDEF MKF_SYSTEM_FAMILY
+ SCAN_PUT_STR %MKF_SYSTEM_FAMILY
+ ENDIF
+ TERMINATOR
+ EXITM %xHandle
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 2 : BASEBOARD INFORMATION
+;----------------------------------------------------------------------------
+CreateBaseBoardInfo macro xHandle:REQ
+
+ LOCAL length, chndl, sMN, sPR, sVE, sSN, sAT, sLC, sTemp, vFF, vBT
+ LOCAL strnum, nBB, nMN, nPR, nVE, nSN, nAT, nLC
+
+ chndl = xHandle + 1 + MKF_NUMBER_OF_BASEBOARDS
+
+ IF MKF_BASE_BOARD_INFO
+ length = sizeof BASEBOARD_INFO_STRUC
+
+ IF MKF_NUMBER_OF_BASEBOARDS EQ 1
+ xHandle = xHandle + 1
+ strnum = 1
+
+ IFNDEF MKF_BASE_BOARD_MANUFACTURER
+ nMN = 0
+ ELSE
+ nMN = strnum
+ strnum = strnum + 1
+ ENDIF
+
+ IFNDEF MKF_BASE_BOARD_PRODUCT_NAME
+ nPR = 0
+ ELSE
+ nPR = strnum
+ strnum = strnum + 1
+ ENDIF
+
+ IFNDEF MKF_BASE_BOARD_VERSION
+ nVE = 0
+ ELSE
+ nVE = strnum
+ strnum = strnum + 1
+ ENDIF
+
+ IFNDEF MKF_BASE_BOARD_SERIAL_NUMBER
+ nSN = 0
+ ELSE
+ nSN = strnum
+ strnum = strnum + 1
+ ENDIF
+
+ IFNDEF MKF_BB_ASSET_TAG
+ nAT = 0
+ ELSE
+ nAT = strnum
+ strnum = strnum + 1
+ ENDIF
+
+ IFNDEF MKF_BB_LOC_IN_CHASSIS
+ nLC = 0
+ ELSE
+ nLC = strnum
+ ENDIF
+
+ BASEBOARD_INFO_STRUC {\
+ {2, length, xHandle},
+ nMN,
+ nPR,
+ nVE,
+ nSN,
+ nAT,
+ BASE_BOARD_FEATURE_FLAGS(),
+ nLC,
+ chndl,
+ MKF_BB_BOARD_TYPE,
+ 00h\
+ }
+ IFDEF MKF_BASE_BOARD_MANUFACTURER
+ SCAN_PUT_STR %MKF_BASE_BOARD_MANUFACTURER
+ ENDIF
+ IFDEF MKF_BASE_BOARD_PRODUCT_NAME
+ SCAN_PUT_STR %MKF_BASE_BOARD_PRODUCT_NAME
+ ENDIF
+ IFDEF MKF_BASE_BOARD_VERSION
+ SCAN_PUT_STR %MKF_BASE_BOARD_VERSION
+ ENDIF
+ IFDEF MKF_BASE_BOARD_SERIAL_NUMBER
+ SCAN_PUT_STR %MKF_BASE_BOARD_SERIAL_NUMBER
+ ENDIF
+ IFDEF MKF_BB_ASSET_TAG
+ SCAN_PUT_STR %MKF_BB_ASSET_TAG
+ ENDIF
+ IFDEF MKF_BB_LOC_IN_CHASSIS
+ SCAN_PUT_STR %MKF_BB_LOC_IN_CHASSIS
+ ENDIF
+ TERMINATOR
+ ELSE
+ nBB = 1
+ REPEAT MKF_NUMBER_OF_BASEBOARDS
+ xHandle = xHandle + 1
+ strnum = 1
+
+ sTemp TEXTEQU @CATSTR(<BASEBOARD_FEATURE_FLAG_>, <%nBB>)
+ vFF = @CATSTR(%sTemp)
+ sTemp TEXTEQU @CATSTR(<BASEBOARD_TYPE_>, <%nBB>)
+ vBT = @CATSTR(%sTemp)
+
+ sMN TEXTEQU @CATSTR(<BASEBOARD_MANUFACTURER_>, <%nBB>)
+; sMN will be set to "BASEBOARD_MANUFACTURER_X" if string is not defined,
+; therefore if we search the string for "BASEBOARD_MANUFACTURER_" and it
+; returns a non-zero value, it means the string is not defined.
+ IF @INSTR(1, %sMN, <BASEBOARD_MANUFACTURER_>) NE 0
+ nMN = 0
+ ELSE
+ nMN = strnum
+ strnum = strnum + 1
+ ENDIF
+
+ sPR TEXTEQU @CATSTR(<BASEBOARD_PRODUCT_>, <%nBB>)
+ IF @INSTR(1, %sPR, <BASEBOARD_PRODUCT_>) NE 0
+ nPR = 0
+ ELSE
+ nPR = strnum
+ strnum = strnum + 1
+ ENDIF
+
+ sVE TEXTEQU @CATSTR(<BASEBOARD_VERSION_>, <%nBB>)
+ IF @INSTR(1, %sVE, <BASEBOARD_VERSION_>) NE 0
+ nVE = 0
+ ELSE
+ nVE = strnum
+ strnum = strnum + 1
+ ENDIF
+
+ sSN TEXTEQU @CATSTR(<BASEBOARD_SERIAL_NUMBER_>, <%nBB>)
+ IF @INSTR(1, %sSN, <BASEBOARD_SERIAL_NUMBER_>) NE 0
+ nSN = 0
+ ELSE
+ nSN = strnum
+ strnum = strnum + 1
+ ENDIF
+
+ sAT TEXTEQU @CATSTR(<BASEBOARD_ASSET_TAG_>, <%nBB>)
+ IF @INSTR(1, %sAT, <BASEBOARD_ASSET_TAG_>) NE 0
+ nAT = 0
+ ELSE
+ nAT = strnum
+ strnum = strnum + 1
+ ENDIF
+
+ sLC TEXTEQU @CATSTR(<BASEBOARD_LOCATION_>, <%nBB>)
+ IF @INSTR(1, %sLC, <BASEBOARD_LOCATION_>) NE 0
+ nLC = 0
+ ELSE
+ nLC = strnum
+ ENDIF
+
+ BASEBOARD_INFO_STRUC {\
+ {2, length, xHandle},
+ nMN,
+ nPR,
+ nVE,
+ nSN,
+ nAT,
+ vFF,
+ nLC,
+ chndl,
+ vBT,
+ 00h\
+ }
+ IF nMN NE 0
+ SCAN_PUT_STR %sMN
+ ENDIF
+ IF nPR
+ SCAN_PUT_STR %sPR
+ ENDIF
+ IF nVE
+ SCAN_PUT_STR %sVE
+ ENDIF
+ IF nSN
+ SCAN_PUT_STR %sSN
+ ENDIF
+ IF nAT
+ SCAN_PUT_STR %sAT
+ ENDIF
+ IF nLC
+ SCAN_PUT_STR %sLC
+ ENDIF
+ nBB = nBB + 1
+ TERMINATOR
+ ENDM
+ ENDIF ; MKF_NUMBER_OF_BASEBOARDS
+ ENDIF ; MKF_BASE_BOARD_INFO
+ EXITM %xHandle
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 3 : SYSTEM ENCLOSURE OR CHASSIS
+;----------------------------------------------------------------------------
+CreateSysChassisInfo macro xHandle:REQ
+
+ LOCAL length, LockPresence, xSysHt, xNoPwrCords, xNoContEle, xContEleRcrdLen
+ LOCAL xCt, xCbs, xPss, xTs, xSs, xOem, xContElement
+
+ LOCAL strnum, MFG, sMfg, vCl, VER, sVer, SN, sSn, ATN, sAtn, SKU, sSku, nSC, sTemp
+
+ LockPresence = 0
+
+ IF MKF_SYS_CHASSIS_INFO
+ nSC = 1
+ REPEAT MKF_NUMBER_OF_SYSTEM_CHASSIS
+ xHandle = xHandle + 1
+ strnum = 1
+
+ sTemp TEXTEQU @CATSTR(<MKF_SYS_CHASSIS_MANUFACTURER_>, <%nSC>)
+ IF @INSTR(1, %sTemp, <MKF_SYS_CHASSIS_MANUFACTURER_>) NE 0
+ MFG = 0
+ ELSE
+ MFG = strnum
+ strnum = strnum + 1
+ sMfg TEXTEQU @CATSTR(%sTemp)
+ ENDIF
+
+ sTemp TEXTEQU @CATSTR(<MKF_SYS_CHASSIS_LOCK_>, <%nSC>)
+ vCl TEXTEQU @CATSTR(%sTemp)
+
+ sTemp TEXTEQU @CATSTR(<MKF_SYS_CHASSIS_TYPE_>, <%nSC>)
+ xCt TEXTEQU @CATSTR(%sTemp)
+ xCt TEXTEQU xCt OR vCl
+
+ sTemp TEXTEQU @CATSTR(<MKF_SYS_CHASSIS_VERSION_>, <%nSC>)
+ IF @INSTR(1, %sTemp, <MKF_SYS_CHASSIS_VERSION_>) NE 0
+ VER = 0
+ ELSE
+ VER = strnum
+ strnum = strnum + 1
+ sVer TEXTEQU @CATSTR(%sTemp)
+ ENDIF
+
+ sTemp TEXTEQU @CATSTR(<MKF_SYS_CHASSIS_SERIAL_NUM_>, <%nSC>)
+ IF @INSTR(1, %sTemp, <MKF_SYS_CHASSIS_SERIAL_NUM_>) NE 0
+ SN = 0
+ ELSE
+ SN = strnum
+ strnum = strnum + 1
+ sSn TEXTEQU @CATSTR(%sTemp)
+ ENDIF
+
+ sTemp TEXTEQU @CATSTR(<MKF_SYS_CHASSIS_ASSET_TAG_NUM_>, <%nSC>)
+ IF @INSTR(1, %sTemp, <MKF_SYS_CHASSIS_ASSET_TAG_NUM_>) NE 0
+ ATN = 0
+ ELSE
+ ATN = strnum
+ strnum = strnum + 1
+ sAtn TEXTEQU @CATSTR(%sTemp)
+ ENDIF
+
+ sTemp TEXTEQU @CATSTR(<MKF_SYS_CHASSIS_BOOT_STATE_>, <%nSC>)
+ xCbs TEXTEQU @CATSTR(%sTemp)
+
+ sTemp TEXTEQU @CATSTR(<MKF_SYS_PWR_SUPPLY_STATE_>, <%nSC>)
+ xPss TEXTEQU @CATSTR(%sTemp)
+
+ sTemp TEXTEQU @CATSTR(<MKF_SYS_THERMAL_STATE_>, <%nSC>)
+ xTs TEXTEQU @CATSTR(%sTemp)
+
+ sTemp TEXTEQU @CATSTR(<MKF_SYS_SECURE_STATE_>, <%nSC>)
+ xSs TEXTEQU @CATSTR(%sTemp)
+
+ sTemp TEXTEQU @CATSTR(<MKF_SYS_OEM_>, <%nSC>)
+ xOem TEXTEQU @CATSTR(%sTemp)
+
+ sTemp TEXTEQU @CATSTR(<MKF_SYS_HEIGHT_>, <%nSC>)
+ xSysHt TEXTEQU @CATSTR(%sTemp)
+
+ sTemp TEXTEQU @CATSTR(<MKF_NO_PWR_CORDS_>, <%nSC>)
+ xNoPwrCords TEXTEQU @CATSTR(%sTemp)
+
+ sTemp TEXTEQU @CATSTR(<MKF_ELEMENT_COUNT_>, <%nSC>)
+ xNoContEle = @CATSTR(%sTemp)
+
+ sTemp TEXTEQU @CATSTR(<MKF_ELEMENT_LEN_>, <%nSC>)
+ xContEleRcrdLen = @CATSTR(%sTemp)
+
+ xContElement TEXTEQU @CATSTR(<MKF_CONT_ELEMENT_>, <%nSC>)
+ xContElement TEXTEQU @CATSTR(%xContElement)
+
+ sTemp TEXTEQU @CATSTR(<MKF_SYS_CHASSIS_SKU_NUMBER_>, <%nSC>)
+ IF @INSTR(1, %sTemp, <MKF_SYS_CHASSIS_SKU_NUMBER_>) NE 0
+ SKU = 0
+ ELSE
+ SKU = strnum
+ sSku TEXTEQU @CATSTR(%sTemp)
+ ENDIF
+
+ IF (xNoContEle * xContEleRcrdLen) EQ 0
+ length = sizeof SYSENC_STRUC
+ SYSENC_STRUC {\
+ {3, length, xHandle},
+ MFG,xCt,VER,SN,ATN,
+ xCbs,xPss,xTs,xSs,xOem,
+ xSysHt,xNoPwrCords,
+ xNoContEle,
+ xContEleRcrdLen,
+ SKU\
+ }
+ ELSEIF nSC EQ 1
+ length = sizeof SYSENC_STRUC_1
+ SYSENC_STRUC_1 {\
+ {3, length, xHandle},
+ MFG,xCt,VER,SN,ATN,
+ xCbs,xPss,xTs,xSs,xOem,
+ xSysHt,xNoPwrCords,
+ xNoContEle,
+ xContEleRcrdLen,
+ xContElement,
+ SKU\
+ }
+ ELSEIF nSC EQ 2
+ length = sizeof SYSENC_STRUC_2
+ SYSENC_STRUC_2 {\
+ {3, length, xHandle},
+ MFG,xCt,VER,SN,ATN,
+ xCbs,xPss,xTs,xSs,xOem,
+ xSysHt,xNoPwrCords,
+ xNoContEle,
+ xContEleRcrdLen,
+ xContElement,
+ SKU\
+ }
+ ELSEIF nSC EQ 3
+ length = sizeof SYSENC_STRUC_3
+ SYSENC_STRUC_3 {\
+ {3, length, xHandle},
+ MFG,xCt,VER,SN,ATN,
+ xCbs,xPss,xTs,xSs,xOem,
+ xSysHt,xNoPwrCords,
+ xNoContEle,
+ xContEleRcrdLen,
+ xContElement,
+ SKU\
+ }
+ ELSEIF nSC EQ 4
+ length = sizeof SYSENC_STRUC_4
+ SYSENC_STRUC_4 {\
+ {3, length, xHandle},
+ MFG,xCt,VER,SN,ATN,
+ xCbs,xPss,xTs,xSs,xOem,
+ xSysHt,xNoPwrCords,
+ xNoContEle,
+ xContEleRcrdLen,
+ xContElement,
+ SKU\
+ }
+ ELSEIF nSC EQ 5
+ length = sizeof SYSENC_STRUC_5
+ SYSENC_STRUC_5 {\
+ {3, length, xHandle},
+ MFG,xCt,VER,SN,ATN,
+ xCbs,xPss,xTs,xSs,xOem,
+ xSysHt,xNoPwrCords,
+ xNoContEle,
+ xContEleRcrdLen,
+ xContElement,
+ SKU\
+ }
+ ENDIF
+
+ IF MFG NE 0
+ SCAN_PUT_STR %sMfg
+ ENDIF
+ IF VER NE 0
+ SCAN_PUT_STR %sVer
+ ENDIF
+ IF SN NE 0
+ SCAN_PUT_STR %sSn
+ ENDIF
+ IF ATN NE 0
+ SCAN_PUT_STR %sAtn
+ ENDIF
+ IF SKU NE 0
+ SCAN_PUT_STR %sSku
+ ENDIF
+ TERMINATOR
+ nSC = nSC + 1
+ ENDM
+ ENDIF ; MKF_SYS_CHASSIS_INFO
+ EXITM %xHandle
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 4 : PROCESSOR INFORMATION
+;----------------------------------------------------------------------------
+CreateProcessorInfo macro xHandle:REQ
+
+ LOCAL length, xSi, xSv, rC, xN, xPT, xPF, xPS, xPA, xPP, xPF2
+ LOCAL strnum, nSN, nAT, nPN
+
+ xL1 = 0FFFFh
+ xL2 = 0FFFFh
+ xL3 = 0FFFFh
+ xVt = 0
+ xMs = 0
+ xUg = 0
+ length = sizeof PROC_STRUC
+
+ IF MKF_PROCESSOR_INFO
+ rC = 1
+ REPEAT MKF_NO_OF_PROCESSOR_SOCKETS
+ xHandle = xHandle + 1
+
+ IF MKF_NUMBER_OF_PROC_CACHE GT 0
+ xL1 = xHandle + 1
+ ENDIF
+ IF MKF_NUMBER_OF_PROC_CACHE GT 1
+ xL2 = xL1 + 1
+ ENDIF
+ IF MKF_NUMBER_OF_PROC_CACHE GT 2
+ xL3 = xL2 + 1
+ ENDIF
+
+ xSd TEXTEQU @CATSTR(<PROC_SOC_DESIG_>, <%rC>)
+ xPT TEXTEQU @CATSTR(<PROC_TYPE_>, <%rC>)
+ xPF TEXTEQU @CATSTR(<PROC_FAMILY_>, <%rC>)
+ xSv TEXTEQU @CATSTR(<PROC_VOLTAGE_>, <%rC>)
+ xSs TEXTEQU @CATSTR(<PROC_MAX_SPEED_>, <%rC>)
+ xSu TEXTEQU @CATSTR(<PROC_UPGRADE_>, <%rC>)
+ xPS TEXTEQU @CATSTR(<PROC_SERIAL_NO_>, <%rC>)
+ xPA TEXTEQU @CATSTR(<PROC_ASSET_TAG_>, <%rC>)
+ xPP TEXTEQU @CATSTR(<PROC_PART_NO_>, <%rC>)
+ xPF2 TEXTEQU @CATSTR(<PROC_FAMILY_2_>, <%rC>)
+
+ strnum = 4
+
+ nSN = @SIZESTR(%xPS)
+ IF nSN NE 0
+ nSN = strnum
+ strnum = strnum + 1
+ ENDIF
+ nAT = @SIZESTR(%xPA)
+ IF nAT NE 0
+ nAT = strnum
+ strnum = strnum + 1
+ ENDIF
+ nPN = @SIZESTR(%xPP)
+ IF nPN NE 0
+ nPN = strnum
+ ENDIF
+
+ PROC_STRUC {\
+ {4,length,xHandle},
+ 01h,xPT,xPF,
+ 02h,0,
+ 03h,
+ @PROC_VOLT(%xSv),
+ 0,
+ xSs,
+ 0,41h,
+ xSu,
+ xL1,xL2,xL3,
+ nSN,nAT,nPN,
+ 1,1,1,
+ 04h,xPF2}
+ SCAN_PUT_STR %xSd
+ BYTE " ",0
+ BYTE " ",0
+ IF nSN NE 0
+ SCAN_PUT_STR %xPS
+ ENDIF
+ IF nAT NE 0
+ SCAN_PUT_STR %xPA
+ ENDIF
+ IF nPN NE 0
+ SCAN_PUT_STR %xPP
+ ENDIF
+ TERMINATOR
+ rC = rC+1
+ xHandle = CreateProcCacheInfo(xHandle)
+ ENDM
+ ENDIF
+ EXITM %xHandle
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 5 : MEMORY CONTROLLER INFORMATION
+;----------------------------------------------------------------------------
+CreateMemCtrlInfo macro xHandle:REQ, hStart:REQ
+
+ LOCAL length, hMemMod, xEDD
+
+ IF MKF_MEM_CTRL_INFO
+ xHandle = xHandle + 1
+ hMemMod = hStart
+ length = (15 + (2 * MKF_A1_MEMORY_SOCKETS) + 1)
+
+ xEDD = MKF_MEM_CTRL_EDD
+ xMs = MKF_MAX_MEM_MODULE_SIZE
+ MEMCTRL_STRUC {\
+ {5, length, xHandle},
+ xEDD,
+ MEM_CTRL_ECC(),
+ MKF_MEM_CTRL_INTRLV,
+ MKF_MEM_CTRL_INTRLV,
+ MEM_SIZE_IN_MB(xMs),
+ MEM_CTRL_SPEED(),
+ SUPPORTED_MEM_TYPE(),
+ MEM_MOD_VOLTAGE(),
+ MKF_A1_MEMORY_SOCKETS\
+ }
+ REPEAT MKF_A1_MEMORY_SOCKETS
+ WORD hMemMod
+ hMemMod = hMemMod + 1
+ ENDM
+ BYTE MEM_CTRL_ECC()
+ TERMINATOR ; Memory Controller structure NOT Terminated by NULL
+ TERMINATOR ; Memory Controller structure NOT Terminated by NULL
+ ENDIF
+ EXITM %xHandle
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 6 : MEMORY MODULE INFORMATION
+;----------------------------------------------------------------------------
+CreateMemModuleInfo macro xHandle:REQ
+
+ LOCAL length, rC, xS, dS, xN, xL, xMs
+
+ length = 0CH
+IF MKF_MEM_MODULE_INFO
+ rC = 1
+ REPEAT MKF_A1_MEMORY_SOCKETS
+ xHandle = xHandle + 1
+
+ DMIHDR_STRUC {6, length, xHandle}
+ BYTE 1
+
+ xS TEXTEQU @CATSTR(<MEMORY_INFO_>, <%rC>)
+ xN = @INSTR(1, %xS, <,>)
+ dS TEXTEQU @SUBSTR(%xS, 1, (xN-1))
+ xL = @SIZESTR(%xS)
+ xL = xL -xN
+ xS TEXTEQU @SUBSTR(%xS, (xN+1), xL)
+ xMs = @MEMORY_INFO(%xS)
+ xS TEXTEQU @CATSTR(<MEMORY_TYPE_>, <%rC>)
+ @MEMORY_TYPE %xS
+ WORD xMs
+ xS TEXTEQU @CATSTR(<MEMORY_ERR_STATUS_>, <%rC>)
+ @MEMORY_ERR_STATUS %xS
+ SCAN_PUT_STR %dS
+ TERMINATOR
+ rC = rC+1
+ ENDM
+ENDIF
+ EXITM %xHandle
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 7: CACHE INFORMATION (INTERNAL)
+;----------------------------------------------------------------------------
+CreateProcCacheInfo macro xHandle:REQ
+
+ LOCAL length, rC, xS, dS, xN, xL
+
+ length = sizeof CACHE_INFO_STRUC
+
+ rC = 1
+ REPEAT MKF_NUMBER_OF_PROC_CACHE
+ xHandle = xHandle + 1
+
+ DMIHDR_STRUC {7, length, xHandle}
+ BYTE 1
+ xS TEXTEQU @CATSTR(<PROC_CACHE_CFG_L>, <%rC>)
+ xN = @INSTR(1, %xS, <,>)
+ dS TEXTEQU @SUBSTR(%xS, 1, (xN-1))
+ xL = @SIZESTR(%xS)
+ xL = xL -xN
+ xS TEXTEQU @SUBSTR(%xS, (xN+1), xL)
+ @CACHE_CFG %xS
+ xS TEXTEQU @CATSTR(<PROC_CACHE_INFO_L>, <%rC>)
+ @CACHE_INFO %xS
+ xS TEXTEQU @CATSTR(<PROC_CACHE_CHAR_L>, <%rC>)
+ @CACHE_CHAR %xS
+ SCAN_PUT_STR %dS
+ TERMINATOR
+ rC = rC+1
+ ENDM
+ EXITM %xHandle
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 7: CACHE INFORMATION (EXTERNAL)
+;----------------------------------------------------------------------------
+CreateExternalCacheInfo macro xHandle:REQ
+
+ LOCAL length, rC, xS, dS, xN, xL
+
+IF MKF_EXTERNAL_CACHE_INFORMATION
+ xHandle = xHandle + 1
+ length = sizeof CACHE_INFO_STRUC
+
+ DMIHDR_STRUC {7, length, xHandle}
+ BYTE 1
+ xS TEXTEQU <EXTERNAL_CACHE_CFG>
+ xN = @INSTR(1, %xS, <,>)
+ dS TEXTEQU @SUBSTR(%xS, 1, (xN-1))
+ xL = @SIZESTR(%xS)
+ xL = xL -xN
+ xS TEXTEQU @SUBSTR(%xS, (xN+1), xL)
+ @EXT_CACHE_CFG %xS
+ xS TEXTEQU <EXTERNAL_CACHE_INFO>
+ @CACHE_INFO %xS
+ xS TEXTEQU <EXTERNAL_CACHE_CHAR>
+ @CACHE_CHAR %xS
+ SCAN_PUT_STR %dS
+ TERMINATOR
+ENDIF
+ EXITM %xHandle
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 8 : PORT CONNECTOR INFORMATION
+;----------------------------------------------------------------------------
+CreatePortConnectorInfo macro xHandle:REQ
+
+ LOCAL length, iS, eS, iP, eP, pT, xC, xN, xS, rC, xLabel
+
+ length = sizeof PORT_CONNECTOR_STRUC
+IF MKF_PORT_CONNECTOR_INFO
+ IF MKF_NUMBER_OF_EXT_PORT_CONNECTORS GT 0
+ rC = 1
+ REPEAT MKF_NUMBER_OF_EXT_PORT_CONNECTORS
+ xHandle = xHandle + 1
+ xN = 1
+
+ DMIHDR_STRUC {8, length, xHandle}
+ xS TEXTEQU @CATSTR(<EXT_CONNECTOR_>, <%rC>)
+ xC = @INSTR(<%xN>, %xS, <,>)
+ iS TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(<%xN>, %xS, <,>)
+ iP TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(<%xN>, %xS, <,>)
+ eS TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(<%xN>, %xS, <,>)
+ eP TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN))
+ xN = @SIZESTR(%xS)
+ xN = xN-xC
+ xC = xC+1
+ pT TEXTEQU @SUBSTR(%xS, <%xC>, xN)
+ DEFINE_EXT_CONNECTOR %iS, %iP, %eS, %eP, %pT
+ TERMINATOR
+ rC = rC+1
+ ENDM
+ ENDIF
+
+ IF MKF_NUMBER_OF_INT_PORT_CONNECTORS GT 0
+ rC = 1
+ REPEAT MKF_NUMBER_OF_INT_PORT_CONNECTORS
+ xHandle = xHandle + 1
+ xN = 1
+
+ DMIHDR_STRUC {8, length, xHandle}
+ xS TEXTEQU @CATSTR(<INT_CONNECTOR_>, <%rC>)
+ xC = @INSTR(<%xN>, %xS, <,>)
+ iS TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(<%xN>, %xS, <,>)
+ iP TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN))
+ xN = @SIZESTR(%xS)
+ xN = xN-xC
+ xC = xC+1
+ pT TEXTEQU @SUBSTR(%xS, <%xC>, xN)
+ DEFINE_INT_CONNECTOR %iS, %iP, %pT
+ TERMINATOR
+ rC = rC+1
+ ENDM
+ ENDIF
+ENDIF
+ EXITM %xHandle
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 9 : SYSTEM SLOT INFORMATION
+;----------------------------------------------------------------------------
+CreateSystemSlotInfo macro xHandle:REQ
+
+ LOCAL length, xS1, xS2, rC, xH, sD, sT, sW, cU, sL, sI, sc1, sc2, xC, xN, xS, xSG, xB, xDF
+
+ length = sizeof SYSTEM_SLOT_INFO_STRUC
+
+IF MKF_SYSTEM_SLOT_INFO
+ IF MKF_NUMBER_OF_SYSTEM_SLOTS GT 0
+ rC = 1
+ REPEAT MKF_NUMBER_OF_SYSTEM_SLOTS
+ xHandle = xHandle + 1
+ xN = 1
+
+ xS1 TEXTEQU @CATSTR(<SEGGRP_BUS_DEV_FUNC_>, <%rC>)
+ xS2 TEXTEQU @CATSTR(<SYSTEM_SLOT_CHAR_>, <%rC>)
+ xS TEXTEQU @CATSTR(<SYSTEM_SLOT_INFO_>, <%rC>)
+ xC = @INSTR(<%xN>, %xS, <,>)
+ sD TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(<%xN>, %xS, <,>)
+ sT TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(<%xN>, %xS, <,>)
+ sW TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(<%xN>, %xS, <,>)
+ cU TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(<%xN>, %xS, <,>)
+ sL TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN))
+ xN = @SIZESTR(%xS)
+ xN = xN-xC
+ xC = xC+1
+ sI TEXTEQU @SUBSTR(%xS, <%xC>, xN)
+ xS TEXTEQU @CATSTR(<SEGGRP_BUS_DEV_FUNC_>, <%rC>)
+ xN = 1
+ xC = @INSTR(<%xN>, %xS, <,>)
+ xSG TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(<%xN>, %xS, <,>)
+ xB TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN))
+ xC = xC+1
+ xDF TEXTEQU @SUBSTR(%xS, <%xC>)
+
+ SYS_SLOT_INFO 9, length, xHandle, sD, sT, sW, cU, sL, sI, xS2, xSG, xB, xDF
+ TERMINATOR
+ rC = rC+1
+ ENDM
+ ENDIF
+ENDIF
+ EXITM %xHandle
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 10 : ON BOARD DEVICES INFORMATION
+;----------------------------------------------------------------------------
+CreateOnboardDeviceInfo macro xHandle:REQ
+
+ LOCAL length, xS, xE, xT, xN, rC, xD, xC
+
+IF MKF_ONBOARD_DEVICE_INFO
+ xHandle = xHandle + 1
+ length = 4 + (2 * MKF_NUMBER_OF_ONBOARD_DEVICES)
+ rC = 1
+
+ DMIHDR_STRUC {10, length, xHandle}
+ REPEAT MKF_NUMBER_OF_ONBOARD_DEVICES
+ xN = 1
+ xS TEXTEQU @CATSTR(<ONBOARD_DEVICE_>, <%rC>)
+ xC = @INSTR(<%xN>, %xS, <,>)
+ xE TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(<%xN>, %xS, <,>)
+ xT TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN))
+ ONBOARD_DEV_SUB_STRUC {((xE shl 7) OR xT), rC}
+ rC = rC + 1
+ ENDM
+ rC = 1
+ REPEAT MKF_NUMBER_OF_ONBOARD_DEVICES
+ xN = 1
+ xS TEXTEQU @CATSTR(<ONBOARD_DEVICE_>, <%rC>)
+ xC = @INSTR(<%xN>, %xS, <,>)
+ xN = xC+1
+ xC = @INSTR(<%xN>, %xS, <,>)
+ xN = @SIZESTR(%xS)
+ xN = xN-xC
+ xC = xC+1
+ xD TEXTEQU @SUBSTR(%xS, <%xC>, <%xN>)
+ SCAN_PUT_STR %xD
+ rC = rC + 1
+ ENDM
+ TERMINATOR
+ENDIF
+ EXITM %xHandle
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 11 : OEM STRINGS INFORMATION
+;----------------------------------------------------------------------------
+CreateOemStringInfo macro xHandle:REQ
+
+ LOCAL xS, rC
+
+IF MKF_OEM_STRING_INFO
+ xHandle = xHandle + 1
+
+ OEM_STRING_STRUC {\
+ {11, 5, xHandle},
+ MKF_NUMBER_OF_OEM_STRINGS\
+ }
+ rC = 1
+ REPEAT MKF_NUMBER_OF_OEM_STRINGS
+ xS TEXTEQU @CATSTR(<OEM_STRING_>, <%rC>)
+ SCAN_PUT_STR %xS
+ rC = rC+1
+ ENDM
+ TERMINATOR
+ENDIF
+ EXITM %xHandle
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 12 : SYSTEM CONFIGURATION STRINGS INFORMATION
+;----------------------------------------------------------------------------
+CreateSystemConfigOptionInfo macro xHandle:REQ
+
+ LOCAL xS, rC
+
+IF MKF_SYSTEM_CONFIG_OPTION_INFO
+ xHandle = xHandle + 1
+
+ SYSTEM_CONFIG_OPT_STRUC {\
+ {12, 5, xHandle},
+ MKF_NUMBER_OF_SYSTEM_CONFIG_STRINGS\
+ }
+ rC = 1
+ REPEAT MKF_NUMBER_OF_SYSTEM_CONFIG_STRINGS
+ xS TEXTEQU @CATSTR(<SYSTEM_CONFIG_STRING_>, <%rC>)
+ SCAN_PUT_STR %xS
+ rC = rC+1
+ ENDM
+ TERMINATOR
+ENDIF
+ EXITM %xHandle
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 13: BIOS LANGUAGE INFORMATION
+;----------------------------------------------------------------------------
+CreateBiosLanguageInfo macro xHandle:REQ
+
+ LOCAL xS, rC
+
+IF MKF_BIOS_LANGUAGE_INFO
+ xHandle = xHandle + 1
+
+ BIOS_LANGUAGE_INFO_STRUC {\
+ {13, 16h, xHandle},
+ NUMBER_OF_LANGUAGE_STRINGS,
+ BIOS_LANGUAGE_FORMAT,
+ {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+ CURRENT_LANGUAGE\
+ }
+ rC = 1
+ REPEAT NUMBER_OF_LANGUAGE_STRINGS
+ xS TEXTEQU @CATSTR(<LANGUAGE_STRING_>, <%rC>)
+ SCAN_PUT_STR %xS
+ rC = rC+1
+ ENDM
+ TERMINATOR
+ENDIF
+ EXITM %xHandle
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 14: GROUP ASSOCIATION INFORMATION
+;----------------------------------------------------------------------------
+; NOT IMPLEMENTED NOW
+
+;----------------------------------------------------------------------------
+; Structure Type 15: EVENT LOG INFORMATION
+;----------------------------------------------------------------------------
+CreateEventLogInfo MACRO xHandle:REQ
+
+ LOCAL length
+
+ length = 14h
+IF MKF_EVENT_LOG_INFO
+ xHandle = xHandle + 1
+ length = (17h + (NO_OF_SUPPORTED_EVENTS * LENGTH_OF_EACH_LOG_TYPE_DESC))
+
+ EVENTLOG_INFO_STRUC {\
+ {15, length, xHandle},
+ 0004h,
+ 0000h,
+ 0002h,
+ 02h,
+ 00h,
+ 00000000h,
+ 046c046ah,
+ 00h,
+ NO_OF_SUPPORTED_EVENTS,
+ LENGTH_OF_EACH_LOG_TYPE_DESC\
+ }
+ BYTE (NO_OF_SUPPORTED_EVENTS*LENGTH_OF_EACH_LOG_TYPE_DESC) dup(0FFh)
+ TERMINATOR
+ TERMINATOR
+ENDIF
+ EXITM %xHandle
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 16: PHYSICAL MEMORY ARRAY INFORMATION
+;----------------------------------------------------------------------------
+CreateMemoryInfo MACRO xHandle:REQ
+
+ LOCAL length, HArrayError, HArray, HMdevice, HMMAddress
+ LOCAL AC, ILoopCount, xN, xNN, xSi, xSv, xTv, xoN
+ LOCAL xNmd, xCt, xMl, xDc, ICurDev, xDn, xDh, xMs, xA, xDw, xFf, xMt, xTd, xAt
+
+ length = sizeof PHY_MEM_ARRAY_STRUC
+ AC = 1
+ REPEAT MKF_NO_OF_PHYSICAL_MEMORY_ARRAY
+ xHandle = xHandle + 1
+ HArray = xHandle
+
+IF MKF_MEMORY_ERROR_INFO
+ HArrayError = xHandle + 1
+ELSE
+ HArrayError = 0FFFEh
+ENDIF
+
+ xA TEXTEQU @CATSTR(<MKF_A>, <%AC>)
+ xMs = @CATSTR(%xA, <_MEMORY_SOCKETS>)
+
+ PHY_MEM_ARRAY_STRUC {\
+ {16, length, xHandle},
+ @CATSTR(<ARRAY_LOC_>,<%AC>),
+ @CATSTR(<ARRAY_USE_>,<%AC>),
+ @CATSTR(<ARRAY_ERROR_COR_>,<%AC>),
+ @CATSTR(<MAX_MEM_CAP_>,<%AC>),
+ HArrayError,
+ xMs,
+ @CATSTR(<EXT_MAX_MEM_CAP_>,<%AC>)\
+ }
+ TERMINATOR
+ TERMINATOR
+
+;----------------------------------------------------------------------------
+; Structure Type 18: MEMORY ERROR INFORMATION
+;----------------------------------------------------------------------------
+IF MKF_MEMORY_ERROR_INFO
+ length = sizeof MEMORY_ARRAY_ERR_STRUC
+ xHandle = xHandle + 1
+ MEMORY_ARRAY_ERR_STRUC {\
+ {18, length, xHandle},
+ MKF_MEMORY_ERROR_TYPE,
+ MKF_ERROR_GRANULARITY,
+ MKF_ERROR_OPERATION,
+ MKF_VENDOR_SYNDROME,
+ MKF_MEMORY_ARRAY_ERROR_ADDRESS,
+ MKF_DEVICE_ERROR_ADDRESS,
+ MKF_ERROR_RESOLUTION\
+ }
+ TERMINATOR
+ TERMINATOR
+ENDIF
+
+;----------------------------------------------------------------------------
+; Structure Type 19: MEMORY ARRAY MAPPED ADDRESS INFORMATION
+;----------------------------------------------------------------------------
+ length = sizeof MEMORY_ARRAY_MAPPED_ADDRESS_STRUC
+ xHandle = xHandle + 1
+ HMMAddress = xHandle
+ MEMORY_ARRAY_MAPPED_ADDRESS_STRUC{\
+ {19, length, xHandle},
+ MKF_ARRAY_MAPPED_STARTING_ADDRESS,
+ MKF_ARRAY_MAPPED_ENDING_ADDRESS,
+ HArray,
+ MKF_PARTITION_WIDTH,
+ 0,
+ 0\
+ }
+ TERMINATOR
+ TERMINATOR
+
+;----------------------------------------------------------------------------
+; Structure Type 17: MEMORY DEVICE INFORMATION
+;----------------------------------------------------------------------------
+ ILoopCount = 1
+ xA TEXTEQU @CATSTR(<A>, <%AC>)
+
+ REPEAT xMs
+ length = sizeof MEMORY_DEVICE_STRUC
+ xSv TEXTEQU @CATSTR(%xA, <_DEVICE_>, <%ILoopCount>)
+ xDw = @CATSTR(%xA, <_DATAWIDTH>)
+ xFf = @CATSTR(%xA, <_FORMFACTOR>)
+ xMt = @CATSTR(%xA, <_MEMORYTYPE>)
+ xTd = @CATSTR(%xA, <_TYPEDETAIL>)
+ xAt = @CATSTR(%xA, <_ATTRIBUTES>)
+ xHandle = xHandle + 1
+ HMdevice = xHandle
+
+IF MKF_MEMORY_ERROR_INFO
+ HArrayError = xHandle + 1
+ELSE
+ HArrayError = 0FFFEh
+ENDIF
+
+ MEMORY_DEVICE_STRUC {\
+ {17, length, xHandle},
+ HArray,
+ HArrayError,
+ 0ffffh,
+ xDw,
+ 0,
+ xFf,
+ 0,
+ 01h,
+ 02h,
+ xMt,
+ xTd,
+ 0,
+ 03h,
+ 04h,
+ 05h,
+ 06h,
+ xAt,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0\
+ }
+ xoN = 1
+ xN = @INSTR(xoN, %xSv, <,>)
+ xTv TEXTEQU @SUBSTR(%xSv, xoN, (xN-xoN))
+ SCAN_PUT_STR %xTv
+ xoN = xN + 1
+ xN = @INSTR(xoN, %xSv, <,>)
+ xTv TEXTEQU @SUBSTR(%xSv, xoN, (xN-xoN))
+ SCAN_PUT_STR %xTv
+ xoN = xN + 1
+ xN = @INSTR(xoN, %xSv, <,>)
+ xTv TEXTEQU @SUBSTR(%xSv, xoN, (xN-xoN))
+ SCAN_PUT_STR %xTv
+ xoN = xN + 1
+ xN = @INSTR(xoN, %xSv, <,>)
+ xTv TEXTEQU @SUBSTR(%xSv, xoN, (xN-xoN))
+ SCAN_PUT_STR %xTv
+ xoN = xN + 1
+ xN = @INSTR(xoN, %xSv, <,>)
+ xTv TEXTEQU @SUBSTR(%xSv, xoN, (xN-xoN))
+ SCAN_PUT_STR %xTv
+ xoN = xN + 1
+ xTv TEXTEQU @SUBSTR(%xSv, xoN)
+ SCAN_PUT_STR %xTv
+ xoN = xN + 1
+ TERMINATOR
+
+;----------------------------------------------------------------------------
+; Structure Type 18: MEMORY ERROR INFORMATION
+;----------------------------------------------------------------------------
+IF MKF_MEMORY_ERROR_INFO
+ length = sizeof MEMORY_ARRAY_ERR_STRUC
+ xHandle = xHandle + 1
+ MEMORY_ARRAY_ERR_STRUC {\
+ {18, length, xHandle},
+ MKF_MEMORY_ERROR_TYPE,
+ MKF_ERROR_GRANULARITY,
+ MKF_ERROR_OPERATION,
+ MKF_VENDOR_SYNDROME,
+ MKF_MEMORY_ARRAY_ERROR_ADDRESS,
+ MKF_DEVICE_ERROR_ADDRESS,
+ MKF_ERROR_RESOLUTION\
+ }
+ TERMINATOR
+ TERMINATOR
+ENDIF
+
+;----------------------------------------------------------------------------
+; Structure Type 20: MEMORY DEVICE MAPPED ADDRESS INFORMATION
+;----------------------------------------------------------------------------
+IF MKF_MEMORY_DEVICE_INFO
+ length = sizeof MEMORY_DEVICE_MAPPED_ADDRESS_STRUC
+ xHandle = xHandle + 1
+ MEMORY_DEVICE_MAPPED_ADDRESS_STRUC {\
+ {20, length, xHandle},
+ MKF_MEMORY_DEVICE_STARTING_ADDRESS,
+ MKF_MEMORY_DEVICE_ENDING_ADDRESS,
+ HMdevice,
+ HMMAddress,
+ 01h,
+ 00h,
+ MKF_INTERLEAVE_DATA_DEPTH,
+ 0,
+ 0\
+ }
+ TERMINATOR
+ TERMINATOR
+ENDIF
+ ILoopCount = ILoopCount + 1
+ ENDM ; xMs
+ AC = AC + 1
+ENDM ; MKF_NO_OF_PHYSICAL_MEMORY_ARRAY
+ EXITM %xHandle
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 37: MEMORY CHANNEL INFORMATION STRUCTURE
+;----------------------------------------------------------------------------
+CreateMemoryChannelInfo macro xHandle:REQ
+
+ LOCAL ILoopCount, xNmd, xCt, xMl, sLen
+
+IF MKF_MEMORY_CHANNEL_INFO
+ ILoopCount = 1
+ REPEAT MKF_NUMBER_OF_MEMORY_CHANNELS
+ xHandle = xHandle + 1
+
+ xNmd = @CATSTR (<NUMBER_OF_MEMORY_DEVICES_IN_CHANNEL_>, <%ILoopCount>)
+ xCt = @CATSTR (<CHANNEL_>, <%ILoopCount>, <_TYPE>)
+ xMl = @CATSTR (<MAX_CHANNEL_>, <%ILoopCount>, <_LOAD>)
+ sLen = 7 + 3 * xNmd
+ MEMORY_CHANNEL_STRUC {\
+ {37, sLen, xHandle},
+ xCt,
+ xMl,
+ xNmd\
+ }
+
+ REPEAT xNmd
+ db 1
+ dw 0
+ ENDM ; xNmd
+
+ TERMINATOR
+ TERMINATOR
+ ILoopCount = ILoopCount + 1
+ ENDM ; MKF_NUMBER_OF_MEMORY_CHANNELS
+ENDIF
+ EXITM %xHandle
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 16: SYSTEM FLASH MEMORY ARRAY INFORMATION
+;----------------------------------------------------------------------------
+CreateFlashMemoryInfo MACRO xHandle:REQ
+
+LOCAL FMArray,FMdevice,FMMAddress
+
+IF MKF_FLASH_MEMORY_ARRAY_INFO
+xHandle = xHandle + 1
+FMArray = xHandle
+PHY_MEM_ARRAY_STRUC {\
+{16, sizeof(PHY_MEM_ARRAY_STRUC), xHandle},
+03h,
+05h,
+03h,
+(MKF_BIOS_SIZE/400h),
+0FFFEh,
+01h,
+00h\
+}
+TERMINATOR
+TERMINATOR
+
+;----------------------------------------------------------------------------
+; Structure Type 19: MEMORY ARRAY MAPPED ADDRESS INFORMATION
+;----------------------------------------------------------------------------
+xHandle = xHandle + 1
+FMMAddress = xHandle
+MEMORY_ARRAY_MAPPED_ADDRESS_STRUC{\
+{19, sizeof(MEMORY_ARRAY_MAPPED_ADDRESS_STRUC), xHandle},
+(0FFFFFFFFh - MKF_BIOS_SIZE + 1) SHR 10,
+0FFFFFFFFh SHR 10,
+FMArray,
+01h, 0, 0\
+}
+TERMINATOR
+TERMINATOR
+
+;----------------------------------------------------------------------------
+; Structure Type 17: MEMORY DEVICE INFORMATION
+;----------------------------------------------------------------------------
+xHandle = xHandle + 1
+FMdevice = xHandle
+MEMORY_DEVICE_STRUC {\
+{17, sizeof(MEMORY_DEVICE_STRUC), xHandle},
+FMArray,
+0FFFEh,
+08h,
+08h,
+(MKF_BIOS_SIZE/400h) OR 8000h,
+01h,
+00h,
+01h,
+02h,
+09h,
+1000h,
+00h,
+03h,
+04h,
+05h,
+06h,
+00h,
+00h,
+00h,
+00h,
+00h,
+00h\
+}
+BYTE 20h, 0
+BYTE 20h, 0
+BYTE 20h, 0
+BYTE 20h, 0
+BYTE 20h, 0
+BYTE 20h, 0
+TERMINATOR
+
+;----------------------------------------------------------------------------
+; Structure Type 20: MEMORY DEVICE MAPPED ADDRESS INFORMATION
+;----------------------------------------------------------------------------
+xHandle = xHandle + 1
+MEMORY_DEVICE_MAPPED_ADDRESS_STRUC {\
+{20, sizeof(MEMORY_DEVICE_MAPPED_ADDRESS_STRUC), xHandle},
+(0FFFFFFFFh - MKF_BIOS_SIZE + 1) SHR 10,
+0FFFFFC00h SHR 10,
+FMdevice,
+FMMAddress,
+01h,
+00h,
+00h,
+00h,
+00h\
+}
+TERMINATOR
+TERMINATOR
+ENDIF ; MKF_FLASH_MEMORY_ARRAY_INFO
+EXITM %xHandle
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 21: BUILT-IN POINTING DEVICE INFORMATION
+;----------------------------------------------------------------------------
+CreateBuiltinPointingDeviceInfo macro xHandle:REQ
+
+ LOCAL PointDevCntr
+
+IF MKF_BUILTIN_POINTING_DEVICE_INFO
+ PointDevCntr = 1
+
+ REPEAT MKF_NO_OF_POINTING_DEVICE
+ xHandle = xHandle + 1
+
+ BUILTIN_POINT_DEV_STRUC {\
+ {21, 07h, xHandle},
+ @CATSTR(<POINTING_DEVICE_TYPE_>,<%PointDevCntr>),
+ @CATSTR(<POINTING_DEVICE_INTERFACE_>,<%PointDevCntr>),
+ @CATSTR(<POINTING_DEVICE_NUM_BUTTONS_>,<%PointDevCntr>)\
+ }
+ TERMINATOR
+ TERMINATOR
+ PointDevCntr = PointDevCntr + 1
+ ENDM ; MKF_NO_OF_POINTING_DEVICE
+ENDIF ; MKF_BUILTIN_POINTING_DEVICE_INFO
+ EXITM %xHandle
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 22: PORTABLE BATTERY INFORMATION
+;----------------------------------------------------------------------------
+CreatePortableBatteryInfo macro xHandle:REQ
+
+ LOCAL BC, xDCh, xDC, xDV, xME, xSSN, xSMD, xDCM, xOS
+
+IF MKF_PORTABLE_BATTERY_INFO
+
+ BC = 1
+
+ REPEAT MKF_NO_OF_PORTABLE_BATTERY
+ xHandle = xHandle + 1
+
+ xDCh = @CATSTR(<DEVICE_CHEMISTRY_>,<%BC>)
+ xDC = @CATSTR(<DESIGN_CAPACITY_>,<%BC>)
+ xDV = @CATSTR(<DESIGN_VOLTAGE_>,<%BC>)
+ xME = @CATSTR(<MAX_ERROR_IN_BAT_DATA_>,<%BC>)
+ xSSN = @CATSTR(<PORT_BAT_SBDS_SERIAL_NO_>,<%BC>)
+ xSMD = @CATSTR(<PORT_BAT_SBDS_MAN_DATE_>,<%BC>)
+ xDCM = @CATSTR(<DESIGN_CAPACITY_MULTIPLIER_>,<%BC>)
+ xOS = @CATSTR(<OEM_SPECIFIC_>,<%BC>)
+
+ PORTABLE_BATTERY_STRUC {\
+ {22, sizeof(PORTABLE_BATTERY_STRUC), xHandle},
+ 01h, 02h, 03h, 04h, 05h,
+ xDCh,
+ xDC,
+ xDV,
+ 06,
+ xME,
+ xSSN,
+ ,
+ 07,
+ ,
+ xOS\
+ }
+ SCAN_PUT_STR @CATSTR(<PORT_BAT_LOCATION_>,<%BC>)
+ SCAN_PUT_STR @CATSTR(<PORT_BAT_MANUFACTURER_>,<%BC>)
+ SCAN_PUT_STR @CATSTR(<PORT_BAT_MANUFACTURE_DATE_>,<%BC>)
+ SCAN_PUT_STR @CATSTR(<PORT_BAT_SERIAL_NUMBER_>,<%BC>)
+ SCAN_PUT_STR @CATSTR(<PORT_BAT_DEVICE_NAME_>,<%BC>)
+ SCAN_PUT_STR @CATSTR(<PORT_BAT_SBDS_VER_NO_>,<%BC>)
+ SCAN_PUT_STR @CATSTR(<PORT_BAT_SBDS_DEV_CHEM_>,<%BC>)
+ TERMINATOR
+ BC = BC + 1
+ ENDM ; MKF_NO_OF_PORTABLE_BATTERY
+ENDIF ; MKF_PORTABLE_BATTERY_INFO
+ EXITM %xHandle
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 23: SYSTEM RESET INFORMATION
+;----------------------------------------------------------------------------
+CreateSystemResetInfo MACRO xHandle:REQ
+
+ LOCAL length
+
+ length = 0Dh
+IF MKF_SYSTEM_RESET_INFO
+ xHandle = xHandle + 1
+
+ SYSTEM_RESET_STRUC {\
+ {23, length, xHandle},
+ RESET_CAPABILITIES,
+ RESET_COUNT,
+ RESET_LIMIT,
+ RESET_TIMER_INTERVAL,
+ RESET_TIMEOUT\
+ }
+ TERMINATOR
+ TERMINATOR
+ENDIF ; MKF_SYSTEM_RESET_INFO
+ EXITM %xHandle
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 24: HARDWARE SECURITY INFORMATION
+;----------------------------------------------------------------------------
+CreateHardwareSecurityInfo MACRO xHandle:REQ
+
+ LOCAL length
+
+ length = 05h
+IF MKF_HARDWARE_SECURITY_INFO
+ xHandle = xHandle + 1
+
+ HARDWARE_SECURITY_STRUC {\
+ {24, length, xHandle},
+ MKF_HARDWARE_SECURITY_SETTINGS\
+ }
+ TERMINATOR
+ TERMINATOR
+ENDIF ; MKF_HARDWARE_SECURITY_INFO
+ EXITM %xHandle
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 25: SYSTEM POWER CONTROLS INFORMATION
+;----------------------------------------------------------------------------
+CreateSystemPowerControlsInfo MACRO xHandle:REQ
+
+ LOCAL length
+
+ length = 09h
+
+IF MKF_SYSTEM_POWER_CONTROLS_INFO
+ xHandle = xHandle + 1
+
+ SYSTEM_POWER_CONTROLS_STRUC {\
+ {25, length, xHandle},
+ NEXT_SCHEDULED_POWERON_MONTH,
+ NEXT_SCHEDULED_POWERON_DAY_OF_MONTH,
+ NEXT_SCHEDULED_POWERON_HOUR,
+ NEXT_SCHEDULED_POWERON_MINUTE,
+ NEXT_SCHEDULED_POWERON_SECOND\
+ }
+ TERMINATOR
+ TERMINATOR
+ENDIF ; MKF_SYSTEM_POWER_CONTROLS_INFO
+ EXITM %xHandle
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 30: OUT-OF-BAND REMOTE ACCESS INFORMATION
+;----------------------------------------------------------------------------
+CreateOutofBandRemoteAccessInfo MACRO xHandle:REQ
+
+ LOCAL length
+
+ length = 06h
+
+IF MKF_OUT_OF_BAND_REMOTE_ACCESS_INFO
+ xHandle = xHandle + 1
+
+ OUT_OF_BAND_REMOTE_ACCESS_STRUC {\
+ {30, length, xHandle},
+ 01h,
+ MKF_OBRA_CONNECTIONS\
+ }
+ SCAN_PUT_STR %MKF_OBRA_MANUFACTURER_NAME
+ TERMINATOR
+ENDIF ; MKF_OUT_OF_BAND_REMOTE_ACCESS_INFO
+ EXITM %xHandle
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 31: BOOT INTEGRITY SERVICES
+;----------------------------------------------------------------------------
+CreateBootIntegrityServicesInfo MACRO xHandle:REQ
+
+IF MKF_BIS_INFO
+ xHandle = xHandle + 1
+
+ BOOT_INTEGRITY_STRUC {\
+ {31, sizeof(BOOT_INTEGRITY_STRUC), xHandle},
+ MKF_CHECKSUM,
+ 0,
+ 0,
+ MKF_BIS_ENTRY_POINT_REAL_MODE,
+ MKF_BIS_ENTRY_POINT_FLAT_MODE,
+ 0,
+ 0\
+ }
+ TERMINATOR
+ TERMINATOR
+ENDIF ; MKF_BIS_INFO
+ EXITM %xHandle
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 32: SYSTEM BOOT INFORMATION
+;----------------------------------------------------------------------------
+CreateSystemBootInfo MACRO xHandle:REQ
+
+IF MKF_SYSTEM_BOOT_INFO
+ xHandle = xHandle + 1
+
+ SYS_BOOT_INFORMATION_STRUC {\
+ {32, sizeof(SYS_BOOT_INFORMATION_STRUC), xHandle},
+ {0,0,0,0,0,0},
+ {0,0,0,0,0,0,0,0,0,0}\
+ }
+ TERMINATOR
+ TERMINATOR
+ENDIF ; MKF_SYSTEM_BOOT_INFO
+ EXITM %xHandle
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 33: 64-BIT MEMORY ERROR INFORMATION
+;----------------------------------------------------------------------------
+CreateSixtyFourBitMemoryErrorInfo MACRO xHandle:REQ
+
+ LOCAL length
+
+ length = 01Fh
+
+IF MKF_SIXTY_FOURBIT_MEMORY_ERROR_INFO
+ xHandle = xHandle + 1
+
+ SIXTYFOUR_BIT_MEMORY_ARRAY_ERR_STRUC {\
+ {33, length, xHandle},
+ MKF_MEMORY_ERROR_TYPE,
+ MKF_ERROR_GRANULARITY,
+ MKF_ERROR_OPERATION,
+ MKF_VENDOR_SYNDROME,
+ MEM_ARR_ERR_ADD,
+ DEV_ERR_ADD,
+ MKF_ERROR_RESOLUTION\
+ }
+ TERMINATOR
+ TERMINATOR
+ENDIF ; MKF_SIXTY_FOURBIT_MEMORY_ERROR_INFO
+ EXITM %xHandle
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 34: MANAGEMENT DEVICE INFORMATION
+;----------------------------------------------------------------------------
+CreateManagementDeviceInfo macro xHandle:REQ
+
+ LOCAL length, mD, mT, mA, mAt, xC, xN, xS, rC, mH, cH, tH
+ LOCAL vD,lS,maxV,minV,reS,tolE,accY,oD,nomV,rCMdi,rCVpi, rCEdi
+ LOCAL Tphndl,tD,dtS,cuG,oDc,nS,nD,eD,xT,xCc,xE,xV,rCo
+ LOCAL xPs, mPc, pSc, xTs
+
+ length = 0Bh
+
+IF MKF_MANAGEMENT_DEVICE_INFO
+ rCMdi = 1
+
+ REPEAT MKF_NUMBER_OF_MANAGEMENT_DEVICES
+ xHandle = xHandle + 1
+ mH = xHandle
+
+ mD TEXTEQU @CATSTR(<MANAGEMENT_DEVICE_STRING_>, <%rCMdi>)
+ mT TEXTEQU @CATSTR(<MANAGEMENT_DEVICE_TYPE_>, <%rCMdi>)
+ mA TEXTEQU @CATSTR(<MANAGEMENT_DEVICE_ADDR_>, <%rCMdi>)
+ mAt TEXTEQU @CATSTR(<MANAGEMENT_DEVICE_ADDR_TYPE_>, <%rCMdi>)
+
+ MANAGEMENT_DEV_INFO 34, length, xHandle, mD, mT, mA, mAt
+ TERMINATOR
+
+;----------------------------------------------------------------------------
+; Structure Type 26: VOLTAGE PROBE INFORMATION
+;----------------------------------------------------------------------------
+IF MKF_VOLTAGE_PROBE_INFO
+ rCVpi =1
+ xV TEXTEQU @CATSTR(<NUMBER_OF_VOLTAGE_PROBE_ASSOCIATED_MGMT_DEV_>, <%rCMdi>)
+
+ REPEAT xV
+ xHandle = xHandle + 1
+ cH = xHandle
+ length = sizeof VOLTAGE_PROBE_STRUC
+
+ xN = 1
+ xS TEXTEQU @CATSTR(<VOLTAGE_PROBE_INFO_>, <%rCMdi>, <_>, <%rCVpi>)
+ xC = @INSTR(<%xN>, %xS, <,>)
+ vD TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(<%xN>, %xS, <,>)
+ lS TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(<%xN>, %xS, <,>)
+ maxV TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(<%xN>, %xS, <,>)
+ minV TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(<%xN>, %xS, <,>)
+ reS TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(<%xN>, %xS, <,>)
+ tolE TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(<%xN>, %xS, <,>)
+ accY TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(<%xN>, %xS, <,>)
+ oD TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN))
+ xN = @SIZESTR(%xS)
+ xN = xN-xC
+ xC = xC+1
+ nomV = @SUBSTR(%xS, <%xC>, xN)
+
+ VOLTAGE_PRO_INFO 26, length, xHandle, vD, lS, maxV, minV, reS, tolE, accY, oD, nomV
+ TERMINATOR
+
+;----------------------------------------------------------------------------
+; Structure Type 36: MANAGEMENT DEVICE THRESHOLD DATA INFORMATION
+;----------------------------------------------------------------------------
+ xHandle = xHandle + 1
+ tH = xHandle
+ length = sizeof MANAGEMENT_DEVICE_THRESHOLD_DATA_STRUC
+
+ xN = 1
+ xS TEXTEQU @CATSTR(<MANAGEMENT_DEV_VOLT_THRESHOLD_DATA_INFO_>, <%rCMdi>, <_>, <%rCVpi>)
+ xC = @INSTR(xN, %xS, <,>)
+ ltnc = @SUBSTR(%xS, xN, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(xN, %xS, <,>)
+ utnc = @SUBSTR(%xS, xN, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(xN, %xS, <,>)
+ ltc = @SUBSTR(%xS, xN, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(xN, %xS, <,>)
+ utc = @SUBSTR(%xS, xN, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(xN, %xS, <,>)
+ ltnr = @SUBSTR(%xS, xN, (xC-xN))
+ xN = xC+1
+ xC = @SIZESTR(%xS)
+ utnr = @SUBSTR(%xS, xN, (xC-xN+1))
+
+ MANAGEMENT_DEV_THRESHOLD_INFO 36, length, xHandle, ltnc, utnc, ltc, utc, ltnr, utnr
+ TERMINATOR
+ TERMINATOR
+
+;----------------------------------------------------------------------------
+; Structure Type 35: MANAGEMENT DEVICE COMPONENT INFORMATION
+;----------------------------------------------------------------------------
+ xHandle = xHandle + 1
+
+ MANAGEMENT_DEVICE_COMPONENT_STRUC{\
+ {35, sizeof(MANAGEMENT_DEVICE_COMPONENT_STRUC), xHandle},
+ 01h, mH, cH, tH}
+
+ SCAN_PUT_STR %MKF_MGMT_DEV_COMPONENT_DESCRIPTION
+ TERMINATOR
+
+ rCVpi = rCVpi + 1
+ ENDM ; xV
+ENDIF ; IF MKF_VOLTAGE_PROBE_INFO
+
+;----------------------------------------------------------------------------
+; Structure Type 28: TEMPERATURE PROBE INFORMATION
+;----------------------------------------------------------------------------
+IF MKF_TEMPERATURE_PROBE_INFO
+ rCTpi = 1
+ xT TEXTEQU @CATSTR(<NUMBER_OF_TEMPERATURE_PROBE_ASSOCIATED_MGMT_DEV_>, <%rCMdi>)
+
+ REPEAT xT
+ xHandle = xHandle + 1
+ Tphndl = xHandle
+ cH = xHandle
+ length = sizeof TEMPERATURE_PROBE_STRUC
+ xN = 1
+ xS TEXTEQU @CATSTR(<TEMPERATURE_PROBE_INFO_>, <%rCMdi>, <_>, <%rCTpi>)
+ xC = @INSTR(<%xN>, %xS, <,>)
+ tD TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(<%xN>, %xS, <,>)
+ lS TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(<%xN>, %xS, <,>)
+ maxV TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(<%xN>, %xS, <,>)
+ minV TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(<%xN>, %xS, <,>)
+ reS TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(<%xN>, %xS, <,>)
+ tolE TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(<%xN>, %xS, <,>)
+ accY TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(<%xN>, %xS, <,>)
+ oD TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN))
+ xN = @SIZESTR(%xS)
+ xN = xN-xC
+ xC = xC+1
+ nomV = @SUBSTR(%xS, <%xC>, xN)
+
+ TEMPERATURE_PRO_INFO 28, length, xHandle, tD, lS, maxV, minV, reS, tolE, accY, oD, nomV
+ TERMINATOR
+
+;----------------------------------------------------------------------------
+; Structure Type 36: MANAGEMENT DEVICE THRESHOLD DATA INFORMATION
+;----------------------------------------------------------------------------
+
+ xHandle = xHandle + 1
+ tH = xHandle
+ length = sizeof MANAGEMENT_DEVICE_THRESHOLD_DATA_STRUC
+ xN = 1
+ xS TEXTEQU @CATSTR(<MANAGEMENT_DEV_TEMP_THRESHOLD_DATA_INFO_>, <%rCMdi>, <_>, <%rCTpi>)
+ xC = @INSTR(xN, %xS, <,>)
+ ltnc = @SUBSTR(%xS, xN, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(xN, %xS, <,>)
+ utnc = @SUBSTR(%xS, xN, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(xN, %xS, <,>)
+ ltc = @SUBSTR(%xS, xN, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(xN, %xS, <,>)
+ utc = @SUBSTR(%xS, xN, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(xN, %xS, <,>)
+ ltnr = @SUBSTR(%xS, xN, (xC-xN))
+ xN = xC+1
+ xC = @SIZESTR(%xS)
+ utnr = @SUBSTR(%xS, xN, (xC-xN+1))
+
+ MANAGEMENT_DEV_THRESHOLD_INFO 36, length, xHandle, ltnc, utnc, ltc, utc, ltnr, utnr
+ TERMINATOR
+ TERMINATOR
+
+;----------------------------------------------------------------------------
+; Structure Type 35: MANAGEMENT DEVICE COMPONENT INFORMATION
+;----------------------------------------------------------------------------
+ xHandle = xHandle + 1
+
+ MANAGEMENT_DEVICE_COMPONENT_STRUC{\
+ {35, sizeof(MANAGEMENT_DEVICE_COMPONENT_STRUC), xHandle},
+ 01h,
+ mH,
+ cH,
+ tH\
+ }
+ SCAN_PUT_STR %MKF_MGMT_DEV_COMPONENT_DESCRIPTION
+ TERMINATOR
+
+;----------------------------------------------------------------------------
+; Structure Type 27: COOLING DEVICE
+;----------------------------------------------------------------------------
+IF MKF_COOLING_DEVICE_INFO
+ rCo = 1
+ xCc TEXTEQU @CATSTR(<NUMBER_OF_COOLING_DEVICE_ASSOCIATED_TEMP_PROBE_>, <%rCMdi>, <_>, <%rCTpi>)
+
+ REPEAT xCc
+ xHandle = xHandle + 1
+ cH = xHandle
+ length = sizeof COOLING_DEVICE_STRUC
+
+ xN = 1
+ xS TEXTEQU @CATSTR(<COOLING_DEVICE_INFO_>, <%rCMdi>, <_>, <%rCTpi>, <_>, <%rCo>)
+ xC = @INSTR(xN, %xS, <,>)
+ dtS = @SUBSTR(%xS, xN, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(xN, %xS, <,>)
+ cuG = @SUBSTR(%xS, xN, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(xN, %xS, <,>)
+ oDc = @SUBSTR(%xS, xN, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(xN, %xS, <,>)
+ nS = @SUBSTR(%xS, xN, (xC-xN))
+ xN = xC+1
+ xC = @SIZESTR(%xS)
+
+ IF xC LT xN
+ COOLING_DEV_INFO 27, length, xHandle, Tphndl, dtS, cuG, oDc, nS, 0
+ TERMINATOR
+ ELSE
+ nD TEXTEQU @SUBSTR(%xS, xN, (xC-xN+1))
+ COOLING_DEV_INFO 27, length, xHandle, Tphndl, dtS, cuG, oDc, nS, 1
+ SCAN_PUT_STR %nD
+ ENDIF
+ TERMINATOR
+
+;----------------------------------------------------------------------------
+; Structure Type 36: MANAGEMENT DEVICE THRESHOLD DATA INFORMATION
+;----------------------------------------------------------------------------
+ xHandle = xHandle + 1
+ tH = xHandle
+
+ length = sizeof MANAGEMENT_DEVICE_THRESHOLD_DATA_STRUC
+ xN = 1
+ xS TEXTEQU @CATSTR(<MANAGEMENT_DEV_COOL_THRESHOLD_DATA_INFO_>, <%rCMdi>, <_>, <%rCTpi>, <_>, <%rCo>)
+ xC = @INSTR(xN, %xS, <,>)
+ ltnc = @SUBSTR(%xS, xN, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(xN, %xS, <,>)
+ utnc = @SUBSTR(%xS, xN, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(xN, %xS, <,>)
+ ltc = @SUBSTR(%xS, xN, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(xN, %xS, <,>)
+ utc = @SUBSTR(%xS, xN, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(xN, %xS, <,>)
+ ltnr = @SUBSTR(%xS, xN, (xC-xN))
+ xN = xC+1
+ xC = @SIZESTR(%xS)
+ utnr = @SUBSTR(%xS, xN, (xC-xN+1))
+
+ MANAGEMENT_DEV_THRESHOLD_INFO 36, length, xHandle, ltnc, utnc, ltc, utc, ltnr, utnr
+ TERMINATOR
+ TERMINATOR
+
+;----------------------------------------------------------------------------
+; Structure Type 35: MANAGEMENT DEVICE COMPONENT INFORMATION
+;----------------------------------------------------------------------------
+ xHandle = xHandle + 1
+
+ MANAGEMENT_DEVICE_COMPONENT_STRUC{\
+ {35, sizeof(MANAGEMENT_DEVICE_COMPONENT_STRUC), xHandle},
+ 01h, mH, cH, tH}
+
+ SCAN_PUT_STR %MKF_MGMT_DEV_COMPONENT_DESCRIPTION
+ TERMINATOR
+
+ rCo = rCo + 1
+ ENDM ; xCc
+ENDIF ; IF MKF_COOLING_DEVICE_INFO
+ ENDM ; xT
+ENDIF ; IF MKF_TEMPERATURE_PROBE_INFO
+
+;----------------------------------------------------------------------------
+; Structure Type 29: ELECTRICAL PROBE INFORMATION
+;----------------------------------------------------------------------------
+IF MKF_ELECTRICAL_PROBE_INFO
+ rCEdi =1
+
+ xE TEXTEQU @CATSTR(<NUMBER_OF_ELECTRICAL_PROBE_ASSOCIATED_MGMT_DEV_>, <%rCMdi>)
+
+ REPEAT xE
+ xHandle = xHandle + 1
+ cH = xHandle
+ length = sizeof ELECTRICAL_CURRENT_PROBE_STRUC
+
+ xN = 1
+ xS TEXTEQU @CATSTR(<ELECTRICAL_PROBE_INFO_>,<%rCMdi>, <_>,<%rCEdi>)
+ xC = @INSTR(<%xN>,%xS,<,>)
+ eD TEXTEQU @SUBSTR(%xS,<%xN>,(xC-xN))
+ xN = xC+1
+ xC = @INSTR(<%xN>,%xS,<,>)
+ lS TEXTEQU @SUBSTR(%xS,<%xN>,(xC-xN))
+ xN = xC+1
+ xC = @INSTR(<%xN>,%xS,<,>)
+ maxV TEXTEQU @SUBSTR(%xS,<%xN>,(xC-xN))
+ xN = xC+1
+ xC = @INSTR(<%xN>,%xS,<,>)
+ minV TEXTEQU @SUBSTR(%xS,<%xN>,(xC-xN))
+ xN = xC+1
+ xC = @INSTR(<%xN>,%xS,<,>)
+ reS TEXTEQU @SUBSTR(%xS,<%xN>,(xC-xN))
+ xN = xC+1
+ xC = @INSTR(<%xN>,%xS,<,>)
+ tolE TEXTEQU @SUBSTR(%xS,<%xN>,(xC-xN))
+ xN = xC+1
+ xC = @INSTR(<%xN>,%xS,<,>)
+ accY TEXTEQU @SUBSTR(%xS,<%xN>,(xC-xN))
+ xN = xC+1
+ xC = @INSTR(<%xN>,%xS,<,>)
+ oD TEXTEQU @SUBSTR(%xS,<%xN>,(xC-xN))
+ xN = @SIZESTR(%xS)
+ xN = xN-xC
+ xC = xC+1
+ nomV = @SUBSTR(%xS,<%xC>,xN)
+
+ ELECTRICAL_PRO_INFO 29, length, xHandle, eD, lS, maxV, minV, reS, tolE, accY, oD, nomV
+ TERMINATOR
+
+;----------------------------------------------------------------------------
+; Structure Type 36: MANAGEMENT DEVICE THRESHOLD DATA INFORMATION
+;----------------------------------------------------------------------------
+ xHandle = xHandle + 1
+ tH = xHandle
+ length = sizeof MANAGEMENT_DEVICE_THRESHOLD_DATA_STRUC
+
+ eltnc TEXTEQU @CATSTR(<LOWER_THRESHOLD_NON_CRITICAL_>,<%rCEdi>)
+ eutnc TEXTEQU @CATSTR(<UPPER_THRESHOLD_CRITICAL_>,<%rCEdi>)
+ eltc TEXTEQU @CATSTR(<LOWER_THRESHOLD_CRITICAL_>,<%rCEdi>)
+ eutc TEXTEQU @CATSTR(<UPPER_THRESHOLD_NON_CRITICAL_>,<%rCEdi>)
+ eltnr TEXTEQU @CATSTR(<LOWER_THRESHOLD_NON_RECOVERABLE_>,<%rCEdi>)
+ eutnr TEXTEQU @CATSTR(<UPPER_THRESHOLD_NON_RECOVERABLE_>,<%rCEdi>)
+
+ MANAGEMENT_DEV_THRESHOLD_INFO 36, length, xHandle, eltnc, eutnc, eltc, eutc, eltnr, eutnr
+ TERMINATOR
+ TERMINATOR
+
+;----------------------------------------------------------------------------
+; Structure Type 35: MANAGEMENT DEVICE COMPONENT INFORMATION
+;----------------------------------------------------------------------------
+ xHandle = xHandle + 1
+
+ MANAGEMENT_DEVICE_COMPONENT_STRUC{\
+ {35, sizeof(MANAGEMENT_DEVICE_COMPONENT_STRUC), xHandle},
+ 01h, mH, cH, tH}
+
+ SCAN_PUT_STR %MKF_MGMT_DEV_COMPONENT_DESCRIPTION
+ TERMINATOR
+
+ rCEdi = rCEdi + 1
+ ENDM ; xE
+ENDIF ; IF MKF_ELECTRICAL_PROBE_INFO
+ rCMdi = rCMdi + 1
+ ENDM ; MKF_NUMBER_OF_MANAGEMENT_DEVICES
+
+ENDIF ; IF MKF_MANAGEMENT_DEVICE_INFO
+ EXITM %xHandle
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 39: SYSTEM POWER SUPPLY
+;----------------------------------------------------------------------------
+CreateSystemPowerSupplyInfo macro xHandle:REQ
+
+ LOCAL length, vpH, cdH, tpH, cpH, s1, v1, v2
+ LOCAL sPr, vLS, vMa, vMi, vRe, vTo, vAc, vOD, vNo ; Type 26/28/29
+ LOCAL vTS, vCG, vOD, vNS, sDe ; Type 27
+ LOCAL vPS, vPG, sLo, sDN, sMa, sSN, sAT, sPN, sRL, vMP, vPC ; Type 39
+
+IF MKF_SYSTEM_POWER_SUPPLY_INFO
+ vPS = 1
+ REPEAT MKF_NUMBER_OF_POWER_SUPPLY
+;----------------------------------------------------------------------------
+; Associated Structure Type 26: VOLTAGE PROBE INFORMATION
+;----------------------------------------------------------------------------
+
+ s1 TEXTEQU @CATSTR(<VOLTAGE_PROBE_39_>, <%vPS>)
+ v1 = @SUBSTR(%s1, 1, 1)
+ IF v1 EQ 1
+ xHandle = xHandle + 1
+ vpH = xHandle
+ length = sizeof VOLTAGE_PROBE_STRUC
+ v1 = @INSTR(1, %s1, <,>) + 1
+ v2 = @INSTR(v1, %s1, <,>)
+ sPr TEXTEQU @SUBSTR(%s1, v1, (v2 - v1))
+ v1 = v2 + 1
+ v2 = @INSTR(v1, %s1, <,>)
+ vLS = @SUBSTR(%s1, v1, (v2 - v1))
+ v1 = v2 + 1
+ v2 = @INSTR(v1, %s1, <,>)
+ vMa = @SUBSTR(%s1, v1, (v2 - v1))
+ v1 = v2 + 1
+ v2 = @INSTR(v1, %s1, <,>)
+ vMi = @SUBSTR(%s1, v1, (v2 - v1))
+ v1 = v2 + 1
+ v2 = @INSTR(v1, %s1, <,>)
+ vRe = @SUBSTR(%s1, v1, (v2 - v1))
+ v1 = v2 + 1
+ v2 = @INSTR(v1, %s1, <,>)
+ vTo = @SUBSTR(%s1, v1, (v2 - v1))
+ v1 = v2 + 1
+ v2 = @INSTR(v1, %s1, <,>)
+ vAc = @SUBSTR(%s1, v1, (v2 - v1))
+ v1 = v2 + 1
+ v2 = @INSTR(v1, %s1, <,>)
+ vOD = @SUBSTR(%s1, v1, (v2 - v1))
+ v1 = v2 + 1
+ v2 = @SIZESTR(%s1) - v1 + 1
+ vNo = @SUBSTR(%s1, v1, v2)
+
+ VOLTAGE_PRO_INFO 26, length, vpH, sPr, vLS, vMa, vMi, vRe, vTo, vAc, vOD, vNo
+ TERMINATOR
+ ELSE
+ vpH = 0FFFFh
+ ENDIF
+;----------------------------------------------------------------------------
+; Associated Structure Type 28: TEMPERATURE PROBE INFORMATION
+;----------------------------------------------------------------------------
+ s1 TEXTEQU @CATSTR(<COOLING_DEVICE_39_>, <%vPS>)
+ v1 = @SUBSTR(%s1, 1, 1)
+ IF v1 EQ 1
+ s1 TEXTEQU @CATSTR(<TEMPERATURE_PROBE_39_>, <%vPS>)
+ v1 = @SUBSTR(%s1, 1, 1)
+ IF v1 EQ 1
+ xHandle = xHandle + 1
+ tpH = xHandle
+ length = sizeof TEMPERATURE_PROBE_STRUC
+ v1 = @INSTR(1, %s1, <,>) + 1
+ v2 = @INSTR(v1, %s1, <,>)
+ sPr TEXTEQU @SUBSTR(%s1, v1, (v2 - v1))
+ v1 = v2 + 1
+ v2 = @INSTR(v1, %s1, <,>)
+ vLS = @SUBSTR(%s1, v1, (v2 - v1))
+ v1 = v2 + 1
+ v2 = @INSTR(v1, %s1, <,>)
+ vMa = @SUBSTR(%s1, v1, (v2 - v1))
+ v1 = v2 + 1
+ v2 = @INSTR(v1, %s1, <,>)
+ vMi = @SUBSTR(%s1, v1, (v2 - v1))
+ v1 = v2 + 1
+ v2 = @INSTR(v1, %s1, <,>)
+ vRe = @SUBSTR(%s1, v1, (v2 - v1))
+ v1 = v2 + 1
+ v2 = @INSTR(v1, %s1, <,>)
+ vTo = @SUBSTR(%s1, v1, (v2 - v1))
+ v1 = v2 + 1
+ v2 = @INSTR(v1, %s1, <,>)
+ vAc = @SUBSTR(%s1, v1, (v2 - v1))
+ v1 = v2 + 1
+ v2 = @INSTR(v1, %s1, <,>)
+ vOD = @SUBSTR(%s1, v1, (v2 - v1))
+ v1 = v2 + 1
+ v2 = @SIZESTR(%s1) - v1 + 1
+ vNo = @SUBSTR(%s1, v1, v2)
+
+ TEMPERATURE_PRO_INFO 28, length, tpH, sPr, vLS, vMa, vMi, vRe, vTo, vAc, vOD, vNo
+ TERMINATOR
+ ELSE
+ tpH = 0FFFFh
+ ENDIF
+ ENDIF
+;----------------------------------------------------------------------------
+; Associated Structure Type 27: COOLING DEVICE INFORMATION
+;----------------------------------------------------------------------------
+ s1 TEXTEQU @CATSTR(<COOLING_DEVICE_39_>, <%vPS>)
+ v1 = @SUBSTR(%s1, 1, 1)
+ IF v1 EQ 1
+ xHandle = xHandle + 1
+ cdH = xHandle
+ length = sizeof COOLING_DEVICE_STRUC
+ v1 = @INSTR(1, %s1, <,>) + 1
+ v2 = @INSTR(v1, %s1, <,>)
+ vTS = @SUBSTR(%s1, v1, (v2 - v1))
+ v1 = v2 + 1
+ v2 = @INSTR(v1, %s1, <,>)
+ vCG = @SUBSTR(%s1, v1, (v2 - v1))
+ v1 = v2 + 1
+ v2 = @INSTR(v1, %s1, <,>)
+ vOD = @SUBSTR(%s1, v1, (v2 - v1))
+ v1 = v2 + 1
+ v2 = @INSTR(v1, %s1, <,>)
+ vNS = @SUBSTR(%s1, v1, (v2 - v1))
+ v1 = v2 + 1
+ v2 = @SIZESTR(%s1) - v1 + 1
+ sDe TEXTEQU @SUBSTR(%s1, v1, v2)
+
+ COOLING_DEV_INFO 27, length, cdH, tpH, vTS, vCG, vOD, vNS, 1
+ SCAN_PUT_STR %sDe
+ TERMINATOR
+ ELSE
+ cdH = 0FFFFh
+ ENDIF
+;----------------------------------------------------------------------------
+; Associated Structure Type 29: ELECTRICAL CURRENT PROBE INFORMATION
+;----------------------------------------------------------------------------
+ s1 TEXTEQU @CATSTR(<ELECTRICAL_PROBE_39_>, <%vPS>)
+ v1 = @SUBSTR(%s1, 1, 1)
+ IF v1 EQ 1
+ xHandle = xHandle + 1
+ cpH = xHandle
+ length = sizeof ELECTRICAL_CURRENT_PROBE_STRUC
+ v1 = @INSTR(1, %s1, <,>) + 1
+ v2 = @INSTR(v1, %s1, <,>)
+ sPr TEXTEQU @SUBSTR(%s1, v1, (v2 - v1))
+ v1 = v2 + 1
+ v2 = @INSTR(v1, %s1, <,>)
+ vLS = @SUBSTR(%s1, v1, (v2 - v1))
+ v1 = v2 + 1
+ v2 = @INSTR(v1, %s1, <,>)
+ vMa = @SUBSTR(%s1, v1, (v2 - v1))
+ v1 = v2 + 1
+ v2 = @INSTR(v1, %s1, <,>)
+ vMi = @SUBSTR(%s1, v1, (v2 - v1))
+ v1 = v2 + 1
+ v2 = @INSTR(v1, %s1, <,>)
+ vRe = @SUBSTR(%s1, v1, (v2 - v1))
+ v1 = v2 + 1
+ v2 = @INSTR(v1, %s1, <,>)
+ vTo = @SUBSTR(%s1, v1, (v2 - v1))
+ v1 = v2 + 1
+ v2 = @INSTR(v1, %s1, <,>)
+ vAc = @SUBSTR(%s1, v1, (v2 - v1))
+ v1 = v2 + 1
+ v2 = @INSTR(v1, %s1, <,>)
+ vOD = @SUBSTR(%s1, v1, (v2 - v1))
+ v1 = v2 + 1
+ v2 = @SIZESTR(%s1) - v1 + 1
+ vNo = @SUBSTR(%s1, v1, v2)
+
+ ELECTRICAL_PRO_INFO 29, length, cpH, sPr, vLS, vMa, vMi, vRe, vTo, vAc, vOD, vNo
+ TERMINATOR
+ ELSE
+ cpH = 0FFFFh
+ ENDIF
+;----------------------------------------------------------------------------
+; Create Type 39
+;----------------------------------------------------------------------------
+ xHandle = xHandle + 1
+ length = sizeof SYSTEM_POWER_SUPPLY_STRUC
+ vPG = @CATSTR(<POWER_SUPPLY_UNIT_GROUP_>, <%vPS>)
+ sLo TEXTEQU @CATSTR(<POWER_SUPPLY_LOCATION_>, <%vPS>)
+ sDN TEXTEQU @CATSTR(<POWER_SUPPLY_DEVICE_NAME_>, <%vPS>)
+ sMa TEXTEQU @CATSTR(<POWER_SUPPLY_MANUFACTURER_>, <%vPS>)
+ sSN TEXTEQU @CATSTR(<POWER_SUPPLY_SERIAL_NUMBER_>, <%vPS>)
+ sAT TEXTEQU @CATSTR(<POWER_SUPPLY_ASSET_TAG_NUMBER_>, <%vPS>)
+ sPN TEXTEQU @CATSTR(<POWER_SUPPLY_MODEL_PART_NUMBER_>, <%vPS>)
+ sRL TEXTEQU @CATSTR(<POWER_SUPPLY_REVISION_LEVEL_>, <%vPS>)
+ vMP = @CATSTR(<POWER_SUPPLY_MAX_POWER_CAPACITY_>, <%vPS>)
+ vPC TEXTEQU @CATSTR(<POWER_SUPPLY_CHARACTERISTICS_>, <%vPS>)
+
+ SYSTEM_POWER_SUPPLY_INFO 39, length, xHandle, vPG, sLo, sDN, sMa, sSN, sAT, sPN, sRL, vMP, vPC, vpH, cdH, cpH
+ TERMINATOR
+ vPS = vPS + 1
+ ENDM ; MKF_NUMBER_OF_POWER_SUPPLY
+ENDIF ; MKF_SYSTEM_POWER_SUPPLY_INFO
+ EXITM %xHandle
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 38: IPMI DEVICE INFORMATION
+;----------------------------------------------------------------------------
+CreateIPMIDeviceInfo MACRO xHandle:REQ
+
+ LOCAL iit, isr, isa, nsda, ibal, ibah, bamii, intnum
+
+IF MKF_IPMI_DEVICE_INFO
+ xHandle = xHandle + 1
+
+ iit = MKF_IPMI_INTERFACE_TYPE
+ isr = MKF_IPMI_SPECIFICATION_REVISION
+ isa = MKF_I2C_SLAVE_ADDRESS
+ nsda = MKF_NV_STORAGE_DEVICE_ADDRESS
+ ibal = IPMI_BASE_ADDRESS_LO
+ ibah = IPMI_BASE_ADDRESS_HI
+ bamii = MKF_BASE_ADDR_MOD_INTR_INFO
+ intnum = MKF_INTERRUPT_NUMBER
+
+ IPMI_DEVICE_INFORMATION_STRUC{\
+ {38, sizeof(IPMI_DEVICE_INFORMATION_STRUC), xHandle},
+ iit,
+ isr,
+ isa,
+ nsda,
+ ibal,
+ ibah,
+ bamii,
+ intnum\
+ }
+ TERMINATOR
+ TERMINATOR
+ENDIF ; MKF_IPMI_DEVICE_INFO
+ EXITM %xHandle
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 40 : ADDITIONAL INFORMATION
+;----------------------------------------------------------------------------
+CreateAdditionalInformation macro xHandle:REQ
+
+ LOCAL length, rC, eL, rH, rT, rI, rO, uS, sC, sN, rV, xS
+
+ IF (MKF_ADDITIONAL_INFO AND (MKF_ADDITIONAL_INFO_COUNT GT 0))
+ xHandle = xHandle + 1
+ length = sizeof(ADDITIONAL_INFO_STRUC) + (MKF_ADDITIONAL_INFO_COUNT * sizeof(ADDITIONAL_INFO_ENTRY_STRUC))
+
+ ADDITIONAL_INFO_STRUC {\
+ {40, length, xHandle},
+ MKF_ADDITIONAL_INFO_COUNT\
+ }
+
+ rC = 1
+ sC = 1
+ REPEAT MKF_ADDITIONAL_INFO_COUNT
+ eL = sizeof ADDITIONAL_INFO_ENTRY_STRUC
+ rT = @CATSTR (REF_TYPE_, <%rC>)
+ rI = @CATSTR (REF_TYPE_INSTANCE_, <%rC>)
+ rO TEXTEQU @CATSTR (REF_OFFSET_, <%rC>)
+ uS = @CATSTR (USE_STRING_, <%rC>)
+ IF uS EQ 1
+ sN = sC
+ sC = sC + 1
+ ELSE
+ sN = 0
+ ENDIF
+ rV TEXTEQU @CATSTR (VALUE_, <%rC>)
+ ADDITIONAL_INFO_ENTRY_STRUC {\
+ eL,
+ (rT*16)+rI,
+ rO,
+ sN,
+ {rV}\
+ }
+ rC = rC + 1
+ ENDM ; MKF_ADDITIONAL_INFO_COUNT
+
+ rC = 1
+ REPEAT MKF_ADDITIONAL_INFO_COUNT
+ uS = @CATSTR (USE_STRING_, <%rC>)
+ IF uS EQ 1
+ xS TEXTEQU @CATSTR (STRING_, <%rC>)
+ SCAN_PUT_STR %xS
+ ENDIF
+ rC = rC + 1
+ ENDM ; MKF_ADDITIONAL_INFO_COUNT
+ TERMINATOR
+ ENDIF
+ EXITM %xHandle
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 41 : Onboard Devices Extended Information
+;----------------------------------------------------------------------------
+CreateOnboardDevicesExtendedInfo macro xHandle:REQ
+
+ LOCAL length, rC, xN, xS, xC, eD, dT, dI, sD, sG, xB, dF
+
+ length = sizeof(ONBOARD_DEVICE_EXTENDED_STRUC)
+
+ IF (MKF_ONBOARD_DEVICE_EXTENDED_INFO AND (MKF_ONBOARD_DEVICE_EXT_COUNT GT 0))
+ rC = 1
+ REPEAT MKF_ONBOARD_DEVICE_EXT_COUNT
+ xHandle = xHandle + 1
+ xN = 1
+ xS TEXTEQU @CATSTR(<ONBOARD_DEVICE_EXT_>, <%rC>)
+ xC = @INSTR(<%xN>, %xS, <,>)
+ eD TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(<%xN>, %xS, <,>)
+ dT TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(<%xN>, %xS, <,>)
+ dI TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN))
+ xN = @SIZESTR(%xS)
+ xN = xN-xC
+ xC = xC+1
+ sD TEXTEQU @SUBSTR(%xS, <%xC>, <%xN>)
+
+ xS TEXTEQU @CATSTR(<SEGGRP_BUS_DEVFN_EXT_>, <%rC>)
+ xN = 1
+ xC = @INSTR(<%xN>, %xS, <,>)
+ sG TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN))
+ xN = xC+1
+ xC = @INSTR(<%xN>, %xS, <,>)
+ xB TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN))
+ xC = xC+1
+ dF TEXTEQU @SUBSTR(%xS, <%xC>)
+
+ ONBOARD_DEVICE_EXTENDED_STRUC {\
+ {41, length, xHandle},
+ 1,
+ ((eD shl 7) OR dT),
+ dI,sG,xB,
+ dF\
+ }
+ SCAN_PUT_STR %sD
+ TERMINATOR
+ rC = rC + 1
+ ENDM ; MKF_ONBOARD_DEVICE_EXT_COUNT
+ ENDIF
+ EXITM %xHandle
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 240: OEM DEFINED IO STRUCTURE
+;----------------------------------------------------------------------------
+CreateOEMIOMappedGpnvInfo MACRO xHandle:REQ
+
+ IF MKF_OEM_IO_GPNV_STRUC_INFO
+ xHandle = xHandle + 1
+ DescLength = (MAX_IO_GPNV_DATAID*size DATAID_DESCRIPTOR_STRUC)
+ TotalLength = sizeof(OEM_GPNV_STRUC)+DescLength
+ OEM_GPNV_STRUC {\
+ {OEM_IO_GPNV_INFORMATION_TYPE, TotalLength, xHandle},
+ 00h,
+ 00000000h,
+ MAX_IO_GPNV_DATAID\
+ }
+ BYTE DescLength dup(0FFh)
+ TERMINATOR
+ TERMINATOR
+ ENDIF ; MKF_OEM_IO_GPNV_STRUC_INFO
+ EXITM %xHandle
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 241: OEM DEFINED MEMORY STRUCTURE
+;----------------------------------------------------------------------------
+CreateOEMMemoryMappedGpnvInfo MACRO xHandle:REQ
+ IF MKF_OEM_MEMORY_GPNV_STRUC_INFO
+ xHandle = xHandle + 1
+ DescLength = (MAX_MEMORY_GPNV_DATAID*size DATAID_DESCRIPTOR_STRUC)
+ TotalLength = sizeof(OEM_GPNV_STRUC)+DescLength
+ OEM_GPNV_STRUC {\
+ {OEM_MEMORY_GPNV_INFORMATION_TYPE, TotalLength, xHandle},
+ 00h,
+ 00000000h,
+ MAX_MEMORY_GPNV_DATAID\
+ }
+ BYTE DescLength dup(0FFh)
+ TERMINATOR
+ TERMINATOR
+ ENDIF ; MKF_OEM_MEMORY_GPNV_STRUC_INFO
+ EXITM %xHandle
+ENDM
+;----------------------------------------------------------------------------
+; Structure Type 129: INTEL ASF STRUCTURE
+;----------------------------------------------------------------------------
+CreateIntelASFTable MACRO xHandle:REQ
+IFDEF MKF_ASF_SUPPORT
+IF MKF_ASF_SUPPORT
+ xHandle = xHandle + 1
+ INTEL_ASF_STRUC{\
+ {129, sizeof(INTEL_ASF_STRUC), xHandle},
+ 01h,
+ 01h,
+ 02h,
+ 01h\
+ }
+ BYTE 'Intel_ASF',0
+ BYTE 'Intel ASF_001',0
+ TERMINATOR
+ENDIF ; MKF_ASF_SUPPORT
+ENDIF ; MKF_ASF_SUPPORT
+ EXITM %xHandle
+endm
+;----------------------------------------------------------------------------
+; Structure Type 127: END OF TABLE
+;----------------------------------------------------------------------------
+CreateEndOfTable MACRO xHandle:REQ
+ xHandle = xHandle + 1
+ END_OF_TABLE_STRUC{\
+ {127, sizeof(END_OF_TABLE_STRUC), xHandle}\
+ }
+ TERMINATOR
+ TERMINATOR
+ EXITM %xHandle
+ENDM
+
+;----------------------------------------------------------------------------
+ENDIF ; End of Inclusion Guard _smbdata_mac_
+;----------------------------------------------------------------------------
+
+;****************************************************************************
+;****************************************************************************
+;** **
+;** (C)Copyright 1985-2016, American Megatrends, Inc. **
+;** **
+;** All Rights Reserved. **
+;** **
+;** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **
+;** **
+;** Phone: (770)-246-8600 **
+;** **
+;****************************************************************************
+;****************************************************************************
diff --git a/Board/EM/SMBIOS/SMBiosStaticData/SMBMACRO.AID b/Board/EM/SMBIOS/SMBiosStaticData/SMBMACRO.AID
new file mode 100644
index 0000000..9858192
--- /dev/null
+++ b/Board/EM/SMBIOS/SMBiosStaticData/SMBMACRO.AID
@@ -0,0 +1,1228 @@
+ ECHO --Including: SMBMACRO.AID
+
+;----------------------------------------------------------------------------
+; DO NOT CHANGE ANY THING UNLESS OTHERWISE SPECIFIED
+;----------------------------------------------------------------------------
+
+;****************************************************************************
+;****************************************************************************
+;** **
+;** (C)Copyright 1985-2016, American Megatrends, Inc. **
+;** **
+;** All Rights Reserved. **
+;** **
+;** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **
+;** **
+;** Phone: (770)-246-8600 **
+;** **
+;****************************************************************************
+;****************************************************************************
+;****************************************************************************
+; $Header: $
+;
+; $Revision: $
+;
+; $Date: $
+;
+;****************************************************************************
+; Revision History
+; ----------------
+; $Log: $
+;
+;****************************************************************************
+
+;----------------------------------------------------------------------------
+; Structure Type 0 : BIOS INFORMATION
+;----------------------------------------------------------------------------
+
+BIOS_CHAR macro
+
+ LOCAL BIOSCHARACTER
+ BIOSCHARACTER = 0
+
+IF MKF_BI_UNKNOWN_CHAR
+ BIOSCHARACTER = BIOSCHARACTER OR (1 shl 2)
+ENDIF
+
+IF MKF_BI_BIOS_CHAR_NOT_SUPPORTED
+ BIOSCHARACTER = BIOSCHARACTER OR (1 shl 3)
+ENDIF
+
+IF MKF_INC_ISA
+ BIOSCHARACTER = BIOSCHARACTER OR (1 shl 4)
+ENDIF
+
+IF MKF_BI_MCA
+ BIOSCHARACTER = BIOSCHARACTER OR (1 shl 5)
+ENDIF
+
+IF MKF_BI_EISA
+ BIOSCHARACTER = BIOSCHARACTER OR (1 shl 6)
+ENDIF
+
+IF MKF_INC_PCI
+ BIOSCHARACTER = BIOSCHARACTER OR (1 shl 7)
+ENDIF
+
+IF MKF_BI_PCMCIA
+ BIOSCHARACTER = BIOSCHARACTER OR (1 shl 8)
+ENDIF
+
+IF MKF_INC_PnP
+ BIOSCHARACTER = BIOSCHARACTER OR (1 shl 9)
+ENDIF
+
+IFDEF MKF_APM_SUPPORT
+ IF MKF_APM_SUPPORT
+ BIOSCHARACTER = BIOSCHARACTER OR (1 shl 10)
+ ENDIF
+ENDIF
+
+IF MKF_BI_BIOS_Flash
+ BIOSCHARACTER = BIOSCHARACTER OR (1 shl 11)
+ENDIF
+
+IF MKF_BI_BIOS_Shadow
+ BIOSCHARACTER = BIOSCHARACTER OR (1 shl 12)
+ENDIF
+
+IF MKF_BI_VL_VESA
+ BIOSCHARACTER = BIOSCHARACTER OR (1 shl 13)
+ENDIF
+
+IF MKF_BI_ESCD
+ BIOSCHARACTER = BIOSCHARACTER OR (1 shl 14)
+ENDIF
+
+IF MKF_BI_CDROM_BOOT
+ BIOSCHARACTER = BIOSCHARACTER OR (1 shl 15)
+ENDIF
+
+IF MKF_BI_SELECTABLE_BOOT
+ BIOSCHARACTER = BIOSCHARACTER OR (1 shl 16)
+ENDIF
+
+IF MKF_BI_BIOS_ROM_SOCKET
+ BIOSCHARACTER = BIOSCHARACTER OR (1 shl 17)
+ENDIF
+
+IF MKF_BI_PCMCIA_BOOT
+ BIOSCHARACTER = BIOSCHARACTER OR (1 shl 18)
+ENDIF
+
+IF MKF_BI_EDD
+ BIOSCHARACTER = BIOSCHARACTER OR (1 shl 19)
+ENDIF
+
+IF MKF_BI_INT13_NEC9800
+ BIOSCHARACTER = BIOSCHARACTER OR (1 shl 20)
+ENDIF
+
+IF MKF_BI_INT13_TOSHIBA
+ BIOSCHARACTER = BIOSCHARACTER OR (1 shl 21)
+ENDIF
+
+IF MKF_BI_INT13_5_25_360
+ BIOSCHARACTER = BIOSCHARACTER OR (1 shl 22)
+ENDIF
+
+IF MKF_BI_INT13_5_25_1_2
+ BIOSCHARACTER = BIOSCHARACTER OR (1 shl 23)
+ENDIF
+
+IF MKF_BI_INT13_3_5_720
+ BIOSCHARACTER = BIOSCHARACTER OR (1 shl 24)
+ENDIF
+
+IF MKF_BI_INT13_3_5_2_88
+ BIOSCHARACTER = BIOSCHARACTER OR (1 shl 25)
+ENDIF
+
+IF MKF_BI_INT5_PRINT_SCRN
+ BIOSCHARACTER = BIOSCHARACTER OR (1 shl 26)
+ENDIF
+
+IFDEF MKF_KBC_SUPPORT
+IF MKF_KBC_SUPPORT
+ BIOSCHARACTER = BIOSCHARACTER OR (1 shl 27)
+ENDIF
+ENDIF
+
+IF MKF_BI_INT14_SERIAL_SVC
+ BIOSCHARACTER = BIOSCHARACTER OR (1 shl 28)
+ENDIF
+
+IF MKF_BI_INT17_PRN_SVC
+ BIOSCHARACTER = BIOSCHARACTER OR (1 shl 29)
+ENDIF
+
+IF MKF_BI_INT10_CGA_MONO
+ BIOSCHARACTER = BIOSCHARACTER OR (1 shl 30)
+ENDIF
+
+IF MKF_BI_NEC_PC_98
+ BIOSCHARACTER = BIOSCHARACTER OR (1 shl 31)
+ENDIF
+ EXITM %BIOSCHARACTER
+ENDM
+
+;----------------------------------------------------------------------------
+; Use this Macro to set bits 32:63 of BIOS Characteristics
+
+BIOS_CHAR1 macro
+ LOCAL BIOSCHARACTER1
+ BIOSCHARACTER1 = 0
+
+ BIOSCHARACTER1 = BIOSCHARACTER1 OR (1 shl 0)
+
+;BIT 32 (bit 0 in this section) is used to indicate the this BIOS is capable
+; of updating strings with variable length
+
+ EXITM %BIOSCHARACTER1
+ENDM
+
+;----------------------------------------------------------------------------
+
+EXT_CHAR macro
+
+ LOCAL BIOSEXTCHARACTER
+ BIOSEXTCHARACTER = 0
+
+IFDEF MKF_ACPI_SUPPORT
+ IF MKF_ACPI_SUPPORT
+ BIOSEXTCHARACTER = BIOSEXTCHARACTER OR (1 shl 0)
+ ENDIF
+ENDIF
+
+IFDEF MKF_AMIUSB_SUPPORT
+ IF MKF_AMIUSB_SUPPORT
+ BIOSEXTCHARACTER = BIOSEXTCHARACTER OR (1 shl 1)
+ ENDIF
+ENDIF
+
+IF MKF_BI_AGP_SUPPORT
+ BIOSEXTCHARACTER = BIOSEXTCHARACTER OR (1 shl 2)
+ENDIF
+
+IF MKF_BI_I2O_BOOT_SUP
+ BIOSEXTCHARACTER = BIOSEXTCHARACTER OR (1 shl 3)
+ENDIF
+
+IF MKF_BI_LS120_BOOT_SUP
+ BIOSEXTCHARACTER = BIOSEXTCHARACTER OR (1 shl 4)
+ENDIF
+
+IF MKF_BI_ATAPI_ZIP_SUP
+ BIOSEXTCHARACTER = BIOSEXTCHARACTER OR (1 shl 5)
+ENDIF
+
+IF MKF_BI_IEEE_1394_SUP
+ BIOSEXTCHARACTER = BIOSEXTCHARACTER OR (1 shl 6)
+ENDIF
+
+IF MKF_BI_SMART_BAT_SUP
+ BIOSEXTCHARACTER = BIOSEXTCHARACTER OR (1 shl 7)
+ENDIF
+
+ EXITM %BIOSEXTCHARACTER
+ENDM
+
+;----------------------------------------------------------------------------
+
+EXT_CHAR2 macro
+
+ LOCAL BIOSEXTCHARACTER2
+ BIOSEXTCHARACTER2 = 0 ;Note: Targeted Content Distribution bit
+ ;must be set per Microsoft "SMBIOS
+ ;Support in Windows" document
+
+IF MKF_BBS_SUPPORT
+ BIOSEXTCHARACTER2 = BIOSEXTCHARACTER2 OR (1 shl 0)
+ENDIF
+
+IF MKF_NETBOOT_SUPPORT
+ BIOSEXTCHARACTER2 = BIOSEXTCHARACTER2 OR (1 shl 1)
+ENDIF
+
+IF MKF_BI_ETCD
+ BIOSEXTCHARACTER2 = BIOSEXTCHARACTER2 OR (1 shl 2)
+ENDIF
+
+IF MKF_UEFI_SUPPORT
+ BIOSEXTCHARACTER2 = BIOSEXTCHARACTER2 OR (1 shl 3)
+ENDIF
+
+IF MKF_VIRTUAL_MACHINE
+ BIOSEXTCHARACTER2 = BIOSEXTCHARACTER2 OR (1 shl 4)
+ENDIF
+
+ EXITM %BIOSEXTCHARACTER2
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 1 : SYSTEM INFORMATION
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 2 : BASEBOARD INFORMATION
+;----------------------------------------------------------------------------
+
+BASE_BOARD_FEATURE_FLAGS MACRO
+
+ LOCAL FEATUREFLAGS
+ FEATUREFLAGS = 0
+
+ IF MKF_BB_HOSTING_BOARD
+ FEATUREFLAGS = FEATUREFLAGS OR 01h
+ ENDIF
+
+ IF MKF_BB_REQUIRE_AUX_BOARD
+ FEATUREFLAGS = FEATUREFLAGS OR 02h
+ ENDIF
+
+ IF MKF_BB_REMOVABLE
+ FEATUREFLAGS = FEATUREFLAGS OR 04h
+ ENDIF
+
+ IF MKF_BB_REPLACEABLE
+ FEATUREFLAGS = FEATUREFLAGS OR 08h
+ ENDIF
+
+ IF MKF_BB_HOT_SWAPPABLE
+ FEATUREFLAGS = FEATUREFLAGS OR 10h
+ ENDIF
+
+ EXITM %FEATUREFLAGS
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 3 : SYSTEM ENCLOSURE OR CHASSIS
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 4 : PROCESSOR INFORMATION
+;----------------------------------------------------------------------------
+
+@PROC_VOLT MACRO arglist:VARARG
+
+ LOCAL xV, xC, xM
+ xC = 1
+ xV = 0
+ FOR arg, <arglist>
+ IF xC EQ 1
+ xM = arg
+ ENDIF
+
+ IF xC GT 1
+ IF xM EQ 0
+ xV = xV OR arg
+ ENDIF
+ IF xM GT 0
+ xV = arg OR 80h
+ ENDIF
+ ENDIF
+ xC = xC+1
+
+ ENDM
+ EXITM %xV
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 5 : MEMORY CONTROLLER INFORMATION
+;----------------------------------------------------------------------------
+
+MEM_CTRL_ECC MACRO
+
+ LOCAL MEMCONTROLLERECC
+ MEMCONTROLLERECC = 0
+
+IF MKF_MCE_OTHER
+ MEMCONTROLLERECC = MEMCONTROLLERECC OR (1 shl 0)
+ENDIF
+
+IF MKF_MCE_UNKNOWN
+ MEMCONTROLLERECC = MEMCONTROLLERECC OR (1 shl 1)
+ENDIF
+
+IF MKF_MCE_NONE
+ MEMCONTROLLERECC = MEMCONTROLLERECC OR (1 shl 2)
+ENDIF
+
+IF MKF_MCE_SINGLE_BIT_ECC
+ MEMCONTROLLERECC = MEMCONTROLLERECC OR (1 shl 3)
+ENDIF
+
+IF MKF_MCE_DOUBLE_BIT_ECC
+ MEMCONTROLLERECC = MEMCONTROLLERECC OR (1 shl 4)
+ENDIF
+
+IF MKF_MCE_ERROR_SCRUBBING
+ MEMCONTROLLERECC = MEMCONTROLLERECC OR (1 shl 5)
+ENDIF
+
+ EXITM %MEMCONTROLLERECC
+
+ENDM
+
+;----------------------------------------------------------------------------
+
+MEM_CTRL_SPEED MACRO
+
+ LOCAL MEMCONTSUPSPEED
+ MEMCONTSUPSPEED = 0
+
+IF MKF_SS_OTHER
+ MEMCONTSUPSPEED = MEMCONTSUPSPEED OR (1 shl 0)
+ENDIF
+
+IF MKF_SS_UNKNOWN
+ MEMCONTSUPSPEED = MEMCONTSUPSPEED OR (1 shl 1)
+ENDIF
+
+IF MKF_SS_70ns
+ MEMCONTSUPSPEED = MEMCONTSUPSPEED OR (1 shl 2)
+ENDIF
+
+IF MKF_SS_60ns
+ MEMCONTSUPSPEED = MEMCONTSUPSPEED OR (1 shl 3)
+ENDIF
+
+IF MKF_SS_50ns
+ MEMCONTSUPSPEED = MEMCONTSUPSPEED OR (1 shl 4)
+ENDIF
+
+ EXITM %MEMCONTSUPSPEED
+
+ENDM
+
+;----------------------------------------------------------------------------
+; Following macro is defined for Memory Type
+;----------------------------------------------------------------------------
+
+@MEMORY_TYPE MACRO arglist:VARARG
+
+ LOCAL xMt
+ xMt = 0
+ FOR arg, <arglist>
+ xMt = xMt OR arg
+ ENDM
+ WORD xMt
+ENDM
+
+;----------------------------------------------------------------------------
+
+@MEMORY_INFO MACRO arglist:VARARG
+
+ LOCAL xB, xMs, xIs, xEs, xC
+ xC = 0
+ xB = 0
+ FOR arg, <arglist>
+ xC = xC + 1
+ IF xC EQ 1
+ xB = xB OR (arg shl 4)
+ ENDIF
+ IF xC EQ 2
+ xB = xB OR arg
+ ENDIF
+ IF xC EQ 3
+ xMs = arg
+ ENDIF
+ IF xC EQ 4
+ xIs = MEM_SIZE_IN_MB(arg)
+ ENDIF
+ IF xC EQ 5
+ xEs = MEM_SIZE_IN_MB(arg)
+ ENDIF
+ IF xC EQ 6
+ xIs = xIs OR arg
+ xEs = xEs OR arg
+ ENDIF
+ ENDM
+ BYTE xB
+ BYTE xMs
+ xEs = xEs*256
+ xEs = xEs OR xIs
+ EXITM %xEs
+ENDM
+
+;----------------------------------------------------------------------------
+
+@MEMORY_ERR_STATUS MACRO arglist:VARARG
+ LOCAL xErr
+ FOR arg, <arglist>
+ xErr = 0
+ ENDM
+ BYTE xErr
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 6 : MEMORY MODULE INFORMATION STRUCTURE
+;----------------------------------------------------------------------------
+
+MEM_MOD_VOLTAGE MACRO
+
+ LOCAL memVolt
+ memVolt = 0
+
+IF MKF_MM_VOLTAGE_5V
+ memVolt = memVolt OR 1
+ENDIF
+
+IF MKF_MM_VOLTAGE_33V
+ memVolt = memVolt OR (1 shl 1)
+ENDIF
+
+IF MKF_MM_VOLTAGE_29V
+ memVolt = memVolt OR (1 shl 2)
+ENDIF
+
+ EXITM %memVolt
+ENDM
+
+;----------------------------------------------------------------------------
+
+SUPPORTED_MEM_TYPE MACRO
+
+ LOCAL MEMMODSUPTYPE
+ MEMMODSUPTYPE = 0
+
+IF MKF_TYPE_OTHER
+ MEMMODSUPTYPE = MEMMODSUPTYPE OR (1 shl 0)
+ENDIF
+
+IF MKF_TYPE_UNKNOWN
+ MEMMODSUPTYPE = MEMMODSUPTYPE OR (1 shl 1)
+ENDIF
+
+IF MKF_TYPE_STANDARD
+ MEMMODSUPTYPE = MEMMODSUPTYPE OR (1 shl 2)
+ENDIF
+
+IF MKF_TYPE_FAST_PAGE_MODE
+ MEMMODSUPTYPE = MEMMODSUPTYPE OR (1 shl 3)
+ENDIF
+
+IF MKF_TYPE_EDO
+ MEMMODSUPTYPE = MEMMODSUPTYPE OR (1 shl 4)
+ENDIF
+
+IF MKF_TYPE_PARITY
+ MEMMODSUPTYPE = MEMMODSUPTYPE OR (1 shl 5)
+ENDIF
+
+IF MKF_TYPE_ECC
+ MEMMODSUPTYPE = MEMMODSUPTYPE OR (1 shl 6)
+ENDIF
+
+IF MKF_TYPE_SIMM
+ MEMMODSUPTYPE = MEMMODSUPTYPE OR (1 shl 7)
+ENDIF
+
+IF MKF_TYPE_DIMM
+ MEMMODSUPTYPE = MEMMODSUPTYPE OR (1 shl 8)
+ENDIF
+
+IF MKF_TYPE_BURST_EDO
+ MEMMODSUPTYPE = MEMMODSUPTYPE OR (1 shl 9)
+ENDIF
+
+IF MKF_TYPE_SDRAM
+ MEMMODSUPTYPE = MEMMODSUPTYPE OR (1 shl 10)
+ENDIF
+
+ EXITM %MEMMODSUPTYPE
+
+ENDM
+
+;----------------------------------------------------------------------------
+; Following Macro calculates the Memory size in unit of MegaByte,
+; Porting engineer has to give value in SMB.EQU files only, and this
+; macro will calculate the correct size in MB
+;----------------------------------------------------------------------------
+; aa = xSize/(1024*1024)
+
+MEM_SIZE_IN_MB macro xSize:REQ
+
+ LOCAL aa, bb
+ bb = 0
+ aa = xSize
+ WHILE aa GT 0
+ aa = aa SHR 1
+ bb = bb + 1
+ ENDM
+ IF bb GT 0
+ bb = bb - 1
+ ENDIF
+ EXITM %bb
+ENDM
+
+;----------------------------------------------------------------------------
+; Following macro will calculate the BIOS size in unit of KB Porting
+; Engineer has to give value in SMB.EQU, and this macro will
+; calculate the BIOS size in KB
+;----------------------------------------------------------------------------
+
+BIOS_SIZE_IN_KB MACRO xSize:REQ
+ LOCAL aa
+
+ aa = xSize
+ IF aa LE (256*64*1024)
+ aa = (aa/(64*1024)) - 1
+ else
+ aa = 255
+ ENDIF
+ EXITM %aa
+ENDM
+
+;----------------------------------------------------------------------------
+; Following String defines the Memory module Information Structure
+;----------------------------------------------------------------------------
+
+
+;----------------------------------------------------------------------------
+; Structure Type 7 : CACHE INFORMATION STRUCTURE
+;----------------------------------------------------------------------------
+
+CACHE_SIZE MACRO xSize:REQ
+ LOCAL cSize
+ IF xSize GT (64*1024)
+ cSize = (xSize/(64*1024)) OR 8000h
+ ELSE
+ cSize = xSize/(1024)
+ ENDIF
+ EXITM %cSize
+ENDM
+
+;----------------------------------------------------------------------------
+; Following macro defines the Cache Speed
+;----------------------------------------------------------------------------
+
+CACHE_SPEED MACRO xSize:REQ
+ LOCAL cSize
+ cSize = xSize
+ EXITM %cSize
+ENDM
+
+;----------------------------------------------------------------------------
+; Following Macro is defined for Cache Information
+;----------------------------------------------------------------------------
+
+@CACHE_INFO MACRO arglist:VARARG
+
+ LOCAL xCs, xIs, xTyp, xC
+ xC = 0
+ xTyp = 0
+ FOR arg, <arglist>
+ xC = xC+1
+ IF xC EQ 1
+ xCs = CACHE_SIZE(arg)
+ ENDIF
+ IF xC EQ 2
+ xIs = CACHE_SIZE(arg)
+ ENDIF
+ IF xC GT 2
+ xTyp = xTyp OR arg
+ ENDIF
+ ENDM
+ WORD xCs
+ WORD xIs
+ WORD xTyp
+ WORD xTyp
+ENDM
+
+;----------------------------------------------------------------------------
+; Following Macro is defined for Cache Operational Mode
+;----------------------------------------------------------------------------
+
+@CACHE_CFG MACRO arglist:VARARG
+
+ LOCAL xCfg
+ xCfg = 0
+ FOR arg, <arglist>
+ xCfg = xCfg OR arg
+ ENDM
+ WORD xCfg
+ENDM
+
+;----------------------------------------------------------------------------
+
+@EXT_CACHE_CFG MACRO arglist:VARARG
+
+ LOCAL xCfg
+ xCfg = 0
+ FOR arg, <arglist>
+ xCfg = xCfg OR arg OR CCL_EXTERNAL
+ ENDM
+ WORD xCfg
+ENDM
+
+;----------------------------------------------------------------------------
+; Following macro is defined for Cache Characteristics
+;----------------------------------------------------------------------------
+
+@CACHE_CHAR MACRO arglist:VARARG
+
+ LOCAL xCspeed, xErrCorrType, xSysCacheType, xAssoc, xC
+ xC = 0
+ FOR arg, <arglist>
+ xC = xC+1
+ IF xC EQ 1
+ xCspeed = CACHE_SPEED(arg)
+ ENDIF
+ IF xC EQ 2
+ xErrCorrType = arg
+ ENDIF
+ IF xC EQ 3
+ xSysCacheType = arg
+ ENDIF
+ IF xC EQ 4
+ xAssoc = arg
+ ENDIF
+ ENDM
+ BYTE xCspeed
+ BYTE xErrCorrType
+ BYTE xSysCacheType
+ BYTE xAssoc
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 8 : PORT CONNECTOR INFORMATION STRUCTURE
+;----------------------------------------------------------------------------
+
+DEFINE_EXT_CONNECTOR macro IntRefStr:REQ, IntConTyp:REQ, ExtRefStr:REQ, ExtConTyp:REQ, PortTyp:REQ
+
+ PORT_DEFINE_STRUC {\
+ 1,
+ IntConTyp,
+ 2,
+ ExtConTyp,
+ PortTyp\
+ }
+ PUT_STR IntRefStr
+ PUT_STR ExtRefStr
+ENDM
+
+;----------------------------------------------------------------------------
+
+DEFINE_INT_CONNECTOR macro IntRefStr:REQ, IntConTyp:REQ, PortTyp:REQ
+
+ PORT_DEFINE_STRUC {\
+ 1,
+ IntConTyp,
+ 0,
+ 0,
+ PortTyp\
+ }
+ PUT_STR IntRefStr
+
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 9 : SYSTEM SLOTS INFORMATION STRUCTURE
+;----------------------------------------------------------------------------
+
+SYSTEM_SLOT_CHAR1 MACRO
+
+ LOCAL SLOTCHAR1TYPE
+
+ SLOTCHAR1TYPE = 0
+
+
+IF SLC_CHAR_UNKNOWN
+ SLOTCHAR1TYPE = SLOTCHAR1TYPE OR (1 shl 0)
+ENDIF
+
+IF SLC_CHAR_5VOLT
+ SLOTCHAR1TYPE = SLOTCHAR1TYPE OR (1 shl 1)
+ENDIF
+
+IF SLC_CHAR_3_POINT_3VOLT
+ SLOTCHAR1TYPE = SLOTCHAR1TYPE OR (1 shl 2)
+ENDIF
+
+IF SLC_CHAR_SHARE_SLOT
+ SLOTCHAR1TYPE = SLOTCHAR1TYPE OR (1 shl 3)
+ENDIF
+
+IF SLC_CHAR_PCCARD16
+ SLOTCHAR1TYPE = SLOTCHAR1TYPE OR (1 shl 4)
+ENDIF
+
+IF SLC_CHAR_CARDBUS
+ SLOTCHAR1TYPE = SLOTCHAR1TYPE OR (1 shl 5)
+ENDIF
+
+IF SLC_CHAR_ZOOM_VIDEO
+ SLOTCHAR1TYPE = SLOTCHAR1TYPE OR (1 shl 6)
+ENDIF
+
+IF SLC_CHAR_MODEM_RING_RESUME
+ SLOTCHAR1TYPE = SLOTCHAR1TYPE OR (1 SHL 7)
+ENDIF
+
+ EXITM %SLOTCHAR1TYPE
+
+ENDM
+
+;----------------------------------------------------------------------------
+
+SYSTEM_SLOT_CHAR2 MACRO
+
+ LOCAL SLOTCHAR2TYPE
+ SLOTCHARTYPE2 = 1
+
+ IF SLOT_CHAR2_PME
+ SLOTCHAR2TYPE = SLTCHAR2TYPE OR (1 shl 0)
+ ENDIF
+
+ EXITM %SLOTCHAR2TYPE
+ENDM
+
+;----------------------------------------------------------------------------
+
+SYS_SLOT_CHAR MACRO arglist:VARARG
+
+ LOCAL xRet
+ xRet = 0
+ ;xRet = 1
+ FOR arg, <arglist>
+ xRet = xRet OR arg
+ ENDM
+
+ EXITM %xRet
+ENDM
+
+;----------------------------------------------------------------------------
+
+SYS_SLOT_INFO MACRO type, len, hndl, str, stype, busw, usage, slen, id, schar, seggrp, busn, devfn
+
+ SYSTEM_SLOT_INFO_STRUC {\
+ {type, len, hndl},
+ 1,
+ stype,
+ busw,
+ usage,
+ slen,
+ id,
+ LOW SYS_SLOT_CHAR(%schar),
+ HIGH SYS_SLOT_CHAR(%schar),
+ seggrp, busn, devfn\
+ }
+ PUT_STR %str
+
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 10 : ON-BOARD DEVICES INFORMATION STRUCTURE
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 11 : OEM STRINGS INFORMATION STRUCTURE
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 12 : SYSTEM CONFIGURATION INFORMATION STRUCTURE
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 13 : BIOS LANGUAGE INFORMATION STRUCTURE
+;----------------------------------------------------------------------------
+
+BIOS_LANGUAGE_FLAG MACRO
+ LOCAL BIOSLANGFLAG
+ BIOSLANGFLAG= 0
+ BIOSLANGFLAG= BIOSLANGFLAG OR (ABBRIVIATED_FORMAT shl 1)
+
+ EXITM %BIOSLANGFLAG
+
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 14: GROUP ASSOCIATION INFORMATION
+;----------------------------------------------------------------------------
+
+SUB_GROUP_ASSOCIATION MACRO xHandle, xNum, xTyp, xSh, xAttrib
+
+ LOCAL length, xIh, hndl
+ length = (3*xNum)+5
+ xIh = xSh
+ hndl = xHandle
+ DMIHDR_STRUC {14h, length, hndl}
+ BYTE 1
+ REPEAT xNum
+ BYTE xTyp
+ WORD xIh
+ xIh = xIh+1
+ ENDM
+ SCAN_PUT_STR %xAttrib
+ TERMINATOR
+ hndl = hndl+1
+ EXITM %hndl
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 15: EVENT LOG INFORMATION
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 16: PHYSICAL MEMORY ARRAY INFORMATION
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 17: MEMORY DEVICE INFORMATION
+;----------------------------------------------------------------------------
+
+MEM_DEVICE_TYPE_DETAIL macro
+
+ LOCAL DEVICETYPEDETAIL, i
+ i = 55
+ DEVICETYPEDETAIL = 0
+
+IF MKF_MDT_OTHER
+ DEVICETYPEDETAIL = DEVICETYPEDETAIL OR (1 shl 1)
+ENDIF
+
+IF MKF_MDT_UNKNOWN
+ DEVICETYPEDETAIL = DEVICETYPEDETAIL OR (1 shl 2)
+ENDIF
+
+IF MKF_MDT_FASTPAGED
+ DEVICETYPEDETAIL = DEVICETYPEDETAIL OR (1 shl 3)
+ENDIF
+
+IF MKF_MDT_STATIC_COLUMN
+ DEVICETYPEDETAIL = DEVICETYPEDETAIL OR (1 shl 4)
+ENDIF
+
+IF MKF_MDT_PSEUDO_STATIC
+ DEVICETYPEDETAIL = DEVICETYPEDETAIL OR (1 shl 5)
+ENDIF
+
+IF MKF_MDT_RAMBUS
+ DEVICETYPEDETAIL = DEVICETYPEDETAIL OR (1 shl 6)
+ENDIF
+
+IF MKF_MDT_SYNCHRONOUS
+ DEVICETYPEDETAIL = DEVICETYPEDETAIL OR (1 shl 7)
+ENDIF
+
+IF MKF_MDT_CMOS
+ DEVICETYPEDETAIL = DEVICETYPEDETAIL OR (1 shl 8)
+ENDIF
+
+IF MKF_MDT_EDO
+ DEVICETYPEDETAIL = DEVICETYPEDETAIL OR (1 shl 9)
+ENDIF
+
+IF MKF_MDT_WINDOWDRAM
+ DEVICETYPEDETAIL = DEVICETYPEDETAIL OR (1 shl 10)
+ENDIF
+
+IF MKF_MDT_CACHEDRAM
+ DEVICETYPEDETAIL = DEVICETYPEDETAIL OR (1 shl 11)
+ENDIF
+
+IF MKF_MDT_NONVOLATILE
+ DEVICETYPEDETAIL = DEVICETYPEDETAIL OR (1 shl 12)
+ENDIF
+
+ EXITM %DEVICETYPEDETAIL
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 18: MEMORY ERROR INFORMATION
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 19: MEMORY ARRAY MAPPED ADDRESS INFORMATION
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 20: MEMORY DEVICE MAPPED ADDRESS INFORMATION
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 21: BUILT-IN POINTING DEVICE INFORMATION
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 22: PORTABLE BATTERY INFORMATION
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 23: SYSTEM RESET INFORMATION
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 24: HARDWARE SECURITY INFORMATION
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 25: SYSTEM POWER CONTROLS INFORMATION
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 26: VOLTAGE PROBE INFORMATION
+;----------------------------------------------------------------------------
+
+VOLTAGE_PRO_INFO MACRO type, leng,hndl, str,LocationStatus, MaximumValue, MinimumValue, Resolution, Tolerance, Accuracy, OemDefined, NominalValue
+
+ VOLTAGE_PROBE_STRUC {\
+ {type, leng, hndl},
+ 1,
+ LocationStatus,
+ MaximumValue,
+ MinimumValue,
+ Resolution,
+ Tolerance,
+ Accuracy,
+ OemDefined,
+ NominalValue\
+ }
+ PUT_STR %str
+
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 27: COOLING DEVICE INFORMATION
+;----------------------------------------------------------------------------
+
+COOLING_DEV_INFO MACRO type, leng,hndl,Tphndl, DeviceTypeandStatus, CoolingUnitGroup, OemDefined, NominalSpeed, Description
+
+ COOLING_DEVICE_STRUC {\
+ {type, leng, hndl},
+ Tphndl,
+ DeviceTypeandStatus,
+ CoolingUnitGroup,
+ OemDefined,
+ NominalSpeed,
+ Description\
+ }
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 28: TEMPERATURE PROBE INFORMATION
+;----------------------------------------------------------------------------
+
+TEMPERATURE_PRO_INFO MACRO type,leng,hndl,str,LS,MaxV,MinV,Rs,Tl,Acr,OD,NV
+
+ TEMPERATURE_PROBE_STRUC {\
+ {type, leng, hndl},
+ 01h,
+ LS,
+ MaxV,
+ MinV,
+ Rs,
+ Tl,
+ Acr,
+ OD,
+ NV\
+ }
+ PUT_STR %str
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 29: ELECTRICAL PROBE INFORMATION
+;----------------------------------------------------------------------------
+
+ELECTRICAL_PRO_INFO MACRO type, leng,hndl, str,LocationStatus, MaximumValue, MinimumValue, Resolution, Tolerance, Accuracy, OemDefined, NominalValue
+
+ ELECTRICAL_CURRENT_PROBE_STRUC {\
+ {type, leng, hndl},
+ 1,
+ LocationStatus,
+ MaximumValue,
+ MinimumValue,
+ Resolution,
+ Tolerance,
+ Accuracy,
+ OemDefined,
+ NominalValue\
+ }
+
+ PUT_STR %str
+
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 30: OUT-OF-BAND REMOTE ACCESS INFORMATION
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 31: BOOT INTEGRITY SERVICES ENTRY POINT INFORMATION
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 32: SYSTEM BOOT INFORMATION
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 33: 64-BIT MEMORY ERROR INFORMATION
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 34: MANAGEMENT DEVICE INFORMATION
+;----------------------------------------------------------------------------
+
+MANAGEMENT_DEV_INFO MACRO type,leng,hndl,str,mtype,ma,mat
+
+ MANAGEMENT_DEVICE_STRUC {\
+ {type, leng, hndl},
+ 01h,
+ mtype,
+ ma,
+ mat\
+ }
+ PUT_STR %str
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 35: MANAGEMENT DEVICE COMPONENT INFORMATION
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 36: MANAGEMENT DEVICE THRESHOLD DATA INFORMATION
+;----------------------------------------------------------------------------
+
+MANAGEMENT_DEV_THRESHOLD_INFO MACRO type,leng,hndl,lthnc,uthnc,lthc,uthc,lthnr,uthnr
+
+ MANAGEMENT_DEVICE_THRESHOLD_DATA_STRUC {\
+ {type,leng,hndl},
+ lthnc,
+ uthnc,
+ lthc,
+ uthc,
+ lthnr,
+ uthnr\
+ }
+ENDM
+
+;----------------------------------------------------------------------------
+; Structure Type 37: MEMORY CHANNEL INFORMATION
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 38 : IPMI DEVICE INFORMATION
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 39: SYSTEM POWER SUPPLY
+;----------------------------------------------------------------------------
+
+SYSTEM_POWER_SUPPLY_INFO MACRO type,leng,hndl,pug,str1,str2,str3,str4,str5,str6,str7,mpc,psc,ivph,cdh,icph
+
+ SYSTEM_POWER_SUPPLY_STRUC {\
+ {type,leng,hndl},
+ pug,
+ 01h,
+ 02h,
+ 03h,
+ 04h,
+ 05h,
+ 06h,
+ 07h,
+ mpc,
+ psc,
+ ivph,
+ cdh,
+ icph\
+ }
+ PUT_STR %str1
+ PUT_STR %str2
+ PUT_STR %str3
+ PUT_STR %str4
+ PUT_STR %str5
+ PUT_STR %str6
+ PUT_STR %str7
+ENDM
+
+;----------------------------------------------------------------------------
+; Following Macros defines Macros used in General
+;----------------------------------------------------------------------------
+
+TERMINATOR MACRO
+ db 0
+ENDM
+
+;----------------------------------------------------------------------------
+
+PUT_STR MACRO str
+ BYTE "&str",0
+ENDM
+
+;----------------------------------------------------------------------------
+
+@GET_VAL MACRO xVal
+ LOCAL xV
+ xV = xVal
+ EXITM %xV
+ENDM
+
+;----------------------------------------------------------------------------
+; Following Macro is defined for Scanning the string and remove
+; the null character and tabulation in a string
+;----------------------------------------------------------------------------
+
+SCAN_STR MACRO str
+
+ LOCAL xS, xOs, xTs
+ LOCAL xL, xT, xN, xW, xSsl
+
+ xOs TEXTEQU <str>
+ xS TEXTEQU <>
+ xL = @SIZESTR (%xOs)
+ xN = 1
+ xW = 0
+
+ WHILE xW EQ 0
+ xT = @INSTR (<%xN>, %xOs, < >)
+ IF xT EQ 0
+ xSsl = xL - xN + 1
+ xTs TEXTEQU @SUBSTR (%xOs, <%xN>, <%xSsl>)
+ xS TEXTEQU @CATSTR (%xS, %xTs)
+
+ xW = 1
+ ELSE
+ xS TEXTEQU @CATSTR (%xS, < >)
+ xN = xT + 1
+ ENDIF
+ ENDM
+ EXITM <xS>
+ENDM
+
+;----------------------------------------------------------------------------
+; This macro is defined for scaning and putting string
+;----------------------------------------------------------------------------
+
+SCAN_PUT_STR MACRO str
+
+ LOCAL xS
+ xS TEXTEQU <str>
+ xS TEXTEQU SCAN_STR(%xS)
+ PUT_STR %xS
+ENDM
+
+;----------------------------------------------------------------------------
+
+SCAN_PUT_STR1 MACRO str
+
+ LOCAL xS
+ xS TEXTEQU <str>
+ xS TEXTEQU (%xS)
+ PUT_STR %xS
+ENDM
+
+;----------------------------------------------------------------------------
+;****************************************************************************
+;****************************************************************************
+;** **
+;** (C)Copyright 1985-2016, American Megatrends, Inc. **
+;** **
+;** All Rights Reserved. **
+;** **
+;** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **
+;** **
+;** Phone: (770)-246-8600 **
+;** **
+;****************************************************************************
+;****************************************************************************
diff --git a/Board/EM/SMBIOS/SMBiosStaticData/SMBSTRUC.DEF b/Board/EM/SMBIOS/SMBiosStaticData/SMBSTRUC.DEF
new file mode 100644
index 0000000..e03d21c
--- /dev/null
+++ b/Board/EM/SMBIOS/SMBiosStaticData/SMBSTRUC.DEF
@@ -0,0 +1,793 @@
+ ECHO --Including: SMBSTRUC.DEF
+
+;----------------------------------------------------------------------------
+; Do not change any structure defination unless otherwise specified
+;----------------------------------------------------------------------------
+
+;****************************************************************************
+;****************************************************************************
+;** **
+;** (C)Copyright 1985-2013, American Megatrends, Inc. **
+;** **
+;** All Rights Reserved. **
+;** **
+;** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **
+;** **
+;** Phone: (770)-246-8600 **
+;** **
+;****************************************************************************
+;****************************************************************************
+
+;****************************************************************************
+; $Header: /Alaska/BIN/Modules/SMBIOS/SmbiosStaticData/SMBSTRUC.DEF 8 6/03/13 6:24p Davidd $
+;
+; $Revision: 8 $
+;
+; $Date: 6/03/13 6:24p $
+;****************************************************************************
+; Revision History
+; ----------------
+; $Log: /Alaska/BIN/Modules/SMBIOS/SmbiosStaticData/SMBSTRUC.DEF $
+;
+; 8 6/03/13 6:24p Davidd
+; [TAG] EIP125665
+; [Category] New Feature
+; [Description] Request to Support multiple instances of SMBIOS Type 3
+; structure (merge EIP106206 into Aptio 4)
+; [Files] Smbdata.mac
+; SmbiosStaticData.sdl
+; Smbstruc.def
+; Smbios.c
+; SmbiosDMIEditFunc.c
+; Smbios.h
+;
+; 7 5/29/13 12:49p Davidd
+; [TAG] EIP124735
+; [Category] Spec Update
+; [Severity] Normal
+; [Description] SMBIOS 2.8.0 specification support for Aptio 4
+; [Files] Smb.equ
+; Smbdata.mac
+; Smbdesc.def
+; Smbstruc.def
+; Smbios.c
+; Smbios.h
+; SmbiosDynamicData.h
+;
+; 6 10/08/10 8:16p Davidd
+; [TAG] EIP43278
+;
+; [Category] Function Request
+;
+; [Severity] Normal
+;
+; [Description] SMBIOS 2.7 requirement
+;
+; [Files] Include\Protocol\Smbios.h
+; Include\Protocol\SmbiosDynamicData.h
+; Board\EM\SMBIOS\SMBiosStaticData\SmbiosStaticData.sdl
+; Board\EM\SMBIOS\SMBiosStaticData\SMBDATA.MAC
+; Board\EM\SMBIOS\SMBiosStaticData\SMBSTRUC.DEF
+; Board\EM\SMBIOS\SMBiosStaticData\SMBMACRO.AID
+; Board\EM\SMBIOS\SMBiosStaticData\Smbdesc.def
+; Board\EM\SMBIOS\SMBiosStaticData\SMB.EQU
+;
+; 5 6/02/09 4:44p Davidd
+; Updated AMI headers (EIP 22180)
+;
+; 4 10/13/08 11:19a Davidd
+; Changes made to support SMBIOS specification v2.5 and v2.6
+;
+; 3 3/29/07 5:09p Davidd
+; Changed the year in the AMI banner.
+;
+; 2 12/15/06 5:31p Davidd
+; Code cleanup and reformatted to coding standard.
+;
+; 1 4/29/05 2:15p Davidd
+; Initial checkin.
+;
+;****************************************************************************
+
+;----------------------------------------------------------------------------
+; This file defines all SMBIOS Version 2.4 specification Data Stuructures
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+;Structure Header Format
+
+DMIHDR_STRUC STRUCT
+ bType BYTE ?
+ bLength BYTE ?
+ wHandle WORD ?
+DMIHDR_STRUC ENDS
+;----------------------------------------------------------------------------
+BIOSINFO_STRUC STRUCT ; 0
+ DMIHDR_STRUC {}
+ bVendor BYTE ?
+ bVerStrNum BYTE ?
+ wBiosStrtAddr WORD ?
+ bDate BYTE ?
+ bBiosSize BYTE ?
+ dBiosChar DWORD ?
+ dBiosChar1 DWORD ?
+ bExtByte BYTE ?
+ bExtByte2 BYTE ?
+ bBiosMajor BYTE ?
+ bBiosMinor BYTE ?
+ bEmbCtrlMajor BYTE ?
+ bEmbCtrlMinor BYTE ?
+BIOSINFO_STRUC ENDS
+;----------------------------------------------------------------------------
+SYSINFO_STRUC STRUCT ; 1
+ DMIHDR_STRUC {}
+ bManufacturer BYTE ?
+ bProductName BYTE ?
+ bVersion BYTE ?
+ bSrNum BYTE ?
+ bUUID BYTE 16 dup (?)
+ bWakeType BYTE ?
+ bSkuNumber BYTE ?
+ bFamily BYTE ?
+SYSINFO_STRUC ENDS
+;----------------------------------------------------------------------------
+BASEBOARD_INFO_STRUC STRUCT ; 2
+ DMIHDR_STRUC {,,}
+ bManufacturer BYTE ?
+ bProduct BYTE ?
+ bVersion BYTE ?
+ bSrNum BYTE ?
+ bAssetTag BYTE ?
+ bFeatureFlags BYTE ?
+ bLocInChassis BYTE ?
+ wChassisHandle WORD ?
+ bBoardType BYTE ?
+ bNoOfObjectHndl BYTE ?
+BASEBOARD_INFO_STRUC ENDS
+
+BASEBOARD_INFO_SUB_STRUC STRUCT
+ wObjectHandle BYTE ?
+BASEBOARD_INFO_SUB_STRUC ENDS
+;----------------------------------------------------------------------------
+SYSENC_STRUC STRUCT ; 3
+ DMIHDR_STRUC {,,}
+ bManufacturer BYTE ?
+ bSYSENC_Type BYTE ?
+ bVersion BYTE ?
+ bSrNum BYTE ?
+ bAssTagNum BYTE ?
+ bBootState BYTE ?
+ bPwrState BYTE ?
+ bThermalState BYTE ?
+ bSecurityState BYTE ?
+ doemdefined DWORD ?
+ bHeight BYTE ?
+ bNoPwrCords BYTE ?
+ bNoContElements BYTE ?
+ bContElementLen BYTE ?
+ bSKU BYTE ?
+SYSENC_STRUC ENDS
+
+SYSENC_STRUC_1 STRUCT ; 3
+ DMIHDR_STRUC {,,}
+ bManufacturer BYTE ?
+ bSYSENC_Type BYTE ?
+ bVersion BYTE ?
+ bSrNum BYTE ?
+ bAssTagNum BYTE ?
+ bBootState BYTE ?
+ bPwrState BYTE ?
+ bThermalState BYTE ?
+ bSecurityState BYTE ?
+ doemdefined DWORD ?
+ bHeight BYTE ?
+ bNoPwrCords BYTE ?
+ bNoContElements BYTE ?
+ bContElementLen BYTE ?
+ bContElement BYTE (MKF_ELEMENT_COUNT_1 * MKF_ELEMENT_LEN_1) dup (?)
+ bSKU BYTE ?
+SYSENC_STRUC_1 ENDS
+
+SYSENC_STRUC_2 STRUCT ; 3
+ DMIHDR_STRUC {,,}
+ bManufacturer BYTE ?
+ bSYSENC_Type BYTE ?
+ bVersion BYTE ?
+ bSrNum BYTE ?
+ bAssTagNum BYTE ?
+ bBootState BYTE ?
+ bPwrState BYTE ?
+ bThermalState BYTE ?
+ bSecurityState BYTE ?
+ doemdefined DWORD ?
+ bHeight BYTE ?
+ bNoPwrCords BYTE ?
+ bNoContElements BYTE ?
+ bContElementLen BYTE ?
+ bContElement BYTE (MKF_ELEMENT_COUNT_2 * MKF_ELEMENT_LEN_2) dup (?)
+ bSKU BYTE ?
+SYSENC_STRUC_2 ENDS
+
+SYSENC_STRUC_3 STRUCT ; 3
+ DMIHDR_STRUC {,,}
+ bManufacturer BYTE ?
+ bSYSENC_Type BYTE ?
+ bVersion BYTE ?
+ bSrNum BYTE ?
+ bAssTagNum BYTE ?
+ bBootState BYTE ?
+ bPwrState BYTE ?
+ bThermalState BYTE ?
+ bSecurityState BYTE ?
+ doemdefined DWORD ?
+ bHeight BYTE ?
+ bNoPwrCords BYTE ?
+ bNoContElements BYTE ?
+ bContElementLen BYTE ?
+ bContElement BYTE (MKF_ELEMENT_COUNT_3 * MKF_ELEMENT_LEN_3) dup (?)
+ bSKU BYTE ?
+SYSENC_STRUC_3 ENDS
+
+SYSENC_STRUC_4 STRUCT ; 3
+ DMIHDR_STRUC {,,}
+ bManufacturer BYTE ?
+ bSYSENC_Type BYTE ?
+ bVersion BYTE ?
+ bSrNum BYTE ?
+ bAssTagNum BYTE ?
+ bBootState BYTE ?
+ bPwrState BYTE ?
+ bThermalState BYTE ?
+ bSecurityState BYTE ?
+ doemdefined DWORD ?
+ bHeight BYTE ?
+ bNoPwrCords BYTE ?
+ bNoContElements BYTE ?
+ bContElementLen BYTE ?
+ bContElement BYTE (MKF_ELEMENT_COUNT_4 * MKF_ELEMENT_LEN_4) dup (?)
+ bSKU BYTE ?
+SYSENC_STRUC_4 ENDS
+
+SYSENC_STRUC_5 STRUCT ; 3
+ DMIHDR_STRUC {,,}
+ bManufacturer BYTE ?
+ bSYSENC_Type BYTE ?
+ bVersion BYTE ?
+ bSrNum BYTE ?
+ bAssTagNum BYTE ?
+ bBootState BYTE ?
+ bPwrState BYTE ?
+ bThermalState BYTE ?
+ bSecurityState BYTE ?
+ doemdefined DWORD ?
+ bHeight BYTE ?
+ bNoPwrCords BYTE ?
+ bNoContElements BYTE ?
+ bContElementLen BYTE ?
+ bContElement BYTE (MKF_ELEMENT_COUNT_5 * MKF_ELEMENT_LEN_5) dup (?)
+ bSKU BYTE ?
+SYSENC_STRUC_5 ENDS
+;----------------------------------------------------------------------------
+PROC_STRUC STRUCT ; 4
+ DMIHDR_STRUC {,,}
+ bSocketDesignation BYTE ?
+ bProcType BYTE ?
+ bProcFamily BYTE ?
+ bProcManufacturer BYTE ?
+ qProcID QWORD ?
+ bProcVersion BYTE ?
+ bVoltage BYTE ?
+ wExternalClock WORD ?
+ wMaxSpeed WORD ?
+ wCurrentSpeed WORD ?
+ bProcStatus BYTE ?
+ bProcUpgrade BYTE ?
+ wL1Cache WORD ?
+ wL2Cache WORD ?
+ wL3Cache WORD ?
+ bSerialNo BYTE ?
+ bAssetTag BYTE ?
+ bPartNo BYTE ?
+ bCoreCount BYTE ?
+ bCoreEnabled BYTE ?
+ bThreadCount BYTE ?
+ wProcessorChar WORD ?
+ wProcFamily2 WORD ?
+PROC_STRUC ENDS
+;----------------------------------------------------------------------------
+MEMCTRL_STRUC STRUCT ; 5
+ DMIHDR_STRUC {,,}
+ bErrDetect BYTE ?
+ bEcc BYTE ?
+ bSupInterleave BYTE ?
+ bCurrentInterleave BYTE ?
+ bMaxMemSize BYTE ?
+ wSupSpeeds WORD ?
+ wSupMemTypes WORD ?
+ bMemModVolt BYTE ?
+ bSlotNum BYTE ?
+MEMCTRL_STRUC ENDS
+;----------------------------------------------------------------------------
+MEMMOD_INFO_STRUC STRUCT ; 6
+ DMIHDR_STRUC {,,}
+ bSocDes BYTE ?
+ bBankCon BYTE ?
+ bCurrentSpd BYTE ?
+ wCurrentMemType WORD ?
+ bInstSize BYTE ?
+ bEnabledSize BYTE ?
+ bErrStatus BYTE ?
+MEMMOD_INFO_STRUC ENDS
+;----------------------------------------------------------------------------
+CACHE_INFO_STRUC STRUCT ; 7
+ DMIHDR_STRUC {,,}
+ bSocDes BYTE ?
+ wCacheConfig WORD ?
+ wMaxCacheSize WORD ?
+ wInstSize WORD ?
+ wSupType WORD ?
+ wCurrentType WORD ?
+ bCacheSpd BYTE ?
+ bErrType BYTE ?
+ bSysCacheType BYTE ?
+ bAssociativity BYTE ?
+CACHE_INFO_STRUC ENDS
+;----------------------------------------------------------------------------
+PORT_DEFINE_STRUC STRUCT ; 8
+ bInternalRefDes BYTE ?
+ bInternalConType BYTE ?
+ bExternalRefDes BYTE ?
+ bExternalConType BYTE ?
+ bPortType BYTE ?
+PORT_DEFINE_STRUC ENDS
+
+PORT_CONNECTOR_STRUC STRUCT
+ DMIHDR_STRUC {,,}
+ PORT_DEFINE_STRUC {}
+PORT_CONNECTOR_STRUC ENDS
+;----------------------------------------------------------------------------
+SYSTEM_SLOT_INFO_STRUC STRUCT ; 9
+ DMIHDR_STRUC {,,}
+ bSlotDes BYTE ?
+ bSlotType BYTE ?
+ bSlotBusWidth BYTE ?
+ bCurrentUsage BYTE ?
+ bSlotLength BYTE ?
+ wSlotId WORD ?
+ bSlotChar1 BYTE ?
+ bSlotChar2 BYTE ?
+ wSegGroupNum WORD ?
+ bBusNum BYTE ?
+ bDevFuncNum BYTE ?
+SYSTEM_SLOT_INFO_STRUC ENDS
+;----------------------------------------------------------------------------
+ONBOARD_DEV_SUB_STRUC STRUCT ; 10
+ bDeviceType BYTE ?
+ bDescrStr BYTE ?
+ONBOARD_DEV_SUB_STRUC ENDS
+
+ONBOARD_DEVICE_STRUC STRUCT
+ DMIHDR_STRUC {,,}
+ ONBOARD_DEV_SUB_STRUC {,}
+ONBOARD_DEVICE_STRUC ENDS
+;----------------------------------------------------------------------------
+OEM_STRING_STRUC STRUCT ; 11
+ DMIHDR_STRUC {,,}
+ bCount BYTE ?
+OEM_STRING_STRUC ENDS
+;----------------------------------------------------------------------------
+SYSTEM_CONFIG_OPT_STRUC STRUCT ; 12
+ DMIHDR_STRUC {,,}
+ bCount BYTE ?
+SYSTEM_CONFIG_OPT_STRUC ENDS
+;----------------------------------------------------------------------------
+RESERVED15_STRUC STRUCT
+ bRes0 BYTE ?
+ bRes1 BYTE ?
+ bRes2 BYTE ?
+ bRes3 BYTE ?
+ bRes4 BYTE ?
+ bRes5 BYTE ?
+ bRes6 BYTE ?
+ bRes7 BYTE ?
+ bRes8 BYTE ?
+ bRes9 BYTE ?
+ bRes10 BYTE ?
+ bRes11 BYTE ?
+ bRes12 BYTE ?
+ bRes13 BYTE ?
+ bRes14 BYTE ?
+RESERVED15_STRUC ENDS
+;----------------------------------------------------------------------------
+BIOS_LANGUAGE_INFO_STRUC STRUCT ; 13
+ DMIHDR_STRUC {,,}
+ bInstallableLang BYTE ?
+ bFlags BYTE ?
+ RESERVED15_STRUC {}
+ bCurrentLang BYTE ?
+BIOS_LANGUAGE_INFO_STRUC ENDS
+;----------------------------------------------------------------------------
+GROUP_ASSOC_STRUC STRUCT ; 14
+ DMIHDR_STRUC {,,}
+ bGroupName BYTE ?
+ bItemType BYTE ?
+ wItemHandle WORD ?
+GROUP_ASSOC_STRUC ENDS
+;----------------------------------------------------------------------------
+EVENTLOG_INFO_STRUC STRUCT ; 15
+ DMIHDR_STRUC {,,}
+ wLogAreaLength WORD ?
+ wLogHeaderOffset WORD ?
+ wLogDataOffset WORD ?
+ bAccessMethod BYTE ?
+ bLogStatus BYTE ?
+ dLogChangeToken DWORD ?
+ dAccessMethodAddress DWORD ?
+ bLogHeaderFormat BYTE ?
+ bSupportedLogTypeDesc BYTE ?
+ bSupportedLogTypeDescLength BYTE ?
+EVENTLOG_INFO_STRUC ENDS
+;----------------------------------------------------------------------------
+PHY_MEM_ARRAY_STRUC STRUCT ; 16
+ DMIHDR_STRUC {,,}
+ bLocation BYTE ?
+ bUse BYTE ?
+ bMemErrCorrection BYTE ?
+ dMaxCapacity DWORD ?
+ wMemErrInfoHandle WORD ?
+ wMemdevice WORD ?
+ qExtendedMaxCap QWORD ?
+PHY_MEM_ARRAY_STRUC ENDS
+;----------------------------------------------------------------------------
+MEMORY_DEVICE_STRUC STRUCT ; 17
+ DMIHDR_STRUC {,,}
+ wMemoryArrayhandle WORD ?
+ wMemoryErrHandle WORD ?
+ wTotalWidth WORD ?
+ wDataWidth WORD ?
+ wSize WORD ?
+ bFormFactor BYTE ?
+ bDeviceSet BYTE ?
+ bDeviceLocator BYTE ?
+ bBankLocator BYTE ?
+ bMemoryType BYTE ?
+ wTypeDetail WORD ?
+ wMemDevSpeed WORD ?
+ bManufacturer BYTE ?
+ bSerialNumber BYTE ?
+ bAssetTag BYTE ?
+ bPartNumber BYTE ?
+ bAttributes BYTE ?
+ dExtendedSize DWORD ?
+ wConfigMemClkSpeed WORD ?
+ wMinimumVoltage WORD ?
+ wMaximumVoltage WORD ?
+ wConfiguredVoltage WORD ?
+MEMORY_DEVICE_STRUC ENDS
+;----------------------------------------------------------------------------
+MEMORY_ARRAY_ERR_STRUC STRUCT ; 18
+ DMIHDR_STRUC {,,}
+ bErrtype BYTE ?
+ bErrGran BYTE ?
+ bErrOperation BYTE ?
+ dVendorSyndrome DWORD ?
+ dMemArrayErrAdd DWORD ?
+ dDevErrAdd DWORD ?
+ dErrResolution DWORD ?
+MEMORY_ARRAY_ERR_STRUC ENDS
+;----------------------------------------------------------------------------
+MEMORY_ARRAY_MAPPED_ADDRESS_STRUC STRUCT ; 19
+ DMIHDR_STRUC {,,}
+ dStartingAddress DWORD ?
+ dEndingAddress DWORD ?
+ wMemoryArrayHandle WORD ?
+ bPartitionWidth BYTE ?
+ qExtendedStartingAddr QWORD ?
+ qExtendedEndingAddr QWORD ?
+MEMORY_ARRAY_MAPPED_ADDRESS_STRUC ENDS
+;----------------------------------------------------------------------------
+MEMORY_DEVICE_MAPPED_ADDRESS_STRUC STRUCT ; 20
+ DMIHDR_STRUC {,,}
+ dStartingAddress DWORD ?
+ dEndingAddress DWORD ?
+ wMemoryDeviceHandle WORD ?
+ wMemoryArrayMappedHandle WORD ?
+ bPartitionRowPosition BYTE ?
+ bInterLeavePosition BYTE ?
+ bInterLeaveDataDepth BYTE ?
+ qExtendedStaringAddr QWORD ?
+ qExtendedEndingAddr QWORD ?
+MEMORY_DEVICE_MAPPED_ADDRESS_STRUC ENDS
+;----------------------------------------------------------------------------
+BUILTIN_POINT_DEV_STRUC STRUCT ; 21
+ DMIHDR_STRUC {,,}
+ bBlt_Type BYTE ?
+ bInterface BYTE ?
+ bButtonNum BYTE ?
+BUILTIN_POINT_DEV_STRUC ENDS
+;----------------------------------------------------------------------------
+PORTABLE_BATTERY_STRUC STRUCT ; 22
+ DMIHDR_STRUC {,,}
+ bLocation BYTE ?
+ bManufacturer BYTE ?
+ bManufactDate BYTE ?
+ bSrNum BYTE ?
+ bDevName BYTE ?
+ bDevChem BYTE ?
+ wDesignCapacity WORD ?
+ wDesignVoltage WORD ?
+ bSBDCVerNum BYTE ?
+ bMaxErrBattryData BYTE ?
+ wSBDSSrNumber WORD ?
+ wSBDSManufactureDate WORD ?
+ bSBDSDeviceChemistry BYTE ?
+ bDesignCapacityMul BYTE ?
+ dOEMSpecific DWORD ?
+PORTABLE_BATTERY_STRUC ENDS
+;----------------------------------------------------------------------------
+SYSTEM_RESET_STRUC STRUCT ; 23
+ DMIHDR_STRUC {,,}
+ bCapabilities BYTE ?
+ wResetCount WORD ?
+ wResetLimit WORD ?
+ wTimeInterval WORD ?
+ wTimeOut WORD ?
+SYSTEM_RESET_STRUC ENDS
+;----------------------------------------------------------------------------
+HARDWARE_SECURITY_STRUC STRUCT ; 24
+ DMIHDR_STRUC {,,}
+ bHardwareSecuritySettings BYTE ?
+HARDWARE_SECURITY_STRUC ENDS
+;----------------------------------------------------------------------------
+SYSTEM_POWER_CONTROLS_STRUC STRUCT ; 25
+ DMIHDR_STRUC {,,}
+ bNextSchPowerOnMonth BYTE ?
+ bNextSchPowerOnDayOfMonth BYTE ?
+ bNextSchPowerOnHour BYTE ?
+ bNextSchPowerOnMinute BYTE ?
+ bNextSchPowerOnSecond BYTE ?
+SYSTEM_POWER_CONTROLS_STRUC ENDS
+;----------------------------------------------------------------------------
+VOLTAGE_PROBE_STRUC STRUCT ; 26
+ DMIHDR_STRUC {,,}
+ bDescription BYTE ?
+ bLocationAndStatus BYTE ?
+ wMaximumValue WORD ?
+ wMinimumValue WORD ?
+ wResolution WORD ?
+ wTolerance WORD ?
+ wAccuracy WORD ?
+ dOEMDefined DWORD ?
+ wNominalValue WORD ?
+VOLTAGE_PROBE_STRUC ENDS
+;----------------------------------------------------------------------------
+COOLING_DEVICE_STRUC STRUCT ; 27
+ DMIHDR_STRUC {,,}
+ wTempProbeHandle WORD ?
+ bDeviceTypeAndStatus BYTE ?
+ bCoolingUnitGroup BYTE ?
+ dOEMDefinedGroup DWORD ?
+ wNominalSpeed WORD ?
+ bDescription BYTE ?
+COOLING_DEVICE_STRUC ENDS
+;----------------------------------------------------------------------------
+TEMPERATURE_PROBE_STRUC STRUCT ; 28
+ DMIHDR_STRUC {,,}
+ bTpdescription BYTE ?
+ bLocationAndStatus BYTE ?
+ wMaximumValue WORD ?
+ wMinimumValue WORD ?
+ wResolution WORD ?
+ wTolerence WORD ?
+ wAccuracy WORD ?
+ dOEMDefined DWORD ?
+ wNominalValue WORD ?
+TEMPERATURE_PROBE_STRUC ENDS
+;----------------------------------------------------------------------------
+ELECTRICAL_CURRENT_PROBE_STRUC STRUCT ; 29
+ DMIHDR_STRUC {,,}
+ bEpdescription BYTE ?
+ bLocationAndStatus BYTE ?
+ wMaximumValue WORD ?
+ wMinimumValue WORD ?
+ wResolution WORD ?
+ wTolerence WORD ?
+ wAccuracy WORD ?
+ dOEMDefined DWORD ?
+ wNominalValue WORD ?
+ELECTRICAL_CURRENT_PROBE_STRUC ENDS
+;----------------------------------------------------------------------------
+OUT_OF_BAND_REMOTE_ACCESS_STRUC STRUCT ; 30
+ DMIHDR_STRUC {,,}
+ bManufacturer BYTE ?
+ bConnections BYTE ?
+OUT_OF_BAND_REMOTE_ACCESS_STRUC ENDS
+;----------------------------------------------------------------------------
+BOOT_INTEGRITY_STRUC STRUCT ; 31
+ DMIHDR_STRUC {,,}
+ bChecksum BYTE ?
+ bReserved BYTE ?
+ wReserved WORD ?
+ dBISEntrySt DWORD ?
+ dBISEntryTt DWORD ?
+ qReserved QWORD ?
+ dReserved DWORD ?
+BOOT_INTEGRITY_STRUC ENDS
+;----------------------------------------------------------------------------
+SYS_BOOT_INFORMATION_STRUC STRUCT ; 32
+ DMIHDR_STRUC {,,}
+ bReserved BYTE 6 dup (0)
+ bBootStatus BYTE 10 dup (?)
+SYS_BOOT_INFORMATION_STRUC ENDS
+;----------------------------------------------------------------------------
+SIXTYFOUR_BIT_MEMORY_ARRAY_ERR_STRUC STRUCT ; 33
+ DMIHDR_STRUC {,,}
+ bErrtype BYTE ?
+ bErrGran BYTE ?
+ bErrOperation BYTE ?
+ dVendorSyndrome DWORD ?
+ qMemArrayErrAdd QWORD ?
+ qDevErrAdd QWORD ?
+ dErrResolution DWORD ?
+SIXTYFOUR_BIT_MEMORY_ARRAY_ERR_STRUC ENDS
+;----------------------------------------------------------------------------
+SIXTYFOUR_BIT_MEMORY_ARRAY_MAPPED_ADDRESS_STRUC STRUCT
+ DMIHDR_STRUC {,,}
+ qStartingAddress QWORD ?
+ qEndingAddress QWORD ?
+ wMemoryArrayHandle WORD ?
+ bPartionWidth BYTE ?
+SIXTYFOUR_BIT_MEMORY_ARRAY_MAPPED_ADDRESS_STRUC ENDS
+;----------------------------------------------------------------------------
+SIXTYFOUR_BIT_MEMORY_DEVICE_MAPPED_ADDRESS_STRUC STRUCT
+ DMIHDR_STRUC {,,}
+ qStartingAddress QWORD ?
+ qEndingAddress QWORD ?
+ wMemoryDeviceHandle WORD ?
+ wMemoryArrayMappedHandle WORD ?
+ bPartionRowPosition BYTE ?
+ bInterLeavePosition BYTE ?
+ bInterLeaveDataDepth BYTE ?
+SIXTYFOUR_BIT_MEMORY_DEVICE_MAPPED_ADDRESS_STRUC ENDS
+;----------------------------------------------------------------------------
+MANAGEMENT_DEVICE_STRUC STRUCT ; 34
+ DMIHDR_STRUC {,,}
+ bDescription BYTE ?
+ bManagementDevType BYTE ?
+ dAddress DWORD ?
+ bAddressType BYTE ?
+MANAGEMENT_DEVICE_STRUC ENDS
+;----------------------------------------------------------------------------
+MANAGEMENT_DEVICE_COMPONENT_STRUC STRUCT ; 35
+ DMIHDR_STRUC {,,}
+ bDescription BYTE ?
+ wManagementDevHandle WORD ?
+ wComponentHandle WORD ?
+ wThresholdHandle WORD ?
+MANAGEMENT_DEVICE_COMPONENT_STRUC ENDS
+;----------------------------------------------------------------------------
+MANAGEMENT_DEVICE_THRESHOLD_DATA_STRUC STRUCT ; 36
+ DMIHDR_STRUC {,,}
+ wLowerThresholdNonCritical WORD ?
+ wUpperThresholdNonCritical WORD ?
+ wLowerThresholdCritical WORD ?
+ wUpperThresholdCritical WORD ?
+ wLowerThresholdNonRecoverable WORD ?
+ wUpperThresholdNonRecoverable WORD ?
+MANAGEMENT_DEVICE_THRESHOLD_DATA_STRUC ENDS
+;----------------------------------------------------------------------------
+MEMORY_CHANNEL_STRUC STRUCT ; 37
+ DMIHDR_STRUC {,,}
+ bChannelType BYTE ?
+ bMaxChannelLoad BYTE ?
+ bMemDevCount BYTE ?
+MEMORY_CHANNEL_STRUC ENDS
+;----------------------------------------------------------------------------
+IPMI_DEVICE_INFORMATION_STRUC STRUCT ; 38
+ DMIHDR_STRUC {,,}
+ bInterfaceType BYTE ?
+ bIPMISpecRev BYTE ?
+ bI2CSlaveAddr BYTE ?
+ bNVStorageDeviceAddr BYTE ?
+ dBaseAddrLow DWORD ?
+ dBaseAddrHigh DWORD ?
+ bBaseAddrModIntInfo BYTE ?
+ bInterruptNumber BYTE ?
+IPMI_DEVICE_INFORMATION_STRUC ENDS
+;----------------------------------------------------------------------------
+SYSTEM_POWER_SUPPLY_STRUC STRUCT ; 39
+ DMIHDR_STRUC {,,}
+ bPowerUnitGroup BYTE ?
+ bLocation BYTE ?
+ bDeviceName BYTE ?
+ bManufacturer BYTE ?
+ bSerialNumber BYTE ?
+ bAssetTagNumber BYTE ?
+ bModelPartNumber BYTE ?
+ bRevisionLevel BYTE ?
+ wMaxCapacity WORD ?
+ wPowerSupplyChar WORD ?
+ wIpVoltageProbeHandle WORD ?
+ wCoolingDevHandle WORD ?
+ wIpCurrentProbeHandle WORD ?
+SYSTEM_POWER_SUPPLY_STRUC ENDS
+;----------------------------------------------------------------------------
+ADDITIONAL_INFO_STRUC STRUCT ; 40
+ DMIHDR_STRUC {,,}
+ bNumAdditionalInfoEntries BYTE ?
+ADDITIONAL_INFO_STRUC ENDS
+
+ADDITIONAL_INFO_ENTRY_STRUC STRUCT
+ bEntryLength BYTE ?
+ wRefHandle WORD ?
+ bRefOffset BYTE ?
+ bString BYTE ?
+ UNION
+ bValue BYTE ?
+ wValue WORD ?
+ dValue DWORD ?
+ ENDS
+ADDITIONAL_INFO_ENTRY_STRUC ENDS
+;----------------------------------------------------------------------------
+ONBOARD_DEVICE_EXTENDED_STRUC STRUCT ; 41
+ DMIHDR_STRUC {,,}
+ bRefDesignation BYTE ?
+ bDeviceType BYTE ?
+ bDeviceTypeInstance BYTE ?
+ wSegGroupNum WORD ?
+ bBusNum BYTE ?
+ bDevFuncNum BYTE ?
+ONBOARD_DEVICE_EXTENDED_STRUC ENDS
+;----------------------------------------------------------------------------
+INACTIVE_STRUC STRUCT ; 126
+ DMIHDR_STRUC {,,}
+INACTIVE_STRUC ENDS
+;----------------------------------------------------------------------------
+END_OF_TABLE_STRUC STRUCT ; 127
+ DMIHDR_STRUC {,,}
+END_OF_TABLE_STRUC ENDS
+
+;----------------------------------------------------------------------------
+; OEM DEFINED GPNV STRUCTURE
+;----------------------------------------------------------------------------
+OEM_GPNV_STRUC STRUCT
+ DMIHDR_STRUC {,,}
+ bAccessMethod BYTE ?
+ dAccessMethodAddress DWORD ?
+ wGPNVSize WORD ?
+ wNoOfDataIdDescriptor WORD ? ; #of dataid descritors present
+ ; for data id descriptor, see below
+OEM_GPNV_STRUC ENDS
+
+; details of the dataid descriptor
+DATAID_DESCRIPTOR_STRUC STRUCT
+ wDataId WORD ?
+ wHandle WORD ?
+ wSize WORD ?
+ wStartOffsetInGPNV WORD ?
+DATAID_DESCRIPTOR_STRUC ENDS
+
+;-----------------------------------------------------------------------;
+; INTEL ASF STRUCTURE
+;-----------------------------------------------------------------------;
+INTEL_ASF_STRUC STRUCT ; 129
+ DMIHDR_STRUC {,,}
+ bDescription BYTE ?
+ bStructVer BYTE ?
+ bStructID BYTE ?
+ bAttr BYTE ?
+INTEL_ASF_STRUC ENDS
+;----------------------------------------------------------------------------
+;****************************************************************************
+;****************************************************************************
+;** **
+;** (C)Copyright 1985-2013, American Megatrends, Inc. **
+;** **
+;** All Rights Reserved. **
+;** **
+;** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **
+;** **
+;** Phone: (770)-246-8600 **
+;** **
+;****************************************************************************
+;****************************************************************************
diff --git a/Board/EM/SMBIOS/SMBiosStaticData/Smbdesc.def b/Board/EM/SMBIOS/SMBiosStaticData/Smbdesc.def
new file mode 100644
index 0000000..c82ffec
--- /dev/null
+++ b/Board/EM/SMBIOS/SMBiosStaticData/Smbdesc.def
@@ -0,0 +1,2021 @@
+ ECHO --Including: SMBDESC.DEF
+
+;****************************************************************************
+;****************************************************************************
+;** **
+;** (C)Copyright 1985-2016, American Megatrends, Inc. **
+;** **
+;** All Rights Reserved. **
+;** **
+;** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **
+;** **
+;** Phone: (770)-246-8600 **
+;** **
+;****************************************************************************
+;****************************************************************************
+
+;****************************************************************************
+; $Header: /Alaska/BIN/Modules/SMBIOS/SmbiosStaticData/Smbdesc.def 24 4/07/16 5:55p Davidd $
+;
+; $Revision: 24 $
+;
+; $Date: 4/07/16 5:55p $
+;****************************************************************************
+; Revision History
+; ----------------
+; $Log: /Alaska/BIN/Modules/SMBIOS/SmbiosStaticData/Smbdesc.def $
+;
+; 24 4/07/16 5:55p Davidd
+; [TAG] EIP231162
+; [Category] New Feature
+; [Description] Merge Aptio V Smbios -09 changes for Aptio 4
+; 4.6.5.5_SMBIOS_40 release
+; [Files] Smbios.sdl
+; SmbiosDynamicData.h
+; Smbios.h
+; SmbiosStaticData.sdl
+; SmbiosStaticData.asm
+; SmbData.mac
+; SmbMacro.aid
+; SmbDesc.def
+;
+; 23 2/17/15 1:09p Davidd
+; [TAG] EIP205509
+; [Category] Improvement
+; [Description] Merge Aptio V Smbios EIP193807, 193858, 196901 changes
+; into Aptio 4 Smbios
+; [Files] SmbiosStaticData.asm
+; Smbdata.mac
+; Smbdesc.def
+;
+; 22 11/13/13 3:40p Davidd
+; [TAG] EIP143030
+; [Category] Improvement
+; [Description] Synchronize Aptio 4 Smbios with recent changes on Aptio
+; V Smbios for '4.6.5.1_SMBIOS_36' release
+; [Files] SmbiosStaticData.sdl
+; Smbdesc.def
+; SMBDATA.MAC
+;
+; 21 5/29/13 12:49p Davidd
+; [TAG] EIP124735
+; [Category] Spec Update
+; [Severity] Normal
+; [Description] SMBIOS 2.8.0 specification support for Aptio 4
+; [Files] Smb.equ
+; Smbdata.mac
+; Smbdesc.def
+; Smbstruc.def
+; Smbios.c
+; Smbios.h
+; SmbiosDynamicData.h
+;
+; 20 11/12/12 10:22a Davidd
+;
+; 19 9/13/12 12:12p Davidd
+; [TAG] EIP99388
+; [Category] Improvement
+; [Description] can not modified SMBIOS type 38 by
+; smbiosstaticdata.sdl
+; [Files] Smbdata.mac
+; Smbdesc.def
+;
+; 18 3/12/12 3:06p Davidd
+; [TAG] EIP82983
+; [Category] Improvement
+; [Description] Need Creating Tokens for Type1:UUID/Type11/Typ12/Type22
+; [Files] SmbiosStaticData.sdl
+; Smbdata.mac
+; Smbdesc.def
+;
+; 17 1/17/12 4:51p Davidd
+; [TAG] EIP78264
+; [Category] Improvement
+; [Description] SMBOS Type 2 (Spec 2.7.1) - No multiple type 2 support
+; [Files] Smbios.c
+; Smbios.h
+; Smbdata.mac
+; Smbdesc.def
+; SmbiosStaticData.sdl
+;
+; 16 2/09/11 10:35a Davidd
+; [TAG] EIP53081
+; [Category] Bug Fix
+; [Severity] Minor
+; [Symptom] Smbios Management Device (type 34) must be enabled in
+; order to
+; see System Power Supply (type 39)
+; [RootCause] Macro to create System Power Supply structure (type 39)
+; was grouped inside macro to create Smbios Management
+; Device
+; (type 34)
+; [Solution] Seperated Type 39 macro from 34.
+; [Files] SmbiosStaticData.asm
+; Smbdata.mac
+; Smbmacro.aid
+; Smbdesc.def
+;
+; 15 10/08/10 8:16p Davidd
+; [TAG] EIP43278
+;
+; [Category] Function Request
+;
+; [Severity] Normal
+;
+; [Description] SMBIOS 2.7 requirement
+;
+; [Files] Include\Protocol\Smbios.h
+; Include\Protocol\SmbiosDynamicData.h
+; Board\EM\SMBIOS\SMBiosStaticData\SmbiosStaticData.sdl
+; Board\EM\SMBIOS\SMBiosStaticData\SMBDATA.MAC
+; Board\EM\SMBIOS\SMBiosStaticData\SMBSTRUC.DEF
+; Board\EM\SMBIOS\SMBiosStaticData\SMBMACRO.AID
+; Board\EM\SMBIOS\SMBiosStaticData\Smbdesc.def
+; Board\EM\SMBIOS\SMBiosStaticData\SMB.EQU
+;
+; 14 4/06/10 11:02a Davidd
+; Removed type 13 porting. Type 13 structure now is dynamically created
+; if enabled.
+;
+; 13 6/02/09 4:46p Davidd
+; Updated AMI headers (EIP 22180)
+;
+; 12 2/06/09 5:14p Davidd
+; Added some additional language entries for BIOS Language Information
+; structure type 13
+;
+; 11 2/03/09 2:52p Davidd
+; Moved Bios Language Information structure 13 porting info from
+; SmbiosStaticData.sdl to here.
+;
+; 10 10/27/08 2:48p Davidd
+; More changes for new type 40 and 41 support.
+;
+; 9 10/13/08 12:00p Davidd
+; Changes made to support SMBIOS specification v2.5 and v2.6
+;
+; 8 4/04/08 5:17p Davidd
+; Cleaned up and removed NUMBER_OF_MEM_MODULE_x definitions. Number of
+; memory sockets for each memory array are now defined in
+; Ax_MEMORY_SOCKETS SDL token.
+;
+; 7 2/22/08 10:30a Davidd
+; Simplified the way the number of memory slots for each physical memory
+; array are defined.
+;
+; 6 2/01/08 5:25p Davidd
+;
+; 6 2/01/08 12:06p Davidd
+; Added porting info for SMBIOS type 17 to support multi memory arrays.
+;
+; 5 12/19/07 12:09p Davidd
+;
+; 4 11/21/07 11:22a Davidd
+;
+; 4 11/21/07 11:18a Davidd
+; Static data porting for Memory Type 16, Pointing Device Type 21,
+; Portable Battery Type 22 have been moved from SmbiosStaticData.sdl to
+; here per customer request.
+;
+; 3 12/15/06 5:33p Davidd
+; Code cleanup and reformatted to coding standard.
+;
+; 1 5/24/06 11:59a Fasihm
+; Initial check-in for the Santa Rosa Project. (Matanzas CRB) with
+; Crestline + ICH8M + Merom Processor.
+;
+; 2 9/15/05 3:31p Mirk
+;
+; 1 8/16/05 11:21a Mirk
+;
+; 2 5/31/05 12:05p Davidd
+; Made changes for NAPA platform.
+;
+; 1 4/29/05 2:15p Davidd
+; Initial checkin.
+;
+;****************************************************************************
+
+;----------------------------------------------------------------------------
+; INCLUDE equates.equ
+;----------------------------------------------------------------------------
+
+;!!NOTE!!
+; This file is used to port the static information required in the SMBIOS
+; Structures.
+;
+; While porting this file, please refer SMB.EQU for Enumerated Values.
+;
+; To dynamically update any structure you can add link to 'SMBIOSPostInitTable'
+; Refer to any of the current links for implementation detail.
+
+;----------------------------------------------------------------------------
+; Structure Type 0 : BIOS INFORMATION
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 1 : SYSTEM INFORMATION
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 2 : BASEBOARD INFORMATION
+;----------------------------------------------------------------------------
+; NOTE: For single board system (NUMBER_OF_BASEBOARDS = 1), for backward
+; compatibility, porting is done with SDL tokens in SmbiosStaticData.sdl.
+;
+; For multiple boards system (NUMBER_OF_BASEBOARDS > 1), porting is done
+; here instead.
+;
+; Syntax:
+; BASEBOARD_MANUFACTURER_1 DEFINE <To be filled by O.E.M.>
+; BASEBOARD_PRODUCT_1 DEFINE <To be filled by O.E.M.>
+; BASEBOARD_VERSION_1 DEFINE <To be filled by O.E.M.>
+; BASEBOARD_SERIAL_NUMBER_1 DEFINE <To be filled by O.E.M.>
+; BASEBOARD_ASSET_TAG_1 DEFINE <To be filled by O.E.M.>
+; BASEBOARD_FEATURE_FLAG_1 DEFINE <01h>
+; * Baseboard Feature Flags -> Bit 0 = Hosting board (ex. motherboard)
+; Bit 1 = Board requires at least one daughter board
+; or auxiliary card to function properly
+; Bit 2 = Board is removable
+; Bit 3 = Board is replaceable
+; Bit 4 = Board is hot swappable
+; Bit 7-5 = Reserved
+; BASEBOARD_LOCATION_1 DEFINE <To be filled by O.E.M.>
+; BASEBOARD_TYPE_1 DEFINE <0Ah>
+; * Baseboard Board Type -> 01h = Unknown
+; 02h = Other
+; 03h = Server Blade
+; 04h = Connectivity Switch
+; 05h = System Management Module
+; 06h = Processor Module
+; 07h = I/O Module
+; 08h = Memory Module
+; 09h = Daughter Board
+; 0Ah = Motherboard (includes processor, memory, and I/O)
+; 0Bh = Processor/Memory Module
+; 0Ch = Processor/IO Module
+; 0Dh = Interconnect Board
+;----------------------------------------------------------------------------
+ BASEBOARD_MANUFACTURER_1 DEFINE <To be filled by O.E.M. 1>
+ BASEBOARD_MANUFACTURER_2 DEFINE <To be filled by O.E.M. 2>
+ BASEBOARD_MANUFACTURER_3 DEFINE <To be filled by O.E.M. 3>
+ BASEBOARD_MANUFACTURER_4 DEFINE <To be filled by O.E.M. 4>
+ BASEBOARD_MANUFACTURER_5 DEFINE <To be filled by O.E.M. 5>
+
+ BASEBOARD_PRODUCT_1 DEFINE <To be filled by O.E.M. 1>
+ BASEBOARD_PRODUCT_2 DEFINE <To be filled by O.E.M. 2>
+ BASEBOARD_PRODUCT_3 DEFINE <To be filled by O.E.M. 3>
+ BASEBOARD_PRODUCT_4 DEFINE <To be filled by O.E.M. 4>
+ BASEBOARD_PRODUCT_5 DEFINE <To be filled by O.E.M. 5>
+
+ BASEBOARD_VERSION_1 DEFINE <To be filled by O.E.M. 1>
+ BASEBOARD_VERSION_2 DEFINE <To be filled by O.E.M. 2>
+ BASEBOARD_VERSION_3 DEFINE <To be filled by O.E.M. 3>
+ BASEBOARD_VERSION_4 DEFINE <To be filled by O.E.M. 4>
+ BASEBOARD_VERSION_5 DEFINE <To be filled by O.E.M. 5>
+
+ BASEBOARD_SERIAL_NUMBER_1 DEFINE <To be filled by O.E.M. 1>
+ BASEBOARD_SERIAL_NUMBER_2 DEFINE <To be filled by O.E.M. 2>
+ BASEBOARD_SERIAL_NUMBER_3 DEFINE <To be filled by O.E.M. 3>
+ BASEBOARD_SERIAL_NUMBER_4 DEFINE <To be filled by O.E.M. 4>
+ BASEBOARD_SERIAL_NUMBER_5 DEFINE <To be filled by O.E.M. 5>
+
+ BASEBOARD_ASSET_TAG_1 DEFINE <To be filled by O.E.M. 1>
+ BASEBOARD_ASSET_TAG_2 DEFINE <To be filled by O.E.M. 2>
+ BASEBOARD_ASSET_TAG_3 DEFINE <To be filled by O.E.M. 3>
+ BASEBOARD_ASSET_TAG_4 DEFINE <To be filled by O.E.M. 4>
+ BASEBOARD_ASSET_TAG_5 DEFINE <To be filled by O.E.M. 5>
+
+ BASEBOARD_FEATURE_FLAG_1 DEFINE <01h>
+ BASEBOARD_FEATURE_FLAG_2 DEFINE <01h>
+ BASEBOARD_FEATURE_FLAG_3 DEFINE <01h>
+ BASEBOARD_FEATURE_FLAG_4 DEFINE <01h>
+ BASEBOARD_FEATURE_FLAG_5 DEFINE <01h>
+
+ BASEBOARD_LOCATION_1 DEFINE <To be filled by O.E.M. 1>
+ BASEBOARD_LOCATION_2 DEFINE <To be filled by O.E.M. 2>
+ BASEBOARD_LOCATION_3 DEFINE <To be filled by O.E.M. 3>
+ BASEBOARD_LOCATION_4 DEFINE <To be filled by O.E.M. 4>
+ BASEBOARD_LOCATION_5 DEFINE <To be filled by O.E.M. 5>
+
+ BASEBOARD_TYPE_1 DEFINE <0Ah>
+ BASEBOARD_TYPE_2 DEFINE <0Ah>
+ BASEBOARD_TYPE_3 DEFINE <0Ah>
+ BASEBOARD_TYPE_4 DEFINE <0Ah>
+ BASEBOARD_TYPE_5 DEFINE <0Ah>
+
+;----------------------------------------------------------------------------
+; Structure Type 3 : SYSTEM ENCLOSURE OR CHASSIS
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 4 : PROCESSOR INFORMATION
+;----------------------------------------------------------------------------
+;
+; The processor information is defined in the following two macros
+; 1. PROCESSOR_INFO_n
+; 2. PROCESSOR_VOLTAGE_n
+; where n is the processor number
+; (n = 1,2,3,4... for system having support for 1,2,3,4... processors)
+;
+; Syntax of PROCESSOR_INFO_n macro
+; PROCESSOR_INFO_n DEFINE <String defining Slot, Maxm speed, Upgrade information>
+; where String defining Slot is a string
+; Maxm Speed is a number specifying speed in MHz
+;
+; PROCESSOR UPGRADE INFORMATION
+; Refer SMB.EQU file for Processor Upgrade information
+;
+; Syntax of PROCESSOR_VOLTAGE_n macro
+; PROCESSOR_VOLTAGE_n DEFINE <Format, List of Voltage capabilities>
+; Format can be either STANDARD or USER_DEFINED
+; If it is STANDARD, then the List of Voltage capabilities can have
+; more than one values e.g. VOLT_29 (2.9V), VOLT_33 (3.3V), etc.
+; If it is USER_DEFINED, then the List of Voltage capabilities can have
+; only one value and the value needs to be calculated according to the
+; following formula: Processor voltage * 10 i.e. if the processor
+; voltage is 2.9V, then this value should be 29 decimal or 13h
+; Select the number of processors supported in the motherboard.
+; note that the PROCESSOR_INFO_n and PROCESSOR_VOLTAGE_n macros are defined
+; for upto 4 processor. If the number of processors exceeds 4, then the
+; corresponding PROCESSOR_INFO_n and PROCESSOR_VOLTAGE_n macros need to
+; be defined accordingly
+;----------------------------------------------------------------------------
+
+;!!PORT!!
+ PROC_SOC_DESIG_1 DEFINE <CPU 1>
+ PROC_TYPE_1 DEFINE <CPU_CENTRAL_PROCESSOR>
+ PROC_FAMILY_1 DEFINE <FA_OTHER>
+ PROC_VOLTAGE_1 DEFINE <STANDARD, VOLT_33>
+ PROC_MAX_SPEED_1 DEFINE <0>
+ PROC_UPGRADE_1 DEFINE <UPG_OTHER>
+ PROC_SERIAL_NO_1 DEFINE <To Be Filled By O.E.M.>
+ PROC_ASSET_TAG_1 DEFINE <To Be Filled By O.E.M.>
+ PROC_PART_NO_1 DEFINE <To Be Filled By O.E.M.>
+ PROC_FAMILY_2_1 DEFINE <FA_OTHER>
+
+ PROC_SOC_DESIG_2 DEFINE <CPU 2>
+ PROC_TYPE_2 DEFINE <CPU_CENTRAL_PROCESSOR>
+ PROC_FAMILY_2 DEFINE <FA_OTHER>
+ PROC_VOLTAGE_2 DEFINE <STANDARD, VOLT_33>
+ PROC_MAX_SPEED_2 DEFINE <0>
+ PROC_UPGRADE_2 DEFINE <UPG_OTHER>
+ PROC_SERIAL_NO_2 DEFINE <To Be Filled By O.E.M.>
+ PROC_ASSET_TAG_2 DEFINE <To Be Filled By O.E.M.>
+ PROC_PART_NO_2 DEFINE <To Be Filled By O.E.M.>
+ PROC_FAMILY_2_2 DEFINE <FA_OTHER>
+
+ PROC_SOC_DESIG_3 DEFINE <CPU 3>
+ PROC_TYPE_3 DEFINE <CPU_CENTRAL_PROCESSOR>
+ PROC_FAMILY_3 DEFINE <FA_OTHER>
+ PROC_VOLTAGE_3 DEFINE <STANDARD, VOLT_33>
+ PROC_MAX_SPEED_3 DEFINE <0>
+ PROC_UPGRADE_3 DEFINE <UPG_OTHER>
+ PROC_SERIAL_NO_3 DEFINE <To Be Filled By O.E.M.>
+ PROC_ASSET_TAG_3 DEFINE <To Be Filled By O.E.M.>
+ PROC_PART_NO_3 DEFINE <To Be Filled By O.E.M.>
+ PROC_FAMILY_2_3 DEFINE <FA_OTHER>
+
+ PROC_SOC_DESIG_4 DEFINE <CPU 4>
+ PROC_TYPE_4 DEFINE <CPU_CENTRAL_PROCESSOR>
+ PROC_FAMILY_4 DEFINE <FA_OTHER>
+ PROC_VOLTAGE_4 DEFINE <STANDARD, VOLT_33>
+ PROC_MAX_SPEED_4 DEFINE <0>
+ PROC_UPGRADE_4 DEFINE <UPG_OTHER>
+ PROC_SERIAL_NO_4 DEFINE <To Be Filled By O.E.M.>
+ PROC_ASSET_TAG_4 DEFINE <To Be Filled By O.E.M.>
+ PROC_PART_NO_4 DEFINE <To Be Filled By O.E.M.>
+ PROC_FAMILY_2_4 DEFINE <FA_OTHER>
+
+;----------------------------------------------------------------------------
+; Structure Type 7: CACHE INFORMATION
+;----------------------------------------------------------------------------
+; Select the number of Caches present in the System. A value of 1 indicates
+; only L1 cache is present, a value of 2 indicates both L1 and L2 caches
+; are present, Note that these caches are internal or external to the processor.
+; The external cache (if present) is defined by EXTERNAL_CACHE_INFORMATION.
+;
+; Syntax:
+; PROCESSOR_CACHE_INFO_L1 <Maximum Cache Size, Installed Cache Size, Supported SRAM Type, Current SRAM Type>
+;
+; EXTERNAL_CACHE_INFO <Maximum Cache Size, Installed Cache Size, Supported SRAM Type, Current SRAM Type>
+;
+; * Maximum cache size and Installed cache size are WORD values.
+; Bit-15 = Granularity
+; 0/1 = granularity ios 1K/64K
+; Bit14-0 = Size
+; For example, 256k cahe can be represented as 256*1024 with granularity of 1K
+; OR as 8004h with granularity of 64k
+; * For Supported/Current SRAM Type refer to SMB.EQU File. It is described
+; in cache type equates
+;
+; Syntax:
+; PROCESSOR_CACHE_CONFIG_L1 <String, Operational Mode, Enable or Disabled at BOOT time,
+; Location relative to CPU, Socketed or Not Socketed, Cache Level Inoformation>
+;
+; EXTERNAL_CACHE_CFG <String, Operational Mode, Enable or Disabled at BOOT time, Location relative to CPU,
+; Socketed or Not Socketed, Cache Level Inoformation>
+;
+; * String -> This is a string describing the cache.
+; e.g. "L-1 Cache"
+; * Operational Mode -> Cache is Write back or write thru, etc...
+; For more detail search for cache operational mode
+; in Structure Type 7 details in SMB.EQU
+; * Cache Enbled/Disable -> (at Boot time)
+; For more detail search for Cache Enable or disable
+; in structure Type 7 details in SMB.EQU
+; * Location Relative to CPU -> Cache location is internal or external relative to CPU
+; For more detail search for Cache Location in
+; structure Type 7 details in SMB.EQU
+; * Cache Socketed/Not Socketed -> Cache is socketed or Not socketed
+; For more detail search for Cache socketed in structure
+; Type 7 details in SMB.EQU
+; * Cache Level Information -> L1, L2 etc...
+; For more detail search for level inofrmation in structure
+; Type 7 details in SMB.EQU
+; Syntax:
+; PROCESSOR_CACHE_CHAR_L1 <Cache speed, Error Correction Type, System Cache Type, Cache Associativity>
+;
+; EXTERNAL_CACHE_CHAR <Cache speed, Error Correction Type, System Cache Type, Cache Associativity>
+;
+; * Cache Speed -> Cache Module speed in ns(nano second)
+; the value is 0 if it is unknown
+; * Error Correction Type -> Single-bit, Multi-bit, etc...
+; For more detail search for Cache Error Correction in
+; structure Type-7 details in SMB.EQU
+; * System Cache Type -> Unified and etc...
+; For more detail search for System Cache Type in structure
+; Type-7 details in SMB.EQU
+; * Cache Associativity -> One-way, Two-way Associativity and etc..
+; For more detail search for Cache Associativity in structure
+; Type-7 details in SMB.EQU
+;----------------------------------------------------------------------------
+; Use MKF_NUMBER_OF_PROC_CACHE to get the No. of Processor Cache in the system.
+
+;!!PORT!!
+
+ PROC_CACHE_INFO_L1 DEFINE <0, 0, CH_UNKNOWN, CH_UNKNOWN>
+ PROC_CACHE_CFG_L1 DEFINE <L1-Cache, CACHE_DISABLED, COM_UNKNOWN, CCL_INTERNAL, CS_NOT_SOCKETED, CL_L1>
+ PROC_CACHE_CHAR_L1 DEFINE <0, SR_UNKNOWN, SCT_UNKNOWN, CA_UNKNOWN>
+
+ PROC_CACHE_INFO_L2 DEFINE <0, 0, CH_UNKNOWN, CH_UNKNOWN>
+ PROC_CACHE_CFG_L2 DEFINE <L2-Cache, CACHE_DISABLED, COM_UNKNOWN, CCL_INTERNAL, CS_NOT_SOCKETED, CL_L2>
+ PROC_CACHE_CHAR_L2 DEFINE <0, SR_UNKNOWN, SCT_UNKNOWN, CA_UNKNOWN>
+
+ PROC_CACHE_INFO_L3 DEFINE <0, 0, CH_UNKNOWN, CH_UNKNOWN>
+ PROC_CACHE_CFG_L3 DEFINE <L3-Cache, CACHE_DISABLED, COM_UNKNOWN, CCL_INTERNAL, CS_NOT_SOCKETED, CL_L3>
+ PROC_CACHE_CHAR_L3 DEFINE <0, SR_UNKNOWN, SCT_UNKNOWN, CA_UNKNOWN>
+
+ EXTERNAL_CACHE_INFO DEFINE <32*1024, 32*1024, 00, 00>
+ EXTERNAL_CACHE_CFG DEFINE <L2-Cache, 00, 00, 00, 00, CL_L2>
+ EXTERNAL_CACHE_CHAR DEFINE <40, 00, 00, 00>
+
+
+;----------------------------------------------------------------------------
+; Structure Type 8 : PORT CONNECTOR INFORMATION
+;----------------------------------------------------------------------------
+
+;<Internal_ref_designator, Internal_connector_type, External_ref_designator,
+; External_connector_type, Port_type>
+
+;!!PORT!!
+ EXT_CONNECTOR_1 DEFINE <J1A1,00H,PS2Mouse,0FH,0EH>
+ EXT_CONNECTOR_2 DEFINE <J1A1,00H,Keyboard,0FH,0DH>
+ EXT_CONNECTOR_3 DEFINE <J2A1,00H,TV Out,1DH,0FFH>
+ EXT_CONNECTOR_4 DEFINE <J2A2A,00H,COM A,08H,09H>
+ EXT_CONNECTOR_5 DEFINE <J2A2B,00H,Video,07H,1CH>
+ EXT_CONNECTOR_6 DEFINE <J3A1,00H,USB1,12H,10H>
+ EXT_CONNECTOR_7 DEFINE <J3A1,00H,USB2,12H,10H>
+ EXT_CONNECTOR_8 DEFINE <J3A1,00H,USB3,12H,10H>
+ EXT_CONNECTOR_9 DEFINE <J5A1,00H,LAN,0BH,1FH>
+ EXT_CONNECTOR_10 DEFINE <J5A1,00H,USB4,12H,10H>
+ EXT_CONNECTOR_11 DEFINE <J5A1,00H,USB5,12H,10H>
+
+;<Internal_ref_designator, Internal_connector_type, Internal_port_type>
+
+;!!PORT!!
+ INT_CONNECTOR_1 DEFINE <J9A1 - TPM HDR,0FFH,0FFH>
+ INT_CONNECTOR_2 DEFINE <J9C1 - PCIE DOCKING CONN,0FFH,0FFH>
+ INT_CONNECTOR_3 DEFINE <J2B3 - CPU FAN,0FFH,0FFH>
+ INT_CONNECTOR_4 DEFINE <J6C2 - EXT HDMI,0FFH,0FFH>
+ INT_CONNECTOR_5 DEFINE <J3C1 - GMCH FAN,0FFH,0FFH>
+ INT_CONNECTOR_6 DEFINE <J1D1 - ITP,0FFH,0FFH>
+ INT_CONNECTOR_7 DEFINE <J9E2 - MDC INTPSR,0FFH,0FFH>
+ INT_CONNECTOR_8 DEFINE <J9E4 - MDC INTPSR,0FFH,0FFH>
+ INT_CONNECTOR_9 DEFINE <J9E3 - LPC HOT DOCKING,0FFH,0FFH>
+ INT_CONNECTOR_10 DEFINE <J9E1 - SCAN MATRIX,0FFH,0FFH>
+ INT_CONNECTOR_11 DEFINE <J9G1 - LPC SIDE BAND,0FFH,0FFH>
+ INT_CONNECTOR_12 DEFINE <J8F1 - UNIFIED,0FFH,0FFH>
+ INT_CONNECTOR_13 DEFINE <J6F1 - LVDS,0FFH,0FFH>
+ INT_CONNECTOR_14 DEFINE <J2F1 - LAI FAN,0FFH,0FFH>
+ INT_CONNECTOR_15 DEFINE <J2G1 - GFX VID,0FFH,0FFH>
+ INT_CONNECTOR_16 DEFINE <J1G6 - AC JACK,0FFH,0FFH>
+ INT_CONNECTOR_17 DEFINE <J1G7 - BATT B,0FFH,0FFH>
+ INT_CONNECTOR_18 DEFINE <J1H1 - BATT A,0FFH,0FFH>
+ INT_CONNECTOR_19 DEFINE <J7H2 - SATA PWR,0FFH,0FFH>
+ INT_CONNECTOR_20 DEFINE <J7H1 - SATA PORT2,0FFH,0FFH>
+ INT_CONNECTOR_21 DEFINE <J7J3 - SATA PORT1,0FFH,0FFH>
+ INT_CONNECTOR_22 DEFINE <J8J1 - SATA PORT0,0FFH,0FFH>
+ INT_CONNECTOR_23 DEFINE <J7J4 - PATA,016H,0FFH>
+ INT_CONNECTOR_24 DEFINE <J7J5 - EMA,0FFH,0FFH>
+ INT_CONNECTOR_25 DEFINE <J4J1 - ATX PWR,0FFH,0FFH>
+ INT_CONNECTOR_26 DEFINE <J4J2 - PATA PWR,0FFH,0FFH>
+
+;----------------------------------------------------------------------------
+; Structure Type 9 : SYSTEM SLOT INFORMATION
+;----------------------------------------------------------------------------
+; The following information is needed only if SYS_SLOT_INFO = Present
+; Syntax:
+; SYSTEM_SLOT_INFO_1 DEFINE <String, Slot Type, Slot Data bus Width,
+; Slot usage, Slot length, Slot ID>
+; * String -> System Slot designator string.
+; e.g. "PCI1", "ISA1" etc..
+; * System Slot Type -> PCI, ISA, VESA, AGP, etc...
+; For more detail search for System Slot
+; Type equates in structure Type 9, refer SMB.EQU
+; * Slot Data Bus Width -> 8bit, 16bit etc..
+; For more detail search for System Slot Data Bus width
+; equates in structure Type 9, refer SMB.EQU
+; * Slot Usage -> Available, in use etc..
+; For more detail search for System Slot Usage
+; equates in structure TYPE 9 , refer SMB.EQU
+; This is a Bit-field value.
+; * Slot Length -> Half length, full length etc...
+; For more detail search for System Slot Length
+; equates in structure Type 9, refer SMB.EQU
+; * Slot ID -> The slot ID field provides a mechanism to
+; Correlate the physical attributes of the slot to
+; its logical access method
+;
+; * SYSTEM_SLOT_CHAR_1 DEFINE <Slot Characteristic 1, SlotCharacteristic 2>
+; Slot Characteristc 1 -> For more detail search for system slot
+; characteristic-1 in structure type 9, SMB.EQU
+; Slot Characteristc 2 -> For more detail search for system slot
+; characteristic-2 in structure type 9, SMB.EQU
+; * SEGGRP_BUS_DEV_FUNC_1 DEFINE <Segment Group Number, Bus Number, Device Function Number>
+; Segment Group Number -> Segment Group Number defined in the PCI Firmware Spec.
+; Bus Number -> Bus Number
+; Device Function Number -> Device / Function Number
+;----------------------------------------------------------------------------
+
+;!!NOTE!!
+; If AGP slot exists in the system then enter the AGP_BRIDGE_BUS_DEV_FUNC_NO in SMBIOS.SDL
+
+;!!PORT!!
+ SYSTEM_SLOT_INFO_1 DEFINE <J6B2, SYS_SLOT_PCIE, DBW_16X, SCU_IN_USE, SL_LONG_LENGTH, 0>
+ SYSTEM_SLOT_CHAR_1 DEFINE <SCH_33V, SCH_SHARED, SCH_PME>
+ SEGGRP_BUS_DEV_FUNC_1 DEFINE <0, 0, 8>
+
+ SYSTEM_SLOT_INFO_2 DEFINE <J6B1, SYS_SLOT_PCIE, DBW_1X, SCU_IN_USE, SL_SHORT_LENGTH, 1>
+ SYSTEM_SLOT_CHAR_2 DEFINE <SCH_33V, SCH_PME, SCH_SHARED>
+ SEGGRP_BUS_DEV_FUNC_2 DEFINE <0, 0, 0E3h>
+
+ SYSTEM_SLOT_INFO_3 DEFINE <J6D1, SYS_SLOT_PCIE, DBW_1X, SCU_IN_USE, SL_SHORT_LENGTH, 2>
+ SYSTEM_SLOT_CHAR_3 DEFINE <SCH_33V, SCH_PME, SCH_SHARED>
+ SEGGRP_BUS_DEV_FUNC_3 DEFINE <0, 0, 0E4h>
+
+ SYSTEM_SLOT_INFO_4 DEFINE <J7B1, SYS_SLOT_PCIE, DBW_1X, SCU_IN_USE, SL_SHORT_LENGTH, 3>
+ SYSTEM_SLOT_CHAR_4 DEFINE <SCH_33V, SCH_PME, SCH_SHARED>
+ SEGGRP_BUS_DEV_FUNC_4 DEFINE <0, 0, 0E5h>
+
+ SYSTEM_SLOT_INFO_5 DEFINE <J8B4, SYS_SLOT_PCIE, DBW_1X, SCU_IN_USE, SL_SHORT_LENGTH, 4>
+ SYSTEM_SLOT_CHAR_5 DEFINE <SCH_33V, SCH_PME, SCH_SHARED>
+ SEGGRP_BUS_DEV_FUNC_5 DEFINE <0, 0, 0E6h>
+
+ SYSTEM_SLOT_INFO_6 DEFINE <J8D1, SYS_SLOT_PCIE, DBW_1X, SCU_IN_USE, SL_SHORT_LENGTH, 5>
+ SYSTEM_SLOT_CHAR_6 DEFINE <SCH_33V, SCH_PME, SCH_SHARED>
+ SEGGRP_BUS_DEV_FUNC_6 DEFINE <0, 0, 0E7h>
+
+ SYSTEM_SLOT_INFO_7 DEFINE <J8B3, SYS_SLOT_PCI, DBW_32BIT, SCU_IN_USE, SL_SHORT_LENGTH, 6>
+ SYSTEM_SLOT_CHAR_7 DEFINE <SCH_33V, SCH_PME, SCH_SHARED>
+ SEGGRP_BUS_DEV_FUNC_7 DEFINE <0, 0, 0F0h>
+
+;----------------------------------------------------------------------------
+; Structure Type 10 : ON BOARD DEVICES INFORMATION
+;----------------------------------------------------------------------------
+; The following information is needed only if ONBOARD_DEVICE_INFO = Present
+; Syntax:
+; ONBOARD_DEVICE_1 DEFINE <Enabled or Disabled, Onboard Device Type, Descrition String>
+; * Onboard device status -> Describes the status(enabled/disabled) of on board device
+; * On board device Type -> Video, Audio, SCSI etc...
+; For more detail search for On-board device
+; Type equates in structure Type 10, refer SMB.EQU
+; * Description String -> Describes the on board device.
+; e.g."Video", "Audio" etc..
+;----------------------------------------------------------------------------
+
+;!!PORT!!
+ ONBOARD_DEVICE_1 DEFINE <ENABLED, OBD_VIDEO, To Be Filled By O.E.M.>
+ ONBOARD_DEVICE_2 DEFINE <ENABLED, OBD_ETHERNET,To Be Filled By O.E.M.>
+ ONBOARD_DEVICE_3 DEFINE <ENABLED, OBD_OTHER, Onboard 1394>
+
+;----------------------------------------------------------------------------
+; Structure Type 11 : OEM STRINGS INFORMATION
+;----------------------------------------------------------------------------
+; The following information is needed only if OEM_STRING_INFO = Present
+; Syntax:
+; OEM_STRING_1 DEFINE <String>
+; * String -> Identifies the OEM specific string.
+; e.g. "SMBIOS2.3 support with HP extension"
+;----------------------------------------------------------------------------
+
+;!!PORT!!
+IFDEF MKF_OEM_STRING_INFO
+IF (MKF_OEM_STRING_INFO NE 0)
+ OEM_STRING_1 DEFINE MKF_OEM_STRING_1
+ OEM_STRING_2 DEFINE MKF_OEM_STRING_2
+ OEM_STRING_3 DEFINE MKF_OEM_STRING_3
+ OEM_STRING_4 DEFINE MKF_OEM_STRING_4
+ OEM_STRING_5 DEFINE MKF_OEM_STRING_5
+ OEM_STRING_6 DEFINE MKF_OEM_STRING_6
+ENDIF
+ENDIF
+
+;----------------------------------------------------------------------------
+; Structure Type 12 : SYSTEM CONFIGURATION STRINGS INFORMATION
+;----------------------------------------------------------------------------
+; The following information is needed only if SYSTEM_CONFIG_OPTION_INFO = Present
+; Syntax:
+; SYSTEM_CONFIG_STRING_1 DEFINE <String>
+; * String -> Identifies the System Configuration Information string
+; e.g. Jumper setting information on platform and etc...
+;----------------------------------------------------------------------------
+
+;!!PORT!!
+;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+;!!!!!!!!!!!!!!!! MAKE SURE THE DESCRIPTION DOES NOT EXCEED 64 CHARACTERS !!!!!!!!!!!!!!!!!!!!!!!!!!!
+;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+;; < 1 2 3 4 5 6 >
+;; <0123456789012345678901234567890123456789012345678901234567890123>
+IFDEF MKF_SYSTEM_CONFIG_OPTION_INFO
+IF (MKF_SYSTEM_CONFIG_OPTION_INFO NE 0)
+ SYSTEM_CONFIG_STRING_1 DEFINE MKF_SYSTEM_CONFIG_STRING_1
+ SYSTEM_CONFIG_STRING_2 DEFINE MKF_SYSTEM_CONFIG_STRING_2
+ SYSTEM_CONFIG_STRING_3 DEFINE MKF_SYSTEM_CONFIG_STRING_3
+ SYSTEM_CONFIG_STRING_4 DEFINE MKF_SYSTEM_CONFIG_STRING_4
+ SYSTEM_CONFIG_STRING_5 DEFINE MKF_SYSTEM_CONFIG_STRING_5
+ENDIF
+ENDIF
+
+;----------------------------------------------------------------------------
+; Structure Type 14: GROUP ASSOCIATION INFORMATION
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 15: EVENT LOG INFORMATION
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 16: PHYSICAL MEMORY ARRAY INFORMATION
+;----------------------------------------------------------------------------
+; Syntax:
+; ARRAY_LOC_1 DEFINE <Memory Array Location>
+; * Memory Array Location -> 01h = Other
+; 02h = Unknown
+; 03h = System Board or Motherboard
+; 04h = ISA add-on card
+; 05h = EISA add-on card
+; 06h = PCI add-on card
+; 07h = MCA add-on card
+; 08h = PCMCIA add-on card
+; 09h = Proprietary add-on card
+; 0Ah = NuBus
+; A0h = PC-98/C20 add-on card
+; A1h = PC-98/C24 add-on card
+; A2h = PC-98/E add-on card
+; A3h = PC-98/Local Bus add-on card
+; ARRAY_USE_1 DEFINE <Memory Array Use>
+; * Memory Array Use -> 01h = Other
+; 02h = Unknown
+; 03h = System memory
+; 04h = Video memory
+; 05h = Flash memory
+; 06h = Non-volatile RAM
+; 07h = Cache memory
+; ARRAY_ERROR_COR_1 DEFINE <Memory Array Error Corection Types>
+; * Memory Array Error Corection Types -> 01h = Other
+; 02h = Unknown
+; 03h = None
+; 04h = Parity
+; 05h = Single-bit ECC
+; 06h = Multi-bit ECC
+; 07h = CRC
+; MAX_MEM_CAP_1 DEFINE <Maximum Capacity>
+; * Maximum Capacity -> XXXXXXXXh = Maximum memory capacity in kilobytes
+; 80000000h = unknown
+; EXT_MAX_MEM_CAP_1 DEFINE <Extended Maximum Capacity> - Valid only when MAX_MEM_CAP_X = 80000000h
+; * Extended Maximum Capacity -> XXXXXXXXXXXXXXXXh = Maximum memory capacity in bytes
+; (when MAX_MEM_CAP_X = 80000000h)
+; 0h = When MAX_MEM_CAP_X <> 80000000h
+;----------------------------------------------------------------------------
+ ARRAY_LOC_1 DEFINE <03h>
+ ARRAY_LOC_2 DEFINE <03h>
+ ARRAY_LOC_3 DEFINE <03h>
+ ARRAY_LOC_4 DEFINE <03h>
+ ARRAY_LOC_5 DEFINE <03h>
+
+ ARRAY_USE_1 DEFINE <03h>
+ ARRAY_USE_2 DEFINE <03h>
+ ARRAY_USE_3 DEFINE <03h>
+ ARRAY_USE_4 DEFINE <03h>
+ ARRAY_USE_5 DEFINE <03h>
+
+ ARRAY_ERROR_COR_1 DEFINE <03h>
+ ARRAY_ERROR_COR_2 DEFINE <03h>
+ ARRAY_ERROR_COR_3 DEFINE <03h>
+ ARRAY_ERROR_COR_4 DEFINE <03h>
+ ARRAY_ERROR_COR_5 DEFINE <03h>
+
+ MAX_MEM_CAP_1 DEFINE <00800000h>
+ MAX_MEM_CAP_2 DEFINE <00800000h>
+ MAX_MEM_CAP_3 DEFINE <00800000h>
+ MAX_MEM_CAP_4 DEFINE <00800000h>
+ MAX_MEM_CAP_5 DEFINE <00800000h>
+
+ EXT_MAX_MEM_CAP_1 DEFINE <0>
+ EXT_MAX_MEM_CAP_2 DEFINE <0>
+ EXT_MAX_MEM_CAP_3 DEFINE <0>
+ EXT_MAX_MEM_CAP_4 DEFINE <0>
+ EXT_MAX_MEM_CAP_5 DEFINE <0>
+
+;----------------------------------------------------------------------------
+; Structure Type 17: MEMORY DEVICE INFORMATION
+;----------------------------------------------------------------------------
+; Syntax:
+; A1_DATAWIDTH -> Identifies the data width, in bits, of this
+; momory device
+;
+; A1_FORMFACTOR -> Byte value - identifies the form factor of this
+; memory device
+; 01h = Other
+; 02h = Unknown
+; 03h = SIMM
+; 04h = SIP
+; 05h = Chip
+; 06h = DIP
+; 07h = ZIP
+; 08h = Proprietary Card
+; 09h = DIMM
+; 0Ah = TSOP
+; 0Bh = Rows of chips
+; 0Ch = RIMM
+; 0Dh = SODIMM
+; 0Eh = SRIMM
+; 0Fh = FB-DIMM
+;
+; A1_MEMORYTYPE -> Identifies the type of memory used in this device
+; 01h = Other
+; 02h = Unknown
+; 03h = DRAM
+; 04h = EDRAM
+; 05h = VRAM
+; 06h = SRAM
+; 07h = RAM
+; 08h = ROM
+; 09h = FLASH
+; 0Ah = EEPROM
+; 0Bh = FEPROM
+; 0Ch = EPROM
+; 0Dh = CDRAM
+; 0Eh = 3DRAM
+; 0Fh = SDRAM
+; 10h = SGRAM
+; 11h = RDRAM
+; 12h = DDR
+; 13h = DDR2
+; 14h = DDR2 FB-DIMM
+; 18h = DDR3
+; 19h = FBD2
+;
+; A1_TYPEDETAIL -> Additional detail on the memory device type.
+; Multiple bits are set if more than one attributes applies
+; Bit 0 - Reserved, set to 0
+; Bit 1 - Other
+; Bit 2 - Unknown
+; Bit 3 - Fast-paged
+; Bit 4 - Static Column
+; Bit 5 - Pseudo-static
+; Bit 6 - RAMBUS
+; Bit 7 - Synchronous
+; Bit 8 - CMOS
+; Bit 9 - EDO
+; Bit 10 - Window DRAM
+; Bit 11 - Cache DRAM
+; Bit 12 - Non-volatile
+; Bit 13 - Registered (Buffered)
+; Bit 14 - Unbuffered (Unregistered)
+; Bit 15 - LRDIMM
+;
+; A1_ATTRIBUTES -> Attributes.
+; Bits 3-0: Rank (value = 0 for unknown)
+; Bits 7-4: Reserved
+;
+; A1_DEVICE_1 DEFINE <Device Locator String, Bank Locator String, Manufacturer String,
+; Serial Number String, Asset Tag String, Part Number String>
+;
+; * A1_DEVICE_1 Memory array #1, Device #1
+; * Device Locator String -> Identifies the physically-labeled socket or board position where
+; the memory device is located.
+; e.g."DIMM0"
+; * Bank Locator String -> Identifies the physically-labeled bank where the memory device is located.
+; e.g."BANK0"
+; * Manufacturer String -> Identifies the manufacturer of this memory device
+; * Serial Number String -> Identifies the serial number of this memory device
+; * Asset Tag String -> Identifies the Asset Tag String of this memory device
+; * Part Number String -> Identifies the part number of this memory device
+;----------------------------------------------------------------------------
+
+;Number of device info structurs are equal to the no of memory modules specified.
+;!!PORT!!
+
+; Memory Array #1
+ A1_DATAWIDTH EQU 0040h
+ A1_FORMFACTOR EQU 09h
+ A1_MEMORYTYPE EQU 13h
+ A1_TYPEDETAIL EQU 0080h
+ A1_ATTRIBUTES EQU 0
+
+ A1_DEVICE_1 DEFINE <A1_DIMM0,A1_BANK0,A1_Manufacturer0,A1_SerNum0,A1_AssetTagNum0,Array1_PartNumber0>
+ A1_DEVICE_2 DEFINE <A1_DIMM1,A1_BANK1,A1_Manufacturer1,A1_SerNum1,A1_AssetTagNum1,Array1_PartNumber1>
+ A1_DEVICE_3 DEFINE <A1_DIMM2,A1_BANK2,A1_Manufacturer2,A1_SerNum2,A1_AssetTagNum2,Array1_PartNumber2>
+ A1_DEVICE_4 DEFINE <A1_DIMM3,A1_BANK3,A1_Manufacturer3,A1_SerNum3,A1_AssetTagNum3,Array1_PartNumber3>
+ A1_DEVICE_5 DEFINE <A1_DIMM4,A1_BANK4,A1_Manufacturer4,A1_SerNum4,A1_AssetTagNum4,Array1_PartNumber4>
+ A1_DEVICE_6 DEFINE <A1_DIMM5,A1_BANK5,A1_Manufacturer5,A1_SerNum5,A1_AssetTagNum5,Array1_PartNumber5>
+ A1_DEVICE_7 DEFINE <A1_DIMM6,A1_BANK6,A1_Manufacturer6,A1_SerNum6,A1_AssetTagNum6,Array1_PartNumber6>
+ A1_DEVICE_8 DEFINE <A1_DIMM7,A1_BANK7,A1_Manufacturer7,A1_SerNum7,A1_AssetTagNum7,Array1_PartNumber7>
+ A1_DEVICE_9 DEFINE <A1_DIMM8,A1_BANK8,A1_Manufacturer8,A1_SerNum8,A1_AssetTagNum8,Array1_PartNumber8>
+ A1_DEVICE_10 DEFINE <A1_DIMM9,A1_BANK9,A1_Manufacturer9,A1_SerNum9,A1_AssetTagNum9,Array1_PartNumber9>
+ A1_DEVICE_11 DEFINE <A1_DIMM10,A1_BANK10,A1_Manufacturer10,A1_SerNum10,A1_AssetTagNum10,Array1_PartNumber10>
+ A1_DEVICE_12 DEFINE <A1_DIMM11,A1_BANK11,A1_Manufacturer11,A1_SerNum11,A1_AssetTagNum11,Array1_PartNumber11>
+ A1_DEVICE_13 DEFINE <A1_DIMM12,A1_BANK12,A1_Manufacturer12,A1_SerNum12,A1_AssetTagNum12,Array1_PartNumber12>
+ A1_DEVICE_14 DEFINE <A1_DIMM13,A1_BANK13,A1_Manufacturer13,A1_SerNum13,A1_AssetTagNum13,Array1_PartNumber13>
+ A1_DEVICE_15 DEFINE <A1_DIMM14,A1_BANK14,A1_Manufacturer14,A1_SerNum14,A1_AssetTagNum14,Array1_PartNumber14>
+ A1_DEVICE_16 DEFINE <A1_DIMM15,A1_BANK15,A1_Manufacturer15,A1_SerNum15,A1_AssetTagNum15,Array1_PartNumber15>
+ A1_DEVICE_17 DEFINE <A1_DIMM16,A1_BANK16,A1_Manufacturer16,A1_SerNum16,A1_AssetTagNum16,Array1_PartNumber16>
+ A1_DEVICE_18 DEFINE <A1_DIMM17,A1_BANK17,A1_Manufacturer17,A1_SerNum17,A1_AssetTagNum17,Array1_PartNumber17>
+ A1_DEVICE_19 DEFINE <A1_DIMM18,A1_BANK18,A1_Manufacturer18,A1_SerNum18,A1_AssetTagNum18,Array1_PartNumber18>
+ A1_DEVICE_20 DEFINE <A1_DIMM19,A1_BANK19,A1_Manufacturer19,A1_SerNum19,A1_AssetTagNum19,Array1_PartNumber19>
+ A1_DEVICE_21 DEFINE <A1_DIMM20,A1_BANK20,A1_Manufacturer20,A1_SerNum20,A1_AssetTagNum20,Array1_PartNumber20>
+ A1_DEVICE_22 DEFINE <A1_DIMM21,A1_BANK21,A1_Manufacturer21,A1_SerNum21,A1_AssetTagNum21,Array1_PartNumber21>
+ A1_DEVICE_23 DEFINE <A1_DIMM22,A1_BANK22,A1_Manufacturer22,A1_SerNum22,A1_AssetTagNum22,Array1_PartNumber22>
+ A1_DEVICE_24 DEFINE <A1_DIMM23,A1_BANK23,A1_Manufacturer23,A1_SerNum23,A1_AssetTagNum23,Array1_PartNumber23>
+ A1_DEVICE_25 DEFINE <A1_DIMM24,A1_BANK24,A1_Manufacturer24,A1_SerNum24,A1_AssetTagNum24,Array1_PartNumber24>
+ A1_DEVICE_26 DEFINE <A1_DIMM25,A1_BANK25,A1_Manufacturer25,A1_SerNum25,A1_AssetTagNum25,Array1_PartNumber25>
+ A1_DEVICE_27 DEFINE <A1_DIMM26,A1_BANK26,A1_Manufacturer26,A1_SerNum26,A1_AssetTagNum26,Array1_PartNumber26>
+ A1_DEVICE_28 DEFINE <A1_DIMM27,A1_BANK27,A1_Manufacturer27,A1_SerNum27,A1_AssetTagNum27,Array1_PartNumber27>
+ A1_DEVICE_29 DEFINE <A1_DIMM28,A1_BANK28,A1_Manufacturer28,A1_SerNum28,A1_AssetTagNum28,Array1_PartNumber28>
+ A1_DEVICE_30 DEFINE <A1_DIMM29,A1_BANK29,A1_Manufacturer29,A1_SerNum29,A1_AssetTagNum29,Array1_PartNumber29>
+ A1_DEVICE_31 DEFINE <A1_DIMM30,A1_BANK30,A1_Manufacturer30,A1_SerNum30,A1_AssetTagNum30,Array1_PartNumber30>
+ A1_DEVICE_32 DEFINE <A1_DIMM31,A1_BANK31,A1_Manufacturer31,A1_SerNum31,A1_AssetTagNum31,Array1_PartNumber31>
+
+; Memory Array #2
+ A2_DATAWIDTH EQU 0040h
+ A2_FORMFACTOR EQU 09h
+ A2_MEMORYTYPE EQU 13h
+ A2_TYPEDETAIL EQU 0080h
+ A2_ATTRIBUTES EQU 0
+
+ A2_DEVICE_1 DEFINE <A2_DIMM0,A2_BANK0,A2_Manufacturer0,A2_SerNum0,A2_AssetTagNum0,Array2_PartNumber0>
+ A2_DEVICE_2 DEFINE <A2_DIMM1,A2_BANK1,A2_Manufacturer1,A2_SerNum1,A2_AssetTagNum1,Array2_PartNumber1>
+ A2_DEVICE_3 DEFINE <A2_DIMM2,A2_BANK2,A2_Manufacturer2,A2_SerNum2,A2_AssetTagNum2,Array2_PartNumber2>
+ A2_DEVICE_4 DEFINE <A2_DIMM3,A2_BANK3,A2_Manufacturer3,A2_SerNum3,A2_AssetTagNum3,Array2_PartNumber3>
+ A2_DEVICE_5 DEFINE <A2_DIMM4,A2_BANK4,A2_Manufacturer4,A2_SerNum4,A2_AssetTagNum4,Array2_PartNumber4>
+ A2_DEVICE_6 DEFINE <A2_DIMM5,A2_BANK5,A2_Manufacturer5,A2_SerNum5,A2_AssetTagNum5,Array2_PartNumber5>
+ A2_DEVICE_7 DEFINE <A2_DIMM6,A2_BANK6,A2_Manufacturer6,A2_SerNum6,A2_AssetTagNum6,Array2_PartNumber6>
+ A2_DEVICE_8 DEFINE <A2_DIMM7,A2_BANK7,A2_Manufacturer7,A2_SerNum7,A2_AssetTagNum7,Array2_PartNumber7>
+ A2_DEVICE_9 DEFINE <A2_DIMM8,A2_BANK8,A2_Manufacturer8,A2_SerNum8,A2_AssetTagNum8,Array2_PartNumber8>
+ A2_DEVICE_10 DEFINE <A2_DIMM9,A2_BANK9,A2_Manufacturer9,A2_SerNum9,A2_AssetTagNum9,Array2_PartNumber9>
+ A2_DEVICE_11 DEFINE <A2_DIMM10,A2_BANK10,A2_Manufacturer10,A2_SerNum10,A2_AssetTagNum10,Array2_PartNumber10>
+ A2_DEVICE_12 DEFINE <A2_DIMM11,A2_BANK11,A2_Manufacturer11,A2_SerNum11,A2_AssetTagNum11,Array2_PartNumber11>
+ A2_DEVICE_13 DEFINE <A2_DIMM12,A2_BANK12,A2_Manufacturer12,A2_SerNum12,A2_AssetTagNum12,Array2_PartNumber12>
+ A2_DEVICE_14 DEFINE <A2_DIMM13,A2_BANK13,A2_Manufacturer13,A2_SerNum13,A2_AssetTagNum13,Array2_PartNumber13>
+ A2_DEVICE_15 DEFINE <A2_DIMM14,A2_BANK14,A2_Manufacturer14,A2_SerNum14,A2_AssetTagNum14,Array2_PartNumber14>
+ A2_DEVICE_16 DEFINE <A2_DIMM15,A2_BANK15,A2_Manufacturer15,A2_SerNum15,A2_AssetTagNum15,Array2_PartNumber15>
+ A2_DEVICE_17 DEFINE <A2_DIMM16,A2_BANK16,A2_Manufacturer16,A2_SerNum16,A2_AssetTagNum16,Array2_PartNumber16>
+ A2_DEVICE_18 DEFINE <A2_DIMM17,A2_BANK17,A2_Manufacturer17,A2_SerNum17,A2_AssetTagNum17,Array2_PartNumber17>
+ A2_DEVICE_19 DEFINE <A2_DIMM18,A2_BANK18,A2_Manufacturer18,A2_SerNum18,A2_AssetTagNum18,Array2_PartNumber18>
+ A2_DEVICE_20 DEFINE <A2_DIMM19,A2_BANK19,A2_Manufacturer19,A2_SerNum19,A2_AssetTagNum19,Array2_PartNumber19>
+ A2_DEVICE_21 DEFINE <A2_DIMM20,A2_BANK20,A2_Manufacturer20,A2_SerNum20,A2_AssetTagNum20,Array2_PartNumber20>
+ A2_DEVICE_22 DEFINE <A2_DIMM21,A2_BANK21,A2_Manufacturer21,A2_SerNum21,A2_AssetTagNum21,Array2_PartNumber21>
+ A2_DEVICE_23 DEFINE <A2_DIMM22,A2_BANK22,A2_Manufacturer22,A2_SerNum22,A2_AssetTagNum22,Array2_PartNumber22>
+ A2_DEVICE_24 DEFINE <A2_DIMM23,A2_BANK23,A2_Manufacturer23,A2_SerNum23,A2_AssetTagNum23,Array2_PartNumber23>
+ A2_DEVICE_25 DEFINE <A2_DIMM24,A2_BANK24,A2_Manufacturer24,A2_SerNum24,A2_AssetTagNum24,Array2_PartNumber24>
+ A2_DEVICE_26 DEFINE <A2_DIMM25,A2_BANK25,A2_Manufacturer25,A2_SerNum25,A2_AssetTagNum25,Array2_PartNumber25>
+ A2_DEVICE_27 DEFINE <A2_DIMM26,A2_BANK26,A2_Manufacturer26,A2_SerNum26,A2_AssetTagNum26,Array2_PartNumber26>
+ A2_DEVICE_28 DEFINE <A2_DIMM27,A2_BANK27,A2_Manufacturer27,A2_SerNum27,A2_AssetTagNum27,Array2_PartNumber27>
+ A2_DEVICE_29 DEFINE <A2_DIMM28,A2_BANK28,A2_Manufacturer28,A2_SerNum28,A2_AssetTagNum28,Array2_PartNumber28>
+ A2_DEVICE_30 DEFINE <A2_DIMM29,A2_BANK29,A2_Manufacturer29,A2_SerNum29,A2_AssetTagNum29,Array2_PartNumber29>
+ A2_DEVICE_31 DEFINE <A2_DIMM30,A2_BANK30,A2_Manufacturer30,A2_SerNum30,A2_AssetTagNum30,Array2_PartNumber30>
+ A2_DEVICE_32 DEFINE <A2_DIMM31,A2_BANK31,A2_Manufacturer31,A2_SerNum31,A2_AssetTagNum31,Array2_PartNumber31>
+
+; Memory Array #3
+ A3_DATAWIDTH EQU 0040h
+ A3_FORMFACTOR EQU 09h
+ A3_MEMORYTYPE EQU 13h
+ A3_TYPEDETAIL EQU 0080h
+ A3_ATTRIBUTES EQU 0
+
+ A3_DEVICE_1 DEFINE <A3_DIMM0,A3_BANK0,A3_Manufacturer0,A3_SerNum0,A3_AssetTagNum0,Array3_PartNumber0>
+ A3_DEVICE_2 DEFINE <A3_DIMM1,A3_BANK1,A3_Manufacturer1,A3_SerNum1,A3_AssetTagNum1,Array3_PartNumber1>
+ A3_DEVICE_3 DEFINE <A3_DIMM2,A3_BANK2,A3_Manufacturer2,A3_SerNum2,A3_AssetTagNum2,Array3_PartNumber2>
+ A3_DEVICE_4 DEFINE <A3_DIMM3,A3_BANK3,A3_Manufacturer3,A3_SerNum3,A3_AssetTagNum3,Array3_PartNumber3>
+ A3_DEVICE_5 DEFINE <A3_DIMM4,A3_BANK4,A3_Manufacturer4,A3_SerNum4,A3_AssetTagNum4,Array3_PartNumber4>
+ A3_DEVICE_6 DEFINE <A3_DIMM5,A3_BANK5,A3_Manufacturer5,A3_SerNum5,A3_AssetTagNum5,Array3_PartNumber5>
+ A3_DEVICE_7 DEFINE <A3_DIMM6,A3_BANK6,A3_Manufacturer6,A3_SerNum6,A3_AssetTagNum6,Array3_PartNumber6>
+ A3_DEVICE_8 DEFINE <A3_DIMM7,A3_BANK7,A3_Manufacturer7,A3_SerNum7,A3_AssetTagNum7,Array3_PartNumber7>
+ A3_DEVICE_9 DEFINE <A3_DIMM8,A3_BANK8,A3_Manufacturer8,A3_SerNum8,A3_AssetTagNum8,Array3_PartNumber8>
+ A3_DEVICE_10 DEFINE <A3_DIMM9,A3_BANK9,A3_Manufacturer9,A3_SerNum9,A3_AssetTagNum9,Array3_PartNumber9>
+ A3_DEVICE_11 DEFINE <A3_DIMM10,A3_BANK10,A3_Manufacturer10,A3_SerNum10,A3_AssetTagNum10,Array3_PartNumber10>
+ A3_DEVICE_12 DEFINE <A3_DIMM11,A3_BANK11,A3_Manufacturer11,A3_SerNum11,A3_AssetTagNum11,Array3_PartNumber11>
+ A3_DEVICE_13 DEFINE <A3_DIMM12,A3_BANK12,A3_Manufacturer12,A3_SerNum12,A3_AssetTagNum12,Array3_PartNumber12>
+ A3_DEVICE_14 DEFINE <A3_DIMM13,A3_BANK13,A3_Manufacturer13,A3_SerNum13,A3_AssetTagNum13,Array3_PartNumber13>
+ A3_DEVICE_15 DEFINE <A3_DIMM14,A3_BANK14,A3_Manufacturer14,A3_SerNum14,A3_AssetTagNum14,Array3_PartNumber14>
+ A3_DEVICE_16 DEFINE <A3_DIMM15,A3_BANK15,A3_Manufacturer15,A3_SerNum15,A3_AssetTagNum15,Array3_PartNumber15>
+ A3_DEVICE_17 DEFINE <A3_DIMM16,A3_BANK16,A3_Manufacturer16,A3_SerNum16,A3_AssetTagNum16,Array3_PartNumber16>
+ A3_DEVICE_18 DEFINE <A3_DIMM17,A3_BANK17,A3_Manufacturer17,A3_SerNum17,A3_AssetTagNum17,Array3_PartNumber17>
+ A3_DEVICE_19 DEFINE <A3_DIMM18,A3_BANK18,A3_Manufacturer18,A3_SerNum18,A3_AssetTagNum18,Array3_PartNumber18>
+ A3_DEVICE_20 DEFINE <A3_DIMM19,A3_BANK19,A3_Manufacturer19,A3_SerNum19,A3_AssetTagNum19,Array3_PartNumber19>
+ A3_DEVICE_21 DEFINE <A3_DIMM20,A3_BANK20,A3_Manufacturer20,A3_SerNum20,A3_AssetTagNum20,Array3_PartNumber20>
+ A3_DEVICE_22 DEFINE <A3_DIMM21,A3_BANK21,A3_Manufacturer21,A3_SerNum21,A3_AssetTagNum21,Array3_PartNumber21>
+ A3_DEVICE_23 DEFINE <A3_DIMM22,A3_BANK22,A3_Manufacturer22,A3_SerNum22,A3_AssetTagNum22,Array3_PartNumber22>
+ A3_DEVICE_24 DEFINE <A3_DIMM23,A3_BANK23,A3_Manufacturer23,A3_SerNum23,A3_AssetTagNum23,Array3_PartNumber23>
+ A3_DEVICE_25 DEFINE <A3_DIMM24,A3_BANK24,A3_Manufacturer24,A3_SerNum24,A3_AssetTagNum24,Array3_PartNumber24>
+ A3_DEVICE_26 DEFINE <A3_DIMM25,A3_BANK25,A3_Manufacturer25,A3_SerNum25,A3_AssetTagNum25,Array3_PartNumber25>
+ A3_DEVICE_27 DEFINE <A3_DIMM26,A3_BANK26,A3_Manufacturer26,A3_SerNum26,A3_AssetTagNum26,Array3_PartNumber26>
+ A3_DEVICE_28 DEFINE <A3_DIMM27,A3_BANK27,A3_Manufacturer27,A3_SerNum27,A3_AssetTagNum27,Array3_PartNumber27>
+ A3_DEVICE_29 DEFINE <A3_DIMM28,A3_BANK28,A3_Manufacturer28,A3_SerNum28,A3_AssetTagNum28,Array3_PartNumber28>
+ A3_DEVICE_30 DEFINE <A3_DIMM29,A3_BANK29,A3_Manufacturer29,A3_SerNum29,A3_AssetTagNum29,Array3_PartNumber29>
+ A3_DEVICE_31 DEFINE <A3_DIMM30,A3_BANK30,A3_Manufacturer30,A3_SerNum30,A3_AssetTagNum30,Array3_PartNumber30>
+ A3_DEVICE_32 DEFINE <A3_DIMM31,A3_BANK31,A3_Manufacturer31,A3_SerNum31,A3_AssetTagNum31,Array3_PartNumber31>
+
+; Memory Array #4
+ A4_DATAWIDTH EQU 0040h
+ A4_FORMFACTOR EQU 09h
+ A4_MEMORYTYPE EQU 13h
+ A4_TYPEDETAIL EQU 0080h
+ A4_ATTRIBUTES EQU 0
+
+ A4_DEVICE_1 DEFINE <A4_DIMM0,A4_BANK0,A4_Manufacturer0,A4_SerNum0,A4_AssetTagNum0,Array4_PartNumber0>
+ A4_DEVICE_2 DEFINE <A4_DIMM1,A4_BANK1,A4_Manufacturer1,A4_SerNum1,A4_AssetTagNum1,Array4_PartNumber1>
+ A4_DEVICE_3 DEFINE <A4_DIMM2,A4_BANK2,A4_Manufacturer2,A4_SerNum2,A4_AssetTagNum2,Array4_PartNumber2>
+ A4_DEVICE_4 DEFINE <A4_DIMM3,A4_BANK3,A4_Manufacturer3,A4_SerNum3,A4_AssetTagNum3,Array4_PartNumber3>
+ A4_DEVICE_5 DEFINE <A4_DIMM4,A4_BANK4,A4_Manufacturer4,A4_SerNum4,A4_AssetTagNum4,Array4_PartNumber4>
+ A4_DEVICE_6 DEFINE <A4_DIMM5,A4_BANK5,A4_Manufacturer5,A4_SerNum5,A4_AssetTagNum5,Array4_PartNumber5>
+ A4_DEVICE_7 DEFINE <A4_DIMM6,A4_BANK6,A4_Manufacturer6,A4_SerNum6,A4_AssetTagNum6,Array4_PartNumber6>
+ A4_DEVICE_8 DEFINE <A4_DIMM7,A4_BANK7,A4_Manufacturer7,A4_SerNum7,A4_AssetTagNum7,Array4_PartNumber7>
+ A4_DEVICE_9 DEFINE <A4_DIMM8,A4_BANK8,A4_Manufacturer8,A4_SerNum8,A4_AssetTagNum8,Array4_PartNumber8>
+ A4_DEVICE_10 DEFINE <A4_DIMM9,A4_BANK9,A4_Manufacturer9,A4_SerNum9,A4_AssetTagNum9,Array4_PartNumber9>
+ A4_DEVICE_11 DEFINE <A4_DIMM10,A4_BANK10,A4_Manufacturer10,A4_SerNum10,A4_AssetTagNum10,Array4_PartNumber10>
+ A4_DEVICE_12 DEFINE <A4_DIMM11,A4_BANK11,A4_Manufacturer11,A4_SerNum11,A4_AssetTagNum11,Array4_PartNumber11>
+ A4_DEVICE_13 DEFINE <A4_DIMM12,A4_BANK12,A4_Manufacturer12,A4_SerNum12,A4_AssetTagNum12,Array4_PartNumber12>
+ A4_DEVICE_14 DEFINE <A4_DIMM13,A4_BANK13,A4_Manufacturer13,A4_SerNum13,A4_AssetTagNum13,Array4_PartNumber13>
+ A4_DEVICE_15 DEFINE <A4_DIMM14,A4_BANK14,A4_Manufacturer14,A4_SerNum14,A4_AssetTagNum14,Array4_PartNumber14>
+ A4_DEVICE_16 DEFINE <A4_DIMM15,A4_BANK15,A4_Manufacturer15,A4_SerNum15,A4_AssetTagNum15,Array4_PartNumber15>
+ A4_DEVICE_17 DEFINE <A4_DIMM16,A4_BANK16,A4_Manufacturer16,A4_SerNum16,A4_AssetTagNum16,Array4_PartNumber16>
+ A4_DEVICE_18 DEFINE <A4_DIMM17,A4_BANK17,A4_Manufacturer17,A4_SerNum17,A4_AssetTagNum17,Array4_PartNumber17>
+ A4_DEVICE_19 DEFINE <A4_DIMM18,A4_BANK18,A4_Manufacturer18,A4_SerNum18,A4_AssetTagNum18,Array4_PartNumber18>
+ A4_DEVICE_20 DEFINE <A4_DIMM19,A4_BANK19,A4_Manufacturer19,A4_SerNum19,A4_AssetTagNum19,Array4_PartNumber19>
+ A4_DEVICE_21 DEFINE <A4_DIMM20,A4_BANK20,A4_Manufacturer20,A4_SerNum20,A4_AssetTagNum20,Array4_PartNumber20>
+ A4_DEVICE_22 DEFINE <A4_DIMM21,A4_BANK21,A4_Manufacturer21,A4_SerNum21,A4_AssetTagNum21,Array4_PartNumber21>
+ A4_DEVICE_23 DEFINE <A4_DIMM22,A4_BANK22,A4_Manufacturer22,A4_SerNum22,A4_AssetTagNum22,Array4_PartNumber22>
+ A4_DEVICE_24 DEFINE <A4_DIMM23,A4_BANK23,A4_Manufacturer23,A4_SerNum23,A4_AssetTagNum23,Array4_PartNumber23>
+ A4_DEVICE_25 DEFINE <A4_DIMM24,A4_BANK24,A4_Manufacturer24,A4_SerNum24,A4_AssetTagNum24,Array4_PartNumber24>
+ A4_DEVICE_26 DEFINE <A4_DIMM25,A4_BANK25,A4_Manufacturer25,A4_SerNum25,A4_AssetTagNum25,Array4_PartNumber25>
+ A4_DEVICE_27 DEFINE <A4_DIMM26,A4_BANK26,A4_Manufacturer26,A4_SerNum26,A4_AssetTagNum26,Array4_PartNumber26>
+ A4_DEVICE_28 DEFINE <A4_DIMM27,A4_BANK27,A4_Manufacturer27,A4_SerNum27,A4_AssetTagNum27,Array4_PartNumber27>
+ A4_DEVICE_29 DEFINE <A4_DIMM28,A4_BANK28,A4_Manufacturer28,A4_SerNum28,A4_AssetTagNum28,Array4_PartNumber28>
+ A4_DEVICE_30 DEFINE <A4_DIMM29,A4_BANK29,A4_Manufacturer29,A4_SerNum29,A4_AssetTagNum29,Array4_PartNumber29>
+ A4_DEVICE_31 DEFINE <A4_DIMM30,A4_BANK30,A4_Manufacturer30,A4_SerNum30,A4_AssetTagNum30,Array4_PartNumber30>
+ A4_DEVICE_32 DEFINE <A4_DIMM31,A4_BANK31,A4_Manufacturer31,A4_SerNum31,A4_AssetTagNum31,Array4_PartNumber31>
+
+;----------------------------------------------------------------------------
+; Structure Type 18: MEMORY ERROR INFORMATION
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 19: MEMORY ARRAY MAPPED ADDRESS INFORMATION
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 20: MEMORY DEVICE MAPPED ADDRESS INFORMATION
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 21: BUILT-IN POINTING DEVICE INFORMATION
+;----------------------------------------------------------------------------
+; Syntax:
+; POINTING_DEVICE_TYPE_1 DEFINE <Pointing Device Type>
+; * Pointing Device Type -> 01h = Other
+; 02h = Unknown
+; 03h = Mouse
+; 04h = Track Ball
+; 05h = Track Point
+; 06h = Glide Point
+; 07h = Touch Pad
+; 08h = Touch Screen
+; 09h = Optical Sensor
+; POINTING_DEVICE_INTERFACE_1 DEFINE <Pointing Device Interface>
+; * Pointing Device Interface -> 01h = Other
+; 02h = Unknown
+; 03h = Serial
+; 04h = PS/2
+; 05h = Infrared
+; 06h = HP-HIL
+; 07h = Bus Mouse
+; 08h = ADB (Apple Desktop Bus)
+; A0h = Bus Mouse DB-9
+; A1h = Bus Mouse Micro-DIN
+; A2h = USB
+; POINTING_DEVICE_NUM_BUTTONS_1 DEFINE <Number of Buttons>
+;----------------------------------------------------------------------------
+ POINTING_DEVICE_TYPE_1 DEFINE <03h>
+ POINTING_DEVICE_TYPE_2 DEFINE <07h>
+ POINTING_DEVICE_TYPE_3 DEFINE <08h>
+ POINTING_DEVICE_TYPE_4 DEFINE <04h>
+ POINTING_DEVICE_TYPE_5 DEFINE <05h>
+
+ POINTING_DEVICE_INTERFACE_1 DEFINE <04h>
+ POINTING_DEVICE_INTERFACE_2 DEFINE <03h>
+ POINTING_DEVICE_INTERFACE_3 DEFINE <07h>
+ POINTING_DEVICE_INTERFACE_4 DEFINE <0A2h>
+ POINTING_DEVICE_INTERFACE_5 DEFINE <01h>
+
+ POINTING_DEVICE_NUM_BUTTONS_1 DEFINE <03h>
+ POINTING_DEVICE_NUM_BUTTONS_2 DEFINE <03h>
+ POINTING_DEVICE_NUM_BUTTONS_3 DEFINE <03h>
+ POINTING_DEVICE_NUM_BUTTONS_4 DEFINE <03h>
+ POINTING_DEVICE_NUM_BUTTONS_5 DEFINE <03h>
+
+;----------------------------------------------------------------------------
+; Structure Type 22: PORTABLE BATTERY INFORMATION
+;----------------------------------------------------------------------------
+; Syntax:
+; PORT_BAT_LOCATION_1 DEFINE <Location of the battery>
+; PORT_BAT_MANUFACTURER_1 DEFINE <Battery Manufacturer>
+; PORT_BAT_MANUFACTURE_DATE_1 DEFINE <Battery Manufacturer Date>
+; PORT_BAT_SERIAL_NUMBER_1 DEFINE <Battery Serial Number>
+; PORT_BAT_DEVICE_NAME_1 DEFINE <Battery Device Name>
+; DEVICE_CHEMISTRY_1 DEFINE <Battery Device Chemistry>
+; * Battery Device Chemistry -> 01h = Other
+; 02h = Unknown
+; 03h = Lead Acid
+; 04h = Nickel Cadmium
+; 05h = Nickel Metal Hydride
+; 06h = Lithium-ion
+; 07h = Zinc Air
+; 08h = Lithium Polymer
+; DESIGN_CAPACITY_1 DEFINE <Design Capacity of the Battery in mWatt-hours>
+; DESIGN_VOLTAGE_1 DEFINE <Design Voltage of the Battery in mVolts>
+; PORT_BAT_SBDS_VER_NO_1 DEFINE <Smart Battery Data Specification Version Number>
+; MAX_ERROR_IN_BAT_DATA_1 DEFINE <Maximum Error (as percentage in the range 0-100)>
+; PORT_BAT_SBDS_SERIAL_NO_1 DEFINE <16-bit value - Identifies battery's serial number>
+; PORT_BAT_SBDS_MAN_DATE_1 DEFINE <Cell Pack Manufacture Date>
+; * Cell Pack Manufacture Date -> Bits 15:9 Year, biased by 1980, in the range 0 to 127
+; Bits 8:5 Month, in the range 1 to 12
+; Bits 4:0 Date, in the range 1 to 31
+; PORT_BAT_SBDS_DEV_CHEM_1 DEFINE <Battery Chemistry>
+; DESIGN_CAPACITY_MULTIPLIER_1 DEFINE <Multiplication Factor of the Design Capacity>
+; OEM_SPECIFIC_1 DEFINE <OEM or BIOS Vendor-specific Information>
+;----------------------------------------------------------------------------
+IFDEF MKF_PORTABLE_BATTERY_INFO
+IF (MKF_PORTABLE_BATTERY_INFO NE 0)
+ PORT_BAT_LOCATION_1 DEFINE MKF_PORT_BAT_LOCATION_1
+ PORT_BAT_LOCATION_2 DEFINE MKF_PORT_BAT_LOCATION_2
+ PORT_BAT_LOCATION_3 DEFINE MKF_PORT_BAT_LOCATION_3
+ PORT_BAT_LOCATION_4 DEFINE MKF_PORT_BAT_LOCATION_4
+ PORT_BAT_LOCATION_5 DEFINE MKF_PORT_BAT_LOCATION_5
+
+ PORT_BAT_MANUFACTURER_1 DEFINE MKF_PORT_BAT_MANUFACTURER_1
+ PORT_BAT_MANUFACTURER_2 DEFINE MKF_PORT_BAT_MANUFACTURER_2
+ PORT_BAT_MANUFACTURER_3 DEFINE MKF_PORT_BAT_MANUFACTURER_3
+ PORT_BAT_MANUFACTURER_4 DEFINE MKF_PORT_BAT_MANUFACTURER_4
+ PORT_BAT_MANUFACTURER_5 DEFINE MKF_PORT_BAT_MANUFACTURER_5
+
+ PORT_BAT_MANUFACTURE_DATE_1 DEFINE MKF_PORT_BAT_MANUFACTURE_DATE_1
+ PORT_BAT_MANUFACTURE_DATE_2 DEFINE MKF_PORT_BAT_MANUFACTURE_DATE_2
+ PORT_BAT_MANUFACTURE_DATE_3 DEFINE MKF_PORT_BAT_MANUFACTURE_DATE_3
+ PORT_BAT_MANUFACTURE_DATE_4 DEFINE MKF_PORT_BAT_MANUFACTURE_DATE_4
+ PORT_BAT_MANUFACTURE_DATE_5 DEFINE MKF_PORT_BAT_MANUFACTURE_DATE_5
+
+ PORT_BAT_SERIAL_NUMBER_1 DEFINE MKF_PORT_BAT_SERIAL_NUMBER_1
+ PORT_BAT_SERIAL_NUMBER_2 DEFINE MKF_PORT_BAT_SERIAL_NUMBER_2
+ PORT_BAT_SERIAL_NUMBER_3 DEFINE MKF_PORT_BAT_SERIAL_NUMBER_3
+ PORT_BAT_SERIAL_NUMBER_4 DEFINE MKF_PORT_BAT_SERIAL_NUMBER_4
+ PORT_BAT_SERIAL_NUMBER_5 DEFINE MKF_PORT_BAT_SERIAL_NUMBER_5
+
+ PORT_BAT_DEVICE_NAME_1 DEFINE MKF_PORT_BAT_DEVICE_NAME_1
+ PORT_BAT_DEVICE_NAME_2 DEFINE MKF_PORT_BAT_DEVICE_NAME_2
+ PORT_BAT_DEVICE_NAME_3 DEFINE MKF_PORT_BAT_DEVICE_NAME_3
+ PORT_BAT_DEVICE_NAME_4 DEFINE MKF_PORT_BAT_DEVICE_NAME_4
+ PORT_BAT_DEVICE_NAME_5 DEFINE MKF_PORT_BAT_DEVICE_NAME_5
+
+ DEVICE_CHEMISTRY_1 DEFINE MKF_DEVICE_CHEMISTRY_1
+ DEVICE_CHEMISTRY_2 DEFINE MKF_DEVICE_CHEMISTRY_2
+ DEVICE_CHEMISTRY_3 DEFINE MKF_DEVICE_CHEMISTRY_3
+ DEVICE_CHEMISTRY_4 DEFINE MKF_DEVICE_CHEMISTRY_4
+ DEVICE_CHEMISTRY_5 DEFINE MKF_DEVICE_CHEMISTRY_5
+
+ DESIGN_CAPACITY_1 DEFINE MKF_DESIGN_CAPACITY_1
+ DESIGN_CAPACITY_2 DEFINE MKF_DESIGN_CAPACITY_2
+ DESIGN_CAPACITY_3 DEFINE MKF_DESIGN_CAPACITY_3
+ DESIGN_CAPACITY_4 DEFINE MKF_DESIGN_CAPACITY_4
+ DESIGN_CAPACITY_5 DEFINE MKF_DESIGN_CAPACITY_5
+
+ DESIGN_VOLTAGE_1 DEFINE MKF_DESIGN_VOLTAGE_1
+ DESIGN_VOLTAGE_2 DEFINE MKF_DESIGN_VOLTAGE_2
+ DESIGN_VOLTAGE_3 DEFINE MKF_DESIGN_VOLTAGE_3
+ DESIGN_VOLTAGE_4 DEFINE MKF_DESIGN_VOLTAGE_4
+ DESIGN_VOLTAGE_5 DEFINE MKF_DESIGN_VOLTAGE_5
+
+ PORT_BAT_SBDS_VER_NO_1 DEFINE MKF_PORT_BAT_SBDS_VER_NO_1
+ PORT_BAT_SBDS_VER_NO_2 DEFINE MKF_PORT_BAT_SBDS_VER_NO_2
+ PORT_BAT_SBDS_VER_NO_3 DEFINE MKF_PORT_BAT_SBDS_VER_NO_3
+ PORT_BAT_SBDS_VER_NO_4 DEFINE MKF_PORT_BAT_SBDS_VER_NO_4
+ PORT_BAT_SBDS_VER_NO_5 DEFINE MKF_PORT_BAT_SBDS_VER_NO_5
+
+ MAX_ERROR_IN_BAT_DATA_1 DEFINE MKF_MAX_ERROR_IN_BAT_DATA_1
+ MAX_ERROR_IN_BAT_DATA_2 DEFINE MKF_MAX_ERROR_IN_BAT_DATA_2
+ MAX_ERROR_IN_BAT_DATA_3 DEFINE MKF_MAX_ERROR_IN_BAT_DATA_3
+ MAX_ERROR_IN_BAT_DATA_4 DEFINE MKF_MAX_ERROR_IN_BAT_DATA_4
+ MAX_ERROR_IN_BAT_DATA_5 DEFINE MKF_MAX_ERROR_IN_BAT_DATA_5
+
+ PORT_BAT_SBDS_SERIAL_NO_1 DEFINE MKF_PORT_BAT_SBDS_SERIAL_NO_1
+ PORT_BAT_SBDS_SERIAL_NO_2 DEFINE MKF_PORT_BAT_SBDS_SERIAL_NO_2
+ PORT_BAT_SBDS_SERIAL_NO_3 DEFINE MKF_PORT_BAT_SBDS_SERIAL_NO_3
+ PORT_BAT_SBDS_SERIAL_NO_4 DEFINE MKF_PORT_BAT_SBDS_SERIAL_NO_4
+ PORT_BAT_SBDS_SERIAL_NO_5 DEFINE MKF_PORT_BAT_SBDS_SERIAL_NO_5
+
+ PORT_BAT_SBDS_MAN_DATE_1 DEFINE MKF_PORT_BAT_SBDS_MAN_DATE_1
+ PORT_BAT_SBDS_MAN_DATE_2 DEFINE MKF_PORT_BAT_SBDS_MAN_DATE_2
+ PORT_BAT_SBDS_MAN_DATE_3 DEFINE MKF_PORT_BAT_SBDS_MAN_DATE_3
+ PORT_BAT_SBDS_MAN_DATE_4 DEFINE MKF_PORT_BAT_SBDS_MAN_DATE_4
+ PORT_BAT_SBDS_MAN_DATE_5 DEFINE MKF_PORT_BAT_SBDS_MAN_DATE_5
+
+ PORT_BAT_SBDS_DEV_CHEM_1 DEFINE MKF_PORT_BAT_SBDS_DEV_CHEM_1
+ PORT_BAT_SBDS_DEV_CHEM_2 DEFINE MKF_PORT_BAT_SBDS_DEV_CHEM_2
+ PORT_BAT_SBDS_DEV_CHEM_3 DEFINE MKF_PORT_BAT_SBDS_DEV_CHEM_3
+ PORT_BAT_SBDS_DEV_CHEM_4 DEFINE MKF_PORT_BAT_SBDS_DEV_CHEM_4
+ PORT_BAT_SBDS_DEV_CHEM_5 DEFINE MKF_PORT_BAT_SBDS_DEV_CHEM_5
+
+ DESIGN_CAPACITY_MULTIPLIER_1 DEFINE MKF_DESIGN_CAPACITY_MULTIPLIER_1
+ DESIGN_CAPACITY_MULTIPLIER_2 DEFINE MKF_DESIGN_CAPACITY_MULTIPLIER_2
+ DESIGN_CAPACITY_MULTIPLIER_3 DEFINE MKF_DESIGN_CAPACITY_MULTIPLIER_3
+ DESIGN_CAPACITY_MULTIPLIER_4 DEFINE MKF_DESIGN_CAPACITY_MULTIPLIER_4
+ DESIGN_CAPACITY_MULTIPLIER_5 DEFINE MKF_DESIGN_CAPACITY_MULTIPLIER_5
+
+ OEM_SPECIFIC_1 DEFINE MKF_OEM_SPECIFIC_1
+ OEM_SPECIFIC_2 DEFINE MKF_OEM_SPECIFIC_2
+ OEM_SPECIFIC_3 DEFINE MKF_OEM_SPECIFIC_3
+ OEM_SPECIFIC_4 DEFINE MKF_OEM_SPECIFIC_4
+ OEM_SPECIFIC_5 DEFINE MKF_OEM_SPECIFIC_5
+ENDIF
+ENDIF
+
+;----------------------------------------------------------------------------
+; Structure Type 23: SYSTEM RESET INFORMATION
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; RESET_CAPABILITIES : Identifies the system reset capabilities for the system
+;----------------------------------------------------------------------------
+
+;!!PORT!!
+ RESET_CAPABILITIES = 00h
+
+;----------------------------------------------------------------------------
+; RESET_COUNT : Identifies the number of automatic system resets since
+; the last intentional reset
+; FFFFh -> Unknown
+;----------------------------------------------------------------------------
+
+;!!PORT!!
+ RESET_COUNT = 0FFFFh
+
+;----------------------------------------------------------------------------
+; RESET_LIMIT : Identifies the number of consecutive times the system
+; reset will be attempted
+; FFFFh -> Unknown
+;----------------------------------------------------------------------------
+
+;!!PORT!!
+ RESET_LIMIT = 0FFFFh
+
+;----------------------------------------------------------------------------
+; RESET_TIMER_INTERVAL : Identifies the number of minutes to use for the
+; watchdog timer. If the timer is not reset within this
+; interval, the system reset timeout will begin.
+; FFFFh -> Unknown
+;----------------------------------------------------------------------------
+
+;!!PORT!!
+ RESET_TIMER_INTERVAL = 0FFFFh
+
+;----------------------------------------------------------------------------
+; RESET_TIMEOUT : identifies the number of minutes before the reboot is
+; initiated. It is used after a system power cycle,
+; system reset(local or remote), and automatic system reset.
+; FFFFh -> Unknown
+;----------------------------------------------------------------------------
+
+;!!PORT!!
+ RESET_TIMEOUT = 0FFFFh
+
+;----------------------------------------------------------------------------
+; Structure Type 24: HARDWARE SECURITY INFORMATION
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 25: SYSTEM POWER CONTROLS INFORMATION
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; NEXT_SCHEDULED_POWERON_MONTH : Contains the BCD value of the month on
+; which the next scheduled power-on is to occur
+; in the range of 01h to 12h.
+; Note: Any date or time field in the structure whose value is outside of
+; the field's specified range does not contribute to the total-seconds count.
+; e.g. if the month field contains the value 0xFF the next power-on is
+; scheduled to fall within the next month, perhaps on a specific
+; day-of-month and time.
+;----------------------------------------------------------------------------
+
+;!!PORT!!
+ NEXT_SCHEDULED_POWERON_MONTH = 0FFh
+
+;----------------------------------------------------------------------------
+; NEXT_SCHEDULED_POWERON_DAY_OF_MONTH : Contains the BCD value of the day_of_month on
+; which the next scheduled power-on is to occur
+; in the range of 01h to 31h.
+; Note: Any date or time field in the structure whose value is outside of
+; the field's specified range does not contribute to the total-seconds count.
+; e.g. if the month field contains the value 0xFF the next power-on is
+; scheduled to fall within the next month, perhaps on a specific
+; day-of-month and time.
+;----------------------------------------------------------------------------
+
+;!!PORT!!
+ NEXT_SCHEDULED_POWERON_DAY_OF_MONTH = 0FFh
+
+;----------------------------------------------------------------------------
+; NEXT_SCHEDULED_POWERON_HOUR : Contains the BCD value of the hour on
+; which the next scheduled power-on is to occur
+; in the range of 00h to 23h.
+; Note: Any date or time field in the structure whose value is outside of
+; the field's specified range does not contribute to the total-seconds count.
+; e.g. if the month field contains the value 0xFF the next power-on is
+; scheduled to fall within the next month, perhaps on a specific
+; day-of-month and time.
+;----------------------------------------------------------------------------
+
+;!!PORT!!
+ NEXT_SCHEDULED_POWERON_HOUR = 0FFh
+
+;----------------------------------------------------------------------------
+; NEXT_SCHEDULED_POWERON_MINUTE : Contains the BCD value of the minute on
+; which the next scheduled power-on is to occur
+; in the range of 00h to 59h.
+; Note: Any date or time field in the structure whose value is outside of
+; the field's specified range does not contribute to the total-seconds count.
+; e.g. if the month field contains the value 0xFF the next power-on is
+; scheduled to fall within the next month, perhaps on a specific
+; day-of-month and time.
+;----------------------------------------------------------------------------
+
+;!!PORT!!
+ NEXT_SCHEDULED_POWERON_MINUTE = 0FFh
+
+;----------------------------------------------------------------------------
+; NEXT_SCHEDULED_POWERON_SECOND : Contains the BCD value of the second on
+; which the next scheduled power-on is to occur
+; in the range of 00h to 59h.
+; Note: Any date or time field in the structure whose value is outside of
+; the field's specified range does not contribute to the total-seconds count.
+; e.g. if the month field contains the value 0xFF the next power-on is
+; scheduled to fall within the next month, perhaps on a specific
+; day-of-month and time.
+;----------------------------------------------------------------------------
+
+;!!PORT!!
+ NEXT_SCHEDULED_POWERON_SECOND = 0FFh
+
+;----------------------------------------------------------------------------
+; Structure Type 26: VOLTAGE PROBE INFORMATION
+;----------------------------------------------------------------------------
+
+; Syntax:
+; VOLTAGE_PROBE_INFO_1 DEFINE <Voltage Probe String, Location
+; and status, Maximum Value,
+; Minimum Value, Resolution, Tolerance,
+; Accuracy, Oem Defined, Nominal Value>
+; * Voltage Probe String -> Identifies the descriptive information
+; about the probe or its location
+; e.g."LM78A"
+; * Location and Status -> Defines the probe's physical location
+; and status of the voltage monitored by this
+; voltage probe
+; * Maximum Value -> The max. voltage level readable by
+; this probe in millivolt 0x8000h -> Unknown
+; * Mimimum Value -> The Min. voltage level readable by
+; this probe in millivolt 0x8000h -> Unknown
+; * Resoltion -> The resolution for the probe's
+; reading in tenths of millivolt 0x8000h->Unknown
+; * Tolerance -> The tolerance for reading from this
+; probe, in +/- millivolts. 0x8000h->Unknown
+; * Accuracy -> The accuracy for reading from this
+; probe, in +/- 1/100th of a percent
+; 0x8000h->Unknown
+; * OEM-Defined -> Contains OEM- or BIOS Vaendor specific information
+; * Nominal Value -> The nominal value for the probe's
+; reading in millivolts. 0x8000h -> Unknown
+; Note: Nominal Value field is valid only if structure length is more than 14h
+;----------------------------------------------------------------------------
+
+;!!PORT!!
+ NUMBER_OF_VOLTAGE_PROBE_ASSOCIATED_MGMT_DEV_1 = 1
+ NUMBER_OF_VOLTAGE_PROBE_ASSOCIATED_MGMT_DEV_2 = 2
+ NUMBER_OF_VOLTAGE_PROBE_ASSOCIATED_MGMT_DEV_3 = 3
+
+;!!PORT!!
+ VOLTAGE_PROBE_INFO_1_1 DEFINE <LM78A,0,08000h,08000h,08000h,08000h,08000h,0,08000h>
+ VOLTAGE_PROBE_INFO_2_1 DEFINE <LM78B,0,08000h,08000h,08000h,08000h,08000h,0,08000h>
+ VOLTAGE_PROBE_INFO_2_2 DEFINE <LM78B,0,08000h,08000h,08000h,08000h,08000h,0,08000h>
+ VOLTAGE_PROBE_INFO_3_1 DEFINE <LM78C,0,08000h,08000h,08000h,08000h,08000h,0,08000h>
+ VOLTAGE_PROBE_INFO_3_2 DEFINE <LM78C,0,08000h,08000h,08000h,08000h,08000h,0,08000h>
+ VOLTAGE_PROBE_INFO_3_3 DEFINE <LM78C,0,08000h,08000h,08000h,08000h,08000h,0,08000h>
+
+;!!PORT!!
+ MANAGEMENT_DEV_VOLT_THRESHOLD_DATA_INFO_1_1 DEFINE <01,02,03,04,05,06>
+ MANAGEMENT_DEV_VOLT_THRESHOLD_DATA_INFO_2_1 DEFINE <07,08,08,0Ah,0Bh,0Ch>
+ MANAGEMENT_DEV_VOLT_THRESHOLD_DATA_INFO_2_2 DEFINE <0Dh,0Eh,0Fh,10h,11h,12h>
+ MANAGEMENT_DEV_VOLT_THRESHOLD_DATA_INFO_3_1 DEFINE <13h,14h,15h,16h,17h,18h>
+ MANAGEMENT_DEV_VOLT_THRESHOLD_DATA_INFO_3_2 DEFINE <19h,02,03,04,05,06>
+ MANAGEMENT_DEV_VOLT_THRESHOLD_DATA_INFO_3_3 DEFINE <01,02,03,04,05,06>
+
+;----------------------------------------------------------------------------
+; Structure Type 27: COOLING DEVICE INFORMATION
+;----------------------------------------------------------------------------
+;Syntax:
+; COOLING_DEVICE_INFO_1 DEFINE <Device type and status, Cooling unit group,
+; Oem Defined, Nominal Value>
+; * Device type and Status -> Identifies the cooling device type
+; and status
+; * Cooling Unit Group -> Identifies the cooling unit group
+; to which this cooling device is associated.
+; Multiple cooling devices in the same cooling
+; unit implies a redudant configuration.
+; * OEM-Defined -> Contains OEM- or BIOS Vaendor specific information
+; * Nominal Value -> The nominal value for the cooling device
+; speed in RPM. 0x8000h -> Unknown
+;Note: Nominal Value field is valid only if structure length is more than 0Ch
+;----------------------------------------------------------------------------
+; NUMBER_OF_COOLING_DEVICE_ASSOCIATED_TEMP_PROBE_1_1 = 2
+; This means Management Device number 1 and Temperature Probe Number 1 has
+; 2 cooling Device associated.
+
+;!!PORT!!
+ NUMBER_OF_COOLING_DEVICE_ASSOCIATED_TEMP_PROBE_1_1 = 2
+ NUMBER_OF_COOLING_DEVICE_ASSOCIATED_TEMP_PROBE_2_1 = 1
+ NUMBER_OF_COOLING_DEVICE_ASSOCIATED_TEMP_PROBE_2_2 = 1
+ NUMBER_OF_COOLING_DEVICE_ASSOCIATED_TEMP_PROBE_3_1 = 1
+ NUMBER_OF_COOLING_DEVICE_ASSOCIATED_TEMP_PROBE_3_2 = 1
+ NUMBER_OF_COOLING_DEVICE_ASSOCIATED_TEMP_PROBE_3_3 = 1
+
+;----------------------------------------------------------------------------
+; Syntax :
+; COOLING_DEVICE_INFO_1_1_1 DEFINE <012h,01h,00000000h,08000h,> No Description string
+; COOLING_DEVICE_INFO_1_1_1 DEFINE <012h,01h,00000000h,08000h,Cooling Dev 1> With Description string
+; This means Cooling device info_1st Mangement Device_1st Temperature Probe_1st Cooling Device
+; COOLING_DEVICE_INFO_1_1_2 DEFINE <012h,01h,00000000h,08000h>
+; This means Cooling Device Info_1st Mangement Device_1st Temperature Probe_2nd Cooling Device no.2
+;----------------------------------------------------------------------------
+
+;!!PORT!!
+ COOLING_DEVICE_INFO_1_1_1 DEFINE <012h,01h,00000000h,08000h,Cooling Dev 1>
+ COOLING_DEVICE_INFO_1_1_2 DEFINE <012h,01h,00000000h,08000h,> ;No Description string
+ COOLING_DEVICE_INFO_2_1_1 DEFINE <012h,01h,00000000h,08000h,Cooling Dev 2>
+ COOLING_DEVICE_INFO_2_2_1 DEFINE <012h,01h,00000000h,08000h,Cooling Dev 3>
+ COOLING_DEVICE_INFO_3_1_1 DEFINE <012h,01h,00000000h,08000h,Cooling Dev 4>
+ COOLING_DEVICE_INFO_3_2_1 DEFINE <012h,01h,00000000h,08000h,Cooling Dev 5>
+ COOLING_DEVICE_INFO_3_3_1 DEFINE <012h,01h,00000000h,08000h,Cooling Dev 6>
+
+;----------------------------------------------------------------------------
+; Syntax :
+; MANAGEMENT_DEV_COOL_THRESHOLD_DATA_INFO_1_1_1 DEFINE <01,02,03,04,05,06>
+; This means Managemnt Device Info 1_Temperature Probe 1_Cooling Device Threshold 1
+; MANAGEMENT_DEV_COOL_THRESHOLD_DATA_INFO_1_1_2 DEFINE <01,02,03,04,05,06>
+; This means Managemnt Device Info 1_Temperature Probe 1_Cooling Device Threshold 2
+;----------------------------------------------------------------------------
+
+;!!PORT!!
+ MANAGEMENT_DEV_COOL_THRESHOLD_DATA_INFO_1_1_1 DEFINE <01,02,03,04,05,06>
+ MANAGEMENT_DEV_COOL_THRESHOLD_DATA_INFO_1_1_2 DEFINE <01,02,03,04,05,06>
+ MANAGEMENT_DEV_COOL_THRESHOLD_DATA_INFO_2_1_1 DEFINE <01,02,03,04,05,06>
+ MANAGEMENT_DEV_COOL_THRESHOLD_DATA_INFO_2_2_1 DEFINE <01,02,03,04,05,06>
+ MANAGEMENT_DEV_COOL_THRESHOLD_DATA_INFO_3_1_1 DEFINE <01,02,03,04,05,06>
+ MANAGEMENT_DEV_COOL_THRESHOLD_DATA_INFO_3_2_1 DEFINE <01,02,03,04,05,06>
+ MANAGEMENT_DEV_COOL_THRESHOLD_DATA_INFO_3_3_1 DEFINE <01,02,03,04,05,06>
+
+;----------------------------------------------------------------------------
+; Structure Type 28: TEMPERATURE PROBE INFORMATION
+;----------------------------------------------------------------------------
+;
+; Syntax:
+; TEMPERATURE_PROBE_INFO_1 DEFINE <Tempature Probe String, Location
+; and status, Maximum Value,
+; Minimum Value, Resolution, Tolerance,
+; Accuracy, Oem Defined, Nominal Value>
+; * Voltage Probe String -> Identifies the descriptive information
+; about the probe or its location
+; e.g."LM78A"
+; * Location and Status -> Defines the probe's physical location
+; and status of the tempature monitored by this
+; tempature probe
+; * Maximum Value -> The max. tempature readable by
+; this probe in 1/10th degree C. 0x8000h -> Unknown
+; * Mimimum Value -> The Min. tempature readable by
+; this probe in 1/10th degree C. 0x8000h -> Unknown
+; * Resoltion -> The resolution for the probe's
+; reading in 1/1000th degree C. 0x8000h->Unknown
+; * Tolerance -> The tolerance for reading from this
+; probe, in +/- 1/10th degree C.0x8000h->Unknown
+; * Accuracy -> The accuracy for reading from this
+; probe, in +/- 1/100th of a percent
+; 0x8000h->Unknown
+; * OEM-Defined -> Contains OEM- or BIOS Vaendor specific information
+; * Nominal Value -> The nominal value for the probe's
+; reading in 1/10th degree C. 0x8000h -> Unknown
+; Note: Nominal Value field is valid only if structure length is more than 14h
+;----------------------------------------------------------------------------
+
+;!!PORT!!
+ NUMBER_OF_TEMPERATURE_PROBE_ASSOCIATED_MGMT_DEV_1 = 1
+ NUMBER_OF_TEMPERATURE_PROBE_ASSOCIATED_MGMT_DEV_2 = 2
+ NUMBER_OF_TEMPERATURE_PROBE_ASSOCIATED_MGMT_DEV_3 = 3
+
+;!!PORT!!
+ TEMPERATURE_PROBE_INFO_1_1 DEFINE <LM78A,0,08000h,08000h,08000h,08000h,08000h,0,08000h>
+ TEMPERATURE_PROBE_INFO_2_1 DEFINE <LM78B,0,08000h,08000h,08000h,08000h,08000h,0,08000h>
+ TEMPERATURE_PROBE_INFO_2_2 DEFINE <LM78B,0,08000h,08000h,08000h,08000h,08000h,0,08000h>
+
+;!!PORT!!
+ TEMPERATURE_PROBE_INFO_3_1 DEFINE <LM78C,0,08000h,08000h,08000h,08000h,08000h,0,08000h>
+ TEMPERATURE_PROBE_INFO_3_2 DEFINE <LM78C,0,08000h,08000h,08000h,08000h,08000h,0,08000h>
+ TEMPERATURE_PROBE_INFO_3_3 DEFINE <LM78C,0,08000h,08000h,08000h,08000h,08000h,0,08000h>
+
+;!!PORT!!
+ MANAGEMENT_DEV_TEMP_THRESHOLD_DATA_INFO_1_1 DEFINE <01,02,03,04,05,06>
+ MANAGEMENT_DEV_TEMP_THRESHOLD_DATA_INFO_2_1 DEFINE <01,02,03,04,05,06>
+ MANAGEMENT_DEV_TEMP_THRESHOLD_DATA_INFO_2_2 DEFINE <01,02,03,04,05,06>
+ MANAGEMENT_DEV_TEMP_THRESHOLD_DATA_INFO_3_1 DEFINE <01,02,03,04,05,06>
+ MANAGEMENT_DEV_TEMP_THRESHOLD_DATA_INFO_3_2 DEFINE <01,02,03,04,05,06>
+ MANAGEMENT_DEV_TEMP_THRESHOLD_DATA_INFO_3_3 DEFINE <01,02,03,04,05,06>
+
+;----------------------------------------------------------------------------
+; Structure Type 29: ELECTRICAL PROBE INFORMATION
+;----------------------------------------------------------------------------
+;
+; Syntax :
+; ELECTRICAL_PROBE_INFO_1 <Electrical Probe String, Location and status, Maximum Value, Minimum Value,
+; Resolution, Tolerance, Accuracy, Oem Defined, Nominal Value>
+; * Electrical Probe String -> Identifies the descriptive information about the probe or its location.
+; e.g."ABC"
+; * Location and Status -> Defines the probe's physical location and status of the current
+; monitored by this electrical probe
+; * Maximum Value -> The max. current readable by this probe in milliamps. 0x8000h -> Unknown
+; * Mimimum Value -> The Min. current readable by this probe in milliamps. 0x8000h -> Unknown
+; * Resoltion -> The resolution for the probe's reading in thenths of a milliamps.
+; 0x8000h->Unknown
+; * Tolerance -> The tolerance for reading from this probe, in +/- milliamps.
+; 0x8000h->Unknown
+; * Accuracy -> The accuracy for reading from this probe, in +/- 1/100th of a percent.
+; 0x8000h->Unknown
+; * OEM-Defined -> Contains OEM- or BIOS Vaendor specific information
+; * Nominal Value -> The nominal value for the probe's reading in milliamps.
+; 0x8000h -> Unknown
+; Note: Nominal Value field is valid only if structure length is more than 14h
+;----------------------------------------------------------------------------
+;!!PORT!!
+ NUMBER_OF_ELECTRICAL_PROBE_ASSOCIATED_MGMT_DEV_1 = 1
+ NUMBER_OF_ELECTRICAL_PROBE_ASSOCIATED_MGMT_DEV_2 = 2
+ NUMBER_OF_ELECTRICAL_PROBE_ASSOCIATED_MGMT_DEV_3 = 3
+
+;!!PORT!!
+ ELECTRICAL_PROBE_INFO_1_1 DEFINE <ABC,0,08000h,08000h,08000h,08000h,08000h,0,08000h>
+ ELECTRICAL_PROBE_INFO_2_1 DEFINE <DEF,0,08000h,08000h,08000h,08000h,08000h,0,08000h>
+ ELECTRICAL_PROBE_INFO_2_2 DEFINE <GHI,0,08000h,08000h,08000h,08000h,08000h,0,08000h>
+ ELECTRICAL_PROBE_INFO_3_1 DEFINE <ABC,0,08000h,08000h,08000h,08000h,08000h,0,08000h>
+ ELECTRICAL_PROBE_INFO_3_2 DEFINE <DEF,0,08000h,08000h,08000h,08000h,08000h,0,08000h>
+ ELECTRICAL_PROBE_INFO_3_3 DEFINE <GHI,0,08000h,08000h,08000h,08000h,08000h,0,08000h>
+
+;!!PORT!!
+ MANAGEMENT_DEV_ELEC_THRESHOLD_DATA_INFO_1_1 DEFINE <01,02,03,04,05,06>
+ MANAGEMENT_DEV_ELEC_THRESHOLD_DATA_INFO_2_1 DEFINE <01,02,03,04,05,06>
+ MANAGEMENT_DEV_ELEC_THRESHOLD_DATA_INFO_2_2 DEFINE <01,02,03,04,05,06>
+ MANAGEMENT_DEV_ELEC_THRESHOLD_DATA_INFO_3_1 DEFINE <01,02,03,04,05,06>
+ MANAGEMENT_DEV_ELEC_THRESHOLD_DATA_INFO_3_2 DEFINE <01,02,03,04,05,06>
+ MANAGEMENT_DEV_ELEC_THRESHOLD_DATA_INFO_3_3 DEFINE <01,02,03,04,05,06>
+
+;----------------------------------------------------------------------------
+; Structure Type 30: OUT-OF-BAND REMOTE ACCESS INFORMATION
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 32: SYSTEM BOOT INFORMATION
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 33: 64-BIT MEMORY ERROR INFORMATION
+;----------------------------------------------------------------------------
+; Note: For more detail refer TYPE 18 (MEMORY ERROR INFORMATION) in this
+; file and SMB.EQU
+; In Case of 64 Bit Memory Error support following 2 fields are changed to Qword
+;----------------------------------------------------------------------------
+;!!PORT!!
+ MEM_ARR_ERR_ADD equ 8000000000000000h
+ DEV_ERR_ADD equ 8000000000000000h
+
+;----------------------------------------------------------------------------
+; Structure Type 34: MANAGEMENT DEVICE INFORMATION
+;----------------------------------------------------------------------------
+; * Device String -> Identifies string information about device
+; * Device Type -> Identifies the Device Type, for
+; more detail search for Management
+; Device Type,refer SMB.EQU
+; * Device Address -> Defines Device Address.
+; * Device Address Type -> Identifies the Address Type, for
+; more detail search for Management
+; Device Type Address, refer SMB.EQU
+;----------------------------------------------------------------------------
+;!!PORT!!
+ MANAGEMENT_DEVICE_STRING_1 DEFINE <LM78-1>
+ MANAGEMENT_DEVICE_TYPE_1 DEFINE <MGMT_DEVICE_TYPE_LM78>
+ MANAGEMENT_DEVICE_ADDR_1 = 00000000h
+ MANAGEMENT_DEVICE_ADDR_TYPE_1 DEFINE <MGMT_DEVICE_ADDRESS_TYPE_IO_PORT>
+
+ MANAGEMENT_DEVICE_STRING_2 DEFINE <LM78-2>
+ MANAGEMENT_DEVICE_TYPE_2 DEFINE <MGMT_DEVICE_TYPE_LM78>
+ MANAGEMENT_DEVICE_ADDR_2 = 00000000h
+ MANAGEMENT_DEVICE_ADDR_TYPE_2 DEFINE <MGMT_DEVICE_ADDRESS_TYPE_IO_PORT>
+
+ MANAGEMENT_DEVICE_STRING_3 DEFINE <LM75-0>
+ MANAGEMENT_DEVICE_TYPE_3 DEFINE <MGMT_DEVICE_TYPE_LM75>
+ MANAGEMENT_DEVICE_ADDR_3 = 00000000h
+ MANAGEMENT_DEVICE_ADDR_TYPE_3 DEFINE <MGMT_DEVICE_ADDRESS_TYPE_IO_PORT>
+
+;----------------------------------------------------------------------------
+; Structure Type 36: MANAGEMENT DEVICE THRESHOLD DATA INFORMATION
+;----------------------------------------------------------------------------
+; Management Device Threshold Data structure is associated with,
+; Voltage Probe, Temprature Probe, Cooling Device and Electrical Probe.
+; Each probe and cooling device has it's own Threshold data values.
+; Depends on number of probes in the system, there will be equal number
+; of Threshold Data structures will be there.
+;----------------------------------------------------------------------------
+; Lower Threshold Non-critical -> The lower non-critical threshold for this component
+; Upper Threshold Non-critical -> The upper non-critical threshold for this component
+; Lower Threshold Critical -> The Lower critical threshold for this component
+; Upper Threshold Critical -> The Upper critical threshold for this component
+; Lower Threshold Non-Recoverable -> The Lower threshold non-recoverable for this component
+; Upper Threshold Non-Recoverable -> The Upper threshold non-recoverable for this component
+;----------------------------------------------------------------------------
+
+;!!PORT!!
+ LOWER_THRESHOLD_NON_CRITICAL_1 = 8000h
+ UPPER_THRESHOLD_NON_CRITICAL_1 = 8000h
+ LOWER_THRESHOLD_CRITICAL_1 = 8000h
+ UPPER_THRESHOLD_CRITICAL_1 = 8000h
+ LOWER_THRESHOLD_NON_RECOVERABLE_1 = 8000h
+ UPPER_THRESHOLD_NON_RECOVERABLE_1 = 8000h
+
+ LOWER_THRESHOLD_NON_CRITICAL_2 = 8000h
+ UPPER_THRESHOLD_NON_CRITICAL_2 = 8000h
+ LOWER_THRESHOLD_CRITICAL_2 = 8000h
+ UPPER_THRESHOLD_CRITICAL_2 = 8000h
+ LOWER_THRESHOLD_NON_RECOVERABLE_2 = 8000h
+ UPPER_THRESHOLD_NON_RECOVERABLE_2 = 8000h
+
+ LOWER_THRESHOLD_NON_CRITICAL_3 = 8000h
+ UPPER_THRESHOLD_NON_CRITICAL_3 = 8000h
+ LOWER_THRESHOLD_CRITICAL_3 = 8000h
+ UPPER_THRESHOLD_CRITICAL_3 = 8000h
+ LOWER_THRESHOLD_NON_RECOVERABLE_3 = 8000h
+ UPPER_THRESHOLD_NON_RECOVERABLE_3 = 8000h
+
+ LOWER_THRESHOLD_NON_CRITICAL_4 = 8000h
+ UPPER_THRESHOLD_NON_CRITICAL_4 = 8000h
+ LOWER_THRESHOLD_CRITICAL_4 = 8000h
+ UPPER_THRESHOLD_CRITICAL_4 = 8000h
+ LOWER_THRESHOLD_NON_RECOVERABLE_4 = 8000h
+ UPPER_THRESHOLD_NON_RECOVERABLE_4 = 8000h
+
+;----------------------------------------------------------------------------
+; Structure Type 37: MEMORY CHANNEL INFORMATION STRUCTURE
+;----------------------------------------------------------------------------
+;!!PORT!!
+
+ CHANNEL_1_TYPE = 03h
+ MAX_CHANNEL_1_LOAD = 32
+ NUMBER_OF_MEMORY_DEVICES_IN_CHANNEL_1 = 02
+
+ CHANNEL_2_TYPE = 03h
+ MAX_CHANNEL_2_LOAD = 32
+ NUMBER_OF_MEMORY_DEVICES_IN_CHANNEL_2 = 02
+
+;----------------------------------------------------------------------------
+; Structure Type 38: IPMI DEVICE INFORMATION
+;----------------------------------------------------------------------------
+; Identifies the base address (either memory-mapped or I/O) of the BMC.
+; If the least-significant bit of the field is 1, the address is in I/O space;
+; otherwise, the address is memory-mapped. Refer IPMI Interface Specification.
+
+;!!PORT!!
+
+ IPMI_BASE_ADDRESS_LO = 00000000h
+ IPMI_BASE_ADDRESS_HI = 00000000h
+
+;----------------------------------------------------------------------------
+; Structure Type 39: SYSTEM POWER SUPPLY
+;----------------------------------------------------------------------------
+; Syntax:
+; * PWR_SUPPLY_UNIT_GROUP_X -> Identifies the power unit group to which
+; this power supply is associated
+; * PWR_SUPPLY_LOCATION_X -> String identifies the location of the
+; power supply
+; * PWR_SUPPLY_DEVICE_NAME_X -> String identifies the name of the power
+; supply
+; * PWR_SUPPLY_MANUFACTURER_X -> String identifies the name of the company
+; that manufacturered the power supply
+; * PWR_SUPPLY_SERIAL_NUMBER_X -> String identifies the serial number of
+; the power supply
+; * PWR_SUPPLY_ASSET_TAG_NUMBER_X -> String identifies the asset tag of
+; the power supply
+; * PWR_SUPPLY_MODEL_PART_NUMBER_X -> String identifies the OEM Part Order
+; number of the power supply
+; * PWR_SUPPLY_REVISION_LEVEL_X -> Power supply revision string
+; * PWR_SUPPLY_MAX_POWER_CAPACITY_X -> Maximum sustained power output in Watts
+; Set to 0x8000 if unknown
+; * PWR_SUPPLY_CHARACTERISTICS_X -> Characteristics of the power supply
+;----------------------------------------------------------------------------
+
+;!!PORT!!
+ POWER_SUPPLY_UNIT_GROUP_1 = 1
+ POWER_SUPPLY_LOCATION_1 DEFINE <To Be Filled By O.E.M.>
+ POWER_SUPPLY_DEVICE_NAME_1 DEFINE <To Be Filled By O.E.M.>
+ POWER_SUPPLY_MANUFACTURER_1 DEFINE <To Be Filled By O.E.M.>
+ POWER_SUPPLY_SERIAL_NUMBER_1 DEFINE <To Be Filled By O.E.M.>
+ POWER_SUPPLY_ASSET_TAG_NUMBER_1 DEFINE <To Be Filled By O.E.M.>
+ POWER_SUPPLY_MODEL_PART_NUMBER_1 DEFINE <To Be Filled By O.E.M.>
+ POWER_SUPPLY_REVISION_LEVEL_1 DEFINE <To Be Filled By O.E.M.>
+ POWER_SUPPLY_MAX_POWER_CAPACITY_1 = 8000h
+ POWER_SUPPLY_CHARACTERISTICS_1 = 11A2h
+
+ POWER_SUPPLY_UNIT_GROUP_2 = 2
+ POWER_SUPPLY_LOCATION_2 DEFINE <To Be Filled By O.E.M.>
+ POWER_SUPPLY_DEVICE_NAME_2 DEFINE <To Be Filled By O.E.M.>
+ POWER_SUPPLY_MANUFACTURER_2 DEFINE <To Be Filled By O.E.M.>
+ POWER_SUPPLY_SERIAL_NUMBER_2 DEFINE <To Be Filled By O.E.M.>
+ POWER_SUPPLY_ASSET_TAG_NUMBER_2 DEFINE <To Be Filled By O.E.M.>
+ POWER_SUPPLY_MODEL_PART_NUMBER_2 DEFINE <To Be Filled By O.E.M.>
+ POWER_SUPPLY_REVISION_LEVEL_2 DEFINE <To Be Filled By O.E.M.>
+ POWER_SUPPLY_MAX_POWER_CAPACITY_2 = 8000h
+ POWER_SUPPLY_CHARACTERISTICS_2 = 11A2h
+
+;----------------------------------------------------------------------------
+; Type 39 - Associated VOLTAGE PROBE Type 26
+;----------------------------------------------------------------------------
+; Syntax:
+; VOLTAGE_PROBE_39_1 DEFINE <Present, Voltage Probe String, Location
+; and status, Maximum Value,
+; Minimum Value, Resolution, Tolerance,
+; Accuracy, Oem Defined, Nominal Value>
+; * Present -> 0 = Type 39 does not have Input Voltage Probe
+; -> 1 = Type 39 has Input Voltage Probe
+;
+; Followings are only valid when "Present = 1"
+;
+; * Voltage Probe String -> Identifies the descriptive information
+; about the probe or its location
+; e.g."LM78A"
+; * Location and Status -> Defines the probe's physical location
+; and status of the voltage monitored by this
+; voltage probe
+; * Maximum Value -> The max. voltage level readable by
+; this probe in millivolt 0x8000h -> Unknown
+; * Mimimum Value -> The Min. voltage level readable by
+; this probe in millivolt 0x8000h -> Unknown
+; * Resoltion -> The resolution for the probe's
+; reading in tenths of millivolt 0x8000h->Unknown
+; * Tolerance -> The tolerance for reading from this
+; probe, in +/- millivolts. 0x8000h->Unknown
+; * Accuracy -> The accuracy for reading from this
+; probe, in +/- 1/100th of a percent
+; 0x8000h->Unknown
+; * OEM-Defined -> Contains OEM- or BIOS Vaendor specific information
+; * Nominal Value -> The nominal value for the probe's
+; reading in millivolts. 0x8000h -> Unknown
+;
+; Note: Nominal Value field is valid only if structure length is more than 14h
+;----------------------------------------------------------------------------
+
+;!!PORT!!
+ VOLTAGE_PROBE_39_1 DEFINE <1,LM78A,6Ah,08000h,08000h,08000h,08000h,08000h,0,08000h>
+ VOLTAGE_PROBE_39_2 DEFINE <0,LM78B,6Ah,08000h,08000h,08000h,08000h,08000h,0,08000h>
+
+;----------------------------------------------------------------------------
+; Type 39 - Associated COOLING DEVICE Type 27
+;----------------------------------------------------------------------------
+;Syntax:
+; COOLING_DEVICE_39_1 DEFINE <Present, Device type and status, Cooling unit group,
+; Oem Defined, Nominal Value>
+; * Present -> 0 = Type 39 does not have Cooling Device
+; -> 1 = Type 39 has Cooling Device
+;
+; Followings are only valid when "Present = 1"
+;
+; * Device type and Status -> Identifies the cooling device type
+; and status
+; * Cooling Unit Group -> Identifies the cooling unit group
+; to which this cooling device is associated.
+; Multiple cooling devices in the same cooling
+; unit implies a redudant configuration.
+; * OEM-Defined -> Contains OEM- or BIOS Vaendor specific information
+; * Nominal Speed -> The nominal speed for the cooling device
+; speed in RPM. 0x8000h -> Unknown
+; * Description -> Descriptive information about the cooling device
+;
+;Note: Nominal Value field is valid only if structure length is more than 0Ch
+;----------------------------------------------------------------------------
+
+;!!PORT!!
+ COOLING_DEVICE_39_1 DEFINE <1,67h,01h,00000000h,08000h,Cooling Dev 1>
+ COOLING_DEVICE_39_2 DEFINE <0,67h,01h,00000000h,08000h,Cooling Dev 2>
+
+;----------------------------------------------------------------------------
+; Type 39 - Associated Structure Type 28: TEMPERATURE PROBE INFORMATION
+;----------------------------------------------------------------------------
+; Syntax:
+; TEMPERATURE_PROBE_39_1 DEFINE <Tempature Probe String, Location
+; and status, Maximum Value,
+; Minimum Value, Resolution, Tolerance,
+; Accuracy, Oem Defined, Nominal Value>
+; * Present -> 0 = Type 39/27 does not have Temperature Probe
+; -> 1 = Type 39/27 has Temperature Probe
+;
+; Followings are only valid when "Present = 1"
+;
+; * Voltage Probe String -> Identifies the descriptive information
+; about the probe or its location
+; e.g."LM78A"
+; * Location and Status -> Defines the probe's physical location
+; and status of the tempature monitored by this
+; tempature probe
+; * Maximum Value -> The max. tempature readable by
+; this probe in 1/10th degree C. 0x8000h -> Unknown
+; * Mimimum Value -> The Min. tempature readable by
+; this probe in 1/10th degree C. 0x8000h -> Unknown
+; * Resoltion -> The resolution for the probe's
+; reading in 1/1000th degree C. 0x8000h->Unknown
+; * Tolerance -> The tolerance for reading from this
+; probe, in +/- 1/10th degree C.0x8000h->Unknown
+; * Accuracy -> The accuracy for reading from this
+; probe, in +/- 1/100th of a percent
+; 0x8000h->Unknown
+; * OEM-Defined -> Contains OEM- or BIOS Vaendor specific information
+; * Nominal Value -> The nominal value for the probe's
+; reading in 1/10th degree C. 0x8000h -> Unknown
+; Note: Nominal Value field is valid only if structure length is more than 14h
+;----------------------------------------------------------------------------
+
+;!!PORT!!
+ TEMPERATURE_PROBE_39_1 DEFINE <1,LM78A,6Ah,08000h,08000h,08000h,08000h,08000h,0,08000h>
+ TEMPERATURE_PROBE_39_2 DEFINE <0,LM78B,6Ah,08000h,08000h,08000h,08000h,08000h,0,08000h>
+
+;----------------------------------------------------------------------------
+; Type 39 - Associated Structure Type 29: ELECTRICAL PROBE INFORMATION
+;----------------------------------------------------------------------------
+; Syntax :
+; ELECTRICAL_PROBE_39_1 DEFINE <Present, Electrical Probe String, Location and status, Maximum Value,
+; Minimum Value, Resolution, Tolerance, Accuracy, Oem Defined, Nominal Value>
+; * Present -> 0 = Type 39 does not have Current Probe
+; -> 1 = Type 39 has Current Probe
+;
+; Followings are only valid when "Present = 1"
+;
+; * Electrical Probe String -> Identifies the descriptive information about the probe or its location.
+; e.g."ABC"
+; * Location and Status -> Defines the probe's physical location and status of the current
+; monitored by this electrical probe
+; * Maximum Value -> The max. current readable by this probe in milliamps. 0x8000h -> Unknown
+; * Mimimum Value -> The Min. current readable by this probe in milliamps. 0x8000h -> Unknown
+; * Resoltion -> The resolution for the probe's reading in thenths of a milliamps.
+; 0x8000h->Unknown
+; * Tolerance -> The tolerance for reading from this probe, in +/- milliamps.
+; 0x8000h->Unknown
+; * Accuracy -> The accuracy for reading from this probe, in +/- 1/100th of a percent.
+; 0x8000h->Unknown
+; * OEM-Defined -> Contains OEM- or BIOS Vaendor specific information
+; * Nominal Value -> The nominal value for the probe's reading in milliamps.
+; 0x8000h -> Unknown
+;
+; Note: Nominal Value field is valid only if structure length is more than 14h
+;----------------------------------------------------------------------------
+
+;!!PORT!!
+ ELECTRICAL_PROBE_39_1 DEFINE <1,ABC,6Ah,08000h,08000h,08000h,08000h,08000h,0,08000h>
+ ELECTRICAL_PROBE_39_2 DEFINE <0,DEF,6Ah,08000h,08000h,08000h,08000h,08000h,0,08000h>
+
+;----------------------------------------------------------------------------
+; Structure Type 40: Additional Information
+;----------------------------------------------------------------------------
+; Provides additional information for handling unspecified enumerated values
+; and interim field updates in another structure.
+;
+; Syntax:
+; REF_TYPE_1 Structure Type for which additional
+; information is provided
+;
+; REF_TYPE_INSTANCE_1 Structure Type instance for which additional
+; information is provided
+;
+; REF_OFFSET_1 Offset of the field within the structure
+; referenced above for which additional
+; information is provided
+;
+; USE_STRING_1 0 = String is not used, 1 = String is used
+;
+; STRING_1 When USE_STRING_1 = 1, specify string to be
+; associated with the field referenced above
+;
+; VALUE_1 Enumerated value or updated field content
+;
+;----------------------------------------------------------------------------
+;!!PORT!!
+
+ REF_TYPE_1 = 10
+ REF_TYPE_INSTANCE_1 = 1
+ REF_OFFSET_1 = 1
+ USE_STRING_1 = 1
+ STRING_1 DEFINE <To Be Filled By O.E.M. 1>
+ VALUE_1 = 0
+
+ REF_TYPE_2 = 1
+ REF_TYPE_INSTANCE_2 = 1
+ REF_OFFSET_2 = 15
+ USE_STRING_2 = 0
+ STRING_2 DEFINE <To Be Filled By O.E.M. 2>
+ VALUE_2 = 30
+
+ REF_TYPE_3 = 7
+ REF_TYPE_INSTANCE_3 = 2
+ REF_OFFSET_3 = 1
+ USE_STRING_3 = 1
+ STRING_3 DEFINE <To Be Filled By O.E.M. 3>
+ VALUE_3 = 0
+
+ REF_TYPE_4 = 1
+ REF_TYPE_INSTANCE_4 = 1
+ REF_OFFSET_4 = 1
+ USE_STRING_4 = 1
+ STRING_4 DEFINE <To Be Filled By O.E.M.>
+ VALUE_4 = 0
+
+;----------------------------------------------------------------------------
+; Structure Type 41: Onboard Devices Extended Information
+;----------------------------------------------------------------------------
+; Defines the attributes of devices that are onboard (soldered onto) a system
+; element, usually the baseboard. In general, an entry in this table implies
+; that the BIOS has some level of control over the enabling of the associated
+; device for use by the system.
+;
+; NOTE: This structure replaces Onboard Device Information (Type 10) starting
+; with versiob 2.6 of the SMBIOS specification. Both Type 10 and 41 can
+; be implemented to allow existing SMBIOS browsers to properly display
+; the system's onboard devices information.
+;
+; Syntax:
+; ONBOARD_DEVICE_EXT_1 DEFINE <Enabled or Disabled, Onboard Device Type, Descrition String>
+; * Onboard device status -> Describes the status(enabled/disabled) of on board device
+; * On board device Type -> Video, Audio, SCSI etc...
+; For more detail search for On-board device
+; Type equates in structure Type 10, refer SMB.EQU
+; * Device Type Instance -> A unique value (within a given onboard device type) used
+; to indicate the order the device is designated by the system.
+; e.g. A system with two identical Ethernet NICs may designate
+; one NIC (with higher Bus/Device/Function=15/0/0) as the first
+; onboard NIC (instance 1) and the other NIC (with lower
+; Bus/Device/Function=3/0/0) as the second onboard NIC (instance 2)
+; * Description String -> Describes the on board device.
+; e.g."Video", "Audio" etc..
+;
+; SEGGRP_BUS_DEVFN_EXT_1 DEFINE <Segment Group Number, Bus Number, Device Function Number>
+; * Segment Group Number -> Segment Group Number defined in the PCI Firmware Spec.
+; * Bus Number -> Bus Number
+; * Device Function Number -> Device / Function Number
+;
+;----------------------------------------------------------------------------
+;!!PORT!!
+ ONBOARD_DEVICE_EXT_1 DEFINE <ENABLED, OBD_VIDEO, 1, Onboard IGD>
+ SEGGRP_BUS_DEVFN_EXT_1 DEFINE <0, 0, 10h>
+
+ ONBOARD_DEVICE_EXT_2 DEFINE <ENABLED, OBD_ETHERNET, 1, Onboard LAN>
+ SEGGRP_BUS_DEVFN_EXT_2 DEFINE <0, 0, 0C8h>
+
+ ONBOARD_DEVICE_EXT_3 DEFINE <ENABLED, OBD_OTHER, 1, Onboard 1394>
+ SEGGRP_BUS_DEVFN_EXT_3 DEFINE <0, 3, 0E2h>
+
+;----------------------------------------------------------------------------
+; Structure Type 5 : MEMORY CONTROLLER INFORMATION
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; Structure Type 6 : MEMORY MODULE INFORMATION
+;----------------------------------------------------------------------------
+; The following information is needed only if MEM_MODULE_INFO = Present
+; This structure (TYPE 6) is associated with MEMORY CONTROLLER Structure(TYPE 5)
+; Handle information of Type 6 is defined in TYPE 5 structure.
+; Syntax:
+; MEMORY_TYPE_1 DEFINE <Memory Type, Memory Type,...>
+; * Memory Module Type -> DIMM, SIMM, SDRAM etc...
+; Following describes Memory Module Type
+; supported. At any given time more than
+; one value can be selected. Select the
+; memory type list from the following
+; MM_TYPE_OTHER, MM_TYPE_UNKNOWN, MM_TYPE_STANDARD,
+; MM_TYPE_FAST_PAGE_MODE, MM_TYPE_EDO, MM_TYPE_PARITY, MM_TYPE_ECC,
+; MM_TYPE_SIMM, MM_TYPE_DIMM, MM_TYPE_BURST_EDO, MM_TYPE_SDRAM
+; for more detail search for Memory Module
+; Type equates in structure Type 6, refer SMB.EQU
+; This field is used in Memory Controller Structure
+; also. While porting, define the proper bit
+; field according to type of memory suppoted
+; on platform. This Bit-field is defined
+; above in TYPE 5 structure
+;
+; MEMORY_INFO_1 DEFINE <String, Bank Connection, Supported Speed,
+; Installed size, Enabled size, Bank connection>
+; * String -> Memory Module designator string e.g. "DIMM1"
+; * Bank connection -> RAS line information
+; for more detail refer search for Memory Module
+; Bank connection equate in SMB.EQU
+; * Supported Speed -> The speed of the memory module is defined
+; in unit of ns(nano second). If this field is
+; unknown, the field is set to 0
+; * Installed Size -> The installed size field identify the size
+; of memory module which is installed in the
+; socket. It is determined as under.
+; Bit0-6 : size(n) where 2**n is the size in MB.
+; 7Dh-> Not determinable(installed size only)
+; 7Eh-> Module is installed but not enabled
+; 7Fh-> Not installed
+; Bit 7-> defines the single bank or double bank connection
+; * Enabled Size -> Follow the same as installed size
+; MEMORY_ERR_1 DEFINE <0>
+; * Error Status -> Currently always define 0
+;----------------------------------------------------------------------------
+
+;!!NOTE!!
+; PORT NBSMBIOS.ASM for all the memory related structures.
+; Also note that type 5, 6 and Type 16, 17, 18, 19 and 20 are related
+; even though type 5, 6 are not required by the 2.3.1 spec.
+; Make sure that the number of Memory Modules defined below are equal to
+; NUMBER_OF_MEM_MODULE in SMBIOS.SDL
+
+;!!PORT!!
+ MEMORY_TYPE_1 DEFINE <MM_TYPE_SDRAM, MM_TYPE_DIMM>
+ MEMORY_INFO_1 DEFINE <DIMM0, RAS_1, RAS_2, 60, 512*1024*1024, 512*1024*1024, MM_SINGLE_BANK>
+ MEMORY_ERR_1 DEFINE <0>
+
+ MEMORY_TYPE_2 DEFINE <MM_TYPE_SDRAM, MM_TYPE_DIMM>
+ MEMORY_INFO_2 DEFINE <DIMM1, RAS_3, RAS_4, 60, 512*1024*1024, 512*1024*1024, MM_SINGLE_BANK>
+ MEMORY_ERR_2 DEFINE <0>
+
+ MEMORY_TYPE_3 DEFINE <MM_TYPE_SDRAM, MM_TYPE_DIMM>
+ MEMORY_INFO_3 DEFINE <DIMM2, RAS_5, RAS_6, 60, 512*1024*1024, 512*1024*1024, MM_SINGLE_BANK>
+ MEMORY_ERR_3 DEFINE <0>
+
+ MEMORY_TYPE_4 DEFINE <MM_TYPE_SDRAM, MM_TYPE_DIMM>
+ MEMORY_INFO_4 DEFINE <DIMM3, RAS_7, RAS_8, 60, 512*1024*1024, 512*1024*1024, MM_SINGLE_BANK>
+ MEMORY_ERR_4 DEFINE <0>
+
+ MEMORY_TYPE_5 DEFINE <MM_TYPE_SDRAM, MM_TYPE_DIMM>
+ MEMORY_INFO_5 DEFINE <DIMM4, RAS_9, RAS_10, 60, 512*1024*1024, 512*1024*1024, MM_SINGLE_BANK>
+ MEMORY_ERR_5 DEFINE <0>
+
+ MEMORY_TYPE_6 DEFINE <MM_TYPE_SDRAM, MM_TYPE_DIMM>
+ MEMORY_INFO_6 DEFINE <DIMM5, RAS_11, RAS_12, 60, 512*1024*1024, 512*1024*1024, MM_SINGLE_BANK>
+ MEMORY_ERR_6 DEFINE <0>
+
+;----------------------------------------------------------------------------
+;****************************************************************************
+;****************************************************************************
+;** **
+;** (C)Copyright 1985-2016, American Megatrends, Inc. **
+;** **
+;** All Rights Reserved. **
+;** **
+;** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **
+;** **
+;** Phone: (770)-246-8600 **
+;** **
+;****************************************************************************
+;****************************************************************************
diff --git a/Board/EM/SMBIOS/SMBiosStaticData/Smbhdr.equ b/Board/EM/SMBIOS/SMBiosStaticData/Smbhdr.equ
new file mode 100644
index 0000000..979a0d9
--- /dev/null
+++ b/Board/EM/SMBIOS/SMBiosStaticData/Smbhdr.equ
@@ -0,0 +1,297 @@
+ ECHO --Including: SMBHDR.EQU
+
+; Inclusion guard
+IFNDEF _smbhdr_equ_
+_smbhdr_equ_ EQU 1
+
+;----------------------------------------------------------------------------
+; Do not change any structure definition unless otherwise specified
+;----------------------------------------------------------------------------
+
+;****************************************************************************
+;****************************************************************************
+;** **
+;** (C)Copyright 1985-2009, American Megatrends, Inc. **
+;** **
+;** All Rights Reserved. **
+;** **
+;** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **
+;** **
+;** Phone: (770)-246-8600 **
+;** **
+;****************************************************************************
+;****************************************************************************
+
+;****************************************************************************
+; $Header: /Alaska/BIN/Modules/SMBIOS/SmbiosStaticData/Smbhdr.equ 4 6/02/09 4:47p Davidd $
+;
+; $Revision: 4 $
+;
+; $Date: 6/02/09 4:47p $
+;****************************************************************************
+; Revision History
+; ----------------
+; $Log: /Alaska/BIN/Modules/SMBIOS/SmbiosStaticData/Smbhdr.equ $
+;
+; 4 6/02/09 4:47p Davidd
+; Updated AMI headers (EIP 22180)
+;
+; 3 4/13/07 11:33a Davidd
+; Updated the year in the top and bottom copyright headers.
+;
+; 2 12/15/06 5:34p Davidd
+; Code cleanup and reformatted to coding standard.
+;
+; 1 4/29/05 2:15p Davidd
+; Initial checkin.
+;
+;****************************************************************************
+
+;----------------------------------------------------------------------------
+; This release implements SMBIOS 2.4 specification
+;----------------------------------------------------------------------------
+SMBIOS_VERSION EQU 24h ; 2.4
+SMBIOS_MAJOR_VERSION EQU 02h ; Major Version 2
+SMBIOS_MINOR_VERSION EQU 04h ; Minor Version 4
+
+;----------------------------------------------------------------------------
+; OEM GPNV STRUCTURE INFORMATION
+;----------------------------------------------------------------------------
+MAX_MEMORY_GPNV_DATAID EQU 08h ; max #of dataid in memory mapped GPNV
+MAX_IO_GPNV_DATAID EQU 08h ; max #of dataid in io mapped GPNV
+
+;----------------------------------------------------------------------------
+; EVENT LOG INFORMATION
+;----------------------------------------------------------------------------
+IFDEF MKF_EVENTLOG_VERSION
+ NO_OF_SUPPORTED_EVENTS EQU MKF_NO_OF_SUPPORTED_EVENTS
+ELSE
+ NO_OF_SUPPORTED_EVENTS EQU 06h
+ LENGTH_OF_EACH_LOG_TYPE_DESC EQU 02h
+ENDIF ; MKF_EVENTLOG_VERSION
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; HEADER OF SMBIOS DATA MODULE
+;----------------------------------------------------------------------------
+SMBDataModuleHeaderSTRUC STRUC
+ bSignature BYTE 8 DUP(?) ; _AMIDMI_ signature
+ wSMBIOSVer WORD ? ; SMBIOS Spec Ver#
+ wAMIImplementationVer WORD ? ; AMI Implementation Ver#
+ bConfigurationInfo BYTE ? ; total #of configuration supported (1-based)
+ wLength WORD ? ; length of data module
+ bReserved BYTE ? ; reserved
+SMBDataModuleHeaderSTRUC ENDS
+
+;----------------------------------------------------------------------------
+; SMBIOSInfo Details
+;----------------------------------------------------------------------------
+smbios_runtime_bit EQU 00000001b; 0 = SMBIOS POST active
+ ; 1 = SMBIOS Runtime active
+smbios_gpnv_data_bit EQU 00000010b; 0 = SMBIOS data in GPNV not changed
+ ; 1 = SMBIOS data in GPNV modified
+ ; bit15-2....NOT USED
+
+;----------------------------------------------------------------------------
+; SMBIOS INTERNAL DATA STRUCTURE
+;----------------------------------------------------------------------------
+SMBInternalDataSTRUC STRUC
+ dSMBStorageBase DWORD ? ; memory mapped storage base
+ dSMBStorageSize DWORD ? ; memory mapped storage size
+ wSMBNumRuntimeStruc WORD ? ; #of valid runtime structures
+ wSMBNumRomStruc WORD ? ; #of structures in ROM
+ wSMBRomStructuresLength WORD ? ; total length of all ROM structures
+ wSMBStructuresSegment WORD ? ; Segment of the data structures in RAM
+ wSMBStructuresStart WORD ? ; start of data structures in RAM
+ wSMBCurrentStructuresEnd WORD ? ; end of current data structures in RAM + 1
+ wSMBAvailableStructuresEnd WORD ? ; end of space available for structures + 1
+ wCPUInternalClock WORD ? ; CPU internal clock
+ wExternalClock WORD ? ; CPU Bus clock
+SMBInternalDataSTRUC ENDS
+
+;----------------------------------------------------------------------------
+; SMBIOS INSTALLATION STRUCTURE
+;----------------------------------------------------------------------------
+SMBTableHeaderSTRUC STRUCT
+ bAnchorStr BYTE 4 DUP (?)
+ bChecksum BYTE ?
+ bLength BYTE ?
+ bMajorVer BYTE ?
+ bMinorVer BYTE ?
+ wMaxStrucSize WORD ?
+ bRevision BYTE ?
+ bFormattedArea BYTE 5 DUP (?)
+ bIntAnchorStr BYTE 5 DUP (?)
+ bIntChecksum BYTE ?
+ wStrucTblLen WORD ?
+ dStrucTblAddr DWORD ?
+ wNumSMBStruc WORD ?
+ bSMBRevision BYTE ?
+SMBTableHeaderSTRUC ENDS
+
+;----------------------------------------------------------------------------
+; STRUCTURE OF DATA BUFFER IN SMBIOS FUNCTION 52H
+;----------------------------------------------------------------------------
+SMBIOSFun52BufferSTRUC STRUC
+ bCommand BYTE ?
+ bFieldOffset BYTE ?
+ dChangeMask DWORD ?
+ dChangeValue DWORD ?
+ wDataLength WORD ?
+ dStructureHeader DWORD ?
+ bStructureData BYTE ?
+SMBIOSFun52BufferSTRUC ENDS
+
+;----------------------------------------------------------------------------
+; STRUCTURE OF DATA BUFFER IN SMBIOS FUNCTION 53H
+;----------------------------------------------------------------------------
+SMBIOSFun53BufferSTRUC STRUC
+ bChangeStatus BYTE ?
+ bChangeType BYTE ?
+ wChangeHandle WORD ?
+ bChangeReserved BYTE 12 DUP (?)
+SMBIOSFun53BufferSTRUC ENDS
+
+;----------------------------------------------------------------------------
+; STRUCTURE USED IN FUNC 52H
+;----------------------------------------------------------------------------
+F52_FIELD_ABSENT EQU 0FFh ; absent field
+F52_STRING_DATA_TYPE EQU 80h ; bit-7 = 1..string data type
+ ; 0..binary data
+F52_ONE_TIME_MODIFIABLE = 40h ; bit-6 = 1..one time modifiable
+ ; 0..modifiable always
+F52_BYTE EQU 01h ; length of a BYTE data
+F52_WORD EQU 02h ; length of a WORD data
+F52_DWORD EQU 04h ; length of a DWORD data
+F52_STATUS_MODIFIED EQU 01h ; bit-0 = 1..this field is not modifiable any more
+ ; bit7-1= reserved for future use
+
+;<AMI_SHDR_START>
+;----------------------------------------------------------------------------
+; Name: ModificationHeaderSTRUC
+;
+; Fields: Name Type Description
+; -------------------------------------------------------------
+; wLength WORD length of the information in BYTEs
+; including this word
+; bType BYTE SMBIOS structure type
+;
+; Description:
+;
+;----------------------------------------------------------------------------
+;<AMI_SHDR_END>
+
+ModificationHeaderSTRUC STRUC
+
+ wLength WORD ?
+ bType BYTE ? ; structure type
+
+ModificationHeaderSTRUC ENDS
+
+;<AMI_SHDR_START>
+;----------------------------------------------------------------------------
+; Name: ModificationKeyFieldSTRUC
+;
+; Fields: Name Type Description
+; -------------------------------------------------------------
+; bOffset BYTE offset of the key-field inside the structure
+; FF -> there is no key-field
+; bType BYTE Data Type
+; Bit-7 = 0..Binary Data
+; 1..String Data
+; Bit-6 = 0..modifiable always
+; 1..One time modifiable
+; Bit5-0= reserved for future use
+; bLength BYTE Data Length in Bytes
+; Bit7-0= data length in BYTEs
+; Description:
+;
+;----------------------------------------------------------------------------
+;<AMI_SHDR_END>
+
+ModificationKeyFieldSTRUC STRUC
+
+ bOffset BYTE ? ; offset of the key-field inside the structure
+ ; FF -> there is no key-field
+ bType BYTE ? ; Data Type
+ ; Bit-7 = 0..Binary Data
+ ; 1..String Data
+ ; Bit-6 = 0..modifiable always
+ ; 1..One time modifiable
+ ; Bit5-0= reserved for future use
+ bLength BYTE ? ; Data Length in Bytes
+ ; Bit7-0= data length in BYTEs
+
+ModificationKeyFieldSTRUC ENDS
+
+;<AMI_SHDR_START>
+;----------------------------------------------------------------------------
+; Name: ModificationFieldSTRUC
+;
+; Fields: Name Type Description
+; -------------------------------------------------------------
+; bOffset BYTE offset of the key-field inside the structure
+; FF -> there is no key-field
+; bType BYTE Data Type
+; Bit-7 = 0..Binary Data
+; 1..String Data
+; Bit-6 = 0..modifiable always
+; 1..One time modifiable
+; Bit5-0= reserved for future use
+; bLength BYTE Data Length in Bytes
+; Bit7-0= data length in BYTEs
+; bStatus BYTE Status of the field
+; Description:
+;
+;----------------------------------------------------------------------------
+;<AMI_SHDR_END>
+
+ModificationFieldSTRUC STRUC
+
+ bOffset BYTE ? ; offset of the key-field inside the structure
+ ; FF -> there is no key-field
+ bType BYTE ? ; Data Type
+ ; Bit-7 = 0..Binary Data
+ ; 1..String Data
+ ; Bit-6 = 0..modifiable always
+ ; 1..One time modifiable
+ ; Bit5-0= reserved for future use
+ bLength BYTE ? ; Data Length in Bytes
+ ; Bit7-0= data length in BYTEs
+ bStatus BYTE ? ; status of this field
+
+ModificationFieldSTRUC ENDS
+
+;----------------------------------------------------------------------------
+; EQUATES USED IN SMBIOS FUNCTION 53H
+;----------------------------------------------------------------------------
+; equates used in SMBIOS Change Status
+SMBIOS_NO_CHANGE EQU 00h ; 00h..SMBIOS No Change
+SMBIOS_OTHER_CHANGE EQU 01h ; 01h..SMBIOS Other Change
+SMBIOS_UNKNOWN_CHANGE EQU 02h ; 02h..SMBIOS Unknown Change
+SMBIOS_SINGLE_STRUCTURE_AFFECTED EQU 03h ; 03h..SMBIOS Single Structure Affected
+SMBIOS_MULTIPLE_STRUCTURE_AFFECTED EQU 04h ; 04h..SMBIOS Multiple Structure Affected
+
+; equates used in SMBIOS Change Type
+SMBIOS_ONE_MORE_STRUCTURE_CHANGED EQU 00000001b ; Bit-0 = 1, One/More Structure was changed
+SMBIOS_ONE_MORE_STRUCTURE_ADDED EQU 00000010b ; Bit-1 = 1, One/More Structure was added
+ ; Bit7-2.....Reserved
+
+;----------------------------------------------------------------------------
+; End of Inclusion guard
+ENDIF ;_smbhdr_equ_
+;----------------------------------------------------------------------------
+
+;****************************************************************************
+;****************************************************************************
+;** **
+;** (C)Copyright 1985-2009, American Megatrends, Inc. **
+;** **
+;** All Rights Reserved. **
+;** **
+;** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **
+;** **
+;** Phone: (770)-246-8600 **
+;** **
+;****************************************************************************
+;****************************************************************************
diff --git a/Board/EM/SMBIOS/SMBiosStaticData/SmbiosStaticData.asm b/Board/EM/SMBIOS/SMBiosStaticData/SmbiosStaticData.asm
new file mode 100644
index 0000000..2dea886
--- /dev/null
+++ b/Board/EM/SMBIOS/SMBiosStaticData/SmbiosStaticData.asm
@@ -0,0 +1,259 @@
+;****************************************************************************
+;****************************************************************************
+;** **
+;** (C)Copyright 1985-2016, American Megatrends, Inc. **
+;** **
+;** All Rights Reserved. **
+;** **
+;** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **
+;** **
+;** Phone: (770)-246-8600 **
+;** **
+;****************************************************************************
+;****************************************************************************
+
+;****************************************************************************
+; $Header: /Alaska/BIN/Modules/SMBIOS/SmbiosStaticData/SmbiosStaticData.asm 12 4/07/16 5:53p Davidd $
+;
+; $Revision: 12 $
+;
+; $Date: 4/07/16 5:53p $
+;****************************************************************************
+; Revision History
+; ----------------
+; $Log: /Alaska/BIN/Modules/SMBIOS/SmbiosStaticData/SmbiosStaticData.asm $
+;
+; 12 4/07/16 5:53p Davidd
+; [TAG] EIP231162
+; [Category] New Feature
+; [Description] Merge Aptio V Smbios -09 changes for Aptio 4
+; 4.6.5.5_SMBIOS_40 release
+; [Files] Smbios.sdl
+; SmbiosDynamicData.h
+; Smbios.h
+; SmbiosStaticData.sdl
+; SmbiosStaticData.asm
+; SmbData.mac
+; SmbMacro.aid
+; SmbDesc.def
+;
+; 11 2/17/15 1:06p Davidd
+; [TAG] EIP205509
+; [Category] Improvement
+; [Description] Merge Aptio V Smbios EIP193807, 193858, 196901 changes
+; into Aptio 4 Smbios
+; [Files] SmbiosStaticData.asm
+; Smbdata.mac
+; Smbdesc.def
+;
+; 10 3/26/12 12:02p Davidd
+; [TAG] EIP84370
+; [Category] New Feature
+; [Description] Flash memory(type 16 and 17) on aptio
+; [Files] Smbdata.mac
+; SmbiosStaticData.asm
+; SmbiosStaticData.sdl
+; Smbios.c
+; Smbios.mak
+; Smbios.h
+;
+; 9 2/09/11 10:24a Davidd
+; [TAG] EIP53081
+; [Category] Bug Fix
+; [Severity] Minor
+; [Symptom] Smbios Management Device (type 34) must be enabled in
+; order to
+; see System Power Supply (type 39)
+; [RootCause] Macro to create System Power Supply structure (type 39)
+; was grouped inside macro to create Smbios Management
+; Device
+; (type 34)
+; [Solution] Seperated Type 39 macro from 34.
+; [Files] SmbiosStaticData.asm
+; Smbdata.mac
+; Smbmacro.aid
+; Smbdesc.def
+;
+; 8 4/06/10 10:18a Davidd
+; Removed CreateBiosLanguageInfo. It is now dynamically created if
+; enabled - EIP 34939
+;
+; 7 6/02/09 4:41p Davidd
+; Reformatted for Coding Standard compliance.
+;
+; 6 6/02/09 3:55p Davidd
+; Updated AMI headers (EIP 22180)
+;
+; 5 5/19/09 11:02a Davidd
+;
+; 4 10/13/08 11:15a Davidd
+; Added type 40 and 41 support per SMBIOS specification v2.6
+;
+; 3 3/29/07 4:53p Davidd
+; Changed the year in the AMI banner and adjust indentation to coding
+; standard.
+;
+; 2 12/15/06 5:21p Davidd
+; Code cleanup and reformatted to coding standard.
+;
+; 1 4/29/05 2:15p Davidd
+; Initial checkin.
+;
+;****************************************************************************
+
+;----------------------------------------------------------------------------
+
+ INCLUDE token.equ
+ INCLUDE smbhdr.equ
+ INCLUDE smbmacro.aid
+ INCLUDE smbstruc.def
+ INCLUDE smb.equ
+ INCLUDE smbdata.mac
+ INCLUDE smbdesc.def
+
+;----------------------------------------------------------------------------
+
+SMBIOS_DSEG SEGMENT BYTE PUBLIC 'DATA'
+ ASSUME cs: SMBIOS_DSEG
+.586p
+
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+ PUBLIC _SMBDATA_STARTS
+_smbdata_starts LABEL BYTE ; Marks start of module
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; SMBIOS DATA STRUCTURES
+;----------------------------------------------------------------------------
+
+;SMBDataModuleHeaderSTRUC {'_AMIDMI_',0203h,0101h,00h,offset smbios_structures_end,00h}
+
+;----------------------------------------------------------------------------
+ PUBLIC smbios_structures_start
+smbios_structures_start LABEL BYTE
+
+ handle = 0
+IF MKF_TYPE0_STRUCTURE
+ handle = CreateBiosInfo(handle)
+ENDIF
+IF MKF_TYPE1_STRUCTURE
+ handle = CreateSysInfo(handle)
+ENDIF
+IF MKF_TYPE2_STRUCTURE
+ handle = CreateBaseBoardInfo(handle)
+ENDIF
+IF MKF_TYPE3_STRUCTURE
+ handle = CreateSysChassisInfo(handle)
+ENDIF
+IF MKF_TYPE4_STRUCTURE
+ handle = CreateProcessorInfo(handle)
+ENDIF
+IF MKF_TYPE5_STRUCTURE
+ handle = CreateMemCtrlInfo(handle, handle+1)
+ENDIF
+IF MKF_TYPE6_STRUCTURE
+ handle = CreateMemModuleInfo(handle)
+ENDIF
+IF MKF_TYPE7_STRUCTURE
+ handle = CreateExternalCacheInfo(handle)
+ENDIF
+IF MKF_TYPE8_STRUCTURE
+ handle = CreatePortConnectorInfo(handle)
+ENDIF
+IF MKF_TYPE9_STRUCTURE
+ handle = CreateSystemSlotInfo(handle)
+ENDIF
+IF MKF_TYPE10_STRUCTURE
+ handle = CreateOnboardDeviceInfo(handle)
+ENDIF
+IF MKF_TYPE11_STRUCTURE
+ handle = CreateOemStringInfo(handle)
+ENDIF
+IF MKF_TYPE12_STRUCTURE
+ handle = CreateSystemConfigOptionInfo(handle)
+ENDIF
+IF MKF_TYPE15_STRUCTURE
+ handle = CreateEventLogInfo(handle)
+ENDIF
+IF MKF_TYPE16_STRUCTURE
+ handle = CreateMemoryInfo(handle)
+ENDIF
+IF MKF_FLASH_MEMORY_ARRAY_INFO
+ handle = CreateFlashMemoryInfo(handle)
+ENDIF
+IF MKF_TYPE21_STRUCTURE
+ handle = CreateBuiltinPointingDeviceInfo(handle)
+ENDIF
+IF MKF_TYPE22_STRUCTURE
+ handle = CreatePortableBatteryInfo(handle)
+ENDIF
+IF MKF_TYPE23_STRUCTURE
+ handle = CreateSystemResetInfo(handle)
+ENDIF
+IF MKF_TYPE24_STRUCTURE
+ handle = CreateHardwareSecurityInfo(handle)
+ENDIF
+IF MKF_TYPE25_STRUCTURE
+ handle = CreateSystemPowerControlsInfo(handle)
+ENDIF
+IF MKF_TYPE30_STRUCTURE
+ handle = CreateOutofBandRemoteAccessInfo(handle)
+ENDIF
+IF MKF_TYPE31_STRUCTURE
+ handle = CreateBootIntegrityServicesInfo(handle)
+ENDIF
+IF MKF_TYPE32_STRUCTURE
+ handle = CreateSystemBootInfo(handle)
+ENDIF
+IF MKF_TYPE33_STRUCTURE
+ handle = CreateSixtyFourBitMemoryErrorInfo(handle)
+ENDIF
+IF MKF_TYPE34_STRUCTURE
+ handle = CreateManagementDeviceInfo(handle)
+ENDIF
+IF MKF_TYPE37_STRUCTURE
+ handle = CreateMemoryChannelInfo(handle)
+ENDIF
+IF MKF_TYPE39_STRUCTURE
+ handle = CreateSystemPowerSupplyInfo(handle)
+ENDIF
+IF MKF_TYPE40_STRUCTURE
+ handle = CreateAdditionalInformation(handle)
+ENDIF
+IF MKF_TYPE41_STRUCTURE
+ handle = CreateOnboardDevicesExtendedInfo(handle)
+ENDIF
+IF MKF_TYPE241_STRUCTURE
+ handle = CreateOEMMemoryMappedGpnvInfo(handle)
+ENDIF
+IF MKF_TYPE240_STRUCTURE
+ handle = CreateOEMIOMappedGpnvInfo(handle)
+ENDIF
+IF MKF_TYPE38_STRUCTURE
+ handle = CreateIPMIDeviceInfo(handle)
+ENDIF
+IF MKF_TYPE129_STRUCTURE
+ handle = CreateIntelASFTable(handle)
+ENDIF
+ handle = CreateEndOfTable(handle)
+
+ db MKF_EXTRA_RESERVED_BYTES dup (0FFh) ; Extra Space
+SMBIOS_DSEG ENDS ; End of Segment
+END ; End of File
+
+;----------------------------------------------------------------------------
+;****************************************************************************
+;****************************************************************************
+;** **
+;** (C)Copyright 1985-2016, American Megatrends, Inc. **
+;** **
+;** All Rights Reserved. **
+;** **
+;** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **
+;** **
+;** Phone: (770)-246-8600 **
+;** **
+;****************************************************************************
+;****************************************************************************
diff --git a/Board/EM/SMBIOS/SMBiosStaticData/SmbiosStaticData.cif b/Board/EM/SMBIOS/SMBiosStaticData/SmbiosStaticData.cif
new file mode 100644
index 0000000..1fa2711
--- /dev/null
+++ b/Board/EM/SMBIOS/SMBiosStaticData/SmbiosStaticData.cif
@@ -0,0 +1,17 @@
+<component>
+ name = "SMBIOS - Static Data"
+ category = ModulePart
+ LocalRoot = "Board\EM\SMBIOS\SMBiosStaticData"
+ RefName = "SmbiosStaticData"
+[files]
+"\SmbiosStaticData.sdl"
+"\SmbiosStaticData.mak"
+"\SmbiosStaticData.asm"
+"\SmbiosStaticDataEnd.asm"
+"\SMBDATA.MAC"
+"\SMBSTRUC.DEF"
+"\SMBMACRO.AID"
+"\Smbdesc.def"
+"\SMB.EQU"
+"\Smbhdr.equ"
+<endComponent>
diff --git a/Board/EM/SMBIOS/SMBiosStaticData/SmbiosStaticData.mak b/Board/EM/SMBIOS/SMBiosStaticData/SmbiosStaticData.mak
new file mode 100644
index 0000000..15ccb38
--- /dev/null
+++ b/Board/EM/SMBIOS/SMBiosStaticData/SmbiosStaticData.mak
@@ -0,0 +1,81 @@
+#************************************************************************
+#************************************************************************
+#** **
+#** (C)Copyright 1985-2009, American Megatrends, Inc. **
+#** **
+#** All Rights Reserved. **
+#** **
+#** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **
+#** **
+#** Phone: (770)-246-8600 **
+#** **
+#************************************************************************
+#************************************************************************
+#************************************************************************
+# $Header: /Alaska/BIN/Modules/SMBIOS/SmbiosStaticData/SmbiosStaticData.mak 7 5/15/09 3:26p Davidd $
+#
+# $Revision: 7 $
+#
+# $Date: 5/15/09 3:26p $
+#************************************************************************
+# Revision History
+# ----------------
+# $Log: /Alaska/BIN/Modules/SMBIOS/SmbiosStaticData/SmbiosStaticData.mak $
+#
+# 7 5/15/09 3:26p Davidd
+# Changes made to the build process to support Nested Firmware Volume
+#
+# 6 3/29/07 4:51p Davidd
+# Changed the year in the AMI banner and adjust indentation.
+#
+# 5 3/14/07 2:16p Pavell
+# Changes for ITK
+#
+# 4 11/09/05 2:07p Felixp
+# Type of FFS file changed from RAW to FREEFORM
+#
+# 3 11/07/05 6:18p Davidd
+# Changes made to support AMIBCP.
+#
+# 2 7/20/05 2:59p Davidd
+# Removed masm option /Fl. Listing files are not needed.
+#
+# 1 4/29/05 2:15p Davidd
+# Initial checkin.
+#
+#************************************************************************//
+all : SMBIOS_STATIC
+
+SMBIOS_STATIC : $(BUILD_DIR)\SMBiosStaticData.ffs
+
+$(BUILD_DIR)\SMBiosStaticData.ffs : $(BUILD_DIR)\SMBiosSD.bin
+ $(MAKE) /f Core\FFS.mak \
+ BUILD_DIR=$(BUILD_DIR) \
+ GUID=DAF4BF89-CE71-4917-B522-C89D32FBC59F\
+ TYPE=EFI_FV_FILETYPE_FREEFORM \
+ RESOURCE=$** SECTION_GUID=AB56DC60-0057-11da-A8DB-000102EEE626 \
+ FFSFILE=$@ COMPRESS=1 NAME=SMBiosStaticData
+
+$(BUILD_DIR)\SMBiosSD.bin : $(BUILD_DIR)\SMBiosSD.exe
+ exe2bin $(BUILD_DIR)\SMBiosSD.exe $(BUILD_DIR)\SMBiosSD.bin
+
+$(BUILD_DIR)\SMBiosSD.exe : $(SMBOBJS) $(SMBIOSDATA_DIR)\SMBiosStaticDataEnd.asm $(BUILD_DIR)\timestamp.equ
+ $(ASM) /c /nologo /Fo$(BUILD_DIR)\SMBiosStaticDataEnd.obj $(SMBIOSDATA_DIR)\SMBiosStaticDataEnd.asm
+ $(ASMLINK) $(SMBOBJS) + $(BUILD_DIR)\SMBiosStaticDataEnd.obj, $(BUILD_DIR)\SMBiosSD.exe,$(BUILD_DIR)\SMBiosSD.map,,,
+
+$(BUILD_DIR)\SMBiosStaticData.obj : $(SMBIOSDATA_DIR)\SMBiosStaticData.asm $(BUILD_DIR)\timestamp.equ
+ $(ASM) /c /nologo /Fo$(BUILD_DIR)\SMBiosStaticData.obj $(SMBIOSDATA_DIR)\SMBiosStaticData.asm
+
+#************************************************************************
+#************************************************************************
+#** **
+#** (C)Copyright 1985-2009, American Megatrends, Inc. **
+#** **
+#** All Rights Reserved. **
+#** **
+#** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **
+#** **
+#** Phone: (770)-246-8600 **
+#** **
+#************************************************************************
+#************************************************************************
diff --git a/Board/EM/SMBIOS/SMBiosStaticData/SmbiosStaticData.sdl b/Board/EM/SMBIOS/SMBiosStaticData/SmbiosStaticData.sdl
new file mode 100644
index 0000000..9d05d6b
--- /dev/null
+++ b/Board/EM/SMBIOS/SMBiosStaticData/SmbiosStaticData.sdl
@@ -0,0 +1,4036 @@
+TOKEN
+ Name = "EXTRA_RESERVED_BYTES"
+ Value = "4096"
+ Help = "Number of extra bytes to reserve in addition to the static table."
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "DEFAULT_STRING"
+ Value = "To be filled by O.E.M."
+ Help = "Default unported strings in Smbios static table"
+ TokenType = Expression
+End
+
+##############################################################################
+#
+# TYPE 0 - BIOS INFORMATION
+#
+##############################################################################
+
+TOKEN
+ Name = "TYPE0_STRUCTURE"
+ Value = "1"
+ Help = "ON -> BIOS Information structure will be present\OFF -> BIOS Information structure will not be present"
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "BIOS_VENDOR"
+ Value = "American Megatrends Inc."
+ Help = "Specifies the BIOS Vendor's Name."
+ TokenType = Expression
+ TargetEQU = Yes
+ Lock = Yes
+End
+
+TOKEN
+ Name = "BI_BIOS_START_ADDR"
+ Value = "0F000h"
+ Help = "Segment location of BIOS Starting Address, e.g.0E800h.\NOTE : The size of the runtime BIOS image can be computed by subtracting the Starting Address Segment from 10000h and multiplying the result by 16."
+ TokenType = Integer
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "BIOS_SIZE"
+ Value = "$(FLASH_SIZE)"
+ Help = "Physical size of the flash part containing the BIOS"
+ TokenType = Integer
+ TargetH = Yes
+ TargetEQU = Yes
+End
+
+##############################################################################
+
+TOKEN
+ Name = "BIOS Characteristics"
+ Help = "Defines which functions the BIOS supports. PCI, PCMCIA, Flash, etc."
+ TokenType = Expression
+End
+
+TOKEN
+ Name = "BI_UNKNOWN_CHAR"
+ Value = "0"
+ Help = "BIOS Characteristics Bit 2\ON -> BIOS Characteristics are Unknown\OFF -> BIOS Characteristics are Known "
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "BI_BIOS_CHAR_NOT_SUPPORTED"
+ Value = "0"
+ Help = "BIOS Characteristics Bit 3\ON -> BIOS Characteristics are not Supported\OFF -> BIOS Characteristics are Supported."
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "BI_MCA"
+ Value = "0"
+ Help = "BIOS Characteristics Bit 5\ON -> MCA is Supported.\OFF -> MCA is Not Supported."
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "BI_EISA"
+ Value = "0"
+ Help = "BIOS Characteristics Bit 6\ON -> EISA is Supported.\OFF -> EISA is Not Supported."
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "BI_PCMCIA"
+ Value = "0"
+ Help = "BIOS Characteristics Bit 8\ON -> PC Card (PCMCIA) is Supported.\OFF -> PC Card (PCMCIA) is Not Supported."
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "BI_BIOS_FLASH"
+ Value = "1"
+ Help = "BIOS Characteristics Bit 11\ON -> BIOS is Upgradeable (Flash)\OFF -> BIOS is Not Upgradeable."
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "BI_BIOS_SHADOW"
+ Value = "1"
+ Help = "BIOS Characteristics Bit 12\ON -> BIOS Shadowing is Allowed.\OFF -> BIOS Shadowing is Not Allowed."
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "BI_VL_VESA"
+ Value = "0"
+ Help = "BIOS Characteristics Bit 13\ON -> VL-VESA is Supported.\OFF -> VL-VESA is Not Supported."
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "BI_ESCD"
+ Value = "0"
+ Help = "BIOS Characteristics Bit 14\ON -> ESCD support is Available.\OFF -> ESCD support is Not Available"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "BI_CDROM_BOOT"
+ Value = "1"
+ Help = "BIOS Characteristics Bit 15\ON -> Boot from CD is Supported\OFF -> Boot from CD is Not Supported."
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "BI_SELECTABLE_BOOT"
+ Value = "1"
+ Help = "BIOS Characteristics Bit 16\ON -> Selectable Boot is Supported\OFF -> Selectable Boot is Not Supported"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "BI_BIOS_ROM_SOCKET"
+ Value = "1"
+ Help = "BIOS Characteristics Bit 17\ON -> If the ROM is Socketed\OFF -> If the ROM is Soldered"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "BI_PCMCIA_BOOT"
+ Value = "0"
+ Help = "BIOS Characteristics Bit 18\ON -> Boot from PC Card (PCMCIA) is Supported.\OFF -> Boot from PC Card (PCMCIA) is Not Supported."
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "BI_EDD"
+ Value = "1"
+ Help = "BIOS Characteristics Bit 19\ON -> EDD (Enhanced Disk Drive) Specification is Supported.\OFF -> EDD (Enhanced Disk Drive) Specification is Not Supported."
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "BI_INT13_NEC9800"
+ Value = "0"
+ Help = "BIOS Characteristics Bit 20\ON -> Int13h Japanese Floppy for NEC 9800 1.2MB (3.5inch, 1KBytes/Sector, 360 RPM) is Supported.\OFF -> Does Not Support."
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "BI_INT13_TOSHIBA"
+ Value = "0"
+ Help = "BIOS Characteristics Bit 21\ON -> Int13h Japanese Floppy for Toshiba 1.2MB (3.5inch, 360 RPM) is Supported.\OFF -> Does Not Support."
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "BI_INT13_5_25_360"
+ Value = "0"
+ Help = "BIOS Characteristics Bit 22\ON -> Int13h - 5.25inch/360KB Floppy Services are Supported.\OFF -> Does Not Support."
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "BI_INT13_5_25_1_2"
+ Value = "1"
+ Help = "BIOS Characteristics Bit 23\ON -> Int13h - 5.25inch/1.2MB Floppy Services are Supported.\OFF -> Does Not Support."
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "BI_INT13_3_5_720"
+ Value = "1"
+ Help = "BIOS Characteristics Bit 24\ON -> Int13h - 3.5inch/720KB Floppy Services are Supported.\OFF -> Does Not Support."
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "BI_INT13_3_5_2_88"
+ Value = "1"
+ Help = "BIOS Characteristics Bit 25\ON -> Int13h - 3.5inch/2.88MB Floppy Services are Supported.\OFF -> Does Not Support."
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "BI_INT5_PRINT_SCRN"
+ Value = "1"
+ Help = "BIOS Characteristics Bit 26\ON -> Int5h - Print Screen Service is Supported.\OFF -> Does Not Support."
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "BI_INT14_SERIAL_SVC"
+ Value = "1"
+ Help = "BIOS Characteristics Bit 28\ON -> Int14h - Serial Services are Supported.\OFF -> Does Not Support."
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "BI_INT17_PRN_SVC"
+ Value = "1"
+ Help = "BIOS Characteristics Bit 29\ON -> Int17h - Printer Services are Supported.\OFF -> Does Not Support."
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "BI_INT10_CGA_MONO"
+ Value = "0"
+ Help = "BIOS Characteristics Bit 30\ON -> Int10h - CGA/Mono Video Services are Supported.\OFF -> Does Not Support."
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "BI_NEC_PC_98"
+ Value = "0"
+ Help = "BIOS Characteristics Bit 31\ON -> NEC PC-98 is Supported.\OFF -> NEC PC-98 is Not Supported."
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+##############################################################################
+
+TOKEN
+ Name = "BIOS Characteristics Extension Byte 1"
+ Help = "Optional space reserved for future supported functions. The number of Extension Bytes that are present is indicated by the Length in offset 1 minus 12h."
+ TokenType = Expression
+End
+
+TOKEN
+ Name = "BI_AGP_SUPPORT"
+ Value = "0"
+ Help = "BIOS Characteristics Extension Byte 1 Bit 2\ON -> AGP is Supported.\OFF -> AGP is Not Supported"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "BI_I2O_BOOT_SUP"
+ Value = "0"
+ Help = "BIOS Characteristics Extension Byte 1 Bit 3\ON -> I2O Boot is Supported.\OFF -> I2O Boot is Not Supported."
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "BI_LS120_BOOT_SUP"
+ Value = "0"
+ Help = "BIOS Characteristics Extension Byte 1 Bit 4\ON -> LS-120 Boot is Supported.\OFF -> LS-120 Boot is Not Supported."
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "BI_ATAPI_ZIP_SUP"
+ Value = "0"
+ Help = "BIOS Characteristics Extension Byte 1 Bit 5\ON -> ATAPI ZIP Drive Boot is Supported.\OFF -> ATAPI ZIP Drive Boot is Not Supported."
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "BI_IEEE_1394_SUP"
+ Value = "0"
+ Help = "BIOS Characteristics Extension Byte 1 Bit 6\ON -> 1394 Boot is Supported.\OFF -> 1394 Boot is Not Supported."
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "BI_SMART_BAT_SUP"
+ Value = "0"
+ Help = "BIOS Characteristics Extension Byte 1 Bit 7\ON -> Smart Battery is Supported.\OFF -> Smart Battery is Not Supported."
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+##############################################################################
+
+TOKEN
+ Name = "BIOS Characteristics Extension Byte 2"
+ Help = "Optional space reserved for future supported functions. The number of Extension Bytes that are present is indicated by the Length in offset 1 minus 12h."
+ TokenType = Expression
+End
+
+TOKEN
+ Name = "BBS_SUPPORT"
+ Value = "1"
+ Help = "BIOS Characteristics Extension Byte 2 Bit 0\ON -> Enable BIOS Boot Specification support.\OFF -> Disable BIOS Boot Specification support."
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "NETBOOT_SUPPORT"
+ Value = "0"
+ Help = "BIOS Characteristics Extension Byte 2 Bit 1\ON -> Function key-initiated Network Service boot support enabled. \OFF -> Function key-initiated Network Service boot support disabled."
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "BI_ETCD"
+ Value = "1"
+ Help = "BIOS Characteristics Extension Byte 2 Bit 2\ON -> Enable Targeted Content Distribution is ON.\OFF -> Enable Targeted Content Distribution is OFF."
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "UEFI_SUPPORT"
+ Value = "1"
+ Help = "BIOS Characteristics Extension Byte 2 Bit 3\ON -> UEFI Specification is supported.\OFF -> UEFI Specification is not supported."
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "VIRTUAL_MACHINE"
+ Value = "0"
+ Help = "BIOS Characteristics Extension Byte 2 Bit 4\ON -> The SMBIOS table describes a virtual machine.\OFF -> The SMBIOS table describes a real machine."
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+##############################################################################
+
+TOKEN
+ Name = "ECMA"
+ Value = "0FFh"
+ Help = "Embedded Controller Firmware Major Release.\0FFh = System does not have field upgradeable embedded controller firmware."
+ TokenType = Integer
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "ECMI"
+ Value = "0FFh"
+ Help = "Embedded Controller Firmware Minor Release.\0FFh = System does not have field upgradeable embedded controller firmware."
+ TokenType = Integer
+ TargetEQU = Yes
+End
+
+##############################################################################
+#
+# TYPE 1 - SYSTEM INFORMATION
+#
+##############################################################################
+#
+# The information in this Structure defines attributes of the overall
+# system and is intended to be associated with the Component ID group of
+# the system's MIF.\An SMBIOS implementation is associated with a single
+# system instance and contains one and only one System Information
+# (Type 1) structure.
+#
+##############################################################################
+
+TOKEN
+ Name = "TYPE1_STRUCTURE"
+ Value = "1"
+ Help = "ON -> System Information structure will be present\OFF -> System Information structure will not be present"
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "SYSTEM_MANUFACTURER"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the System Manufacturer Name."
+ TokenType = Expression
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SYSTEM_PRODUCT_NAME"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the System Product Name"
+ TokenType = Expression
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SYSTEM_VERSION"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the System Product Version."
+ TokenType = Expression
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SYSTEM_SERIAL_NUMBER"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the System Serial Number."
+ TokenType = Expression
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SYSTEM_WAKEUP_TYPE"
+ Value = "06h"
+ Help = "Specifies the System Wake-up Type.\00h - Reserved\01h - Other\02h - Unknown\03h - APM Timer\04h - Modem Ring\05h - LAN Remote\06h - Power Switch\07h - PCI PME#\08h - AC Power Restored"
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "01h - 08h"
+End
+
+TOKEN
+ Name = "SYSTEM_SKU_NUMBER"
+ Value = "$(DEFAULT_STRING)"
+ TokenType = Expression
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SYSTEM_FAMILY"
+ Value = "$(DEFAULT_STRING)"
+ TokenType = Expression
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SMBIOS_UUID"
+ Value = "{0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9}"
+ Help = "List of TYPE 1 UUID"
+ TokenType = Expression
+ TargetEQU = Yes
+ TargetMAK = Yes
+ TargetH = Yes
+End
+
+##############################################################################
+#
+# TYPE 2 - BASE BOARD (or MODULE) INFORMATION
+#
+##############################################################################
+#
+# This information in this structure defines attributes of a system
+# baseboard - for example a motherboard, planar, or server blade or other
+# standard system module.
+#
+##############################################################################
+
+TOKEN
+ Name = "BASE_BOARD_INFO"
+ Value = "0"
+ Help = "ON -> BaseBoard Information (Type 2) structure will be present\OFF -> BaseBoard Information (Type 2) structure will not be present\"
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "TYPE2_STRUCTURE"
+ Value = "$(BASE_BOARD_INFO)"
+ Help = "Alternate token name for BASE_BOARD_INFO"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "NUMBER_OF_BASEBOARDS"
+ Value = "1"
+ Help = "Number of Baseboard (Type 2) structure"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+ Token = "BASE_BOARD_INFO" "=" "1"
+End
+
+############################################################################
+# When NUMBER_OF_BASEBOARDS = 1:
+# For backward compatibility, porting information is to be done below
+#
+# When NUMBER_OF_BASEBOARDS > 1:
+# Porting information is to be done in Smbdesc.def file
+############################################################################
+
+TOKEN
+ Name = "BASE_BOARD_MANUFACTURER"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the Board Manufacturer."
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "BASE_BOARD_INFO" "=" "1"
+ Token = "NUMBER_OF_BASEBOARDS" "=" "1"
+End
+
+TOKEN
+ Name = "BASE_BOARD_PRODUCT_NAME"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the Product Name"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "BASE_BOARD_INFO" "=" "1"
+ Token = "NUMBER_OF_BASEBOARDS" "=" "1"
+End
+
+TOKEN
+ Name = "BASE_BOARD_VERSION"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the Product Version."
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "BASE_BOARD_INFO" "=" "1"
+ Token = "NUMBER_OF_BASEBOARDS" "=" "1"
+End
+
+TOKEN
+ Name = "BASE_BOARD_SERIAL_NUMBER"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the Product Serial Number."
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "BASE_BOARD_INFO" "=" "1"
+ Token = "NUMBER_OF_BASEBOARDS" "=" "1"
+End
+
+TOKEN
+ Name = "BB_ASSET_TAG"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the Asset Tag Number of the Base Board."
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "BASE_BOARD_INFO" "=" "1"
+ Token = "NUMBER_OF_BASEBOARDS" "=" "1"
+End
+
+TOKEN
+ Name = "BB_LOC_IN_CHASSIS"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the Location of Base Board in the Chassis."
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "BASE_BOARD_INFO" "=" "1"
+ Token = "NUMBER_OF_BASEBOARDS" "=" "1"
+End
+
+TOKEN
+ Name = "BB_BOARD_TYPE"
+ Value = "0Ah"
+ Help = "Specifies the Base Board type.\\01h - Unknown\02h - Other\03h - Server Blade\04h - Connectivity Switch\05h - System Management Module\06h - Processor Module\07h - I/O Module\08h - Memory Module\09h - Daughter Board\0Ah - Motherboard (includes Processor, Memory, and I/O)\0Bh - Processor/Memory Module\0Ch - Processor/IO Module\0Dh - Interconnect Board"
+ TokenType = Integer
+ TargetEQU = Yes
+ Token = "BASE_BOARD_INFO" "=" "1"
+ Token = "NUMBER_OF_BASEBOARDS" "=" "1"
+End
+
+TOKEN
+ Name = "BB_HOSTING_BOARD"
+ Value = "1"
+ Help = "ON - Board is Hosting Board eg. Motherboard\OFF - Board is not a Hosting Board"
+ TokenType = Boolean
+ TargetEQU = Yes
+ Range = "ON - OFF"
+ Token = "BASE_BOARD_INFO" "=" "1"
+ Token = "NUMBER_OF_BASEBOARDS" "=" "1"
+End
+
+TOKEN
+ Name = "BB_REQUIRE_AUX_BOARD"
+ Value = "0"
+ Help = "ON - Board requires atleast one Daughter Board or Auxiliary card to function properly\OFF - Board can function properly without Daughter Board or Auxilliary Card"
+ TokenType = Boolean
+ TargetEQU = Yes
+ Range = "ON - OFF"
+ Token = "BASE_BOARD_INFO" "=" "1"
+ Token = "NUMBER_OF_BASEBOARDS" "=" "1"
+End
+
+TOKEN
+ Name = "BB_REMOVABLE"
+ Value = "0"
+ Help = "ON - Board is Removable. It is designed to be taken in and out of the Chassis without imaparing the function of the Chassis.\OFF - Board is not Removable."
+ TokenType = Boolean
+ TargetEQU = Yes
+ Range = "ON - OFF"
+ Token = "BASE_BOARD_INFO" "=" "1"
+ Token = "NUMBER_OF_BASEBOARDS" "=" "1"
+End
+
+TOKEN
+ Name = "BB_REPLACEABLE"
+ Value = "1"
+ Help = "ON - Board is Replaceable. It is possible to replace (either as a field repair or upgrade) the board with a physically different one. The board is inherently removable.\OFF - Board is not Replaceable."
+ TokenType = Boolean
+ TargetEQU = Yes
+ Range = "ON - OFF"
+ Token = "BASE_BOARD_INFO" "=" "1"
+ Token = "NUMBER_OF_BASEBOARDS" "=" "1"
+End
+
+TOKEN
+ Name = "BB_HOT_SWAPPABLE"
+ Value = "0"
+ Help = "ON - Board is Hot Swappable. It is possible to replace the board with a physically different but equvalent one while power is applied to the Board. The board is inherently replaceable and removable.\OFF - Board is not Hot Swappable."
+ TokenType = Boolean
+ TargetEQU = Yes
+ Range = "ON - OFF"
+ Token = "BASE_BOARD_INFO" "=" "1"
+ Token = "NUMBER_OF_BASEBOARDS" "=" "1"
+End
+
+TOKEN
+ Name = "NUMBER_OF_OBJECT_HANDLES"
+ Value = "0"
+ Help = "Number of Contained Object Handles"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+ Range = "0-255"
+ Token = "BASE_BOARD_INFO" "=" "1"
+ Token = "NUMBER_OF_BASEBOARDS" "=" "1"
+End
+
+##############################################################################
+#
+# TYPE 3 - SYSTEM ENCLOSURE OR CHASSIS
+#
+##############################################################################
+#
+# The information in this structure defines attributes of the system's
+# mechanical enclosure(s). For example, if the system included a separate
+# enclosure for its peripheral devices, two structures would be returned:
+# one for the main, system enclosure and the second for the peripheral
+# device enclosure.
+#
+##############################################################################
+
+TOKEN
+ Name = "SYS_CHASSIS_INFO"
+ Value = "1"
+ Help = "ON -> System Chassis Information (Type 3) structure will be present\OFF -> System Chassis Information (Type 3) structure will not be present\"
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetH = Yes
+ Lock = Yes
+End
+
+TOKEN
+ Name = "TYPE3_STRUCTURE"
+ Value = "$(SYS_CHASSIS_INFO)"
+ Help = "Alternate token name for SYS_CHASSIS_INFO"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "NUMBER_OF_SYSTEM_CHASSIS"
+ Value = "1"
+ Help = "Number of System Chassis (Type 3) structure"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+ Token = "SYS_CHASSIS_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_MANUFACTURER_1"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the System Chassis Manufacturer."
+ TokenType = Expression
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_MANUFACTURER_2"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the System Chassis Manufacturer."
+ TokenType = Expression
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_MANUFACTURER_3"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the System Chassis Manufacturer."
+ TokenType = Expression
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_MANUFACTURER_4"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the System Chassis Manufacturer."
+ TokenType = Expression
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_MANUFACTURER_5"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the System Chassis Manufacturer."
+ TokenType = Expression
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_LOCK_1"
+ Value = "0"
+ Help = "Bit7 of System Chassis Type\ON => Chassis Lock is present \OFF => Either a Lock is not present or it is unknown if the Chassis or Enclosure has a lock"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_LOCK_2"
+ Value = "0"
+ Help = "Bit7 of System Chassis Type\ON => Chassis Lock is present \OFF => Either a Lock is not present or it is unknown if the Chassis or Enclosure has a lock"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_LOCK_3"
+ Value = "0"
+ Help = "Bit7 of System Chassis Type\ON => Chassis Lock is present \OFF => Either a Lock is not present or it is unknown if the Chassis or Enclosure has a lock"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_LOCK_4"
+ Value = "0"
+ Help = "Bit7 of System Chassis Type\ON => Chassis Lock is present \OFF => Either a Lock is not present or it is unknown if the Chassis or Enclosure has a lock"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_LOCK_5"
+ Value = "0"
+ Help = "Bit7 of System Chassis Type\ON => Chassis Lock is present \OFF => Either a Lock is not present or it is unknown if the Chassis or Enclosure has a lock"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_TYPE_1"
+ Value = "03"
+ Help = "Bits 6:0 - Enumeration Value See Below.\01h - Other\02h - Unknown\03h - Desktop\04h - Low Profile Desktop\05h - Pizza Box\06h - Mini Tower\07h - Tower\08h - Portable\09h - Lap Top\0Ah - Notebook\0Bh - Hand Held\0Ch - Docking Station\0Dh - All in One\0Eh - Sub Notebook\0Fh - Space-saving\10h - Lunch Box\11h - Main Server Chassis\12h - Expansion Chassis\13h - Sub Chassis\14h - Bus Expansion Chassis\15h - Peripheral Chassis\16h - RAID Chassis\17h - Rack Mount Chassis\18h - Sealed-Case PC\19h - Multi-System Chassis. When this value is specified by an SMBIOS implementation, the physical chassis associated with this structure supports multiple, independently reporting physical systems\ - regardless of the chassis' current configuration. Systems in the same physical chassis are required to report the same value in this structure's Serial Number field.\ For a Chassis that may also be configured as either a single system or multiple physical systems, the Multi-System Chassis value is reported even if the chassis is currently configured as a \ Single System. This allows management applications to recognize the multi-system potential of the chassis.\1Ah - CompactPCI\1Bh - AdvancedTCA\1Ch - Blade\1Dh - Blade Enclosure\1Eh - Tablet\1Fh - Convertible\20h - Detachable"
+
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "01h - 19h"
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_TYPE_2"
+ Value = "03"
+ Help = "Bits 6:0 - Enumeration Value See Below.\01h - Other\02h - Unknown\03h - Desktop\04h - Low Profile Desktop\05h - Pizza Box\06h - Mini Tower\07h - Tower\08h - Portable\09h - Lap Top\0Ah - Notebook\0Bh - Hand Held\0Ch - Docking Station\0Dh - All in One\0Eh - Sub Notebook\0Fh - Space-saving\10h - Lunch Box\11h - Main Server Chassis\12h - Expansion Chassis\13h - Sub Chassis\14h - Bus Expansion Chassis\15h - Peripheral Chassis\16h - RAID Chassis\17h - Rack Mount Chassis\18h - Sealed-Case PC\19h - Multi-System Chassis. When this value is specified by an SMBIOS implementation, the physical chassis associated with this structure supports multiple, independently reporting physical systems\ - regardless of the chassis' current configuration. Systems in the same physical chassis are required to report the same value in this structure's Serial Number field.\ For a Chassis that may also be configured as either a single system or multiple physical systems, the Multi-System Chassis value is reported even if the chassis is currently configured as a \ Single System. This allows management applications to recognize the multi-system potential of the chassis.\1Ah - CompactPCI\1Bh - AdvancedTCA\1Ch - Blade\1Dh - Blade Enclosure\1Eh - Tablet\1Fh - Convertible\20h - Detachable"
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "01h - 19h"
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_TYPE_3"
+ Value = "03"
+ Help = "Bits 6:0 - Enumeration Value See Below.\01h - Other\02h - Unknown\03h - Desktop\04h - Low Profile Desktop\05h - Pizza Box\06h - Mini Tower\07h - Tower\08h - Portable\09h - Lap Top\0Ah - Notebook\0Bh - Hand Held\0Ch - Docking Station\0Dh - All in One\0Eh - Sub Notebook\0Fh - Space-saving\10h - Lunch Box\11h - Main Server Chassis\12h - Expansion Chassis\13h - Sub Chassis\14h - Bus Expansion Chassis\15h - Peripheral Chassis\16h - RAID Chassis\17h - Rack Mount Chassis\18h - Sealed-Case PC\19h - Multi-System Chassis. When this value is specified by an SMBIOS implementation, the physical chassis associated with this structure supports multiple, independently reporting physical systems\ - regardless of the chassis' current configuration. Systems in the same physical chassis are required to report the same value in this structure's Serial Number field.\ For a Chassis that may also be configured as either a single system or multiple physical systems, the Multi-System Chassis value is reported even if the chassis is currently configured as a \ Single System. This allows management applications to recognize the multi-system potential of the chassis.\1Ah - CompactPCI\1Bh - AdvancedTCA\1Ch - Blade\1Dh - Blade Enclosure\1Eh - Tablet\1Fh - Convertible\20h - Detachable"
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "01h - 19h"
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_TYPE_4"
+ Value = "03"
+ Help = "Bits 6:0 - Enumeration Value See Below.\01h - Other\02h - Unknown\03h - Desktop\04h - Low Profile Desktop\05h - Pizza Box\06h - Mini Tower\07h - Tower\08h - Portable\09h - Lap Top\0Ah - Notebook\0Bh - Hand Held\0Ch - Docking Station\0Dh - All in One\0Eh - Sub Notebook\0Fh - Space-saving\10h - Lunch Box\11h - Main Server Chassis\12h - Expansion Chassis\13h - Sub Chassis\14h - Bus Expansion Chassis\15h - Peripheral Chassis\16h - RAID Chassis\17h - Rack Mount Chassis\18h - Sealed-Case PC\19h - Multi-System Chassis. When this value is specified by an SMBIOS implementation, the physical chassis associated with this structure supports multiple, independently reporting physical systems\ - regardless of the chassis' current configuration. Systems in the same physical chassis are required to report the same value in this structure's Serial Number field.\ For a Chassis that may also be configured as either a single system or multiple physical systems, the Multi-System Chassis value is reported even if the chassis is currently configured as a \ Single System. This allows management applications to recognize the multi-system potential of the chassis.\1Ah - CompactPCI\1Bh - AdvancedTCA\1Ch - Blade\1Dh - Blade Enclosure\1Eh - Tablet\1Fh - Convertible\20h - Detachable"
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "01h - 19h"
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_TYPE_5"
+ Value = "03"
+ Help = "Bits 6:0 - Enumeration Value See Below.\01h - Other\02h - Unknown\03h - Desktop\04h - Low Profile Desktop\05h - Pizza Box\06h - Mini Tower\07h - Tower\08h - Portable\09h - Lap Top\0Ah - Notebook\0Bh - Hand Held\0Ch - Docking Station\0Dh - All in One\0Eh - Sub Notebook\0Fh - Space-saving\10h - Lunch Box\11h - Main Server Chassis\12h - Expansion Chassis\13h - Sub Chassis\14h - Bus Expansion Chassis\15h - Peripheral Chassis\16h - RAID Chassis\17h - Rack Mount Chassis\18h - Sealed-Case PC\19h - Multi-System Chassis. When this value is specified by an SMBIOS implementation, the physical chassis associated with this structure supports multiple, independently reporting physical systems\ - regardless of the chassis' current configuration. Systems in the same physical chassis are required to report the same value in this structure's Serial Number field.\ For a Chassis that may also be configured as either a single system or multiple physical systems, the Multi-System Chassis value is reported even if the chassis is currently configured as a \ Single System. This allows management applications to recognize the multi-system potential of the chassis.\1Ah - CompactPCI\1Bh - AdvancedTCA\1Ch - Blade\1Dh - Blade Enclosure\1Eh - Tablet\1Fh - Convertible\20h - Detachable"
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "01h - 19h"
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_VERSION_1"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the Chassis Version"
+ TokenType = Expression
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_VERSION_2"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the Chassis Version"
+ TokenType = Expression
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_VERSION_3"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the Chassis Version"
+ TokenType = Expression
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_VERSION_4"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the Chassis Version"
+ TokenType = Expression
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_VERSION_5"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the Chassis Version"
+ TokenType = Expression
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_SERIAL_NUM_1"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the Chassis Serial number"
+ TokenType = Expression
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_SERIAL_NUM_2"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the Chassis Serial number"
+ TokenType = Expression
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_SERIAL_NUM_3"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the Chassis Serial number"
+ TokenType = Expression
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_SERIAL_NUM_4"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the Chassis Serial number"
+ TokenType = Expression
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_SERIAL_NUM_5"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the Chassis Serial number"
+ TokenType = Expression
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_ASSET_TAG_NUM_1"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the Asset Tag Number."
+ TokenType = Expression
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_ASSET_TAG_NUM_2"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the Asset Tag Number."
+ TokenType = Expression
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_ASSET_TAG_NUM_3"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the Asset Tag Number."
+ TokenType = Expression
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_ASSET_TAG_NUM_4"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the Asset Tag Number."
+ TokenType = Expression
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_ASSET_TAG_NUM_5"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the Asset Tag Number."
+ TokenType = Expression
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_BOOT_STATE_1"
+ Value = "03h"
+ Help = "Specifies the state of the System Chassis or enclosure when it was last booted.\01h - Other\02h - Unknown\03h - Safe\04h - Warning\05h - Critical\06h - Non-recoverable"
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "01h - 06h"
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_BOOT_STATE_2"
+ Value = "03h"
+ Help = "Specifies the state of the System Chassis or enclosure when it was last booted.\01h - Other\02h - Unknown\03h - Safe\04h - Warning\05h - Critical\06h - Non-recoverable"
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "01h - 06h"
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_BOOT_STATE_3"
+ Value = "03h"
+ Help = "Specifies the state of the System Chassis or enclosure when it was last booted.\01h - Other\02h - Unknown\03h - Safe\04h - Warning\05h - Critical\06h - Non-recoverable"
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "01h - 06h"
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_BOOT_STATE_4"
+ Value = "03h"
+ Help = "Specifies the state of the System Chassis or enclosure when it was last booted.\01h - Other\02h - Unknown\03h - Safe\04h - Warning\05h - Critical\06h - Non-recoverable"
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "01h - 06h"
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_BOOT_STATE_5"
+ Value = "03h"
+ Help = "Specifies the state of the System Chassis or enclosure when it was last booted.\01h - Other\02h - Unknown\03h - Safe\04h - Warning\05h - Critical\06h - Non-recoverable"
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "01h - 06h"
+End
+
+TOKEN
+ Name = "SYS_PWR_SUPPLY_STATE_1"
+ Value = "03h"
+ Help = "Specifies the state of System Chassis or enclosure's Power Supply(Supplies) when last booted. 01h\01h - Other\02h - Unknown\03h - Safe\04h - Warning\05h - Critical\06h - Non-recoverable"
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "01h - 06h"
+End
+
+TOKEN
+ Name = "SYS_PWR_SUPPLY_STATE_2"
+ Value = "03h"
+ Help = "Specifies the state of System Chassis or enclosure's Power Supply(Supplies) when last booted. 01h\01h - Other\02h - Unknown\03h - Safe\04h - Warning\05h - Critical\06h - Non-recoverable"
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "01h - 06h"
+End
+
+TOKEN
+ Name = "SYS_PWR_SUPPLY_STATE_3"
+ Value = "03h"
+ Help = "Specifies the state of System Chassis or enclosure's Power Supply(Supplies) when last booted. 01h\01h - Other\02h - Unknown\03h - Safe\04h - Warning\05h - Critical\06h - Non-recoverable"
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "01h - 06h"
+End
+
+TOKEN
+ Name = "SYS_PWR_SUPPLY_STATE_4"
+ Value = "03h"
+ Help = "Specifies the state of System Chassis or enclosure's Power Supply(Supplies) when last booted. 01h\01h - Other\02h - Unknown\03h - Safe\04h - Warning\05h - Critical\06h - Non-recoverable"
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "01h - 06h"
+End
+
+TOKEN
+ Name = "SYS_PWR_SUPPLY_STATE_5"
+ Value = "03h"
+ Help = "Specifies the state of System Chassis or enclosure's Power Supply(Supplies) when last booted. 01h\01h - Other\02h - Unknown\03h - Safe\04h - Warning\05h - Critical\06h - Non-recoverable"
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "01h - 06h"
+End
+
+TOKEN
+ Name = "SYS_THERMAL_STATE_1"
+ Value = "03h"
+ Help = "Specifies the state of System Chassis or enclosure's Thermal State when last booted.\01h - Other\02h - Unknown\03h - Safe\04h - Warning\05h - Critical\06h - Non-recoverable"
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "01h - 06h"
+End
+
+TOKEN
+ Name = "SYS_THERMAL_STATE_2"
+ Value = "03h"
+ Help = "Specifies the state of System Chassis or enclosure's Thermal State when last booted.\01h - Other\02h - Unknown\03h - Safe\04h - Warning\05h - Critical\06h - Non-recoverable"
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "01h - 06h"
+End
+
+TOKEN
+ Name = "SYS_THERMAL_STATE_3"
+ Value = "03h"
+ Help = "Specifies the state of System Chassis or enclosure's Thermal State when last booted.\01h - Other\02h - Unknown\03h - Safe\04h - Warning\05h - Critical\06h - Non-recoverable"
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "01h - 06h"
+End
+
+TOKEN
+ Name = "SYS_THERMAL_STATE_4"
+ Value = "03h"
+ Help = "Specifies the state of System Chassis or enclosure's Thermal State when last booted.\01h - Other\02h - Unknown\03h - Safe\04h - Warning\05h - Critical\06h - Non-recoverable"
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "01h - 06h"
+End
+
+TOKEN
+ Name = "SYS_THERMAL_STATE_5"
+ Value = "03h"
+ Help = "Specifies the state of System Chassis or enclosure's Thermal State when last booted.\01h - Other\02h - Unknown\03h - Safe\04h - Warning\05h - Critical\06h - Non-recoverable"
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "01h - 06h"
+End
+
+TOKEN
+ Name = "SYS_SECURE_STATE_1"
+ Value = "03h"
+ Help = "Specifies the System Chassis or enclosure's physical Security Status when last booted.\01h - Other\02h - Unknown\03h - None\04h - External interface locked out\05h - External interface enabled"
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "01h - 05h"
+End
+
+TOKEN
+ Name = "SYS_SECURE_STATE_2"
+ Value = "03h"
+ Help = "Specifies the System Chassis or enclosure's physical Security Status when last booted.\01h - Other\02h - Unknown\03h - None\04h - External interface locked out\05h - External interface enabled"
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "01h - 05h"
+End
+
+TOKEN
+ Name = "SYS_SECURE_STATE_3"
+ Value = "03h"
+ Help = "Specifies the System Chassis or enclosure's physical Security Status when last booted.\01h - Other\02h - Unknown\03h - None\04h - External interface locked out\05h - External interface enabled"
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "01h - 05h"
+End
+
+TOKEN
+ Name = "SYS_SECURE_STATE_4"
+ Value = "03h"
+ Help = "Specifies the System Chassis or enclosure's physical Security Status when last booted.\01h - Other\02h - Unknown\03h - None\04h - External interface locked out\05h - External interface enabled"
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "01h - 05h"
+End
+
+TOKEN
+ Name = "SYS_SECURE_STATE_5"
+ Value = "03h"
+ Help = "Specifies the System Chassis or enclosure's physical Security Status when last booted.\01h - Other\02h - Unknown\03h - None\04h - External interface locked out\05h - External interface enabled"
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "01h - 05h"
+End
+
+TOKEN
+ Name = "SYS_OEM_1"
+ Value = "0000000"
+ Help = "Contains OEM or BIOS Vender Specific Information."
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "DWORD"
+End
+
+TOKEN
+ Name = "SYS_OEM_2"
+ Value = "0000000"
+ Help = "Contains OEM or BIOS Vender Specific Information."
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "DWORD"
+End
+
+TOKEN
+ Name = "SYS_OEM_3"
+ Value = "0000000"
+ Help = "Contains OEM or BIOS Vender Specific Information."
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "DWORD"
+End
+
+TOKEN
+ Name = "SYS_OEM_4"
+ Value = "0000000"
+ Help = "Contains OEM or BIOS Vender Specific Information."
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "DWORD"
+End
+
+TOKEN
+ Name = "SYS_OEM_5"
+ Value = "0000000"
+ Help = "Contains OEM or BIOS Vender Specific Information."
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "DWORD"
+End
+
+TOKEN
+ Name = "SYS_HEIGHT_1"
+ Value = "0"
+ Help = "Specifies the Height of the System Enclosure in 'U's.\1U = 1.75 inches = 4.445cm\0 = UnSpecified Height"
+ TokenType = Integer
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SYS_HEIGHT_2"
+ Value = "0"
+ Help = "Specifies the Height of the System Enclosure in 'U's.\1U = 1.75 inches = 4.445cm\0 = UnSpecified Height"
+ TokenType = Integer
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SYS_HEIGHT_3"
+ Value = "0"
+ Help = "Specifies the Height of the System Enclosure in 'U's.\1U = 1.75 inches = 4.445cm\0 = UnSpecified Height"
+ TokenType = Integer
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SYS_HEIGHT_4"
+ Value = "0"
+ Help = "Specifies the Height of the System Enclosure in 'U's.\1U = 1.75 inches = 4.445cm\0 = UnSpecified Height"
+ TokenType = Integer
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SYS_HEIGHT_5"
+ Value = "0"
+ Help = "Specifies the Height of the System Enclosure in 'U's.\1U = 1.75 inches = 4.445cm\0 = UnSpecified Height"
+ TokenType = Integer
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "NO_PWR_CORDS_1"
+ Value = "1"
+ Help = "Specifies the Number of Power Cords in the System.\0 = UnSpecified"
+ TokenType = Integer
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "NO_PWR_CORDS_2"
+ Value = "1"
+ Help = "Specifies the Number of Power Cords in the System.\0 = UnSpecified"
+ TokenType = Integer
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "NO_PWR_CORDS_3"
+ Value = "1"
+ Help = "Specifies the Number of Power Cords in the System.\0 = UnSpecified"
+ TokenType = Integer
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "NO_PWR_CORDS_4"
+ Value = "1"
+ Help = "Specifies the Number of Power Cords in the System.\0 = UnSpecified"
+ TokenType = Integer
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "NO_PWR_CORDS_5"
+ Value = "1"
+ Help = "Specifies the Number of Power Cords in the System.\0 = UnSpecified"
+ TokenType = Integer
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "ELEMENT_COUNT_1"
+ Value = "0"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+ Range = "0-255"
+End
+
+TOKEN
+ Name = "ELEMENT_COUNT_2"
+ Value = "0"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+ Range = "0-255"
+End
+
+TOKEN
+ Name = "ELEMENT_COUNT_3"
+ Value = "0"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+ Range = "0-255"
+End
+
+TOKEN
+ Name = "ELEMENT_COUNT_4"
+ Value = "0"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+ Range = "0-255"
+End
+
+TOKEN
+ Name = "ELEMENT_COUNT_5"
+ Value = "0"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+ Range = "0-255"
+End
+
+TOKEN
+ Name = "ELEMENT_LEN_1"
+ Value = "3"
+ Help = "Contained Element Record Length"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "ELEMENT_LEN_2"
+ Value = "3"
+ Help = "Contained Element Record Length"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "ELEMENT_LEN_3"
+ Value = "3"
+ Help = "Contained Element Record Length"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "ELEMENT_LEN_4"
+ Value = "3"
+ Help = "Contained Element Record Length"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "ELEMENT_LEN_5"
+ Value = "3"
+ Help = "Contained Element Record Length"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "CONT_ELEMENT_1"
+ Value = "{0,0,0}"
+ Help = "Contained Elements: please specify (ELEMENT_COUNT_1 * ELEMENT_LEN_1) byte entries"
+ TokenType = Expression
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "CONT_ELEMENT_2"
+ Value = "{0,0,0,0,0,0}"
+ Help = "Contained Elements: please specify (ELEMENT_COUNT_2 * ELEMENT_LEN_2) byte entries"
+ TokenType = Expression
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "CONT_ELEMENT_3"
+ Value = "{0,0,0,0,0,0,0,0,0}"
+ Help = "Contained Elements: please specify (ELEMENT_COUNT_3 * ELEMENT_LEN_3) byte entries"
+ TokenType = Expression
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "CONT_ELEMENT_4"
+ Value = "{0,0,0,0,0,0,0,0,0,0,0,0}"
+ Help = "Contained Elements: please specify (ELEMENT_COUNT_4 * ELEMENT_LEN_4) byte entries"
+ TokenType = Expression
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "CONT_ELEMENT_5"
+ Value = "{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}"
+ Help = "Contained Elements: please specify (ELEMENT_COUNT_5 * ELEMENT_LEN_5) byte entries"
+ TokenType = Expression
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_SKU_NUMBER_1"
+ Value = "$(DEFAULT_STRING)"
+ TokenType = Expression
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_SKU_NUMBER_2"
+ Value = "$(DEFAULT_STRING)"
+ TokenType = Expression
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_SKU_NUMBER_3"
+ Value = "$(DEFAULT_STRING)"
+ TokenType = Expression
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_SKU_NUMBER_4"
+ Value = "$(DEFAULT_STRING)"
+ TokenType = Expression
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SYS_CHASSIS_SKU_NUMBER_5"
+ Value = "$(DEFAULT_STRING)"
+ TokenType = Expression
+ TargetEQU = Yes
+End
+
+##############################################################################
+#
+# TYPE 4 - PROCESSOR INFORMATION
+#
+##############################################################################
+#
+# The information in this structure defines the attributes of a single
+# processor; a separate structure instance is provided for each system
+# processor socket/slot. For example, a system with an IntelDX2 processor
+# would have a single structure instance while a system with an IntelSX2
+# processor would have a structure to describe the main CPU and a second
+# structure to describe the 80487 co-processor.
+#
+# NOTE : One structure is provided for each processor instance in a system.
+# For example, a system that supports up to two processors includes two
+# Processor Information Structures - even if only one processor is
+# currently installed. Software that interprets the SMBIOS information
+# can count the Processor Information structures to determine the maximum
+# possible configuration of the system.
+#
+##############################################################################
+
+TOKEN
+ Name = "PROCESSOR_INFO"
+ Value = "1"
+ Help = "ON -> Processor Information (Type 4) structure will be present\OFF -> Processor Information (Type 4) structure will not be present\The number of CPU is defined in CPU.SDL as NCPU.\Total number of processors will be NCPU ( specified in CPU.SDL) \Currenty there is support for 4 Processors. \To support more processores modify in SMBDESC.DEF and SMBIOS.SDL"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "TYPE4_STRUCTURE"
+ Value = "$(PROCESSOR_INFO)"
+ Help = "Alternate token name for PROCESSOR_INFO"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "NO_OF_PROCESSOR_SOCKETS"
+ Value = "1"
+ Help = "Specifies the Number of Physical Processors (Number of Processor Sockets) in the System."
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+ Range = "1, 2, 3.........."
+End
+
+##############################################################################
+#
+# TYPE 5 - MEMORY CONTROLLER INFORMATION
+#
+##############################################################################
+#
+# NOTE : This structure, and its companion Memory Module Information
+# (Type 6), are OBSOLETE starting with version 2.1 of this specification;
+# The Physical Memory Array (Type 16) and Memory Device (Type 17)
+# structures, should be used instead to allow proper population of the
+# DMI 2.0 required groups. The information in this structure defines the
+# attributes of the system's memory controller(s) and the supported
+# attributes of any memory-modules present in the sockets controlled by
+# this controller.
+#
+##############################################################################
+
+TOKEN
+ Name = "MEM_CTRL_INFO"
+ Value = "0"
+ Help = "ON -> Memory Controller Information (Type 5) structure will be present\OFF -> Memory Controller Information (Type 5) structure will not be present.\The following information is needed only if MEMORY_CONTROLLER_INFO = Present. This structure (TYPE 5) is associated with MEMORY MODULE Structure(Type 6)\Handle information of Type 6 is defined in this structure."
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "TYPE5_STRUCTURE"
+ Value = "$(MEM_CTRL_INFO)"
+ Help = "Alternate token name for MEM_CTRL_INFO"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "MEM_CTRL_EDD"
+ Value = "06h"
+ Help = "Please enter the proper value as per the SMBIOS spec 2.3.1"
+ TokenType = Integer
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "MEM_CTRL_INTRLV"
+ Value = "03h"
+ Help = "Please enter the proper value as per the SMBIOS spec 2.3.1"
+ TokenType = Integer
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "MAX_MEM_MODULE_SIZE"
+ Value = "2048"
+ Help = "Specify size in terms of MB only!!!"
+ TokenType = Integer
+ TargetEQU = Yes
+End
+
+##############################################################################
+
+TOKEN
+ Name = "Memory Controller ECC"
+ Help = "Following are the bit fiels according to SMBIOS 2.3.1"
+ TokenType = Integer
+End
+
+TOKEN
+ Name = "MCE_OTHER"
+ Value = "0"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "MCE_UNKNOWN"
+ Value = "0"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "MCE_NONE"
+ Value = "1"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "MCE_SINGLE_BIT_ECC"
+ Value = "0"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "MCE_DOUBLE_BIT_ECC"
+ Value = "0"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "MCE_ERROR_SCRUBBING"
+ Value = "0"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+##############################################################################
+
+TOKEN
+ Name = "MEMORY CONTROLLER SUPPORTED SPEED"
+ Help = "Followin are the bit fields as per SMBIOS 2.3.1 topic 3.3.64"
+ TokenType = Integer
+End
+
+TOKEN
+ Name = "SS_OTHER "
+ Value = "0"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SS_UNKNOWN "
+ Value = "0"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SS_70NS"
+ Value = "1"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SS_60NS"
+ Value = "1"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "SS_50NS"
+ Value = "0"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+##############################################################################
+
+TOKEN
+ Name = "MEMORY CONTROLLER SUPPORTED MEMORY TYPES"
+ Help = "Following are the supported memory types as per SMBIOS 2.3.1 topic 3.3.7.1"
+ TokenType = Integer
+End
+
+TOKEN
+ Name = "TYPE_OTHER"
+ Value = "0"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "TYPE_UNKNOWN"
+ Value = "0"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "TYPE_STANDARD"
+ Value = "0"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "TYPE_FAST_PAGE_MODE"
+ Value = "0"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "TYPE_EDO"
+ Value = "0"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "TYPE_PARITY"
+ Value = "0"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "TYPE_ECC"
+ Value = "0"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "TYPE_SIMM"
+ Value = "0"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "TYPE_DIMM"
+ Value = "1"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "TYPE_BURST_EDO"
+ Value = "0"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "TYPE_SDRAM"
+ Value = "1"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+##############################################################################
+
+TOKEN
+ Name = "MEMORY MODULE VOTAGE SUPPORT"
+ Help = "Following are bit fiels according to SMBIOS 2.3.1"
+ TokenType = Integer
+End
+
+TOKEN
+ Name = "MM_VOLTAGE_29V"
+ Value = "0"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "MM_VOLTAGE_33V"
+ Value = "1"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "MM_VOLTAGE_5V"
+ Value = "0"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+##############################################################################
+#
+# TYPE 6 - MEMORY MODULE INFORMATION
+#
+##############################################################################
+#
+# NOTE : This structure, and its companion Memory Controller Information
+# (Type 5), are OBSOLETE starting with version 2.1 of this specification;
+# The Physical Memory Array (Type 16) and Memory Device (Type 17)
+# structures, should be used instead to allow proper population of the
+# DMI 2.0 required groups. One Memory Module Information structure is
+# included for each memory-module socket in the system. The information
+# in this structure describes the Speed, Type, Size and Error Status of
+# each system memory module. The supported attributes of each module are
+# described by the 'owning' Memory Controller Information Structure.
+#
+##############################################################################
+
+TOKEN
+ Name = "MEM_MODULE_INFO"
+ Value = "0"
+ Help = "ON -> Memory Module Information structure will be present\OFF -> Memory Module Information structure will not be present\Make sure to put proper Memory Module information under section 'Structure Type 6 : MEMORY MODULE INFORMATION' in file SMBDESC.DEF\Port 'get_mem_module_info' from NBSMBIOS.ASM"
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "TYPE6_STRUCTURE"
+ Value = "$(MEM_MODULE_INFO)"
+ Help = "Alternate token name for MEM_MODULE_INFO"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+##############################################################################
+#
+# TYPE 7 - CACHE INFORMATION
+#
+##############################################################################
+#
+# The information in this Structure defines the attributes of CPU Cache
+# device in the System. One structure is specified for each such device,
+# whether the device is internal to or external to the CPU module. Cache
+# modules can be associated with a Processor structure in one or two ways
+# depending on the SMBIOS version. CPU module will update the internal
+# cache structure as its updationg the processor structures.
+#
+##############################################################################
+
+TOKEN
+ Name = "NUMBER_OF_PROC_CACHE"
+ Value = "3"
+ Help = "Number of Processor Cache Present.\NOTE: DO NOT CHANGE THE VALUE."
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetMAK = Yes
+ Lock = Yes
+ Range = "1-8"
+End
+
+TOKEN
+ Name = "EXTERNAL_CACHE_INFORMATION"
+ Value = "0"
+ Help = "If you have external Cache define it in SMBDESC.DEF file and trun this flag ON\Make sure that functions 'ExternalCacheInit_FAR' from SMBPORT.ASM and \'CSPHk_get_ext_cache_info_FAR' from NBSMBIOS.ASM are properly ported."
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "TYPE7_STRUCTURE"
+ Value = "$(EXTERNAL_CACHE_INFORMATION)"
+ Help = "Alternate token name for EXTERNAL_CACHE_INFORMATION"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+##############################################################################
+#
+# TYPE 8 - PORT CONNECTOR INFORMATION
+#
+##############################################################################
+#
+# The information in this structure defines the attributes of a system
+# port connector, e.g. parallel, serial, keyboard, or mouse ports. The
+# Port's type and Connector information are provided. One structure is
+# present for each port provided by the system.
+#
+##############################################################################
+
+TOKEN
+ Name = "PORT_CONNECTOR_INFO"
+ Value = "1"
+ Help = "Turn this flag Off for not generating the Type 8 structures"
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "TYPE8_STRUCTURE"
+ Value = "$(PORT_CONNECTOR_INFO)"
+ Help = "Alternate token name for PORT_CONNECTOR_INFO"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "NUMBER_OF_EXT_PORT_CONNECTORS"
+ Value = "8"
+ Help = "Number of External Port Connectors in the Sytem."
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "0 - 20"
+End
+
+TOKEN
+ Name = "NUMBER_OF_INT_PORT_CONNECTORS"
+ Value = "16"
+ Help = "Number of Internal Port Connectors in the System."
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "0 - 20"
+End
+
+##############################################################################
+#
+# TYPE 9 - SYSTEM SLOTS
+#
+##############################################################################
+#
+# The information in this structure defines the attributes of a system
+# slot. One structure is provided for each slot in the system.
+#
+##############################################################################
+
+TOKEN
+ Name = "SYSTEM_SLOT_INFO"
+ Value = "1"
+ Help = "ON -> System Slot Information structure will be present\OFF -> System Slot Information structure will not be present"
+ TokenType = Boolean
+ TargetEQU = Yes
+ Lock = Yes
+End
+
+TOKEN
+ Name = "TYPE9_STRUCTURE"
+ Value = "$(SYSTEM_SLOT_INFO)"
+ Help = "Alternate token name for SYSTEM_SLOT_INFO"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "NUMBER_OF_SYSTEM_SLOTS"
+ Value = "5"
+ Help = "Identifies the number of system slots available on platform including the AGP slot.\"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "AGP_BRIDGE_BUS_DEV_FUNC_NO"
+ Value = "08H"
+ Help = "This variable contains the Bus#, dev#, func# of the AGP Bridge. A value of FFFF means no AGP Bridge present.\Bit 15-8 = Bus#\Bit7-3 = Device#\Bit2-0 = Function#"
+ TokenType = Integer
+ TargetEQU = Yes
+End
+
+##############################################################################
+#
+# TYPE 10 - ON BOARD DEVICES INFORMATION
+#
+##############################################################################
+#
+# The information in this structure defines the attributes of devices that
+# are onboard (soldered onto) a system element, usually the baseboard. In
+# general, an entry in this table implies that the BIOS has some level of
+# control over the enabling of the associated device for use by the system.
+#
+##############################################################################
+
+TOKEN
+ Name = "ONBOARD_DEVICE_INFO"
+ Value = "1"
+ Help = "ON -> Onboard Device Information structure will be present\OFF -> OnBoard Device Information structure will not be present\The following information is needed only if ONBOARD_DEVICE_INFO = Present\Syntax: ONBOARD_DEVICE_X DEFINE <Enabled or Disabled, Onboard Device Type, Descrition String>\ Onboard device status -> Describes the status(enabled/disabled) of on board device\ On board device Type -> Video, Audio, SCSI etc... for more detail search for On-board device Type equates in structure Type 10, refer SMB.EQU\ Description String -> Describes the on board device e.g.'Video', 'Audio' etc.."
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "TYPE10_STRUCTURE"
+ Value = "$(ONBOARD_DEVICE_INFO)"
+ Help = "Alternate token name for ONBOARD_DEVICE_INFO"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "NUMBER_OF_ONBOARD_DEVICES"
+ Value = "1"
+ Help = "Number of Onboard Devices Present in the System."
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+##############################################################################
+#
+# TYPE 11 - OEM STRINGS
+#
+##############################################################################
+#
+# This structure contains free form strings defined by the OEM.
+#
+# Examples of this are: Part Numbers for Reference Documents for the sytem,
+# contact information for the manufacturer, etc.
+#
+##############################################################################
+
+TOKEN
+ Name = "OEM_STRING_INFO"
+ Value = "1"
+ Help = "ON -> OEM String Information structure will be present\OFF -> OEM String Information structure will not be present\Enter the related information in file SMBDESC.DEF"
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "TYPE11_STRUCTURE"
+ Value = "$(OEM_STRING_INFO)"
+ Help = "Alternate token name for OEM_STRING_INFO"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "NUMBER_OF_OEM_STRINGS"
+ Value = "1"
+ Help = "NUMBER OF OEM STRINGS\identifies the total number of OEM strings defined for this structure."
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+ Range = "1-32"
+End
+
+TOKEN
+ Name = "OEM_STRING_1"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the OEM STRING"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "OEM_STRING_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "OEM_STRING_2"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the OEM STRING"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "OEM_STRING_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "OEM_STRING_3"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the OEM STRING"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "OEM_STRING_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "OEM_STRING_4"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the OEM STRING"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "OEM_STRING_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "OEM_STRING_5"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the OEM STRING"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "OEM_STRING_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "OEM_STRING_6"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the OEM STRING"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "OEM_STRING_INFO" "=" "1"
+End
+
+##############################################################################
+#
+# TYPE 12 - SYSTEM CONFIGURATION OPTIONS
+#
+##############################################################################
+#
+# This structure contains information required to configure the Base
+# Board's Jumpers and Switches.
+#
+# Examples of this are:
+# JP2: 1-2 Cache Size is 256K, 2-3 Cache Size is 512K
+# SW1-1: Close to Disable On Board Video'
+#
+##############################################################################
+
+TOKEN
+ Name = "SYSTEM_CONFIG_OPTION_INFO"
+ Value = "1"
+ Help = "ON -> System Configuration Strings Information structure will be present\OFF -> System Configuration Strings Information structure will not be present\Please port necessary structures from file SMBDESC.DEF"
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "TYPE12_STRUCTURE"
+ Value = "$(SYSTEM_CONFIG_OPTION_INFO)"
+ Help = "Alternate token name for SYSTEM_CONFIG_OPTION_INFO"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "NUMBER_OF_SYSTEM_CONFIG_STRINGS"
+ Value = "1"
+ Help = "NUMBER OF SYSTEM CONFIGURATION STRINGS\identifies the total number of strings defined for this structure."
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+ Range = "1-32"
+End
+
+TOKEN
+ Name = "SYSTEM_CONFIG_STRING_1"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the OEM SYSTEM CONFIG STRING"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "SYSTEM_CONFIG_OPTION_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "SYSTEM_CONFIG_STRING_2"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the OEM STRING"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "SYSTEM_CONFIG_OPTION_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "SYSTEM_CONFIG_STRING_3"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the OEM STRING"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "SYSTEM_CONFIG_OPTION_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "SYSTEM_CONFIG_STRING_4"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the OEM STRING"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "SYSTEM_CONFIG_OPTION_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "SYSTEM_CONFIG_STRING_5"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the OEM STRING"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "SYSTEM_CONFIG_OPTION_INFO" "=" "1"
+End
+
+##############################################################################
+#
+# TYPE 13 - BIOS LANGUAGE INFORMATION
+#
+##############################################################################
+#
+# The information in this structure defines the installable language
+# attributes of the BIOS.
+#
+##############################################################################
+
+TOKEN
+ Name = "BIOS_LANGUAGE_INFO"
+ Value = "1"
+ Help = "ON -> Bios Language Information structure will be present\OFF -> Bios Language Information structure will not be present"
+ TokenType = Boolean
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "BIOS_LANGUAGE_FORMAT"
+ Value = "0"
+ Help = "Format of the Language Strings.\ OFF -> Strings use Long Format ON -> Strings use Abbreviated Fomat \US English <en|US|iso8859 - 1> <enUS>\French Canadian <fr|CA|iso8859-1> <frCA>\Japanese <ja|JP|unicode> <jaJP>\Espanol <es|ES|iso8859-1> <esES>\Dutch <de|DE|iso8859-1> <deDE>\Italian <it|IT|iso8859-1> <itIT>"
+ TokenType = Boolean
+ TargetH = Yes
+End
+
+##############################################################################
+#
+# TYPE 14 - GROUP ASSOCIATION INFORMATION
+#
+##############################################################################
+#
+# Not supported by BIOS
+#
+##############################################################################
+
+##############################################################################
+#
+# TYPE 15 - SYSTEM EVENT LOG
+#
+##############################################################################
+#
+# The presence of this structure within the SMBIOS data returned for a
+# system indicates that the system supports an Event Log. An event Log is
+# a fixed-length area within a non-volatile storage element, starting with
+# a fixed-length (and vendor-specific) header record, followed by one or
+# more variable-length log records.
+#
+##############################################################################
+
+TOKEN
+ Name = "EVENT_LOG_INFO"
+ Value = "0"
+ Help = "ON -> Event-log Information structure will be present\OFF -> Event-log Information structure will not be present\"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "TYPE15_STRUCTURE"
+ Value = "$(EVENT_LOG_INFO)"
+ Help = "Alternate token name for EVENT_LOG_INFO"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "NO_OF_SUPPORTED_EVENTS"
+ Value = "10h"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetMAK = Yes
+End
+
+##############################################################################
+#
+# TYPE 16 - PHYSICAL MEMORY ARRAY
+#
+##############################################################################
+#
+# This structure describes a collection of memory devices that operate
+# together to form a memory address space.
+#
+##############################################################################
+
+TOKEN
+ Name = "TYPE16_STRUCTURE"
+ Value = "1"
+ Help = "ON -> Physical Memory Array Information structure will be present\OFF -> Physical Memory Array Information structure will not be present"
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "FLASH_MEMORY_ARRAY_INFO"
+ Value = "0"
+ Help = "ON -> Flash Memory Array Information (Type 16,17,19,20) structures will be present.\OFF -> Flash Memory Array Information (Type 16,17,19,20) structures will not be present."
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "NO_OF_PHYSICAL_MEMORY_ARRAY"
+ Value = "1"
+ Help = "Specifies the Total number of Physical Arrays in the System."
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+ Range = "1 - 5"
+End
+
+TOKEN
+ Name = "A1_MEMORY_SOCKETS"
+ Value = "4"
+ Help = "Number of Memory Modules/Slots in the first Physical Memory Array\Attention: If the number of memory sockets are more than the device entries in porting file SMBDESC.DEF (e.g. 32 devices by default as in A1_DEVICE_32) then the device entry list needs to be extended to accomodate the number of memory slots requuired"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "A2_MEMORY_SOCKETS"
+ Value = "0"
+ Help = "Number of Memory Modules/Slots in the second Physical Memory Array\Attention: If the number of memory sockets are more than the device entries in porting file SMBDESC.DEF (e.g. 32 devices by default as in A1_DEVICE_32) then the device entry list needs to be extended to accomodate the number of memory slots requuired"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+ Token = "NO_OF_PHYSICAL_MEMORY_ARRAY" ">" "1"
+End
+
+TOKEN
+ Name = "A3_MEMORY_SOCKETS"
+ Value = "0"
+ Help = "Number of Memory Modules/Slots in the third Physical Memory Array\Attention: If the number of memory sockets are more than the device entries in porting file SMBDESC.DEF (e.g. 32 devices by default as in A1_DEVICE_32) then the device entry list needs to be extended to accomodate the number of memory slots requuired"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+ Token = "NO_OF_PHYSICAL_MEMORY_ARRAY" ">" "2"
+End
+
+TOKEN
+ Name = "A4_MEMORY_SOCKETS"
+ Value = "0"
+ Help = "Number of Memory Modules/Slots in the fourth Physical Memory Array\Attention: If the number of memory sockets are more than the device entries in porting file SMBDESC.DEF (e.g. 32 devices by default as in A1_DEVICE_32) then the device entry list needs to be extended to accomodate the number of memory slots requuired"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+ Token = "NO_OF_PHYSICAL_MEMORY_ARRAY" ">" "3"
+End
+
+##############################################################################
+#
+# TYPE 17 - MEMORY DEVICE INFORMATION
+#
+##############################################################################
+#
+# This structure describes a single memory device that is a part of a
+# larger Physical Memory Array (Type 16).
+#
+# NOTE: If a system includes memory-device sockets, the SMBIOS
+# implementation includes a Memory Device structure instance for each
+# slot whether or not the socket is currently populated.
+#
+##############################################################################
+
+##############################################################################
+#
+# TYPE 18 - 32-BIT MEMORY ERROR INFORMATION
+#
+##############################################################################
+#
+# This structure identifies the specifics of an error that might be
+# detected within a Physical Memory Array.
+#
+##############################################################################
+
+TOKEN
+ Name = "MEMORY_ERROR_INFO"
+ Value = "0"
+ Help = "ON -> Memory Error Information (Type 18) structures will be present.\OFF -> Memory Error Information (Type 18) structures will not be present."
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "MEMORY_ERROR_TYPE"
+ Value = "02h"
+ Help = "The type of error that is associated with the current status reported for the Memory Array or Device.\01h - Other\02h - Unknown\03h - OK\04h - Bad Read\05h - Parity Error\06h - Single-Bit Error\07h - Double-Bit Error\08h - Multi-Bit Error\09h - Nibble Error\0Ah - CheckSum Error\0Bh - CRC Error\0Ch - Corrected Single-Bit Error\0Dh - Corrected Error\0Eh - UnCorrectable Error"
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "0h - 0Eh"
+End
+
+TOKEN
+ Name = "ERROR_GRANULARITY"
+ Value = "02h"
+ Help = "Specifies the granularity, e.g. device vs. Partition, to which the error can be resolved.\01h - Other\02h - Unknown\03h - Device Level\04h - Memory Partition Level"
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "01h - 04h"
+End
+
+TOKEN
+ Name = "ERROR_OPERATION"
+ Value = "02h"
+ Help = "Specifies the Memory Access Operation that caused the Error.\01h - Other\02h - Unknown\03h - Read\04h - Write\05h - Partial Write"
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "1 - 5"
+End
+
+TOKEN
+ Name = "VENDOR_SYNDROME"
+ Value = "00000000h"
+ Help = "Specifies the Vendor-Specific ECC Syndrome or CRC Data associated with the erroneous Access.\If the value is Unknown, this field is 0000 0000h"
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "0 - 0FFFFFFFFh"
+End
+
+TOKEN
+ Name = "MEMORY_ARRAY_ERROR_ADDRESS"
+ Value = "80000000h"
+ Help = "Specifies the 32-bit Pbysical Address of the Error Based on the Addressing of the Bus to which the Memory Array is connected.\If the address is Unknown, this field contains 8000 0000h"
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "0 - 0FFFFFFFFh"
+End
+
+TOKEN
+ Name = "DEVICE_ERROR_ADDRESS"
+ Value = "80000000h"
+ Help = "Specifies the 32-bit Physical Address of the Error Relative to the Start of the Failing Memory Device, in Bytes.\If the address is Unknown, this field contains 8000 0000h"
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "0 - 0FFFFFFFFh"
+End
+
+TOKEN
+ Name = "ERROR_RESOLUTION"
+ Value = "80000000h"
+ Help = "Specifies the range, in bytes, within which the Error can be determined, when an Error Address is given.\If the range is Unknown, this field contains 8000 0000h"
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "0 - 0FFFFFFFFh"
+End
+
+##############################################################################
+#
+# TYPE 19 - MEMORY ARRAY MAPPED ADDRESS
+#
+##############################################################################
+#
+# This structure provides the Address mapping for a Physical Memory Array.
+# One structure is present for each contiguous address range described.
+#
+##############################################################################
+
+TOKEN
+ Name = "ARRAY_MAPPED_STARTING_ADDRESS"
+ Value = "00000000h"
+ Help = "Specifies the Physical Address, in KiloBytes, of a range of memory mapped to the specified Physical Memory Array."
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "0 - 0FFFFFFFFh"
+End
+
+TOKEN
+ Name = "ARRAY_MAPPED_ENDING_ADDRESS"
+ Value = "00000000h"
+ Help = "Specifies the Physical Ending Address of the last KiloByte of a range of Addresses mapped to the specified Physical Memory Array."
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "0 - 0FFFFFFFFh"
+End
+
+TOKEN
+ Name = "PARTITION_WIDTH"
+ Value = "00h"
+ Help = "Specifies the Number of Memory Devices that form a single row or Memory for the address partition defined by this structure."
+ TokenType = Integer
+ TargetEQU = Yes
+End
+
+##############################################################################
+#
+# TYPE 20 - MEMORY DEVICE MAPPED ADDRESS
+#
+##############################################################################
+#
+# This structure maps Memory Address space usually to a Device-Level
+# granularity. One structure is present for each contiguous address range
+# described.
+#
+# NOTE: A Memory Device Mapped Address structure is provided only if a
+# Memory Device has a mapped address - there is no provision within this
+# structure to map a zero-length address space.
+#
+##############################################################################
+
+TOKEN
+ Name = "MEMORY_DEVICE_INFO"
+ Value = "1"
+ Help = "ON -> Memory Device Mapped Address Information (Type 20) structures will be present.\OFF -> Memory Device Mapped Address Information (Type 20) structures will not be present."
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "MEMORY_DEVICE_STARTING_ADDRESS"
+ Value = "00000000h"
+ Help = "Specifies the Physical Address, in KiloBytes, of a range of Memory Mapped to the referenced Memory Device."
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "0 - 0FFFFFFFFh"
+End
+
+TOKEN
+ Name = "MEMORY_DEVICE_ENDING_ADDRESS"
+ Value = "00000000h"
+ Help = "Specifies the Physical Ending Address of the last KiloByte of a range of Addresses mapped to the referenced Memory Device."
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "0 - 0FFFFFFFFh"
+End
+
+TOKEN
+ Name = "NO_OF_DEVICES_IN_ROW"
+ Value = "01h"
+ Help = "Specifies the Number of Memory Devices that form a Row.\For example, if two 8-bit devices form a 16-bit row, this field's value will be 2 or if two 64-bit devices form a 128-bit row then also the field's value will be 2.\or if 1 64-bit device form a 64-bit row then the field's value will be 1."
+ TokenType = Integer
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "INTERLEAVE_DATA_DEPTH"
+ Value = "00h"
+ Help = "Specifies the maximum number of consecutive rows from the referenced Memory Device that are accessed in a single interleaved transfer.\If the device is not part of an interleave, the field contains 0; if the interleave configuration is Unknown, the value is 0FFh.\For example, if a device transfers two rows each time it is read, its Interleaved Data Depth is set to 2.\If that device is 2:1 interleaved and in Interleave Position 1, the rows mapped to that device are 1,2,5,6,9,10, etc."
+ TokenType = Integer
+ TargetEQU = Yes
+End
+
+##############################################################################
+#
+# TYPE 21 - BUILT-IN POINTING DEVICE
+#
+##############################################################################
+#
+# This Structure describes the attributes of the built-in pointing device
+# for the system. The presence of this structure does not imply that the
+# built-in pointing device is active for the system's use.
+#
+##############################################################################
+
+TOKEN
+ Name = "BUILTIN_POINTING_DEVICE_INFO"
+ Value = "0"
+ Help = "ON -> Built In Pointing Device Information (Type 21) structure will be present\OFF -> Built In Pointing Device Information (Type 21) structure will not be present"
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "TYPE21_STRUCTURE"
+ Value = "$(BUILTIN_POINTING_DEVICE_INFO)"
+ Help = "Alternate token name for BUILTIN_POINTING_DEVICE_INFO"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "NO_OF_POINTING_DEVICE"
+ Value = "01h"
+ Help = "Specifies the number of Pointing Device."
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "01h - 05h"
+End
+
+##############################################################################
+#
+# TYPE 22 - PORTABLE BATTERY
+#
+##############################################################################
+#
+# This Structure describes the attributes of the Portable Battery(s) for
+# the System. The Structure contains the static attributes for the group.
+# Each structure describes a single battery pack's attributes.
+#
+##############################################################################
+
+TOKEN
+ Name = "PORTABLE_BATTERY_INFO"
+ Value = "0"
+ Help = "ON -> Portable Battery Information (Type 22) structure will be present\OFF -> Portable Battery Information (Type 22) structure will not be present"
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "TYPE22_STRUCTURE"
+ Value = "$(PORTABLE_BATTERY_INFO)"
+ Help = "Alternate token name for PORTABLE_BATTERY_INFO"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "NO_OF_PORTABLE_BATTERY"
+ Value = "4"
+ Help = "Specifies the Total number of Portable Batteries in the System."
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+ Range = "1 - 5"
+End
+
+TOKEN
+ Name = "PORT_BAT_LOCATION_1"
+ Value = "Location of the battery"
+ Help = "Specifies the Battery Location"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_LOCATION_2"
+ Value = "Location of the battery"
+ Help = "Specifies the Battery Location"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_LOCATION_3"
+ Value = "Location of the battery"
+ Help = "Specifies the Battery Location"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_LOCATION_4"
+ Value = "Location of the battery"
+ Help = "Specifies the Battery Location"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_LOCATION_5"
+ Value = "Location of the battery"
+ Help = "Specifies the Battery Location"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_MANUFACTURER_1"
+ Value = "Battery Manufacturer"
+ Help = "Specifies the Battery Manufacturer"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_MANUFACTURER_2"
+ Value = "Battery Manufacturer"
+ Help = "Specifies the Battery Manufacturer"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_MANUFACTURER_3"
+ Value = "Battery Manufacturer"
+ Help = "Specifies the Battery Manufacturer"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_MANUFACTURER_4"
+ Value = "Battery Manufacturer"
+ Help = "Specifies the Battery Manufacturer"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_MANUFACTURER_5"
+ Value = "Battery Manufacturer"
+ Help = "Specifies the Battery Manufacturer"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_MANUFACTURE_DATE_1"
+ Value = "01/01/2012"
+ Help = "Specifies the Battery Manufacturer Date"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_MANUFACTURE_DATE_2"
+ Value = "01/01/2012"
+ Help = "Specifies the Battery Manufacturer Date"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_MANUFACTURE_DATE_3"
+ Value = "01/01/2012"
+ Help = "Specifies the Battery Manufacturer Date"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_MANUFACTURE_DATE_4"
+ Value = "01/01/2012"
+ Help = "Specifies the Battery Manufacturer Date"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_MANUFACTURE_DATE_5"
+ Value = "01/01/2012"
+ Help = "Specifies the Battery Manufacturer Date"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_SERIAL_NUMBER_1"
+ Value = "Serial Number"
+ Help = "Specifies the Battery Serial Number"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_SERIAL_NUMBER_2"
+ Value = "Serial Number"
+ Help = "Specifies the Battery Serial Number"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_SERIAL_NUMBER_3"
+ Value = "Serial Number"
+ Help = "Specifies the Battery Serial Number"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_SERIAL_NUMBER_4"
+ Value = "Serial Number"
+ Help = "Specifies the Battery Serial Number"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_SERIAL_NUMBER_5"
+ Value = "Serial Number"
+ Help = "Specifies the Battery Serial Number"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_DEVICE_NAME_1"
+ Value = "Battery Name"
+ Help = "Specifies the Battery Name"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_DEVICE_NAME_2"
+ Value = "Battery Name"
+ Help = "Specifies the Battery Name"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_DEVICE_NAME_3"
+ Value = "Battery Name"
+ Help = "Specifies the Battery Name"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_DEVICE_NAME_4"
+ Value = "Battery Name"
+ Help = "Specifies the Battery Name"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_DEVICE_NAME_5"
+ Value = "Battery Name"
+ Help = "Specifies the Battery Name"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "DEVICE_CHEMISTRY_1"
+ Value = "04h"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "DEVICE_CHEMISTRY_2"
+ Value = "04h"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "DEVICE_CHEMISTRY_3"
+ Value = "04h"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "DEVICE_CHEMISTRY_4"
+ Value = "04h"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "DEVICE_CHEMISTRY_5"
+ Value = "04h"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "DESIGN_CAPACITY_1"
+ Value = "00h"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "DESIGN_CAPACITY_2"
+ Value = "00h"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "DESIGN_CAPACITY_3"
+ Value = "00h"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "DESIGN_CAPACITY_4"
+ Value = "00h"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "DESIGN_CAPACITY_5"
+ Value = "00h"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "DESIGN_VOLTAGE_1"
+ Value = "00h"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "DESIGN_VOLTAGE_2"
+ Value = "00h"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "DESIGN_VOLTAGE_3"
+ Value = "00h"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "DESIGN_VOLTAGE_4"
+ Value = "00h"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "DESIGN_VOLTAGE_5"
+ Value = "00h"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_SBDS_VER_NO_1"
+ Value = "SBDS Version Number"
+ Help = "Smart Battery Data Specification Version Number"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_SBDS_VER_NO_2"
+ Value = "SBDS Version Number"
+ Help = "Smart Battery Data Specification Version Number"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_SBDS_VER_NO_3"
+ Value = "SBDS Version Number"
+ Help = "Smart Battery Data Specification Version Number"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_SBDS_VER_NO_4"
+ Value = "SBDS Version Number"
+ Help = "Smart Battery Data Specification Version Number"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_SBDS_VER_NO_5"
+ Value = "SBDS Version Number"
+ Help = "Smart Battery Data Specification Version Number"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "MAX_ERROR_IN_BAT_DATA_1"
+ Value = "0FFh"
+ Help = "Maximum Error (as percentage in the range 0-100)"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "MAX_ERROR_IN_BAT_DATA_2"
+ Value = "0FFh"
+ Help = "Maximum Error (as percentage in the range 0-100)"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "MAX_ERROR_IN_BAT_DATA_3"
+ Value = "0FFh"
+ Help = "Maximum Error (as percentage in the range 0-100)"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "MAX_ERROR_IN_BAT_DATA_4"
+ Value = "0FFh"
+ Help = "Maximum Error (as percentage in the range 0-100)"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "MAX_ERROR_IN_BAT_DATA_5"
+ Value = "0FFh"
+ Help = "Maximum Error (as percentage in the range 0-100)"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_SBDS_SERIAL_NO_1"
+ Value = "1234h"
+ Help = "16-bit value - Identifies battery's serial number"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_SBDS_SERIAL_NO_2"
+ Value = "1234h"
+ Help = "16-bit value - Identifies battery's serial number"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_SBDS_SERIAL_NO_3"
+ Value = "1234h"
+ Help = "16-bit value - Identifies battery's serial number"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_SBDS_SERIAL_NO_4"
+ Value = "1234h"
+ Help = "16-bit value - Identifies battery's serial number"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_SBDS_SERIAL_NO_5"
+ Value = "1234h"
+ Help = "16-bit value - Identifies battery's serial number"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_SBDS_MAN_DATE_1"
+ Value = "2821h"
+ Help = "Cell Pack Manufacture Date"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_SBDS_MAN_DATE_2"
+ Value = "2821h"
+ Help = "Cell Pack Manufacture Date"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_SBDS_MAN_DATE_3"
+ Value = "2821h"
+ Help = "Cell Pack Manufacture Date"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_SBDS_MAN_DATE_4"
+ Value = "2821h"
+ Help = "Cell Pack Manufacture Date"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_SBDS_MAN_DATE_5"
+ Value = "2821h"
+ Help = "Cell Pack Manufacture Date"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_SBDS_DEV_CHEM_1"
+ Value = "SBDS Device Chemistry"
+ Help = "Battery Chemistry"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_SBDS_DEV_CHEM_2"
+ Value = "SBDS Device Chemistry"
+ Help = "Battery Chemistry"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_SBDS_DEV_CHEM_3"
+ Value = "SBDS Device Chemistry"
+ Help = "Battery Chemistry"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_SBDS_DEV_CHEM_4"
+ Value = "SBDS Device Chemistry"
+ Help = "Battery Chemistry"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "PORT_BAT_SBDS_DEV_CHEM_5"
+ Value = "SBDS Device Chemistry"
+ Help = "Battery Chemistry"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "DESIGN_CAPACITY_MULTIPLIER_1"
+ Value = "01h"
+ Help = "Multiplication Factor of the Design Capacity"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "DESIGN_CAPACITY_MULTIPLIER_2"
+ Value = "01h"
+ Help = "Multiplication Factor of the Design Capacity"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "DESIGN_CAPACITY_MULTIPLIER_3"
+ Value = "01h"
+ Help = "Multiplication Factor of the Design Capacity"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "DESIGN_CAPACITY_MULTIPLIER_4"
+ Value = "01h"
+ Help = "Multiplication Factor of the Design Capacity"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "DESIGN_CAPACITY_MULTIPLIER_5"
+ Value = "01h"
+ Help = "Multiplication Factor of the Design Capacity"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "OEM_SPECIFIC_1"
+ Value = "12345678h"
+ Help = "OEM or BIOS Vendor-specific Information"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "OEM_SPECIFIC_2"
+ Value = "12345678h"
+ Help = "OEM or BIOS Vendor-specific Information"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "OEM_SPECIFIC_3"
+ Value = "12345678h"
+ Help = "OEM or BIOS Vendor-specific Information"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "OEM_SPECIFIC_4"
+ Value = "12345678h"
+ Help = "OEM or BIOS Vendor-specific Information"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+TOKEN
+ Name = "OEM_SPECIFIC_5"
+ Value = "12345678h"
+ Help = "OEM or BIOS Vendor-specific Information"
+ TokenType = Expression
+ TargetEQU = Yes
+ Token = "PORTABLE_BATTERY_INFO" "=" "1"
+End
+
+##############################################################################
+#
+# TYPE 23 - SYSTEM RESET
+#
+##############################################################################
+#
+# This structure describes whether Automatic System Reset functions
+# enabled (Status). If the system has a watchdog Timer and the timer is
+# not reset (Timer Reset) before the Interval elapses, an automatic system
+# reset will occur. The system will re-boot according to the Boot Option.
+# This function may repeat until the Limit is reached, at which time the
+# system will re-boot according to the Boot Option at Limit.
+#
+##############################################################################
+
+TOKEN
+ Name = "SYSTEM_RESET_INFO"
+ Value = "0"
+ Help = "ON -> System Reset Information (Type 23) structure will be present\OFF -> System Reset Information (Type 23) structure will not be present"
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "TYPE23_STRUCTURE"
+ Value = "$(SYSTEM_RESET_INFO)"
+ Help = "Alternate token name for SYSTEM_RESET_INFO"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+##############################################################################
+#
+# TYPE 24 - HARDWARE SECURITY
+#
+##############################################################################
+#
+# This structure describes the system-wide Hardware Security Settings.
+#
+##############################################################################
+
+TOKEN
+ Name = "HARDWARE_SECURITY_INFO"
+ Value = "0"
+ Help = "ON -> Hardware Security Information (Type 24) structure will be present\OFF -> Hardware Security Information (Type 24) structure will not be present"
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "TYPE24_STRUCTURE"
+ Value = "$(HARDWARE_SECURITY_INFO)"
+ Help = "Alternate token name for HARDWARE_SECURITY_INFO"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "HARDWARE_SECURITY_SETTINGS"
+ Value = "00h"
+ Help = "Specifies the Password and reset status for the System.\Bits 7:6 Power-on Password Status\Bits 5:4 Keyboard Password Status\Bits 3:2 Administrator Password Status\Bits 1:0 Front Panel Reset Status\ 00b - Disabled\ 01b - Enabled\ 10b - Not Implemented\ 11b - Unknown"
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "Bit Field"
+End
+
+##############################################################################
+#
+# TYPE 25 - SYSTEM POWER CONTROLS
+#
+##############################################################################
+#
+# This structure describes the attributes for controlling the main power
+# supply to the system. Software that interprets this structure uses the
+# month, day, hour, minute and second values to determine the number of
+# seconds untill the next power-on of the system. The presence of this
+# structure implies that a timed power-on facility is available for the
+# system.
+#
+##############################################################################
+
+TOKEN
+ Name = "SYSTEM_POWER_CONTROLS_INFO"
+ Value = "0"
+ Help = "ON -> System Power Controls Information (Type 25) structure will be present\OFF -> System Power Controls Information (Type 25) structure will not be present"
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "TYPE25_STRUCTURE"
+ Value = "$(SYSTEM_POWER_CONTROLS_INFO)"
+ Help = "Alternate token name for SYSTEM_POWER_CONTROLS_INFO"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+##############################################################################
+#
+# TYPE 26 - VOLTAGE PROBE
+#
+##############################################################################
+#
+# This describes the attributes for a Voltage Probe in the system. Each
+# structure describes a single Voltage Probe.
+#
+##############################################################################
+
+TOKEN
+ Name = "VOLTAGE_PROBE_INFO"
+ Value = "0"
+ Help = "ON -> Voltage Probe Information (Type 26) structure will be present\OFF -> Voltage Probe Information (Type 26) structure will not be present"
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+##############################################################################
+#
+# TYPE 27 - COOLING DEVICE
+#
+##############################################################################
+#
+# This structure describes the attributes for a cooling device in the
+# system. Each structure describes a single cooling device.
+#
+##############################################################################
+
+TOKEN
+ Name = "COOLING_DEVICE_INFO"
+ Value = "0"
+ Help = "ON -> Cooling Device Information (Type 27) structure will be present\OFF -> Cooling Device Information (Type 27) structure will not be present"
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "NUMBER_OF_COOLING_DEVICE"
+ Value = "1"
+ Help = "Identifies the number of Cooling Devices."
+ TokenType = Integer
+ TargetEQU = Yes
+End
+
+##############################################################################
+#
+# TYPE 28 - TEMPERATURE PROBE
+#
+##############################################################################
+#
+# The Structure describes the attributes for a temperature probe in the
+# system. Each Structure describes a single Temperature Probe.
+#
+##############################################################################
+
+TOKEN
+ Name = "TEMPERATURE_PROBE_INFO"
+ Value = "0"
+ Help = "ON -> Temperature Probe Information (Type 28) structure will be present\OFF -> Temprature Probe Information (Type 28) structure will not be present"
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+##############################################################################
+#
+# TYPE 29 - ELECTRICAL CURRENT PROBE
+#
+##############################################################################
+#
+# This Structure describes the attributes for an Electrical Current Probe
+# in the system. Each structure describes a single Electrical Current
+# Probe.
+#
+##############################################################################
+
+TOKEN
+ Name = "ELECTRICAL_PROBE_INFO"
+ Value = "0"
+ Help = "ON -> Electrical Probe Information (Type 29) structure will be present\OFF -> Electrical Probe Information (Type 29) structure will not be present"
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+##############################################################################
+#
+# TYPE 30 - OUT OF BAND REMOTE ACCESS
+#
+##############################################################################
+#
+# This structure describes the attributes and policy settings of a
+# hardware facility that may be used to gain remote access to a hardware
+# system when the operating system is not available due to power-down
+# status, hardware failures, or boot failures.
+#
+##############################################################################
+
+TOKEN
+ Name = "OUT_OF_BAND_REMOTE_ACCESS_INFO"
+ Value = "0"
+ Help = "ON -> OUT-OF-BAND Remote Access Information (Type 30) structure will be present\OFF -> OUT-OF-BAND Remote Access Information (Type 30) structure will not be present"
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "TYPE30_STRUCTURE"
+ Value = "$(OUT_OF_BAND_REMOTE_ACCESS_INFO)"
+ Help = "Alternate token name for OUT_OF_BAND_REMOTE_ACCESS_INFO"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "OBRA_MANUFACTURER_NAME"
+ Value = "$(DEFAULT_STRING)"
+ Help = "The string that contains the manufacturer of the Out-Of-Band Access facility"
+ TokenType = Expression
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "OBRA_CONNECTIONS"
+ Value = "0"
+ Help = "Identifies the current Remote-Access connections:\Bits 7:2 - Reserved for future definition by this specification, set to all zeros.\Bit 1 - Outbound Connection enabled. Identifies whether (1) or not (0) the facility is allowed to initiate outbound connections to contact an alert management facility when critical conditions occur.\Bit 0 - Inbound Connection enabled. Identifies whether (1) or not (0) the facility is allowed to initiate outbound connections to receive incomming connections for the purpose of remote\ operations or problem management."
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "Bit Field"
+End
+
+##############################################################################
+#
+# TYPE 31 - BOOT INTEGRITY SERVICES (BIS) ENTRY POINT
+#
+##############################################################################
+#
+# This structure (Type 31) is reserved for use by the Boot Integrity
+# Services (BIS).\Refer to the Boot Integrity Services API Specification
+# for content details.
+#
+##############################################################################
+
+TOKEN
+ Name = "BIS_INFO"
+ Value = "0"
+ Help = "ON -> BIS Information structure will be present\OFF -> BIS Information structure will not be present\"
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetMAK = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "TYPE31_STRUCTURE"
+ Value = "$(BIS_INFO)"
+ Help = "Alternate token name for BIS_INFO"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "CHECKSUM"
+ Value = "00H"
+ TokenType = Integer
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "BIS_ENTRY_POINT_REAL_MODE"
+ Value = "0FFFFFFFFh"
+ TokenType = Integer
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "BIS_ENTRY_POINT_FLAT_MODE"
+ Value = "0FFFFFFFFh"
+ TokenType = Integer
+ TargetEQU = Yes
+End
+
+##############################################################################
+#
+# TYPE 32 - SYSTEM BOOT INFORMATION
+#
+##############################################################################
+#
+# The Client system firmware, e.g. BIOS, communicates the System Boot
+# Status to the client's Pre-boot Execution Environment (PXE) boot image
+# or OS-present management application via this structure. When used in
+# the PXE environment, for example, this code identifies the reason the
+# PXE was initiated and can be used by boot-image software to further
+# automate an enterprise's PXE sessions. For example, an enterprise could
+# choose to automatically download a hardware-diagnostic image to a client
+# whose reason code indicated either a firmware or operating system
+# detected hardware failure.
+#
+##############################################################################
+
+TOKEN
+ Name = "SYSTEM_BOOT_INFO"
+ Value = "1"
+ Help = "ON -> System Boot Information (Type 32) structure will be present\OFF -> System Boot Information (Type 32) structure will not be present"
+ TokenType = Boolean
+ TargetEQU = Yes
+ Lock = Yes
+End
+
+TOKEN
+ Name = "TYPE32_STRUCTURE"
+ Value = "$(SYSTEM_BOOT_INFO)"
+ Help = "Alternate token name for SYSTEM_BOOT_INFO"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "BOOT_STATUS"
+ Value = "0"
+ Help = "Value Description\0 - No Errors Detected\1 - No Bootable Media\2 - The 'normal' operating system failed to load\3 - Firmware detected hardware failure, including 'unknown' failure types.\4 - Operating system detected hardware failure. For ACPI OS's, the system firmware might set this reason code when the OS reports a boot failure via interfaces defined in the Simple Boot Flag Specification.\5 - User-requested boot, usually via a keystroke\6 - System security violation\7 - Previously requested image. This reason code allows coordination between OS-Present software and the OS-absent environment.\ For example, an OS-present application might enable (via a platform-specific interface) the system to boot to the PXE and request a specific boot-image.\8 - A system watchdog timer expired, causing the system to reboot.\9 - 127 - Reserved for future assignment via this specification.\128 - 191 - Vendor/OEM-specific implementations.\ The Vendor/OEM identifier is the 'Manufacturer' string found in the System Information Structure.\192 - 255 - Product-specific implementations.\ The Productidentifier is formed by the concatenation of the 'Manufacturer' and 'Product Name' strings found in the System Information Structure"
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "0-255"
+End
+
+##############################################################################
+#
+# TYPE 33 - 64-BIT MEMORY ERROR INFORMATION
+#
+##############################################################################
+#
+# The structure describes an error within a Physical Memory Array, when
+# the error address is above 4G (0xFFFFFFFF).
+#
+##############################################################################
+
+TOKEN
+ Name = "SIXTY_FOURBIT_MEMORY_ERROR_INFO"
+ Value = "0"
+ Help = "ON -> 64 Bit Memory Error Information (Type 33) structure will be present\OFF -> 64 Bit Memory Error Information (Type 33) structure will not be present"
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "TYPE33_STRUCTURE"
+ Value = "$(SIXTY_FOURBIT_MEMORY_ERROR_INFO)"
+ Help = "Alternate token name for SIXTY_FOURBIT_MEMORY_ERROR_INFO"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+##############################################################################
+#
+# TYPE 34 - MANAGEMENT DEVICE
+#
+##############################################################################
+#
+# The information in this structure defines the attributes of a Management
+# Device. A Management Device might control one or more fans or voltage,
+# current, or temperature probes as defined by one or more Management
+# Device Component Structures (Type 35)
+#
+##############################################################################
+
+TOKEN
+ Name = "MANAGEMENT_DEVICE_INFO"
+ Value = "0"
+ Help = "ON -> Management Device Information (Type 34) structure will be present\OFF -> Management Device Information (Type 34) structure will not be present"
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "TYPE34_STRUCTURE"
+ Value = "$(MANAGEMENT_DEVICE_INFO)"
+ Help = "Alternate token name for MANAGEMENT_DEVICE_INFO"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "NUMBER_OF_MANAGEMENT_DEVICES"
+ Value = "1"
+ Help = "Number of Management Devices in the System."
+ TokenType = Integer
+ TargetEQU = Yes
+End
+
+##############################################################################
+#
+# TYPE 35 - MANAGEMENT DEVICE COMPONENT
+#
+##############################################################################
+#
+# This Structure associates a Cooling Device or Environmental Probe with
+# structures that define the controlling hardware device and (optionally)
+# the component's thresholds.
+#
+##############################################################################
+
+TOKEN
+ Name = "MGMT_DEV_COMPONENT_DESCRIPTION"
+ Value = "$(DEFAULT_STRING)"
+ Help = "Specifies the additional descriptive information about the component."
+ TokenType = Expression
+ TargetEQU = Yes
+End
+
+##############################################################################
+#
+# TYPE 36 - MANAGEMENT DEVICE THRESHOLD DATA
+#
+##############################################################################
+#
+# The information in this structure defines threshold information for a
+# component (probe or cooling unit) contained within a Management Device.
+#
+# For each threshold field present in the structure:
+# 1 - The threshold units (millivolts, milliamps, 1/10th degrees C,
+# or RPMs) are as defined by the associated probe or cooling unit
+# component structure.
+# 2 - If the value is unavailable, the field is set to 0x8000.
+#
+##############################################################################
+
+##############################################################################
+#
+# TYPE 37 - MEMORY CHANNEL
+#
+##############################################################################
+#
+# The information in this structure provides the correlation between a
+# Memory Channel and its associated Memory Devices. Each device presents
+# one or more loads to the channel; the sum of all device loads cannot
+# exceed the channel's defined maximum.
+#
+##############################################################################
+
+TOKEN
+ Name = "MEMORY_CHANNEL_INFO"
+ Value = "0"
+ Help = "ON -> Memory Channel Information (Type 37) will be Present.\OFF -> Memory Channel Information (Type 37) will not be Present."
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "TYPE37_STRUCTURE"
+ Value = "$(MEMORY_CHANNEL_INFO)"
+ Help = "Alternate token name for MEMORY_CHANNEL_INFO"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "NUMBER_OF_MEMORY_CHANNELS"
+ Value = "1"
+ Help = "Number of Memory Channels Present in the System."
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+##############################################################################
+#
+# TYPE 38 - IPMI DEVICE INFORMATION
+#
+##############################################################################
+#
+# The information in this structure defines the attributes of an
+# Intelligent Platform Management Interface (IPMI) Baseboard Management
+# Controller (BMC).
+#
+# Refer to the documents available at:
+# http://developer.intel.com/design/servers/ipmi/spec.htm
+# for full documentation of IPMI.
+#
+##############################################################################
+
+TOKEN
+ Name = "IPMI_DEVICE_INFO"
+ Value = "0"
+ Help = "ON ->IPMI Device Information structure will be present\OFF -> IPMI Device Information structure will not be present\"
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "TYPE38_STRUCTURE"
+ Value = "$(IPMI_DEVICE_INFO)"
+ Help = "Alternate token name for IPMI_DEVICE_INFO"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "IPMI_INTERFACE_TYPE"
+ Value = "0"
+ Help = "Baseboard Management Controller (BMC) interface type.\00h - Unknown\01h - KCS : Keyboard Controller Style\02h - SMIC : Server Management Interface Chip\03h - BT : Block Transfer\04h to 0FFh - Reserved for future assignment by this specification."
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "00 - 0FFh"
+End
+
+TOKEN
+ Name = "IPMI_SPECIFICATION_REVISION"
+ Value = "15h"
+ Help = "Identifies the IPMI Specification Revision, in BCD format, to which the BMC was designed.\Bits 7:4 hold the most significant digit of the revision, while bits 3:0 hold the least significant bits.\eg. a value of 10h indicates revision 1.0"
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "00 - 99"
+End
+
+TOKEN
+ Name = "I2C_SLAVE_ADDRESS"
+ Value = "00h"
+ Help = "The Slave Address on the I2C bus of this BMC."
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "00h - 0FFh"
+End
+
+TOKEN
+ Name = "NV_STORAGE_DEVICE_ADDRESS"
+ Value = "0FFh"
+ Help = "Bus ID of the NV Storage Device. If no storage device exists for this BMC, the field is set to 0FFh."
+ TokenType = Integer
+ TargetEQU = Yes
+ Range = "00h - 0FFh"
+End
+
+TOKEN
+ Name = "BASE_ADDR_MOD_INTR_INFO"
+ Value = "00h"
+ Help = "Base Address Modifier.\Bits 7:6 Register spacing\ 00 - Interface registers are not on successive byte boundaries\ 01 - Interface registers are on 32-bit boundaries\ 10 - Interface registers are on 16-byte boundaries\Bit 4 - LS-bit for addresses\ 0 - Address bit 0 = 0\ 1 - Address bit 0 = 1\Bit 3 - Interrupt Info\ 0 - Interrupt info not specified\ 1 - Interrupt info specified\Bit 1 - Interrupt Polarity\ 0 - Active low\ 1 - Active high\Bit 0 - Interrupt Trigger Mode\ 0 - Edge\ 1 - Level"
+ TokenType = Integer
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "INTERRUPT_NUMBER"
+ Value = "00h"
+ Help = "Interrupt number for IPMI System Interface\00 = unspecified/unsupported"
+ TokenType = Integer
+ TargetEQU = Yes
+End
+
+##############################################################################
+#
+# TYPE 39 - SYSTEM POWER SUPPLY
+#
+##############################################################################
+#
+# This structure identifies attributes of a System Power Supply. One
+# instance of this record is present for each possible Power Supply in a
+# System.
+#
+##############################################################################
+
+TOKEN
+ Name = "SYSTEM_POWER_SUPPLY_INFO"
+ Value = "0"
+ Help = "Type 39 - System Power Supply\OFF -> System Power Supply will not be Present\ON -> System Power Supply will be Present"
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "TYPE39_STRUCTURE"
+ Value = "$(SYSTEM_POWER_SUPPLY_INFO)"
+ Help = "Alternate token name for SYSTEM_POWER_SUPPLY_INFO"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "NUMBER_OF_POWER_SUPPLY"
+ Value = "1"
+ Help = "Number of Power Supplies Present in the System."
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+##############################################################################
+#
+# TYPE 40 - ADDITIONAL INFORMATION
+#
+##############################################################################
+#
+# This structure is intended to provide additional information for
+# handling unspecified enumerated values and interim field updates in
+# another structure.
+#
+##############################################################################
+
+TOKEN
+ Name = "ADDITIONAL_INFO"
+ Value = "0"
+ Help = "ON -> Additional Information (Type 40) will be Present.\OFF -> Additional Information (Type 40) will not be Present."
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "TYPE40_STRUCTURE"
+ Value = "$(ADDITIONAL_INFO)"
+ Help = "Alternate token name for ADDITIONAL_INFO"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "ADDITIONAL_INFO_COUNT"
+ Value = "3"
+ Help = "Number of additional information entries"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+##############################################################################
+#
+# TYPE 41 - ONBOARD DEVICES EXTENDED INFORMATION
+#
+##############################################################################
+#
+# This structure defines the attributes of devices that are onboard.
+#
+##############################################################################
+
+TOKEN
+ Name = "ONBOARD_DEVICE_EXTENDED_INFO"
+ Value = "1"
+ Help = "ON -> Onboard Devices Extended Information (Type 41) will be Present.\OFF -> Onboard Devices Extended Information (Type 41) will not be Present."
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "TYPE41_STRUCTURE"
+ Value = "$(ONBOARD_DEVICE_EXTENDED_INFO)"
+ Help = "Alternate token name for ONBOARD_DEVICE_EXTENDED_INFO"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "ONBOARD_DEVICE_EXT_COUNT"
+ Value = "3"
+ Help = "Number of Onboard Devices"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+##############################################################################
+#
+# TYPE 129 - INTEL_ASF
+#
+##############################################################################
+#
+# This structure is for Intel ASF support
+#
+##############################################################################
+
+TOKEN
+ Name = "INTEL_ASF"
+ Value = "0"
+ Help = "Type 129 - Intel ASF Support"
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "TYPE129_STRUCTURE"
+ Value = "$(INTEL_ASF)"
+ Help = "Alternate token name for INTEL_ASF"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+##############################################################################
+#
+# TYPE 240 - OEM IO GPNV
+#
+##############################################################################
+#
+# This structure is for OEM defined IO structure
+#
+##############################################################################
+
+TOKEN
+ Name = "OEM_IO_GPNV_STRUC_INFO"
+ Value = "0"
+ Help = "Example of OEM defined structures"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "TYPE240_STRUCTURE"
+ Value = "$(OEM_IO_GPNV_STRUC_INFO)"
+ Help = "Alternate token name for OEM_IO_GPNV_STRUC_INFO"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+##############################################################################
+#
+# TYPE 241 - OEM Memory GPNV
+#
+##############################################################################
+#
+# This structure is for OEM Memory GPNV structure
+#
+##############################################################################
+
+TOKEN
+ Name = "OEM_MEMORY_GPNV_STRUC_INFO"
+ Value = "0"
+ Help = "Example of OEM defined structures"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "TYPE241_STRUCTURE"
+ Value = "$(OEM_MEMORY_GPNV_STRUC_INFO)"
+ Help = "Alternate token name for OEM_MEMORY_GPNV_STRUC_INFO"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "INC_ISA"
+ Value = "0"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "INC_PCI"
+ Value = "1"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+TOKEN
+ Name = "INC_PNP"
+ Value = "0"
+ TokenType = Boolean
+ TargetEQU = Yes
+End
+
+PATH
+ Name = "SMBIOSDATA_DIR"
+End
+
+MODULE
+ Help = "Includes SMBiosStaticData.cif to Project"
+ File = "SMBiosStaticData.mak"
+End
+
+ELINK
+ Name = "$(BUILD_DIR)\SMBiosStaticData.ffs"
+ Parent = "FV_MAIN"
+ InvokeOrder = AfterParent
+End
+
+ELINK
+ Name = "SMBOBJS"
+ InvokeOrder = ReplaceParent
+End
+
+ELINK
+ Name = "$(BUILD_DIR)\SMBiosStaticData.obj"
+ Parent = "SMBOBJS"
+ InvokeOrder = AfterParent
+End
+
diff --git a/Board/EM/SMBIOS/SMBiosStaticData/SmbiosStaticDataEnd.asm b/Board/EM/SMBIOS/SMBiosStaticData/SmbiosStaticDataEnd.asm
new file mode 100644
index 0000000..6700391
--- /dev/null
+++ b/Board/EM/SMBIOS/SMBiosStaticData/SmbiosStaticDataEnd.asm
@@ -0,0 +1,81 @@
+;****************************************************************************
+;****************************************************************************
+;** **
+;** (C)Copyright 1985-2009, American Megatrends, Inc. **
+;** **
+;** All Rights Reserved. **
+;** **
+;** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **
+;** **
+;** Phone: (770)-246-8600 **
+;** **
+;****************************************************************************
+;****************************************************************************
+
+;****************************************************************************
+; $Header: /Alaska/BIN/Modules/SMBIOS/SmbiosStaticData/SmbiosStaticDataEnd.asm 4 6/02/09 3:57p Davidd $
+;
+; $Revision: 4 $
+;
+; $Date: 6/02/09 3:57p $
+;****************************************************************************
+; Revision History
+; ----------------
+; $Log: /Alaska/BIN/Modules/SMBIOS/SmbiosStaticData/SmbiosStaticDataEnd.asm $
+;
+; 4 6/02/09 3:57p Davidd
+; Updated AMI headers (EIP 22180)
+;
+; 3 3/29/07 4:53p Davidd
+; Changed the year in the AMI banner and adjust indentation to coding
+; standard.
+;
+; 1 4/29/05 2:15p Davidd
+; Initial checkin.
+;
+;****************************************************************************
+
+;----------------------------------------------------------------------------
+
+ INCLUDE token.equ
+ INCLUDE smbhdr.equ
+ INCLUDE smbmacro.aid
+ INCLUDE smbstruc.def
+ INCLUDE smb.equ
+ INCLUDE smbdata.mac
+ INCLUDE smbdesc.def
+
+;----------------------------------------------------------------------------
+
+SMBIOS_DSEG SEGMENT BYTE PUBLIC 'DATA'
+ ASSUME cs: SMBIOS_DSEG
+.586p
+
+;----------------------------------------------------------------------------
+
+;----------------------------------------------------------------------------
+; END Of SMBIOS DATA STRUCTURE
+;----------------------------------------------------------------------------
+
+ handle = 0 ; Dummy handle
+ handle = CreateEndOfTable(handle)
+
+ db MKF_EXTRA_RESERVED_BYTES dup (0FFh) ; Extra Space
+
+SMBIOS_DSEG ENDS ; End of Segment
+END ; End of File
+;----------------------------------------------------------------------------
+
+;****************************************************************************
+;****************************************************************************
+;** **
+;** (C)Copyright 1985-2009, American Megatrends, Inc. **
+;** **
+;** All Rights Reserved. **
+;** **
+;** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **
+;** **
+;** Phone: (770)-246-8600 **
+;** **
+;****************************************************************************
+;****************************************************************************