From b7c51c9cf4864df6aabb99a1ae843becd577237c Mon Sep 17 00:00:00 2001 From: raywu Date: Fri, 15 Jun 2018 00:00:50 +0800 Subject: init. 1AQQW051 --- Board/EM/SMBIOS/SMBIOSBoard.CIF | 22 + Board/EM/SMBIOS/SMBios.sdl | 354 ++ Board/EM/SMBIOS/SMBios32.ffs | Bin 0 -> 19929 bytes Board/EM/SMBIOS/SMBios64.ffs | Bin 0 -> 19821 bytes Board/EM/SMBIOS/SMBiosBoard.chm | Bin 0 -> 340652 bytes Board/EM/SMBIOS/SMBiosBoard.dxs | 54 + Board/EM/SMBIOS/SMBiosBoard.mak | 108 + Board/EM/SMBIOS/SMBiosFlashData.ffs | Bin 0 -> 2088 bytes Board/EM/SMBIOS/SMBiosStaticData/SMB.EQU | 1345 +++++++ Board/EM/SMBIOS/SMBiosStaticData/SMBDATA.MAC | 2708 +++++++++++++ Board/EM/SMBIOS/SMBiosStaticData/SMBMACRO.AID | 1228 ++++++ Board/EM/SMBIOS/SMBiosStaticData/SMBSTRUC.DEF | 793 ++++ Board/EM/SMBIOS/SMBiosStaticData/Smbdesc.def | 2021 ++++++++++ Board/EM/SMBIOS/SMBiosStaticData/Smbhdr.equ | 297 ++ .../SMBIOS/SMBiosStaticData/SmbiosStaticData.asm | 259 ++ .../SMBIOS/SMBiosStaticData/SmbiosStaticData.cif | 17 + .../SMBIOS/SMBiosStaticData/SmbiosStaticData.mak | 81 + .../SMBIOS/SMBiosStaticData/SmbiosStaticData.sdl | 4036 ++++++++++++++++++++ .../SMBiosStaticData/SmbiosStaticDataEnd.asm | 81 + Board/EM/SMBIOS/SmbiosBoard.c | 1790 +++++++++ Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEdit32.obj | Bin 0 -> 25687 bytes Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEdit64.obj | Bin 0 -> 27565 bytes Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditBoard.c | 204 + .../EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditBoard.c32 | 13 + .../EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditBoard.c64 | 13 + .../EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditBoard.cif | 17 + .../EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditBoard.dxs | 82 + .../EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditBoard.mak | 98 + .../EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditBoard.sdl | 50 + .../SMBIOS/SmbiosDMIEdit/SmbiosDMIEditFunc32.obj | Bin 0 -> 62125 bytes .../SMBIOS/SmbiosDMIEdit/SmbiosDMIEditFunc64.obj | Bin 0 -> 74299 bytes Board/EM/SMBIOS/SmbiosGetFlashData32.ffs | Bin 0 -> 2525 bytes Board/EM/SMBIOS/SmbiosGetFlashData64.ffs | Bin 0 -> 2838 bytes Board/EM/SMBIOS/Smbrun.asm | 890 +++++ 34 files changed, 16561 insertions(+) create mode 100644 Board/EM/SMBIOS/SMBIOSBoard.CIF create mode 100644 Board/EM/SMBIOS/SMBios.sdl create mode 100644 Board/EM/SMBIOS/SMBios32.ffs create mode 100644 Board/EM/SMBIOS/SMBios64.ffs create mode 100644 Board/EM/SMBIOS/SMBiosBoard.chm create mode 100644 Board/EM/SMBIOS/SMBiosBoard.dxs create mode 100644 Board/EM/SMBIOS/SMBiosBoard.mak create mode 100644 Board/EM/SMBIOS/SMBiosFlashData.ffs create mode 100644 Board/EM/SMBIOS/SMBiosStaticData/SMB.EQU create mode 100644 Board/EM/SMBIOS/SMBiosStaticData/SMBDATA.MAC create mode 100644 Board/EM/SMBIOS/SMBiosStaticData/SMBMACRO.AID create mode 100644 Board/EM/SMBIOS/SMBiosStaticData/SMBSTRUC.DEF create mode 100644 Board/EM/SMBIOS/SMBiosStaticData/Smbdesc.def create mode 100644 Board/EM/SMBIOS/SMBiosStaticData/Smbhdr.equ create mode 100644 Board/EM/SMBIOS/SMBiosStaticData/SmbiosStaticData.asm create mode 100644 Board/EM/SMBIOS/SMBiosStaticData/SmbiosStaticData.cif create mode 100644 Board/EM/SMBIOS/SMBiosStaticData/SmbiosStaticData.mak create mode 100644 Board/EM/SMBIOS/SMBiosStaticData/SmbiosStaticData.sdl create mode 100644 Board/EM/SMBIOS/SMBiosStaticData/SmbiosStaticDataEnd.asm create mode 100644 Board/EM/SMBIOS/SmbiosBoard.c create mode 100644 Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEdit32.obj create mode 100644 Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEdit64.obj create mode 100644 Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditBoard.c create mode 100644 Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditBoard.c32 create mode 100644 Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditBoard.c64 create mode 100644 Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditBoard.cif create mode 100644 Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditBoard.dxs create mode 100644 Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditBoard.mak create mode 100644 Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditBoard.sdl create mode 100644 Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditFunc32.obj create mode 100644 Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditFunc64.obj create mode 100644 Board/EM/SMBIOS/SmbiosGetFlashData32.ffs create mode 100644 Board/EM/SMBIOS/SmbiosGetFlashData64.ffs create mode 100644 Board/EM/SMBIOS/Smbrun.asm (limited to 'Board/EM/SMBIOS') diff --git a/Board/EM/SMBIOS/SMBIOSBoard.CIF b/Board/EM/SMBIOS/SMBIOSBoard.CIF new file mode 100644 index 0000000..c4cbb8c --- /dev/null +++ b/Board/EM/SMBIOS/SMBIOSBoard.CIF @@ -0,0 +1,22 @@ + + name = "SMBIOS - Board" + category = eModule + LocalRoot = "Board\EM\SMBIOS\" + RefName = "SMBIOSBoard" +[files] +"SMBios.sdl" +"SmbiosGetFlashData32.ffs" +"SmbiosGetFlashData64.ffs" +"SMBios32.ffs" +"SMBios64.ffs" +"SMBiosFlashData.ffs" +"SmbiosBoard.c" +"SMBiosBoard.dxs" +"SMBiosBoard.mak" +"SMBiosBoard.chm" +"Smbrun.asm" +[parts] +"SMBIOSProto" +"SmbiosStaticData" +"SmbiosDMIEditBoard" + diff --git a/Board/EM/SMBIOS/SMBios.sdl b/Board/EM/SMBIOS/SMBios.sdl new file mode 100644 index 0000000..89348f1 --- /dev/null +++ b/Board/EM/SMBIOS/SMBios.sdl @@ -0,0 +1,354 @@ +TOKEN + Name = "SMBIOS_SUPPORT" + Value = "1" + Help = "Main switch to enable SMBIOS support in Project" + TokenType = Boolean + TargetMAK = Yes + TargetH = Yes + Master = Yes +End + +TOKEN + Name = "AMI_SMBIOS_MODULE_VERSION" + Value = "0108" + Help = "AMI SMBIOS module version number: MMNN -> MM = Major, NN = Minor" + TokenType = Integer + TargetMAK = Yes + TargetH = Yes + Lock = Yes +End + +TOKEN + Name = "SMBIOS_PI_1_1" + Value = "0" + Help = "SMBIOS PI 1.1 Support" + TokenType = Boolean + TargetH = Yes +End + +TOKEN + Name = "EFI_SMBIOS_PROTOCOL_GUID" + Value = "{0x5e90a50d, 0x6955, 0x4a49, 0x90, 0x32, 0xda, 0x38, 0x12, 0xf8, 0xe8, 0xe5}" + Help = "SMBIOS Protocol GUID" + TokenType = Expression + TargetH = Yes + Token = "SMBIOS_PI_1_1" "=" "0" +End + +TOKEN + Name = "EFI_SMBIOS_PROTOCOL_GUID" + Value = "{0x03583ff6, 0xcb36, 0x4940, 0x94, 0x7e, 0xb9, 0xb3, 0x9f, 0x4a, 0xfa, 0xf7}" + Help = "SMBIOS Protocol GUID" + TokenType = Expression + TargetH = Yes + Token = "SMBIOS_PI_1_1" "=" "1" +End + +TOKEN + Name = "SMBIOS_TABLE_LOCATION" + Value = "0" + Help = "SMBIOS Table location: \0 = Above 1MB only" + TokenType = Integer + TargetH = Yes + Lock = Yes +End + +TOKEN + Name = "SMBIOS_TABLE_LOCATION" + Value = "1" + Help = "SMBIOS Table location: \0 = Above 1MB only \1 = Auto (E000 Segment, if unable to allocate to E000, then put table above 1MB)" + TokenType = Integer + TargetH = Yes + Token = "CSM_SUPPORT" "=" "1" +End + +TOKEN + Name = "SMBIOS_DMIEDIT_DATA_LOC" + Value = "0" + Help = "SMBIOS DMIEdit data location: \0 = Boot Block \2 = NVRAM" + TokenType = Integer + TargetMAK = Yes + TargetH = Yes +End + +TOKEN + Name = "SMBIOS_PRESERVE_NVRAM" + Value = "1" + TokenType = Boolean + TargetMAK = Yes + TargetH = Yes + Token = "SMBIOS_DMIEDIT_DATA_LOC" "=" "2" +End + +TOKEN + Name = "ADD_STRUCTURE_LOCATION" + Value = "1" + Help = "Location in Smbios Table for new structure being added: \ON -> Sequentially by Handle Number \OFF = At end of table" + TokenType = Boolean + TargetH = Yes +End + +TOKEN + Name = "WRITE_STRUCTURE_HANDLE_POLICY" + Value = "0" + Help = "WriteStructureByHandle function policy: \OFF -> Delete existing structure then add new one (for backward compatibility) \ON = Existing structure to be modified in place" + TokenType = Boolean + TargetH = Yes +End + +TOKEN + Name = "SMBIOS_UPDATE_POLICY" + Value = "0" + Help = "Order of updating structures during Post: \OFF -> NVRam data (DMIEdit), dynamic data (CPU, memory, slot...), OEM update \ON = Dynamic data (CPU, memory, slot...), OEM update, NVRam data (DMIEdit)" + TokenType = Boolean + TargetH = Yes +End + +TOKEN + Name = "UPDATE_BASEBOARD_TYPE2" + Value = "0" + Help = "Enable/Disable BaseBoard Type 2 dynamic update" + TokenType = Boolean + TargetH = Yes + Token = "BASE_BOARD_INFO" "=" "1" +End + +TOKEN + Name = "UPDATE_BOARD_MANUFACTURER" + Value = "0" + Help = "Enable/Disable Board Manufacturer (Type 2) dynamic update" + TokenType = Boolean + TargetH = Yes + Token = "UPDATE_BASEBOARD_TYPE2" "=" "1" +End + +TOKEN + Name = "UPDATE_BOARD_NAME" + Value = "0" + Help = "Enable/Disable Board Name (Type 2) dynamic update" + TokenType = Boolean + TargetH = Yes + Token = "UPDATE_BASEBOARD_TYPE2" "=" "1" +End + +TOKEN + Name = "UPDATE_SYSTEM_CHASSIS_TYPE3" + Value = "0" + Help = "Enable/Disable System Chassis Type 3 dynamic update" + TokenType = Boolean + TargetH = Yes + Token = "SYS_CHASSIS_INFO" "=" "1" +End + +TOKEN + Name = "UPDATE_CPU_TYPE4" + Value = "1" + Help = "Enable/Disable CPU Types 4/7 dynamic update" + TokenType = Boolean + TargetH = Yes + Token = "PROCESSOR_INFO" "=" "1" +End + +TOKEN + Name = "UPDATE_SLOT_TYPE9" + Value = "1" + Help = "Enable/Disable System Slot Type 9 dynamic update" + TokenType = Boolean + TargetH = Yes + Token = "SYSTEM_SLOT_INFO" "=" "1" +End + +TOKEN + Name = "UPDATE_ONBOARD_DEV_TYPE10" + Value = "1" + Help = "Enable/Disable OnBoard Devices Type 10 dynamic update" + TokenType = Boolean + TargetH = Yes + Token = "ONBOARD_DEVICE_INFO" "=" "1" +End + +TOKEN + Name = "UPDATE_MEMORY_TYPE16" + Value = "1" + Help = "Enable/Disable Memory Types 16/17/18/19/20 dynamic update" + TokenType = Boolean + TargetH = Yes +End + +TOKEN + Name = "UPDATE_BATTERY_TYPE22" + Value = "1" + Help = "Enable/Disable Portable Battery Type 22 dynamic update" + TokenType = Boolean + TargetH = Yes + Token = "PORTABLE_BATTERY_INFO" "=" "1" +End + +TOKEN + Name = "UPDATE_ADDITIONAL_INFO_TYPE40" + Value = "1" + Help = "Enable/Disable Additional Info Type 40 dynamic update" + TokenType = Boolean + TargetH = Yes + Token = "ADDITIONAL_INFO" "=" "1" +End + +TOKEN + Name = "UPDATE_DEVICE_EXT_TYPE41" + Value = "1" + Help = "Enable/Disable OnBoard Devices Extended Type 41 dynamic update" + TokenType = Boolean + TargetH = Yes + Token = "ONBOARD_DEVICE_EXTENDED_INFO" "=" "1" +End + +TOKEN + Name = "DYNAMIC_UPDATE_TYPE0_EC_VERSION" + Value = "1" + Help = "Enable/Disable Type 0 EC version dynamic update" + TokenType = Boolean + TargetH = Yes +End + +TOKEN + Name = "CSM_OEM_SMBIOS_PNPFUNC_FILE" + Value = "$(BUILD_DIR)\smbrun.bin" + TokenType = Expression + TargetMAK = Yes +End + +TOKEN + Name = "SMBIOS_DYNAMIC_UPDATE_POLICY" + Value = "0" + Help = "Control when dynamic updates will be done: \OFF -> At Ready To Boot event \ON = In Smbios driver entry point" + TokenType = Boolean + TargetH = Yes +End + +# +# This is the table containing memory module Manufacturer ID Code. +# It provides a way for OEM to add additional entries that are not already in JEDEC_MF_ID table in Smbios.c. +# Entries to be added should be in the form of: number of continuation codes, manufacturer's ID code, manufacturer string (ref. JEP-106). +# "Undefined" should be the last entry in this token. +# +TOKEN + Name = "MANUFACTURER_ID_CODE" + Value = '{{6, 0xf1, "InnoDisk Corporation"}, {0, 0, "Undefined"}}' + Help = 'This is the table containing memory module Manufacturer ID Code.\It provides a way for OEM to add additional entries that are not already in JEDEC_MF_ID table in Smbios.c.\Entries to be added should be in the form of: number of continuation codes, manufacturer ID code, manufacturer string (ref. JEP-106).\"Undefined" should be the last entry in this table.' + TokenType = Expression + TargetH = Yes +End + +PATH + Name = "SMBIOS_DIR" +End + +MODULE + Help = "Includes SMBiosBoard.mak to Project" + File = "SMBiosBoard.mak" +End + +ELINK + Name = "$(BUILD_DIR)\SMBiosBoard.ffs" + Parent = "FV_MAIN" + InvokeOrder = AfterParent +End + +ELINK + Name = "$(SMBIOS_DIR)\SMBios32.ffs" + Parent = "FV_MAIN" + InvokeOrder = AfterParent + Token = "x64_BUILD" "=" "0" +End + +ELINK + Name = "$(SMBIOS_DIR)\SMBios64.ffs" + Parent = "FV_MAIN" + InvokeOrder = AfterParent + Token = "x64_BUILD" "=" "1" +End + +ELINK + Name = "$(SMBIOS_DIR)\SmbiosFlashData.ffs" + Parent = "FV_BB" + InvokeOrder = AfterParent + Token = "SMBIOS_DMIEDIT_DATA_LOC" "=" "0" +End + +ELINK + Name = "$(SMBIOS_DIR)\SmbiosFlashData.ffs" + Parent = "FT_FV_BB" + InvokeOrder = AfterParent + Token = "SMBIOS_DMIEDIT_DATA_LOC" "=" "0" + Token = "FtRecovery_SUPPORT" "=" "1" +End + +# Token commented out +# Enable this token once AFU util can support DMI data in FV_MAIN +#ELINK +# Name = "$(SMBIOS_DIR)\SmbiosFlashData.ffs" +# Parent = "FV_MAIN" +# InvokeOrder = AfterParent +# Token = "SMBIOS_DMIEDIT_DATA_LOC" "=" "1" +#End + +ELINK + Name = "$(SMBIOS_DIR)\SmbiosGetFlashData32.ffs" + Parent = "FV_MAIN" + InvokeOrder = AfterParent + Token = "x64_BUILD" "=" "0" + Token = "SMBIOS_DMIEDIT_DATA_LOC" "!=" "2" +End + +ELINK + Name = "$(SMBIOS_DIR)\SmbiosGetFlashData64.ffs" + Parent = "FV_MAIN" + InvokeOrder = AfterParent + Token = "x64_BUILD" "=" "1" + Token = "SMBIOS_DMIEDIT_DATA_LOC" "!=" "2" +End + +ELINK + Name = "$(BUILD_DIR)\smbrun.inf" + Parent = "CSM_CUSTOM_INFS" + InvokeOrder = AfterParent +End + +ELINK + Name = "PreserveDmiEditData," + Parent = "SMIFlashPreUpdateList" + InvokeOrder = AfterParent + Token = "SmbiosDMIEdit_SUPPORT" "=" "1" + Token = "SMBIOS_DMIEDIT_DATA_LOC" "=" "2" + Token = "SMBIOS_PRESERVE_NVRAM" "=" "1" +End + +ELINK + Name = "RestoreDmiEditData," + Parent = "SMIFlashEndUpdateList" + InvokeOrder = AfterParent + Token = "SmbiosDMIEdit_SUPPORT" "=" "1" + Token = "SMBIOS_DMIEDIT_DATA_LOC" "=" "2" + Token = "SMBIOS_PRESERVE_NVRAM" "=" "1" +End + +ELINK + Name = "RecoveryPreserveDmiEditData," + Parent = "OemBeforeFlashUpdateList" + InvokeOrder = AfterParent + Token = "SmbiosDMIEdit_SUPPORT" "=" "1" + Token = "SMBIOS_DMIEDIT_DATA_LOC" "=" "2" +End + +ELINK + Name = "RecoveryRestoreDmiEditData," + Parent = "OemAfterFlashUpdateList" + InvokeOrder = AfterParent + Token = "SmbiosDMIEdit_SUPPORT" "=" "1" + Token = "SMBIOS_DMIEDIT_DATA_LOC" "=" "2" +End + +ELINK + Name = "SmbiosOemUpdateList" + InvokeOrder = ReplaceParent +End diff --git a/Board/EM/SMBIOS/SMBios32.ffs b/Board/EM/SMBIOS/SMBios32.ffs new file mode 100644 index 0000000..6c98f6f Binary files /dev/null and b/Board/EM/SMBIOS/SMBios32.ffs differ diff --git a/Board/EM/SMBIOS/SMBios64.ffs b/Board/EM/SMBIOS/SMBios64.ffs new file mode 100644 index 0000000..7308188 Binary files /dev/null and b/Board/EM/SMBIOS/SMBios64.ffs differ diff --git a/Board/EM/SMBIOS/SMBiosBoard.chm b/Board/EM/SMBIOS/SMBiosBoard.chm new file mode 100644 index 0000000..df8e3e3 Binary files /dev/null and b/Board/EM/SMBIOS/SMBiosBoard.chm differ diff --git a/Board/EM/SMBIOS/SMBiosBoard.dxs b/Board/EM/SMBIOS/SMBiosBoard.dxs new file mode 100644 index 0000000..d344878 --- /dev/null +++ b/Board/EM/SMBIOS/SMBiosBoard.dxs @@ -0,0 +1,54 @@ +//********************************************************************** +//********************************************************************** +//** ** +//** (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/SMBiosBoard.dxs 2 6/02/09 3:44p Davidd $ +// +// $Revision: 2 $ +// +// $Date: 6/02/09 3:44p $ +//********************************************************************** +// Revision History +// ---------------- +// $Log: /Alaska/BIN/Modules/SMBIOS/SMBiosBoard.dxs $ +// +// 2 6/02/09 3:44p Davidd +// Updated AMI headers (EIP 22180) +// +// 1 7/18/05 5:59p Davidd +// File added for porting the SMBIOS dynamic data. +// +// +//********************************************************************** + +#include +#include + +DEPENDENCY_START + EFI_CPU_ARCH_PROTOCOL_GUID AND + EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_GUID +DEPENDENCY_END + +//********************************************************************** +//********************************************************************** +//** ** +//** (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/SMBiosBoard.mak b/Board/EM/SMBIOS/SMBiosBoard.mak new file mode 100644 index 0000000..939c9dc --- /dev/null +++ b/Board/EM/SMBIOS/SMBiosBoard.mak @@ -0,0 +1,108 @@ +#//**********************************************************************// +#//**********************************************************************// +#//** **// +#//** (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/SMBiosBoard.mak 9 11/01/10 12:33p Davidd $ +# +# $Revision: 9 $ +# +# $Date: 11/01/10 12:33p $ +#************************************************************************// +# Revision History +# ---------------- +# $Log: /Alaska/BIN/Modules/SMBIOS/SMBiosBoard.mak $ +# +# 9 11/01/10 12:33p Davidd +# [TAG] EIP41560 +# [Category] Improvement +# [Description] DMIEDIT modified values are not preserved in reboot +# [Files] +# Smbios.c +# Smbios.sdl +# SmbiosBoard.c +# SmbiosBoard.mak +# +# 8 6/02/09 3:45p Davidd +# Updated AMI headers (EIP 22180) +# +# 7 1/22/08 4:19p Olegi +# +# 3 10/29/07 7:27p Felixp +# Update to be compatible with SMBIOS label 4.6.1_ALPHA_01.05 +# +# 2 12/02/05 12:17p Felixp +# Pricate SMBIOSBoard.mak added. +# +# 1 12/02/05 12:16p Felixp +# +# 2 12/02/05 11:45a Felixp +# +# 1 7/18/05 6:01p Davidd +# File added for porting the SMBIOS dynamic data. +# +#************************************************************************// + +all : SMBIOSBOARD + +SMBIOSBOARD : $(BUILD_DIR)\SMBiosBoard.mak SMBiosBoardBin SmBiosPnPBin + +SMBIOS_BOARD_OBJECTS = $(BUILD_DIR)\BOARD\EM\SMBIOS\smbiosboard.obj + +$(BUILD_DIR)\SMBiosBoard.mak : $(SMBIOS_DIR)\SMBIOSBoard.CIF $(SMBIOS_DIR)\$(@B).mak $(BUILD_RULES) + $(CIF2MAK) $(SMBIOS_DIR)\SMBIOSBoard.CIF $(CIF2MAK_DEFAULTS) + +SMBiosBoardBin : $(AMIDXELIB) + $(MAKE) /$(MAKEFLAGS) $(BUILD_DEFAULTS)\ + /f $(BUILD_DIR)\SMBiosBoard.mak all\ + NAME=SMBiosBoard \ + OBJECTS="$(SMBIOS_BOARD_OBJECTS)" \ + GUID=CEF68C66-06AB-4fb3-A3ED-5FFA885B5725\ + ENTRY_POINT=SMIBiosBoardDriverEntryPoint\ + TYPE=BS_DRIVER \ + "CFLAGS=$(CFLAGS) /D\"SMBIOS_OEM_UPDATE_LIST=$(SmbiosOemUpdateList)\""\ + COMPRESS=1 + +SmBiosPnPBin: $(BUILD_DIR)\smbrun.inf + +$(BUILD_DIR)\smbrun.inf: $(BUILD_DIR)\token.mak $(CSM_OEM_SMBIOS_PNPFUNC_FILE) + copy << $@ + +[MODULE] +ModuleID = 1 +VendorID = 0 +DeviceID = 3 +File = $(CSM_OEM_SMBIOS_PNPFUNC_FILE) +<< + +$(CSM_OEM_SMBIOS_PNPFUNC_FILE): $(BUILD_DIR)\smbrun.obj + $(ASMLINK) $(BUILD_DIR)\smbrun.obj, $*.exe, $*.map,,, + exe2bin $*.exe $@ + +$(BUILD_DIR)\smbrun.obj: $(SMBIOS_DIR)\smbrun.asm + $(ASM) /c /nologo /Fo$(BUILD_DIR)\ $(SMBIOS_DIR)\smbrun.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/SMBiosFlashData.ffs b/Board/EM/SMBIOS/SMBiosFlashData.ffs new file mode 100644 index 0000000..37242c9 Binary files /dev/null and b/Board/EM/SMBIOS/SMBiosFlashData.ffs differ 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 + +;---------------------------------------------------------------------------- +; 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(, <%nBB>) + vFF = @CATSTR(%sTemp) + sTemp TEXTEQU @CATSTR(, <%nBB>) + vBT = @CATSTR(%sTemp) + + sMN TEXTEQU @CATSTR(, <%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, ) NE 0 + nMN = 0 + ELSE + nMN = strnum + strnum = strnum + 1 + ENDIF + + sPR TEXTEQU @CATSTR(, <%nBB>) + IF @INSTR(1, %sPR, ) NE 0 + nPR = 0 + ELSE + nPR = strnum + strnum = strnum + 1 + ENDIF + + sVE TEXTEQU @CATSTR(, <%nBB>) + IF @INSTR(1, %sVE, ) NE 0 + nVE = 0 + ELSE + nVE = strnum + strnum = strnum + 1 + ENDIF + + sSN TEXTEQU @CATSTR(, <%nBB>) + IF @INSTR(1, %sSN, ) NE 0 + nSN = 0 + ELSE + nSN = strnum + strnum = strnum + 1 + ENDIF + + sAT TEXTEQU @CATSTR(, <%nBB>) + IF @INSTR(1, %sAT, ) NE 0 + nAT = 0 + ELSE + nAT = strnum + strnum = strnum + 1 + ENDIF + + sLC TEXTEQU @CATSTR(, <%nBB>) + IF @INSTR(1, %sLC, ) 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(, <%nSC>) + IF @INSTR(1, %sTemp, ) NE 0 + MFG = 0 + ELSE + MFG = strnum + strnum = strnum + 1 + sMfg TEXTEQU @CATSTR(%sTemp) + ENDIF + + sTemp TEXTEQU @CATSTR(, <%nSC>) + vCl TEXTEQU @CATSTR(%sTemp) + + sTemp TEXTEQU @CATSTR(, <%nSC>) + xCt TEXTEQU @CATSTR(%sTemp) + xCt TEXTEQU xCt OR vCl + + sTemp TEXTEQU @CATSTR(, <%nSC>) + IF @INSTR(1, %sTemp, ) NE 0 + VER = 0 + ELSE + VER = strnum + strnum = strnum + 1 + sVer TEXTEQU @CATSTR(%sTemp) + ENDIF + + sTemp TEXTEQU @CATSTR(, <%nSC>) + IF @INSTR(1, %sTemp, ) NE 0 + SN = 0 + ELSE + SN = strnum + strnum = strnum + 1 + sSn TEXTEQU @CATSTR(%sTemp) + ENDIF + + sTemp TEXTEQU @CATSTR(, <%nSC>) + IF @INSTR(1, %sTemp, ) NE 0 + ATN = 0 + ELSE + ATN = strnum + strnum = strnum + 1 + sAtn TEXTEQU @CATSTR(%sTemp) + ENDIF + + sTemp TEXTEQU @CATSTR(, <%nSC>) + xCbs TEXTEQU @CATSTR(%sTemp) + + sTemp TEXTEQU @CATSTR(, <%nSC>) + xPss TEXTEQU @CATSTR(%sTemp) + + sTemp TEXTEQU @CATSTR(, <%nSC>) + xTs TEXTEQU @CATSTR(%sTemp) + + sTemp TEXTEQU @CATSTR(, <%nSC>) + xSs TEXTEQU @CATSTR(%sTemp) + + sTemp TEXTEQU @CATSTR(, <%nSC>) + xOem TEXTEQU @CATSTR(%sTemp) + + sTemp TEXTEQU @CATSTR(, <%nSC>) + xSysHt TEXTEQU @CATSTR(%sTemp) + + sTemp TEXTEQU @CATSTR(, <%nSC>) + xNoPwrCords TEXTEQU @CATSTR(%sTemp) + + sTemp TEXTEQU @CATSTR(, <%nSC>) + xNoContEle = @CATSTR(%sTemp) + + sTemp TEXTEQU @CATSTR(, <%nSC>) + xContEleRcrdLen = @CATSTR(%sTemp) + + xContElement TEXTEQU @CATSTR(, <%nSC>) + xContElement TEXTEQU @CATSTR(%xContElement) + + sTemp TEXTEQU @CATSTR(, <%nSC>) + IF @INSTR(1, %sTemp, ) 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(, <%rC>) + xPT TEXTEQU @CATSTR(, <%rC>) + xPF TEXTEQU @CATSTR(, <%rC>) + xSv TEXTEQU @CATSTR(, <%rC>) + xSs TEXTEQU @CATSTR(, <%rC>) + xSu TEXTEQU @CATSTR(, <%rC>) + xPS TEXTEQU @CATSTR(, <%rC>) + xPA TEXTEQU @CATSTR(, <%rC>) + xPP TEXTEQU @CATSTR(, <%rC>) + xPF2 TEXTEQU @CATSTR(, <%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(, <%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(, <%rC>) + @MEMORY_TYPE %xS + WORD xMs + xS TEXTEQU @CATSTR(, <%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(, <%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(, <%rC>) + @CACHE_INFO %xS + xS TEXTEQU @CATSTR(, <%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 + 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 + @CACHE_INFO %xS + xS TEXTEQU + @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(, <%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(, <%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(, <%rC>) + xS2 TEXTEQU @CATSTR(, <%rC>) + xS TEXTEQU @CATSTR(, <%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(, <%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(, <%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(, <%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(, <%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(, <%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(, <%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(, <%AC>) + xMs = @CATSTR(%xA, <_MEMORY_SOCKETS>) + + PHY_MEM_ARRAY_STRUC {\ + {16, length, xHandle}, + @CATSTR(,<%AC>), + @CATSTR(,<%AC>), + @CATSTR(,<%AC>), + @CATSTR(,<%AC>), + HArrayError, + xMs, + @CATSTR(,<%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(, <%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 (, <%ILoopCount>) + xCt = @CATSTR (, <%ILoopCount>, <_TYPE>) + xMl = @CATSTR (, <%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(,<%PointDevCntr>), + @CATSTR(,<%PointDevCntr>), + @CATSTR(,<%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(,<%BC>) + xDC = @CATSTR(,<%BC>) + xDV = @CATSTR(,<%BC>) + xME = @CATSTR(,<%BC>) + xSSN = @CATSTR(,<%BC>) + xSMD = @CATSTR(,<%BC>) + xDCM = @CATSTR(,<%BC>) + xOS = @CATSTR(,<%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(,<%BC>) + SCAN_PUT_STR @CATSTR(,<%BC>) + SCAN_PUT_STR @CATSTR(,<%BC>) + SCAN_PUT_STR @CATSTR(,<%BC>) + SCAN_PUT_STR @CATSTR(,<%BC>) + SCAN_PUT_STR @CATSTR(,<%BC>) + SCAN_PUT_STR @CATSTR(,<%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(, <%rCMdi>) + mT TEXTEQU @CATSTR(, <%rCMdi>) + mA TEXTEQU @CATSTR(, <%rCMdi>) + mAt TEXTEQU @CATSTR(, <%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(, <%rCMdi>) + + REPEAT xV + xHandle = xHandle + 1 + cH = xHandle + length = sizeof VOLTAGE_PROBE_STRUC + + xN = 1 + xS TEXTEQU @CATSTR(, <%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(, <%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(, <%rCMdi>) + + REPEAT xT + xHandle = xHandle + 1 + Tphndl = xHandle + cH = xHandle + length = sizeof TEMPERATURE_PROBE_STRUC + xN = 1 + xS TEXTEQU @CATSTR(, <%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(, <%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(, <%rCMdi>, <_>, <%rCTpi>) + + REPEAT xCc + xHandle = xHandle + 1 + cH = xHandle + length = sizeof COOLING_DEVICE_STRUC + + xN = 1 + xS TEXTEQU @CATSTR(, <%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(, <%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(, <%rCMdi>) + + REPEAT xE + xHandle = xHandle + 1 + cH = xHandle + length = sizeof ELECTRICAL_CURRENT_PROBE_STRUC + + xN = 1 + xS TEXTEQU @CATSTR(,<%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(,<%rCEdi>) + eutnc TEXTEQU @CATSTR(,<%rCEdi>) + eltc TEXTEQU @CATSTR(,<%rCEdi>) + eutc TEXTEQU @CATSTR(,<%rCEdi>) + eltnr TEXTEQU @CATSTR(,<%rCEdi>) + eutnr TEXTEQU @CATSTR(,<%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(, <%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(, <%vPS>) + v1 = @SUBSTR(%s1, 1, 1) + IF v1 EQ 1 + s1 TEXTEQU @CATSTR(, <%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(, <%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(, <%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(, <%vPS>) + sLo TEXTEQU @CATSTR(, <%vPS>) + sDN TEXTEQU @CATSTR(, <%vPS>) + sMa TEXTEQU @CATSTR(, <%vPS>) + sSN TEXTEQU @CATSTR(, <%vPS>) + sAT TEXTEQU @CATSTR(, <%vPS>) + sPN TEXTEQU @CATSTR(, <%vPS>) + sRL TEXTEQU @CATSTR(, <%vPS>) + vMP = @CATSTR(, <%vPS>) + vPC TEXTEQU @CATSTR(, <%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(, <%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(, <%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, + 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, + 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, + 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, + 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, + 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, + xCfg = xCfg OR arg + ENDM + WORD xCfg +ENDM + +;---------------------------------------------------------------------------- + +@EXT_CACHE_CFG MACRO arglist:VARARG + + LOCAL xCfg + xCfg = 0 + FOR arg, + 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, + 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, + 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 + 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 +ENDM + +;---------------------------------------------------------------------------- +; This macro is defined for scaning and putting string +;---------------------------------------------------------------------------- + +SCAN_PUT_STR MACRO str + + LOCAL xS + xS TEXTEQU + xS TEXTEQU SCAN_STR(%xS) + PUT_STR %xS +ENDM + +;---------------------------------------------------------------------------- + +SCAN_PUT_STR1 MACRO str + + LOCAL xS + xS TEXTEQU + 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 +; BASEBOARD_PRODUCT_1 DEFINE +; BASEBOARD_VERSION_1 DEFINE +; BASEBOARD_SERIAL_NUMBER_1 DEFINE +; BASEBOARD_ASSET_TAG_1 DEFINE +; 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 +; 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 + BASEBOARD_MANUFACTURER_2 DEFINE + BASEBOARD_MANUFACTURER_3 DEFINE + BASEBOARD_MANUFACTURER_4 DEFINE + BASEBOARD_MANUFACTURER_5 DEFINE + + BASEBOARD_PRODUCT_1 DEFINE + BASEBOARD_PRODUCT_2 DEFINE + BASEBOARD_PRODUCT_3 DEFINE + BASEBOARD_PRODUCT_4 DEFINE + BASEBOARD_PRODUCT_5 DEFINE + + BASEBOARD_VERSION_1 DEFINE + BASEBOARD_VERSION_2 DEFINE + BASEBOARD_VERSION_3 DEFINE + BASEBOARD_VERSION_4 DEFINE + BASEBOARD_VERSION_5 DEFINE + + BASEBOARD_SERIAL_NUMBER_1 DEFINE + BASEBOARD_SERIAL_NUMBER_2 DEFINE + BASEBOARD_SERIAL_NUMBER_3 DEFINE + BASEBOARD_SERIAL_NUMBER_4 DEFINE + BASEBOARD_SERIAL_NUMBER_5 DEFINE + + BASEBOARD_ASSET_TAG_1 DEFINE + BASEBOARD_ASSET_TAG_2 DEFINE + BASEBOARD_ASSET_TAG_3 DEFINE + BASEBOARD_ASSET_TAG_4 DEFINE + BASEBOARD_ASSET_TAG_5 DEFINE + + 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 + BASEBOARD_LOCATION_2 DEFINE + BASEBOARD_LOCATION_3 DEFINE + BASEBOARD_LOCATION_4 DEFINE + BASEBOARD_LOCATION_5 DEFINE + + 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 +; 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 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 + PROC_TYPE_1 DEFINE + PROC_FAMILY_1 DEFINE + PROC_VOLTAGE_1 DEFINE + PROC_MAX_SPEED_1 DEFINE <0> + PROC_UPGRADE_1 DEFINE + PROC_SERIAL_NO_1 DEFINE + PROC_ASSET_TAG_1 DEFINE + PROC_PART_NO_1 DEFINE + PROC_FAMILY_2_1 DEFINE + + PROC_SOC_DESIG_2 DEFINE + PROC_TYPE_2 DEFINE + PROC_FAMILY_2 DEFINE + PROC_VOLTAGE_2 DEFINE + PROC_MAX_SPEED_2 DEFINE <0> + PROC_UPGRADE_2 DEFINE + PROC_SERIAL_NO_2 DEFINE + PROC_ASSET_TAG_2 DEFINE + PROC_PART_NO_2 DEFINE + PROC_FAMILY_2_2 DEFINE + + PROC_SOC_DESIG_3 DEFINE + PROC_TYPE_3 DEFINE + PROC_FAMILY_3 DEFINE + PROC_VOLTAGE_3 DEFINE + PROC_MAX_SPEED_3 DEFINE <0> + PROC_UPGRADE_3 DEFINE + PROC_SERIAL_NO_3 DEFINE + PROC_ASSET_TAG_3 DEFINE + PROC_PART_NO_3 DEFINE + PROC_FAMILY_2_3 DEFINE + + PROC_SOC_DESIG_4 DEFINE + PROC_TYPE_4 DEFINE + PROC_FAMILY_4 DEFINE + PROC_VOLTAGE_4 DEFINE + PROC_MAX_SPEED_4 DEFINE <0> + PROC_UPGRADE_4 DEFINE + PROC_SERIAL_NO_4 DEFINE + PROC_ASSET_TAG_4 DEFINE + PROC_PART_NO_4 DEFINE + PROC_FAMILY_2_4 DEFINE + +;---------------------------------------------------------------------------- +; 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 +; +; EXTERNAL_CACHE_INFO +; +; * 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 +; +; EXTERNAL_CACHE_CFG +; +; * 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 +; +; EXTERNAL_CACHE_CHAR +; +; * 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 + 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 + 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 + 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 + EXTERNAL_CACHE_CHAR DEFINE <40, 00, 00, 00> + + +;---------------------------------------------------------------------------- +; Structure Type 8 : PORT CONNECTOR INFORMATION +;---------------------------------------------------------------------------- + +; + +;!!PORT!! + EXT_CONNECTOR_1 DEFINE + EXT_CONNECTOR_2 DEFINE + EXT_CONNECTOR_3 DEFINE + EXT_CONNECTOR_4 DEFINE + EXT_CONNECTOR_5 DEFINE + EXT_CONNECTOR_6 DEFINE + EXT_CONNECTOR_7 DEFINE + EXT_CONNECTOR_8 DEFINE + EXT_CONNECTOR_9 DEFINE + EXT_CONNECTOR_10 DEFINE + EXT_CONNECTOR_11 DEFINE + +; + +;!!PORT!! + INT_CONNECTOR_1 DEFINE + INT_CONNECTOR_2 DEFINE + INT_CONNECTOR_3 DEFINE + INT_CONNECTOR_4 DEFINE + INT_CONNECTOR_5 DEFINE + INT_CONNECTOR_6 DEFINE + INT_CONNECTOR_7 DEFINE + INT_CONNECTOR_8 DEFINE + INT_CONNECTOR_9 DEFINE + INT_CONNECTOR_10 DEFINE + INT_CONNECTOR_11 DEFINE + INT_CONNECTOR_12 DEFINE + INT_CONNECTOR_13 DEFINE + INT_CONNECTOR_14 DEFINE + INT_CONNECTOR_15 DEFINE + INT_CONNECTOR_16 DEFINE + INT_CONNECTOR_17 DEFINE + INT_CONNECTOR_18 DEFINE + INT_CONNECTOR_19 DEFINE + INT_CONNECTOR_20 DEFINE + INT_CONNECTOR_21 DEFINE + INT_CONNECTOR_22 DEFINE + INT_CONNECTOR_23 DEFINE + INT_CONNECTOR_24 DEFINE + INT_CONNECTOR_25 DEFINE + INT_CONNECTOR_26 DEFINE + +;---------------------------------------------------------------------------- +; Structure Type 9 : SYSTEM SLOT INFORMATION +;---------------------------------------------------------------------------- +; The following information is needed only if SYS_SLOT_INFO = Present +; Syntax: +; SYSTEM_SLOT_INFO_1 DEFINE +; * 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 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 -> 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 + SYSTEM_SLOT_CHAR_1 DEFINE + SEGGRP_BUS_DEV_FUNC_1 DEFINE <0, 0, 8> + + SYSTEM_SLOT_INFO_2 DEFINE + SYSTEM_SLOT_CHAR_2 DEFINE + SEGGRP_BUS_DEV_FUNC_2 DEFINE <0, 0, 0E3h> + + SYSTEM_SLOT_INFO_3 DEFINE + SYSTEM_SLOT_CHAR_3 DEFINE + SEGGRP_BUS_DEV_FUNC_3 DEFINE <0, 0, 0E4h> + + SYSTEM_SLOT_INFO_4 DEFINE + SYSTEM_SLOT_CHAR_4 DEFINE + SEGGRP_BUS_DEV_FUNC_4 DEFINE <0, 0, 0E5h> + + SYSTEM_SLOT_INFO_5 DEFINE + SYSTEM_SLOT_CHAR_5 DEFINE + SEGGRP_BUS_DEV_FUNC_5 DEFINE <0, 0, 0E6h> + + SYSTEM_SLOT_INFO_6 DEFINE + SYSTEM_SLOT_CHAR_6 DEFINE + SEGGRP_BUS_DEV_FUNC_6 DEFINE <0, 0, 0E7h> + + SYSTEM_SLOT_INFO_7 DEFINE + SYSTEM_SLOT_CHAR_7 DEFINE + 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 +; * 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 + ONBOARD_DEVICE_2 DEFINE + ONBOARD_DEVICE_3 DEFINE + +;---------------------------------------------------------------------------- +; Structure Type 11 : OEM STRINGS INFORMATION +;---------------------------------------------------------------------------- +; The following information is needed only if OEM_STRING_INFO = Present +; Syntax: +; OEM_STRING_1 DEFINE +; * 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 -> 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 -> 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 -> 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 -> 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 -> XXXXXXXXh = Maximum memory capacity in kilobytes +; 80000000h = unknown +; EXT_MAX_MEM_CAP_1 DEFINE - 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 +; +; * 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_DEVICE_2 DEFINE + A1_DEVICE_3 DEFINE + A1_DEVICE_4 DEFINE + A1_DEVICE_5 DEFINE + A1_DEVICE_6 DEFINE + A1_DEVICE_7 DEFINE + A1_DEVICE_8 DEFINE + A1_DEVICE_9 DEFINE + A1_DEVICE_10 DEFINE + A1_DEVICE_11 DEFINE + A1_DEVICE_12 DEFINE + A1_DEVICE_13 DEFINE + A1_DEVICE_14 DEFINE + A1_DEVICE_15 DEFINE + A1_DEVICE_16 DEFINE + A1_DEVICE_17 DEFINE + A1_DEVICE_18 DEFINE + A1_DEVICE_19 DEFINE + A1_DEVICE_20 DEFINE + A1_DEVICE_21 DEFINE + A1_DEVICE_22 DEFINE + A1_DEVICE_23 DEFINE + A1_DEVICE_24 DEFINE + A1_DEVICE_25 DEFINE + A1_DEVICE_26 DEFINE + A1_DEVICE_27 DEFINE + A1_DEVICE_28 DEFINE + A1_DEVICE_29 DEFINE + A1_DEVICE_30 DEFINE + A1_DEVICE_31 DEFINE + A1_DEVICE_32 DEFINE + +; 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_DEVICE_2 DEFINE + A2_DEVICE_3 DEFINE + A2_DEVICE_4 DEFINE + A2_DEVICE_5 DEFINE + A2_DEVICE_6 DEFINE + A2_DEVICE_7 DEFINE + A2_DEVICE_8 DEFINE + A2_DEVICE_9 DEFINE + A2_DEVICE_10 DEFINE + A2_DEVICE_11 DEFINE + A2_DEVICE_12 DEFINE + A2_DEVICE_13 DEFINE + A2_DEVICE_14 DEFINE + A2_DEVICE_15 DEFINE + A2_DEVICE_16 DEFINE + A2_DEVICE_17 DEFINE + A2_DEVICE_18 DEFINE + A2_DEVICE_19 DEFINE + A2_DEVICE_20 DEFINE + A2_DEVICE_21 DEFINE + A2_DEVICE_22 DEFINE + A2_DEVICE_23 DEFINE + A2_DEVICE_24 DEFINE + A2_DEVICE_25 DEFINE + A2_DEVICE_26 DEFINE + A2_DEVICE_27 DEFINE + A2_DEVICE_28 DEFINE + A2_DEVICE_29 DEFINE + A2_DEVICE_30 DEFINE + A2_DEVICE_31 DEFINE + A2_DEVICE_32 DEFINE + +; 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_DEVICE_2 DEFINE + A3_DEVICE_3 DEFINE + A3_DEVICE_4 DEFINE + A3_DEVICE_5 DEFINE + A3_DEVICE_6 DEFINE + A3_DEVICE_7 DEFINE + A3_DEVICE_8 DEFINE + A3_DEVICE_9 DEFINE + A3_DEVICE_10 DEFINE + A3_DEVICE_11 DEFINE + A3_DEVICE_12 DEFINE + A3_DEVICE_13 DEFINE + A3_DEVICE_14 DEFINE + A3_DEVICE_15 DEFINE + A3_DEVICE_16 DEFINE + A3_DEVICE_17 DEFINE + A3_DEVICE_18 DEFINE + A3_DEVICE_19 DEFINE + A3_DEVICE_20 DEFINE + A3_DEVICE_21 DEFINE + A3_DEVICE_22 DEFINE + A3_DEVICE_23 DEFINE + A3_DEVICE_24 DEFINE + A3_DEVICE_25 DEFINE + A3_DEVICE_26 DEFINE + A3_DEVICE_27 DEFINE + A3_DEVICE_28 DEFINE + A3_DEVICE_29 DEFINE + A3_DEVICE_30 DEFINE + A3_DEVICE_31 DEFINE + A3_DEVICE_32 DEFINE + +; 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_DEVICE_2 DEFINE + A4_DEVICE_3 DEFINE + A4_DEVICE_4 DEFINE + A4_DEVICE_5 DEFINE + A4_DEVICE_6 DEFINE + A4_DEVICE_7 DEFINE + A4_DEVICE_8 DEFINE + A4_DEVICE_9 DEFINE + A4_DEVICE_10 DEFINE + A4_DEVICE_11 DEFINE + A4_DEVICE_12 DEFINE + A4_DEVICE_13 DEFINE + A4_DEVICE_14 DEFINE + A4_DEVICE_15 DEFINE + A4_DEVICE_16 DEFINE + A4_DEVICE_17 DEFINE + A4_DEVICE_18 DEFINE + A4_DEVICE_19 DEFINE + A4_DEVICE_20 DEFINE + A4_DEVICE_21 DEFINE + A4_DEVICE_22 DEFINE + A4_DEVICE_23 DEFINE + A4_DEVICE_24 DEFINE + A4_DEVICE_25 DEFINE + A4_DEVICE_26 DEFINE + A4_DEVICE_27 DEFINE + A4_DEVICE_28 DEFINE + A4_DEVICE_29 DEFINE + A4_DEVICE_30 DEFINE + A4_DEVICE_31 DEFINE + A4_DEVICE_32 DEFINE + +;---------------------------------------------------------------------------- +; 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 -> 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 -> 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 +;---------------------------------------------------------------------------- + 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 +; PORT_BAT_MANUFACTURER_1 DEFINE +; PORT_BAT_MANUFACTURE_DATE_1 DEFINE +; PORT_BAT_SERIAL_NUMBER_1 DEFINE +; PORT_BAT_DEVICE_NAME_1 DEFINE +; DEVICE_CHEMISTRY_1 DEFINE +; * 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_VOLTAGE_1 DEFINE +; PORT_BAT_SBDS_VER_NO_1 DEFINE +; MAX_ERROR_IN_BAT_DATA_1 DEFINE +; 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 -> 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 +; DESIGN_CAPACITY_MULTIPLIER_1 DEFINE +; OEM_SPECIFIC_1 DEFINE +;---------------------------------------------------------------------------- +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 -> 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 + VOLTAGE_PROBE_INFO_2_1 DEFINE + VOLTAGE_PROBE_INFO_2_2 DEFINE + VOLTAGE_PROBE_INFO_3_1 DEFINE + VOLTAGE_PROBE_INFO_3_2 DEFINE + VOLTAGE_PROBE_INFO_3_3 DEFINE + +;!!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 -> 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 +; * 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 + TEMPERATURE_PROBE_INFO_2_1 DEFINE + TEMPERATURE_PROBE_INFO_2_2 DEFINE + +;!!PORT!! + TEMPERATURE_PROBE_INFO_3_1 DEFINE + TEMPERATURE_PROBE_INFO_3_2 DEFINE + TEMPERATURE_PROBE_INFO_3_3 DEFINE + +;!!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 -> 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 + ELECTRICAL_PROBE_INFO_2_1 DEFINE + ELECTRICAL_PROBE_INFO_2_2 DEFINE + ELECTRICAL_PROBE_INFO_3_1 DEFINE + ELECTRICAL_PROBE_INFO_3_2 DEFINE + ELECTRICAL_PROBE_INFO_3_3 DEFINE + +;!!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 + MANAGEMENT_DEVICE_TYPE_1 DEFINE + MANAGEMENT_DEVICE_ADDR_1 = 00000000h + MANAGEMENT_DEVICE_ADDR_TYPE_1 DEFINE + + MANAGEMENT_DEVICE_STRING_2 DEFINE + MANAGEMENT_DEVICE_TYPE_2 DEFINE + MANAGEMENT_DEVICE_ADDR_2 = 00000000h + MANAGEMENT_DEVICE_ADDR_TYPE_2 DEFINE + + MANAGEMENT_DEVICE_STRING_3 DEFINE + MANAGEMENT_DEVICE_TYPE_3 DEFINE + MANAGEMENT_DEVICE_ADDR_3 = 00000000h + MANAGEMENT_DEVICE_ADDR_TYPE_3 DEFINE + +;---------------------------------------------------------------------------- +; 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 + POWER_SUPPLY_DEVICE_NAME_1 DEFINE + POWER_SUPPLY_MANUFACTURER_1 DEFINE + POWER_SUPPLY_SERIAL_NUMBER_1 DEFINE + POWER_SUPPLY_ASSET_TAG_NUMBER_1 DEFINE + POWER_SUPPLY_MODEL_PART_NUMBER_1 DEFINE + POWER_SUPPLY_REVISION_LEVEL_1 DEFINE + POWER_SUPPLY_MAX_POWER_CAPACITY_1 = 8000h + POWER_SUPPLY_CHARACTERISTICS_1 = 11A2h + + POWER_SUPPLY_UNIT_GROUP_2 = 2 + POWER_SUPPLY_LOCATION_2 DEFINE + POWER_SUPPLY_DEVICE_NAME_2 DEFINE + POWER_SUPPLY_MANUFACTURER_2 DEFINE + POWER_SUPPLY_SERIAL_NUMBER_2 DEFINE + POWER_SUPPLY_ASSET_TAG_NUMBER_2 DEFINE + POWER_SUPPLY_MODEL_PART_NUMBER_2 DEFINE + POWER_SUPPLY_REVISION_LEVEL_2 DEFINE + 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 -> 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 -> 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 +; * 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 -> 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 + VALUE_1 = 0 + + REF_TYPE_2 = 1 + REF_TYPE_INSTANCE_2 = 1 + REF_OFFSET_2 = 15 + USE_STRING_2 = 0 + STRING_2 DEFINE + VALUE_2 = 30 + + REF_TYPE_3 = 7 + REF_TYPE_INSTANCE_3 = 2 + REF_OFFSET_3 = 1 + USE_STRING_3 = 1 + STRING_3 DEFINE + VALUE_3 = 0 + + REF_TYPE_4 = 1 + REF_TYPE_INSTANCE_4 = 1 + REF_OFFSET_4 = 1 + USE_STRING_4 = 1 + STRING_4 DEFINE + 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 +; * 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 -> 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 + SEGGRP_BUS_DEVFN_EXT_1 DEFINE <0, 0, 10h> + + ONBOARD_DEVICE_EXT_2 DEFINE + SEGGRP_BUS_DEVFN_EXT_2 DEFINE <0, 0, 0C8h> + + ONBOARD_DEVICE_EXT_3 DEFINE + 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 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 -> 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 + MEMORY_INFO_1 DEFINE + MEMORY_ERR_1 DEFINE <0> + + MEMORY_TYPE_2 DEFINE + MEMORY_INFO_2 DEFINE + MEMORY_ERR_2 DEFINE <0> + + MEMORY_TYPE_3 DEFINE + MEMORY_INFO_3 DEFINE + MEMORY_ERR_3 DEFINE <0> + + MEMORY_TYPE_4 DEFINE + MEMORY_INFO_4 DEFINE + MEMORY_ERR_4 DEFINE <0> + + MEMORY_TYPE_5 DEFINE + MEMORY_INFO_5 DEFINE + MEMORY_ERR_5 DEFINE <0> + + MEMORY_TYPE_6 DEFINE + MEMORY_INFO_6 DEFINE + 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 + +; +;---------------------------------------------------------------------------- +; Name: ModificationHeaderSTRUC +; +; Fields: Name Type Description +; ------------------------------------------------------------- +; wLength WORD length of the information in BYTEs +; including this word +; bType BYTE SMBIOS structure type +; +; Description: +; +;---------------------------------------------------------------------------- +; + +ModificationHeaderSTRUC STRUC + + wLength WORD ? + bType BYTE ? ; structure type + +ModificationHeaderSTRUC ENDS + +; +;---------------------------------------------------------------------------- +; 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: +; +;---------------------------------------------------------------------------- +; + +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 + +; +;---------------------------------------------------------------------------- +; 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: +; +;---------------------------------------------------------------------------- +; + +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 @@ + + 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" + 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 \ 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 \French Canadian \Japanese \Espanol \Dutch \Italian " + 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 ** +;** ** +;**************************************************************************** +;**************************************************************************** diff --git a/Board/EM/SMBIOS/SmbiosBoard.c b/Board/EM/SMBIOS/SmbiosBoard.c new file mode 100644 index 0000000..85befa5 --- /dev/null +++ b/Board/EM/SMBIOS/SmbiosBoard.c @@ -0,0 +1,1790 @@ +//**************************************************************************** +//**************************************************************************** +//** ** +//** (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/SmbiosBoard.c 29 5/07/14 10:33a Davidd $ +// +// $Revision: 29 $ +// +// $Date: 5/07/14 10:33a $ +//**************************************************************************** +// Revision History +// ---------------- +// $Log: /Alaska/BIN/Modules/SMBIOS/SmbiosBoard.c $ +// +// 29 5/07/14 10:33a Davidd +// [TAG] EIP157418 +// [Category] Improvement +// [Description] Removal of temporary bus assignment or sample code from +// SmbiosBoard.c template +// [Files] SmbiosBoard.c +// +// 28 11/15/13 4:31p Davidd +// [TAG] EIP143321 +// [Category] Improvement +// [Description] Perform "CppCheck" on Smbios module for +// '4.6.5.1_SMBIOS_36' release +// [Files] SmbiosBoard.c +// Smbios.c +// SmbiosDMIEdit.c +// SmbiosDMIEditFunc.c +// SmbiosNvramFunc.c +// +// 27 5/23/13 2:36p Davidd +// [TAG] EIP104836 +// [Category] New Feature +// [Description] DMIEdit support edit type 4 +// [Files] SmbiosBoard.c +// SmbiosDMIEditBoard.sdl +// Smbios.c +// SmbiosDMIEditFunc.c +// Smbios.h +// SmbiosDynamicData.h +// +// 26 5/04/11 3:33p Davidd +// [TAG] EIP57144 +// [Category] NEW FEATURE +// [Description] Allow SMBIOS Type 39 to be modified using DMIEdit +// [Files] SmbiosBoard.c +// Smbios.h +// SmbiosDynamicData.h +// Smbios.c +// SmbiosDmieditFunc.c +// SmbiosNvramFunc.c +// +// 25 4/05/11 11:38a Davidd +// [TAG] EIP55656 +// [Category] Improvement +// [Description] Provide generic support in SMBIOS module to include +// build time EC version +// [Files] SmbiosBoard.c +// +// 24 2/09/11 10:57a Davidd +// [TAG] EIP52505 +// [Category] Improvement +// [Description] Dynamically update SMBIOS Type24 (Hardware Security) +// according to Administrator/User password setup question. +// [Files] SmbiosBoard.c +// +// 23 11/22/10 12:36p Davidd +// [TAG] EIP44236 +// [Category] BUG FIX +// [Severity] Normal +// [Symptom] SMBIOS type 4 Processor Version is incorrect +// [RootCause] Type 4 Version string is not resized as updated. +// [Solution] Added code to replace the Version strings as updated. +// Same +// also applied to Manufacturer string. +// [Files] +// Smbios.c +// SmbiosBoard.c +// +// 22 11/15/10 2:18p Davidd +// [TAG] EIP46936 +// [Category] Improvement +// [Description] Generic Smbios module should have the support to +// disable SMBIOS memory update +// [Files] +// Smbios.c +// Smbios.sdl +// SmbiosBoard.c +// SmbiosDynamicData.h +// +// 21 11/01/10 12:36p Davidd +// [TAG] EIP41560 +// [Category] Improvement +// [Description] DMIEDIT modified values are not preserved in reboot +// [Files] +// Smbios.c +// Smbios.sdl +// SmbiosBoard.c +// SmbiosBoard.mak +// +// 20 6/02/09 3:43p Davidd +// Updated AMI and function headers (EIP 22180) +// +// 19 5/19/09 11:01a Davidd +// Changes added to improve memory type 17 porting (EIP 22241). +// +// 18 12/30/08 3:11p Davidd +// Fixed the hanging problem when only SMBIOS binary component is present +// (ref. EIP 18370) +// +// 17 11/14/08 4:39p Davidd +// - Added OemUpdate protocol. OEM can add code to update any structure +// here. This function will be called after all structures have been +// updated with DMI or dynamic data. +// +// 16 10/27/08 12:52p Davidd +// - Code added for memory SPD data access. +// - Added Type 41 support (SMBIOS v2.6) +// +// 15 2/22/08 10:19a Davidd +// Simplified the way the number of memory slots for each physical memory +// array are defined. +// +// 14 2/13/08 12:41p Davidd +// Added a close comment missing in CreateBatteryDataForSMBios(). +// +// 13 2/06/08 3:58p Davidd +// Added NO_OF_PORTABLE_BATTERY field to SmbiosBoardProtocol to hold the +// number of batteries in the system. +// +// 12 12/17/07 12:09p Davidd +// Added PORTABLE_BATTERY_INFO to EFI_SMBIOS_BOARD_PROTOCOL. +// Removed entries intended as reminder of porting is needed. This causes +// BQA Module Delete/Insertion test to fail. +// +// 11 11/28/07 10:56a Davidd +// Changes added to dynamically update the Processor Information Type 4 +// Voltage field. +// +// 10 11/21/07 12:11p Davidd +// +// 9 11/21/07 12:04p Davidd +// Added function CreateBatteryDataForSMBios to support Portable Battery +// Data structure type 22. +// +// 8 6/05/07 4:03p Michaela +// Added porting comment for CreateCPUDataForSMBios() to clarify +// usage for backward compatibility only +// +// 7 3/29/07 3:23p Davidd +// Provide sample template code for both Intel and AMD platforms. User to +// uncomment appropriate blocks to use. Sample template code might need +// additional changes depending on platform. +// +// 6 3/21/07 4:35p Michaela +// minor modification to CreateCPUDataForSMBios to meet +// coding standards, add support for AMD and add comments. +// +// 5 12/15/06 1:13p Davidd +// 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. +// +// 3 3/15/06 5:50p Fasihm +// Code modified to get the CPU data by making call to the CPU protocol. +// Added some SDL token values into the SmbiosBoardProtocol. +// +// 4 3/03/06 5:32p Davidd +// Code modified to get the CPU data by making call to the CPU protocol. +// +// 3 7/27/05 1:23p Davidd +// Added some SDL token values into the SmbiosBoardProtocol. +// +// 2 7/20/05 11:17a Davidd +// Commented out sample code. Sample code is for reference only. +// +// 1 7/18/05 5:57p Davidd +// File added. This file is used to port the CPU, System Slot, and +// On-Board Devices dynamic information. +// +//**************************************************************************** + +// +//---------------------------------------------------------------------------- +// +// Name: SmbiosBoard.C +// +// Description: This file contains code for OEM related code for SMBIOS +// +//---------------------------------------------------------------------------- +// + +//---------------------------------------------------------------------------- +// Includes + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define PCI_CFG_ADDRESS(bus,dev,func,reg) \ + ((UINT64)((((UINTN)bus) << 24) + (((UINTN)dev) << 16) + (((UINTN)func) << 8) + ((UINTN)reg)))& 0x00000000ffffffff + +extern EFI_BOOT_SERVICES *pBS; + +UINT8 SmbusCmdReg; +EFI_GUID gEfiSmbiosProtocolGuid = EFI_SMBIOS_PROTOCOL_GUID; +EFI_SMBIOS_PROTOCOL *gSmbiosProtocol; +EFI_SMBUS_HC_PROTOCOL *gSMBus = NULL; + +EFI_GUID gEfiSmbiosBoardProtocolGuid = EFI_SMBIOS_BOARD_PROTOCOL_GUID; + +EFI_SMBIOS_BOARD_PROTOCOL SmbiosBoardProtocol = {BASE_BOARD_INFO, + SYS_CHASSIS_INFO, + PROCESSOR_DMIEDIT_SUPPORT, + OEM_STRING_INFO, + SYSTEM_CONFIG_OPTION_INFO, + MEMORY_ERROR_INFO, + ONBOARD_DEVICE_INFO, + PORTABLE_BATTERY_INFO, + ADDITIONAL_INFO, + ONBOARD_DEVICE_EXTENDED_INFO, + SYSTEM_POWER_SUPPLY_INFO, + NO_OF_PROCESSOR_SOCKETS, + NUMBER_OF_SYSTEM_SLOTS, + NUMBER_OF_ONBOARD_DEVICES, + NO_OF_PHYSICAL_MEMORY_ARRAY, + NO_OF_PORTABLE_BATTERY, + ONBOARD_DEVICE_EXT_COUNT, + CreateBaseBoardDataForSMBios, + CreateChassisDataForSMBios, + CreateCPUDataForSMBios, + CreateSlotDataForSMBios, + CreateOnBoardDevDataForSMBios, + CreateBatteryDataForSMBios, + CreateOnBoardDevExtInfoForSMBios, + EnableSmbusController, + RestoreSmbusController, + GetSpdByte, + OemUpdate, + A1_MEMORY_SOCKETS, +#if NO_OF_PHYSICAL_MEMORY_ARRAY >= 2 + A2_MEMORY_SOCKETS, +#endif +#if NO_OF_PHYSICAL_MEMORY_ARRAY >= 3 + A3_MEMORY_SOCKETS, +#endif +#if NO_OF_PHYSICAL_MEMORY_ARRAY == 4 + A4_MEMORY_SOCKETS, +#endif + }; + +typedef VOID (SMBIOS_OEM_UPDATE) (VOID); +extern SMBIOS_OEM_UPDATE SMBIOS_OEM_UPDATE_LIST EndOfSmbiosOemUpdateList; +SMBIOS_OEM_UPDATE* SmbiosOemUpdate[] = {SMBIOS_OEM_UPDATE_LIST NULL}; + +/* +//---------------------------------------------------------------------------- +// ================================================================== +// ================================================================== +// ================================================================== +// === === +// === End of SAMPLE TEMPLATE CODE for Intel Weybridge CRB === +// === platform. Uncomment this block to use. === +// === === +// === Might need changes for other platforms. === +// === === +// ================================================================== +// ================================================================== +// ================================================================== +//---------------------------------------------------------------------------- +*/ + +// +//---------------------------------------------------------------------------- +// ***** PORTING REQUIRED ***** +// (if SMBIOS module is part of the project) +//---------------------------------------------------------------------------- +// Procedure: OemUpdate +// +// Description: The purpose of this function is to allow OEM to update the +// SMBIOS table as needed. OEM can use the EFI_SMBIOS_PROTOCOL +// to read, add, delete, and write to the SMBIOS table. +// +// Input: None +// +// Output: None +// +// Note: +// +//---------------------------------------------------------------------------- +// +VOID +OemUpdate (VOID) +{ +/* +//---------------------------------------------------------------------------- + // ================================================================== + // ================================================================== + // ================================================================== + // === === + // === The following sample code DOES NOT serve any purposes. === + // === It is included to illustrate the use of the SMBIOS === + // === protocols only. === + // === === + // ================================================================== + // ================================================================== + // ================================================================== + EFI_STATUS Status; + UINT8 *Buffer; + UINT16 BSize; + UINT16 Handle; + + Status = pBS->LocateProtocol(&gEfiSmbiosProtocolGuid, NULL, &gSmbiosProtocol); + ASSERT_EFI_ERROR(Status); + + // Read CPU structure + Status = gSmbiosProtocol->SmbiosReadStrucByType(4, 1, &Buffer, &BSize); + + if (!EFI_ERROR(Status)) { + // Update previously read CPU structure and write it back, overwriting old data + Handle = ((SMBIOS_STRUCTURE_HEADER*)Buffer)->Handle; + ((SMBIOS_PROCESSOR_INFO*)Buffer)->MaxSpeed = 0x1234; + gSmbiosProtocol->SmbiosWriteStructure(Handle, Buffer, BSize); + + // Add structure with specific handle = 0x60 + Handle = 0x60; + gSmbiosProtocol->SmbiosAddStrucByHandle(Handle, Buffer, BSize); + + // Add structure with next available handle number + gSmbiosProtocol->SmbiosAddStructure(Buffer, BSize); + + // Delete structure with handle = 3 + gSmbiosProtocol->SmbiosDeleteStructure(3); + + // Get available free handle, then add structure with that handle + Handle = gSmbiosProtocol->SmbiosGetFreeHandle(); + if (Handle != -1) { + gSmbiosProtocol->SmbiosAddStrucByHandle(Handle, Buffer, BSize); + } + + // Free memory allocated by the earlier gSmbiosProtocol->SmbiosReadStrucByType call + pBS->FreePool(Buffer); + } + // ================================================================== + // ================================================================== + // ================================================================== + // === === + // === End of sample code === + // === === + // ================================================================== + // ================================================================== + // ================================================================== + +//---------------------------------------------------------------------------- +*/ + +//=========================================================================== +// EC Version (Type 0 Offset 0x16-0x17) dynamic update +// +// This code requires EC major & minor versions to be available in +// ECRev1 & ECRev2 NVRAM variables respectively +//=========================================================================== +#if (defined(DYNAMIC_UPDATE_TYPE0_EC_VERSION) && (DYNAMIC_UPDATE_TYPE0_EC_VERSION == 1)) +{ + EFI_STATUS Status; + EFI_GUID gEfiGlobalVariableGuid = EFI_GLOBAL_VARIABLE; + UINT8 EcMajorVersion; + UINT8 EcMinorVersion; + UINTN Size = sizeof(EcMajorVersion); + UINT8 Type0Data[sizeof(SMBIOS_BIOS_INFO)]; + UINT16 Type0DataSize = sizeof(SMBIOS_BIOS_INFO); + UINT8 *Type0DataPtr = &Type0Data[0]; + + // Get EC version from ECRev1 & ECRev2 variables + Status = pRS->GetVariable( L"ECRev1", \ + &gEfiGlobalVariableGuid, \ + NULL, \ + &Size, \ + &EcMajorVersion ); + if (EFI_ERROR(Status)) goto exitEcVersionUpdate; + + Status = pRS->GetVariable( L"ECRev2", \ + &gEfiGlobalVariableGuid, \ + NULL, \ + &Size, \ + &EcMinorVersion ); + if (EFI_ERROR(Status)) goto exitEcVersionUpdate; + + Status = pBS->LocateProtocol( + &gEfiSmbiosProtocolGuid, + NULL, + &gSmbiosProtocol); + ASSERT_EFI_ERROR(Status); + + if (Status == EFI_SUCCESS) { + // Read Smbios Type 0 structure, update EC version and write it back + Status = gSmbiosProtocol->SmbiosReadStrucByType( + 0, + 1, + &Type0DataPtr, + &Type0DataSize); + ASSERT_EFI_ERROR(Status); + + ((SMBIOS_BIOS_INFO*)Type0DataPtr)->ECFirmwareMajorRelease = EcMajorVersion; + ((SMBIOS_BIOS_INFO*)Type0DataPtr)->ECFirmwareMinorRelease = EcMinorVersion; + + if (Status == EFI_SUCCESS) { + Status = gSmbiosProtocol->SmbiosWriteStructure( + ((SMBIOS_BIOS_INFO*)Type0DataPtr)->StructureType.Handle, + Type0DataPtr, + Type0DataSize); + ASSERT_EFI_ERROR(Status); + } + } + +exitEcVersionUpdate: + Status = EFI_SUCCESS; // Dummy - To avoid build error in some cases +} +#endif +//=========================================================================== +// EC Version (Type 0 Offset 0x16-0x17) dynamic update End +//=========================================================================== + +//=========================================================================== +// ***** DO NOT REMOVE THIS BLOCK ***** +// +// Hardware Security (Type 24) dynamic update Start +// +// Update Type 24 Administrator and Power-on Password Status based on +// Setup settings +//=========================================================================== +#if (defined(TSE_BUILD) && (HARDWARE_SECURITY_INFO == 1)) // Token indicating AMI TSE is used +{ +#include + +#define AMITSESETUP_GUID \ + { 0xc811fa38, 0x42c8, 0x4579, 0xa9, 0xbb, 0x60, 0xe9, 0x4e, 0xdd, 0xfb, 0x34 } + + EFI_STATUS Status; + EFI_GUID AmiTseSetupGuid = AMITSESETUP_GUID; + AMITSESETUP AmiTseData; + UINTN VariableSize = sizeof(AMITSESETUP); + UINTN TsePasswordLength = SETUP_PASSWORD_LENGTH * sizeof(CHAR16); + CHAR16 *TestPassWord; + UINT8 HwdSecSettings = 0; + UINT8 *Type24Data; + UINT16 Type24Size; + + Status = pRS->GetVariable ( L"AMITSESetup", \ + &AmiTseSetupGuid, \ + NULL, \ + &VariableSize, \ + &AmiTseData ); + + if (!EFI_ERROR(Status)) { + Status = pBS->AllocatePool(EfiRuntimeServicesData, TsePasswordLength, &TestPassWord); + if (Status == EFI_SUCCESS) { + MemSet(TestPassWord, TsePasswordLength, 0); + + if (MemCmp(AmiTseData.UserPassword, TestPassWord, TsePasswordLength) != 0) { + HwdSecSettings |= BIT6; // Power-on Password + } + if (MemCmp(AmiTseData.AdminPassword, TestPassWord, TsePasswordLength) != 0) { + HwdSecSettings |= BIT2; // Administrator Password + } + + Status = pBS->LocateProtocol( + &gEfiSmbiosProtocolGuid, + NULL, + &gSmbiosProtocol); + ASSERT_EFI_ERROR(Status); + + if (Status == EFI_SUCCESS) { + Status = gSmbiosProtocol->SmbiosReadStrucByType( + 24, + 1, + &Type24Data, + &Type24Size); + + ASSERT_EFI_ERROR(Status); + + if (Status == EFI_SUCCESS) { + ((SMBIOS_HARDWARE_SECURITY_INFO*)Type24Data)->HardwareSecSettings &= 0x33; // Clear Admin & Power-on pwd + ((SMBIOS_HARDWARE_SECURITY_INFO*)Type24Data)->HardwareSecSettings |= HwdSecSettings; + Status = gSmbiosProtocol->SmbiosWriteStructure( + ((SMBIOS_HARDWARE_SECURITY_INFO*)Type24Data)->StructureType.Handle, + Type24Data, + Type24Size); + ASSERT_EFI_ERROR(Status); + + pBS->FreePool(Type24Data); + } + } + + pBS->FreePool(TestPassWord); + } + } +} +#endif +//=========================================================================== +// Hardware Security (Type 24) dynamic update End +//=========================================================================== + +//=========================================================================== +// ***** DO NOT REMOVE THIS BLOCK ***** +// ***** Calling OEM Update eLinks ***** +// +// OEM Update eLinks Block Start +//=========================================================================== + { + UINT8 i; + + for (i = 0; SmbiosOemUpdate[i] != NULL; i++) { + SmbiosOemUpdate[i](); + } + } +//=========================================================================== +// OEM Update eLinks Block End +//=========================================================================== +} + +// +//---------------------------------------------------------------------------- +// ***** PORTING REQUIRED ***** +// (if SMBIOS module is part of the project) +//---------------------------------------------------------------------------- +// Procedure: EnableSmbusController +// +// Description: This function saves the current setting of the Smbus +// Controller CMD register and then enables it so that SPD data +// can be accessed. +// +// Input: None +// +// Output: EFI_STATUS +// +// Note: +// +//---------------------------------------------------------------------------- +// +EFI_STATUS +EnableSmbusController (VOID) +{ + EFI_GUID EfiSMBusProtocolGuid = EFI_SMBUS_HC_PROTOCOL_GUID; + + // Enables the SMBus controller command register if needed. + + return pBS->LocateProtocol( &EfiSMBusProtocolGuid, NULL, &gSMBus ); +} + +// +//---------------------------------------------------------------------------- +// ***** PORTING REQUIRED ***** +// (if SMBIOS module is part of the project) +//---------------------------------------------------------------------------- +// Procedure: RestoreSmbusController +// +// Description: This function restores the Smbus Controller CMD register +// to the previously saved setting. +// +// Input: None +// +// Output: EFI_STATUS +// +// Note: +// +//---------------------------------------------------------------------------- +// +EFI_STATUS +RestoreSmbusController (VOID) +{ + EFI_STATUS Status = EFI_UNSUPPORTED; + + return Status; +} + +// +//---------------------------------------------------------------------------- +// ***** PORTING REQUIRED ***** +// (if SMBIOS module is part of the project) +//---------------------------------------------------------------------------- +// Procedure: GetSpdByte +// +// Description: This function reads a byte from the system memory SPD +// +// Input: IN EFI_SMBUS_DEVICE_ADDRESS SpdAddr +// IN UINT8 Offset +// IN OUT UINT8 *Data +// +// Output: EFI_STATUS +// UINT8 *Data +// +// Note: +// +//---------------------------------------------------------------------------- +// +EFI_STATUS +GetSpdByte ( + IN EFI_SMBUS_DEVICE_ADDRESS SpdAddr, + IN UINT8 Offset, + IN OUT UINT8 *Data +) +{ + UINTN Length = 1; + + if (gSMBus == NULL) return EFI_UNSUPPORTED; + + return gSMBus->Execute( gSMBus, + SpdAddr, + Offset, + EfiSmbusReadByte, + FALSE, + &Length, + Data ); +} + +// +//---------------------------------------------------------------------------- +// ***** PORTING REQUIRED ***** +// (if SMBIOS module is part of the project) +//---------------------------------------------------------------------------- +// Procedure: CreateSlotDataForSMBios +// +// Description: This function gathers the System Slot status information and +// saves them in a variable named "SmbiosSlotsVar". This variable +// with the slot information is needed by the SMBIOS module to +// create the REQUIRED "Type 9" structure +// +// Input: None +// +// Output: EFI_STATUS +// Variable named "SmbiosSlotsVar" with system slot information +// +// Note: Refer to SYSTEM_SLOT_DYNAMIC_DATA in SmbiosDynamicData.h for +// structure information. +// +//---------------------------------------------------------------------------- +// +EFI_STATUS +CreateSlotDataForSMBios (VOID) +{ + EFI_STATUS Status = EFI_SUCCESS; + +#if UPDATE_SLOT_TYPE9 +/* +//---------------------------------------------------------------------------- +// PORTING REQUIRED - PORTING REQUIRED - PORTING REQUIRED +//---------------------------------------------------------------------------- +// +// Create a SYSTEM_SLOT_DYNAMIC_DATA structure and fill it with system slots +// information - bus number for the slot and its current usage status. +// Return the slot structure information in a variable named "SmbiosSlotsVar" +// +*/ +#endif // UPDATE_SLOT_TYPE9 + + return Status; +} + +// +//---------------------------------------------------------------------------- +// Procedure: FillStringBufferWithSpaces +// +// Description: This function fills the input buffer with spaces. The number +// of spaces to be filled is specified in the input BufferSize +// +// Input: IN UINT8 *BufferPtr +// IN UINT8 BufferSize +// +// Output: Buffer pointed by BufferPtr is filled with spaces +// +//---------------------------------------------------------------------------- +// +VOID +FillStringBufferWithSpaces ( + IN UINT8 *BufferPtr, + IN UINT8 BufferSize +) +{ + UINT8 i; + + for (i = 0; i < (BufferSize - 1); i++) { + *BufferPtr = 0x20; + BufferPtr++; + } + *BufferPtr = 0; +} + +// +//---------------------------------------------------------------------------- +// ***** PORTING REQUIRED ***** +// (if SMBIOS module is part of the project) +//---------------------------------------------------------------------------- +// Procedure: CreateBaseBoardDataForSMBios +// +// Description: This function provides system chassis information. SMBIOS +// Core uses these information to dynamically update SMBIOS +// Chassis Type 2. +// +// Input: None +// +// Output: Creates variable named "SmbiosBaseBoardVar" with Chassis information +// +// Note: Refer to BASE_BOARD_DATA in SmbiosDynamicData.h for structure +// information. +// +//---------------------------------------------------------------------------- +// +EFI_STATUS +CreateBaseBoardDataForSMBios ( +) +{ + EFI_STATUS Status = EFI_SUCCESS; + +#if UPDATE_BASEBOARD_TYPE2 +/* +//---------------------------------------------------------------------------- + // ================================================================== + // ================================================================== + // ================================================================== + // === === + // === Start of SAMPLE TEMPLATE CODE === + // === === + // === Might need changes for specific platform === + // === === + // ================================================================== + // ================================================================== + // ================================================================== + + EFI_GUID EfiSmbiosDynamicDataGuid = EFI_SMBIOS_DYNAMIC_DATA_GUID; + BASE_BOARD_DATA BaseBoardInfo; + UINTN VarSize; + UINT32 Attributes = EFI_VARIABLE_BOOTSERVICE_ACCESS; + + char* BoardID_Index[] = { + "Board Name 1", // 0x00 + "Board Name ", // 0x01 + "Board Name ", // 0x02 + }; + + char* BoardManufacturerName = "XYZ Corporation"; + + Status = pBS->LocateProtocol( + &gPlatformInfoProtocolGuid, + NULL, + &gPlatformInfoProtocol); + ASSERT_EFI_ERROR(Status); + + Status = pBS->AllocatePool( + EfiBootServicesData, + strlen(BoardManufacturerName), + &BaseBoardInfo.BoardManufacturer); + + strcpy(BaseBoardInfo.BoardManufacturer, BoardManufacturerName); + + Status = pBS->AllocatePool( + EfiBootServicesData, + strlen(BoardID_Index[gPlatformInfoProtocol->BoardId]), + &BaseBoardInfo.BoardName); + + strcpy(BaseBoardInfo.BoardName, BoardID_Index[gPlatformInfoProtocol->BoardId]); + + VarSize = sizeof(BASE_BOARD_DATA); + + Status = pRS->SetVariable( + SmbiosBaseBoardVar, + &EfiSmbiosDynamicDataGuid, + Attributes, + VarSize, + &BaseBoardInfo); + + // ================================================================== + // ================================================================== + // ================================================================== + // === === + // === End of SAMPLE TEMPLATE CODE === + // === === + // ================================================================== + // ================================================================== + // ================================================================== +//---------------------------------------------------------------------------- +*/ +#endif // UPDATE_BASEBOARD_TYPE2 + + return Status; +} + +// +//---------------------------------------------------------------------------- +// ***** PORTING REQUIRED ***** +// (if SMBIOS module is part of the project) +//---------------------------------------------------------------------------- +// Procedure: CreateChassisDataForSMBios +// +// Description: This function provides system chassis information. SMBIOS +// Core uses these information to dynamically update SMBIOS +// Chassis Type 3. +// +// Input: None +// +// Output: Creates variable named "SmbiosChassisVar" with Chassis information +// +// Note: Refer to CHASSIS_DATA in SmbiosDynamicData.h for structure +// information. +// +//---------------------------------------------------------------------------- +// +EFI_STATUS +CreateChassisDataForSMBios ( +) +{ + EFI_STATUS Status = EFI_SUCCESS; + +#if UPDATE_SYSTEM_CHASSIS_TYPE3 +/* +//---------------------------------------------------------------------------- + // ================================================================== + // ================================================================== + // ================================================================== + // === === + // === Start of SAMPLE TEMPLATE CODE === + // === === + // === Might need changes for specific platform === + // === === + // ================================================================== + // ================================================================== + // ================================================================== + + EFI_GUID EfiSmbiosDynamicDataGuid = EFI_SMBIOS_DYNAMIC_DATA_GUID; + CHASSIS_DATA ChassisInfo; + UINTN VarSize; + UINT32 Attributes = EFI_VARIABLE_BOOTSERVICE_ACCESS; + + Status = pBS->LocateProtocol( + &gPlatformInfoProtocolGuid, + NULL, + &gPlatformInfoProtocol); + ASSERT_EFI_ERROR(Status); + + switch (gPlatformInfoProtocol->PlatformFlavor) { + case FlavorMobile: + ChassisInfo.Type = 0x09; // EfiMiscChassisTypeLapTop + break; + case FlavorDesktop: + ChassisInfo.Type = 0x03; // EfiMiscChassisTypeDeskTop + break; + case FlavorUpServer: + ChassisInfo.Type = 0x11; // EfiMiscChassisTypeMainServerChassis + break; + default: + ChassisInfo.Type = 0x02; // EfiMiscChassisTypeUnknown; + } + + VarSize = sizeof(CHASSIS_DATA); + Status = pRS->SetVariable( + SmbiosChassisVar, + &EfiSmbiosDynamicDataGuid, + Attributes, + VarSize, + &ChassisInfo); + + // ================================================================== + // ================================================================== + // ================================================================== + // === === + // === End of SAMPLE TEMPLATE CODE === + // === === + // ================================================================== + // ================================================================== + // ================================================================== +//---------------------------------------------------------------------------- +*/ +#endif // UPDATE_SYSTEM_CHASSIS_TYPE3 + + return Status; +} + +// +//---------------------------------------------------------------------------- +// ***** PORTING REQUIRED ***** +// (if SMBIOS module is part of the project) +//---------------------------------------------------------------------------- +// Procedure: CreateCPUDataForSMBios +// +// Description: This function gathers the System Processor information and +// saves them in a variable named "SmbiosCpuVar". This variable +// with the CPU information is needed by the SMBIOS module to +// create the "Type 4, 7" structure. +// +// Input: None +// +// Output: EFI_STATUS +// Variable named "SmbiosCpuVar" with System CPU information +// +// Note: Refer to CPU_DYNAMIC_DATA in SmbiosDynamicData.h for +// structure information. +// +// ******************** PORTING NOTE ******************** +// By default, this function only returns EFI_SUCCESS and should +// only be ported if the CPU module does not install the +// SMBIOS_CPU_INFO_PROTOCOL. +// +//---------------------------------------------------------------------------- +// +EFI_STATUS +CreateCPUDataForSMBios (VOID) +{ + EFI_STATUS Status = EFI_SUCCESS; + +#if UPDATE_CPU_TYPE4 +/* +//---------------------------------------------------------------------------- + // ================================================================== + // ================================================================== + // ================================================================== + // === === + // === Start of SAMPLE TEMPLATE CODE for Intel Weybridge CRB === + // === platform. Uncomment this block to use. === + // === === + // === Might need changes for other platforms. === + // === === + // ================================================================== + // ================================================================== + // ================================================================== + EFI_GUID gAmiCpuInfoProtocolGuid = AMI_CPU_INFO_PROTOCOL_GUID; + EFI_GUID EfiSmbiosDynamicDataGuid = EFI_SMBIOS_DYNAMIC_DATA_GUID; + UINTN NumCores = 1; + UINTN NumHts = 1; + UINTN i; + UINTN j; + UINT32 Attributes = EFI_VARIABLE_BOOTSERVICE_ACCESS; + UINT32 L1Cache; + UINT32 L2Cache; + UINT32 L3Cache; + AMI_CPU_INFO *GetCpuInfo = NULL; + AMI_CPU_INFO_PROTOCOL *AmiCpuInfo; + CPU_DYNAMIC_DATA CpuInfo; + CACHE_DESCRIPTOR_INFO *CacheDescInfo; + UINT8 CacheTypeTable[] = {4, 3, 1, 5}; + UINT8 AssociativityTable[] = {6, 1, 4, 1, 5, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 8}; + + Status = pBS->LocateProtocol (&gAmiCpuInfoProtocolGuid, NULL, &AmiCpuInfo); + if (EFI_ERROR(Status)) return Status; + + CpuInfo.NumberCPU = NO_OF_PROCESSOR_SOCKETS; + + for(i = 0; i < NO_OF_PROCESSOR_SOCKETS; ++i) { + Status = AmiCpuInfo->GetCpuInfo(AmiCpuInfo, (UINTN)i*NumCores*NumHts, &GetCpuInfo); + if (Status) { + // No data available from CPU module + CpuInfo.CpuData[i].CpuData.Status = 0; + CpuInfo.CpuData[i].CpuData.CurrentSpeed = 0; + // Hardcode MaxSpeed to 4GHz (assumed system max speed) + CpuInfo.CpuData[i].CpuData.MaxSpeed = 0x0FA0; + CpuInfo.CpuData[i].CpuData.ExtClockFreq = CpuInfo.CpuData[0].CpuData.ExtClockFreq; + CpuInfo.CpuData[i].CpuData.ProcessorID_1 = 0; + CpuInfo.CpuData[i].CpuData.ProcessorID_2 = 0; + CpuInfo.CpuData[i].CpuData.Voltage = BIT01; // Assume 3.3V + CpuInfo.CpuData[i].CpuData.Upgrade = CpuInfo.CpuData[0].CpuData.Upgrade; + CpuInfo.CpuData[i].CpuData.Family = CpuInfo.CpuData[0].CpuData.Family; + MemCpy(CpuInfo.CpuData[i].CpuData.Manufacturer, CpuInfo.CpuData[0].CpuData.Manufacturer, 18); + MemCpy(CpuInfo.CpuData[i].CpuData.Version, CpuInfo.CpuData[0].CpuData.Version, 48); + continue; + } + + NumCores = GetCpuInfo->NumCores; + NumHts = GetCpuInfo->NumHts; + CacheDescInfo = GetCpuInfo->CacheInfo; + + L1Cache = 0; + L2Cache = 0; + L3Cache = 0; + CpuInfo.CpuData[i].L1Cache.SystemCacheType = 0xFF; + CpuInfo.CpuData[i].L2Cache.SystemCacheType = 0xFF; + CpuInfo.CpuData[i].L3Cache.SystemCacheType = 0xFF; + for(j = 0; CacheDescInfo[j].Desc; ++j) { // End of descriptors, Desc = 0. + switch(GetCpuInfo->CacheInfo[j].Level) { + case 1: + L1Cache = CacheDescInfo[j].Size; + if (CpuInfo.CpuData[i].L1Cache.SystemCacheType == 0xFF) { + CpuInfo.CpuData[i].L1Cache.SystemCacheType = CacheTypeTable[CacheDescInfo[j].Type]; + } + else { + CpuInfo.CpuData[i].L1Cache.SystemCacheType = 0x05; + } + CpuInfo.CpuData[i].L1Cache.Associativity = AssociativityTable[CacheDescInfo[j].Associativity]; + break; + case 2: + L2Cache = CacheDescInfo[j].Size; + if (CpuInfo.CpuData[i].L2Cache.SystemCacheType == 0xFF) { + CpuInfo.CpuData[i].L2Cache.SystemCacheType = CacheTypeTable[CacheDescInfo[j].Type]; + } + else { + CpuInfo.CpuData[i].L2Cache.SystemCacheType = 0x05; + } + CpuInfo.CpuData[i].L2Cache.Associativity = AssociativityTable[CacheDescInfo[j].Associativity]; + break; + case 3: + L3Cache = CacheDescInfo[j].Size; + if (CpuInfo.CpuData[i].L3Cache.SystemCacheType == 0xFF) { + CpuInfo.CpuData[i].L3Cache.SystemCacheType = CacheTypeTable[CacheDescInfo[j].Type]; + } + else { + CpuInfo.CpuData[i].L3Cache.SystemCacheType = 0x05; + } + CpuInfo.CpuData[i].L3Cache.Associativity = AssociativityTable[CacheDescInfo[j].Associativity]; + break; + } + } + + CpuInfo.CpuData[i].CpuData.CurrentSpeed = (UINT16)(GetCpuInfo->IntendedFreq); + CpuInfo.CpuData[i].CpuData.MaxSpeed = 3800; // Value from Intel Tiano BIOS + CpuInfo.CpuData[i].CpuData.ExtClockFreq = (UINT16)(GetCpuInfo->FSBFreq); + CpuInfo.CpuData[i].CpuData.ProcessorID_1 = (UINT32)(GetCpuInfo->Version); + CpuInfo.CpuData[i].CpuData.ProcessorID_2 = (UINT32)(GetCpuInfo->Features); + + // From CPU module: GetCpuInfo->Voltage = Volt * 10000 + // From SMBIOS spec, this field should be set to CPU voltage * 10 + // Therefore this field should be set to GetCpuInfo->Voltage / 1000 + CpuInfo.CpuData[i].CpuData.Voltage = (UINT8)(GetCpuInfo->Voltage / 1000); + CpuInfo.CpuData[i].CpuData.Status = 0x41; + CpuInfo.CpuData[i].CpuData.Upgrade = 1; + CpuInfo.CpuData[i].CpuData.Family = 0xBF; // Intel(R) Core(TM) 2 Duo processor + + CpuInfo.CpuData[i].CpuData.CoreCount = GetCpuInfo->NumCores; + CpuInfo.CpuData[i].CpuData.CoreEnabled = 1; + CpuInfo.CpuData[i].CpuData.ThreadCount = GetCpuInfo->NumHts; + CpuInfo.CpuData[i].CpuData.Family2 = 0xBF; + + if(i == 0) { + FillStringBufferWithSpaces(CpuInfo.CpuData[i].CpuData.Version, sizeof(CpuInfo.CpuData[i].CpuData.Version)); + MemCpy(CpuInfo.CpuData[i].CpuData.Version, GetCpuInfo->BrandString, sizeof(CpuInfo.CpuData[i].CpuData.Version) - 1); + FillStringBufferWithSpaces(CpuInfo.CpuData[i].CpuData.Manufacturer, sizeof(CpuInfo.CpuData[i].CpuData.Manufacturer)); + MemCpy(CpuInfo.CpuData[i].CpuData.Manufacturer, "Intel", 6); + } + else { + MemCpy(CpuInfo.CpuData[i].CpuData.Manufacturer, CpuInfo.CpuData[0].CpuData.Manufacturer, sizeof(CpuInfo.CpuData[0].CpuData.Manufacturer)); + MemCpy(CpuInfo.CpuData[i].CpuData.Version, CpuInfo.CpuData[0].CpuData.Version, sizeof(CpuInfo.CpuData[0].CpuData.Version)); + } + CpuInfo.CpuData[i].L1Cache.CacheConfig = 0x180; + CpuInfo.CpuData[i].L1Cache.MaxCacheSize = L1Cache; // CacheL1 + CpuInfo.CpuData[i].L1Cache.InstalledSize = L1Cache; + CpuInfo.CpuData[i].L1Cache.SupportSRAM = 0x01; + CpuInfo.CpuData[i].L1Cache.CurrentSRAM = 0x01; + CpuInfo.CpuData[i].L1Cache.CacheSpeed = 0; + CpuInfo.CpuData[i].L1Cache.ErrorCorrectionType = 0x03; + + CpuInfo.CpuData[i].L2Cache.CacheConfig = 0x281; + CpuInfo.CpuData[i].L2Cache.MaxCacheSize = L2Cache; // CacheL2 + CpuInfo.CpuData[i].L2Cache.InstalledSize = L2Cache; + CpuInfo.CpuData[i].L2Cache.SupportSRAM = 0x01; + CpuInfo.CpuData[i].L2Cache.CurrentSRAM = 0x01; + CpuInfo.CpuData[i].L2Cache.CacheSpeed = 0; + CpuInfo.CpuData[i].L2Cache.ErrorCorrectionType = 0x03; + + CpuInfo.CpuData[i].L3Cache.CacheConfig = 0x302; + CpuInfo.CpuData[i].L3Cache.MaxCacheSize = L3Cache; // CacheL3 + CpuInfo.CpuData[i].L3Cache.InstalledSize = L3Cache; + CpuInfo.CpuData[i].L3Cache.SupportSRAM = 0x01; + CpuInfo.CpuData[i].L3Cache.CurrentSRAM = 0x01; + CpuInfo.CpuData[i].L3Cache.CacheSpeed = 0; + CpuInfo.CpuData[i].L3Cache.ErrorCorrectionType = 0x03; + } + Status = pRS->SetVariable( + SmbiosCpuVar, + &EfiSmbiosDynamicDataGuid, + Attributes, + sizeof(CPU_DYNAMIC_DATA), + &CpuInfo); + ASSERT_EFI_ERROR(Status); + // ================================================================== + // ================================================================== + // ================================================================== + // === === + // === End of SAMPLE TEMPLATE CODE for Intel Weybridge CRB === + // === platform. Uncomment this block to use. === + // === === + // === Might need changes for other platforms. === + // === === + // ================================================================== + // ================================================================== + // ================================================================== +//---------------------------------------------------------------------------- +*/ + +/* +//---------------------------------------------------------------------------- + // ================================================================== + // ================================================================== + // ================================================================== + // === === + // === Start of SAMPLE TEMPLATE CODE for AMD Warthog === + // === platform. Uncomment this block to use. === + // === === + // === Might need changes for other platforms. === + // === === + // ================================================================== + // ================================================================== + // ================================================================== + + EFI_GUID gAmiCpuInfoProtocolGuid = AMI_CPU_INFO_PROTOCOL_GUID; + EFI_GUID EfiSmbiosDynamicDataGuid = EFI_SMBIOS_DYNAMIC_DATA_GUID; + UINT8 AmiType, AmiAssoc, AmiCurLevel; + UINT16 AmiCurSize, L1CacheSize, L2CacheSize, L3CacheSize; + UINT32 Attributes = EFI_VARIABLE_BOOTSERVICE_ACCESS; + UINTN NumHts = 1, CurNode=0, CurCPU=0, NumCores = 1, CurCacheIndex; + AMI_CPU_INFO *AmiCpuInfo = NULL; + AMI_CPU_INFO_PROTOCOL *AmiCpuInfoProtocol; + CPU_DYNAMIC_DATA CpuInfo; + CACHE_DESCRIPTOR_INFO *AmiCacheDesc; + CPU_DATA *CurCpuData, *Cpu0Data; + CACHE_DATA *CurL1Cache, *CurL2Cache, *CurL3Cache; + + // ================================================================== + // The mapping between AMI_CPU_INFO.CACHE_DESCRIPTOR_INFO.Type + // and CPU_DYNAMIC_DATA.SINGLE_CPU_DATA.CACHE_DATA.SystemCacheType + // should not require a translation table as the cache type is + // encoded the same for both structures: + // + // CACHE_DESCRIPTOR_INFO.Type <-> CACHE_DATA.SystemCacheType + // (Other) 1 <-> 1 + // (Unknown) 2 <-> 2 + // (Instruction) 3 <-> 3 + // (Data) 4 <-> 4 + // (Unified) 5 <-> 5 + // + // ================================================================== + // The mapping between AMI_CPU_INFO.CACHE_DESCRIPTOR_INFO.Associativity + // and CPU_DYNAMIC_DATA.SINGLE_CPU_DATA.CACHE_DATA.Associativity + // should not require a translation table as the cache associativity + // is encoded the same for both structures: + // + // CACHE_DESCRIPTOR_INFO.Associativity <-> CACHE_DATA.Associativity + // (Other) 1 <-> 1 + // (Unknown) 2 <-> 2 + // (Direct) 3 <-> 3 + // (2-way Set) 4 <-> 4 + // (4-way Set) 5 <-> 5 + // (Fully) 6 <-> 6 + // (8-way Set) 7 <-> 7 + // (16-way Set) 8 <-> 8 + // + // ================================================================== + // Fill Processor Information Table (Type 4) and associated Cache + // Information structures. + // + // Notes: A SINGLE_CPU_DATA structure is created for each + // slot/socket such that only one structure is created for + // a multi-core processor. This implies the assumption + // that all cores on a processor have identical + // configuration. + // + // ================================================================== + Status = pBS->LocateProtocol ( + &gAmiCpuInfoProtocolGuid, + NULL, + &AmiCpuInfoProtocol); + if (EFI_ERROR(Status)) + return Status; + + Status = AmiCpuInfoProtocol->GetCpuInfo( + AmiCpuInfoProtocol, + 0, + &AmiCpuInfo); + if (EFI_ERROR(Status)) + return Status; + + CpuInfo.NumberCPU = NO_OF_PROCESSOR_SOCKETS; + Cpu0Data = &(CpuInfo.CpuData[0].CpuData); + + // For each Core0 on each slot/node, create a + // CPU information table. + for(CurNode=0, CurCPU=0; + CurNode < NO_OF_PROCESSOR_SOCKETS; + CurNode++, CurCPU = AmiCpuInfo->NumCores*CurNode ) + { + Status = AmiCpuInfoProtocol->GetCpuInfo( + AmiCpuInfoProtocol, + CurCPU, + &AmiCpuInfo); + + // some pointers to make code easier to read/type + CurCpuData = &(CpuInfo.CpuData[CurNode].CpuData); + CurL1Cache = &(CpuInfo.CpuData[CurNode].L1Cache); + CurL2Cache = &(CpuInfo.CpuData[CurNode].L2Cache); + CurL3Cache = &(CpuInfo.CpuData[CurNode].L3Cache); + + // if an AMI_CPU_INFO structure does not exist for this Socket + // then fill with default data and attempt to get next + // socket information. + if (Status) { + CurCpuData->Status = 0; + CurCpuData->CurrentSpeed = 0; + CurCpuData->MaxSpeed = 0x0FA0; + CurCpuData->ExtClockFreq = Cpu0Data->ExtClockFreq; + CurCpuData->ProcessorID_1 = 0; + CurCpuData->ProcessorID_2 = 0; + CurCpuData->Status = 0; + CurCpuData->Upgrade = Cpu0Data->Upgrade; + CurCpuData->Family = Cpu0Data->Family; + MemCpy(CurCpuData->Manufacturer, Cpu0Data->Manufacturer, 18); + MemCpy(CurCpuData->Version, Cpu0Data->Version, 48); + continue; + } + + NumCores = AmiCpuInfo->NumCores; + NumHts = AmiCpuInfo->NumHts; + AmiCacheDesc = AmiCpuInfo->CacheInfo; + L1CacheSize = 0; + L2CacheSize = 0; + L3CacheSize = 0; + + // if more than one L1, L2, or L3 cache exits, + // its type will be unified by default. + CurL1Cache->SystemCacheType = 0xFF; + CurL2Cache->SystemCacheType = 0xFF; + CurL3Cache->SystemCacheType = 0xFF; + + // ========================================================== + // Fill Cache Information Table (Type 7) for this slot/node + // ========================================================== + for ( CurCacheIndex = 0; + AmiCacheDesc[CurCacheIndex].Desc; // Desc == 0 is last + ++CurCacheIndex ) + { + AmiType = AmiCacheDesc[CurCacheIndex].Type; + AmiAssoc = AmiCacheDesc[CurCacheIndex].Associativity; + AmiCurLevel = AmiCacheDesc[CurCacheIndex].Level; + AmiCurSize = AmiCacheDesc[CurCacheIndex].Size; + + switch ( AmiCurLevel ) + { + case EFI_CACHE_L1: + L1CacheSize = AmiCurSize; + if (CurL1Cache->SystemCacheType == 0xFF) + CurL1Cache->SystemCacheType = AmiType; + else + CurL1Cache->SystemCacheType = 0x05; + CurL1Cache->Associativity = AmiAssoc; + break; + case EFI_CACHE_L2: + L2CacheSize = AmiCurSize; + if (CurL2Cache->SystemCacheType == 0xFF) + CurL2Cache->SystemCacheType = AmiType; + else + CurL2Cache->SystemCacheType = 0x05; + CurL2Cache->Associativity = AmiAssoc; + break; + case EFI_CACHE_L3: + L3CacheSize = AmiCurSize; + if (CurL3Cache->SystemCacheType == 0xFF) + CurL3Cache->SystemCacheType = AmiType; + else + CurL3Cache->SystemCacheType = 0x05; + CurL3Cache->Associativity = AmiAssoc; + break; + } // switch + } // for + + CurCpuData->CurrentSpeed = (UINT16)(AmiCpuInfo->ActualFreq); +#if AMD_SYSTEM_BOARD == 1 + CurCpuData->MaxSpeed = (UINT16)(AmiCpuInfo->MaxFreq); +#endif + CurCpuData->ExtClockFreq = (UINT16)(AmiCpuInfo->FSBFreq); + CurCpuData->ProcessorID_1 = (UINT32)(AmiCpuInfo->Version); + CurCpuData->ProcessorID_2 = (UINT32)(AmiCpuInfo->Features); + CurCpuData->Status = 0x41; // Socket popuated + // and CPU enabled + CurCpuData->Upgrade = SMBIOS_PROCESSOR_UPGRADE; // CPU.sdl tokens + CurCpuData->Family = SMBIOS_PROCESSOR_FAMILY; + if(CurNode == 0) { + FillStringBufferWithSpaces( + CurCpuData->Version, + sizeof(CurCpuData->Version)); + MemCpy( + CurCpuData->Version, + AmiCpuInfo->BrandString, + sizeof(CurCpuData->Version) - 1); + FillStringBufferWithSpaces( + CurCpuData->Manufacturer, + sizeof(CurCpuData->Manufacturer)); + MemCpy( + CurCpuData->Manufacturer, + AmiCpuInfo->BrandString, + 5); + } + else { + MemCpy( + CurCpuData->Manufacturer, + Cpu0Data->Manufacturer, + sizeof(Cpu0Data->Manufacturer)); + MemCpy( + CurCpuData->Version, + Cpu0Data->Version, + sizeof(Cpu0Data->Version)); + } + CurL1Cache->CacheConfig = 0x180; + CurL1Cache->MaxCacheSize = L1CacheSize; // CacheL1 + CurL1Cache->InstalledSize = L1CacheSize; + CurL1Cache->SupportSRAM = 0x01; + CurL1Cache->CurrentSRAM = 0x01; + CurL1Cache->CacheSpeed = 0; + CurL1Cache->ErrorCorrectionType = 0x03; + + CurL2Cache->CacheConfig = 0x281; + CurL2Cache->MaxCacheSize = L2CacheSize; // CacheL2 + CurL2Cache->InstalledSize = L2CacheSize; + CurL2Cache->SupportSRAM = 0x01; + CurL2Cache->CurrentSRAM = 0x01; + CurL2Cache->CacheSpeed = 0; + CurL2Cache->ErrorCorrectionType = 0x03; + + CurL3Cache->CacheConfig = 0x302; + CurL3Cache->MaxCacheSize = L3CacheSize; // CacheL3 + CurL3Cache->InstalledSize = L3CacheSize; + CurL3Cache->SupportSRAM = 0x01; + CurL3Cache->CurrentSRAM = 0x01; + CurL3Cache->CacheSpeed = 0; + CurL3Cache->ErrorCorrectionType = 0x03; + } // for + + Status = pRS->SetVariable( SmbiosCpuVar, + &EfiSmbiosDynamicDataGuid, + Attributes, + sizeof(CPU_DYNAMIC_DATA), + &CpuInfo ); + ASSERT_EFI_ERROR(Status); + + // ================================================================== + // ================================================================== + // ================================================================== + // === === + // === End of SAMPLE TEMPLATE CODE for AMD Warthog === + // === platform. Uncomment this block to use. === + // === === + // === Might need changes for other platforms. === + // === === + // ================================================================== + // ================================================================== + // ================================================================== +//---------------------------------------------------------------------------- +*/ +#endif // UPDATE_CPU_TYPE4 + + return Status; +} + +// +//---------------------------------------------------------------------------- +// ***** OPTIONAL ***** +// (if SMBIOS module is part of the project) +//---------------------------------------------------------------------------- +// Procedure: CreateOnBoardDevDataForSMBios +// +// Description: This function gathers the Onboard Device status information and +// saves them in a variable named "SmbiosOnBoardVar". This variable +// with the OnBoard Device information is needed by the SMBIOS +// module to create the "Type 10" structure. +// +// Input: None +// +// Output: EFI_STATUS +// Variable named "SmbiosOnBoardVar" with on-board device information +// +// Note: Refer to ONBOARD_DEV_DYNAMIC_DATA in SmbiosDynamicData.h for +// structure information. +// +// Set device status to 0 if disabled. +// Set device status to 0x80 if enabled. +// Ex: In sample code +// OnBoardDevInfo.OnBoardDev[0] = 0; // Disabled +// OnBoardDevInfo.OnBoardDev[0] = 0x80; // Enabled +// +//---------------------------------------------------------------------------- +// +EFI_STATUS +CreateOnBoardDevDataForSMBios (VOID) +{ + EFI_STATUS Status = EFI_SUCCESS; + +#if UPDATE_ONBOARD_DEV_TYPE10 +/* +//---------------------------------------------------------------------------- + // ================================================================== + // ================================================================== + // ================================================================== + // === === + // === Start of SAMPLE TEMPLATE CODE for Intel Weybridge CRB === + // === platform. Uncomment this block to use. === + // === === + // === Might need changes for other platforms. === + // === === + // ================================================================== + // ================================================================== + // ================================================================== + + EFI_GUID EfiSmbiosDynamicDataGuid = EFI_SMBIOS_DYNAMIC_DATA_GUID; + UINTN VarSize; + UINT32 Attributes = EFI_VARIABLE_BOOTSERVICE_ACCESS; + ONBOARD_DEV_DYNAMIC_DATA OnBoardDevInfo; + UINT64 PciAddress; + UINT8 Value8; + EFI_GUID gEfiPciRootBridgeIoProtocolGuid = EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_GUID; + EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *gPciRootBridgeIo; + + Status = pBS->LocateProtocol( + &gEfiPciRootBridgeIoProtocolGuid, + NULL, + &gPciRootBridgeIo); + ASSERT_EFI_ERROR(Status); + + // Onboard Video + PciAddress = PCI_CFG_ADDRESS (0, 0, 0, MCH_REG_GGC); + gPciRootBridgeIo->Pci.Read ( + gPciRootBridgeIo, + EfiPciWidthUint8, + PciAddress, + 1, + &Value8); + if (Value8 & BIT01) { + OnBoardDevInfo.OnBoardDev[0] = 0; // Disabled + } + else { + OnBoardDevInfo.OnBoardDev[0] = 0x80; // Enabled + } + + // Onboard LAN + Value8 = *(UINT8*)(SB_RCBA + R_RCBA_BUC); + if (Value8 & B_LAN_DISABLE) { + OnBoardDevInfo.OnBoardDev[1] = 0; // Disabled + } + else { + OnBoardDevInfo.OnBoardDev[1] = 0x80; // Enabled + } + + // Onboard 1394 - Use GPIO49 0/1 = Enabled/Disabled + Value8 = IoRead32(GPIO_BASE_ADDRESS + ICH_GPIO_GP_LVL2 + 2); + if (Value8 & BIT01) { + OnBoardDevInfo.OnBoardDev[2] = 0; // Disabled + } + else { + OnBoardDevInfo.OnBoardDev[2] = 0x80; // Enabled + } + + VarSize = sizeof(ONBOARD_DEV_DYNAMIC_DATA); + Status = pRS->SetVariable(SmbiosOnBoardVar, &EfiSmbiosDynamicDataGuid, + Attributes, VarSize, &OnBoardDevInfo); + + // ================================================================== + // ================================================================== + // ================================================================== + // === === + // === End of SAMPLE TEMPLATE CODE for Intel Weybridge CRB === + // === platform. Uncomment this block to use. === + // === === + // === Might need changes for other platforms. === + // === === + // ================================================================== + // ================================================================== + // ================================================================== +//---------------------------------------------------------------------------- +*/ +#endif // UPDATE_ONBOARD_DEV_TYPE10 + + return Status; +} + +// +//---------------------------------------------------------------------------- +// ***** OPTIONAL ***** +// (if SMBIOS module is part of the project) +//---------------------------------------------------------------------------- +// Procedure: CreateOnBoardDevExtInfoForSMBios +// +// Description: This function gathers the Onboard Device status information +// and saves them in a variable named "SmbiosOnBoardExtVar". +// This variable with the OnBoard Device Extended information +// is needed by the SMBIOS module to create the "Type 41" +// structure. +// +// Input: None +// +// Output: EFI_STATUS +// Variable named "SmbiosOnBoardExtVar" with on-board device +// information. +// +// Note: Refer to ONBOARD_DEV_EXT_DYNAMIC_DATA in SmbiosDynamicData.h for +// structure information. +// +// Set device status to 0 if disabled. +// Set device status to 0x80 if enabled. +// Ex: In sample code +// OnBoardDevInfo.OnBoardDev[0] = 0; // Disabled +// OnBoardDevInfo.OnBoardDev[0] = 0x80; // Enabled +// +//---------------------------------------------------------------------------- +// +EFI_STATUS +CreateOnBoardDevExtInfoForSMBios (VOID) +{ + EFI_STATUS Status = EFI_SUCCESS; + +#if UPDATE_DEVICE_EXT_TYPE41 +/* +//---------------------------------------------------------------------------- + // ================================================================== + // ================================================================== + // ================================================================== + // === === + // === Start of SAMPLE TEMPLATE CODE for Intel Weybridge CRB === + // === platform. Uncomment this block to use. === + // === === + // === Might need changes for other platforms. === + // === === + // ================================================================== + // ================================================================== + // ================================================================== + + EFI_GUID EfiSmbiosDynamicDataGuid = EFI_SMBIOS_DYNAMIC_DATA_GUID; + UINTN VarSize; + UINT32 Attributes = EFI_VARIABLE_BOOTSERVICE_ACCESS; + ONBOARD_DEV_EXT_DYNAMIC_DATA OnBoardDevExtInfo; + UINT64 PciAddress; + UINT8 Value8; + EFI_GUID gEfiPciRootBridgeIoProtocolGuid = EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_GUID; + EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *gPciRootBridgeIo; + + Status = pBS->LocateProtocol( + &gEfiPciRootBridgeIoProtocolGuid, + NULL, + &gPciRootBridgeIo); + ASSERT_EFI_ERROR(Status); + + // Onboard Video + PciAddress = PCI_CFG_ADDRESS (0, 0, 0, MCH_REG_GGC); + gPciRootBridgeIo->Pci.Read ( + gPciRootBridgeIo, + EfiPciWidthUint8, + PciAddress, + 1, + &Value8); + if (Value8 & BIT01) { + OnBoardDevExtInfo.OnBoardDev[0] = 0; // Disabled + } + else { + OnBoardDevExtInfo.OnBoardDev[0] = 0x80; // Enabled + } + + OnBoardDevExtInfo.BusNumber[0] = 0; + + // Onboard LAN + Value8 = *(UINT8*)(SB_RCBA + R_RCBA_BUC); + if (Value8 & B_LAN_DISABLE) { + OnBoardDevExtInfo.OnBoardDev[1] = 0; // Disabled + } + else { + OnBoardDevExtInfo.OnBoardDev[1] = 0x80; // Enabled + } + + OnBoardDevExtInfo.BusNumber[1] = 0; + + // Onboard 1394 - Use GPIO49 0/1 = Enabled/Disabled + Value8 = IoRead32(GPIO_BASE_ADDRESS + ICH_GPIO_GP_LVL2 + 2); + if (Value8 & BIT01) { + OnBoardDevExtInfo.OnBoardDev[2] = 0; // Disabled + } + else { + OnBoardDevExtInfo.OnBoardDev[2] = 0x80; // Enabled + } + + PciAddress = PCI_CFG_ADDRESS (0, 0x1C, 2, 0x19); + gPciRootBridgeIo->Pci.Read ( + gPciRootBridgeIo, + EfiPciWidthUint8, + PciAddress, + 1, + &Value8); + + OnBoardDevExtInfo.BusNumber[2] = Value8; + + VarSize = sizeof(ONBOARD_DEV_EXT_DYNAMIC_DATA); + Status = pRS->SetVariable(SmbiosOnBoardExtVar, &EfiSmbiosDynamicDataGuid, + Attributes, VarSize, &OnBoardDevExtInfo); + + // ================================================================== + // ================================================================== + // ================================================================== + // === === + // === End of SAMPLE TEMPLATE CODE for Intel Weybridge CRB === + // === platform. Uncomment this block to use. === + // === === + // === Might need changes for other platforms. === + // === === + // ================================================================== + // ================================================================== + // ================================================================== +//---------------------------------------------------------------------------- +*/ +#endif // UPDATE_DEVICE_EXT_TYPE41 + + return Status; +} + +// +//---------------------------------------------------------------------------- +// ***** PORTING REQUIRED ***** +// (if SMBIOS module is part of the project) +//---------------------------------------------------------------------------- +// Procedure: CreateBatteryDataForSMBios +// +// Description: This function provides system battery information. SMBIOS +// Core uses these information to dynamically update SMBIOS +// Portable Battery Data structure Type 22. +// +// Input: None +// +// Output: EFI_STATUS +// Variable named "SmbiosBatteryVar" with Battery information +// +// Note: Refer to BATTERY_DYNAMIC_DATA in SmbiosDynamicData.h for +// structure information. +// +//---------------------------------------------------------------------------- +// +EFI_STATUS +CreateBatteryDataForSMBios (VOID) +{ + EFI_STATUS Status = EFI_SUCCESS; + +#if UPDATE_BATTERY_TYPE22 +/* +//---------------------------------------------------------------------------- + // ================================================================== + // ================================================================== + // ================================================================== + // === === + // === Start of dummy code === + // === === + // === PORTING IS NEEDED FOR INDIVIDUAL PLATFORM !!! === + // === === + // ================================================================== + // ================================================================== + // ================================================================== + + EFI_GUID EfiSmbiosDynamicDataGuid = EFI_SMBIOS_DYNAMIC_DATA_GUID; + BATTERY_DYNAMIC_DATA BatteryInfo; + UINTN VarSize; + UINT32 Attributes = EFI_VARIABLE_BOOTSERVICE_ACCESS; + UINT8 DeviceName1[] = "BATT 1"; + UINT8 DeviceName2[] = "Another Battery Name"; + UINT8 SbdsVersion1[] = "01.12.912"; + UINT8 SbdsVersion2[] = "00.01"; + + BatteryInfo.BatteryDynamicData[0].DesignCapacity = 1; + BatteryInfo.BatteryDynamicData[0].DesignVoltage = 5000; + BatteryInfo.BatteryDynamicData[0].SbdsSerialNumber = 0x1111; + BatteryInfo.BatteryDynamicData[0].SbdsManufacturedDate = 0x2841; + BatteryInfo.BatteryDynamicData[0].DesignCapacityMult = 1000; + // When copying strings, MAKE SURE THE ZERO TERMINATOR + // for the string is included + MemCpy (BatteryInfo.BatteryDynamicData[0].DeviceName, DeviceName1, sizeof(DeviceName1)); + MemCpy (BatteryInfo.BatteryDynamicData[0].SbdsVersion, SbdsVersion1, sizeof(SbdsVersion1)); + BatteryInfo.BatteryDynamicData[0].Valid = TRUE; + + BatteryInfo.BatteryDynamicData[1].DesignCapacity = 1; + BatteryInfo.BatteryDynamicData[1].DesignVoltage = 9000; + BatteryInfo.BatteryDynamicData[1].SbdsSerialNumber = 0x4444; + BatteryInfo.BatteryDynamicData[1].SbdsManufacturedDate = 0x1814; + BatteryInfo.BatteryDynamicData[1].DesignCapacityMult = 500; + // When copying strings, MAKE SURE THE ZERO TERMINATOR + // for the string is included + MemCpy (BatteryInfo.BatteryDynamicData[1].DeviceName, DeviceName2, sizeof(DeviceName2)); + MemCpy (BatteryInfo.BatteryDynamicData[1].SbdsVersion, SbdsVersion2, sizeof(SbdsVersion2)); + BatteryInfo.BatteryDynamicData[1].Valid = FALSE; + + BatteryInfo.BatteryDynamicData[2].DesignCapacity = 1; + BatteryInfo.BatteryDynamicData[2].DesignVoltage = 3000; + BatteryInfo.BatteryDynamicData[2].SbdsSerialNumber = 0x7777; + BatteryInfo.BatteryDynamicData[2].SbdsManufacturedDate = 0x0814; + BatteryInfo.BatteryDynamicData[2].DesignCapacityMult = 200; + // When copying strings, MAKE SURE THE ZERO TERMINATOR + // for the string is included + MemCpy (BatteryInfo.BatteryDynamicData[2].DeviceName, DeviceName2, sizeof(DeviceName2)); + MemCpy (BatteryInfo.BatteryDynamicData[2].SbdsVersion, SbdsVersion2, sizeof(SbdsVersion2)); + BatteryInfo.BatteryDynamicData[2].Valid = FALSE; + + BatteryInfo.BatteryDynamicData[3].DesignCapacity = 1; + BatteryInfo.BatteryDynamicData[3].DesignVoltage = 1000; + BatteryInfo.BatteryDynamicData[3].SbdsSerialNumber = 0x9999; + BatteryInfo.BatteryDynamicData[3].SbdsManufacturedDate = 0x5814; + BatteryInfo.BatteryDynamicData[3].DesignCapacityMult = 700; + // When copying strings, MAKE SURE THE ZERO TERMINATOR + // for the string is included + MemCpy (BatteryInfo.BatteryDynamicData[3].DeviceName, DeviceName2, sizeof(DeviceName2)); + MemCpy (BatteryInfo.BatteryDynamicData[3].SbdsVersion, SbdsVersion2, sizeof(SbdsVersion2)); + BatteryInfo.BatteryDynamicData[3].Valid = TRUE; + + VarSize = sizeof(BATTERY_DYNAMIC_DATA); + Status = pRS->SetVariable(SmbiosBatteryVar, + &EfiSmbiosDynamicDataGuid, + Attributes, + VarSize, + &BatteryInfo); + + // ================================================================== + // ================================================================== + // ================================================================== + // === === + // === End of dummy code === + // === === + // ================================================================== + // ================================================================== + // ================================================================== +//---------------------------------------------------------------------------- +*/ +#endif // UPDATE_BATTERY_TYPE22 + + return Status; +} + +// +//---------------------------------------------------------------------------- +// Procedure: SMIBiosBoardDriverEntryPoint +// +// Description: SMBIOS Board driver entry point +// +// Input: IN EFI_HANDLE ImageHandle, +// IN EFI_SYSTEM_TABLE *SystemTable +// +// Output: EFI_STATUS +// +// Modified: +// +// Referrals: +// +// Notes: +//---------------------------------------------------------------------------- +// +EFI_STATUS +SMIBiosBoardDriverEntryPoint( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable +) +{ + EFI_STATUS Status; + + InitAmiLib(ImageHandle, SystemTable); + + Status = pBS->InstallProtocolInterface(&ImageHandle, + &gEfiSmbiosBoardProtocolGuid, + EFI_NATIVE_INTERFACE, + &SmbiosBoardProtocol); + return Status; +} + +//**************************************************************************** +//**************************************************************************** +//** ** +//** (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/SmbiosDMIEdit/SmbiosDMIEdit32.obj b/Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEdit32.obj new file mode 100644 index 0000000..227a2cb Binary files /dev/null and b/Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEdit32.obj differ diff --git a/Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEdit64.obj b/Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEdit64.obj new file mode 100644 index 0000000..dc15171 Binary files /dev/null and b/Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEdit64.obj differ diff --git a/Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditBoard.c b/Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditBoard.c new file mode 100644 index 0000000..0aff388 --- /dev/null +++ b/Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditBoard.c @@ -0,0 +1,204 @@ +//********************************************************************** +//********************************************************************** +//** ** +//** (C)Copyright 1985-2010, American Megatrends, Inc. ** +//** ** +//** All Rights Reserved. ** +//** ** +//** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 ** +//** ** +//** Phone: (770)-246-8600 ** +//** ** +//********************************************************************** +//********************************************************************** +//********************************************************************** +// $Header: /Alaska/BIN/Modules/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditBoard.c 8 4/06/10 3:26p Davidd $ +// +// $Revision: 8 $ +// +// $Date: 4/06/10 3:26p $ +//***************************************************************************** +// Revision History +// ---------------- +// $Log: /Alaska/BIN/Modules/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditBoard.c $ +// +// 8 4/06/10 3:26p Davidd +// Added code to enable shadow ram write by calling the newly added +// generic OemRuntimeShadowRamWrite function from CSP Lib. +// +// 7 6/02/09 4:51p Davidd +// Updated AMI headers (EIP 22180) +// +// 6 10/27/08 1:04p Davidd +// +// 5 9/26/08 11:02a Davidd +// Provided sample code to enable / disable E000 and F000 shadow for Intel +// chipset. +// +// 4 11/19/07 11:47a Robert +// +// 3 12/15/06 5:37p Davidd +// Code cleanup and reformatted to coding standard. +// +// 2 11/02/06 10:09a Fasihm +// Updated the code from Assembly to C, so as to compile and build in the +// x64 BIOS build environment. +// +// 1 5/24/06 11:59a Fasihm +// Initial check-in for the Santa Rosa Project. (Matanzas CRB) with +// Crestline + ICH8M + Merom Processor. +// +// 1 8/16/05 11:04a Mirk +// +// 1 8/10/05 11:31a Davidd +// Initial checkin. To be used with SMBIOS Core ALPHA_01.04. +// +// 1 8/10/05 11:18a Davidd +// New SmbiosDMIEditBoard component. +// +//***************************************************************************** + +// +//---------------------------------------------------------------------------- +// +// Name: SmbiosDMIEditBoard.C +// +// Description: This file contains code for OEM related code for DMIEdit +// +//---------------------------------------------------------------------------- +// + +//---------------------------------------------------------------------------- +// Includes + +#include +#include +#include +#include + +extern +VOID OemRuntimeShadowRamWrite( + IN BOOLEAN Enable +); + +// // +// // Sample code for Weybridge CRB. Needs to be changed for other platforms. +// // +//UINT8 Reg90Byte; // 0F000 PAM Reg +//#if ((defined(ITK_SUPPORT) && (ITK_SUPPORT != 0)) || SMBIOS_TABLE_LOCATION) +//UINT8 Reg95Byte; // 0E000-0E400 PAM Reg +//UINT8 Reg96Byte; // 0E8000-0EC00 PAM Reg +//#endif + +// +//---------------------------------------------------------------------------- +// ***** PORTING REQUIRED ***** +// (if SMBIOS module is part of the project) +//---------------------------------------------------------------------------- +// Procedure: EnableShadowWrite +// +// Description: This function enables write to F000 shadow, +// and E000 shadow if ITK_SUPPORT token +// or SMBIOS_TABLE_LOCATION token is set. +// +// Input: None +// +// Output: None +// +// Note: +// +//---------------------------------------------------------------------------- +// +VOID +EnableShadowWrite (VOID) +{ + OemRuntimeShadowRamWrite(TRUE); // Call this generic function + // if CSP Library in project is + // 4.6.4.0_CSPLibrary_013 or later + +// // +// // +// // Sample code for Weybridge CRB. Needs to be changed for other platforms. +// // + +// UINT8 bValue; + +// // 0F000 shadow +// IoWrite32(0x0CF8, 0x80000090); +// Reg90Byte = bValue = IoRead8(0x0CFC); +// bValue |= 0x30; +// IoWrite8(0x0CFC, bValue); + +//#if ((defined(ITK_SUPPORT) && (ITK_SUPPORT != 0)) || SMBIOS_TABLE_LOCATION) +// // 0E000-0E400 shadow +// IoWrite32(0x0CF8, 0x80000095); +// Reg95Byte = bValue = IoRead8(0x0CFD); +// bValue |= 0x33; +// IoWrite8(0x0CFD, bValue); + +// // 0E800-0EC00 shadow +// IoWrite32(0x0CF8, 0x80000096); +// Reg96Byte = bValue = IoRead8(0x0CFE); +// bValue |= 0x33; +// IoWrite8(0x0CFE, bValue); +//#endif +} + +// +//---------------------------------------------------------------------------- +// ***** PORTING REQUIRED ***** +// (if SMBIOS module is part of the project) +//---------------------------------------------------------------------------- +// Procedure: DisableShadowWrite +// +// Description: This function makes F000 shadow read only, +// and E000 shadow read only if ITK_SUPPORT token +// or SMBIOS_TABLE_LOCATION token is set. +// +// Input: None +// +// Output: None +// +// Note: +// +//---------------------------------------------------------------------------- +// +VOID +DisableShadowWrite (VOID) +{ + OemRuntimeShadowRamWrite(FALSE); // Call this generic function + // if CSP Library in project is + // 4.6.4.0_CSPLibrary_013 or later + +// // +// // Sample code for Weybridge CRB. Needs to be changed for other platforms. +// // + +// // 0F000 shadow +// IoWrite32(0x0CF8, 0x80000090); +// IoWrite8(0x0CFC, Reg90Byte); + +//#if ((defined(ITK_SUPPORT) && (ITK_SUPPORT != 0)) || SMBIOS_TABLE_LOCATION) +// // 0E000-0E400 shadow +// IoWrite32(0x0CF8, 0x80000095); +// IoWrite8(0x0CFD, Reg95Byte); + +// // 0E800-0EC00 shadow +// IoWrite32(0x0CF8, 0x80000096); +// IoWrite8(0x0CFE, Reg96Byte); +//#endif +} + +//********************************************************************** +//********************************************************************** +//** ** +//** (C)Copyright 1985-2010, American Megatrends, Inc. ** +//** ** +//** All Rights Reserved. ** +//** ** +//** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 ** +//** ** +//** Phone: (770)-246-8600 ** +//** ** +//********************************************************************** +//********************************************************************** diff --git a/Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditBoard.c32 b/Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditBoard.c32 new file mode 100644 index 0000000..e3dbcef --- /dev/null +++ b/Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditBoard.c32 @@ -0,0 +1,13 @@ + + name = "SmbiosDMIEditBoard" + category = ModulePart + LocalRoot = "Board\EM\SMBIOS\SmbiosDMIEdit" + RefName = "SmbiosDMIEditBoard" +[files] +"SmbiosDMIEditBoard.sdl" +"SmbiosDMIEditBoard.mak" +"SmbiosDMIEditBoard.dxs" +"SmbiosDMIEditBoard.c" +"SmbiosDMIEdit32.obj" +"SmbiosDMIEditFunc32.obj" + diff --git a/Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditBoard.c64 b/Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditBoard.c64 new file mode 100644 index 0000000..245ea5f --- /dev/null +++ b/Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditBoard.c64 @@ -0,0 +1,13 @@ + + name = "SmbiosDMIEditBoard" + category = ModulePart + LocalRoot = "Board\EM\SMBIOS\SmbiosDMIEdit" + RefName = "SmbiosDMIEditBoard" +[files] +"SmbiosDMIEditBoard.sdl" +"SmbiosDMIEditBoard.mak" +"SmbiosDMIEditBoard.dxs" +"SmbiosDMIEditBoard.c" +"SmbiosDMIEdit64.obj" +"SmbiosDMIEditFunc64.obj" + diff --git a/Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditBoard.cif b/Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditBoard.cif new file mode 100644 index 0000000..9d44520 --- /dev/null +++ b/Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditBoard.cif @@ -0,0 +1,17 @@ + + name = "SmbiosDMIEditBoard" + category = ModulePart + LocalRoot = "Board\EM\SMBIOS\SmbiosDMIEdit" + RefName = "SmbiosDMIEditBoard" +[files] +"SmbiosDMIEditBoard.sdl" +"SmbiosDMIEditBoard.mak" +"SmbiosDMIEditBoard.dxs" +"SmbiosDMIEditBoard.c" +"SmbiosDMIEdit32.obj" +"SmbiosDMIEdit64.obj" +"SmbiosDMIEditFunc32.obj" +"SmbiosDMIEditFunc64.obj" +"SmbiosDMIEditBoard.c32" +"SmbiosDMIEditBoard.c64" + diff --git a/Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditBoard.dxs b/Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditBoard.dxs new file mode 100644 index 0000000..4c0b432 --- /dev/null +++ b/Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditBoard.dxs @@ -0,0 +1,82 @@ +//**********************************************************************// +//**********************************************************************// +//** **// +//** (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/SmbiosDMIEdit/SmbiosDMIEditBoard.dxs 4 6/28/12 8:14p Davidd $ +// +// $Revision: 4 $ +// +// $Date: 6/28/12 8:14p $ +//**********************************************************************// +// Revision History +// ---------------- +// $Log: /Alaska/BIN/Modules/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditBoard.dxs $ +// +// 4 6/28/12 8:14p Davidd +// Select SMM_BASE_PROTOCOL_GUID depending on PI_SPECIFICATION_VERSION +// +// 3 6/02/09 4:50p Davidd +// Updated AMI headers (EIP 22180) +// +// 2 3/29/07 5:27p Davidd +// Changed the year in the AMI banner and adjust indentation to coding +// standard. +// +// 1 8/10/05 11:31a Davidd +// Initial checkin. To be used with SMBIOS Core ALPHA_01.04. +// +// 1 8/10/05 11:18a Davidd +// New SmbiosDMIEditBoard component. +// +//**********************************************************************// + +#include + +#include +#if PI_SPECIFICATION_VERSION < 0x0001000A +#include +#else +#include +#endif +#include +#include +#include +#include + +DEPENDENCY_START +#if !defined(SMBIOS_DMIEDIT_DATA_LOC) || SMBIOS_DMIEDIT_DATA_LOC != 2 + EFI_SMBIOS_FLASH_DATA_PROTOCOL_GUID AND + EFI_SMI_FLASH_GUID AND +#endif +#if PI_SPECIFICATION_VERSION < 0x0001000A + EFI_SMM_BASE_PROTOCOL_GUID AND +#else + EFI_SMM_BASE2_PROTOCOL_GUID AND +#endif + EFI_SMM_SW_DISPATCH_PROTOCOL_GUID AND + EFI_SMBIOS_PROTOCOL_GUID +DEPENDENCY_END + +//**********************************************************************// +//**********************************************************************// +//** **// +//** (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/SmbiosDMIEdit/SmbiosDMIEditBoard.mak b/Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditBoard.mak new file mode 100644 index 0000000..0ef990f --- /dev/null +++ b/Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditBoard.mak @@ -0,0 +1,98 @@ +#************************************************************************ +#************************************************************************ +#** ** +#** (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/SmbiosDMIEdit/SmbiosDMIEditBoard.mak 7 4/08/16 12:59p Davidd $ +# +# $Revision: 7 $ +# +# $Date: 4/08/16 12:59p $ +#************************************************************************ +# Revision History +# ---------------- +# $Log: /Alaska/BIN/Modules/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditBoard.mak $ +# +# 7 4/08/16 12:59p Davidd +# [TAG] EIP231162 +# [Category] New Feature +# [Description] Merge Aptio V Smbios -09 changes for Aptio 4 +# 4.6.5.5_SMBIOS_40 release +# [Files] SmbiosGetFlashData32.ffs +# SmbiosGetFlashData64.ffs +# Smbios32.ffs +# Smbios64.ffs +# SmbiosDmiEditBoard.mak +# SmbiosDmiEdit32.obj +# SmbiosDmiEdit64.obj +# SmbiosDmiEditFunc32.obj +# SmbiosDmiEditFunc64.obj +# +# 6 4/20/10 12:53p Davidd +# +# 5 6/02/09 4:49p Davidd +# Updated AMI headers (EIP 22180) +# +# 4 12/30/08 3:17p Davidd +# Changes added for x32 and x64 binary support. +# +# 3 3/29/07 5:18p Davidd +# Changed the year in the AMI banner. +# +# 2 12/02/05 11:47a Felixp +# +# 1 8/10/05 11:31a Davidd +# Initial checkin. To be used with SMBIOS Core ALPHA_01.04. +# +# 1 8/10/05 11:18a Davidd +# New SmbiosDMIEditBoard component. +# +#************************************************************************ + +!IF !DEFINED(SMBIOS_CORE_SRC_SUPPORT) || "$(SMBIOS_CORE_SRC_SUPPORT)" == "0" + +all : SMBIOS_DMIEDIT_BOARD_SUPPORT + +SMBIOS_DMIEDIT_BOARD_SUPPORT : $(BUILD_DIR)\SmbiosDMIEditBoard.mak SmbiosDMIEditBoardBin + +!IF "$(x64_BUILD)"=="1" +$(BUILD_DIR)\SmbiosDMIEditBoard.mak : $(SMBIOS_DMIEDIT_BOARD_DIR)\$(@B).cif $(SMBIOS_DMIEDIT_BOARD_DIR)\$(@B).mak $(BUILD_RULES) + $(CIF2MAK) $(SMBIOS_DMIEDIT_BOARD_DIR)\$(@B).c64 $(CIF2MAK_DEFAULTS) +!ELSE +$(BUILD_DIR)\SmbiosDMIEditBoard.mak : $(SMBIOS_DMIEDIT_BOARD_DIR)\$(@B).cif $(SMBIOS_DMIEDIT_BOARD_DIR)\$(@B).mak $(BUILD_RULES) + $(CIF2MAK) $(SMBIOS_DMIEDIT_BOARD_DIR)\$(@B).c32 $(CIF2MAK_DEFAULTS) +!ENDIF + +SmbiosDMIEditBoardBin : $(AMIDXELIB) $(AMICSPLib) $(BUILD_DIR)\AmiBufferValidationLib.lib + $(MAKE) /$(MAKEFLAGS) $(BUILD_DEFAULTS)\ + /f $(BUILD_DIR)\SmbiosDMIEditBoard.mak all\ + GUID=AF382531-52E6-4cc4-B247-DB8E320CBBA3 \ + ENTRY_POINT=SmbiosDmiEditSupportInstall \ + TYPE=BS_DRIVER \ + COMPRESS=1\ + +!ENDIF + +#************************************************************************ +#************************************************************************ +#** ** +#** (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/SmbiosDMIEdit/SmbiosDMIEditBoard.sdl b/Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditBoard.sdl new file mode 100644 index 0000000..4a04839 --- /dev/null +++ b/Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditBoard.sdl @@ -0,0 +1,50 @@ +TOKEN + Name = "SmbiosDMIEditBoard_SUPPORT" + Value = "1" + Help = "Main switch to enable AMI DMIEdit Board for SMBIOS support in Project" + TokenType = Boolean + TargetEQU = Yes + TargetMAK = Yes + Lock = Yes + Master = Yes +End + +TOKEN + Name = "SMBIOS_CORE_SRC_STATUS" + Value = "0" + Help = "Smbios Core Source is disabled" + TokenType = Boolean +End + +TOKEN + Name = "SMBIOS_CORE_SRC_STATUS" + Value = "1" + Help = "Smbios Core Source is enabled" + TokenType = Boolean + Token = "SMBIOS_CORE_SRC_SUPPORT" "=" "1" +End + +TOKEN + Name = "PROCESSOR_DMIEDIT_SUPPORT" + Value = "1" + Help = "ON -> Type 4 Serial Number, Asset Tag, Part Number update via DmiEdit is supported\OFF -> Type 4 Serial Number, Asset Tag, Part Number update via DmiEdit is not supported" + TokenType = Boolean + TargetH = Yes +End + +PATH + Name = "SMBIOS_DMIEDIT_BOARD_DIR" +End + +MODULE + Help = "Includes SmbiosDMIEditBoard.mak to Project" + File = "SmbiosDMIEditBoard.mak" +End + +ELINK + Name = "$(BUILD_DIR)\SmbiosDMIEditBoard.ffs" + Parent = "FV_MAIN" + Token = "SMBIOS_CORE_SRC_STATUS" "=" "0" + InvokeOrder = AfterParent +End + diff --git a/Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditFunc32.obj b/Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditFunc32.obj new file mode 100644 index 0000000..19328cb Binary files /dev/null and b/Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditFunc32.obj differ diff --git a/Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditFunc64.obj b/Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditFunc64.obj new file mode 100644 index 0000000..e1890de Binary files /dev/null and b/Board/EM/SMBIOS/SmbiosDMIEdit/SmbiosDMIEditFunc64.obj differ diff --git a/Board/EM/SMBIOS/SmbiosGetFlashData32.ffs b/Board/EM/SMBIOS/SmbiosGetFlashData32.ffs new file mode 100644 index 0000000..876f3f5 Binary files /dev/null and b/Board/EM/SMBIOS/SmbiosGetFlashData32.ffs differ diff --git a/Board/EM/SMBIOS/SmbiosGetFlashData64.ffs b/Board/EM/SMBIOS/SmbiosGetFlashData64.ffs new file mode 100644 index 0000000..83517b1 Binary files /dev/null and b/Board/EM/SMBIOS/SmbiosGetFlashData64.ffs differ diff --git a/Board/EM/SMBIOS/Smbrun.asm b/Board/EM/SMBIOS/Smbrun.asm new file mode 100644 index 0000000..17ec967 --- /dev/null +++ b/Board/EM/SMBIOS/Smbrun.asm @@ -0,0 +1,890 @@ + TITLE SMBRUN.ASM -- SMBIOS RUNTIME PnP FUNCTIONS 5Xh + +;**************************************************************************** +;**************************************************************************** +;** ** +;** (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/Smbrun.asm 6 6/02/09 3:49p Davidd $ +; +; $Revision: 6 $ +; +; $Date: 6/02/09 3:49p $ +; +;**************************************************************************** +; Revision History +; ---------------- +; $Log: /Alaska/BIN/Modules/SMBIOS/Smbrun.asm $ +; +; 6 6/02/09 3:49p Davidd +; Updated AMI headers and code clean up (EIP 22180) +; +; 5 5/19/09 10:53a Davidd +; Changes done for PnP 54 function support (EIP 19358). +; +; 4 1/22/08 4:17p Olegi +; Modifications for 16-bit PM calls. +; +; 2 12/31/07 12:53p Olegi +; Modifications for 16-bit protected mode interface. +; +; 1 12/26/07 5:08p Olegi +; File moved from Board to Core component. +; +; 3 9/06/07 4:23p Vyacheslava +; Added support for GPNV PnP functions: 55h, 56h, 57h +; The main procedures are in SMIGPNV module +; +; 1 9/06/07 3:31p Vyacheslava +; Added support for PnP functions: 55h, 56h, 57h +; +; 2 8/09/07 4:10p Olegi +; Support for functions 53 and 54. +; +; 1 8/03/07 4:50p Olegi +; SMBIOS PnP 16-bit functions - initial check-in; functions 50h, 51h and +; 52h are implemented. +; +;**************************************************************************** + +.586p + +; +;--------------------------------------------------------------------------- +; +; Name: Smbrun.asm +; +; Description: SMBIOS runtime PnP functions 5Xh +; +;--------------------------------------------------------------------------- +; + +INCLUDE Token.equ + +OEM16_CSEG SEGMENT PARA PUBLIC 'CODE' USE16 + ASSUME cs:OEM16_CSEG, ds:OEM16_CSEG + +;------------------------------------------------------------------------------ +; Run Time Function Return Codes (from Core8's RT.EQU) +;------------------------------------------------------------------------------ +RT_NO_ERROR equ 00h +RT_INVALID_FUNC equ 81h +RT_NVR_READ_ERROR equ 82h +RT_CMOS_READ_ERROR equ 82h +RT_PCI_BAD_VENDOR_ID equ 83h +RT_PCI_DEV_NOT_FOUND equ 86h +RT_PCI_BAD_REG_ADD equ 87h +RT_PCI_SET_FAILED equ 88h +RT_PCI_BUF_TOO_SMALL equ 89h + +RT_PNP_UNSUPPORTED equ 82h +RT_PNP_INVALID_NODE equ 83h +RT_PNP_BAD_PARAMETER equ 84h +RT_PNP_SET_FAILED equ 85h +RT_PNP_USE_ESCD equ 8Dh + +RT_ESCD_READ_ERROR equ 55h +RT_ESCD_INVALID equ 56h + +RT_DMI_SUCCESS equ 00h +RT_DMI_UNKNOWN_FUNCTION equ 81h +RT_DMI_FUNCTION_NOT_SUPPORTED equ 82h +RT_DMI_INVALID_HANDLE equ 83h +RT_DMI_BAD_PARAMETER equ 84h +RT_DMI_INVALID_SUBFUNCTION equ 85h +RT_DMI_NO_CHANGE equ 86h + RT_DMI_NO_EVENTS_PENDING equ 86h +RT_DMI_ADD_STRUCTURE_FAILED equ 87h + ; 88h-8Ch..not defined +RT_DMI_READ_ONLY equ 8Dh + ; 8Eh-8Fh..not defined +RT_DMI_LOCK_NOT_SUPPORTED equ 90h +RT_DMI_CURENTLY_LOCKED equ 91h +RT_DMI_INVALID_LOCK equ 92h + +SMBIOS_PNP_FUNC50_DMIEDIT_STRUC struc + dataIgnoredByDmiFn50 DB 24 DUP (?) + dDmiBiosRevision DD ? ; BYTE + dDmiNumStructures DD ? ; WORD + dDmiStructureSize DD ? ; WORD + dDmiStorageBase DD ? ; DWORD + dDmiStorageSize DD ? ; WORD +SMBIOS_PNP_FUNC50_DMIEDIT_STRUC ends + +SMBIOS_PNP_FUNC51_DMIEDIT_STRUC struc + wFunction DW ? ; 51h + dStructure DD ? ; UINT16* + dDmiStructureBuffer DD ? ; UINT32* + wDmiSelector DW ? + dBiosSelector DW ? +SMBIOS_PNP_FUNC51_DMIEDIT_STRUC ends + +DMIHDR_STRUC STRUCT + bType BYTE ? + bLength BYTE ? + wHandle WORD ? +DMIHDR_STRUC ENDS + +;---------------------------------------------------------------------------- +; STRUCTURE OF DATA BUFFER IN SMBIOS FUNCTION 53H +;---------------------------------------------------------------------------- +SMBIOSFun53BufferSTRUC STRUC + bChangeStatus BYTE ? + bChangeType BYTE ? + wChangeHandle WORD ? + bChangeReserved BYTE 12 DUP (?) +SMBIOSFun53BufferSTRUC 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 + +; +;--------------------------------------------------------------------------- +; +; Name: SmbiosPnpFunctions +; +; Description: SMBIOS PnP functions 50..57 +; +; Output: None +; +;--------------------------------------------------------------------------- +; + +SmbiosPnpFunctions PROC FAR PUBLIC + pushf + push fs + push bx + push dx + push si + push bp + + call $+3 ; Push curent IP + pop si ; Get current IP in SI + sub si, $ + inc si + + mov bx, 0FF4Ch + mov bx, cs:[bx] ; OFFSET RUN_CSEG:Legacy16Data + mov bx, cs:[bx+8] ; OFFSET RUN_CSEG:smiflash_table + mov dx, WORD PTR cs:[bx+12] ; SMI port IO address + + mov bx, [ebp+00h] ; get the function number + sub bx, 50h + mov ax, RT_INVALID_FUNC ; Return code for unknown func + +;-IF NOT MKF_SMBIOS_DATA_STRUCTURES_BELOW_TOM + cmp bx, (smbios_func_table_end - smbios_func_table_start) / 2 + jae SHORT srfe_00 ; invalid function + + add si, OFFSET cs:smbios_func_table_start + shl bx, 1 + add si, bx + call si ; Call proper PnP function + +srfe_00: + pop bp + pop si + pop dx + pop bx + pop fs + popf + +rt_pnp_exit: + pop bx + popf + pop ebp + ret + +SmbiosPnpFunctions ENDP + +;---------------------------------------------------------------------------- +; SMBIOS_FUNC_TABLE (SHORT is the key word needed to assure 2 bytes per jmp) +;---------------------------------------------------------------------------- +smbios_func_table_start LABEL BYTE + jmp SHORT func_50 + jmp SHORT func_51 + jmp SHORT func_52 + jmp SHORT func_53 + jmp SHORT func_54 + jmp SHORT func_55 + jmp SHORT func_56 + jmp SHORT func_57 +smbios_func_table_end LABEL BYTE + +func_50: jmp rt_get_smbios_info +func_51: jmp rt_get_smbios_struc +func_52: jmp rt_set_smbios_struc +func_53: jmp rt_get_smbios_struc_change_info +func_54: jmp rt_smbios_control +func_55: jmp rt_smbios_get_gpnv +func_56: jmp rt_smbios_read_gpnv +func_57: jmp rt_smbios_write_gpnv + +; +;--------------------------------------------------------------------------- +; +; Name: rt_generate_sw_smi +; +; Description: Generate SW SMI +; +; Input: AL = PnP function number +; DX = SMI Port +; +; Output: None +; +;--------------------------------------------------------------------------- +; +rt_generate_sw_smi PROC NEAR + out dx, al + movzx bx, al + ret +rt_generate_sw_smi ENDP + +; +;---------------------------------------------------------------------------- +; +; Procedure: SMBIOS_Func_50h +; Procedure: RT_GET_SMBIOS_INFO +; +; Description: This function returns information about the SMBIOS extensions +; such as the number of structures present and the size of the +; largest one. This function is presently called only during RUNTIME. +; +; Input: [EBP+00] = Function number (50h) +; [EBP+02] = BYTE FAR *DmiBiosVersion +; [EBP+06] = WORD FAR *NumStructures +; [EBP+0A] = WORD FAR *StructureSize +; [EBP+0E] = DWORD FAR *DMIStorageBase +; [EBP+12] = WORD FAR *DMIStorageSize +; [EBP+16] = WORD BiosSelector +; DX = SMI IO port address +; +; Output: AX = Zero if successful +; non-zero return code if non successful +; [EBP+02] = BYTE FAR *DmiBiosVersion filled in with the version +; of the DMI BIOS spec that this code supports. +; [EBP+06] = WORD FAR *NumStructures filled with total number of +; DMI structures that are present in the system. +; [EBP+0A] = WORD FAR *StructureSize filled with the size in +; bytes of the largest DMI structure. +; [EBP+0E] = DWORD FAR *DMIStorageBase filled with the absolute +; 32Bit address of any memory-mapped structure +; [EBP+12] = WORD FAR *DMIStorageSize filled with the buffer +; size needed in Func 52h/54h. +; +; Modified: Nothing +; +;---------------------------------------------------------------------------- +; + +rt_get_smbios_info PROC NEAR + + push ebx + push eax + push si + push edi + push ds + + ; EBX = SS<<4+SP-sizeof(SMBIOS_PNP_FUNC50_DMIEDIT_STRUC) + mov ebx, 0 + mov bx, ss + shl ebx, 4 + movzx edi, sp + sub di, size SMBIOS_PNP_FUNC50_DMIEDIT_STRUC + add ebx, edi + + mov sp, di + + mov al, 50h + call rt_generate_sw_smi + + lds si, DWORD PTR [ebp+02h] + mov eax, ss:(SMBIOS_PNP_FUNC50_DMIEDIT_STRUC PTR [di]).dDmiBiosRevision + mov BYTE PTR [si], al + + lds si, DWORD PTR [ebp+06h] + mov eax, ss:(SMBIOS_PNP_FUNC50_DMIEDIT_STRUC PTR [di]).dDmiNumStructures + mov WORD PTR [si], ax + + lds si, DWORD PTR [ebp+0Ah] + mov eax, ss:(SMBIOS_PNP_FUNC50_DMIEDIT_STRUC PTR [di]).dDmiStructureSize + mov WORD PTR [si], ax + + lds si, DWORD PTR [ebp+0Eh] + mov eax, ss:(SMBIOS_PNP_FUNC50_DMIEDIT_STRUC PTR [di]).dDmiStorageBase + mov DWORD PTR [si], eax + + lds si, DWORD PTR [ebp+12h] + mov eax, ss:(SMBIOS_PNP_FUNC50_DMIEDIT_STRUC PTR [di]).dDmiStorageSize + mov WORD PTR [si], ax + + add sp, size SMBIOS_PNP_FUNC50_DMIEDIT_STRUC + pop ds + pop edi + pop si + pop eax + mov ax, bx + pop ebx + + ret + +rt_get_smbios_info ENDP + + +; +;---------------------------------------------------------------------------- +; +; Procedure: SMBIOS_Func_51h +; Procedure: RT_GET_SMBIOS_STRUC +; +; Description: This function copies one DMI structure into the buffer +; provided by the caller. The caller's DMI structure number is +; then updated with next DMI structure number (or FFFF if no +; more DMI structures are present). +; +; Input: [EBP+00] = Function number (51h) +; [EBP+02] = WORD FAR *StructureNum +; [EBP+06] = WORD FAR *DmiStructureBuffer +; [EBP+0A] = WORD DmiSelector +; [EBP+0C] = WORD BiosSelector +; DX = SMI IO port address +; +; Output: AX = Zero if success, non-zero return code if non successful +; [EBP+02] = WORD FAR *StructureNum updated to contain the next DMI +; structure number or FFFF if no more structures exist +; [EBP+06] = WORD FAR *DmiStructureBuffer pointer to buffer that is +; filled in with the requested DMI structure. +; +; Modified: AX +; +;---------------------------------------------------------------------------- +; + +rt_get_smbios_struc PROC NEAR + push ebx + push eax +; +; convert *StructureNum and *DmiStructureBuffer from SEG:OFS format +; to 32-bit addresses +; + push [ebp+2] ; UINT16 *StructureNum + push [ebp+4] + push [ebp+6] ; UINT8 *DmiStructureBuffer + push [ebp+8] + + mov eax, 0 + +; prepare EBX with 32-bit addresses of *StructureNum and *DmiStructureBuffer + mov ebx, 0 + mov bx, [ebp+4] + shl ebx, 4 + mov ax, [ebp+2] + add ebx, eax + mov [ebp+2], ebx + + mov ebx, 0 + mov bx, [ebp+8] + shl ebx, 4 + mov ax, [ebp+6] + add ebx, eax + mov [ebp+6], ebx + +; prepare EBX with 32-bit address out of DS:EBP + mov ebx, 0 + mov bx, ss + shl ebx, 4 + add ebx, ebp + mov al, 51h + call rt_generate_sw_smi + + pop [ebp+8] + pop [ebp+6] + pop [ebp+4] + pop [ebp+2] + + pop eax + mov ax, bx + pop ebx + + ret + +rt_get_smbios_struc ENDP + + +; +;---------------------------------------------------------------------------- +; +; Procedure: SMBIOS_Func_52h +; Procedure: RT_SET_SMBIOS_STRUC +; +; Description: This function sets the SMBIOS structure identified by the +; type and possibly handle, found in the SMBIOS structure +; header in the given buffer. +; +; Input: [EBP+00] = Function number (52h) +; [EBP+02] = WORD FAR *DmiDataBuffer +; [EBP+06] = WORD FAR *DmiWorkBuffer +; [EBP+0A] = WORD Control +; [EBP+0C] = WORD DmiSelector +; [EBP+0E] = WORD BiosSelector +; +; Output: AX = Zero if successful +; non-zero return code if unsuccessful +; +;---------------------------------------------------------------------------- +; + +rt_set_smbios_struc PROC NEAR + push ebx + push eax + push si + push di + push ds + + lds di, DWORD PTR [ebp+02h] ; DS:SI = ptr to given data buffer + + push [ebp+2] + + mov eax, 0 + mov ebx, 0 + mov bx, [ebp+4] + shl ebx, 4 + mov ax, [ebp+2] + add ebx, eax + mov [ebp+2], ebx + +; prepare EBX with 32-bit address out of DS:EBP + mov ebx, 0 + mov bx, ss + shl ebx, 4 + add ebx, ebp + mov al, 52h + call rt_generate_sw_smi + + pop [ebp+2] + +; Update smbios_change_status + + ; Get the offset of SMBIOS_CHANGE_STRUC data + call get_smbios_change_struc + + call SMB_cs_read_x_write_ram + + mov cs:(SMBIOS_CHANGE_STRUC PTR [si]).smbios_change_status, SMBIOS_SINGLE_STRUCTURE_AFFECTED + mov cs:(SMBIOS_CHANGE_STRUC PTR [si]).smbios_change_type, SMBIOS_ONE_MORE_STRUCTURE_CHANGED + mov ax, ds:WORD PTR (DMIHDR_STRUC PTR [di]).wHandle; AX = handle# of structure being changed + mov cs:(SMBIOS_CHANGE_STRUC PTR [si]).smbios_change_handle, ax ; changed handle + + call SMB_cs_read_ram_write_rom + + pop ds + pop di + pop si + pop eax + mov ax, bx + pop ebx + ret +rt_set_smbios_struc ENDP + + +; +;---------------------------------------------------------------------------- +; +; Procedure: SMBIOS_Func_53h +; Procedure: RT_GET_SMBIOS_STRUC_CHANGE_INFO +; +; Description: This function returns the information about what type of +; SMBIOS structure-change occurred. +; +; Input: [EBP+00] = Function number (53h) +; [EBP+02] = WORD FAR *DmiChangeStructure +; [EBP+06] = WORD DmiSelector +; [EBP+08] = WORD BiosSelector +; +; Output: AX = Zero if successful +; Non-zero return code if unsuccessful +; +; Modified: Nothing +; +;---------------------------------------------------------------------------- +; + +rt_get_smbios_struc_change_info PROC NEAR + + push es + push ds + push gs + push fs + + mov gs, WORD PTR [ebp+08h] ; GS = BIOS Selector + mov fs, WORD PTR [ebp+06h] ; FS = GPNV Selector + + call SMB_cs_read_x_write_ram + + push si + push di + + les di, DWORD PTR [ebp+02h] ; ES:DI = ptr to DMI Change Structure buffer + +; Get the offset of SMBIOS_CHANGE_STRUC data + call get_smbios_change_struc + + xor ax, ax + xchg ah, cs:(SMBIOS_CHANGE_STRUC PTR [si]).smbios_change_status; AH = SMBIOS Change Status + xchg al, cs:(SMBIOS_CHANGE_STRUC PTR [si]).smbios_change_type; AL = SMBIOS Change Type + mov es:BYTE PTR (SMBIOSFun53BufferSTRUC PTR [di]).bChangeStatus, ah + mov es:BYTE PTR (SMBIOSFun53BufferSTRUC PTR [di]).bChangeType, al + push ax + cmp ah, SMBIOS_MULTIPLE_STRUCTURE_AFFECTED + mov ax, 0000h ; DO NOT USE xor ax, ax !!!!!!!!!!!!!!!! + ; Flags has the information of prev CMP + xchg ax, cs:(SMBIOS_CHANGE_STRUC PTR [si]).smbios_change_handle; AX = handle# of changed structure + jnz SHORT rgssci_00 ; single structure affected + xor ax, ax ; make handle# 00 for multiple structures change + +rgssci_00: + mov es:WORD PTR (SMBIOSFun53BufferSTRUC PTR [di]).wChangeHandle, ax + pop ax + pop si + pop di + + call SMB_cs_read_ram_write_rom + + cmp ah, SMBIOS_NO_CHANGE ; any change in status ? + mov ax, RT_DMI_SUCCESS ; successful + jnz SHORT rgssci_01 ; change in status + mov ax, RT_DMI_NO_CHANGE ; no change in status, return with error code + +rgssci_01: + pop fs + pop gs + pop ds + pop es + ret + +rt_get_smbios_struc_change_info ENDP + +SMBIOS_CHANGE_STRUC STRUCT + smbios_change_handle DW ? + smbios_change_status DB ? + smbios_change_type DB ? +SMBIOS_CHANGE_STRUC ENDS + +get_smbios_change_struc: + pushf + cli + call l_01 ; stores IP + mov si, sp + mov si, ss:[si-2] + popf ; restore IF + add si, 11 ; cs:si points to smbios_change_handle +l_01: + ret +smbios_change_handle DW ? +smbios_change_status DB ? +smbios_change_type DB ? + +; +;---------------------------------------------------------------------------- +; +; Procedure: SMB_cs_read_x_write_ram +; +; Description: This function makes the code segment Write Only. +; +; Input: None +; +; Notes: This function needs to ported or modified accordingly. +; +;---------------------------------------------------------------------------- +; + +SMB_cs_read_x_write_ram PROC NEAR PUBLIC + push eax + push dx + mov dx, 0CF8h + mov eax, 80000094h + out dx, eax + mov dx, 0CFCh + in eax, dx + or eax, 00020000h ; 0/0/0/96/Bit1, enable E8000 for writing + out dx, eax + pop dx + pop eax + ret +SMB_cs_read_x_write_ram ENDP + + +; +;---------------------------------------------------------------------------- +; +; Procedure: SMB_cs_read_ram_write_rom +; +; Description: This function makes the code segment Read Only. +; +; Input: None +; +; Notes: This function needs to ported or modified accordingly. +; +;---------------------------------------------------------------------------- +; + +SMB_cs_read_ram_write_rom PROC NEAR PUBLIC + push eax + push dx + mov dx, 0CF8h + mov eax, 80000094h + out dx, eax + mov dx, 0CFCh + in eax, dx + and eax, 0FFFDFFFFh ; 0/0/0/96/Bit1, make E8000 read-only + out dx, eax + pop dx + pop eax + ret +SMB_cs_read_ram_write_rom ENDP + + +; +;---------------------------------------------------------------------------- +; +; Procedure: SMBIOS_Func_54h +; Procedure: RT_SMBIOS_CONTROL +; +; Description: This function returns the information about what type of +; SMBIOS structure-change occurred. +; +; Input: [EBP+00] = Function number (54h) +; [EBP+02] = WORD SubFunction - Defines the specific control operation +; [EBP+04] = VOID FAR *Data - Input/output data buffer, SubFunction specific +; [EBP+08] = BYTE Control - Conditions for setting the structure +; [EBP+09] = WORD DmiSelector - SMBIOS data read/write selector +; [EBP+11] = WORD BiosSelector- PnP BIOS readable/writeable selector +; +; Output: AX = Zero if successful +; Non-zero return code if unsuccessful +; +;---------------------------------------------------------------------------- +; + +rt_smbios_control PROC NEAR +; Do the porting here as needed +;- mov ax, RT_PNP_UNSUPPORTED ;Return code for unsupported func +; (debx+03062009)> + mov al, 30h ; SmiGpnv + call rt_generate_sw_smi +; <(debx+03062009) + ret + +rt_smbios_control ENDP + +; +;---------------------------------------------------------------------------- +; +; Procedure: SMBIOS_Func_55h +; +; Description: Required for GPNV support. This function returns information +; about a General Purpose NonVolatile (GPNV) area. The Handle +; argument is a pointer to a number that identifies which GPNV's +; information is requested, a value of 0 accesses the first +; (or only) area. +; +; Input: [EBP+00] DW PnP BIOS Function 55h +; [EBP+02] DW *Handle - Identifies which GPNV to access +; [EBP+06] DW *MinGPNVRWSize - Minimum buffer size in bytes for GPNV access +; [EBP+0A] DW *GPNVSize - Size allocated for GPNV within the R/W Block +; [EBP+0E] DD *NVStorageBase - 32-bit physical base address for... +; ... mem. mapped nonvolatile storage media +; [EBP+12] DW BiosSelector - PnP BIOS readable/writable selector +; +; Output: If successful - DMI_SUCCESS If an Error (Bit 7 set) or a +; Warning occurred the Error Code will be returned in AX, the +; FLAGS and all other registers will be preserved +; +; Notes: On return: +; +; *Handle is updated either with the handle of the next GPNV +; area or, if there are no more areas, 0FFFFh. GPNV handles +; are assigned sequentially by the system, from 0 to the total +; number of areas (minus 1). +; +; *MinGPNVRW Size is updated with the minimum size, in bytes, +; of any buffer used to access this GPNV area. For a Flash +; based GPNV area, this would be the size of the Flash block +; containing the actual GPNV. +; +; *GPNVSize is updated with the size, in bytes, of this GPNV +; area (which is less than or equal to the MinGPNVRWSize value). +; +; *NVStorageBase is updated with the paragraph-aligned, 32-bit +; absolute physical base address of this GPNV. If non-zero, +; this value allows the caller to construct a 16-bit data +; segment descriptor with a limit of MinGPNVRWSize and +; read/write access. If the value is 0, protected-mode mapping +; is not required for this GPNV. +; +;---------------------------------------------------------------------------- +; + +rt_smbios_get_gpnv PROC NEAR PUBLIC + mov al, 30h ; SmiGpnv + call rt_generate_sw_smi + ret +rt_smbios_get_gpnv ENDP + +; +;---------------------------------------------------------------------------- +; +; Procedure: SMBIOS_Func_56h +; +; Description: Required for GPNV support. This function is used to read an +; entire GPNV area into the buffer specified by GPNVBuffer. It +; is the responsibility of the caller to ensure that GPNVBuffer +; is large enough to store the entire GPNV storage block - this +; buffer must be at least the MinGPNVRWSize returned by Function +; 55h - Get GPNV Information. The Handle argument identifies the +; specific GPNV to be read. On a successful read of a GPNV area, +; that GPNV area will be placed in the GPNVBuffer beginning at +; offset 0. The protected-mode selector GPNVSelector has base +; equal to NVStorageBase and limit of at least MinGPNVRWSize - +; so long as the NVStorageBase value returned from Function 55h +; was non-zero. +; +; Input: [EBP+00] DW PnP BIOS Function 56h +; [EBP+02] DW Handle - Identifies which GPNV is to be read +; [EBP+04] DW *GPNVBuffer - Address of buffer in which to return GPNV +; [EBP+08] DW *GPNVLock - Lock value +; [EBP+0C] DW GPNVSelector - Selector for GPNV Storage +; [EBP+0E] DW BiosSelector - PnP BIOS readable/writable selector +; +; Output: If the GPNV lock is supported and the lock set request succeeds, +; the caller's GPNVLock is set to the value of the current lock +; and the function returns DMI_SUCCESS. +; +; Notes: If the GPNV request fails, one of the following values is +; returned: +; - DMI_LOCK_NOT_SUPPORTED +; - DMI_INVALID_LOCK +; - DMI_CURRENTLY_LOCKED +; +; For return status codes DMI_SUCCESS, DMI_LOCK_NOT_SUPPORTED +; and DMI_CURRENTLY_LOCKED, the GPNV Read function returns the +; current contents of the GPNV associated with Handle as the +; first GPNVSize bytes within GPNVBuffer, starting at offset 0. +; If a lock request fails with DMI_CURRENTLY_LOCKED status, +; the caller's GPNVLock will be set to the value of the current +; lock. +; Passing a GPNVLock value of -1 to the GPNV Read causes the +; GPNVLock value to be ignored - in this case the underlying +; logic makes no attempt to store a lock value for comparison +; with lock values passed into GPNV Write. Any value provided +; for GPNVLock besides -1 is accepted as a valid value for a +; lock request. +; +;---------------------------------------------------------------------------- +; + +rt_smbios_read_gpnv PROC NEAR PUBLIC + mov al, 30h ; SmiGpnv + call rt_generate_sw_smi + ret +rt_smbios_read_gpnv ENDP + +; +;---------------------------------------------------------------------------- +; +; Procedure: SMBIOS_Func_57h +; +; Description: Required for GPNV support. This function is used to write an +; entire GPNV from the GPNVBuffer into the nonvolatile storage +; area. The Handle argument identifies the specific GPNV to be +; written. The protectedmode selector GPNVSelector has base equal +; to NVStorageBase and limit of at least MinGPNVRWSize - so long +; as the NVStorageBase value returned from Get GPNV Information +; was non-zero. The caller should first call Read GPNV Data +; (with a lock) to get the current area contents, modify the +; data, and pass it into this function - this ensures that the +; GPNVBuffer which is written contains a complete definition for +; the entire GPNV area. If the BIOS uses some form of block erase +; device, the caller must also allocate enough buffer space for +; the BIOS to store all data from the part during the reprogramming +; operation, not just the data of interest. +; The data to be written to the GPNV selected by Handle must +; reside as the first GPNVSize bytes of the GPNVBuffer. +; Note: The remaining (MinGPNVRWSize-GPNVSize) bytes of the +; GPNVBuffer area are used as a scratch-area by the BIOS call +; in processing the write request; the contents of that area of +; the buffer are destroyed by this function call. +; The GPNVLock provides a mechanism for cooperative use of the +; GPNV, and is set during a GPNV Read (Function 56h). If the +; input GPNVLock value is -1 the caller requests a forced write +; to the GPNV area, ignoring any outstanding GPNVLock. If the +; caller is not doing a forced write, the value passed in GPNVLock +; to the GPNV Write must be the same value as that (set and) +; returned by a previous GPNV Read (Function 56h). +; +; Input: [EBP+00] - PnP BIOS Function 57h +; [EBP+02] - Handle - Identifies which GPNV is to be written +; [EBP+04] - *GPNVBuffer - Address of buffer containing complete GPNV to write +; [EBP+08] - GPNVLock - Lock value +; [EBP+0A] - GPNVSelector - Selector for GPNV Storage +; [EBP+0C] - BiosSelector - PnP BIOS readable/writable selector +; +; Output: The GPNV Write function returns a value of DMI_ LOCK_NOT_SUPPORTED +; when a GPNVLock value other than -1 is specified and locking is +; not supported. A return status of DMI_ CURRENTLY_LOCKED indicates +; that the call has failed due to an outstanding lock on the GPNV +; area which does not match the caller's GPNVLock value. Any +; outstanding GPNVLock value (which was set by a previous Error! +; Reference source not found.) gets cleared on a successful +; write of the GPNV. +; Notes: +; +;---------------------------------------------------------------------------- +; + +rt_smbios_write_gpnv PROC NEAR PUBLIC + mov al, 30h ; SmiGpnv + call rt_generate_sw_smi + ret +rt_smbios_write_gpnv ENDP + + +OEM16_CSEG ENDS + +END +;---------------------------------------------------------------------------- +;**************************************************************************** +;**************************************************************************** +;** ** +;** (C)Copyright 1985-2009, American Megatrends, Inc. ** +;** ** +;** All Rights Reserved. ** +;** ** +;** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 ** +;** ** +;** Phone: (770)-246-8600 ** +;** ** +;**************************************************************************** +;**************************************************************************** -- cgit v1.2.3