powerpc/windfarm: Fix overtemperature clearing
[linux-2.6-microblaze.git] / drivers / macintosh / windfarm_pm81.c
index f84933f..2a5e1b1 100644 (file)
@@ -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)