diff options
Diffstat (limited to 'zephyr/program/skyrim/winterhold/src/thermal.c')
-rw-r--r-- | zephyr/program/skyrim/winterhold/src/thermal.c | 81 |
1 files changed, 0 insertions, 81 deletions
diff --git a/zephyr/program/skyrim/winterhold/src/thermal.c b/zephyr/program/skyrim/winterhold/src/thermal.c index 00e162e45a..0ccd9dd9e2 100644 --- a/zephyr/program/skyrim/winterhold/src/thermal.c +++ b/zephyr/program/skyrim/winterhold/src/thermal.c @@ -4,11 +4,9 @@ */ #include "body_detection.h" -#include "fan.h" #include "hooks.h" #include "host_command.h" #include "lid_switch.h" -#include "math_util.h" #include "temp_sensor/temp_sensor.h" #include "thermal.h" @@ -211,82 +209,3 @@ static void detect_temp_change(void) } } DECLARE_HOOK(HOOK_SECOND, detect_temp_change, HOOK_PRIO_TEMP_SENSOR_DONE); - -#ifdef CONFIG_PLATFORM_EC_CUSTOM_FAN_DUTY_CONTROL - -K_TIMER_DEFINE(grace_period_timer, NULL, NULL); - -enum fan_status board_override_fan_control_duty(int ch) -{ - int duty, rpm_diff, deviation, duty_step; - struct fan_data *data = &fan_data[ch]; - int rpm_actual = data->rpm_actual; - int rpm_target = data->rpm_target; - - /* This works with one fan only. */ - if (ch != 0) { - CPRINTS("Only FAN0 is supported!"); - return FAN_STATUS_FRUSTRATED; - } - - /* Wait for fan RPM to catch up after its duty has been changed. */ - if (k_timer_remaining_ticks(&grace_period_timer) != 0) - return FAN_STATUS_LOCKED; - - duty = fan_get_duty(ch); - if (duty == 0 && rpm_target == 0) - return FAN_STATUS_STOPPED; - - /* - * If the current RPM is close enough to the target just leave it. - * It's always going to fluctuate a bit anyway. - */ - deviation = fans[ch].rpm->rpm_deviation * rpm_target / 100; - rpm_diff = rpm_target - rpm_actual; - if (rpm_diff > deviation) { - /* Can't set duty higher than 100%... */ - if (duty == 100) - return FAN_STATUS_FRUSTRATED; - } else if (rpm_diff < -deviation) { - /* Can't set duty lower than 1%... */ - if (duty == 1 && rpm_target != 0) - return FAN_STATUS_FRUSTRATED; - } else { - return FAN_STATUS_LOCKED; - } - - /* - * The rpm_diff -> duty_step conversion is specific to a specific - * whiterun fan. - * It has been determined empirically. - */ - if (ABS(rpm_diff) >= 2500) { - duty_step = 35; - k_timer_start(&grace_period_timer, K_MSEC(800), K_NO_WAIT); - } else if (ABS(rpm_diff) >= 2000) { - duty_step = 28; - k_timer_start(&grace_period_timer, K_MSEC(800), K_NO_WAIT); - } else if (ABS(rpm_diff) >= 1000) { - duty_step = 14; - k_timer_start(&grace_period_timer, K_MSEC(800), K_NO_WAIT); - } else if (ABS(rpm_diff) >= 500) { - duty_step = 6; - k_timer_start(&grace_period_timer, K_MSEC(800), K_NO_WAIT); - } else if (ABS(rpm_diff) >= 250) { - duty_step = 3; - k_timer_start(&grace_period_timer, K_MSEC(600), K_NO_WAIT); - } else { - duty_step = 1; - k_timer_start(&grace_period_timer, K_MSEC(600), K_NO_WAIT); - } - - if (rpm_diff > 0) - duty = MIN(duty + duty_step, 100); - else - duty = MAX(duty - duty_step, 1); - - fan_set_duty(ch, duty); - - return FAN_STATUS_CHANGING; -} -#endif |