drm/nv40/therm: reset temperature sensor on init
authorMarcin Slusarz <marcin.slusarz@gmail.com>
Sun, 3 Feb 2013 18:12:49 +0000 (19:12 +0100)
committerBen Skeggs <bskeggs@redhat.com>
Wed, 20 Feb 2013 06:00:42 +0000 (16:00 +1000)
Current uninitialized sensor detection does not work for me on nv4b and
sensor returns crazy values (>190°C). It stabilises later, but it's too
late - therm code shutdowns the machine...

Let's just reset it on init.

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/nv40.c

index accc628948c42526647901fccad6d49b4a5e9c26..0f5363edb96435ec8fb992abab3479a462bcdf88 100644 (file)
@@ -173,13 +173,23 @@ nv40_therm_ctor(struct nouveau_object *parent,
        return nouveau_therm_preinit(&priv->base.base);
 }
 
+static int
+nv40_therm_init(struct nouveau_object *object)
+{
+       struct nouveau_therm *therm = (void *)object;
+
+       nv40_sensor_setup(therm);
+
+       return _nouveau_therm_init(object);
+}
+
 struct nouveau_oclass
 nv40_therm_oclass = {
        .handle = NV_SUBDEV(THERM, 0x40),
        .ofuncs = &(struct nouveau_ofuncs) {
                .ctor = nv40_therm_ctor,
                .dtor = _nouveau_therm_dtor,
-               .init = _nouveau_therm_init,
+               .init = nv40_therm_init,
                .fini = _nouveau_therm_fini,
        },
 };