aboutsummaryrefslogtreecommitdiff
path: root/src/superio/ite/common/env_ctrl.c
diff options
context:
space:
mode:
authorMatt DeVillier <matt.devillier@gmail.com>2020-08-12 10:29:11 -0500
committerFelix Held <felix-coreboot@felixheld.de>2020-08-14 00:51:23 +0000
commit67f80fb8f56a1ff393306fac0d2930a41e3d2a19 (patch)
tree775f05ac05d23e42c6344f0d24ac1ee220ad4a20 /src/superio/ite/common/env_ctrl.c
parentdeb80ea8071d38a15fa9c06be0e069be55672b25 (diff)
superio/ite/common: Add support for closed-loop mode
Add support for tachometer closed loop mode, and programming of initial RPM vs initial PWM value. Change-Id: Idff29331c979f8518021103b6f8d19e75e657e3a Signed-off-by: Matt DeVillier <matt.devillier@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/44418 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
Diffstat (limited to 'src/superio/ite/common/env_ctrl.c')
-rw-r--r--src/superio/ite/common/env_ctrl.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/superio/ite/common/env_ctrl.c b/src/superio/ite/common/env_ctrl.c
index 8668110713..c87f32d3e0 100644
--- a/src/superio/ite/common/env_ctrl.c
+++ b/src/superio/ite/common/env_ctrl.c
@@ -128,13 +128,19 @@ static void fan_smartconfig(const u16 base, const u8 fan,
pwm_ctrl = ITE_EC_FAN_CTL_PWM_MODE_AUTOMATIC;
pwm_ctrl |= ITE_EC_FAN_CTL_TEMPIN(conf->tmpin);
- pwm_start = ITE_EC_FAN_CTL_PWM_START_DUTY(conf->pwm_start);
-
- if (CONFIG(SUPERIO_ITE_ENV_CTRL_7BIT_SLOPE_REG)) {
- pwm_auto = conf->slope & 0x7f;
- } else {
- pwm_start |= ITE_EC_FAN_CTL_PWM_SLOPE_BIT6(conf->slope);
+ if (conf->clsd_loop) {
+ pwm_ctrl |= ITE_EC_FAN_PWM_CLSD_LOOP;
+ pwm_start = ITE_EC_FAN_CTL_PWM_START_RPM(conf->rpm_start);
pwm_auto = ITE_EC_FAN_CTL_PWM_SLOPE_LOWER(conf->slope);
+ } else {
+ pwm_start = ITE_EC_FAN_CTL_PWM_START_DUTY(conf->pwm_start);
+
+ if (CONFIG(SUPERIO_ITE_ENV_CTRL_7BIT_SLOPE_REG)) {
+ pwm_auto = conf->slope & 0x7f;
+ } else {
+ pwm_start |= ITE_EC_FAN_CTL_PWM_SLOPE_BIT6(conf->slope);
+ pwm_auto = ITE_EC_FAN_CTL_PWM_SLOPE_LOWER(conf->slope);
+ }
}
if (conf->smoothing)