Loading drivers/gpu/drm/nouveau/nvkm/subdev/therm/base.c +8 −5 Original line number Diff line number Diff line Loading @@ -83,7 +83,8 @@ static void nvkm_therm_update(struct nvkm_therm *obj, int mode) { struct nvkm_therm_priv *therm = container_of(obj, typeof(*therm), base); struct nvkm_timer *tmr = nvkm_timer(therm); struct nvkm_subdev *subdev = &therm->base.subdev; struct nvkm_timer *tmr = subdev->device->timer; unsigned long flags; bool immd = true; bool poll = true; Loading Loading @@ -129,7 +130,7 @@ nvkm_therm_update(struct nvkm_therm *obj, int mode) spin_unlock_irqrestore(&therm->lock, flags); if (duty >= 0) { nv_debug(therm, "FAN target request: %d%%\n", duty); nvkm_debug(subdev, "FAN target request: %d%%\n", duty); nvkm_therm_fan_set(&therm->base, immd, duty); } } Loading @@ -138,9 +139,10 @@ int nvkm_therm_cstate(struct nvkm_therm *obj, int fan, int dir) { struct nvkm_therm_priv *therm = container_of(obj, typeof(*therm), base); struct nvkm_subdev *subdev = &therm->base.subdev; if (!dir || (dir < 0 && fan < therm->cstate) || (dir > 0 && fan > therm->cstate)) { nv_debug(therm, "default fan speed -> %d%%\n", fan); nvkm_debug(subdev, "default fan speed -> %d%%\n", fan); therm->cstate = fan; nvkm_therm_update(&therm->base, -1); } Loading @@ -159,7 +161,8 @@ int nvkm_therm_fan_mode(struct nvkm_therm *obj, int mode) { struct nvkm_therm_priv *therm = container_of(obj, typeof(*therm), base); struct nvkm_device *device = nv_device(therm); struct nvkm_subdev *subdev = &therm->base.subdev; struct nvkm_device *device = subdev->device; static const char *name[] = { "disabled", "manual", Loading @@ -181,7 +184,7 @@ nvkm_therm_fan_mode(struct nvkm_therm *obj, int mode) if (therm->mode == mode) return 0; nv_info(therm, "fan management: %s\n", name[mode]); nvkm_debug(subdev, "fan management: %s\n", name[mode]); nvkm_therm_update(&therm->base, mode); return 0; } Loading drivers/gpu/drm/nouveau/nvkm/subdev/therm/fan.c +12 −9 Original line number Diff line number Diff line Loading @@ -32,7 +32,8 @@ static int nvkm_fan_update(struct nvkm_fan *fan, bool immediate, int target) { struct nvkm_therm_priv *therm = (void *)fan->parent; struct nvkm_timer *tmr = nvkm_timer(therm); struct nvkm_subdev *subdev = &therm->base.subdev; struct nvkm_timer *tmr = subdev->device->timer; unsigned long flags; int ret = 0; int duty; Loading @@ -44,7 +45,7 @@ nvkm_fan_update(struct nvkm_fan *fan, bool immediate, int target) target = max_t(u8, target, fan->bios.min_duty); target = min_t(u8, target, fan->bios.max_duty); if (fan->percent != target) { nv_debug(therm, "FAN target: %d\n", target); nvkm_debug(subdev, "FAN target: %d\n", target); fan->percent = target; } Loading @@ -69,7 +70,7 @@ nvkm_fan_update(struct nvkm_fan *fan, bool immediate, int target) duty = target; } nv_debug(therm, "FAN update: %d\n", duty); nvkm_debug(subdev, "FAN update: %d\n", duty); ret = fan->set(&therm->base, duty); if (ret) { spin_unlock_irqrestore(&fan->lock, flags); Loading Loading @@ -228,8 +229,10 @@ int nvkm_therm_fan_ctor(struct nvkm_therm *obj) { struct nvkm_therm_priv *therm = container_of(obj, typeof(*therm), base); struct nvkm_gpio *gpio = nvkm_gpio(therm); struct nvkm_bios *bios = nvkm_bios(therm); struct nvkm_subdev *subdev = &therm->base.subdev; struct nvkm_device *device = subdev->device; struct nvkm_gpio *gpio = device->gpio; struct nvkm_bios *bios = device->bios; struct dcb_gpio_func func; int ret; Loading @@ -238,7 +241,7 @@ nvkm_therm_fan_ctor(struct nvkm_therm *obj) if (ret == 0) { /* FIXME: is this really the place to perform such checks ? */ if (func.line != 16 && func.log[0] & DCB_GPIO_LOG_DIR_IN) { nv_debug(therm, "GPIO_FAN is in input mode\n"); nvkm_debug(subdev, "GPIO_FAN is in input mode\n"); ret = -EINVAL; } else { ret = nvkm_fanpwm_create(&therm->base, &func); Loading @@ -254,7 +257,7 @@ nvkm_therm_fan_ctor(struct nvkm_therm *obj) return ret; } nv_info(therm, "FAN control: %s\n", therm->fan->type); nvkm_debug(subdev, "FAN control: %s\n", therm->fan->type); /* read the current speed, it is useful when resuming */ therm->fan->percent = nvkm_therm_fan_get(&therm->base); Loading @@ -273,9 +276,9 @@ nvkm_therm_fan_ctor(struct nvkm_therm *obj) nvkm_therm_fan_set_defaults(&therm->base); nvbios_perf_fan_parse(bios, &therm->fan->perf); if (!nvbios_fan_parse(bios, &therm->fan->bios)) { nv_debug(therm, "parsing the fan table failed\n"); nvkm_debug(subdev, "parsing the fan table failed\n"); if (nvbios_therm_fan_parse(bios, &therm->fan->bios)) nv_error(therm, "parsing both fan tables failed\n"); nvkm_error(subdev, "parsing both fan tables failed\n"); } nvkm_therm_fan_safety_checks(&therm->base); return 0; Loading drivers/gpu/drm/nouveau/nvkm/subdev/therm/g84.c +13 −9 Original line number Diff line number Diff line Loading @@ -56,8 +56,9 @@ static void g84_therm_program_alarms(struct nvkm_therm *obj) { struct nvkm_therm_priv *therm = container_of(obj, typeof(*therm), base); struct nvkm_device *device = therm->base.subdev.device; struct nvbios_therm_sensor *sensor = &therm->bios_sensor; struct nvkm_subdev *subdev = &therm->base.subdev; struct nvkm_device *device = subdev->device; unsigned long flags; spin_lock_irqsave(&therm->sensor.alarm_program_lock, flags); Loading @@ -79,13 +80,16 @@ g84_therm_program_alarms(struct nvkm_therm *obj) nvkm_wr32(device, 0x20414, sensor->thrs_down_clock.temp); spin_unlock_irqrestore(&therm->sensor.alarm_program_lock, flags); nv_debug(therm, nvkm_debug(subdev, "Programmed thresholds [ %d(%d), %d(%d), %d(%d), %d(%d) ]\n", sensor->thrs_fan_boost.temp, sensor->thrs_fan_boost.hysteresis, 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); sensor->thrs_critical.temp, sensor->thrs_critical.hysteresis, sensor->thrs_shutdown.temp, sensor->thrs_shutdown.hysteresis); } Loading Loading @@ -180,7 +184,7 @@ g84_therm_intr(struct nvkm_subdev *subdev) } if (intr) nv_error(therm, "unhandled intr 0x%08x\n", intr); nvkm_error(subdev, "intr %08x\n", intr); /* ACK everything */ nvkm_wr32(device, 0x20100, 0xffffffff); Loading drivers/gpu/drm/nouveau/nvkm/subdev/therm/gf110.c +3 −2 Original line number Diff line number Diff line Loading @@ -26,7 +26,8 @@ static int pwm_info(struct nvkm_therm *therm, int line) { struct nvkm_device *device = therm->subdev.device; struct nvkm_subdev *subdev = &therm->subdev; struct nvkm_device *device = subdev->device; u32 gpio = nvkm_rd32(device, 0x00d610 + (line * 0x04)); switch (gpio & 0x000000c0) { Loading @@ -44,7 +45,7 @@ pwm_info(struct nvkm_therm *therm, int line) break; } nv_error(therm, "GPIO %d unknown PWM: 0x%08x\n", line, gpio); nvkm_error(subdev, "GPIO %d unknown PWM: %08x\n", line, gpio); return -ENODEV; } Loading drivers/gpu/drm/nouveau/nvkm/subdev/therm/ic.c +4 −4 Original line number Diff line number Diff line Loading @@ -46,7 +46,7 @@ probe_monitoring_device(struct nvkm_i2c_port *i2c, return false; } nv_info(therm, nvkm_debug(&therm->base.subdev, "Found an %s at address 0x%x (controlled by lm_sensors, " "temp offset %+i C)\n", info->type, info->addr, sensor->offset_constant); Loading Loading
drivers/gpu/drm/nouveau/nvkm/subdev/therm/base.c +8 −5 Original line number Diff line number Diff line Loading @@ -83,7 +83,8 @@ static void nvkm_therm_update(struct nvkm_therm *obj, int mode) { struct nvkm_therm_priv *therm = container_of(obj, typeof(*therm), base); struct nvkm_timer *tmr = nvkm_timer(therm); struct nvkm_subdev *subdev = &therm->base.subdev; struct nvkm_timer *tmr = subdev->device->timer; unsigned long flags; bool immd = true; bool poll = true; Loading Loading @@ -129,7 +130,7 @@ nvkm_therm_update(struct nvkm_therm *obj, int mode) spin_unlock_irqrestore(&therm->lock, flags); if (duty >= 0) { nv_debug(therm, "FAN target request: %d%%\n", duty); nvkm_debug(subdev, "FAN target request: %d%%\n", duty); nvkm_therm_fan_set(&therm->base, immd, duty); } } Loading @@ -138,9 +139,10 @@ int nvkm_therm_cstate(struct nvkm_therm *obj, int fan, int dir) { struct nvkm_therm_priv *therm = container_of(obj, typeof(*therm), base); struct nvkm_subdev *subdev = &therm->base.subdev; if (!dir || (dir < 0 && fan < therm->cstate) || (dir > 0 && fan > therm->cstate)) { nv_debug(therm, "default fan speed -> %d%%\n", fan); nvkm_debug(subdev, "default fan speed -> %d%%\n", fan); therm->cstate = fan; nvkm_therm_update(&therm->base, -1); } Loading @@ -159,7 +161,8 @@ int nvkm_therm_fan_mode(struct nvkm_therm *obj, int mode) { struct nvkm_therm_priv *therm = container_of(obj, typeof(*therm), base); struct nvkm_device *device = nv_device(therm); struct nvkm_subdev *subdev = &therm->base.subdev; struct nvkm_device *device = subdev->device; static const char *name[] = { "disabled", "manual", Loading @@ -181,7 +184,7 @@ nvkm_therm_fan_mode(struct nvkm_therm *obj, int mode) if (therm->mode == mode) return 0; nv_info(therm, "fan management: %s\n", name[mode]); nvkm_debug(subdev, "fan management: %s\n", name[mode]); nvkm_therm_update(&therm->base, mode); return 0; } Loading
drivers/gpu/drm/nouveau/nvkm/subdev/therm/fan.c +12 −9 Original line number Diff line number Diff line Loading @@ -32,7 +32,8 @@ static int nvkm_fan_update(struct nvkm_fan *fan, bool immediate, int target) { struct nvkm_therm_priv *therm = (void *)fan->parent; struct nvkm_timer *tmr = nvkm_timer(therm); struct nvkm_subdev *subdev = &therm->base.subdev; struct nvkm_timer *tmr = subdev->device->timer; unsigned long flags; int ret = 0; int duty; Loading @@ -44,7 +45,7 @@ nvkm_fan_update(struct nvkm_fan *fan, bool immediate, int target) target = max_t(u8, target, fan->bios.min_duty); target = min_t(u8, target, fan->bios.max_duty); if (fan->percent != target) { nv_debug(therm, "FAN target: %d\n", target); nvkm_debug(subdev, "FAN target: %d\n", target); fan->percent = target; } Loading @@ -69,7 +70,7 @@ nvkm_fan_update(struct nvkm_fan *fan, bool immediate, int target) duty = target; } nv_debug(therm, "FAN update: %d\n", duty); nvkm_debug(subdev, "FAN update: %d\n", duty); ret = fan->set(&therm->base, duty); if (ret) { spin_unlock_irqrestore(&fan->lock, flags); Loading Loading @@ -228,8 +229,10 @@ int nvkm_therm_fan_ctor(struct nvkm_therm *obj) { struct nvkm_therm_priv *therm = container_of(obj, typeof(*therm), base); struct nvkm_gpio *gpio = nvkm_gpio(therm); struct nvkm_bios *bios = nvkm_bios(therm); struct nvkm_subdev *subdev = &therm->base.subdev; struct nvkm_device *device = subdev->device; struct nvkm_gpio *gpio = device->gpio; struct nvkm_bios *bios = device->bios; struct dcb_gpio_func func; int ret; Loading @@ -238,7 +241,7 @@ nvkm_therm_fan_ctor(struct nvkm_therm *obj) if (ret == 0) { /* FIXME: is this really the place to perform such checks ? */ if (func.line != 16 && func.log[0] & DCB_GPIO_LOG_DIR_IN) { nv_debug(therm, "GPIO_FAN is in input mode\n"); nvkm_debug(subdev, "GPIO_FAN is in input mode\n"); ret = -EINVAL; } else { ret = nvkm_fanpwm_create(&therm->base, &func); Loading @@ -254,7 +257,7 @@ nvkm_therm_fan_ctor(struct nvkm_therm *obj) return ret; } nv_info(therm, "FAN control: %s\n", therm->fan->type); nvkm_debug(subdev, "FAN control: %s\n", therm->fan->type); /* read the current speed, it is useful when resuming */ therm->fan->percent = nvkm_therm_fan_get(&therm->base); Loading @@ -273,9 +276,9 @@ nvkm_therm_fan_ctor(struct nvkm_therm *obj) nvkm_therm_fan_set_defaults(&therm->base); nvbios_perf_fan_parse(bios, &therm->fan->perf); if (!nvbios_fan_parse(bios, &therm->fan->bios)) { nv_debug(therm, "parsing the fan table failed\n"); nvkm_debug(subdev, "parsing the fan table failed\n"); if (nvbios_therm_fan_parse(bios, &therm->fan->bios)) nv_error(therm, "parsing both fan tables failed\n"); nvkm_error(subdev, "parsing both fan tables failed\n"); } nvkm_therm_fan_safety_checks(&therm->base); return 0; Loading
drivers/gpu/drm/nouveau/nvkm/subdev/therm/g84.c +13 −9 Original line number Diff line number Diff line Loading @@ -56,8 +56,9 @@ static void g84_therm_program_alarms(struct nvkm_therm *obj) { struct nvkm_therm_priv *therm = container_of(obj, typeof(*therm), base); struct nvkm_device *device = therm->base.subdev.device; struct nvbios_therm_sensor *sensor = &therm->bios_sensor; struct nvkm_subdev *subdev = &therm->base.subdev; struct nvkm_device *device = subdev->device; unsigned long flags; spin_lock_irqsave(&therm->sensor.alarm_program_lock, flags); Loading @@ -79,13 +80,16 @@ g84_therm_program_alarms(struct nvkm_therm *obj) nvkm_wr32(device, 0x20414, sensor->thrs_down_clock.temp); spin_unlock_irqrestore(&therm->sensor.alarm_program_lock, flags); nv_debug(therm, nvkm_debug(subdev, "Programmed thresholds [ %d(%d), %d(%d), %d(%d), %d(%d) ]\n", sensor->thrs_fan_boost.temp, sensor->thrs_fan_boost.hysteresis, 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); sensor->thrs_critical.temp, sensor->thrs_critical.hysteresis, sensor->thrs_shutdown.temp, sensor->thrs_shutdown.hysteresis); } Loading Loading @@ -180,7 +184,7 @@ g84_therm_intr(struct nvkm_subdev *subdev) } if (intr) nv_error(therm, "unhandled intr 0x%08x\n", intr); nvkm_error(subdev, "intr %08x\n", intr); /* ACK everything */ nvkm_wr32(device, 0x20100, 0xffffffff); Loading
drivers/gpu/drm/nouveau/nvkm/subdev/therm/gf110.c +3 −2 Original line number Diff line number Diff line Loading @@ -26,7 +26,8 @@ static int pwm_info(struct nvkm_therm *therm, int line) { struct nvkm_device *device = therm->subdev.device; struct nvkm_subdev *subdev = &therm->subdev; struct nvkm_device *device = subdev->device; u32 gpio = nvkm_rd32(device, 0x00d610 + (line * 0x04)); switch (gpio & 0x000000c0) { Loading @@ -44,7 +45,7 @@ pwm_info(struct nvkm_therm *therm, int line) break; } nv_error(therm, "GPIO %d unknown PWM: 0x%08x\n", line, gpio); nvkm_error(subdev, "GPIO %d unknown PWM: %08x\n", line, gpio); return -ENODEV; } Loading
drivers/gpu/drm/nouveau/nvkm/subdev/therm/ic.c +4 −4 Original line number Diff line number Diff line Loading @@ -46,7 +46,7 @@ probe_monitoring_device(struct nvkm_i2c_port *i2c, return false; } nv_info(therm, nvkm_debug(&therm->base.subdev, "Found an %s at address 0x%x (controlled by lm_sensors, " "temp offset %+i C)\n", info->type, info->addr, sensor->offset_constant); Loading