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;
|
||||
}
|
||||
|
||||
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 = {
|
||||
.get_temp = tegra_thermctl_get_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)
|
||||
|
|
Loading…
Reference in New Issue