|
@@ -149,6 +149,7 @@ static int wf_smu_all_controls_ok, wf_smu_all_sensors_ok, wf_smu_started;
|
|
|
|
|
|
static unsigned int wf_smu_failure_state;
|
|
|
static int wf_smu_readjust, wf_smu_skipping;
|
|
|
+static bool wf_smu_overtemp;
|
|
|
|
|
|
/*
|
|
|
* ****** System Fans Control Loop ******
|
|
@@ -593,6 +594,7 @@ static void wf_smu_tick(void)
|
|
|
if (new_failure & FAILURE_OVERTEMP) {
|
|
|
wf_set_overtemp();
|
|
|
wf_smu_skipping = 2;
|
|
|
+ wf_smu_overtemp = true;
|
|
|
}
|
|
|
|
|
|
/* We only clear the overtemp condition if overtemp is cleared
|
|
@@ -601,8 +603,10 @@ static void wf_smu_tick(void)
|
|
|
* the control loop levels, but we don't want to keep it clear
|
|
|
* here in this case
|
|
|
*/
|
|
|
- if (new_failure == 0 && last_failure & FAILURE_OVERTEMP)
|
|
|
+ if (!wf_smu_failure_state && wf_smu_overtemp) {
|
|
|
wf_clear_overtemp();
|
|
|
+ wf_smu_overtemp = false;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
static void wf_smu_new_control(struct wf_control *ct)
|