MLK-11518-02 thermal: imx: add .get_trend callback fn in thermal driver
authorBai Ping <b51503@freescale.com>
Mon, 7 Sep 2015 17:58:22 +0000 (01:58 +0800)
committerNitin Garg <nitin.garg@nxp.com>
Mon, 19 Mar 2018 19:48:29 +0000 (14:48 -0500)
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>
drivers/thermal/imx_thermal.c

index f362b91..4bb983d 100644 (file)
@@ -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)