summaryrefslogtreecommitdiffstats
path: root/include/linux/thermal.h
diff options
context:
space:
mode:
authorZhang Rui2012-06-27 03:54:33 +0200
committerZhang Rui2012-09-24 08:44:36 +0200
commit601f3d4242be6ed6f72a2aadabc91e8255dad811 (patch)
tree497f09fcf665c066e4efc5d9542b33f021632ea9 /include/linux/thermal.h
parentThermal: set upper and lower limits (diff)
downloadkernel-qcow2-linux-601f3d4242be6ed6f72a2aadabc91e8255dad811.tar.gz
kernel-qcow2-linux-601f3d4242be6ed6f72a2aadabc91e8255dad811.tar.xz
kernel-qcow2-linux-601f3d4242be6ed6f72a2aadabc91e8255dad811.zip
Thermal: Introduce .get_trend() callback.
According to ACPI spec, tc1 and tc2 are used by OSPM to anticipate the temperature trends. We introduced the same concept to the generic thermal layer for passive cooling, but now it seems that these values are hard to be used on other platforms. So We introduce .get_trend() as a more general solution. For the platform thermal drivers that have their own way to anticipate the temperature trends, they should provide their own .get_trend() callback. Or else, we will calculate the temperature trends by simply comparing the current temperature and the cached previous temperature reading. Signed-off-by: Zhang Rui <rui.zhang@intel.com> Reviewed-by: Rafael J. Wysocki <rjw@sisk.pl> Reviewed-by: Valentin, Eduardo <eduardo.valentin@ti.com>
Diffstat (limited to 'include/linux/thermal.h')
-rw-r--r--include/linux/thermal.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/include/linux/thermal.h b/include/linux/thermal.h
index 5946a3b90bb2..6a1d43d2ec92 100644
--- a/include/linux/thermal.h
+++ b/include/linux/thermal.h
@@ -44,6 +44,12 @@ enum thermal_trip_type {
THERMAL_TRIP_CRITICAL,
};
+enum thermal_trend {
+ THERMAL_TREND_STABLE, /* temperature is stable */
+ THERMAL_TREND_RAISING, /* temperature is raising */
+ THERMAL_TREND_DROPPING, /* temperature is dropping */
+};
+
struct thermal_zone_device_ops {
int (*bind) (struct thermal_zone_device *,
struct thermal_cooling_device *);
@@ -65,6 +71,8 @@ struct thermal_zone_device_ops {
int (*set_trip_hyst) (struct thermal_zone_device *, int,
unsigned long);
int (*get_crit_temp) (struct thermal_zone_device *, unsigned long *);
+ int (*get_trend) (struct thermal_zone_device *, int,
+ enum thermal_trend *);
int (*notify) (struct thermal_zone_device *, int,
enum thermal_trip_type);
};
@@ -111,6 +119,7 @@ struct thermal_zone_device {
int tc2;
int passive_delay;
int polling_delay;
+ int temperature;
int last_temperature;
bool passive;
unsigned int forced_passive;