diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2013-07-26 09:15:57 +1000 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2013-11-08 15:05:48 +1000 |
commit | 0e31a059a418e389d445393ea0f411dddce6ac24 (patch) | |
tree | 3db0467dedf650b732b02a79969703f672e1843f /nvkm/subdev/therm | |
parent | ffb77cf65749c2a74940137a7f6dadbd1130843c (diff) | |
download | nouveau-0e31a059a418e389d445393ea0f411dddce6ac24.tar.gz |
therm: add hook for clk to suggest fanspeed to therm
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'nvkm/subdev/therm')
-rw-r--r-- | nvkm/subdev/therm/base.c | 13 | ||||
-rw-r--r-- | nvkm/subdev/therm/priv.h | 1 |
2 files changed, 14 insertions, 0 deletions
diff --git a/nvkm/subdev/therm/base.c b/nvkm/subdev/therm/base.c index d2f10ad04..1f28249df 100644 --- a/nvkm/subdev/therm/base.c +++ b/nvkm/subdev/therm/base.c @@ -127,6 +127,19 @@ done: spin_unlock_irqrestore(&priv->lock, flags); } +int +nouveau_therm_cstate(struct nouveau_therm *ptherm, int fan, int dir) +{ + struct nouveau_therm_priv *priv = (void *)ptherm; + if (!dir || (dir < 0 && fan < priv->cstate) || + (dir > 0 && fan > priv->cstate)) { + nv_debug(ptherm, "default fan speed -> %d%%\n", fan); + priv->cstate = fan; + nouveau_therm_update(ptherm, -1); + } + return 0; +} + static void nouveau_therm_alarm(struct nouveau_alarm *alarm) { diff --git a/nvkm/subdev/therm/priv.h b/nvkm/subdev/therm/priv.h index 508b1ec4e..96f8f9569 100644 --- a/nvkm/subdev/therm/priv.h +++ b/nvkm/subdev/therm/priv.h @@ -76,6 +76,7 @@ struct nouveau_therm_priv { spinlock_t lock; struct nouveau_therm_trip_point *last_trip; int mode; + int cstate; int suspend; /* bios */ |