drm/nouveau/therm: switch to subdev printk macros
[firefly-linux-kernel-4.4.55.git] / drivers / gpu / drm / nouveau / nvkm / subdev / therm / temp.c
index aa13744f3854bc2ec769386e657742e87595d128..b346f3a0ff119bb522924cea2ff87800f9dfaf78 100644 (file)
 #include "priv.h"
 
 static void
-nvkm_therm_temp_set_defaults(struct nvkm_therm *therm)
+nvkm_therm_temp_set_defaults(struct nvkm_therm *obj)
 {
-       struct nvkm_therm_priv *priv = (void *)therm;
+       struct nvkm_therm_priv *therm = container_of(obj, typeof(*therm), base);
 
-       priv->bios_sensor.offset_constant = 0;
+       therm->bios_sensor.offset_constant = 0;
 
-       priv->bios_sensor.thrs_fan_boost.temp = 90;
-       priv->bios_sensor.thrs_fan_boost.hysteresis = 3;
+       therm->bios_sensor.thrs_fan_boost.temp = 90;
+       therm->bios_sensor.thrs_fan_boost.hysteresis = 3;
 
-       priv->bios_sensor.thrs_down_clock.temp = 95;
-       priv->bios_sensor.thrs_down_clock.hysteresis = 3;
+       therm->bios_sensor.thrs_down_clock.temp = 95;
+       therm->bios_sensor.thrs_down_clock.hysteresis = 3;
 
-       priv->bios_sensor.thrs_critical.temp = 105;
-       priv->bios_sensor.thrs_critical.hysteresis = 5;
+       therm->bios_sensor.thrs_critical.temp = 105;
+       therm->bios_sensor.thrs_critical.hysteresis = 5;
 
-       priv->bios_sensor.thrs_shutdown.temp = 135;
-       priv->bios_sensor.thrs_shutdown.hysteresis = 5; /*not that it matters */
+       therm->bios_sensor.thrs_shutdown.temp = 135;
+       therm->bios_sensor.thrs_shutdown.hysteresis = 5; /*not that it matters */
 }
 
 
 static void
-nvkm_therm_temp_safety_checks(struct nvkm_therm *therm)
+nvkm_therm_temp_safety_checks(struct nvkm_therm *obj)
 {
-       struct nvkm_therm_priv *priv = (void *)therm;
-       struct nvbios_therm_sensor *s = &priv->bios_sensor;
+       struct nvkm_therm_priv *therm = container_of(obj, typeof(*therm), base);
+       struct nvbios_therm_sensor *s = &therm->bios_sensor;
 
        /* enforce a minimum hysteresis on thresholds */
        s->thrs_fan_boost.hysteresis = max_t(u8, s->thrs_fan_boost.hysteresis, 2);
@@ -59,21 +59,21 @@ nvkm_therm_temp_safety_checks(struct nvkm_therm *therm)
 
 /* must be called with alarm_program_lock taken ! */
 void
-nvkm_therm_sensor_set_threshold_state(struct nvkm_therm *therm,
+nvkm_therm_sensor_set_threshold_state(struct nvkm_therm *obj,
                                      enum nvkm_therm_thrs thrs,
                                      enum nvkm_therm_thrs_state st)
 {
-       struct nvkm_therm_priv *priv = (void *)therm;
-       priv->sensor.alarm_state[thrs] = st;
+       struct nvkm_therm_priv *therm = container_of(obj, typeof(*therm), base);
+       therm->sensor.alarm_state[thrs] = st;
 }
 
 /* must be called with alarm_program_lock taken ! */
 enum nvkm_therm_thrs_state
-nvkm_therm_sensor_get_threshold_state(struct nvkm_therm *therm,
+nvkm_therm_sensor_get_threshold_state(struct nvkm_therm *obj,
                                      enum nvkm_therm_thrs thrs)
 {
-       struct nvkm_therm_priv *priv = (void *)therm;
-       return priv->sensor.alarm_state[thrs];
+       struct nvkm_therm_priv *therm = container_of(obj, typeof(*therm), base);
+       return therm->sensor.alarm_state[thrs];
 }
 
 static void
@@ -84,41 +84,43 @@ nv_poweroff_work(struct work_struct *work)
 }
 
 void
-nvkm_therm_sensor_event(struct nvkm_therm *therm, enum nvkm_therm_thrs thrs,
+nvkm_therm_sensor_event(struct nvkm_therm *obj, enum nvkm_therm_thrs thrs,
                        enum nvkm_therm_thrs_direction dir)
 {
-       struct nvkm_therm_priv *priv = (void *)therm;
+       struct nvkm_therm_priv *therm = container_of(obj, typeof(*therm), base);
+       struct nvkm_subdev *subdev = &therm->base.subdev;
        bool active;
        const char *thresolds[] = {
                "fanboost", "downclock", "critical", "shutdown"
        };
-       int temperature = therm->temp_get(therm);
+       int temperature = therm->base.temp_get(&therm->base);
 
        if (thrs < 0 || thrs > 3)
                return;
 
        if (dir == NVKM_THERM_THRS_FALLING)
-               nv_info(therm, "temperature (%i C) went below the '%s' threshold\n",
-                       temperature, thresolds[thrs]);
+               nvkm_info(subdev,
+                         "temperature (%i C) went below the '%s' threshold\n",
+                         temperature, thresolds[thrs]);
        else
-               nv_info(therm, "temperature (%i C) hit the '%s' threshold\n",
-                       temperature, thresolds[thrs]);
+               nvkm_info(subdev, "temperature (%i C) hit the '%s' threshold\n",
+                         temperature, thresolds[thrs]);
 
        active = (dir == NVKM_THERM_THRS_RISING);
        switch (thrs) {
        case NVKM_THERM_THRS_FANBOOST:
                if (active) {
-                       nvkm_therm_fan_set(therm, true, 100);
-                       nvkm_therm_fan_mode(therm, NVKM_THERM_CTRL_AUTO);
+                       nvkm_therm_fan_set(&therm->base, true, 100);
+                       nvkm_therm_fan_mode(&therm->base, NVKM_THERM_CTRL_AUTO);
                }
                break;
        case NVKM_THERM_THRS_DOWNCLOCK:
-               if (priv->emergency.downclock)
-                       priv->emergency.downclock(therm, active);
+               if (therm->emergency.downclock)
+                       therm->emergency.downclock(&therm->base, active);
                break;
        case NVKM_THERM_THRS_CRITICAL:
-               if (priv->emergency.pause)
-                       priv->emergency.pause(therm, active);
+               if (therm->emergency.pause)
+                       therm->emergency.pause(&therm->base, active);
                break;
        case NVKM_THERM_THRS_SHUTDOWN:
                if (active) {
@@ -166,67 +168,70 @@ nvkm_therm_threshold_hyst_polling(struct nvkm_therm *therm,
 static void
 alarm_timer_callback(struct nvkm_alarm *alarm)
 {
-       struct nvkm_therm_priv *priv =
+       struct nvkm_therm_priv *therm =
        container_of(alarm, struct nvkm_therm_priv, sensor.therm_poll_alarm);
-       struct nvbios_therm_sensor *sensor = &priv->bios_sensor;
-       struct nvkm_timer *ptimer = nvkm_timer(priv);
-       struct nvkm_therm *therm = &priv->base;
+       struct nvbios_therm_sensor *sensor = &therm->bios_sensor;
+       struct nvkm_timer *tmr = nvkm_timer(therm);
        unsigned long flags;
 
-       spin_lock_irqsave(&priv->sensor.alarm_program_lock, flags);
+       spin_lock_irqsave(&therm->sensor.alarm_program_lock, flags);
 
-       nvkm_therm_threshold_hyst_polling(therm, &sensor->thrs_fan_boost,
+       nvkm_therm_threshold_hyst_polling(&therm->base, &sensor->thrs_fan_boost,
                                          NVKM_THERM_THRS_FANBOOST);
 
-       nvkm_therm_threshold_hyst_polling(therm, &sensor->thrs_down_clock,
+       nvkm_therm_threshold_hyst_polling(&therm->base,
+                                         &sensor->thrs_down_clock,
                                          NVKM_THERM_THRS_DOWNCLOCK);
 
-       nvkm_therm_threshold_hyst_polling(therm, &sensor->thrs_critical,
+       nvkm_therm_threshold_hyst_polling(&therm->base, &sensor->thrs_critical,
                                          NVKM_THERM_THRS_CRITICAL);
 
-       nvkm_therm_threshold_hyst_polling(therm, &sensor->thrs_shutdown,
+       nvkm_therm_threshold_hyst_polling(&therm->base, &sensor->thrs_shutdown,
                                          NVKM_THERM_THRS_SHUTDOWN);
 
-       spin_unlock_irqrestore(&priv->sensor.alarm_program_lock, flags);
+       spin_unlock_irqrestore(&therm->sensor.alarm_program_lock, flags);
 
        /* schedule the next poll in one second */
-       if (therm->temp_get(therm) >= 0 && list_empty(&alarm->head))
-               ptimer->alarm(ptimer, 1000000000ULL, alarm);
+       if (therm->base.temp_get(&therm->base) >= 0 && list_empty(&alarm->head))
+               tmr->alarm(tmr, 1000000000ULL, alarm);
 }
 
 void
-nvkm_therm_program_alarms_polling(struct nvkm_therm *therm)
+nvkm_therm_program_alarms_polling(struct nvkm_therm *obj)
 {
-       struct nvkm_therm_priv *priv = (void *)therm;
-       struct nvbios_therm_sensor *sensor = &priv->bios_sensor;
-
-       nv_debug(therm,
-                "programmed thresholds [ %d(%d), %d(%d), %d(%d), %d(%d) ]\n",
-                sensor->thrs_fan_boost.temp, sensor->thrs_fan_boost.hysteresis,
-                sensor->thrs_down_clock.temp,
-                sensor->thrs_down_clock.hysteresis,
-                sensor->thrs_critical.temp, sensor->thrs_critical.hysteresis,
-                sensor->thrs_shutdown.temp, sensor->thrs_shutdown.hysteresis);
-
-       alarm_timer_callback(&priv->sensor.therm_poll_alarm);
+       struct nvkm_therm_priv *therm = container_of(obj, typeof(*therm), base);
+       struct nvbios_therm_sensor *sensor = &therm->bios_sensor;
+
+       nvkm_debug(&therm->base.subdev,
+                  "programmed thresholds [ %d(%d), %d(%d), %d(%d), %d(%d) ]\n",
+                  sensor->thrs_fan_boost.temp,
+                  sensor->thrs_fan_boost.hysteresis,
+                  sensor->thrs_down_clock.temp,
+                  sensor->thrs_down_clock.hysteresis,
+                  sensor->thrs_critical.temp,
+                  sensor->thrs_critical.hysteresis,
+                  sensor->thrs_shutdown.temp,
+                  sensor->thrs_shutdown.hysteresis);
+
+       alarm_timer_callback(&therm->sensor.therm_poll_alarm);
 }
 
 int
-nvkm_therm_sensor_init(struct nvkm_therm *therm)
+nvkm_therm_sensor_init(struct nvkm_therm *obj)
 {
-       struct nvkm_therm_priv *priv = (void *)therm;
-       priv->sensor.program_alarms(therm);
+       struct nvkm_therm_priv *therm = container_of(obj, typeof(*therm), base);
+       therm->sensor.program_alarms(&therm->base);
        return 0;
 }
 
 int
-nvkm_therm_sensor_fini(struct nvkm_therm *therm, bool suspend)
+nvkm_therm_sensor_fini(struct nvkm_therm *obj, bool suspend)
 {
-       struct nvkm_therm_priv *priv = (void *)therm;
-       struct nvkm_timer *ptimer = nvkm_timer(therm);
+       struct nvkm_therm_priv *therm = container_of(obj, typeof(*therm), base);
+       struct nvkm_timer *tmr = nvkm_timer(therm);
 
        if (suspend)
-               ptimer->alarm_cancel(ptimer, &priv->sensor.therm_poll_alarm);
+               tmr->alarm_cancel(tmr, &therm->sensor.therm_poll_alarm);
        return 0;
 }
 
@@ -238,22 +243,23 @@ nvkm_therm_sensor_preinit(struct nvkm_therm *therm)
        if (therm->temp_get(therm) < 0)
                sensor_avail = "no";
 
-       nv_info(therm, "internal sensor: %s\n", sensor_avail);
+       nvkm_debug(&therm->subdev, "internal sensor: %s\n", sensor_avail);
 }
 
 int
-nvkm_therm_sensor_ctor(struct nvkm_therm *therm)
+nvkm_therm_sensor_ctor(struct nvkm_therm *obj)
 {
-       struct nvkm_therm_priv *priv = (void *)therm;
+       struct nvkm_therm_priv *therm = container_of(obj, typeof(*therm), base);
+       struct nvkm_subdev *subdev = &therm->base.subdev;
        struct nvkm_bios *bios = nvkm_bios(therm);
 
-       nvkm_alarm_init(&priv->sensor.therm_poll_alarm, alarm_timer_callback);
+       nvkm_alarm_init(&therm->sensor.therm_poll_alarm, alarm_timer_callback);
 
-       nvkm_therm_temp_set_defaults(therm);
+       nvkm_therm_temp_set_defaults(&therm->base);
        if (nvbios_therm_sensor_parse(bios, NVBIOS_THERM_DOMAIN_CORE,
-                                     &priv->bios_sensor))
-               nv_error(therm, "nvbios_therm_sensor_parse failed\n");
-       nvkm_therm_temp_safety_checks(therm);
+                                     &therm->bios_sensor))
+               nvkm_error(subdev, "nvbios_therm_sensor_parse failed\n");
+       nvkm_therm_temp_safety_checks(&therm->base);
 
        return 0;
 }