1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | #undef TRACE_SYSTEM |
3 | #define TRACE_SYSTEM regulator |
4 | |
5 | #if !defined(_TRACE_REGULATOR_H) || defined(TRACE_HEADER_MULTI_READ) |
6 | #define _TRACE_REGULATOR_H |
7 | |
8 | #include <linux/ktime.h> |
9 | #include <linux/tracepoint.h> |
10 | |
11 | /* |
12 | * Events which just log themselves and the regulator name for enable/disable |
13 | * type tracking. |
14 | */ |
15 | DECLARE_EVENT_CLASS(regulator_basic, |
16 | |
17 | TP_PROTO(const char *name), |
18 | |
19 | TP_ARGS(name), |
20 | |
21 | TP_STRUCT__entry( |
22 | __string( name, name ) |
23 | ), |
24 | |
25 | TP_fast_assign( |
26 | __assign_str(name, name); |
27 | ), |
28 | |
29 | TP_printk("name=%s" , __get_str(name)) |
30 | |
31 | ); |
32 | |
33 | DEFINE_EVENT(regulator_basic, regulator_enable, |
34 | |
35 | TP_PROTO(const char *name), |
36 | |
37 | TP_ARGS(name) |
38 | |
39 | ); |
40 | |
41 | DEFINE_EVENT(regulator_basic, regulator_enable_delay, |
42 | |
43 | TP_PROTO(const char *name), |
44 | |
45 | TP_ARGS(name) |
46 | |
47 | ); |
48 | |
49 | DEFINE_EVENT(regulator_basic, regulator_enable_complete, |
50 | |
51 | TP_PROTO(const char *name), |
52 | |
53 | TP_ARGS(name) |
54 | |
55 | ); |
56 | |
57 | DEFINE_EVENT(regulator_basic, regulator_disable, |
58 | |
59 | TP_PROTO(const char *name), |
60 | |
61 | TP_ARGS(name) |
62 | |
63 | ); |
64 | |
65 | DEFINE_EVENT(regulator_basic, regulator_disable_complete, |
66 | |
67 | TP_PROTO(const char *name), |
68 | |
69 | TP_ARGS(name) |
70 | |
71 | ); |
72 | |
73 | DEFINE_EVENT(regulator_basic, regulator_bypass_enable, |
74 | |
75 | TP_PROTO(const char *name), |
76 | |
77 | TP_ARGS(name) |
78 | |
79 | ); |
80 | |
81 | DEFINE_EVENT(regulator_basic, regulator_bypass_enable_complete, |
82 | |
83 | TP_PROTO(const char *name), |
84 | |
85 | TP_ARGS(name) |
86 | |
87 | ); |
88 | |
89 | DEFINE_EVENT(regulator_basic, regulator_bypass_disable, |
90 | |
91 | TP_PROTO(const char *name), |
92 | |
93 | TP_ARGS(name) |
94 | |
95 | ); |
96 | |
97 | DEFINE_EVENT(regulator_basic, regulator_bypass_disable_complete, |
98 | |
99 | TP_PROTO(const char *name), |
100 | |
101 | TP_ARGS(name) |
102 | |
103 | ); |
104 | |
105 | /* |
106 | * Events that take a range of numerical values, mostly for voltages |
107 | * and so on. |
108 | */ |
109 | DECLARE_EVENT_CLASS(regulator_range, |
110 | |
111 | TP_PROTO(const char *name, int min, int max), |
112 | |
113 | TP_ARGS(name, min, max), |
114 | |
115 | TP_STRUCT__entry( |
116 | __string( name, name ) |
117 | __field( int, min ) |
118 | __field( int, max ) |
119 | ), |
120 | |
121 | TP_fast_assign( |
122 | __assign_str(name, name); |
123 | __entry->min = min; |
124 | __entry->max = max; |
125 | ), |
126 | |
127 | TP_printk("name=%s (%d-%d)" , __get_str(name), |
128 | (int)__entry->min, (int)__entry->max) |
129 | ); |
130 | |
131 | DEFINE_EVENT(regulator_range, regulator_set_voltage, |
132 | |
133 | TP_PROTO(const char *name, int min, int max), |
134 | |
135 | TP_ARGS(name, min, max) |
136 | |
137 | ); |
138 | |
139 | |
140 | /* |
141 | * Events that take a single value, mostly for readback and refcounts. |
142 | */ |
143 | DECLARE_EVENT_CLASS(regulator_value, |
144 | |
145 | TP_PROTO(const char *name, unsigned int val), |
146 | |
147 | TP_ARGS(name, val), |
148 | |
149 | TP_STRUCT__entry( |
150 | __string( name, name ) |
151 | __field( unsigned int, val ) |
152 | ), |
153 | |
154 | TP_fast_assign( |
155 | __assign_str(name, name); |
156 | __entry->val = val; |
157 | ), |
158 | |
159 | TP_printk("name=%s, val=%u" , __get_str(name), |
160 | (int)__entry->val) |
161 | ); |
162 | |
163 | DEFINE_EVENT(regulator_value, regulator_set_voltage_complete, |
164 | |
165 | TP_PROTO(const char *name, unsigned int value), |
166 | |
167 | TP_ARGS(name, value) |
168 | |
169 | ); |
170 | |
171 | #endif /* _TRACE_POWER_H */ |
172 | |
173 | /* This part must be outside protection */ |
174 | #include <trace/define_trace.h> |
175 | |