1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24#ifndef __THERMAL_CORE_H__
25#define __THERMAL_CORE_H__
26
27#include <linux/device.h>
28#include <linux/thermal.h>
29
30
31#define THERMAL_NO_TARGET -1UL
32
33
34
35
36
37
38struct thermal_instance {
39 int id;
40 char name[THERMAL_NAME_LENGTH];
41 struct thermal_zone_device *tz;
42 struct thermal_cooling_device *cdev;
43 int trip;
44 bool initialized;
45 unsigned long upper;
46 unsigned long lower;
47 unsigned long target;
48 char attr_name[THERMAL_NAME_LENGTH];
49 struct device_attribute attr;
50 char weight_attr_name[THERMAL_NAME_LENGTH];
51 struct device_attribute weight_attr;
52 struct list_head tz_node;
53 struct list_head cdev_node;
54 unsigned int weight;
55};
56
57#define to_thermal_zone(_dev) \
58 container_of(_dev, struct thermal_zone_device, device)
59
60#define to_cooling_device(_dev) \
61 container_of(_dev, struct thermal_cooling_device, device)
62
63int thermal_register_governor(struct thermal_governor *);
64void thermal_unregister_governor(struct thermal_governor *);
65void thermal_zone_device_rebind_exception(struct thermal_zone_device *,
66 const char *, size_t);
67void thermal_zone_device_unbind_exception(struct thermal_zone_device *,
68 const char *, size_t);
69int thermal_zone_device_set_policy(struct thermal_zone_device *, char *);
70int thermal_build_list_of_policies(char *buf);
71
72
73int thermal_zone_create_device_groups(struct thermal_zone_device *, int);
74void thermal_cooling_device_setup_sysfs(struct thermal_cooling_device *);
75
76ssize_t
77thermal_cooling_device_trip_point_show(struct device *,
78 struct device_attribute *, char *);
79ssize_t thermal_cooling_device_weight_show(struct device *,
80 struct device_attribute *, char *);
81
82ssize_t thermal_cooling_device_weight_store(struct device *,
83 struct device_attribute *,
84 const char *, size_t);
85
86#ifdef CONFIG_THERMAL_GOV_STEP_WISE
87int thermal_gov_step_wise_register(void);
88void thermal_gov_step_wise_unregister(void);
89#else
90static inline int thermal_gov_step_wise_register(void) { return 0; }
91static inline void thermal_gov_step_wise_unregister(void) {}
92#endif
93
94#ifdef CONFIG_THERMAL_GOV_FAIR_SHARE
95int thermal_gov_fair_share_register(void);
96void thermal_gov_fair_share_unregister(void);
97#else
98static inline int thermal_gov_fair_share_register(void) { return 0; }
99static inline void thermal_gov_fair_share_unregister(void) {}
100#endif
101
102#ifdef CONFIG_THERMAL_GOV_BANG_BANG
103int thermal_gov_bang_bang_register(void);
104void thermal_gov_bang_bang_unregister(void);
105#else
106static inline int thermal_gov_bang_bang_register(void) { return 0; }
107static inline void thermal_gov_bang_bang_unregister(void) {}
108#endif
109
110#ifdef CONFIG_THERMAL_GOV_USER_SPACE
111int thermal_gov_user_space_register(void);
112void thermal_gov_user_space_unregister(void);
113#else
114static inline int thermal_gov_user_space_register(void) { return 0; }
115static inline void thermal_gov_user_space_unregister(void) {}
116#endif
117
118#ifdef CONFIG_THERMAL_GOV_POWER_ALLOCATOR
119int thermal_gov_power_allocator_register(void);
120void thermal_gov_power_allocator_unregister(void);
121#else
122static inline int thermal_gov_power_allocator_register(void) { return 0; }
123static inline void thermal_gov_power_allocator_unregister(void) {}
124#endif
125
126
127#ifdef CONFIG_THERMAL_OF
128int of_parse_thermal_zones(void);
129void of_thermal_destroy_zones(void);
130int of_thermal_get_ntrips(struct thermal_zone_device *);
131bool of_thermal_is_trip_valid(struct thermal_zone_device *, int);
132const struct thermal_trip *
133of_thermal_get_trip_points(struct thermal_zone_device *);
134#else
135static inline int of_parse_thermal_zones(void) { return 0; }
136static inline void of_thermal_destroy_zones(void) { }
137static inline int of_thermal_get_ntrips(struct thermal_zone_device *tz)
138{
139 return 0;
140}
141static inline bool of_thermal_is_trip_valid(struct thermal_zone_device *tz,
142 int trip)
143{
144 return false;
145}
146static inline const struct thermal_trip *
147of_thermal_get_trip_points(struct thermal_zone_device *tz)
148{
149 return NULL;
150}
151#endif
152
153#endif
154