This patch modifies the code to use get_crit_temp instead of
the normal get_trip_temp when critical threshold point is crossed
or queried about.

Signed-off-by: Amit Daniel Kachhap <[email protected]>
---
 drivers/thermal/thermal_sys.c |   15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/drivers/thermal/thermal_sys.c b/drivers/thermal/thermal_sys.c
index ecdfc7d..0dc6403 100644
--- a/drivers/thermal/thermal_sys.c
+++ b/drivers/thermal/thermal_sys.c
@@ -345,7 +345,10 @@ static void handle_critical_trips(struct 
thermal_zone_device *tz,
 {
        long trip_temp;
 
-       tz->ops->get_trip_temp(tz, trip, &trip_temp);
+       if (tz->ops->get_crit_temp)
+               tz->ops->get_crit_temp(tz, &trip_temp);
+       else
+               tz->ops->get_trip_temp(tz, trip, &trip_temp);
 
        /* If we have not crossed the trip_temp, we do not care. */
        if (tz->temperature < trip_temp)
@@ -550,6 +553,7 @@ trip_point_temp_show(struct device *dev, struct 
device_attribute *attr,
        struct thermal_zone_device *tz = to_thermal_zone(dev);
        int trip, ret;
        long temperature;
+       enum thermal_trip_type type;
 
        if (!tz->ops->get_trip_temp)
                return -EPERM;
@@ -557,7 +561,14 @@ trip_point_temp_show(struct device *dev, struct 
device_attribute *attr,
        if (!sscanf(attr->attr.name, "trip_point_%d_temp", &trip))
                return -EINVAL;
 
-       ret = tz->ops->get_trip_temp(tz, trip, &temperature);
+       ret = tz->ops->get_trip_type(tz, trip, &type);
+       if (ret)
+               return ret;
+
+       if (type == THERMAL_TRIP_CRITICAL && tz->ops->get_crit_temp)
+               ret = tz->ops->get_crit_temp(tz, &temperature);
+       else
+               ret = tz->ops->get_trip_temp(tz, trip, &temperature);
 
        if (ret)
                return ret;
-- 
1.7.10.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to