diff options
Diffstat (limited to 'Board/EM/SMBIOS/SMBiosStaticData/SMBDATA.MAC')
-rw-r--r-- | Board/EM/SMBIOS/SMBiosStaticData/SMBDATA.MAC | 2708 |
1 files changed, 2708 insertions, 0 deletions
diff --git a/Board/EM/SMBIOS/SMBiosStaticData/SMBDATA.MAC b/Board/EM/SMBIOS/SMBiosStaticData/SMBDATA.MAC new file mode 100644 index 0000000..4249c0f --- /dev/null +++ b/Board/EM/SMBIOS/SMBiosStaticData/SMBDATA.MAC @@ -0,0 +1,2708 @@ + ECHO --Including: SMBDATA.MAC + +;---------------------------------------------------------------------------- +; DO NOT CHANGE ANY STRUCTURE DEFINITION UNLESS OTHERWISE SPECIFIED +;---------------------------------------------------------------------------- + +;**************************************************************************** +;**************************************************************************** +;** ** +;** (C)Copyright 1985-2016, American Megatrends, Inc. ** +;** ** +;** All Rights Reserved. ** +;** ** +;** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 ** +;** ** +;** Phone: (770)-246-8600 ** +;** ** +;**************************************************************************** +;**************************************************************************** + +;**************************************************************************** +; $Header: /Alaska/BIN/Modules/SMBIOS/SmbiosStaticData/SMBDATA.MAC 39 4/07/16 5:54p Davidd $ +; +; $Revision: 39 $ +; +; $Date: 4/07/16 5:54p $ +;**************************************************************************** +; Revision History +; ---------------- +; $Log: /Alaska/BIN/Modules/SMBIOS/SmbiosStaticData/SMBDATA.MAC $ +; +; 39 4/07/16 5:54p Davidd +; [TAG] EIP231162 +; [Category] New Feature +; [Description] Merge Aptio V Smbios -09 changes for Aptio 4 +; 4.6.5.5_SMBIOS_40 release +; [Files] Smbios.sdl +; SmbiosDynamicData.h +; Smbios.h +; SmbiosStaticData.sdl +; SmbiosStaticData.asm +; SmbData.mac +; SmbMacro.aid +; SmbDesc.def +; +; 38 2/17/15 1:08p Davidd +; [TAG] EIP205509 +; [Category] Improvement +; [Description] Merge Aptio V Smbios EIP193807, 193858, 196901 changes +; into Aptio 4 Smbios +; [Files] SmbiosStaticData.asm +; Smbdata.mac +; Smbdesc.def +; +; 37 11/13/13 3:40p Davidd +; [TAG] EIP143030 +; [Category] Improvement +; [Description] Synchronize Aptio 4 Smbios with recent changes on Aptio +; V Smbios for '4.6.5.1_SMBIOS_36' release +; [Files] SmbiosStaticData.sdl +; Smbdesc.def +; SMBDATA.MAC +; +; 36 6/03/13 6:23p Davidd +; [TAG] EIP125665 +; [Category] New Feature +; [Description] Request to Support multiple instances of SMBIOS Type 3 +; structure (merge EIP106206 into Aptio 4) +; [Files] Smbdata.mac +; SmbiosStaticData.sdl +; Smbstruc.def +; Smbios.c +; SmbiosDMIEditFunc.c +; Smbios.h +; +; 35 5/29/13 12:49p Davidd +; [TAG] EIP124735 +; [Category] Spec Update +; [Severity] Normal +; [Description] SMBIOS 2.8.0 specification support for Aptio 4 +; [Files] Smb.equ +; Smbdata.mac +; Smbdesc.def +; Smbstruc.def +; Smbios.c +; Smbios.h +; SmbiosDynamicData.h +; +; 34 11/12/12 10:17a Davidd +; [TAG] EIP106202 +; [Category] Bug Fix +; [Severity] Minor +; [Symptom] 16-bit and 32-bit were display 0 +; [RootCause] Error in CreateBootIntegrityServicesInfo macro +; [Solution] Corrected error in CreateBootIntegrityServicesInfo macro +; [Files] Smbdata.mac +; +; 33 9/13/12 12:10p Davidd +; [TAG] EIP99388 +; [Category] Improvement +; [Description] can not modified SMBIOS type 38 by +; smbiosstaticdata.sdl +; [Files] Smbdata.mac +; Smbdesc.def +; +; 32 3/26/12 11:54a Davidd +; [TAG] EIP84370 +; [Category] New Feature +; [Description] Flash memory(type 16 and 17) on aptio +; [Files] Smbdata.mac +; SmbiosStaticData.asm +; SmbiosStaticData.sdl +; Smbios.c +; Smbios.mak +; Smbios.h +; +; 31 3/12/12 3:06p Davidd +; [TAG] EIP82983 +; [Category] Improvement +; [Description] Need Creating Tokens for Type1:UUID/Type11/Typ12/Type22 +; [Files] SmbiosStaticData.sdl +; Smbdata.mac +; Smbdesc.def +; +; 30 1/17/12 4:50p Davidd +; [TAG] EIP78264 +; [Category] Improvement +; [Description] SMBOS Type 2 (Spec 2.7.1) - No multiple type 2 support +; [Files] Smbios.c +; Smbios.h +; Smbdata.mac +; Smbdesc.def +; SmbiosStaticData.sdl +; +; 29 9/29/11 4:41p Davidd +; [TAG] EIP68202 +; [Category] NEW FEATURE +; [Description] Allow Smbios Type 2 Location field and Type 3 SKU +; Number field +; to be apdated by dmieditwingui tool +; [Files] Smbios.c +; SmbiosDMIEditFunc.c +; Smbdata.mac +; +; 28 4/05/11 11:46a Davidd +; [TAG] EIP55656 +; [Category] Improvement +; [Description] Provide generic support in SMBIOS module to include +; build time EC version +; [Files] SmbiosBoard.c +; Smbdata.mac +; Smbios.sdl +; +; 27 2/09/11 10:27a Davidd +; [TAG] EIP53081 +; [Category] Bug Fix +; [Severity] Minor +; [Symptom] Smbios Management Device (type 34) must be enabled in +; order to +; see System Power Supply (type 39) +; [RootCause] Macro to create System Power Supply structure (type 39) +; was grouped inside macro to create Smbios Management +; Device +; (type 34) +; [Solution] Seperated Type 39 macro from 34. +; [Files] SmbiosStaticData.asm +; Smbdata.mac +; Smbmacro.aid +; Smbdesc.def +; +; 26 12/14/10 11:15a Davidd +; [TAG] EIP49944 +; [Category] Improvement +; [Description] Smbios enhancements for incorporating no strings +; [Files] Smbdata.mac +; +; 25 12/10/10 3:06p Davidd +; [TAG] EIP49728 +; [Category] BUG FIX +; [Severity] Normal +; [Symptom] SMBIOS Type 10 Data incorrect +; [RootCause] Macro to create Type 10 structure is incorrect. +; [Solution] Modified macro to create one Type 10 Entry containing +; the number of ONBOARD_DEVICES. +; [Files] +; Smbdata.mac +; Smbios.c +; +; 24 12/02/10 12:02p Davidd +; [TAG] EIP48600 +; [Category] BUG FIX +; [Severity] Normal +; [Symptom] With SMBIOS 4.6.1_ALPHA_01.28 eModule, the DMIEDIT.EXE +; tool would hang and type10 Description String is wrong +; [RootCause] Recent change in macro used to create Type 10 structure +; was causing the problem. +; [Solution] Reverted the change (for Type 10) to previous +; 4.6.1_ALPHA_01.27 label. +; [Files] Smbdata.mac +; +; 23 10/08/10 8:15p Davidd +; [TAG] EIP43278 +; +; [Category] Function Request +; +; [Severity] Normal +; +; [Description] SMBIOS 2.7 requirement +; +; [Files] Include\Protocol\Smbios.h +; Include\Protocol\SmbiosDynamicData.h +; Board\EM\SMBIOS\SMBiosStaticData\SmbiosStaticData.sdl +; Board\EM\SMBIOS\SMBiosStaticData\SMBDATA.MAC +; Board\EM\SMBIOS\SMBiosStaticData\SMBSTRUC.DEF +; Board\EM\SMBIOS\SMBiosStaticData\SMBMACRO.AID +; Board\EM\SMBIOS\SMBiosStaticData\Smbdesc.def +; Board\EM\SMBIOS\SMBiosStaticData\SMB.EQU +; +; 22 8/18/09 8:43a Davidd +; Change made to increase the handle number at the end of type 39 (System +; Power Supply) +; +; 21 6/02/09 4:44p Davidd +; Updated AMI headers (EIP 22180) +; +; 20 5/19/09 11:05a Davidd +; Corrected CreateOnboardDevicesExtendedInfo macro returning used handle +; in the next structure (EIP 21149). +; +; 19 2/03/09 2:56p Davidd +; +; 18 10/23/08 6:31p Davidd +; More changes for SMBIOS v2.5 and v2.6 support +; +; 17 10/13/08 11:16a Davidd +; Changes made to support SMBIOS v2.5 and v2.6 +; +; 16 4/04/08 5:12p Davidd +; Made changes to use SDL token Ax_MEMORY_SOCKETS as number of memory +; slot for each memory array. +; +; 15 2/22/08 10:29a Davidd +; Simplified the way the number of memory slots for each physical memory +; array are defined. +; +; 14 2/01/08 11:58a Davidd +; Changes made to support SMBIOS type 17 with multiple memory arrays. +; +; 13 11/21/07 10:15a Davidd +; Modified CreatePortableBatteryInfo to support multiple entries. +; +; 12 11/16/07 6:41p Davidd +; Made changes to support multiple entries for Physical Memory Array +; Information type 16 and Built-in Pointing Device Information type 21. +; +; 11 11/07/07 3:24p Davidd +; Fixed ROM image build verification problem by setting the BIOS Release +; Date to "TODAY" field in timestamp.equ instead of the system date. +; +; 10 3/29/07 4:55p Davidd +; Changed the year in the AMI banner. +; +; 9 3/21/07 4:07p Michaela +; made changes to CreateMemoryInfo macro to support multiple +; memory arrays +; +; 8 3/14/07 2:17p Pavell +; Changes for ITK +; +; 7 7/14/06 9:08a Pavell +; +; 6 3/01/06 5:04p Davidd +; Modified loop counters to correctly handle more than one physical +; memory array. +; +; 5 8/10/05 4:07p Davidd +; In CreateBiosLanguageInfo, changed the current language to 1. +; +; 4 7/13/05 5:23p Davidd +; Added changes to automatically fill in BIOS release date using system +; date at build time. +; +; 3 7/08/05 12:58p Davidd +; Updated Type 0 structure to use CORE major and minor version from +; Core.sdl tokens. +; +; 2 6/21/05 12:07p Davidd +; Corrected hanging problem as BIOS Version was changed starting from +; label "ALPHA-1.00.12". +; +; 1 4/29/05 2:15p Davidd +; Initial checkin. +; +;**************************************************************************** + +include timestamp.equ +include token.equ + +IFNDEF _smbdata_mac_ ; Start of Inclusion Guard _smbdata_mac_ +_smbdata_mac_ EQU 1 + +;---------------------------------------------------------------------------- +; Structure Type 0 : BIOS INFORMATION +;---------------------------------------------------------------------------- +CreateBiosInfo macro xHandle:REQ + + LOCAL xBVersion + + MKF_CMA = MKF_CORE_MAJOR_VERSION + MKF_CMI = MKF_CORE_MINOR_VERSION + IFDEF MKF_ITK_SUPPORT + IF MKF_ITK_SUPPORT EQ -1 + xBVersionNoTime TEXTEQU @CATSTR (%MKF_TWO_LETTER_PRODUCT_NAME, %MKF_PRODUCT_CHIPSET_FAMILY, %MKF_PRODUCT_BOARD_REVISION, %MKF_PRODUCT_BOARD_SUB_REVISION, <.>, %MKF_THREE_LETTER_OEMID, <.>, %MKF_PRODUCT_BUILD_NUMBER) + xBVersion TEXTEQU @CATSTR(xBVersionNoTime, <.>, %FOUR_DIGIT_YEAR, <.>, %TWO_DIGIT_MONTH, %TWO_DIGIT_DAY, <.>, %TWO_DIGIT_HOUR, %TWO_DIGIT_MINUTE) + ELSE + xBVersion TEXTEQU @CATSTR (%MKF_CORE_MAJOR_VERSION, <.>, %MKF_CORE_MINOR_VERSION, <.>, %MKF_CORE_REVISION) + ENDIF + ENDIF + IFNDEF MKF_ITK_SUPPORT + xBVersion TEXTEQU @CATSTR (%MKF_CORE_MAJOR_VERSION, <.>, %MKF_CORE_MINOR_VERSION, <.>, %MKF_CORE_REVISION) + ENDIF + BIOSINFO_STRUC {\ + { 0, sizeof(BIOSINFO_STRUC), xHandle }, + 1, + 2, + MKF_BI_BIOS_START_ADDR, + 3, + BIOS_SIZE_IN_KB(MKF_BIOS_SIZE), + BIOS_CHAR(),BIOS_CHAR1(),EXT_CHAR(),EXT_CHAR2(), + MKF_CMA,MKF_CMI,MKF_ECMA,MKF_ECMI\ + } + SCAN_PUT_STR %MKF_BIOS_VENDOR + PUT_STR %xBVersion + SCAN_PUT_STR %TODAY + TERMINATOR + EXITM %xHandle +ENDM + +;---------------------------------------------------------------------------- +; Structure Type 1 : SYSTEM INFORMATION +;---------------------------------------------------------------------------- +CreateSysInfo macro xHandle:REQ + + LOCAL length, strnum, nMN, nPN, nVE, nSN, nSK, nFA + + xHandle = xHandle + 1 + length = sizeof SYSINFO_STRUC + strnum = 1 + + IFNDEF MKF_SYSTEM_MANUFACTURER + nMN = 0 + ELSE + nMN = strnum + strnum = strnum + 1 + ENDIF + + IFNDEF MKF_SYSTEM_PRODUCT_NAME + nPN = 0 + ELSE + nPN = strnum + strnum = strnum + 1 + ENDIF + + IFNDEF MKF_SYSTEM_VERSION + nVE = 0 + ELSE + nVE = strnum + strnum = strnum + 1 + ENDIF + + IFNDEF MKF_SYSTEM_SERIAL_NUMBER + nSN = 0 + ELSE + nSN = strnum + strnum = strnum + 1 + ENDIF + + IFNDEF MKF_SYSTEM_SKU_NUMBER + nSK = 0 + ELSE + nSK = strnum + strnum = strnum + 1 + ENDIF + + IFNDEF MKF_SYSTEM_FAMILY + nFA = 0 + ELSE + nFA = strnum + ENDIF + + SYSINFO_STRUC {\ + {1, length, xHandle}, + nMN, + nPN, + nVE, + nSN, + MKF_SMBIOS_UUID, + MKF_SYSTEM_WAKEUP_TYPE, + nSK, + nFA\ + } + IFDEF MKF_SYSTEM_MANUFACTURER + SCAN_PUT_STR %MKF_SYSTEM_MANUFACTURER + ENDIF + IFDEF MKF_SYSTEM_PRODUCT_NAME + SCAN_PUT_STR %MKF_SYSTEM_PRODUCT_NAME + ENDIF + IFDEF MKF_SYSTEM_VERSION + SCAN_PUT_STR %MKF_SYSTEM_VERSION + ENDIF + IFDEF MKF_SYSTEM_SERIAL_NUMBER + SCAN_PUT_STR %MKF_SYSTEM_SERIAL_NUMBER + ENDIF + IFDEF MKF_SYSTEM_SKU_NUMBER + SCAN_PUT_STR %MKF_SYSTEM_SKU_NUMBER + ENDIF + IFDEF MKF_SYSTEM_FAMILY + SCAN_PUT_STR %MKF_SYSTEM_FAMILY + ENDIF + TERMINATOR + EXITM %xHandle +ENDM + +;---------------------------------------------------------------------------- +; Structure Type 2 : BASEBOARD INFORMATION +;---------------------------------------------------------------------------- +CreateBaseBoardInfo macro xHandle:REQ + + LOCAL length, chndl, sMN, sPR, sVE, sSN, sAT, sLC, sTemp, vFF, vBT + LOCAL strnum, nBB, nMN, nPR, nVE, nSN, nAT, nLC + + chndl = xHandle + 1 + MKF_NUMBER_OF_BASEBOARDS + + IF MKF_BASE_BOARD_INFO + length = sizeof BASEBOARD_INFO_STRUC + + IF MKF_NUMBER_OF_BASEBOARDS EQ 1 + xHandle = xHandle + 1 + strnum = 1 + + IFNDEF MKF_BASE_BOARD_MANUFACTURER + nMN = 0 + ELSE + nMN = strnum + strnum = strnum + 1 + ENDIF + + IFNDEF MKF_BASE_BOARD_PRODUCT_NAME + nPR = 0 + ELSE + nPR = strnum + strnum = strnum + 1 + ENDIF + + IFNDEF MKF_BASE_BOARD_VERSION + nVE = 0 + ELSE + nVE = strnum + strnum = strnum + 1 + ENDIF + + IFNDEF MKF_BASE_BOARD_SERIAL_NUMBER + nSN = 0 + ELSE + nSN = strnum + strnum = strnum + 1 + ENDIF + + IFNDEF MKF_BB_ASSET_TAG + nAT = 0 + ELSE + nAT = strnum + strnum = strnum + 1 + ENDIF + + IFNDEF MKF_BB_LOC_IN_CHASSIS + nLC = 0 + ELSE + nLC = strnum + ENDIF + + BASEBOARD_INFO_STRUC {\ + {2, length, xHandle}, + nMN, + nPR, + nVE, + nSN, + nAT, + BASE_BOARD_FEATURE_FLAGS(), + nLC, + chndl, + MKF_BB_BOARD_TYPE, + 00h\ + } + IFDEF MKF_BASE_BOARD_MANUFACTURER + SCAN_PUT_STR %MKF_BASE_BOARD_MANUFACTURER + ENDIF + IFDEF MKF_BASE_BOARD_PRODUCT_NAME + SCAN_PUT_STR %MKF_BASE_BOARD_PRODUCT_NAME + ENDIF + IFDEF MKF_BASE_BOARD_VERSION + SCAN_PUT_STR %MKF_BASE_BOARD_VERSION + ENDIF + IFDEF MKF_BASE_BOARD_SERIAL_NUMBER + SCAN_PUT_STR %MKF_BASE_BOARD_SERIAL_NUMBER + ENDIF + IFDEF MKF_BB_ASSET_TAG + SCAN_PUT_STR %MKF_BB_ASSET_TAG + ENDIF + IFDEF MKF_BB_LOC_IN_CHASSIS + SCAN_PUT_STR %MKF_BB_LOC_IN_CHASSIS + ENDIF + TERMINATOR + ELSE + nBB = 1 + REPEAT MKF_NUMBER_OF_BASEBOARDS + xHandle = xHandle + 1 + strnum = 1 + + sTemp TEXTEQU @CATSTR(<BASEBOARD_FEATURE_FLAG_>, <%nBB>) + vFF = @CATSTR(%sTemp) + sTemp TEXTEQU @CATSTR(<BASEBOARD_TYPE_>, <%nBB>) + vBT = @CATSTR(%sTemp) + + sMN TEXTEQU @CATSTR(<BASEBOARD_MANUFACTURER_>, <%nBB>) +; sMN will be set to "BASEBOARD_MANUFACTURER_X" if string is not defined, +; therefore if we search the string for "BASEBOARD_MANUFACTURER_" and it +; returns a non-zero value, it means the string is not defined. + IF @INSTR(1, %sMN, <BASEBOARD_MANUFACTURER_>) NE 0 + nMN = 0 + ELSE + nMN = strnum + strnum = strnum + 1 + ENDIF + + sPR TEXTEQU @CATSTR(<BASEBOARD_PRODUCT_>, <%nBB>) + IF @INSTR(1, %sPR, <BASEBOARD_PRODUCT_>) NE 0 + nPR = 0 + ELSE + nPR = strnum + strnum = strnum + 1 + ENDIF + + sVE TEXTEQU @CATSTR(<BASEBOARD_VERSION_>, <%nBB>) + IF @INSTR(1, %sVE, <BASEBOARD_VERSION_>) NE 0 + nVE = 0 + ELSE + nVE = strnum + strnum = strnum + 1 + ENDIF + + sSN TEXTEQU @CATSTR(<BASEBOARD_SERIAL_NUMBER_>, <%nBB>) + IF @INSTR(1, %sSN, <BASEBOARD_SERIAL_NUMBER_>) NE 0 + nSN = 0 + ELSE + nSN = strnum + strnum = strnum + 1 + ENDIF + + sAT TEXTEQU @CATSTR(<BASEBOARD_ASSET_TAG_>, <%nBB>) + IF @INSTR(1, %sAT, <BASEBOARD_ASSET_TAG_>) NE 0 + nAT = 0 + ELSE + nAT = strnum + strnum = strnum + 1 + ENDIF + + sLC TEXTEQU @CATSTR(<BASEBOARD_LOCATION_>, <%nBB>) + IF @INSTR(1, %sLC, <BASEBOARD_LOCATION_>) NE 0 + nLC = 0 + ELSE + nLC = strnum + ENDIF + + BASEBOARD_INFO_STRUC {\ + {2, length, xHandle}, + nMN, + nPR, + nVE, + nSN, + nAT, + vFF, + nLC, + chndl, + vBT, + 00h\ + } + IF nMN NE 0 + SCAN_PUT_STR %sMN + ENDIF + IF nPR + SCAN_PUT_STR %sPR + ENDIF + IF nVE + SCAN_PUT_STR %sVE + ENDIF + IF nSN + SCAN_PUT_STR %sSN + ENDIF + IF nAT + SCAN_PUT_STR %sAT + ENDIF + IF nLC + SCAN_PUT_STR %sLC + ENDIF + nBB = nBB + 1 + TERMINATOR + ENDM + ENDIF ; MKF_NUMBER_OF_BASEBOARDS + ENDIF ; MKF_BASE_BOARD_INFO + EXITM %xHandle +ENDM + +;---------------------------------------------------------------------------- +; Structure Type 3 : SYSTEM ENCLOSURE OR CHASSIS +;---------------------------------------------------------------------------- +CreateSysChassisInfo macro xHandle:REQ + + LOCAL length, LockPresence, xSysHt, xNoPwrCords, xNoContEle, xContEleRcrdLen + LOCAL xCt, xCbs, xPss, xTs, xSs, xOem, xContElement + + LOCAL strnum, MFG, sMfg, vCl, VER, sVer, SN, sSn, ATN, sAtn, SKU, sSku, nSC, sTemp + + LockPresence = 0 + + IF MKF_SYS_CHASSIS_INFO + nSC = 1 + REPEAT MKF_NUMBER_OF_SYSTEM_CHASSIS + xHandle = xHandle + 1 + strnum = 1 + + sTemp TEXTEQU @CATSTR(<MKF_SYS_CHASSIS_MANUFACTURER_>, <%nSC>) + IF @INSTR(1, %sTemp, <MKF_SYS_CHASSIS_MANUFACTURER_>) NE 0 + MFG = 0 + ELSE + MFG = strnum + strnum = strnum + 1 + sMfg TEXTEQU @CATSTR(%sTemp) + ENDIF + + sTemp TEXTEQU @CATSTR(<MKF_SYS_CHASSIS_LOCK_>, <%nSC>) + vCl TEXTEQU @CATSTR(%sTemp) + + sTemp TEXTEQU @CATSTR(<MKF_SYS_CHASSIS_TYPE_>, <%nSC>) + xCt TEXTEQU @CATSTR(%sTemp) + xCt TEXTEQU xCt OR vCl + + sTemp TEXTEQU @CATSTR(<MKF_SYS_CHASSIS_VERSION_>, <%nSC>) + IF @INSTR(1, %sTemp, <MKF_SYS_CHASSIS_VERSION_>) NE 0 + VER = 0 + ELSE + VER = strnum + strnum = strnum + 1 + sVer TEXTEQU @CATSTR(%sTemp) + ENDIF + + sTemp TEXTEQU @CATSTR(<MKF_SYS_CHASSIS_SERIAL_NUM_>, <%nSC>) + IF @INSTR(1, %sTemp, <MKF_SYS_CHASSIS_SERIAL_NUM_>) NE 0 + SN = 0 + ELSE + SN = strnum + strnum = strnum + 1 + sSn TEXTEQU @CATSTR(%sTemp) + ENDIF + + sTemp TEXTEQU @CATSTR(<MKF_SYS_CHASSIS_ASSET_TAG_NUM_>, <%nSC>) + IF @INSTR(1, %sTemp, <MKF_SYS_CHASSIS_ASSET_TAG_NUM_>) NE 0 + ATN = 0 + ELSE + ATN = strnum + strnum = strnum + 1 + sAtn TEXTEQU @CATSTR(%sTemp) + ENDIF + + sTemp TEXTEQU @CATSTR(<MKF_SYS_CHASSIS_BOOT_STATE_>, <%nSC>) + xCbs TEXTEQU @CATSTR(%sTemp) + + sTemp TEXTEQU @CATSTR(<MKF_SYS_PWR_SUPPLY_STATE_>, <%nSC>) + xPss TEXTEQU @CATSTR(%sTemp) + + sTemp TEXTEQU @CATSTR(<MKF_SYS_THERMAL_STATE_>, <%nSC>) + xTs TEXTEQU @CATSTR(%sTemp) + + sTemp TEXTEQU @CATSTR(<MKF_SYS_SECURE_STATE_>, <%nSC>) + xSs TEXTEQU @CATSTR(%sTemp) + + sTemp TEXTEQU @CATSTR(<MKF_SYS_OEM_>, <%nSC>) + xOem TEXTEQU @CATSTR(%sTemp) + + sTemp TEXTEQU @CATSTR(<MKF_SYS_HEIGHT_>, <%nSC>) + xSysHt TEXTEQU @CATSTR(%sTemp) + + sTemp TEXTEQU @CATSTR(<MKF_NO_PWR_CORDS_>, <%nSC>) + xNoPwrCords TEXTEQU @CATSTR(%sTemp) + + sTemp TEXTEQU @CATSTR(<MKF_ELEMENT_COUNT_>, <%nSC>) + xNoContEle = @CATSTR(%sTemp) + + sTemp TEXTEQU @CATSTR(<MKF_ELEMENT_LEN_>, <%nSC>) + xContEleRcrdLen = @CATSTR(%sTemp) + + xContElement TEXTEQU @CATSTR(<MKF_CONT_ELEMENT_>, <%nSC>) + xContElement TEXTEQU @CATSTR(%xContElement) + + sTemp TEXTEQU @CATSTR(<MKF_SYS_CHASSIS_SKU_NUMBER_>, <%nSC>) + IF @INSTR(1, %sTemp, <MKF_SYS_CHASSIS_SKU_NUMBER_>) NE 0 + SKU = 0 + ELSE + SKU = strnum + sSku TEXTEQU @CATSTR(%sTemp) + ENDIF + + IF (xNoContEle * xContEleRcrdLen) EQ 0 + length = sizeof SYSENC_STRUC + SYSENC_STRUC {\ + {3, length, xHandle}, + MFG,xCt,VER,SN,ATN, + xCbs,xPss,xTs,xSs,xOem, + xSysHt,xNoPwrCords, + xNoContEle, + xContEleRcrdLen, + SKU\ + } + ELSEIF nSC EQ 1 + length = sizeof SYSENC_STRUC_1 + SYSENC_STRUC_1 {\ + {3, length, xHandle}, + MFG,xCt,VER,SN,ATN, + xCbs,xPss,xTs,xSs,xOem, + xSysHt,xNoPwrCords, + xNoContEle, + xContEleRcrdLen, + xContElement, + SKU\ + } + ELSEIF nSC EQ 2 + length = sizeof SYSENC_STRUC_2 + SYSENC_STRUC_2 {\ + {3, length, xHandle}, + MFG,xCt,VER,SN,ATN, + xCbs,xPss,xTs,xSs,xOem, + xSysHt,xNoPwrCords, + xNoContEle, + xContEleRcrdLen, + xContElement, + SKU\ + } + ELSEIF nSC EQ 3 + length = sizeof SYSENC_STRUC_3 + SYSENC_STRUC_3 {\ + {3, length, xHandle}, + MFG,xCt,VER,SN,ATN, + xCbs,xPss,xTs,xSs,xOem, + xSysHt,xNoPwrCords, + xNoContEle, + xContEleRcrdLen, + xContElement, + SKU\ + } + ELSEIF nSC EQ 4 + length = sizeof SYSENC_STRUC_4 + SYSENC_STRUC_4 {\ + {3, length, xHandle}, + MFG,xCt,VER,SN,ATN, + xCbs,xPss,xTs,xSs,xOem, + xSysHt,xNoPwrCords, + xNoContEle, + xContEleRcrdLen, + xContElement, + SKU\ + } + ELSEIF nSC EQ 5 + length = sizeof SYSENC_STRUC_5 + SYSENC_STRUC_5 {\ + {3, length, xHandle}, + MFG,xCt,VER,SN,ATN, + xCbs,xPss,xTs,xSs,xOem, + xSysHt,xNoPwrCords, + xNoContEle, + xContEleRcrdLen, + xContElement, + SKU\ + } + ENDIF + + IF MFG NE 0 + SCAN_PUT_STR %sMfg + ENDIF + IF VER NE 0 + SCAN_PUT_STR %sVer + ENDIF + IF SN NE 0 + SCAN_PUT_STR %sSn + ENDIF + IF ATN NE 0 + SCAN_PUT_STR %sAtn + ENDIF + IF SKU NE 0 + SCAN_PUT_STR %sSku + ENDIF + TERMINATOR + nSC = nSC + 1 + ENDM + ENDIF ; MKF_SYS_CHASSIS_INFO + EXITM %xHandle +ENDM + +;---------------------------------------------------------------------------- +; Structure Type 4 : PROCESSOR INFORMATION +;---------------------------------------------------------------------------- +CreateProcessorInfo macro xHandle:REQ + + LOCAL length, xSi, xSv, rC, xN, xPT, xPF, xPS, xPA, xPP, xPF2 + LOCAL strnum, nSN, nAT, nPN + + xL1 = 0FFFFh + xL2 = 0FFFFh + xL3 = 0FFFFh + xVt = 0 + xMs = 0 + xUg = 0 + length = sizeof PROC_STRUC + + IF MKF_PROCESSOR_INFO + rC = 1 + REPEAT MKF_NO_OF_PROCESSOR_SOCKETS + xHandle = xHandle + 1 + + IF MKF_NUMBER_OF_PROC_CACHE GT 0 + xL1 = xHandle + 1 + ENDIF + IF MKF_NUMBER_OF_PROC_CACHE GT 1 + xL2 = xL1 + 1 + ENDIF + IF MKF_NUMBER_OF_PROC_CACHE GT 2 + xL3 = xL2 + 1 + ENDIF + + xSd TEXTEQU @CATSTR(<PROC_SOC_DESIG_>, <%rC>) + xPT TEXTEQU @CATSTR(<PROC_TYPE_>, <%rC>) + xPF TEXTEQU @CATSTR(<PROC_FAMILY_>, <%rC>) + xSv TEXTEQU @CATSTR(<PROC_VOLTAGE_>, <%rC>) + xSs TEXTEQU @CATSTR(<PROC_MAX_SPEED_>, <%rC>) + xSu TEXTEQU @CATSTR(<PROC_UPGRADE_>, <%rC>) + xPS TEXTEQU @CATSTR(<PROC_SERIAL_NO_>, <%rC>) + xPA TEXTEQU @CATSTR(<PROC_ASSET_TAG_>, <%rC>) + xPP TEXTEQU @CATSTR(<PROC_PART_NO_>, <%rC>) + xPF2 TEXTEQU @CATSTR(<PROC_FAMILY_2_>, <%rC>) + + strnum = 4 + + nSN = @SIZESTR(%xPS) + IF nSN NE 0 + nSN = strnum + strnum = strnum + 1 + ENDIF + nAT = @SIZESTR(%xPA) + IF nAT NE 0 + nAT = strnum + strnum = strnum + 1 + ENDIF + nPN = @SIZESTR(%xPP) + IF nPN NE 0 + nPN = strnum + ENDIF + + PROC_STRUC {\ + {4,length,xHandle}, + 01h,xPT,xPF, + 02h,0, + 03h, + @PROC_VOLT(%xSv), + 0, + xSs, + 0,41h, + xSu, + xL1,xL2,xL3, + nSN,nAT,nPN, + 1,1,1, + 04h,xPF2} + SCAN_PUT_STR %xSd + BYTE " ",0 + BYTE " ",0 + IF nSN NE 0 + SCAN_PUT_STR %xPS + ENDIF + IF nAT NE 0 + SCAN_PUT_STR %xPA + ENDIF + IF nPN NE 0 + SCAN_PUT_STR %xPP + ENDIF + TERMINATOR + rC = rC+1 + xHandle = CreateProcCacheInfo(xHandle) + ENDM + ENDIF + EXITM %xHandle +ENDM + +;---------------------------------------------------------------------------- +; Structure Type 5 : MEMORY CONTROLLER INFORMATION +;---------------------------------------------------------------------------- +CreateMemCtrlInfo macro xHandle:REQ, hStart:REQ + + LOCAL length, hMemMod, xEDD + + IF MKF_MEM_CTRL_INFO + xHandle = xHandle + 1 + hMemMod = hStart + length = (15 + (2 * MKF_A1_MEMORY_SOCKETS) + 1) + + xEDD = MKF_MEM_CTRL_EDD + xMs = MKF_MAX_MEM_MODULE_SIZE + MEMCTRL_STRUC {\ + {5, length, xHandle}, + xEDD, + MEM_CTRL_ECC(), + MKF_MEM_CTRL_INTRLV, + MKF_MEM_CTRL_INTRLV, + MEM_SIZE_IN_MB(xMs), + MEM_CTRL_SPEED(), + SUPPORTED_MEM_TYPE(), + MEM_MOD_VOLTAGE(), + MKF_A1_MEMORY_SOCKETS\ + } + REPEAT MKF_A1_MEMORY_SOCKETS + WORD hMemMod + hMemMod = hMemMod + 1 + ENDM + BYTE MEM_CTRL_ECC() + TERMINATOR ; Memory Controller structure NOT Terminated by NULL + TERMINATOR ; Memory Controller structure NOT Terminated by NULL + ENDIF + EXITM %xHandle +ENDM + +;---------------------------------------------------------------------------- +; Structure Type 6 : MEMORY MODULE INFORMATION +;---------------------------------------------------------------------------- +CreateMemModuleInfo macro xHandle:REQ + + LOCAL length, rC, xS, dS, xN, xL, xMs + + length = 0CH +IF MKF_MEM_MODULE_INFO + rC = 1 + REPEAT MKF_A1_MEMORY_SOCKETS + xHandle = xHandle + 1 + + DMIHDR_STRUC {6, length, xHandle} + BYTE 1 + + xS TEXTEQU @CATSTR(<MEMORY_INFO_>, <%rC>) + xN = @INSTR(1, %xS, <,>) + dS TEXTEQU @SUBSTR(%xS, 1, (xN-1)) + xL = @SIZESTR(%xS) + xL = xL -xN + xS TEXTEQU @SUBSTR(%xS, (xN+1), xL) + xMs = @MEMORY_INFO(%xS) + xS TEXTEQU @CATSTR(<MEMORY_TYPE_>, <%rC>) + @MEMORY_TYPE %xS + WORD xMs + xS TEXTEQU @CATSTR(<MEMORY_ERR_STATUS_>, <%rC>) + @MEMORY_ERR_STATUS %xS + SCAN_PUT_STR %dS + TERMINATOR + rC = rC+1 + ENDM +ENDIF + EXITM %xHandle +ENDM + +;---------------------------------------------------------------------------- +; Structure Type 7: CACHE INFORMATION (INTERNAL) +;---------------------------------------------------------------------------- +CreateProcCacheInfo macro xHandle:REQ + + LOCAL length, rC, xS, dS, xN, xL + + length = sizeof CACHE_INFO_STRUC + + rC = 1 + REPEAT MKF_NUMBER_OF_PROC_CACHE + xHandle = xHandle + 1 + + DMIHDR_STRUC {7, length, xHandle} + BYTE 1 + xS TEXTEQU @CATSTR(<PROC_CACHE_CFG_L>, <%rC>) + xN = @INSTR(1, %xS, <,>) + dS TEXTEQU @SUBSTR(%xS, 1, (xN-1)) + xL = @SIZESTR(%xS) + xL = xL -xN + xS TEXTEQU @SUBSTR(%xS, (xN+1), xL) + @CACHE_CFG %xS + xS TEXTEQU @CATSTR(<PROC_CACHE_INFO_L>, <%rC>) + @CACHE_INFO %xS + xS TEXTEQU @CATSTR(<PROC_CACHE_CHAR_L>, <%rC>) + @CACHE_CHAR %xS + SCAN_PUT_STR %dS + TERMINATOR + rC = rC+1 + ENDM + EXITM %xHandle +ENDM + +;---------------------------------------------------------------------------- +; Structure Type 7: CACHE INFORMATION (EXTERNAL) +;---------------------------------------------------------------------------- +CreateExternalCacheInfo macro xHandle:REQ + + LOCAL length, rC, xS, dS, xN, xL + +IF MKF_EXTERNAL_CACHE_INFORMATION + xHandle = xHandle + 1 + length = sizeof CACHE_INFO_STRUC + + DMIHDR_STRUC {7, length, xHandle} + BYTE 1 + xS TEXTEQU <EXTERNAL_CACHE_CFG> + xN = @INSTR(1, %xS, <,>) + dS TEXTEQU @SUBSTR(%xS, 1, (xN-1)) + xL = @SIZESTR(%xS) + xL = xL -xN + xS TEXTEQU @SUBSTR(%xS, (xN+1), xL) + @EXT_CACHE_CFG %xS + xS TEXTEQU <EXTERNAL_CACHE_INFO> + @CACHE_INFO %xS + xS TEXTEQU <EXTERNAL_CACHE_CHAR> + @CACHE_CHAR %xS + SCAN_PUT_STR %dS + TERMINATOR +ENDIF + EXITM %xHandle +ENDM + +;---------------------------------------------------------------------------- +; Structure Type 8 : PORT CONNECTOR INFORMATION +;---------------------------------------------------------------------------- +CreatePortConnectorInfo macro xHandle:REQ + + LOCAL length, iS, eS, iP, eP, pT, xC, xN, xS, rC, xLabel + + length = sizeof PORT_CONNECTOR_STRUC +IF MKF_PORT_CONNECTOR_INFO + IF MKF_NUMBER_OF_EXT_PORT_CONNECTORS GT 0 + rC = 1 + REPEAT MKF_NUMBER_OF_EXT_PORT_CONNECTORS + xHandle = xHandle + 1 + xN = 1 + + DMIHDR_STRUC {8, length, xHandle} + xS TEXTEQU @CATSTR(<EXT_CONNECTOR_>, <%rC>) + xC = @INSTR(<%xN>, %xS, <,>) + iS TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN)) + xN = xC+1 + xC = @INSTR(<%xN>, %xS, <,>) + iP TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN)) + xN = xC+1 + xC = @INSTR(<%xN>, %xS, <,>) + eS TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN)) + xN = xC+1 + xC = @INSTR(<%xN>, %xS, <,>) + eP TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN)) + xN = @SIZESTR(%xS) + xN = xN-xC + xC = xC+1 + pT TEXTEQU @SUBSTR(%xS, <%xC>, xN) + DEFINE_EXT_CONNECTOR %iS, %iP, %eS, %eP, %pT + TERMINATOR + rC = rC+1 + ENDM + ENDIF + + IF MKF_NUMBER_OF_INT_PORT_CONNECTORS GT 0 + rC = 1 + REPEAT MKF_NUMBER_OF_INT_PORT_CONNECTORS + xHandle = xHandle + 1 + xN = 1 + + DMIHDR_STRUC {8, length, xHandle} + xS TEXTEQU @CATSTR(<INT_CONNECTOR_>, <%rC>) + xC = @INSTR(<%xN>, %xS, <,>) + iS TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN)) + xN = xC+1 + xC = @INSTR(<%xN>, %xS, <,>) + iP TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN)) + xN = @SIZESTR(%xS) + xN = xN-xC + xC = xC+1 + pT TEXTEQU @SUBSTR(%xS, <%xC>, xN) + DEFINE_INT_CONNECTOR %iS, %iP, %pT + TERMINATOR + rC = rC+1 + ENDM + ENDIF +ENDIF + EXITM %xHandle +ENDM + +;---------------------------------------------------------------------------- +; Structure Type 9 : SYSTEM SLOT INFORMATION +;---------------------------------------------------------------------------- +CreateSystemSlotInfo macro xHandle:REQ + + LOCAL length, xS1, xS2, rC, xH, sD, sT, sW, cU, sL, sI, sc1, sc2, xC, xN, xS, xSG, xB, xDF + + length = sizeof SYSTEM_SLOT_INFO_STRUC + +IF MKF_SYSTEM_SLOT_INFO + IF MKF_NUMBER_OF_SYSTEM_SLOTS GT 0 + rC = 1 + REPEAT MKF_NUMBER_OF_SYSTEM_SLOTS + xHandle = xHandle + 1 + xN = 1 + + xS1 TEXTEQU @CATSTR(<SEGGRP_BUS_DEV_FUNC_>, <%rC>) + xS2 TEXTEQU @CATSTR(<SYSTEM_SLOT_CHAR_>, <%rC>) + xS TEXTEQU @CATSTR(<SYSTEM_SLOT_INFO_>, <%rC>) + xC = @INSTR(<%xN>, %xS, <,>) + sD TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN)) + xN = xC+1 + xC = @INSTR(<%xN>, %xS, <,>) + sT TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN)) + xN = xC+1 + xC = @INSTR(<%xN>, %xS, <,>) + sW TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN)) + xN = xC+1 + xC = @INSTR(<%xN>, %xS, <,>) + cU TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN)) + xN = xC+1 + xC = @INSTR(<%xN>, %xS, <,>) + sL TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN)) + xN = @SIZESTR(%xS) + xN = xN-xC + xC = xC+1 + sI TEXTEQU @SUBSTR(%xS, <%xC>, xN) + xS TEXTEQU @CATSTR(<SEGGRP_BUS_DEV_FUNC_>, <%rC>) + xN = 1 + xC = @INSTR(<%xN>, %xS, <,>) + xSG TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN)) + xN = xC+1 + xC = @INSTR(<%xN>, %xS, <,>) + xB TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN)) + xC = xC+1 + xDF TEXTEQU @SUBSTR(%xS, <%xC>) + + SYS_SLOT_INFO 9, length, xHandle, sD, sT, sW, cU, sL, sI, xS2, xSG, xB, xDF + TERMINATOR + rC = rC+1 + ENDM + ENDIF +ENDIF + EXITM %xHandle +ENDM + +;---------------------------------------------------------------------------- +; Structure Type 10 : ON BOARD DEVICES INFORMATION +;---------------------------------------------------------------------------- +CreateOnboardDeviceInfo macro xHandle:REQ + + LOCAL length, xS, xE, xT, xN, rC, xD, xC + +IF MKF_ONBOARD_DEVICE_INFO + xHandle = xHandle + 1 + length = 4 + (2 * MKF_NUMBER_OF_ONBOARD_DEVICES) + rC = 1 + + DMIHDR_STRUC {10, length, xHandle} + REPEAT MKF_NUMBER_OF_ONBOARD_DEVICES + xN = 1 + xS TEXTEQU @CATSTR(<ONBOARD_DEVICE_>, <%rC>) + xC = @INSTR(<%xN>, %xS, <,>) + xE TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN)) + xN = xC+1 + xC = @INSTR(<%xN>, %xS, <,>) + xT TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN)) + ONBOARD_DEV_SUB_STRUC {((xE shl 7) OR xT), rC} + rC = rC + 1 + ENDM + rC = 1 + REPEAT MKF_NUMBER_OF_ONBOARD_DEVICES + xN = 1 + xS TEXTEQU @CATSTR(<ONBOARD_DEVICE_>, <%rC>) + xC = @INSTR(<%xN>, %xS, <,>) + xN = xC+1 + xC = @INSTR(<%xN>, %xS, <,>) + xN = @SIZESTR(%xS) + xN = xN-xC + xC = xC+1 + xD TEXTEQU @SUBSTR(%xS, <%xC>, <%xN>) + SCAN_PUT_STR %xD + rC = rC + 1 + ENDM + TERMINATOR +ENDIF + EXITM %xHandle +ENDM + +;---------------------------------------------------------------------------- +; Structure Type 11 : OEM STRINGS INFORMATION +;---------------------------------------------------------------------------- +CreateOemStringInfo macro xHandle:REQ + + LOCAL xS, rC + +IF MKF_OEM_STRING_INFO + xHandle = xHandle + 1 + + OEM_STRING_STRUC {\ + {11, 5, xHandle}, + MKF_NUMBER_OF_OEM_STRINGS\ + } + rC = 1 + REPEAT MKF_NUMBER_OF_OEM_STRINGS + xS TEXTEQU @CATSTR(<OEM_STRING_>, <%rC>) + SCAN_PUT_STR %xS + rC = rC+1 + ENDM + TERMINATOR +ENDIF + EXITM %xHandle +ENDM + +;---------------------------------------------------------------------------- +; Structure Type 12 : SYSTEM CONFIGURATION STRINGS INFORMATION +;---------------------------------------------------------------------------- +CreateSystemConfigOptionInfo macro xHandle:REQ + + LOCAL xS, rC + +IF MKF_SYSTEM_CONFIG_OPTION_INFO + xHandle = xHandle + 1 + + SYSTEM_CONFIG_OPT_STRUC {\ + {12, 5, xHandle}, + MKF_NUMBER_OF_SYSTEM_CONFIG_STRINGS\ + } + rC = 1 + REPEAT MKF_NUMBER_OF_SYSTEM_CONFIG_STRINGS + xS TEXTEQU @CATSTR(<SYSTEM_CONFIG_STRING_>, <%rC>) + SCAN_PUT_STR %xS + rC = rC+1 + ENDM + TERMINATOR +ENDIF + EXITM %xHandle +ENDM + +;---------------------------------------------------------------------------- +; Structure Type 13: BIOS LANGUAGE INFORMATION +;---------------------------------------------------------------------------- +CreateBiosLanguageInfo macro xHandle:REQ + + LOCAL xS, rC + +IF MKF_BIOS_LANGUAGE_INFO + xHandle = xHandle + 1 + + BIOS_LANGUAGE_INFO_STRUC {\ + {13, 16h, xHandle}, + NUMBER_OF_LANGUAGE_STRINGS, + BIOS_LANGUAGE_FORMAT, + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + CURRENT_LANGUAGE\ + } + rC = 1 + REPEAT NUMBER_OF_LANGUAGE_STRINGS + xS TEXTEQU @CATSTR(<LANGUAGE_STRING_>, <%rC>) + SCAN_PUT_STR %xS + rC = rC+1 + ENDM + TERMINATOR +ENDIF + EXITM %xHandle +ENDM + +;---------------------------------------------------------------------------- +; Structure Type 14: GROUP ASSOCIATION INFORMATION +;---------------------------------------------------------------------------- +; NOT IMPLEMENTED NOW + +;---------------------------------------------------------------------------- +; Structure Type 15: EVENT LOG INFORMATION +;---------------------------------------------------------------------------- +CreateEventLogInfo MACRO xHandle:REQ + + LOCAL length + + length = 14h +IF MKF_EVENT_LOG_INFO + xHandle = xHandle + 1 + length = (17h + (NO_OF_SUPPORTED_EVENTS * LENGTH_OF_EACH_LOG_TYPE_DESC)) + + EVENTLOG_INFO_STRUC {\ + {15, length, xHandle}, + 0004h, + 0000h, + 0002h, + 02h, + 00h, + 00000000h, + 046c046ah, + 00h, + NO_OF_SUPPORTED_EVENTS, + LENGTH_OF_EACH_LOG_TYPE_DESC\ + } + BYTE (NO_OF_SUPPORTED_EVENTS*LENGTH_OF_EACH_LOG_TYPE_DESC) dup(0FFh) + TERMINATOR + TERMINATOR +ENDIF + EXITM %xHandle +ENDM + +;---------------------------------------------------------------------------- +; Structure Type 16: PHYSICAL MEMORY ARRAY INFORMATION +;---------------------------------------------------------------------------- +CreateMemoryInfo MACRO xHandle:REQ + + LOCAL length, HArrayError, HArray, HMdevice, HMMAddress + LOCAL AC, ILoopCount, xN, xNN, xSi, xSv, xTv, xoN + LOCAL xNmd, xCt, xMl, xDc, ICurDev, xDn, xDh, xMs, xA, xDw, xFf, xMt, xTd, xAt + + length = sizeof PHY_MEM_ARRAY_STRUC + AC = 1 + REPEAT MKF_NO_OF_PHYSICAL_MEMORY_ARRAY + xHandle = xHandle + 1 + HArray = xHandle + +IF MKF_MEMORY_ERROR_INFO + HArrayError = xHandle + 1 +ELSE + HArrayError = 0FFFEh +ENDIF + + xA TEXTEQU @CATSTR(<MKF_A>, <%AC>) + xMs = @CATSTR(%xA, <_MEMORY_SOCKETS>) + + PHY_MEM_ARRAY_STRUC {\ + {16, length, xHandle}, + @CATSTR(<ARRAY_LOC_>,<%AC>), + @CATSTR(<ARRAY_USE_>,<%AC>), + @CATSTR(<ARRAY_ERROR_COR_>,<%AC>), + @CATSTR(<MAX_MEM_CAP_>,<%AC>), + HArrayError, + xMs, + @CATSTR(<EXT_MAX_MEM_CAP_>,<%AC>)\ + } + TERMINATOR + TERMINATOR + +;---------------------------------------------------------------------------- +; Structure Type 18: MEMORY ERROR INFORMATION +;---------------------------------------------------------------------------- +IF MKF_MEMORY_ERROR_INFO + length = sizeof MEMORY_ARRAY_ERR_STRUC + xHandle = xHandle + 1 + MEMORY_ARRAY_ERR_STRUC {\ + {18, length, xHandle}, + MKF_MEMORY_ERROR_TYPE, + MKF_ERROR_GRANULARITY, + MKF_ERROR_OPERATION, + MKF_VENDOR_SYNDROME, + MKF_MEMORY_ARRAY_ERROR_ADDRESS, + MKF_DEVICE_ERROR_ADDRESS, + MKF_ERROR_RESOLUTION\ + } + TERMINATOR + TERMINATOR +ENDIF + +;---------------------------------------------------------------------------- +; Structure Type 19: MEMORY ARRAY MAPPED ADDRESS INFORMATION +;---------------------------------------------------------------------------- + length = sizeof MEMORY_ARRAY_MAPPED_ADDRESS_STRUC + xHandle = xHandle + 1 + HMMAddress = xHandle + MEMORY_ARRAY_MAPPED_ADDRESS_STRUC{\ + {19, length, xHandle}, + MKF_ARRAY_MAPPED_STARTING_ADDRESS, + MKF_ARRAY_MAPPED_ENDING_ADDRESS, + HArray, + MKF_PARTITION_WIDTH, + 0, + 0\ + } + TERMINATOR + TERMINATOR + +;---------------------------------------------------------------------------- +; Structure Type 17: MEMORY DEVICE INFORMATION +;---------------------------------------------------------------------------- + ILoopCount = 1 + xA TEXTEQU @CATSTR(<A>, <%AC>) + + REPEAT xMs + length = sizeof MEMORY_DEVICE_STRUC + xSv TEXTEQU @CATSTR(%xA, <_DEVICE_>, <%ILoopCount>) + xDw = @CATSTR(%xA, <_DATAWIDTH>) + xFf = @CATSTR(%xA, <_FORMFACTOR>) + xMt = @CATSTR(%xA, <_MEMORYTYPE>) + xTd = @CATSTR(%xA, <_TYPEDETAIL>) + xAt = @CATSTR(%xA, <_ATTRIBUTES>) + xHandle = xHandle + 1 + HMdevice = xHandle + +IF MKF_MEMORY_ERROR_INFO + HArrayError = xHandle + 1 +ELSE + HArrayError = 0FFFEh +ENDIF + + MEMORY_DEVICE_STRUC {\ + {17, length, xHandle}, + HArray, + HArrayError, + 0ffffh, + xDw, + 0, + xFf, + 0, + 01h, + 02h, + xMt, + xTd, + 0, + 03h, + 04h, + 05h, + 06h, + xAt, + 0, + 0, + 0, + 0, + 0\ + } + xoN = 1 + xN = @INSTR(xoN, %xSv, <,>) + xTv TEXTEQU @SUBSTR(%xSv, xoN, (xN-xoN)) + SCAN_PUT_STR %xTv + xoN = xN + 1 + xN = @INSTR(xoN, %xSv, <,>) + xTv TEXTEQU @SUBSTR(%xSv, xoN, (xN-xoN)) + SCAN_PUT_STR %xTv + xoN = xN + 1 + xN = @INSTR(xoN, %xSv, <,>) + xTv TEXTEQU @SUBSTR(%xSv, xoN, (xN-xoN)) + SCAN_PUT_STR %xTv + xoN = xN + 1 + xN = @INSTR(xoN, %xSv, <,>) + xTv TEXTEQU @SUBSTR(%xSv, xoN, (xN-xoN)) + SCAN_PUT_STR %xTv + xoN = xN + 1 + xN = @INSTR(xoN, %xSv, <,>) + xTv TEXTEQU @SUBSTR(%xSv, xoN, (xN-xoN)) + SCAN_PUT_STR %xTv + xoN = xN + 1 + xTv TEXTEQU @SUBSTR(%xSv, xoN) + SCAN_PUT_STR %xTv + xoN = xN + 1 + TERMINATOR + +;---------------------------------------------------------------------------- +; Structure Type 18: MEMORY ERROR INFORMATION +;---------------------------------------------------------------------------- +IF MKF_MEMORY_ERROR_INFO + length = sizeof MEMORY_ARRAY_ERR_STRUC + xHandle = xHandle + 1 + MEMORY_ARRAY_ERR_STRUC {\ + {18, length, xHandle}, + MKF_MEMORY_ERROR_TYPE, + MKF_ERROR_GRANULARITY, + MKF_ERROR_OPERATION, + MKF_VENDOR_SYNDROME, + MKF_MEMORY_ARRAY_ERROR_ADDRESS, + MKF_DEVICE_ERROR_ADDRESS, + MKF_ERROR_RESOLUTION\ + } + TERMINATOR + TERMINATOR +ENDIF + +;---------------------------------------------------------------------------- +; Structure Type 20: MEMORY DEVICE MAPPED ADDRESS INFORMATION +;---------------------------------------------------------------------------- +IF MKF_MEMORY_DEVICE_INFO + length = sizeof MEMORY_DEVICE_MAPPED_ADDRESS_STRUC + xHandle = xHandle + 1 + MEMORY_DEVICE_MAPPED_ADDRESS_STRUC {\ + {20, length, xHandle}, + MKF_MEMORY_DEVICE_STARTING_ADDRESS, + MKF_MEMORY_DEVICE_ENDING_ADDRESS, + HMdevice, + HMMAddress, + 01h, + 00h, + MKF_INTERLEAVE_DATA_DEPTH, + 0, + 0\ + } + TERMINATOR + TERMINATOR +ENDIF + ILoopCount = ILoopCount + 1 + ENDM ; xMs + AC = AC + 1 +ENDM ; MKF_NO_OF_PHYSICAL_MEMORY_ARRAY + EXITM %xHandle +ENDM + +;---------------------------------------------------------------------------- +; Structure Type 37: MEMORY CHANNEL INFORMATION STRUCTURE +;---------------------------------------------------------------------------- +CreateMemoryChannelInfo macro xHandle:REQ + + LOCAL ILoopCount, xNmd, xCt, xMl, sLen + +IF MKF_MEMORY_CHANNEL_INFO + ILoopCount = 1 + REPEAT MKF_NUMBER_OF_MEMORY_CHANNELS + xHandle = xHandle + 1 + + xNmd = @CATSTR (<NUMBER_OF_MEMORY_DEVICES_IN_CHANNEL_>, <%ILoopCount>) + xCt = @CATSTR (<CHANNEL_>, <%ILoopCount>, <_TYPE>) + xMl = @CATSTR (<MAX_CHANNEL_>, <%ILoopCount>, <_LOAD>) + sLen = 7 + 3 * xNmd + MEMORY_CHANNEL_STRUC {\ + {37, sLen, xHandle}, + xCt, + xMl, + xNmd\ + } + + REPEAT xNmd + db 1 + dw 0 + ENDM ; xNmd + + TERMINATOR + TERMINATOR + ILoopCount = ILoopCount + 1 + ENDM ; MKF_NUMBER_OF_MEMORY_CHANNELS +ENDIF + EXITM %xHandle +ENDM + +;---------------------------------------------------------------------------- +; Structure Type 16: SYSTEM FLASH MEMORY ARRAY INFORMATION +;---------------------------------------------------------------------------- +CreateFlashMemoryInfo MACRO xHandle:REQ + +LOCAL FMArray,FMdevice,FMMAddress + +IF MKF_FLASH_MEMORY_ARRAY_INFO +xHandle = xHandle + 1 +FMArray = xHandle +PHY_MEM_ARRAY_STRUC {\ +{16, sizeof(PHY_MEM_ARRAY_STRUC), xHandle}, +03h, +05h, +03h, +(MKF_BIOS_SIZE/400h), +0FFFEh, +01h, +00h\ +} +TERMINATOR +TERMINATOR + +;---------------------------------------------------------------------------- +; Structure Type 19: MEMORY ARRAY MAPPED ADDRESS INFORMATION +;---------------------------------------------------------------------------- +xHandle = xHandle + 1 +FMMAddress = xHandle +MEMORY_ARRAY_MAPPED_ADDRESS_STRUC{\ +{19, sizeof(MEMORY_ARRAY_MAPPED_ADDRESS_STRUC), xHandle}, +(0FFFFFFFFh - MKF_BIOS_SIZE + 1) SHR 10, +0FFFFFFFFh SHR 10, +FMArray, +01h, 0, 0\ +} +TERMINATOR +TERMINATOR + +;---------------------------------------------------------------------------- +; Structure Type 17: MEMORY DEVICE INFORMATION +;---------------------------------------------------------------------------- +xHandle = xHandle + 1 +FMdevice = xHandle +MEMORY_DEVICE_STRUC {\ +{17, sizeof(MEMORY_DEVICE_STRUC), xHandle}, +FMArray, +0FFFEh, +08h, +08h, +(MKF_BIOS_SIZE/400h) OR 8000h, +01h, +00h, +01h, +02h, +09h, +1000h, +00h, +03h, +04h, +05h, +06h, +00h, +00h, +00h, +00h, +00h, +00h\ +} +BYTE 20h, 0 +BYTE 20h, 0 +BYTE 20h, 0 +BYTE 20h, 0 +BYTE 20h, 0 +BYTE 20h, 0 +TERMINATOR + +;---------------------------------------------------------------------------- +; Structure Type 20: MEMORY DEVICE MAPPED ADDRESS INFORMATION +;---------------------------------------------------------------------------- +xHandle = xHandle + 1 +MEMORY_DEVICE_MAPPED_ADDRESS_STRUC {\ +{20, sizeof(MEMORY_DEVICE_MAPPED_ADDRESS_STRUC), xHandle}, +(0FFFFFFFFh - MKF_BIOS_SIZE + 1) SHR 10, +0FFFFFC00h SHR 10, +FMdevice, +FMMAddress, +01h, +00h, +00h, +00h, +00h\ +} +TERMINATOR +TERMINATOR +ENDIF ; MKF_FLASH_MEMORY_ARRAY_INFO +EXITM %xHandle +ENDM + +;---------------------------------------------------------------------------- +; Structure Type 21: BUILT-IN POINTING DEVICE INFORMATION +;---------------------------------------------------------------------------- +CreateBuiltinPointingDeviceInfo macro xHandle:REQ + + LOCAL PointDevCntr + +IF MKF_BUILTIN_POINTING_DEVICE_INFO + PointDevCntr = 1 + + REPEAT MKF_NO_OF_POINTING_DEVICE + xHandle = xHandle + 1 + + BUILTIN_POINT_DEV_STRUC {\ + {21, 07h, xHandle}, + @CATSTR(<POINTING_DEVICE_TYPE_>,<%PointDevCntr>), + @CATSTR(<POINTING_DEVICE_INTERFACE_>,<%PointDevCntr>), + @CATSTR(<POINTING_DEVICE_NUM_BUTTONS_>,<%PointDevCntr>)\ + } + TERMINATOR + TERMINATOR + PointDevCntr = PointDevCntr + 1 + ENDM ; MKF_NO_OF_POINTING_DEVICE +ENDIF ; MKF_BUILTIN_POINTING_DEVICE_INFO + EXITM %xHandle +ENDM + +;---------------------------------------------------------------------------- +; Structure Type 22: PORTABLE BATTERY INFORMATION +;---------------------------------------------------------------------------- +CreatePortableBatteryInfo macro xHandle:REQ + + LOCAL BC, xDCh, xDC, xDV, xME, xSSN, xSMD, xDCM, xOS + +IF MKF_PORTABLE_BATTERY_INFO + + BC = 1 + + REPEAT MKF_NO_OF_PORTABLE_BATTERY + xHandle = xHandle + 1 + + xDCh = @CATSTR(<DEVICE_CHEMISTRY_>,<%BC>) + xDC = @CATSTR(<DESIGN_CAPACITY_>,<%BC>) + xDV = @CATSTR(<DESIGN_VOLTAGE_>,<%BC>) + xME = @CATSTR(<MAX_ERROR_IN_BAT_DATA_>,<%BC>) + xSSN = @CATSTR(<PORT_BAT_SBDS_SERIAL_NO_>,<%BC>) + xSMD = @CATSTR(<PORT_BAT_SBDS_MAN_DATE_>,<%BC>) + xDCM = @CATSTR(<DESIGN_CAPACITY_MULTIPLIER_>,<%BC>) + xOS = @CATSTR(<OEM_SPECIFIC_>,<%BC>) + + PORTABLE_BATTERY_STRUC {\ + {22, sizeof(PORTABLE_BATTERY_STRUC), xHandle}, + 01h, 02h, 03h, 04h, 05h, + xDCh, + xDC, + xDV, + 06, + xME, + xSSN, + , + 07, + , + xOS\ + } + SCAN_PUT_STR @CATSTR(<PORT_BAT_LOCATION_>,<%BC>) + SCAN_PUT_STR @CATSTR(<PORT_BAT_MANUFACTURER_>,<%BC>) + SCAN_PUT_STR @CATSTR(<PORT_BAT_MANUFACTURE_DATE_>,<%BC>) + SCAN_PUT_STR @CATSTR(<PORT_BAT_SERIAL_NUMBER_>,<%BC>) + SCAN_PUT_STR @CATSTR(<PORT_BAT_DEVICE_NAME_>,<%BC>) + SCAN_PUT_STR @CATSTR(<PORT_BAT_SBDS_VER_NO_>,<%BC>) + SCAN_PUT_STR @CATSTR(<PORT_BAT_SBDS_DEV_CHEM_>,<%BC>) + TERMINATOR + BC = BC + 1 + ENDM ; MKF_NO_OF_PORTABLE_BATTERY +ENDIF ; MKF_PORTABLE_BATTERY_INFO + EXITM %xHandle +ENDM + +;---------------------------------------------------------------------------- +; Structure Type 23: SYSTEM RESET INFORMATION +;---------------------------------------------------------------------------- +CreateSystemResetInfo MACRO xHandle:REQ + + LOCAL length + + length = 0Dh +IF MKF_SYSTEM_RESET_INFO + xHandle = xHandle + 1 + + SYSTEM_RESET_STRUC {\ + {23, length, xHandle}, + RESET_CAPABILITIES, + RESET_COUNT, + RESET_LIMIT, + RESET_TIMER_INTERVAL, + RESET_TIMEOUT\ + } + TERMINATOR + TERMINATOR +ENDIF ; MKF_SYSTEM_RESET_INFO + EXITM %xHandle +ENDM + +;---------------------------------------------------------------------------- +; Structure Type 24: HARDWARE SECURITY INFORMATION +;---------------------------------------------------------------------------- +CreateHardwareSecurityInfo MACRO xHandle:REQ + + LOCAL length + + length = 05h +IF MKF_HARDWARE_SECURITY_INFO + xHandle = xHandle + 1 + + HARDWARE_SECURITY_STRUC {\ + {24, length, xHandle}, + MKF_HARDWARE_SECURITY_SETTINGS\ + } + TERMINATOR + TERMINATOR +ENDIF ; MKF_HARDWARE_SECURITY_INFO + EXITM %xHandle +ENDM + +;---------------------------------------------------------------------------- +; Structure Type 25: SYSTEM POWER CONTROLS INFORMATION +;---------------------------------------------------------------------------- +CreateSystemPowerControlsInfo MACRO xHandle:REQ + + LOCAL length + + length = 09h + +IF MKF_SYSTEM_POWER_CONTROLS_INFO + xHandle = xHandle + 1 + + SYSTEM_POWER_CONTROLS_STRUC {\ + {25, length, xHandle}, + NEXT_SCHEDULED_POWERON_MONTH, + NEXT_SCHEDULED_POWERON_DAY_OF_MONTH, + NEXT_SCHEDULED_POWERON_HOUR, + NEXT_SCHEDULED_POWERON_MINUTE, + NEXT_SCHEDULED_POWERON_SECOND\ + } + TERMINATOR + TERMINATOR +ENDIF ; MKF_SYSTEM_POWER_CONTROLS_INFO + EXITM %xHandle +ENDM + +;---------------------------------------------------------------------------- +; Structure Type 30: OUT-OF-BAND REMOTE ACCESS INFORMATION +;---------------------------------------------------------------------------- +CreateOutofBandRemoteAccessInfo MACRO xHandle:REQ + + LOCAL length + + length = 06h + +IF MKF_OUT_OF_BAND_REMOTE_ACCESS_INFO + xHandle = xHandle + 1 + + OUT_OF_BAND_REMOTE_ACCESS_STRUC {\ + {30, length, xHandle}, + 01h, + MKF_OBRA_CONNECTIONS\ + } + SCAN_PUT_STR %MKF_OBRA_MANUFACTURER_NAME + TERMINATOR +ENDIF ; MKF_OUT_OF_BAND_REMOTE_ACCESS_INFO + EXITM %xHandle +ENDM + +;---------------------------------------------------------------------------- +; Structure Type 31: BOOT INTEGRITY SERVICES +;---------------------------------------------------------------------------- +CreateBootIntegrityServicesInfo MACRO xHandle:REQ + +IF MKF_BIS_INFO + xHandle = xHandle + 1 + + BOOT_INTEGRITY_STRUC {\ + {31, sizeof(BOOT_INTEGRITY_STRUC), xHandle}, + MKF_CHECKSUM, + 0, + 0, + MKF_BIS_ENTRY_POINT_REAL_MODE, + MKF_BIS_ENTRY_POINT_FLAT_MODE, + 0, + 0\ + } + TERMINATOR + TERMINATOR +ENDIF ; MKF_BIS_INFO + EXITM %xHandle +ENDM + +;---------------------------------------------------------------------------- +; Structure Type 32: SYSTEM BOOT INFORMATION +;---------------------------------------------------------------------------- +CreateSystemBootInfo MACRO xHandle:REQ + +IF MKF_SYSTEM_BOOT_INFO + xHandle = xHandle + 1 + + SYS_BOOT_INFORMATION_STRUC {\ + {32, sizeof(SYS_BOOT_INFORMATION_STRUC), xHandle}, + {0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0}\ + } + TERMINATOR + TERMINATOR +ENDIF ; MKF_SYSTEM_BOOT_INFO + EXITM %xHandle +ENDM + +;---------------------------------------------------------------------------- +; Structure Type 33: 64-BIT MEMORY ERROR INFORMATION +;---------------------------------------------------------------------------- +CreateSixtyFourBitMemoryErrorInfo MACRO xHandle:REQ + + LOCAL length + + length = 01Fh + +IF MKF_SIXTY_FOURBIT_MEMORY_ERROR_INFO + xHandle = xHandle + 1 + + SIXTYFOUR_BIT_MEMORY_ARRAY_ERR_STRUC {\ + {33, length, xHandle}, + MKF_MEMORY_ERROR_TYPE, + MKF_ERROR_GRANULARITY, + MKF_ERROR_OPERATION, + MKF_VENDOR_SYNDROME, + MEM_ARR_ERR_ADD, + DEV_ERR_ADD, + MKF_ERROR_RESOLUTION\ + } + TERMINATOR + TERMINATOR +ENDIF ; MKF_SIXTY_FOURBIT_MEMORY_ERROR_INFO + EXITM %xHandle +ENDM + +;---------------------------------------------------------------------------- +; Structure Type 34: MANAGEMENT DEVICE INFORMATION +;---------------------------------------------------------------------------- +CreateManagementDeviceInfo macro xHandle:REQ + + LOCAL length, mD, mT, mA, mAt, xC, xN, xS, rC, mH, cH, tH + LOCAL vD,lS,maxV,minV,reS,tolE,accY,oD,nomV,rCMdi,rCVpi, rCEdi + LOCAL Tphndl,tD,dtS,cuG,oDc,nS,nD,eD,xT,xCc,xE,xV,rCo + LOCAL xPs, mPc, pSc, xTs + + length = 0Bh + +IF MKF_MANAGEMENT_DEVICE_INFO + rCMdi = 1 + + REPEAT MKF_NUMBER_OF_MANAGEMENT_DEVICES + xHandle = xHandle + 1 + mH = xHandle + + mD TEXTEQU @CATSTR(<MANAGEMENT_DEVICE_STRING_>, <%rCMdi>) + mT TEXTEQU @CATSTR(<MANAGEMENT_DEVICE_TYPE_>, <%rCMdi>) + mA TEXTEQU @CATSTR(<MANAGEMENT_DEVICE_ADDR_>, <%rCMdi>) + mAt TEXTEQU @CATSTR(<MANAGEMENT_DEVICE_ADDR_TYPE_>, <%rCMdi>) + + MANAGEMENT_DEV_INFO 34, length, xHandle, mD, mT, mA, mAt + TERMINATOR + +;---------------------------------------------------------------------------- +; Structure Type 26: VOLTAGE PROBE INFORMATION +;---------------------------------------------------------------------------- +IF MKF_VOLTAGE_PROBE_INFO + rCVpi =1 + xV TEXTEQU @CATSTR(<NUMBER_OF_VOLTAGE_PROBE_ASSOCIATED_MGMT_DEV_>, <%rCMdi>) + + REPEAT xV + xHandle = xHandle + 1 + cH = xHandle + length = sizeof VOLTAGE_PROBE_STRUC + + xN = 1 + xS TEXTEQU @CATSTR(<VOLTAGE_PROBE_INFO_>, <%rCMdi>, <_>, <%rCVpi>) + xC = @INSTR(<%xN>, %xS, <,>) + vD TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN)) + xN = xC+1 + xC = @INSTR(<%xN>, %xS, <,>) + lS TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN)) + xN = xC+1 + xC = @INSTR(<%xN>, %xS, <,>) + maxV TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN)) + xN = xC+1 + xC = @INSTR(<%xN>, %xS, <,>) + minV TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN)) + xN = xC+1 + xC = @INSTR(<%xN>, %xS, <,>) + reS TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN)) + xN = xC+1 + xC = @INSTR(<%xN>, %xS, <,>) + tolE TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN)) + xN = xC+1 + xC = @INSTR(<%xN>, %xS, <,>) + accY TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN)) + xN = xC+1 + xC = @INSTR(<%xN>, %xS, <,>) + oD TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN)) + xN = @SIZESTR(%xS) + xN = xN-xC + xC = xC+1 + nomV = @SUBSTR(%xS, <%xC>, xN) + + VOLTAGE_PRO_INFO 26, length, xHandle, vD, lS, maxV, minV, reS, tolE, accY, oD, nomV + TERMINATOR + +;---------------------------------------------------------------------------- +; Structure Type 36: MANAGEMENT DEVICE THRESHOLD DATA INFORMATION +;---------------------------------------------------------------------------- + xHandle = xHandle + 1 + tH = xHandle + length = sizeof MANAGEMENT_DEVICE_THRESHOLD_DATA_STRUC + + xN = 1 + xS TEXTEQU @CATSTR(<MANAGEMENT_DEV_VOLT_THRESHOLD_DATA_INFO_>, <%rCMdi>, <_>, <%rCVpi>) + xC = @INSTR(xN, %xS, <,>) + ltnc = @SUBSTR(%xS, xN, (xC-xN)) + xN = xC+1 + xC = @INSTR(xN, %xS, <,>) + utnc = @SUBSTR(%xS, xN, (xC-xN)) + xN = xC+1 + xC = @INSTR(xN, %xS, <,>) + ltc = @SUBSTR(%xS, xN, (xC-xN)) + xN = xC+1 + xC = @INSTR(xN, %xS, <,>) + utc = @SUBSTR(%xS, xN, (xC-xN)) + xN = xC+1 + xC = @INSTR(xN, %xS, <,>) + ltnr = @SUBSTR(%xS, xN, (xC-xN)) + xN = xC+1 + xC = @SIZESTR(%xS) + utnr = @SUBSTR(%xS, xN, (xC-xN+1)) + + MANAGEMENT_DEV_THRESHOLD_INFO 36, length, xHandle, ltnc, utnc, ltc, utc, ltnr, utnr + TERMINATOR + TERMINATOR + +;---------------------------------------------------------------------------- +; Structure Type 35: MANAGEMENT DEVICE COMPONENT INFORMATION +;---------------------------------------------------------------------------- + xHandle = xHandle + 1 + + MANAGEMENT_DEVICE_COMPONENT_STRUC{\ + {35, sizeof(MANAGEMENT_DEVICE_COMPONENT_STRUC), xHandle}, + 01h, mH, cH, tH} + + SCAN_PUT_STR %MKF_MGMT_DEV_COMPONENT_DESCRIPTION + TERMINATOR + + rCVpi = rCVpi + 1 + ENDM ; xV +ENDIF ; IF MKF_VOLTAGE_PROBE_INFO + +;---------------------------------------------------------------------------- +; Structure Type 28: TEMPERATURE PROBE INFORMATION +;---------------------------------------------------------------------------- +IF MKF_TEMPERATURE_PROBE_INFO + rCTpi = 1 + xT TEXTEQU @CATSTR(<NUMBER_OF_TEMPERATURE_PROBE_ASSOCIATED_MGMT_DEV_>, <%rCMdi>) + + REPEAT xT + xHandle = xHandle + 1 + Tphndl = xHandle + cH = xHandle + length = sizeof TEMPERATURE_PROBE_STRUC + xN = 1 + xS TEXTEQU @CATSTR(<TEMPERATURE_PROBE_INFO_>, <%rCMdi>, <_>, <%rCTpi>) + xC = @INSTR(<%xN>, %xS, <,>) + tD TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN)) + xN = xC+1 + xC = @INSTR(<%xN>, %xS, <,>) + lS TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN)) + xN = xC+1 + xC = @INSTR(<%xN>, %xS, <,>) + maxV TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN)) + xN = xC+1 + xC = @INSTR(<%xN>, %xS, <,>) + minV TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN)) + xN = xC+1 + xC = @INSTR(<%xN>, %xS, <,>) + reS TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN)) + xN = xC+1 + xC = @INSTR(<%xN>, %xS, <,>) + tolE TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN)) + xN = xC+1 + xC = @INSTR(<%xN>, %xS, <,>) + accY TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN)) + xN = xC+1 + xC = @INSTR(<%xN>, %xS, <,>) + oD TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN)) + xN = @SIZESTR(%xS) + xN = xN-xC + xC = xC+1 + nomV = @SUBSTR(%xS, <%xC>, xN) + + TEMPERATURE_PRO_INFO 28, length, xHandle, tD, lS, maxV, minV, reS, tolE, accY, oD, nomV + TERMINATOR + +;---------------------------------------------------------------------------- +; Structure Type 36: MANAGEMENT DEVICE THRESHOLD DATA INFORMATION +;---------------------------------------------------------------------------- + + xHandle = xHandle + 1 + tH = xHandle + length = sizeof MANAGEMENT_DEVICE_THRESHOLD_DATA_STRUC + xN = 1 + xS TEXTEQU @CATSTR(<MANAGEMENT_DEV_TEMP_THRESHOLD_DATA_INFO_>, <%rCMdi>, <_>, <%rCTpi>) + xC = @INSTR(xN, %xS, <,>) + ltnc = @SUBSTR(%xS, xN, (xC-xN)) + xN = xC+1 + xC = @INSTR(xN, %xS, <,>) + utnc = @SUBSTR(%xS, xN, (xC-xN)) + xN = xC+1 + xC = @INSTR(xN, %xS, <,>) + ltc = @SUBSTR(%xS, xN, (xC-xN)) + xN = xC+1 + xC = @INSTR(xN, %xS, <,>) + utc = @SUBSTR(%xS, xN, (xC-xN)) + xN = xC+1 + xC = @INSTR(xN, %xS, <,>) + ltnr = @SUBSTR(%xS, xN, (xC-xN)) + xN = xC+1 + xC = @SIZESTR(%xS) + utnr = @SUBSTR(%xS, xN, (xC-xN+1)) + + MANAGEMENT_DEV_THRESHOLD_INFO 36, length, xHandle, ltnc, utnc, ltc, utc, ltnr, utnr + TERMINATOR + TERMINATOR + +;---------------------------------------------------------------------------- +; Structure Type 35: MANAGEMENT DEVICE COMPONENT INFORMATION +;---------------------------------------------------------------------------- + xHandle = xHandle + 1 + + MANAGEMENT_DEVICE_COMPONENT_STRUC{\ + {35, sizeof(MANAGEMENT_DEVICE_COMPONENT_STRUC), xHandle}, + 01h, + mH, + cH, + tH\ + } + SCAN_PUT_STR %MKF_MGMT_DEV_COMPONENT_DESCRIPTION + TERMINATOR + +;---------------------------------------------------------------------------- +; Structure Type 27: COOLING DEVICE +;---------------------------------------------------------------------------- +IF MKF_COOLING_DEVICE_INFO + rCo = 1 + xCc TEXTEQU @CATSTR(<NUMBER_OF_COOLING_DEVICE_ASSOCIATED_TEMP_PROBE_>, <%rCMdi>, <_>, <%rCTpi>) + + REPEAT xCc + xHandle = xHandle + 1 + cH = xHandle + length = sizeof COOLING_DEVICE_STRUC + + xN = 1 + xS TEXTEQU @CATSTR(<COOLING_DEVICE_INFO_>, <%rCMdi>, <_>, <%rCTpi>, <_>, <%rCo>) + xC = @INSTR(xN, %xS, <,>) + dtS = @SUBSTR(%xS, xN, (xC-xN)) + xN = xC+1 + xC = @INSTR(xN, %xS, <,>) + cuG = @SUBSTR(%xS, xN, (xC-xN)) + xN = xC+1 + xC = @INSTR(xN, %xS, <,>) + oDc = @SUBSTR(%xS, xN, (xC-xN)) + xN = xC+1 + xC = @INSTR(xN, %xS, <,>) + nS = @SUBSTR(%xS, xN, (xC-xN)) + xN = xC+1 + xC = @SIZESTR(%xS) + + IF xC LT xN + COOLING_DEV_INFO 27, length, xHandle, Tphndl, dtS, cuG, oDc, nS, 0 + TERMINATOR + ELSE + nD TEXTEQU @SUBSTR(%xS, xN, (xC-xN+1)) + COOLING_DEV_INFO 27, length, xHandle, Tphndl, dtS, cuG, oDc, nS, 1 + SCAN_PUT_STR %nD + ENDIF + TERMINATOR + +;---------------------------------------------------------------------------- +; Structure Type 36: MANAGEMENT DEVICE THRESHOLD DATA INFORMATION +;---------------------------------------------------------------------------- + xHandle = xHandle + 1 + tH = xHandle + + length = sizeof MANAGEMENT_DEVICE_THRESHOLD_DATA_STRUC + xN = 1 + xS TEXTEQU @CATSTR(<MANAGEMENT_DEV_COOL_THRESHOLD_DATA_INFO_>, <%rCMdi>, <_>, <%rCTpi>, <_>, <%rCo>) + xC = @INSTR(xN, %xS, <,>) + ltnc = @SUBSTR(%xS, xN, (xC-xN)) + xN = xC+1 + xC = @INSTR(xN, %xS, <,>) + utnc = @SUBSTR(%xS, xN, (xC-xN)) + xN = xC+1 + xC = @INSTR(xN, %xS, <,>) + ltc = @SUBSTR(%xS, xN, (xC-xN)) + xN = xC+1 + xC = @INSTR(xN, %xS, <,>) + utc = @SUBSTR(%xS, xN, (xC-xN)) + xN = xC+1 + xC = @INSTR(xN, %xS, <,>) + ltnr = @SUBSTR(%xS, xN, (xC-xN)) + xN = xC+1 + xC = @SIZESTR(%xS) + utnr = @SUBSTR(%xS, xN, (xC-xN+1)) + + MANAGEMENT_DEV_THRESHOLD_INFO 36, length, xHandle, ltnc, utnc, ltc, utc, ltnr, utnr + TERMINATOR + TERMINATOR + +;---------------------------------------------------------------------------- +; Structure Type 35: MANAGEMENT DEVICE COMPONENT INFORMATION +;---------------------------------------------------------------------------- + xHandle = xHandle + 1 + + MANAGEMENT_DEVICE_COMPONENT_STRUC{\ + {35, sizeof(MANAGEMENT_DEVICE_COMPONENT_STRUC), xHandle}, + 01h, mH, cH, tH} + + SCAN_PUT_STR %MKF_MGMT_DEV_COMPONENT_DESCRIPTION + TERMINATOR + + rCo = rCo + 1 + ENDM ; xCc +ENDIF ; IF MKF_COOLING_DEVICE_INFO + ENDM ; xT +ENDIF ; IF MKF_TEMPERATURE_PROBE_INFO + +;---------------------------------------------------------------------------- +; Structure Type 29: ELECTRICAL PROBE INFORMATION +;---------------------------------------------------------------------------- +IF MKF_ELECTRICAL_PROBE_INFO + rCEdi =1 + + xE TEXTEQU @CATSTR(<NUMBER_OF_ELECTRICAL_PROBE_ASSOCIATED_MGMT_DEV_>, <%rCMdi>) + + REPEAT xE + xHandle = xHandle + 1 + cH = xHandle + length = sizeof ELECTRICAL_CURRENT_PROBE_STRUC + + xN = 1 + xS TEXTEQU @CATSTR(<ELECTRICAL_PROBE_INFO_>,<%rCMdi>, <_>,<%rCEdi>) + xC = @INSTR(<%xN>,%xS,<,>) + eD TEXTEQU @SUBSTR(%xS,<%xN>,(xC-xN)) + xN = xC+1 + xC = @INSTR(<%xN>,%xS,<,>) + lS TEXTEQU @SUBSTR(%xS,<%xN>,(xC-xN)) + xN = xC+1 + xC = @INSTR(<%xN>,%xS,<,>) + maxV TEXTEQU @SUBSTR(%xS,<%xN>,(xC-xN)) + xN = xC+1 + xC = @INSTR(<%xN>,%xS,<,>) + minV TEXTEQU @SUBSTR(%xS,<%xN>,(xC-xN)) + xN = xC+1 + xC = @INSTR(<%xN>,%xS,<,>) + reS TEXTEQU @SUBSTR(%xS,<%xN>,(xC-xN)) + xN = xC+1 + xC = @INSTR(<%xN>,%xS,<,>) + tolE TEXTEQU @SUBSTR(%xS,<%xN>,(xC-xN)) + xN = xC+1 + xC = @INSTR(<%xN>,%xS,<,>) + accY TEXTEQU @SUBSTR(%xS,<%xN>,(xC-xN)) + xN = xC+1 + xC = @INSTR(<%xN>,%xS,<,>) + oD TEXTEQU @SUBSTR(%xS,<%xN>,(xC-xN)) + xN = @SIZESTR(%xS) + xN = xN-xC + xC = xC+1 + nomV = @SUBSTR(%xS,<%xC>,xN) + + ELECTRICAL_PRO_INFO 29, length, xHandle, eD, lS, maxV, minV, reS, tolE, accY, oD, nomV + TERMINATOR + +;---------------------------------------------------------------------------- +; Structure Type 36: MANAGEMENT DEVICE THRESHOLD DATA INFORMATION +;---------------------------------------------------------------------------- + xHandle = xHandle + 1 + tH = xHandle + length = sizeof MANAGEMENT_DEVICE_THRESHOLD_DATA_STRUC + + eltnc TEXTEQU @CATSTR(<LOWER_THRESHOLD_NON_CRITICAL_>,<%rCEdi>) + eutnc TEXTEQU @CATSTR(<UPPER_THRESHOLD_CRITICAL_>,<%rCEdi>) + eltc TEXTEQU @CATSTR(<LOWER_THRESHOLD_CRITICAL_>,<%rCEdi>) + eutc TEXTEQU @CATSTR(<UPPER_THRESHOLD_NON_CRITICAL_>,<%rCEdi>) + eltnr TEXTEQU @CATSTR(<LOWER_THRESHOLD_NON_RECOVERABLE_>,<%rCEdi>) + eutnr TEXTEQU @CATSTR(<UPPER_THRESHOLD_NON_RECOVERABLE_>,<%rCEdi>) + + MANAGEMENT_DEV_THRESHOLD_INFO 36, length, xHandle, eltnc, eutnc, eltc, eutc, eltnr, eutnr + TERMINATOR + TERMINATOR + +;---------------------------------------------------------------------------- +; Structure Type 35: MANAGEMENT DEVICE COMPONENT INFORMATION +;---------------------------------------------------------------------------- + xHandle = xHandle + 1 + + MANAGEMENT_DEVICE_COMPONENT_STRUC{\ + {35, sizeof(MANAGEMENT_DEVICE_COMPONENT_STRUC), xHandle}, + 01h, mH, cH, tH} + + SCAN_PUT_STR %MKF_MGMT_DEV_COMPONENT_DESCRIPTION + TERMINATOR + + rCEdi = rCEdi + 1 + ENDM ; xE +ENDIF ; IF MKF_ELECTRICAL_PROBE_INFO + rCMdi = rCMdi + 1 + ENDM ; MKF_NUMBER_OF_MANAGEMENT_DEVICES + +ENDIF ; IF MKF_MANAGEMENT_DEVICE_INFO + EXITM %xHandle +ENDM + +;---------------------------------------------------------------------------- +; Structure Type 39: SYSTEM POWER SUPPLY +;---------------------------------------------------------------------------- +CreateSystemPowerSupplyInfo macro xHandle:REQ + + LOCAL length, vpH, cdH, tpH, cpH, s1, v1, v2 + LOCAL sPr, vLS, vMa, vMi, vRe, vTo, vAc, vOD, vNo ; Type 26/28/29 + LOCAL vTS, vCG, vOD, vNS, sDe ; Type 27 + LOCAL vPS, vPG, sLo, sDN, sMa, sSN, sAT, sPN, sRL, vMP, vPC ; Type 39 + +IF MKF_SYSTEM_POWER_SUPPLY_INFO + vPS = 1 + REPEAT MKF_NUMBER_OF_POWER_SUPPLY +;---------------------------------------------------------------------------- +; Associated Structure Type 26: VOLTAGE PROBE INFORMATION +;---------------------------------------------------------------------------- + + s1 TEXTEQU @CATSTR(<VOLTAGE_PROBE_39_>, <%vPS>) + v1 = @SUBSTR(%s1, 1, 1) + IF v1 EQ 1 + xHandle = xHandle + 1 + vpH = xHandle + length = sizeof VOLTAGE_PROBE_STRUC + v1 = @INSTR(1, %s1, <,>) + 1 + v2 = @INSTR(v1, %s1, <,>) + sPr TEXTEQU @SUBSTR(%s1, v1, (v2 - v1)) + v1 = v2 + 1 + v2 = @INSTR(v1, %s1, <,>) + vLS = @SUBSTR(%s1, v1, (v2 - v1)) + v1 = v2 + 1 + v2 = @INSTR(v1, %s1, <,>) + vMa = @SUBSTR(%s1, v1, (v2 - v1)) + v1 = v2 + 1 + v2 = @INSTR(v1, %s1, <,>) + vMi = @SUBSTR(%s1, v1, (v2 - v1)) + v1 = v2 + 1 + v2 = @INSTR(v1, %s1, <,>) + vRe = @SUBSTR(%s1, v1, (v2 - v1)) + v1 = v2 + 1 + v2 = @INSTR(v1, %s1, <,>) + vTo = @SUBSTR(%s1, v1, (v2 - v1)) + v1 = v2 + 1 + v2 = @INSTR(v1, %s1, <,>) + vAc = @SUBSTR(%s1, v1, (v2 - v1)) + v1 = v2 + 1 + v2 = @INSTR(v1, %s1, <,>) + vOD = @SUBSTR(%s1, v1, (v2 - v1)) + v1 = v2 + 1 + v2 = @SIZESTR(%s1) - v1 + 1 + vNo = @SUBSTR(%s1, v1, v2) + + VOLTAGE_PRO_INFO 26, length, vpH, sPr, vLS, vMa, vMi, vRe, vTo, vAc, vOD, vNo + TERMINATOR + ELSE + vpH = 0FFFFh + ENDIF +;---------------------------------------------------------------------------- +; Associated Structure Type 28: TEMPERATURE PROBE INFORMATION +;---------------------------------------------------------------------------- + s1 TEXTEQU @CATSTR(<COOLING_DEVICE_39_>, <%vPS>) + v1 = @SUBSTR(%s1, 1, 1) + IF v1 EQ 1 + s1 TEXTEQU @CATSTR(<TEMPERATURE_PROBE_39_>, <%vPS>) + v1 = @SUBSTR(%s1, 1, 1) + IF v1 EQ 1 + xHandle = xHandle + 1 + tpH = xHandle + length = sizeof TEMPERATURE_PROBE_STRUC + v1 = @INSTR(1, %s1, <,>) + 1 + v2 = @INSTR(v1, %s1, <,>) + sPr TEXTEQU @SUBSTR(%s1, v1, (v2 - v1)) + v1 = v2 + 1 + v2 = @INSTR(v1, %s1, <,>) + vLS = @SUBSTR(%s1, v1, (v2 - v1)) + v1 = v2 + 1 + v2 = @INSTR(v1, %s1, <,>) + vMa = @SUBSTR(%s1, v1, (v2 - v1)) + v1 = v2 + 1 + v2 = @INSTR(v1, %s1, <,>) + vMi = @SUBSTR(%s1, v1, (v2 - v1)) + v1 = v2 + 1 + v2 = @INSTR(v1, %s1, <,>) + vRe = @SUBSTR(%s1, v1, (v2 - v1)) + v1 = v2 + 1 + v2 = @INSTR(v1, %s1, <,>) + vTo = @SUBSTR(%s1, v1, (v2 - v1)) + v1 = v2 + 1 + v2 = @INSTR(v1, %s1, <,>) + vAc = @SUBSTR(%s1, v1, (v2 - v1)) + v1 = v2 + 1 + v2 = @INSTR(v1, %s1, <,>) + vOD = @SUBSTR(%s1, v1, (v2 - v1)) + v1 = v2 + 1 + v2 = @SIZESTR(%s1) - v1 + 1 + vNo = @SUBSTR(%s1, v1, v2) + + TEMPERATURE_PRO_INFO 28, length, tpH, sPr, vLS, vMa, vMi, vRe, vTo, vAc, vOD, vNo + TERMINATOR + ELSE + tpH = 0FFFFh + ENDIF + ENDIF +;---------------------------------------------------------------------------- +; Associated Structure Type 27: COOLING DEVICE INFORMATION +;---------------------------------------------------------------------------- + s1 TEXTEQU @CATSTR(<COOLING_DEVICE_39_>, <%vPS>) + v1 = @SUBSTR(%s1, 1, 1) + IF v1 EQ 1 + xHandle = xHandle + 1 + cdH = xHandle + length = sizeof COOLING_DEVICE_STRUC + v1 = @INSTR(1, %s1, <,>) + 1 + v2 = @INSTR(v1, %s1, <,>) + vTS = @SUBSTR(%s1, v1, (v2 - v1)) + v1 = v2 + 1 + v2 = @INSTR(v1, %s1, <,>) + vCG = @SUBSTR(%s1, v1, (v2 - v1)) + v1 = v2 + 1 + v2 = @INSTR(v1, %s1, <,>) + vOD = @SUBSTR(%s1, v1, (v2 - v1)) + v1 = v2 + 1 + v2 = @INSTR(v1, %s1, <,>) + vNS = @SUBSTR(%s1, v1, (v2 - v1)) + v1 = v2 + 1 + v2 = @SIZESTR(%s1) - v1 + 1 + sDe TEXTEQU @SUBSTR(%s1, v1, v2) + + COOLING_DEV_INFO 27, length, cdH, tpH, vTS, vCG, vOD, vNS, 1 + SCAN_PUT_STR %sDe + TERMINATOR + ELSE + cdH = 0FFFFh + ENDIF +;---------------------------------------------------------------------------- +; Associated Structure Type 29: ELECTRICAL CURRENT PROBE INFORMATION +;---------------------------------------------------------------------------- + s1 TEXTEQU @CATSTR(<ELECTRICAL_PROBE_39_>, <%vPS>) + v1 = @SUBSTR(%s1, 1, 1) + IF v1 EQ 1 + xHandle = xHandle + 1 + cpH = xHandle + length = sizeof ELECTRICAL_CURRENT_PROBE_STRUC + v1 = @INSTR(1, %s1, <,>) + 1 + v2 = @INSTR(v1, %s1, <,>) + sPr TEXTEQU @SUBSTR(%s1, v1, (v2 - v1)) + v1 = v2 + 1 + v2 = @INSTR(v1, %s1, <,>) + vLS = @SUBSTR(%s1, v1, (v2 - v1)) + v1 = v2 + 1 + v2 = @INSTR(v1, %s1, <,>) + vMa = @SUBSTR(%s1, v1, (v2 - v1)) + v1 = v2 + 1 + v2 = @INSTR(v1, %s1, <,>) + vMi = @SUBSTR(%s1, v1, (v2 - v1)) + v1 = v2 + 1 + v2 = @INSTR(v1, %s1, <,>) + vRe = @SUBSTR(%s1, v1, (v2 - v1)) + v1 = v2 + 1 + v2 = @INSTR(v1, %s1, <,>) + vTo = @SUBSTR(%s1, v1, (v2 - v1)) + v1 = v2 + 1 + v2 = @INSTR(v1, %s1, <,>) + vAc = @SUBSTR(%s1, v1, (v2 - v1)) + v1 = v2 + 1 + v2 = @INSTR(v1, %s1, <,>) + vOD = @SUBSTR(%s1, v1, (v2 - v1)) + v1 = v2 + 1 + v2 = @SIZESTR(%s1) - v1 + 1 + vNo = @SUBSTR(%s1, v1, v2) + + ELECTRICAL_PRO_INFO 29, length, cpH, sPr, vLS, vMa, vMi, vRe, vTo, vAc, vOD, vNo + TERMINATOR + ELSE + cpH = 0FFFFh + ENDIF +;---------------------------------------------------------------------------- +; Create Type 39 +;---------------------------------------------------------------------------- + xHandle = xHandle + 1 + length = sizeof SYSTEM_POWER_SUPPLY_STRUC + vPG = @CATSTR(<POWER_SUPPLY_UNIT_GROUP_>, <%vPS>) + sLo TEXTEQU @CATSTR(<POWER_SUPPLY_LOCATION_>, <%vPS>) + sDN TEXTEQU @CATSTR(<POWER_SUPPLY_DEVICE_NAME_>, <%vPS>) + sMa TEXTEQU @CATSTR(<POWER_SUPPLY_MANUFACTURER_>, <%vPS>) + sSN TEXTEQU @CATSTR(<POWER_SUPPLY_SERIAL_NUMBER_>, <%vPS>) + sAT TEXTEQU @CATSTR(<POWER_SUPPLY_ASSET_TAG_NUMBER_>, <%vPS>) + sPN TEXTEQU @CATSTR(<POWER_SUPPLY_MODEL_PART_NUMBER_>, <%vPS>) + sRL TEXTEQU @CATSTR(<POWER_SUPPLY_REVISION_LEVEL_>, <%vPS>) + vMP = @CATSTR(<POWER_SUPPLY_MAX_POWER_CAPACITY_>, <%vPS>) + vPC TEXTEQU @CATSTR(<POWER_SUPPLY_CHARACTERISTICS_>, <%vPS>) + + SYSTEM_POWER_SUPPLY_INFO 39, length, xHandle, vPG, sLo, sDN, sMa, sSN, sAT, sPN, sRL, vMP, vPC, vpH, cdH, cpH + TERMINATOR + vPS = vPS + 1 + ENDM ; MKF_NUMBER_OF_POWER_SUPPLY +ENDIF ; MKF_SYSTEM_POWER_SUPPLY_INFO + EXITM %xHandle +ENDM + +;---------------------------------------------------------------------------- +; Structure Type 38: IPMI DEVICE INFORMATION +;---------------------------------------------------------------------------- +CreateIPMIDeviceInfo MACRO xHandle:REQ + + LOCAL iit, isr, isa, nsda, ibal, ibah, bamii, intnum + +IF MKF_IPMI_DEVICE_INFO + xHandle = xHandle + 1 + + iit = MKF_IPMI_INTERFACE_TYPE + isr = MKF_IPMI_SPECIFICATION_REVISION + isa = MKF_I2C_SLAVE_ADDRESS + nsda = MKF_NV_STORAGE_DEVICE_ADDRESS + ibal = IPMI_BASE_ADDRESS_LO + ibah = IPMI_BASE_ADDRESS_HI + bamii = MKF_BASE_ADDR_MOD_INTR_INFO + intnum = MKF_INTERRUPT_NUMBER + + IPMI_DEVICE_INFORMATION_STRUC{\ + {38, sizeof(IPMI_DEVICE_INFORMATION_STRUC), xHandle}, + iit, + isr, + isa, + nsda, + ibal, + ibah, + bamii, + intnum\ + } + TERMINATOR + TERMINATOR +ENDIF ; MKF_IPMI_DEVICE_INFO + EXITM %xHandle +ENDM + +;---------------------------------------------------------------------------- +; Structure Type 40 : ADDITIONAL INFORMATION +;---------------------------------------------------------------------------- +CreateAdditionalInformation macro xHandle:REQ + + LOCAL length, rC, eL, rH, rT, rI, rO, uS, sC, sN, rV, xS + + IF (MKF_ADDITIONAL_INFO AND (MKF_ADDITIONAL_INFO_COUNT GT 0)) + xHandle = xHandle + 1 + length = sizeof(ADDITIONAL_INFO_STRUC) + (MKF_ADDITIONAL_INFO_COUNT * sizeof(ADDITIONAL_INFO_ENTRY_STRUC)) + + ADDITIONAL_INFO_STRUC {\ + {40, length, xHandle}, + MKF_ADDITIONAL_INFO_COUNT\ + } + + rC = 1 + sC = 1 + REPEAT MKF_ADDITIONAL_INFO_COUNT + eL = sizeof ADDITIONAL_INFO_ENTRY_STRUC + rT = @CATSTR (REF_TYPE_, <%rC>) + rI = @CATSTR (REF_TYPE_INSTANCE_, <%rC>) + rO TEXTEQU @CATSTR (REF_OFFSET_, <%rC>) + uS = @CATSTR (USE_STRING_, <%rC>) + IF uS EQ 1 + sN = sC + sC = sC + 1 + ELSE + sN = 0 + ENDIF + rV TEXTEQU @CATSTR (VALUE_, <%rC>) + ADDITIONAL_INFO_ENTRY_STRUC {\ + eL, + (rT*16)+rI, + rO, + sN, + {rV}\ + } + rC = rC + 1 + ENDM ; MKF_ADDITIONAL_INFO_COUNT + + rC = 1 + REPEAT MKF_ADDITIONAL_INFO_COUNT + uS = @CATSTR (USE_STRING_, <%rC>) + IF uS EQ 1 + xS TEXTEQU @CATSTR (STRING_, <%rC>) + SCAN_PUT_STR %xS + ENDIF + rC = rC + 1 + ENDM ; MKF_ADDITIONAL_INFO_COUNT + TERMINATOR + ENDIF + EXITM %xHandle +ENDM + +;---------------------------------------------------------------------------- +; Structure Type 41 : Onboard Devices Extended Information +;---------------------------------------------------------------------------- +CreateOnboardDevicesExtendedInfo macro xHandle:REQ + + LOCAL length, rC, xN, xS, xC, eD, dT, dI, sD, sG, xB, dF + + length = sizeof(ONBOARD_DEVICE_EXTENDED_STRUC) + + IF (MKF_ONBOARD_DEVICE_EXTENDED_INFO AND (MKF_ONBOARD_DEVICE_EXT_COUNT GT 0)) + rC = 1 + REPEAT MKF_ONBOARD_DEVICE_EXT_COUNT + xHandle = xHandle + 1 + xN = 1 + xS TEXTEQU @CATSTR(<ONBOARD_DEVICE_EXT_>, <%rC>) + xC = @INSTR(<%xN>, %xS, <,>) + eD TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN)) + xN = xC+1 + xC = @INSTR(<%xN>, %xS, <,>) + dT TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN)) + xN = xC+1 + xC = @INSTR(<%xN>, %xS, <,>) + dI TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN)) + xN = @SIZESTR(%xS) + xN = xN-xC + xC = xC+1 + sD TEXTEQU @SUBSTR(%xS, <%xC>, <%xN>) + + xS TEXTEQU @CATSTR(<SEGGRP_BUS_DEVFN_EXT_>, <%rC>) + xN = 1 + xC = @INSTR(<%xN>, %xS, <,>) + sG TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN)) + xN = xC+1 + xC = @INSTR(<%xN>, %xS, <,>) + xB TEXTEQU @SUBSTR(%xS, <%xN>, (xC-xN)) + xC = xC+1 + dF TEXTEQU @SUBSTR(%xS, <%xC>) + + ONBOARD_DEVICE_EXTENDED_STRUC {\ + {41, length, xHandle}, + 1, + ((eD shl 7) OR dT), + dI,sG,xB, + dF\ + } + SCAN_PUT_STR %sD + TERMINATOR + rC = rC + 1 + ENDM ; MKF_ONBOARD_DEVICE_EXT_COUNT + ENDIF + EXITM %xHandle +ENDM + +;---------------------------------------------------------------------------- +; Structure Type 240: OEM DEFINED IO STRUCTURE +;---------------------------------------------------------------------------- +CreateOEMIOMappedGpnvInfo MACRO xHandle:REQ + + IF MKF_OEM_IO_GPNV_STRUC_INFO + xHandle = xHandle + 1 + DescLength = (MAX_IO_GPNV_DATAID*size DATAID_DESCRIPTOR_STRUC) + TotalLength = sizeof(OEM_GPNV_STRUC)+DescLength + OEM_GPNV_STRUC {\ + {OEM_IO_GPNV_INFORMATION_TYPE, TotalLength, xHandle}, + 00h, + 00000000h, + MAX_IO_GPNV_DATAID\ + } + BYTE DescLength dup(0FFh) + TERMINATOR + TERMINATOR + ENDIF ; MKF_OEM_IO_GPNV_STRUC_INFO + EXITM %xHandle +ENDM + +;---------------------------------------------------------------------------- +; Structure Type 241: OEM DEFINED MEMORY STRUCTURE +;---------------------------------------------------------------------------- +CreateOEMMemoryMappedGpnvInfo MACRO xHandle:REQ + IF MKF_OEM_MEMORY_GPNV_STRUC_INFO + xHandle = xHandle + 1 + DescLength = (MAX_MEMORY_GPNV_DATAID*size DATAID_DESCRIPTOR_STRUC) + TotalLength = sizeof(OEM_GPNV_STRUC)+DescLength + OEM_GPNV_STRUC {\ + {OEM_MEMORY_GPNV_INFORMATION_TYPE, TotalLength, xHandle}, + 00h, + 00000000h, + MAX_MEMORY_GPNV_DATAID\ + } + BYTE DescLength dup(0FFh) + TERMINATOR + TERMINATOR + ENDIF ; MKF_OEM_MEMORY_GPNV_STRUC_INFO + EXITM %xHandle +ENDM +;---------------------------------------------------------------------------- +; Structure Type 129: INTEL ASF STRUCTURE +;---------------------------------------------------------------------------- +CreateIntelASFTable MACRO xHandle:REQ +IFDEF MKF_ASF_SUPPORT +IF MKF_ASF_SUPPORT + xHandle = xHandle + 1 + INTEL_ASF_STRUC{\ + {129, sizeof(INTEL_ASF_STRUC), xHandle}, + 01h, + 01h, + 02h, + 01h\ + } + BYTE 'Intel_ASF',0 + BYTE 'Intel ASF_001',0 + TERMINATOR +ENDIF ; MKF_ASF_SUPPORT +ENDIF ; MKF_ASF_SUPPORT + EXITM %xHandle +endm +;---------------------------------------------------------------------------- +; Structure Type 127: END OF TABLE +;---------------------------------------------------------------------------- +CreateEndOfTable MACRO xHandle:REQ + xHandle = xHandle + 1 + END_OF_TABLE_STRUC{\ + {127, sizeof(END_OF_TABLE_STRUC), xHandle}\ + } + TERMINATOR + TERMINATOR + EXITM %xHandle +ENDM + +;---------------------------------------------------------------------------- +ENDIF ; End of Inclusion Guard _smbdata_mac_ +;---------------------------------------------------------------------------- + +;**************************************************************************** +;**************************************************************************** +;** ** +;** (C)Copyright 1985-2016, American Megatrends, Inc. ** +;** ** +;** All Rights Reserved. ** +;** ** +;** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 ** +;** ** +;** Phone: (770)-246-8600 ** +;** ** +;**************************************************************************** +;**************************************************************************** |