drm/nouveau/therm: add hook for clk to suggest fanspeed to therm

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
Ben Skeggs 2013-07-26 09:15:57 +10:00
parent 547807b8ce
commit 6387e2cbdc
4 changed files with 17 additions and 1 deletions

View file

@ -35,8 +35,8 @@ enum nv_subdev_type {
NVDEV_SUBDEV_BAR,
NVDEV_SUBDEV_PWR,
NVDEV_SUBDEV_VOLT,
NVDEV_SUBDEV_CLOCK,
NVDEV_SUBDEV_THERM,
NVDEV_SUBDEV_CLOCK,
NVDEV_ENGINE_DMAOBJ,
NVDEV_ENGINE_FIFO,

View file

@ -71,6 +71,8 @@ void _nouveau_therm_dtor(struct nouveau_object *);
int _nouveau_therm_init(struct nouveau_object *);
int _nouveau_therm_fini(struct nouveau_object *, bool);
int nouveau_therm_cstate(struct nouveau_therm *, int, int);
extern struct nouveau_oclass nv40_therm_oclass;
extern struct nouveau_oclass nv50_therm_oclass;
extern struct nouveau_oclass nv84_therm_oclass;

View file

@ -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)
{

View file

@ -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 */