/* SPDX-License-Identifier: GPL-2.0-or-later */ #ifndef SUPERIO_ITE_ENV_CTRL_CHIP_H #define SUPERIO_ITE_ENV_CTRL_CHIP_H #define ITE_EC_TMPIN_CNT 3 #if CONFIG(SUPERIO_ITE_ENV_CTRL_5FANS) #define ITE_EC_FAN_CNT 5 #else #define ITE_EC_FAN_CNT 3 #endif #define ITE_EC_FAN_VECTOR_CNT 2 /* A, B */ /* Supported thermal mode on TMPINx */ enum ite_ec_thermal_mode { THERMAL_MODE_DISABLED = 0, THERMAL_DIODE, THERMAL_RESISTOR, THERMAL_PECI, }; struct ite_ec_thermal_config { enum ite_ec_thermal_mode mode; /* Offset is used for diode sensors and PECI */ u8 offset; /* Limits */ u8 min; u8 max; }; /* Bit mask for voltage pins VINx */ enum ite_ec_voltage_pin { VIN0 = 0x01, VIN1 = 0x02, VIN2 = 0x04, VIN3 = 0x08, VIN4 = 0x10, VIN5 = 0x20, VIN6 = 0x40, VIN7 = 0x80, VIN_ALL = 0xff }; enum ite_ec_fan_mode { FAN_IGNORE = 0, FAN_MODE_ON, FAN_MODE_OFF, FAN_SMART_SOFTWARE, FAN_SMART_AUTOMATIC, }; struct ite_ec_fan_smartconfig { u8 tmpin; /* select TMPINx (1, 2 or 3) */ u8 tmp_off; /* turn fan off below (°C) */ u8 tmp_start; /* turn fan on above (°C) */ u8 tmp_full; /* 100% duty cycle above (°C) */ u8 tmp_delta; /* adapt fan speed when temperature changed by at least `tmp_delta`°C */ u8 full_lmt; /* force fan to full PWM at thermal limit */ u8 smoothing; /* enable smoothing */ u8 pwm_start; /* start at this duty cycle (%) */ u8 slope; /* increase duty cycle by `slope`%/°C */ u8 clsd_loop; /* tachometer closed-loop mode enable */ u16 rpm_start; /* start at this RPM (clsd_loop = 1) */ }; struct ite_ec_fan_config { enum ite_ec_fan_mode mode; struct ite_ec_fan_smartconfig smart; }; /* Special fan control modes that will assist smart control */ struct ite_ec_fan_vector_config { u8 tmpin; /* select TMPINx (1, 2 or 3) */ u8 fanout; /* select FANx (1, 2 or 3) */ u8 tmp_start; u8 tmp_delta; u8 tmp_range; /* restrict the range of the vector function, 0x00 to disable */ s8 slope; }; struct ite_ec_config { /* * Enable reading of voltage pins VINx. */ enum ite_ec_voltage_pin vin_mask; /* * Enable temperature sensors in given mode. */ struct ite_ec_thermal_config tmpin[ITE_EC_TMPIN_CNT]; /* * Enable a FAN in given mode. */ struct ite_ec_fan_config fan[ITE_EC_FAN_CNT]; /* * Enable special FAN vector control. */ struct ite_ec_fan_vector_config fan_vector[ITE_EC_FAN_VECTOR_CNT]; bool tmpin_beep; bool fan_beep; bool vin_beep; /* * Enable SMBus for external thermal sensor. */ bool smbus_en; /* * Select 24 MHz clock for external host instead of an * internally generated 32 MHz clock. */ bool smbus_24mhz; }; /* Some shorthands for device trees */ #define TMPIN1 ec.tmpin[0] #define TMPIN2 ec.tmpin[1] #define TMPIN3 ec.tmpin[2] #define FAN1 ec.fan[0] #define FAN2 ec.fan[1] #define FAN3 ec.fan[2] #define FAN4 ec.fan[3] #define FAN5 ec.fan[4] #define FAN_VECA ec.fan_vector[0] #define FAN_VECB ec.fan_vector[1] #endif /* SUPERIO_ITE_ENV_CTRL_CHIP_H */