diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2016-06-22 04:42:02 -0400 |
---|---|---|
committer | Zhang Rui <rui.zhang@intel.com> | 2016-09-27 02:02:16 -0400 |
commit | 826386e73193e0b58c6d797fbbab409bc98b1d9c (patch) | |
tree | d1c03aeba883d0c9d312929e68ccb9e75566398f | |
parent | 060c034a974187e930b790957cafc5047cc30a40 (diff) |
thermal: of: implement .set_trips for device tree thermal zones
This patch implements .set_trips for device tree thermal zones.
As the hardware-tracked trip points is supported by thermal core patch[0].
patch[0]
"thermal: Add support for hardware-tracked trip points".
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Caesar Wang <wxt@rock-chips.com>
Cc: Zhang Rui <rui.zhang@intel.com>
Cc: Eduardo Valentin <edubezval@gmail.com>
Reviewed-by: Javi Merino <javi.merino@arm.com>
Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
-rw-r--r-- | drivers/thermal/of-thermal.c | 19 | ||||
-rw-r--r-- | include/linux/thermal.h | 4 |
2 files changed, 23 insertions, 0 deletions
diff --git a/drivers/thermal/of-thermal.c b/drivers/thermal/of-thermal.c index b8e509c60848..2d2a06f155e2 100644 --- a/drivers/thermal/of-thermal.c +++ b/drivers/thermal/of-thermal.c | |||
@@ -101,6 +101,17 @@ static int of_thermal_get_temp(struct thermal_zone_device *tz, | |||
101 | return data->ops->get_temp(data->sensor_data, temp); | 101 | return data->ops->get_temp(data->sensor_data, temp); |
102 | } | 102 | } |
103 | 103 | ||
104 | static int of_thermal_set_trips(struct thermal_zone_device *tz, | ||
105 | int low, int high) | ||
106 | { | ||
107 | struct __thermal_zone *data = tz->devdata; | ||
108 | |||
109 | if (!data->ops || !data->ops->set_trips) | ||
110 | return -EINVAL; | ||
111 | |||
112 | return data->ops->set_trips(data->sensor_data, low, high); | ||
113 | } | ||
114 | |||
104 | /** | 115 | /** |
105 | * of_thermal_get_ntrips - function to export number of available trip | 116 | * of_thermal_get_ntrips - function to export number of available trip |
106 | * points. | 117 | * points. |
@@ -427,6 +438,14 @@ thermal_zone_of_add_sensor(struct device_node *zone, | |||
427 | 438 | ||
428 | tzd->ops->get_temp = of_thermal_get_temp; | 439 | tzd->ops->get_temp = of_thermal_get_temp; |
429 | tzd->ops->get_trend = of_thermal_get_trend; | 440 | tzd->ops->get_trend = of_thermal_get_trend; |
441 | |||
442 | /* | ||
443 | * The thermal zone core will calculate the window if they have set the | ||
444 | * optional set_trips pointer. | ||
445 | */ | ||
446 | if (ops->set_trips) | ||
447 | tzd->ops->set_trips = of_thermal_set_trips; | ||
448 | |||
430 | tzd->ops->set_emul_temp = of_thermal_set_emul_temp; | 449 | tzd->ops->set_emul_temp = of_thermal_set_emul_temp; |
431 | mutex_unlock(&tzd->lock); | 450 | mutex_unlock(&tzd->lock); |
432 | 451 | ||
diff --git a/include/linux/thermal.h b/include/linux/thermal.h index 54cdfeaaedd4..20118b9ebeb7 100644 --- a/include/linux/thermal.h +++ b/include/linux/thermal.h | |||
@@ -340,6 +340,9 @@ struct thermal_genl_event { | |||
340 | * | 340 | * |
341 | * Optional: | 341 | * Optional: |
342 | * @get_trend: a pointer to a function that reads the sensor temperature trend. | 342 | * @get_trend: a pointer to a function that reads the sensor temperature trend. |
343 | * @set_trips: a pointer to a function that sets a temperature window. When | ||
344 | * this window is left the driver must inform the thermal core via | ||
345 | * thermal_zone_device_update. | ||
343 | * @set_emul_temp: a pointer to a function that sets sensor emulated | 346 | * @set_emul_temp: a pointer to a function that sets sensor emulated |
344 | * temperature. | 347 | * temperature. |
345 | * @set_trip_temp: a pointer to a function that sets the trip temperature on | 348 | * @set_trip_temp: a pointer to a function that sets the trip temperature on |
@@ -348,6 +351,7 @@ struct thermal_genl_event { | |||
348 | struct thermal_zone_of_device_ops { | 351 | struct thermal_zone_of_device_ops { |
349 | int (*get_temp)(void *, int *); | 352 | int (*get_temp)(void *, int *); |
350 | int (*get_trend)(void *, long *); | 353 | int (*get_trend)(void *, long *); |
354 | int (*set_trips)(void *, int, int); | ||
351 | int (*set_emul_temp)(void *, int); | 355 | int (*set_emul_temp)(void *, int); |
352 | int (*set_trip_temp)(void *, int, int); | 356 | int (*set_trip_temp)(void *, int, int); |
353 | }; | 357 | }; |