diff options
Diffstat (limited to 'include/linux/thermal.h')
-rw-r--r-- | include/linux/thermal.h | 48 |
1 files changed, 39 insertions, 9 deletions
diff --git a/include/linux/thermal.h b/include/linux/thermal.h index 917707e6151d..1de8b9eb841b 100644 --- a/include/linux/thermal.h +++ b/include/linux/thermal.h | |||
@@ -27,27 +27,46 @@ | |||
27 | 27 | ||
28 | #include <linux/idr.h> | 28 | #include <linux/idr.h> |
29 | #include <linux/device.h> | 29 | #include <linux/device.h> |
30 | #include <linux/workqueue.h> | ||
30 | 31 | ||
31 | struct thermal_zone_device; | 32 | struct thermal_zone_device; |
32 | struct thermal_cooling_device; | 33 | struct thermal_cooling_device; |
33 | 34 | ||
35 | enum thermal_device_mode { | ||
36 | THERMAL_DEVICE_DISABLED = 0, | ||
37 | THERMAL_DEVICE_ENABLED, | ||
38 | }; | ||
39 | |||
40 | enum thermal_trip_type { | ||
41 | THERMAL_TRIP_ACTIVE = 0, | ||
42 | THERMAL_TRIP_PASSIVE, | ||
43 | THERMAL_TRIP_HOT, | ||
44 | THERMAL_TRIP_CRITICAL, | ||
45 | }; | ||
46 | |||
34 | struct thermal_zone_device_ops { | 47 | struct thermal_zone_device_ops { |
35 | int (*bind) (struct thermal_zone_device *, | 48 | int (*bind) (struct thermal_zone_device *, |
36 | struct thermal_cooling_device *); | 49 | struct thermal_cooling_device *); |
37 | int (*unbind) (struct thermal_zone_device *, | 50 | int (*unbind) (struct thermal_zone_device *, |
38 | struct thermal_cooling_device *); | 51 | struct thermal_cooling_device *); |
39 | int (*get_temp) (struct thermal_zone_device *, char *); | 52 | int (*get_temp) (struct thermal_zone_device *, unsigned long *); |
40 | int (*get_mode) (struct thermal_zone_device *, char *); | 53 | int (*get_mode) (struct thermal_zone_device *, |
41 | int (*set_mode) (struct thermal_zone_device *, const char *); | 54 | enum thermal_device_mode *); |
42 | int (*get_trip_type) (struct thermal_zone_device *, int, char *); | 55 | int (*set_mode) (struct thermal_zone_device *, |
43 | int (*get_trip_temp) (struct thermal_zone_device *, int, char *); | 56 | enum thermal_device_mode); |
57 | int (*get_trip_type) (struct thermal_zone_device *, int, | ||
58 | enum thermal_trip_type *); | ||
59 | int (*get_trip_temp) (struct thermal_zone_device *, int, | ||
60 | unsigned long *); | ||
44 | int (*get_crit_temp) (struct thermal_zone_device *, unsigned long *); | 61 | int (*get_crit_temp) (struct thermal_zone_device *, unsigned long *); |
62 | int (*notify) (struct thermal_zone_device *, int, | ||
63 | enum thermal_trip_type); | ||
45 | }; | 64 | }; |
46 | 65 | ||
47 | struct thermal_cooling_device_ops { | 66 | struct thermal_cooling_device_ops { |
48 | int (*get_max_state) (struct thermal_cooling_device *, char *); | 67 | int (*get_max_state) (struct thermal_cooling_device *, unsigned long *); |
49 | int (*get_cur_state) (struct thermal_cooling_device *, char *); | 68 | int (*get_cur_state) (struct thermal_cooling_device *, unsigned long *); |
50 | int (*set_cur_state) (struct thermal_cooling_device *, unsigned int); | 69 | int (*set_cur_state) (struct thermal_cooling_device *, unsigned long); |
51 | }; | 70 | }; |
52 | 71 | ||
53 | #define THERMAL_TRIPS_NONE -1 | 72 | #define THERMAL_TRIPS_NONE -1 |
@@ -88,11 +107,19 @@ struct thermal_zone_device { | |||
88 | struct device device; | 107 | struct device device; |
89 | void *devdata; | 108 | void *devdata; |
90 | int trips; | 109 | int trips; |
110 | int tc1; | ||
111 | int tc2; | ||
112 | int passive_delay; | ||
113 | int polling_delay; | ||
114 | int last_temperature; | ||
115 | bool passive; | ||
116 | unsigned int forced_passive; | ||
91 | struct thermal_zone_device_ops *ops; | 117 | struct thermal_zone_device_ops *ops; |
92 | struct list_head cooling_devices; | 118 | struct list_head cooling_devices; |
93 | struct idr idr; | 119 | struct idr idr; |
94 | struct mutex lock; /* protect cooling devices list */ | 120 | struct mutex lock; /* protect cooling devices list */ |
95 | struct list_head node; | 121 | struct list_head node; |
122 | struct delayed_work poll_queue; | ||
96 | #if defined(CONFIG_THERMAL_HWMON) | 123 | #if defined(CONFIG_THERMAL_HWMON) |
97 | struct list_head hwmon_node; | 124 | struct list_head hwmon_node; |
98 | struct thermal_hwmon_device *hwmon; | 125 | struct thermal_hwmon_device *hwmon; |
@@ -104,13 +131,16 @@ struct thermal_zone_device { | |||
104 | struct thermal_zone_device *thermal_zone_device_register(char *, int, void *, | 131 | struct thermal_zone_device *thermal_zone_device_register(char *, int, void *, |
105 | struct | 132 | struct |
106 | thermal_zone_device_ops | 133 | thermal_zone_device_ops |
107 | *); | 134 | *, int tc1, int tc2, |
135 | int passive_freq, | ||
136 | int polling_freq); | ||
108 | void thermal_zone_device_unregister(struct thermal_zone_device *); | 137 | void thermal_zone_device_unregister(struct thermal_zone_device *); |
109 | 138 | ||
110 | int thermal_zone_bind_cooling_device(struct thermal_zone_device *, int, | 139 | int thermal_zone_bind_cooling_device(struct thermal_zone_device *, int, |
111 | struct thermal_cooling_device *); | 140 | struct thermal_cooling_device *); |
112 | int thermal_zone_unbind_cooling_device(struct thermal_zone_device *, int, | 141 | int thermal_zone_unbind_cooling_device(struct thermal_zone_device *, int, |
113 | struct thermal_cooling_device *); | 142 | struct thermal_cooling_device *); |
143 | void thermal_zone_device_update(struct thermal_zone_device *); | ||
114 | struct thermal_cooling_device *thermal_cooling_device_register(char *, void *, | 144 | struct thermal_cooling_device *thermal_cooling_device_register(char *, void *, |
115 | struct | 145 | struct |
116 | thermal_cooling_device_ops | 146 | thermal_cooling_device_ops |