diff options
author | Bai Ping <b51503@freescale.com> | 2015-09-08 01:58:22 +0800 |
---|---|---|
committer | Octavian Purdila <octavian.purdila@nxp.com> | 2017-02-23 14:21:42 +0200 |
commit | 0ce6299708add1f8e5780b0aaf400ae36ca06cea (patch) | |
tree | d5786c967cd77cbadd6f8a4898f868f127c8b471 /drivers/thermal/imx_thermal.c | |
parent | 2045abb4391a551ac147dfe09e799bd401bbe076 (diff) |
MLK-11518-02 thermal: imx: add .get_trend callback fn in thermal driver
add .get_trend callback to determine the thermal raise/fall trend,
when the temp great than a threshold, drop to the lowest trend
(THERMAL_TREND_DROP_FULL).
Signed-off-by: Bai Ping <b51503@freescale.com>
Diffstat (limited to 'drivers/thermal/imx_thermal.c')
-rw-r--r-- | drivers/thermal/imx_thermal.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/thermal/imx_thermal.c b/drivers/thermal/imx_thermal.c index f362b915ce4e..4bb983da25db 100644 --- a/drivers/thermal/imx_thermal.c +++ b/drivers/thermal/imx_thermal.c @@ -90,6 +90,8 @@ enum imx_thermal_trip { IMX_TRIP_NUM, }; +#define IMX_TEMP_PASSIVE_COOL_DELTA 10000 + #define IMX_POLLING_DELAY 2000 /* millisecond */ #define IMX_PASSIVE_DELAY 1000 @@ -492,6 +494,23 @@ static int imx_unbind(struct thermal_zone_device *tz, return 0; } +static int imx_get_trend(struct thermal_zone_device *tz, + int trip, enum thermal_trend *trend) +{ + int ret; + int trip_temp; + + ret = imx_get_trip_temp(tz, trip, &trip_temp); + if (ret < 0) + return ret; + + if (tz->temperature >= (trip_temp - IMX_TEMP_PASSIVE_COOL_DELTA)) + *trend = THERMAL_TREND_RAISE_FULL; + else + *trend = THERMAL_TREND_DROP_FULL; + + return 0; +} static struct thermal_zone_device_ops imx_tz_ops = { .bind = imx_bind, .unbind = imx_unbind, @@ -502,6 +521,7 @@ static struct thermal_zone_device_ops imx_tz_ops = { .get_trip_temp = imx_get_trip_temp, .get_crit_temp = imx_get_crit_temp, .set_trip_temp = imx_set_trip_temp, + .get_trend = imx_get_trend, }; static inline void imx6_calibrate_data(struct imx_thermal_data *data, u32 val) |