Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ad40d73e authored by Martin Peres's avatar Martin Peres Committed by Ben Skeggs
Browse files

drm/nv40/therm: disable temperature reading if the bios misses some parameters

parent 13506e2a
Loading
Loading
Loading
Loading
+4 −6
Original line number Diff line number Diff line
@@ -93,12 +93,10 @@ nv40_temp_get(struct nouveau_therm *therm)
	} else
		return -ENODEV;

	if (sensor->slope_div == 0)
		sensor->slope_div = 1;
	if (sensor->offset_den == 0)
		sensor->offset_den = 1;
	if (sensor->slope_mult < 1)
		sensor->slope_mult = 1;
	/* if the slope or the offset is unset, do no use the sensor */
	if (!sensor->slope_div || !sensor->slope_mult ||
	    !sensor->offset_num || !sensor->offset_den)
	    return -ENODEV;

	core_temp = core_temp * sensor->slope_mult / sensor->slope_div;
	core_temp = core_temp + sensor->offset_num / sensor->offset_den;
+0 −9
Original line number Diff line number Diff line
@@ -34,10 +34,6 @@ nouveau_therm_temp_set_defaults(struct nouveau_therm *therm)
{
	struct nouveau_therm_priv *priv = (void *)therm;

	priv->bios_sensor.slope_mult = 1;
	priv->bios_sensor.slope_div = 1;
	priv->bios_sensor.offset_num = 0;
	priv->bios_sensor.offset_den = 1;
	priv->bios_sensor.offset_constant = 0;

	priv->bios_sensor.thrs_fan_boost.temp = 90;
@@ -60,11 +56,6 @@ nouveau_therm_temp_safety_checks(struct nouveau_therm *therm)
	struct nouveau_therm_priv *priv = (void *)therm;
	struct nvbios_therm_sensor *s = &priv->bios_sensor;

	if (!priv->bios_sensor.slope_div)
		priv->bios_sensor.slope_div = 1;
	if (!priv->bios_sensor.offset_den)
		priv->bios_sensor.offset_den = 1;

	/* enforce a minimum hysteresis on thresholds */
	s->thrs_fan_boost.hysteresis = max_t(u8, s->thrs_fan_boost.hysteresis, 2);
	s->thrs_down_clock.hysteresis = max_t(u8, s->thrs_down_clock.hysteresis, 2);