Merge tag 'leds-next-6.4' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/leds
[linux.git] / drivers / thermal / thermal_trace.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #undef TRACE_SYSTEM
3 #define TRACE_SYSTEM thermal
4
5 #if !defined(_TRACE_THERMAL_H) || defined(TRACE_HEADER_MULTI_READ)
6 #define _TRACE_THERMAL_H
7
8 #include <linux/devfreq.h>
9 #include <linux/thermal.h>
10 #include <linux/tracepoint.h>
11
12 TRACE_DEFINE_ENUM(THERMAL_TRIP_CRITICAL);
13 TRACE_DEFINE_ENUM(THERMAL_TRIP_HOT);
14 TRACE_DEFINE_ENUM(THERMAL_TRIP_PASSIVE);
15 TRACE_DEFINE_ENUM(THERMAL_TRIP_ACTIVE);
16
17 #define show_tzt_type(type)                                     \
18         __print_symbolic(type,                                  \
19                          { THERMAL_TRIP_CRITICAL, "CRITICAL"},  \
20                          { THERMAL_TRIP_HOT,      "HOT"},       \
21                          { THERMAL_TRIP_PASSIVE,  "PASSIVE"},   \
22                          { THERMAL_TRIP_ACTIVE,   "ACTIVE"})
23
24 TRACE_EVENT(thermal_temperature,
25
26         TP_PROTO(struct thermal_zone_device *tz),
27
28         TP_ARGS(tz),
29
30         TP_STRUCT__entry(
31                 __string(thermal_zone, tz->type)
32                 __field(int, id)
33                 __field(int, temp_prev)
34                 __field(int, temp)
35         ),
36
37         TP_fast_assign(
38                 __assign_str(thermal_zone, tz->type);
39                 __entry->id = tz->id;
40                 __entry->temp_prev = tz->last_temperature;
41                 __entry->temp = tz->temperature;
42         ),
43
44         TP_printk("thermal_zone=%s id=%d temp_prev=%d temp=%d",
45                 __get_str(thermal_zone), __entry->id, __entry->temp_prev,
46                 __entry->temp)
47 );
48
49 TRACE_EVENT(cdev_update,
50
51         TP_PROTO(struct thermal_cooling_device *cdev, unsigned long target),
52
53         TP_ARGS(cdev, target),
54
55         TP_STRUCT__entry(
56                 __string(type, cdev->type)
57                 __field(unsigned long, target)
58         ),
59
60         TP_fast_assign(
61                 __assign_str(type, cdev->type);
62                 __entry->target = target;
63         ),
64
65         TP_printk("type=%s target=%lu", __get_str(type), __entry->target)
66 );
67
68 TRACE_EVENT(thermal_zone_trip,
69
70         TP_PROTO(struct thermal_zone_device *tz, int trip,
71                 enum thermal_trip_type trip_type),
72
73         TP_ARGS(tz, trip, trip_type),
74
75         TP_STRUCT__entry(
76                 __string(thermal_zone, tz->type)
77                 __field(int, id)
78                 __field(int, trip)
79                 __field(enum thermal_trip_type, trip_type)
80         ),
81
82         TP_fast_assign(
83                 __assign_str(thermal_zone, tz->type);
84                 __entry->id = tz->id;
85                 __entry->trip = trip;
86                 __entry->trip_type = trip_type;
87         ),
88
89         TP_printk("thermal_zone=%s id=%d trip=%d trip_type=%s",
90                 __get_str(thermal_zone), __entry->id, __entry->trip,
91                 show_tzt_type(__entry->trip_type))
92 );
93
94 #ifdef CONFIG_CPU_THERMAL
95 TRACE_EVENT(thermal_power_cpu_get_power_simple,
96         TP_PROTO(int cpu, u32 power),
97
98         TP_ARGS(cpu, power),
99
100         TP_STRUCT__entry(
101                 __field(int, cpu)
102                 __field(u32, power)
103         ),
104
105         TP_fast_assign(
106                 __entry->cpu = cpu;
107                 __entry->power = power;
108         ),
109
110         TP_printk("cpu=%d power=%u", __entry->cpu, __entry->power)
111 );
112
113 TRACE_EVENT(thermal_power_cpu_limit,
114         TP_PROTO(const struct cpumask *cpus, unsigned int freq,
115                 unsigned long cdev_state, u32 power),
116
117         TP_ARGS(cpus, freq, cdev_state, power),
118
119         TP_STRUCT__entry(
120                 __bitmask(cpumask, num_possible_cpus())
121                 __field(unsigned int,  freq      )
122                 __field(unsigned long, cdev_state)
123                 __field(u32,           power     )
124         ),
125
126         TP_fast_assign(
127                 __assign_bitmask(cpumask, cpumask_bits(cpus),
128                                 num_possible_cpus());
129                 __entry->freq = freq;
130                 __entry->cdev_state = cdev_state;
131                 __entry->power = power;
132         ),
133
134         TP_printk("cpus=%s freq=%u cdev_state=%lu power=%u",
135                 __get_bitmask(cpumask), __entry->freq, __entry->cdev_state,
136                 __entry->power)
137 );
138 #endif /* CONFIG_CPU_THERMAL */
139
140 #ifdef CONFIG_DEVFREQ_THERMAL
141 TRACE_EVENT(thermal_power_devfreq_get_power,
142         TP_PROTO(struct thermal_cooling_device *cdev,
143                  struct devfreq_dev_status *status, unsigned long freq,
144                 u32 power),
145
146         TP_ARGS(cdev, status,  freq, power),
147
148         TP_STRUCT__entry(
149                 __string(type,         cdev->type    )
150                 __field(unsigned long, freq          )
151                 __field(u32,           busy_time)
152                 __field(u32,           total_time)
153                 __field(u32,           power)
154         ),
155
156         TP_fast_assign(
157                 __assign_str(type, cdev->type);
158                 __entry->freq = freq;
159                 __entry->busy_time = status->busy_time;
160                 __entry->total_time = status->total_time;
161                 __entry->power = power;
162         ),
163
164         TP_printk("type=%s freq=%lu load=%u power=%u",
165                 __get_str(type), __entry->freq,
166                 __entry->total_time == 0 ? 0 :
167                         (100 * __entry->busy_time) / __entry->total_time,
168                 __entry->power)
169 );
170
171 TRACE_EVENT(thermal_power_devfreq_limit,
172         TP_PROTO(struct thermal_cooling_device *cdev, unsigned long freq,
173                 unsigned long cdev_state, u32 power),
174
175         TP_ARGS(cdev, freq, cdev_state, power),
176
177         TP_STRUCT__entry(
178                 __string(type,         cdev->type)
179                 __field(unsigned int,  freq      )
180                 __field(unsigned long, cdev_state)
181                 __field(u32,           power     )
182         ),
183
184         TP_fast_assign(
185                 __assign_str(type, cdev->type);
186                 __entry->freq = freq;
187                 __entry->cdev_state = cdev_state;
188                 __entry->power = power;
189         ),
190
191         TP_printk("type=%s freq=%u cdev_state=%lu power=%u",
192                 __get_str(type), __entry->freq, __entry->cdev_state,
193                 __entry->power)
194 );
195 #endif /* CONFIG_DEVFREQ_THERMAL */
196 #endif /* _TRACE_THERMAL_H */
197
198 #undef TRACE_INCLUDE_PATH
199 #define TRACE_INCLUDE_PATH .
200
201 #undef TRACE_INCLUDE_FILE
202 #define TRACE_INCLUDE_FILE thermal_trace
203
204 /* This part must be outside protection */
205 #include <trace/define_trace.h>