Commit | Line | Data |
---|---|---|
fa6e73d6 BL |
1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
2 | /* | |
ea89a742 | 3 | * Copyright(c) 2022 Intel Corporation |
fa6e73d6 BL |
4 | * |
5 | * Author: Noah Klayman <noah.klayman@intel.com> | |
6 | */ | |
7 | ||
8 | #undef TRACE_SYSTEM | |
9 | #define TRACE_SYSTEM sof | |
10 | ||
11 | #if !defined(_TRACE_SOF_H) || defined(TRACE_HEADER_MULTI_READ) | |
12 | #define _TRACE_SOF_H | |
13 | #include <linux/tracepoint.h> | |
bcd2cc35 | 14 | #include <linux/types.h> |
fa6e73d6 BL |
15 | #include <sound/sof/stream.h> |
16 | #include "../../../sound/soc/sof/sof-audio.h" | |
17 | ||
18 | DECLARE_EVENT_CLASS(sof_widget_template, | |
19 | TP_PROTO(struct snd_sof_widget *swidget), | |
20 | TP_ARGS(swidget), | |
21 | TP_STRUCT__entry( | |
22 | __string(name, swidget->widget->name) | |
23 | __field(int, use_count) | |
24 | ), | |
25 | TP_fast_assign( | |
2c92ca84 | 26 | __assign_str(name); |
fa6e73d6 BL |
27 | __entry->use_count = swidget->use_count; |
28 | ), | |
29 | TP_printk("name=%s use_count=%d", __get_str(name), __entry->use_count) | |
30 | ); | |
31 | ||
32 | DEFINE_EVENT(sof_widget_template, sof_widget_setup, | |
33 | TP_PROTO(struct snd_sof_widget *swidget), | |
34 | TP_ARGS(swidget) | |
35 | ); | |
36 | ||
37 | DEFINE_EVENT(sof_widget_template, sof_widget_free, | |
38 | TP_PROTO(struct snd_sof_widget *swidget), | |
39 | TP_ARGS(swidget) | |
40 | ); | |
41 | ||
bcd2cc35 NK |
42 | TRACE_EVENT(sof_ipc3_period_elapsed_position, |
43 | TP_PROTO(struct snd_sof_dev *sdev, struct sof_ipc_stream_posn *posn), | |
44 | TP_ARGS(sdev, posn), | |
45 | TP_STRUCT__entry( | |
46 | __string(device_name, dev_name(sdev->dev)) | |
47 | __field(u64, host_posn) | |
48 | __field(u64, dai_posn) | |
49 | __field(u64, wallclock) | |
50 | ), | |
51 | TP_fast_assign( | |
2c92ca84 | 52 | __assign_str(device_name); |
bcd2cc35 NK |
53 | __entry->host_posn = posn->host_posn; |
54 | __entry->dai_posn = posn->dai_posn; | |
55 | __entry->wallclock = posn->wallclock; | |
56 | ), | |
57 | TP_printk("device_name=%s host_posn=%#llx dai_posn=%#llx wallclock=%#llx", | |
58 | __get_str(device_name), __entry->host_posn, __entry->dai_posn, | |
59 | __entry->wallclock) | |
60 | ); | |
61 | ||
62 | TRACE_EVENT(sof_pcm_pointer_position, | |
63 | TP_PROTO(struct snd_sof_dev *sdev, | |
64 | struct snd_sof_pcm *spcm, | |
65 | struct snd_pcm_substream *substream, | |
66 | snd_pcm_uframes_t dma_posn, | |
67 | snd_pcm_uframes_t dai_posn | |
68 | ), | |
69 | TP_ARGS(sdev, spcm, substream, dma_posn, dai_posn), | |
70 | TP_STRUCT__entry( | |
71 | __string(device_name, dev_name(sdev->dev)) | |
72 | __field(u32, pcm_id) | |
73 | __field(int, stream) | |
74 | __field(unsigned long, dma_posn) | |
75 | __field(unsigned long, dai_posn) | |
76 | ), | |
77 | TP_fast_assign( | |
2c92ca84 | 78 | __assign_str(device_name); |
bcd2cc35 NK |
79 | __entry->pcm_id = le32_to_cpu(spcm->pcm.pcm_id); |
80 | __entry->stream = substream->stream; | |
81 | __entry->dma_posn = dma_posn; | |
82 | __entry->dai_posn = dai_posn; | |
83 | ), | |
84 | TP_printk("device_name=%s pcm_id=%d stream=%d dma_posn=%lu dai_posn=%lu", | |
85 | __get_str(device_name), __entry->pcm_id, __entry->stream, | |
86 | __entry->dma_posn, __entry->dai_posn) | |
87 | ); | |
88 | ||
89 | TRACE_EVENT(sof_stream_position_ipc_rx, | |
90 | TP_PROTO(struct device *dev), | |
91 | TP_ARGS(dev), | |
92 | TP_STRUCT__entry( | |
93 | __string(device_name, dev_name(dev)) | |
94 | ), | |
95 | TP_fast_assign( | |
2c92ca84 | 96 | __assign_str(device_name); |
bcd2cc35 NK |
97 | ), |
98 | TP_printk("device_name=%s", __get_str(device_name)) | |
99 | ); | |
100 | ||
794cd3bd NK |
101 | TRACE_EVENT(sof_ipc4_fw_config, |
102 | TP_PROTO(struct snd_sof_dev *sdev, char *key, u32 value), | |
103 | TP_ARGS(sdev, key, value), | |
104 | TP_STRUCT__entry( | |
105 | __string(device_name, dev_name(sdev->dev)) | |
106 | __string(key, key) | |
107 | __field(u32, value) | |
108 | ), | |
109 | TP_fast_assign( | |
2c92ca84 SRG |
110 | __assign_str(device_name); |
111 | __assign_str(key); | |
794cd3bd NK |
112 | __entry->value = value; |
113 | ), | |
114 | TP_printk("device_name=%s key=%s value=%d", | |
115 | __get_str(device_name), __get_str(key), __entry->value) | |
116 | ); | |
117 | ||
fa6e73d6 BL |
118 | #endif /* _TRACE_SOF_H */ |
119 | ||
120 | /* This part must be outside protection */ | |
121 | #include <trace/define_trace.h> |