123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Runtime.InteropServices;
- using System.Text;
- using System.Threading.Tasks;
- namespace ShakerManger.Susi4
- {
- internal static class SusiLib
- {
- public enum SusiStatus : UInt32
- {
- NOT_INITIALIZED = 0xFFFFFFFF,
- INITIALIZED = 0xFFFFFFFE,
- ALLOC_ERROR = 0xFFFFFFFD,
- DRIVER_TIMEOUT = 0xFFFFFFFC,
- INVALID_PARAMETER = 0xFFFFFEFF,
- INVALID_BLOCK_ALIGNMENT = 0xFFFFFEFE,
- INVALID_BLOCK_LENGTH = 0xFFFFFEFD,
- INVALID_DIRECTION = 0xFFFFFEFC,
- INVALID_BITMASK = 0xFFFFFEFB,
- RUNNING = 0xFFFFFEFA,
- UNSUPPORTED = 0xFFFFFCFF,
- NOT_FOUND = 0xFFFFFBFF,
- TIMEOUT = 0xFFFFFBFE,
- BUSY_COLLISION = 0xFFFFFBFD,
- READ_ERROR = 0xFFFFFAFF,
- WRITE_ERROR = 0xFFFFFAFE,
- MORE_DATA = 0xFFFFF9FF,
- ERROR = 0xFFFFF0FF,
- SUCCESS = 0x00000000,
- }
- [DllImport("Susi4")]
- public static extern SusiStatus SusiLibInitialize();
- [DllImport("Susi4")]
- public static extern SusiStatus SusiLibUninitialize();
- public enum BoardInformationID : UInt32
- {
- GET_SPEC_VERSION = 0x00000000,
- BOOT_COUNTER_VAL = 0x00000001,
- RUNNING_TIME_METER_VAL = 0x00000002,
- PNPID_VAL = 0x00000003,
- PLATFORM_REV_VAL = 0x00000004,
- DRIVER_VERSION_VAL = 0x00010000,
- LIB_VERSION_VAL = 0x00010001,
- FIRMWARE_VERSION_VAL = 0x00010002,
- LAST_SHUTDOWN_STATUS_VAL = 0x00010003,
- LAST_SHUTDOWN_EVENT_VAL = 0x00010004,
- DOCUMENT_VERSION_VAL = 0x00010005,
- }
- public enum BoardVoltageID : UInt32
- {
- VOLTAGE_VCORE = 0x00021000,
- VOLTAGE_VCORE2 = VOLTAGE_VCORE + 1,
- VOLTAGE_2V5 = VOLTAGE_VCORE + 2,
- VOLTAGE_3V3 = VOLTAGE_VCORE + 3,
- VOLTAGE_5V = VOLTAGE_VCORE + 4,
- VOLTAGE_12V = VOLTAGE_VCORE + 5,
- VOLTAGE_5VSB = VOLTAGE_VCORE + 6,
- VOLTAGE_3VSB = VOLTAGE_VCORE + 7,
- VOLTAGE_VBAT = VOLTAGE_VCORE + 8,
- VOLTAGE_5NV = VOLTAGE_VCORE + 9,
- VOLTAGE_12NV = VOLTAGE_VCORE + 10,
- VOLTAGE_VTT = VOLTAGE_VCORE + 11,
- VOLTAGE_24V = VOLTAGE_VCORE + 12,
- VOLTAGE_DC = VOLTAGE_VCORE + 13,
- VOLTAGE_DCSTBY = VOLTAGE_VCORE + 14,
- VOLTAGE_VBATLI = VOLTAGE_VCORE + 15,
- VOLTAGE_OEM0 = VOLTAGE_VCORE + 16,
- VOLTAGE_OEM1 = VOLTAGE_VCORE + 17,
- VOLTAGE_OEM2 = VOLTAGE_VCORE + 18,
- VOLTAGE_OEM3 = VOLTAGE_VCORE + 19,
- VOLTAGE_1V05 = VOLTAGE_VCORE + 20,
- VOLTAGE_1V5 = VOLTAGE_VCORE + 21,
- VOLTAGE_1V8 = VOLTAGE_VCORE + 22,
- }
- public enum BoardTemperatureID : UInt32
- {
- TEMP_CPU = 0x00020000,
- TEMP_CHIPSET = TEMP_CPU + 1,
- TEMP_SYSTEM = TEMP_CPU + 2,
- TEMP_CPU2 = TEMP_CPU + 3,
- TEMP_OEM0 = TEMP_CPU + 4,
- TEMP_OEM1 = TEMP_CPU + 5,
- TEMP_OEM2 = TEMP_CPU + 6,
- TEMP_OEM3 = TEMP_CPU + 7,
- TEMP_OEM4 = TEMP_CPU + 8,
- TEMP_OEM5 = TEMP_CPU + 9,
- }
- public enum BoardFanID : UInt32
- {
- FAN_CPU = 0x00022000,
- FAN_SYSTEM = FAN_CPU + 1,
- FAN_CPU2 = FAN_CPU + 2,
- FAN_OEM0 = FAN_CPU + 3,
- FAN_OEM1 = FAN_CPU + 4,
- FAN_OEM2 = FAN_CPU + 5,
- FAN_OEM3 = FAN_CPU + 6,
- FAN_OEM4 = FAN_CPU + 7,
- FAN_OEM5 = FAN_CPU + 8,
- FAN_OEM6 = FAN_CPU + 9,
- }
- public enum BoardCurrentID : UInt32
- {
- CURRENT_OEM0 = 0x00023000,
- CURRENT_OEM1 = CURRENT_OEM0 + 1,
- CURRENT_OEM2 = CURRENT_OEM0 + 2,
- }
- public enum BoardCaseOpenID : UInt32
- {
- CASEOPEN_OEM0 = 0x00024000,
- CASEOPEN_OEM1 = CASEOPEN_OEM0 + 1,
- CASEOPEN_OEM2 = CASEOPEN_OEM0 + 2,
- }
- public enum BoardSupportedID : UInt32
- {
- ID_SMBUS_SUPPORTED = 0x00030000,
- SMBUS_EXTERNAL_SUPPORTED = (1 << 0),
- SMBUS_OEM0_SUPPORTED = (1 << 1),
- SMBUS_OEM1_SUPPORTED = (1 << 2),
- SMBUS_OEM2_SUPPORTED = (1 << 3),
- SMBUS_OEM3_SUPPORTED = (1 << 4),
- ID_I2C_SUPPORTED = 0x00030100,
- I2C_EXTERNAL_SUPPORTED = (1 << 0),
- I2C_OEM0_SUPPORTED = (1 << 1),
- I2C_OEM1_SUPPORTED = (1 << 2),
- I2C_OEM2_SUPPORTED = (1 << 3),
- }
- public const UInt32 SUSI_ID_UNKNOWN = 0xFFFFFFFF;
- public const UInt32 SUSI_ID_HWM_TEMP_MAX = 10;
- public const UInt32 SUSI_ID_HWM_VOLTAGE_MAX = 23;
- public const UInt32 SUSI_ID_HWM_FAN_MAX = 10;
- public const UInt32 SUSI_ID_HWM_CURRENT_MAX = 3;
- public const UInt32 SUSI_ID_HWM_CASEOPEN_MAX = 3;
- public const UInt32 CASEOPEN_CLEAR_CMD = 0x55AA55AA;
- public const UInt32 SUSI_KELVINS_OFFSET = 2731;
- public static UInt32 SusiEncodeCelcius(UInt32 Celsius)
- {
- return (((Celsius) * 10) + SUSI_KELVINS_OFFSET);
- }
- public static float SusiDecodeCelcius(UInt32 KelvinsTenth)
- {
- return (((int)KelvinsTenth - SUSI_KELVINS_OFFSET) / 10f);
- }
- [DllImport("Susi4")]
- public static extern Susi4.SusiLib.SusiStatus SusiBoardGetValue(UInt32 Id, ref UInt32 pValue);
- [DllImport("Susi4")]
- public static extern Susi4.SusiLib.SusiStatus SusiBoardGetValue(BoardVoltageID Id, ref UInt32 pValue);
- [DllImport("Susi4")]
- public static extern Susi4.SusiLib.SusiStatus SusiBoardGetValue(BoardTemperatureID Id, ref UInt32 pValue);
- [DllImport("Susi4")]
- public static extern Susi4.SusiLib.SusiStatus SusiBoardGetValue(BoardSupportedID Id, ref UInt32 pValue);
- [DllImport("Susi4")]
- public static extern Susi4.SusiLib.SusiStatus SusiBoardGetValue(BoardInformationID Id, ref UInt32 pValue);
- [DllImport("Susi4")]
- public static extern Susi4.SusiLib.SusiStatus SusiBoardGetValue(BoardFanID Id, ref UInt32 pValue);
- [DllImport("Susi4")]
- public static extern Susi4.SusiLib.SusiStatus SusiBoardGetValue(BoardCurrentID Id, ref UInt32 pValue);
- [DllImport("Susi4")]
- public static extern Susi4.SusiLib.SusiStatus SusiBoardGetValue(BoardCaseOpenID Id, ref UInt32 pValue);
- public const UInt32 SUSI_ID_GET_NAME_MASK = 0xF0000000;
- public static UInt32 SUSI_ID_GET_NAME_BASE(UInt32 Id)
- {
- return (Id & SUSI_ID_GET_NAME_MASK);
- }
- public const UInt32 SUSI_ID_BASE_GET_NAME_HWM = 0x00000000;
- public const UInt32 SUSI_ID_BASE_GET_NAME_HWM_FANCONTROL = 0x10000000;
- public const UInt32 SUSI_ID_BASE_GET_NAME_I2C = 0x20000000;
- public const UInt32 SUSI_ID_BASE_GET_NAME_SMB = 0x30000000;
- public const UInt32 SUSI_ID_BASE_GET_NAME_GPIO = 0x40000000;
- public const UInt32 SUSI_ID_BASE_GET_NAME_WDT = 0x50000000;
- public const UInt32 SUSI_ID_BASE_GET_NAME_VGA_BACKLIGHT = 0x60000000;
- public const UInt32 SUSI_ID_BASE_GET_NAME_STORAGE = 0x70000000;
- public const UInt32 SUSI_ID_BASE_GET_NAME_TML = 0x80000000;
- public const UInt32 SUSI_ID_BASE_GET_NAME_INFO = 0x90000000;
- public static UInt32 SUSI_ID_MAPPING_GET_NAME_HWM(UInt32 Id)
- {
- return (Id | SUSI_ID_BASE_GET_NAME_HWM);
- }
- public static UInt32 SUSI_ID_MAPPING_GET_NAME_HWM_FANCONTROL(UInt32 Id)
- {
- return (Id | SUSI_ID_BASE_GET_NAME_HWM_FANCONTROL);
- }
- public static UInt32 SUSI_ID_MAPPING_GET_NAME_I2C(UInt32 Id)
- {
- return (Id | SUSI_ID_BASE_GET_NAME_I2C);
- }
- public static UInt32 SUSI_ID_MAPPING_GET_NAME_SMB(UInt32 Id)
- {
- return (Id | SUSI_ID_BASE_GET_NAME_SMB);
- }
- public static UInt32 SUSI_ID_MAPPING_GET_NAME_GPIO(UInt32 Id)
- {
- return (Id | SUSI_ID_BASE_GET_NAME_GPIO);
- }
- public static UInt32 SUSI_ID_MAPPING_GET_NAME_WDT(UInt32 Id)
- {
- return (Id | SUSI_ID_BASE_GET_NAME_WDT);
- }
- public static UInt32 SUSI_ID_MAPPING_GET_NAME_VGA_BACKLIGHT(UInt32 Id)
- {
- return (Id | SUSI_ID_BASE_GET_NAME_VGA_BACKLIGHT);
- }
- public static UInt32 SUSI_ID_MAPPING_GET_NAME_STORAGE(UInt32 Id)
- {
- return (Id | SUSI_ID_BASE_GET_NAME_STORAGE);
- }
- public static UInt32 SUSI_ID_MAPPING_GET_NAME_TML(UInt32 Id)
- {
- return (Id | SUSI_ID_BASE_GET_NAME_TML);
- }
- public static UInt32 SUSI_ID_MAPPING_GET_NAME_INFO(UInt32 Id)
- {
- return (Id | SUSI_ID_BASE_GET_NAME_INFO);
- }
- public const uint MAX_BANK_NUM = 4;
- public enum BoardInformationStringID : UInt32
- {
- MANUFACTURER_STR = 0x00000000,
- NAME_STR = 0x00000001,
- REVISION_STR = 0x00000002,
- SERIAL_STR = 0x00000003,
- BIOS_REVISION_STR = 0x00000004,
- HW_REVISION_STR = 0x00000005,
- PLATFORM_TYPE_STR = 0x00000006,
- EC_FW_STR = 0x00000007,
- BIOS_FW_STR = 0x00000008,
- OEM0_STR = 0x00000010,
- OEM1_STR = 0x00000011,
- OEM2_STR = 0x00000012,
- }
- public static UInt32 SUSI_ID_GPIO(UInt32 Num)
- {
- return Num;
- }
- public static UInt32 SUSI_ID_GPIO_BANK(UInt32 BankNum)
- {
- return BankNum + 0x00010000;
- }
- public static UInt32 SUSI_ID_GPIO_PIN_BANK(UInt32 GPIO_NUM)
- {
- return (0x00010000 | ((GPIO_NUM) >> 5));
- }
- // Item ID
- public enum GPIOCapabilitiesID : UInt32
- {
- INPUT_SUPPORT = 0,
- OUTPUT_SUPPORT = 1,
- }
- [DllImport("Susi4")]
- public static extern SusiLib.SusiStatus SusiGPIOGetCaps(UInt32 Id, GPIOCapabilitiesID ItemId, ref UInt32 pValue);
- public const UInt32 SUSI_GPIO_OUTPUT = 0;
- public const UInt32 SUSI_GPIO_INPUT = 1;
- public enum GPIODirection : UInt32
- {
- OUTPUT = 0,
- INPUT = 1,
- }
- [DllImport("Susi4")]
- public static extern SusiLib.SusiStatus SusiGPIOGetDirection(UInt32 Id, UInt32 Bitmask, ref GPIODirection pDirection);
- [DllImport("Susi4")]
- public static extern SusiLib.SusiStatus SusiGPIOSetDirection(UInt32 Id, UInt32 Bitmask, GPIODirection Direction);
- public enum GPIOLevel : UInt32
- {
- LOW = 0,
- HIGH = 1,
- }
- [DllImport("Susi4")]
- public static extern SusiStatus SusiGPIOGetLevel(UInt32 Id, UInt32 Bitmask, ref GPIOLevel pLevel);
- [DllImport("Susi4")]
- public static extern SusiStatus SusiGPIOSetLevel(UInt32 Id, UInt32 Bitmask, GPIOLevel Level);
- [DllImport("Susi4")]
- public static extern Susi4.SusiLib.SusiStatus SusiBoardGetStringA(uint Id, StringBuilder pBuffer, ref UInt32 pBufLen);
- [DllImport("Susi4")]
- public static extern Susi4.SusiLib.SusiStatus SusiBoardGetStringA(BoardInformationStringID Id, StringBuilder pBuffer, ref UInt32 pBufLen);
- [DllImport("Susi4")]
- public static extern Susi4.SusiLib.SusiStatus SusiBoardReadIO(UInt16 Port, ref UInt32 pValue, UInt32 Length);
- [DllImport("Susi4")]
- public static extern Susi4.SusiLib.SusiStatus SusiBoardWriteIO(UInt16 Port, UInt32 Value, UInt32 Length);
- [DllImport("Susi4")]
- public static extern Susi4.SusiLib.SusiStatus SusiBoardReadPCI(byte Bus, byte Device, byte Function, UInt32 Offset, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 5)] byte[] pData, UInt32 Length);
- [DllImport("Susi4")]
- public static extern Susi4.SusiLib.SusiStatus SusiBoardWritePCI(byte Bus, byte Device, byte Function, UInt32 Offset, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 5)] byte[] pData, UInt32 Length);
- [DllImport("Susi4")]
- public static extern Susi4.SusiLib.SusiStatus SusiBoardReadMemory(UInt32 Address, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)] byte[] pData, UInt32 Length);
- [DllImport("Susi4")]
- public static extern Susi4.SusiLib.SusiStatus SusiBoardWriteMemory(UInt32 Address, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)] byte[] pData, UInt32 Length);
- [DllImport("Susi4")]
- public static extern Susi4.SusiLib.SusiStatus SusiBoardReadMSR(UInt32 index, ref UInt32 EAX, ref UInt32 EDX);
- [DllImport("Susi4")]
- public static extern Susi4.SusiLib.SusiStatus SusiBoardWriteMSR(UInt32 index, UInt32 EAX, UInt32 EDX);
- }
- }
|