summaryrefslogtreecommitdiff
path: root/common/fan.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/fan.c')
-rw-r--r--common/fan.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/common/fan.c b/common/fan.c
index 520d6fe03b..d61eba67d9 100644
--- a/common/fan.c
+++ b/common/fan.c
@@ -266,10 +266,10 @@ int dptf_get_fan_duty_target(void)
{
int fan = 0; /* TODO(crosbug.com/p/23803) */
- if (thermal_control_enabled[fan] || fan_get_rpm_mode(fan))
+ if (thermal_control_enabled[fan] || fan_get_rpm_mode(fans[fan].ch))
return -1;
- return fan_get_duty(fan);
+ return fan_get_duty(fans[fan].ch);
}
/* 0-100% sets duty, out of range means let the EC drive */
@@ -367,6 +367,7 @@ BUILD_ASSERT(CONFIG_FANS <= EC_FAN_SPEED_ENTRIES);
#define PWM_HOOK_VERSION 1
/* Saved PWM state across sysjumps */
struct pwm_fan_state {
+ /* TODO(crosbug.com/p/23530): Still treating all fans as one. */
uint16_t fan_rpm;
uint8_t fan_en;
};
@@ -381,21 +382,25 @@ static void pwm_fan_init(void)
gpio_config_module(MODULE_PWM_FAN, 1);
- for (i = 0; i < CONFIG_FANS; i++)
- fan_channel_setup(fans[i].ch, fans[i].flags);
+ for (fan = 0; fan < CONFIG_FANS; fan++)
+ fan_channel_setup(fans[fan].ch, fans[fan].flags);
prev = (const struct pwm_fan_state *)
system_get_jump_tag(PWMFAN_SYSJUMP_TAG, &version, &size);
if (prev && version == PWM_HOOK_VERSION && size == sizeof(*prev)) {
/* Restore previous state. */
- fan_set_enabled(fans[fan].ch, prev->fan_en);
- fan_set_rpm_target(fans[fan].ch, prev->fan_rpm);
+ for (fan = 0; fan < CONFIG_FANS; fan++) {
+ fan_set_enabled(fans[fan].ch, prev->fan_en);
+ fan_set_rpm_target(fans[fan].ch, prev->fan_rpm);
+ }
} else {
/* Set initial fan speed to maximum */
- fan_set_duty(fans[fan].ch, 100);
+ for (fan = 0; fan < CONFIG_FANS; fan++)
+ fan_set_duty(fans[fan].ch, 100);
}
- set_thermal_control_enabled(fan, 1);
+ for (fan = 0; fan < CONFIG_FANS; fan++)
+ set_thermal_control_enabled(fan, 1);
/* Initialize memory-mapped data */
mapped = (uint16_t *)host_get_memmap(EC_MEMMAP_FAN);