Introduce of_thermal_get_trip_monitor_type to return the direction
of monitoring of a thermal trip point. Also translate the DT information
regarding trip point monitor direction into the thermal framework.

Signed-off-by: Thara Gopinath <thara.gopin...@linaro.org>
---
 drivers/thermal/thermal_of.c | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/drivers/thermal/thermal_of.c b/drivers/thermal/thermal_of.c
index 69ef12f852b7..5bc7f5bab772 100644
--- a/drivers/thermal/thermal_of.c
+++ b/drivers/thermal/thermal_of.c
@@ -328,6 +328,20 @@ static int of_thermal_get_trip_hyst(struct 
thermal_zone_device *tz, int trip,
        return 0;
 }
 
+static int of_thermal_get_trip_monitor_type
+                               (struct thermal_zone_device *tz, int trip,
+                                enum thermal_trip_monitor_type *type)
+{
+       struct __thermal_zone *data = tz->devdata;
+
+       if (trip >= data->ntrips || trip < 0)
+               return -EDOM;
+
+       *type = data->trips[trip].monitor_type;
+
+       return 0;
+}
+
 static int of_thermal_set_trip_hyst(struct thermal_zone_device *tz, int trip,
                                    int hyst)
 {
@@ -363,6 +377,7 @@ static struct thermal_zone_device_ops of_thermal_ops = {
        .set_trip_temp = of_thermal_set_trip_temp,
        .get_trip_hyst = of_thermal_get_trip_hyst,
        .set_trip_hyst = of_thermal_set_trip_hyst,
+       .get_trip_mon_type = of_thermal_get_trip_monitor_type,
        .get_crit_temp = of_thermal_get_crit_temp,
 
        .bind = of_thermal_bind,
@@ -801,6 +816,7 @@ static int thermal_of_populate_trip(struct device_node *np,
 {
        int prop;
        int ret;
+       bool is_monitor_falling;
 
        ret = of_property_read_u32(np, "temperature", &prop);
        if (ret < 0) {
@@ -822,6 +838,12 @@ static int thermal_of_populate_trip(struct device_node *np,
                return ret;
        }
 
+       ret = of_property_read_bool(np, "monitor-falling");
+       if (is_monitor_falling)
+               trip->monitor_type = THERMAL_TRIP_MONITOR_FALLING;
+       else
+               trip->monitor_type = THERMAL_TRIP_MONITOR_RISING;
+
        /* Required for cooling map matching */
        trip->np = np;
        of_node_get(np);
-- 
2.25.1

Reply via email to