Hi Wei, On 19/02/2019 03:15, Wei Ni wrote: >>> +static int tegra_thermctl_get_trend(void *data, int trip, + >>> enum thermal_trend *trend) [ ... ] >>> + temp = tz->temperature; + last_temp = tz->last_temperature; + >>> mutex_unlock(&tz->lock); + + 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, }; It has been awhile since this patch was submitted and merged by Eduardo. I replace him to co-maintain the thermal framework with Rui. While figuring out the internals for code cleanup, I ended up in this function above. Why do you have to use this routine instead of the generic one in get_tz_trend()? -- <http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook | <http://twitter.com/#!/linaroorg> Twitter | <http://www.linaro.org/linaro-blog/> Blog