[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20200917032226.820371-4-thara.gopinath@linaro.org>
Date: Wed, 16 Sep 2020 23:22:21 -0400
From: Thara Gopinath <thara.gopinath@...aro.org>
To: rui.zhang@...el.com, daniel.lezcano@...aro.org, robh+dt@...nel.org,
agross@...nel.org, bjorn.andersson@...aro.org
Cc: linux-pm@...r.kernel.org, devicetree@...r.kernel.org,
linux-kernel@...r.kernel.org, linux-arm-msm@...r.kernel.org,
lukasz.luba@....com, amitk@...nel.org
Subject: [PATCH RFC 3/8] thermal: thermal_of: Extend thermal dt driver to support bi-directional monitoring of a thermal trip point.
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.gopinath@...aro.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
Powered by blists - more mailing lists