Merge tag 'rtc-6.1' of git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux
[linux-2.6-block.git] / drivers / base / regmap / trace.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #undef TRACE_SYSTEM
3 #define TRACE_SYSTEM regmap
4
5 #if !defined(_TRACE_REGMAP_H) || defined(TRACE_HEADER_MULTI_READ)
6 #define _TRACE_REGMAP_H
7
8 #include <linux/ktime.h>
9 #include <linux/tracepoint.h>
10
11 #include "internal.h"
12
13 /*
14  * Log register events
15  */
16 DECLARE_EVENT_CLASS(regmap_reg,
17
18         TP_PROTO(struct regmap *map, unsigned int reg,
19                  unsigned int val),
20
21         TP_ARGS(map, reg, val),
22
23         TP_STRUCT__entry(
24                 __string(       name,           regmap_name(map)        )
25                 __field(        unsigned int,   reg                     )
26                 __field(        unsigned int,   val                     )
27         ),
28
29         TP_fast_assign(
30                 __assign_str(name, regmap_name(map));
31                 __entry->reg = reg;
32                 __entry->val = val;
33         ),
34
35         TP_printk("%s reg=%x val=%x", __get_str(name), __entry->reg, __entry->val)
36 );
37
38 DEFINE_EVENT(regmap_reg, regmap_reg_write,
39
40         TP_PROTO(struct regmap *map, unsigned int reg,
41                  unsigned int val),
42
43         TP_ARGS(map, reg, val)
44 );
45
46 DEFINE_EVENT(regmap_reg, regmap_reg_read,
47
48         TP_PROTO(struct regmap *map, unsigned int reg,
49                  unsigned int val),
50
51         TP_ARGS(map, reg, val)
52 );
53
54 DEFINE_EVENT(regmap_reg, regmap_reg_read_cache,
55
56         TP_PROTO(struct regmap *map, unsigned int reg,
57                  unsigned int val),
58
59         TP_ARGS(map, reg, val)
60 );
61
62 DECLARE_EVENT_CLASS(regmap_bulk,
63
64         TP_PROTO(struct regmap *map, unsigned int reg,
65                  const void *val, int val_len),
66
67         TP_ARGS(map, reg, val, val_len),
68
69         TP_STRUCT__entry(
70                 __string(name, regmap_name(map))
71                 __field(unsigned int, reg)
72                 __dynamic_array(char, buf, val_len)
73                 __field(int, val_len)
74         ),
75
76         TP_fast_assign(
77                 __assign_str(name, regmap_name(map));
78                 __entry->reg = reg;
79                 __entry->val_len = val_len;
80                 memcpy(__get_dynamic_array(buf), val, val_len);
81         ),
82
83         TP_printk("%s reg=%x val=%s", __get_str(name), __entry->reg,
84                   __print_hex(__get_dynamic_array(buf), __entry->val_len))
85 );
86
87 DEFINE_EVENT(regmap_bulk, regmap_bulk_write,
88
89         TP_PROTO(struct regmap *map, unsigned int reg,
90                  const void *val, int val_len),
91
92         TP_ARGS(map, reg, val, val_len)
93 );
94
95 DEFINE_EVENT(regmap_bulk, regmap_bulk_read,
96
97         TP_PROTO(struct regmap *map, unsigned int reg,
98                  const void *val, int val_len),
99
100         TP_ARGS(map, reg, val, val_len)
101 );
102
103 DECLARE_EVENT_CLASS(regmap_block,
104
105         TP_PROTO(struct regmap *map, unsigned int reg, int count),
106
107         TP_ARGS(map, reg, count),
108
109         TP_STRUCT__entry(
110                 __string(       name,           regmap_name(map)        )
111                 __field(        unsigned int,   reg                     )
112                 __field(        int,            count                   )
113         ),
114
115         TP_fast_assign(
116                 __assign_str(name, regmap_name(map));
117                 __entry->reg = reg;
118                 __entry->count = count;
119         ),
120
121         TP_printk("%s reg=%x count=%d", __get_str(name), __entry->reg, __entry->count)
122 );
123
124 DEFINE_EVENT(regmap_block, regmap_hw_read_start,
125
126         TP_PROTO(struct regmap *map, unsigned int reg, int count),
127
128         TP_ARGS(map, reg, count)
129 );
130
131 DEFINE_EVENT(regmap_block, regmap_hw_read_done,
132
133         TP_PROTO(struct regmap *map, unsigned int reg, int count),
134
135         TP_ARGS(map, reg, count)
136 );
137
138 DEFINE_EVENT(regmap_block, regmap_hw_write_start,
139
140         TP_PROTO(struct regmap *map, unsigned int reg, int count),
141
142         TP_ARGS(map, reg, count)
143 );
144
145 DEFINE_EVENT(regmap_block, regmap_hw_write_done,
146
147         TP_PROTO(struct regmap *map, unsigned int reg, int count),
148
149         TP_ARGS(map, reg, count)
150 );
151
152 TRACE_EVENT(regcache_sync,
153
154         TP_PROTO(struct regmap *map, const char *type,
155                  const char *status),
156
157         TP_ARGS(map, type, status),
158
159         TP_STRUCT__entry(
160                 __string(       name,           regmap_name(map)        )
161                 __string(       status,         status                  )
162                 __string(       type,           type                    )
163         ),
164
165         TP_fast_assign(
166                 __assign_str(name, regmap_name(map));
167                 __assign_str(status, status);
168                 __assign_str(type, type);
169         ),
170
171         TP_printk("%s type=%s status=%s", __get_str(name),
172                   __get_str(type), __get_str(status))
173 );
174
175 DECLARE_EVENT_CLASS(regmap_bool,
176
177         TP_PROTO(struct regmap *map, bool flag),
178
179         TP_ARGS(map, flag),
180
181         TP_STRUCT__entry(
182                 __string(       name,           regmap_name(map)        )
183                 __field(        int,            flag                    )
184         ),
185
186         TP_fast_assign(
187                 __assign_str(name, regmap_name(map));
188                 __entry->flag = flag;
189         ),
190
191         TP_printk("%s flag=%d", __get_str(name), __entry->flag)
192 );
193
194 DEFINE_EVENT(regmap_bool, regmap_cache_only,
195
196         TP_PROTO(struct regmap *map, bool flag),
197
198         TP_ARGS(map, flag)
199 );
200
201 DEFINE_EVENT(regmap_bool, regmap_cache_bypass,
202
203         TP_PROTO(struct regmap *map, bool flag),
204
205         TP_ARGS(map, flag)
206 );
207
208 DECLARE_EVENT_CLASS(regmap_async,
209
210         TP_PROTO(struct regmap *map),
211
212         TP_ARGS(map),
213
214         TP_STRUCT__entry(
215                 __string(       name,           regmap_name(map)        )
216         ),
217
218         TP_fast_assign(
219                 __assign_str(name, regmap_name(map));
220         ),
221
222         TP_printk("%s", __get_str(name))
223 );
224
225 DEFINE_EVENT(regmap_block, regmap_async_write_start,
226
227         TP_PROTO(struct regmap *map, unsigned int reg, int count),
228
229         TP_ARGS(map, reg, count)
230 );
231
232 DEFINE_EVENT(regmap_async, regmap_async_io_complete,
233
234         TP_PROTO(struct regmap *map),
235
236         TP_ARGS(map)
237 );
238
239 DEFINE_EVENT(regmap_async, regmap_async_complete_start,
240
241         TP_PROTO(struct regmap *map),
242
243         TP_ARGS(map)
244 );
245
246 DEFINE_EVENT(regmap_async, regmap_async_complete_done,
247
248         TP_PROTO(struct regmap *map),
249
250         TP_ARGS(map)
251 );
252
253 TRACE_EVENT(regcache_drop_region,
254
255         TP_PROTO(struct regmap *map, unsigned int from,
256                  unsigned int to),
257
258         TP_ARGS(map, from, to),
259
260         TP_STRUCT__entry(
261                 __string(       name,           regmap_name(map)        )
262                 __field(        unsigned int,   from                    )
263                 __field(        unsigned int,   to                      )
264         ),
265
266         TP_fast_assign(
267                 __assign_str(name, regmap_name(map));
268                 __entry->from = from;
269                 __entry->to = to;
270         ),
271
272         TP_printk("%s %u-%u", __get_str(name), __entry->from, __entry->to)
273 );
274
275 #endif /* _TRACE_REGMAP_H */
276
277 #undef TRACE_INCLUDE_PATH
278 #define TRACE_INCLUDE_PATH .
279
280 #undef TRACE_INCLUDE_FILE
281 #define TRACE_INCLUDE_FILE trace
282
283 /* This part must be outside protection */
284 #include <trace/define_trace.h>