thermal: tegra: add get_trend ops
Add support for get_trend ops that allows soctherm sensors to be used with the step-wise governor. Signed-off-by: Wei Ni <wni@nvidia.com> Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
This commit is contained in:
parent
3d88adf3ef
commit
76b1ae8698
|
@ -488,9 +488,41 @@ static int tegra_thermctl_set_trip_temp(void *data, int trip, int temp)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int tegra_thermctl_get_trend(void *data, int trip,
|
||||||
|
enum thermal_trend *trend)
|
||||||
|
{
|
||||||
|
struct tegra_thermctl_zone *zone = data;
|
||||||
|
struct thermal_zone_device *tz = zone->tz;
|
||||||
|
int trip_temp, temp, last_temp, ret;
|
||||||
|
|
||||||
|
if (!tz)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
ret = tz->ops->get_trip_temp(zone->tz, trip, &trip_temp);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
temp = READ_ONCE(tz->temperature);
|
||||||
|
last_temp = READ_ONCE(tz->last_temperature);
|
||||||
|
|
||||||
|
if (temp > trip_temp) {
|
||||||
|
if (temp >= last_temp)
|
||||||
|
*trend = THERMAL_TREND_RAISING;
|
||||||
|
else
|
||||||
|
*trend = THERMAL_TREND_STABLE;
|
||||||
|
} else if (temp < trip_temp) {
|
||||||
|
*trend = THERMAL_TREND_DROPPING;
|
||||||
|
} else {
|
||||||
|
*trend = THERMAL_TREND_STABLE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static const struct thermal_zone_of_device_ops tegra_of_thermal_ops = {
|
static const struct thermal_zone_of_device_ops tegra_of_thermal_ops = {
|
||||||
.get_temp = tegra_thermctl_get_temp,
|
.get_temp = tegra_thermctl_get_temp,
|
||||||
.set_trip_temp = tegra_thermctl_set_trip_temp,
|
.set_trip_temp = tegra_thermctl_set_trip_temp,
|
||||||
|
.get_trend = tegra_thermctl_get_trend,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int get_hot_temp(struct thermal_zone_device *tz, int *trip, int *temp)
|
static int get_hot_temp(struct thermal_zone_device *tz, int *trip, int *temp)
|
||||||
|
|
Loading…
Reference in New Issue