misc/trinity: Add trinity npu driver
[platform/kernel/linux-rpi.git] / drivers / misc / trinity / trinity_trace.h
1 // SPDX-License-Identifier: GPL-2.0-only
2 /**
3  * trinity/trinity_trace.h: Trace header for trinity devices
4  *
5  * Copyright (C) 2021 Samsung Electronics
6  * Copyright (C) 2021 Dongju Chae <dongju.chae@samsung.com>
7  */
8
9 #if !defined(__TRINITY_TRACE_H__) || defined(TRACE_HEADER_MULTI_READ)
10 #define __TRINITY_TRACE_H__
11
12 #include <linux/tracepoint.h>
13
14 #undef TRACE_SYSTEM
15 #define TRACE_SYSTEM       trinity
16 #define TRACE_INCLUDE_FILE trinity_trace
17
18 // clang-format off
19 TRACE_EVENT(triv2_run_trigger,
20         TP_PROTO(u32 device_id, s32 slot),
21         TP_ARGS(device_id, slot),
22         TP_STRUCT__entry(
23                 __field(u32, device_id)
24                 __field(s32, slot)
25         ),
26         TP_fast_assign(
27                 __entry->device_id = device_id;
28                 __entry->slot = slot;
29         ),
30         TP_printk("device_id=%u slot=%d",
31                 __entry->device_id,
32                 __entry->slot)
33 );
34 TRACE_EVENT(triv2_wakeup_cp,
35         TP_PROTO(u32 device_id),
36         TP_ARGS(device_id),
37         TP_STRUCT__entry(
38                 __field(u32, device_id)
39         ),
40         TP_fast_assign(
41                 __entry->device_id = device_id;
42         ),
43         TP_printk("device_id=%u",
44                 __entry->device_id)
45 );
46 TRACE_EVENT(triv2_handle_irq,
47         TP_PROTO(u32 device_id, s32 irq),
48         TP_ARGS(device_id, irq),
49         TP_STRUCT__entry(
50                 __field(u32, device_id)
51                 __field(s32, irq)
52         ),
53         TP_fast_assign(
54                 __entry->device_id = device_id;
55                 __entry->irq = irq;
56         ),
57         TP_printk("device_id=%u irq=%d",
58                 __entry->device_id,
59                 __entry->irq)
60 );
61 TRACE_EVENT(triv2_handle_threaded_irq,
62         TP_PROTO(u32 device_id, s32 irq),
63         TP_ARGS(device_id, irq),
64         TP_STRUCT__entry(
65                 __field(u32, device_id)
66                 __field(s32, irq)
67         ),
68         TP_fast_assign(
69                 __entry->device_id = device_id;
70                 __entry->irq = irq;
71         ),
72         TP_printk("device_id=%u irq=%d",
73                 __entry->device_id,
74                 __entry->irq)
75 );
76 TRACE_EVENT(triv2_handle_cmd_done,
77         TP_PROTO(u32 device_id, s32 slot, u32 cycles, u32 time),
78         TP_ARGS(device_id, slot, cycles, time),
79         TP_STRUCT__entry(
80                 __field(u32, device_id)
81                 __field(s32, slot)
82                 __field(u32, cycles)
83                 __field(u32, time)
84         ),
85         TP_fast_assign(
86                 __entry->device_id = device_id;
87                 __entry->slot = slot;
88                 __entry->cycles = cycles;
89                 __entry->time = time;
90         ),
91         TP_printk("device_id=%u slot=%d cycles=%u time(us)=%u",
92                 __entry->device_id,
93                 __entry->slot,
94                 __entry->cycles,
95                 __entry->time)
96 );
97 TRACE_EVENT(triv2_map_sched_data,
98         TP_PROTO(u32 device_id, s32 slot, u32 batch_size, u32 in_cnt, u32 out_cnt),
99         TP_ARGS(device_id, slot, batch_size, in_cnt, out_cnt),
100         TP_STRUCT__entry(
101                 __field(u32, device_id)
102                 __field(s32, slot)
103                 __field(u32, batch_size)
104                 __field(u32, in_cnt)
105                 __field(u32, out_cnt)
106         ),
107         TP_fast_assign(
108                 __entry->device_id = device_id;
109                 __entry->slot = slot;
110                 __entry->batch_size = batch_size;
111                 __entry->in_cnt = in_cnt;
112                 __entry->out_cnt = out_cnt;
113         ),
114         TP_printk("device_id=%u slot=%d batch_size=%u in_cnt=%u out_cnt=%u",
115                 __entry->device_id,
116                 __entry->slot,
117                 __entry->batch_size,
118                 __entry->in_cnt,
119                 __entry->out_cnt)
120 );
121 TRACE_EVENT(triv2_unmap_sched_data,
122         TP_PROTO(u32 device_id, s32 slot),
123         TP_ARGS(device_id, slot),
124         TP_STRUCT__entry(
125                 __field(u32, device_id)
126                 __field(s32, slot)
127         ),
128         TP_fast_assign(
129                 __entry->device_id = device_id;
130                 __entry->slot = slot;
131         ),
132         TP_printk("device_id=%u slot=%d",
133                 __entry->device_id,
134                 __entry->slot)
135 );
136 TRACE_EVENT(trinity_ioctl_msg,
137         TP_PROTO(u32 device_id, s32 app_id, char* msg),
138         TP_ARGS(device_id, app_id, msg),
139         TP_STRUCT__entry(
140                 __field(u32, device_id)
141                 __field(s32, app_id)
142                 __field(char*, msg)
143         ),
144         TP_fast_assign(
145                 __entry->device_id = device_id;
146                 __entry->app_id = app_id;
147                 __entry->msg = msg;
148         ),
149         TP_printk("device_id=%u app_id=%d msg=%s",
150                 __entry->device_id,
151                 __entry->app_id,
152                 __entry->msg)
153 );
154 TRACE_EVENT(trinity_ioctl_next_req,
155         TP_PROTO(u32 device_id, s32 app_id, s32 req_id),
156         TP_ARGS(device_id, app_id, req_id),
157         TP_STRUCT__entry(
158                 __field(u32, device_id)
159                 __field(s32, app_id)
160                 __field(s32, req_id)
161         ),
162         TP_fast_assign(
163                 __entry->device_id = device_id;
164                 __entry->app_id = app_id;
165                 __entry->req_id = req_id;
166         ),
167         TP_printk("device_id=%u app_id=%d req_id=%d",
168                 __entry->device_id,
169                 __entry->app_id,
170                 __entry->req_id)
171 );
172 TRACE_EVENT(trinity_ioctl_stop_req,
173         TP_PROTO(u32 device_id, s32 app_id, s32 req_id),
174         TP_ARGS(device_id, app_id, req_id),
175         TP_STRUCT__entry(
176                 __field(u32, device_id)
177                 __field(s32, app_id)
178                 __field(s32, req_id)
179         ),
180         TP_fast_assign(
181                 __entry->device_id = device_id;
182                 __entry->app_id = app_id;
183                 __entry->req_id = req_id;
184         ),
185         TP_printk("device_id=%u app_id=%d req_id=%d",
186                 __entry->device_id,
187                 __entry->app_id,
188                 __entry->req_id)
189 );
190 TRACE_EVENT(trinity_ioctl_hwmem_alloc,
191         TP_PROTO(u32 device_id, s32 app_id, s64 size, s32 dbuf_fd),
192         TP_ARGS(device_id, app_id, size, dbuf_fd),
193         TP_STRUCT__entry(
194                 __field(u32, device_id)
195                 __field(s32, app_id)
196                 __field(s64, size)
197                 __field(s32, dbuf_fd)
198         ),
199         TP_fast_assign(
200                 __entry->device_id = device_id;
201                 __entry->app_id = app_id;
202                 __entry->size = size;
203                 __entry->dbuf_fd = dbuf_fd;
204         ),
205         TP_printk("device_id=%u app_id=%d size=%lld dbuf_fd=%d",
206                 __entry->device_id,
207                 __entry->app_id,
208                 __entry->size,
209                 __entry->dbuf_fd)
210 );
211 TRACE_EVENT(trinity_ioctl_hwmem_dealloc,
212         TP_PROTO(u32 device_id, s32 app_id, s32 dbuf_fd),
213         TP_ARGS(device_id, app_id, dbuf_fd),
214         TP_STRUCT__entry(
215                 __field(u32, device_id)
216                 __field(s32, app_id)
217                 __field(s32, dbuf_fd)
218         ),
219         TP_fast_assign(
220                 __entry->device_id = device_id;
221                 __entry->app_id = app_id;
222                 __entry->dbuf_fd = dbuf_fd;
223         ),
224         TP_printk("device_id=%u app_id=%d dbuf_fd=%d",
225                 __entry->device_id,
226                 __entry->app_id,
227                 __entry->dbuf_fd)
228 );
229 TRACE_EVENT(trinity_ioctl_get_profile_meta,
230         TP_PROTO(u32 device_id, s32 app_id, s32 req_id, u32 profile_size),
231         TP_ARGS(device_id, app_id, req_id, profile_size),
232         TP_STRUCT__entry(
233                 __field(u32, device_id)
234                 __field(s32, app_id)
235                 __field(s32, req_id)
236                 __field(u32, profile_size)
237         ),
238         TP_fast_assign(
239                 __entry->device_id = device_id;
240                 __entry->app_id = app_id;
241                 __entry->req_id = req_id;
242                 __entry->profile_size = profile_size;
243         ),
244         TP_printk("device_id=%u app_id=%d req_id=%d profile_size=%u",
245                 __entry->device_id,
246                 __entry->app_id,
247                 __entry->req_id,
248                 __entry->profile_size)
249 );
250 TRACE_EVENT(trinity_ioctl_get_profile_buff,
251         TP_PROTO(u32 device_id, s32 app_id, s32 req_id, u32 profile_pos, u32 profile_size),
252         TP_ARGS(device_id, app_id, req_id, profile_pos, profile_size),
253         TP_STRUCT__entry(
254                 __field(u32, device_id)
255                 __field(s32, app_id)
256                 __field(s32, req_id)
257                 __field(u32, profile_pos)
258                 __field(u32, profile_size)
259         ),
260         TP_fast_assign(
261                 __entry->device_id = device_id;
262                 __entry->app_id = app_id;
263                 __entry->req_id = req_id;
264                 __entry->profile_pos = profile_pos;
265                 __entry->profile_size = profile_size;
266         ),
267         TP_printk("device_id=%u app_id=%d req_id=%d profile_pos=%u profile_size=%u",
268                 __entry->device_id,
269                 __entry->app_id,
270                 __entry->req_id,
271                 __entry->profile_pos,
272                 __entry->profile_size)
273 );
274 TRACE_EVENT(trinity_ioctl_register_model,
275         TP_PROTO(u32 device_id, s32 app_id, u64 config_id, s32 dbuf_fd, u64 program_offset_addr, u64 program_size),
276         TP_ARGS(device_id, app_id, config_id, dbuf_fd, program_offset_addr, program_size),
277         TP_STRUCT__entry(
278                 __field(u32, device_id)
279                 __field(s32, app_id)
280                 __field(u64, config_id)
281                 __field(s32, dbuf_fd)
282                 __field(u64, program_offset_addr)
283                 __field(u64, program_size)
284         ),
285         TP_fast_assign(
286                 __entry->device_id = device_id;
287                 __entry->app_id = app_id;
288                 __entry->config_id = config_id;
289                 __entry->dbuf_fd = dbuf_fd;
290                 __entry->program_offset_addr = program_offset_addr;
291                 __entry->program_size = program_size;
292         ),
293         TP_printk("device_id=%u app_id=%d config_id=0x%llx dbuf_fd=%d program_offset_addr=0x%llx program_size=0x%llx",
294                 __entry->device_id,
295                 __entry->app_id,
296                 __entry->config_id,
297                 __entry->dbuf_fd,
298                 __entry->program_offset_addr,
299                 __entry->program_size)
300 );
301 TRACE_EVENT(trinity_ioctl_register_model_drv_ver1,
302         TP_PROTO(u64 weight_offset_addr),
303         TP_ARGS(weight_offset_addr),
304         TP_STRUCT__entry(
305                 __field(u64, weight_offset_addr)
306         ),
307         TP_fast_assign(
308                 __entry->weight_offset_addr = weight_offset_addr;
309         ),
310         TP_printk("weight_offset_addr=0x%llx",
311                 __entry->weight_offset_addr)
312 );
313 TRACE_EVENT(trinity_ioctl_register_model_drv_ver2,
314         TP_PROTO(s32 metadata_dbuf_fd, s32 metadata_ext_dbuf_fd, u64 metadata_ext_size),
315         TP_ARGS(metadata_dbuf_fd, metadata_ext_dbuf_fd, metadata_ext_size),
316         TP_STRUCT__entry(
317                 __field(s32, metadata_dbuf_fd)
318                 __field(s32, metadata_ext_dbuf_fd)
319                 __field(u64, metadata_ext_size)
320         ),
321         TP_fast_assign(
322                 __entry->metadata_dbuf_fd = metadata_dbuf_fd;
323                 __entry->metadata_ext_dbuf_fd = metadata_ext_dbuf_fd;
324                 __entry->metadata_ext_size = metadata_ext_size;
325         ),
326         TP_printk("metadata_dbuf_fd=%d metadata_ext_dbuf_fd=%d metadata_ext_size=0x%llx",
327                 __entry->metadata_dbuf_fd,
328                 __entry->metadata_ext_dbuf_fd,
329                 __entry->metadata_ext_size)
330 );
331 TRACE_EVENT(trinity_ioctl_run_input,
332         TP_PROTO(u32 device_id, s32 app_id, s32 dbuf_fd, u64 model_id),
333         TP_ARGS(device_id, app_id, dbuf_fd, model_id),
334         TP_STRUCT__entry(
335                 __field(u32, device_id)
336                 __field(s32, app_id)
337                 __field(s32, dbuf_fd)
338                 __field(u64, model_id)
339         ),
340         TP_fast_assign(
341                 __entry->device_id = device_id;
342                 __entry->app_id = app_id;
343                 __entry->dbuf_fd = dbuf_fd;
344                 __entry->model_id = model_id;
345         ),
346         TP_printk("device_id=%u app_id=%d dbuf_fd=%d model_id=0x%llx",
347                 __entry->device_id,
348                 __entry->app_id,
349                 __entry->dbuf_fd,
350                 __entry->model_id)
351 );
352 TRACE_EVENT(trinity_ioctl_run_input_drv_ver1,
353         TP_PROTO(u64 activation_offset_addr0, u64 activation_offset_addr1),
354         TP_ARGS(activation_offset_addr0, activation_offset_addr1),
355         TP_STRUCT__entry(
356                 __field(u64, activation_offset_addr0)
357                 __field(u64, activation_offset_addr1)
358         ),
359         TP_fast_assign(
360                 __entry->activation_offset_addr0 = activation_offset_addr0;
361                 __entry->activation_offset_addr1 = activation_offset_addr1;
362         ),
363         TP_printk("activation_offset_addr0=0x%llx activation_offset_addr1=0x%llx",
364                 __entry->activation_offset_addr0,
365                 __entry->activation_offset_addr1)
366 );
367 TRACE_EVENT(trinity_ioctl_run_input_drv_ver2,
368         TP_PROTO(s64 timeout_ms, u32 priority, u32 num_segments, s32 input_mode, s32 output_mode),
369         TP_ARGS(timeout_ms, priority, num_segments, input_mode, output_mode),
370         TP_STRUCT__entry(
371                 __field(s64, timeout_ms)
372                 __field(u32, priority)
373                 __field(u32, num_segments)
374                 __field(s32, input_mode)
375                 __field(s32, output_mode)
376         ),
377         TP_fast_assign(
378                 __entry->timeout_ms = timeout_ms;
379                 __entry->priority = priority;
380                 __entry->num_segments = num_segments;
381                 __entry->input_mode = input_mode;
382                 __entry->output_mode = output_mode;
383         ),
384         TP_printk("timeout_ms=%lld priority=%u num_segments=%u input_mode=%d output_mode=%d",
385                 __entry->timeout_ms,
386                 __entry->priority,
387                 __entry->num_segments,
388                 __entry->input_mode,
389                 __entry->output_mode)
390 );
391
392 // clang-format on
393
394 #endif /* __TRINITY_TRACE_H__ */
395
396 /* This part must be outside protection */
397 #undef TRACE_INCLUDE_PATH
398 #define TRACE_INCLUDE_PATH .
399 #include <trace/define_trace.h>