drm/nouveau/therm: turn on fan only when threshold hit in positive direction
authorMarcin Slusarz <marcin.slusarz@gmail.com>
Sun, 3 Feb 2013 17:17:41 +0000 (18:17 +0100)
committerBen Skeggs <bskeggs@redhat.com>
Wed, 20 Feb 2013 06:00:41 +0000 (16:00 +1000)
+ the same for shutdown threshold - seems impossible, but shutdown can fail.

Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com>
Acked-by: Martin Peres <martin.peres@labri.fr>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/core/subdev/therm/temp.c

index bf9b3cefb5149a5e0888e276a48299aa8ebccdd2..8f27b44db4daae4cda836e687707a31a887d990c 100644 (file)
@@ -105,7 +105,7 @@ void nouveau_therm_sensor_event(struct nouveau_therm *therm,
                return;
 
        if (dir == NOUVEAU_THERM_THRS_FALLING)
-               nv_info(therm, "temperature (%u C) went bellow the '%s' threshold\n",
+               nv_info(therm, "temperature (%u C) went below the '%s' threshold\n",
                        temperature, thresolds[thrs]);
        else
                nv_info(therm, "temperature (%u C) hit the '%s' threshold\n",
@@ -114,8 +114,10 @@ void nouveau_therm_sensor_event(struct nouveau_therm *therm,
        active = (dir == NOUVEAU_THERM_THRS_RISING);
        switch (thrs) {
        case NOUVEAU_THERM_THRS_FANBOOST:
-               nouveau_therm_fan_set(therm, true, 100);
-               nouveau_therm_mode(therm, NOUVEAU_THERM_CTRL_AUTO);
+               if (active) {
+                       nouveau_therm_fan_set(therm, true, 100);
+                       nouveau_therm_mode(therm, NOUVEAU_THERM_CTRL_AUTO);
+               }
                break;
        case NOUVEAU_THERM_THRS_DOWNCLOCK:
                if (priv->emergency.downclock)
@@ -126,7 +128,8 @@ void nouveau_therm_sensor_event(struct nouveau_therm *therm,
                        priv->emergency.pause(therm, active);
                break;
        case NOUVEAU_THERM_THRS_SHUTDOWN:
-               orderly_poweroff(true);
+               if (active)
+                       orderly_poweroff(true);
                break;
        case NOUVEAU_THERM_THRS_NR:
                break;