forked from Minki/linux
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:
parent
547807b8ce
commit
6387e2cbdc
@ -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,
|
||||
|
@ -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;
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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 */
|
||||
|
Loading…
Reference in New Issue
Block a user