evga-icx/icx3.h

97 lines
1.9 KiB
C
Raw Normal View History

2025-01-19 23:27:43 -08:00
#define ICX3_I2C_ADDR 0x2D
#define ICX3_REG_FANCONTROL 80
#define ICX3_REG_TEMPSENSOR 102
#define ICX3_REG_READINFORMATION 177
#define ICX3_FANCONTROL_SIZE 0x09
#define ICX3_TEMPSENSOR_SIZE 0x13
#define ICX3_READINFORMATION_SIZE 0x06
#define ICX3_MAX_FANS 4
#define ICX3_NUM_TEMP_SENSORS 9
struct icx3_fancontrol {
unsigned char length;
unsigned char fanmode;
unsigned short rpm_offset;
unsigned char duty;
unsigned char duty_status;
unsigned short rpm_status;
};
struct icx3_tempsensors {
unsigned char length;
unsigned char data[18];
};
struct icx3_info {
unsigned char reserved;
unsigned char slave_address;
unsigned char product_id;
unsigned char major_version;
unsigned char minor_version;
};
enum icx3_product_id {
ICX3_IAP = 160,
ICX3_E227_E228_FTW3 = 2,
ICX3_E230_FTW3 = 4,
ICX3_E227_E228_FTW3_HYBRID = 8,
ICX3_E227_E228_FTW3_HC = 9,
ICX3_E221_E222_XC3 = 1,
ICX3_E229_XC3 = 5,
ICX3_E221_E222_XC3_HYBRID = 6,
ICX3_E221_E222_XC3_HC = 7,
ICX3_IAP_KINGPIN = 161,
ICX3_E223_KINGPIN_HYBRID = 3,
ICX3_E223_KINGPIN_HC = 10,
ICX3_IAP_KINGPIN_E251 = 165,
ICX3_E251_KINGPIN_HYBRID = 19,
ICX3_E251_KINGPIN_HC = 26,
ICX3_IAP_LPC5516 = 164,
ICX3_E250_FTW3 = 50,
ICX3_E250_FTW3_HYBRID = 56,
ICX3_IAP_LPC54113 = 162,
ICX3_E227_E228_FTW3_LPC54113 = 18,
ICX3_E227_E228_FTW3_HYBRID_LPC54113 = 24,
ICX3_E230_FTW3_LPC54113 = 20,
ICX3_E222_XC3_LPC54113 = 17,
ICX3_E229_XC3_LPC54113 = 21,
ICX3_IAP_STM32L431 = 163,
ICX3_E230_E238_FTW3_STM32L431 = 36,
ICX3_E221_XC3_STM32L431 = 33,
ICX3_E229_E237_XC3_STM32L431 = 37,
ICX3_NONE = 0
}
const char *icx3_fan_names[] = {
"Fan 1",
"Fan 2",
"Fan 3",
"Ext. fan"
};
const char *icx3_fan_mode_names[] = {
"Default",
"Auto",
"Manual",
"Offset",
"MCU curve",
"Mode 3"
};
const char *icx3_temp_sensor_names[] = {
"GPU2",
"MEM1",
"MEM2",
"MEM3",
"PWR1",
"PWR2",
"PWR3",
"PWR4",
"PWR5",
};
enum icx3_product_id check_for_icx3(char *i2c_dev_path);