drm/nouveau/therm: if no bios trip/linear info, default to perf-suggested speed
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
Родитель
6387e2cbdc
Коммит
36faa2fc22
|
@ -92,6 +92,7 @@ nouveau_therm_update(struct nouveau_therm *therm, int mode)
|
|||
struct nouveau_timer *ptimer = nouveau_timer(therm);
|
||||
struct nouveau_therm_priv *priv = (void *)therm;
|
||||
unsigned long flags;
|
||||
bool poll = true;
|
||||
int duty;
|
||||
|
||||
spin_lock_irqsave(&priv->lock, flags);
|
||||
|
@ -105,16 +106,24 @@ nouveau_therm_update(struct nouveau_therm *therm, int mode)
|
|||
duty = nouveau_therm_fan_get(therm);
|
||||
if (duty < 0)
|
||||
duty = 100;
|
||||
poll = false;
|
||||
break;
|
||||
case NOUVEAU_THERM_CTRL_AUTO:
|
||||
if (priv->fan->bios.nr_fan_trip)
|
||||
if (priv->fan->bios.nr_fan_trip) {
|
||||
duty = nouveau_therm_update_trip(therm);
|
||||
else
|
||||
} else
|
||||
if (priv->fan->bios.linear_min_temp ||
|
||||
priv->fan->bios.linear_max_temp) {
|
||||
duty = nouveau_therm_update_linear(therm);
|
||||
} else {
|
||||
duty = priv->cstate;
|
||||
poll = false;
|
||||
}
|
||||
break;
|
||||
case NOUVEAU_THERM_CTRL_NONE:
|
||||
default:
|
||||
ptimer->alarm_cancel(ptimer, &priv->alarm);
|
||||
poll = false;
|
||||
goto done;
|
||||
}
|
||||
|
||||
|
@ -122,7 +131,7 @@ nouveau_therm_update(struct nouveau_therm *therm, int mode)
|
|||
nouveau_therm_fan_set(therm, (mode != NOUVEAU_THERM_CTRL_AUTO), duty);
|
||||
|
||||
done:
|
||||
if (list_empty(&priv->alarm.head) && (mode == NOUVEAU_THERM_CTRL_AUTO))
|
||||
if (list_empty(&priv->alarm.head) && poll)
|
||||
ptimer->alarm(ptimer, 1000000000ULL, &priv->alarm);
|
||||
spin_unlock_irqrestore(&priv->lock, flags);
|
||||
}
|
||||
|
|
|
@ -185,8 +185,11 @@ nouveau_therm_fan_set_defaults(struct nouveau_therm *therm)
|
|||
priv->fan->bios.max_duty = 100;
|
||||
priv->fan->bios.bump_period = 500;
|
||||
priv->fan->bios.slow_down_period = 2000;
|
||||
/*XXX: talk to mupuf */
|
||||
#if 0
|
||||
priv->fan->bios.linear_min_temp = 40;
|
||||
priv->fan->bios.linear_max_temp = 85;
|
||||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
Загрузка…
Ссылка в новой задаче