xref: /linux-6.15/include/trace/events/sof_intel.h (revision 2c92ca84)
1baedc630SNoah Klayman /* SPDX-License-Identifier: GPL-2.0-only */
2baedc630SNoah Klayman /*
3ea89a742SPierre-Louis Bossart  * Copyright(c) 2022 Intel Corporation
4baedc630SNoah Klayman  *
5baedc630SNoah Klayman  * Author: Noah Klayman <[email protected]>
6baedc630SNoah Klayman  */
7baedc630SNoah Klayman 
8baedc630SNoah Klayman #undef TRACE_SYSTEM
9baedc630SNoah Klayman #define TRACE_SYSTEM sof_intel
10baedc630SNoah Klayman 
11baedc630SNoah Klayman #if !defined(_TRACE_SOF_INTEL_H) || defined(TRACE_HEADER_MULTI_READ)
12baedc630SNoah Klayman #define _TRACE_SOF_INTEL_H
13baedc630SNoah Klayman #include <linux/tracepoint.h>
14d272b657SBard Liao #include <sound/hdaudio.h>
15baedc630SNoah Klayman #include "../../../sound/soc/sof/sof-audio.h"
16baedc630SNoah Klayman 
17baedc630SNoah Klayman TRACE_EVENT(sof_intel_hda_irq,
18baedc630SNoah Klayman 	TP_PROTO(struct snd_sof_dev *sdev, char *source),
19baedc630SNoah Klayman 	TP_ARGS(sdev, source),
20baedc630SNoah Klayman 	TP_STRUCT__entry(
21baedc630SNoah Klayman 		__string(device_name, dev_name(sdev->dev))
22baedc630SNoah Klayman 		__string(source, source)
23baedc630SNoah Klayman 	),
24baedc630SNoah Klayman 	TP_fast_assign(
25*2c92ca84SSteven Rostedt (Google) 		__assign_str(device_name);
26*2c92ca84SSteven Rostedt (Google) 		__assign_str(source);
27baedc630SNoah Klayman 	),
28baedc630SNoah Klayman 	TP_printk("device_name=%s source=%s",
29baedc630SNoah Klayman 		  __get_str(device_name), __get_str(source))
30baedc630SNoah Klayman );
31baedc630SNoah Klayman 
32d272b657SBard Liao DECLARE_EVENT_CLASS(sof_intel_ipc_firmware_template,
33d272b657SBard Liao 	TP_ARGS(struct snd_sof_dev *sdev, u32 msg, u32 msg_ext),
34d272b657SBard Liao 	TP_PROTO(sdev, msg, msg_ext),
35d272b657SBard Liao 	TP_STRUCT__entry(
36d272b657SBard Liao 		__string(device_name, dev_name(sdev->dev))
37d272b657SBard Liao 		__field(u32, msg)
38d272b657SBard Liao 		__field(u32, msg_ext)
39d272b657SBard Liao 	),
40d272b657SBard Liao 	TP_fast_assign(
41*2c92ca84SSteven Rostedt (Google) 		__assign_str(device_name);
42d272b657SBard Liao 		__entry->msg = msg;
43d272b657SBard Liao 		__entry->msg_ext = msg_ext;
44d272b657SBard Liao 	),
45d272b657SBard Liao 	TP_printk("device_name=%s msg=%#x msg_ext=%#x",
46d272b657SBard Liao 		  __get_str(device_name), __entry->msg, __entry->msg_ext)
47d272b657SBard Liao );
48d272b657SBard Liao 
49d272b657SBard Liao DEFINE_EVENT(sof_intel_ipc_firmware_template, sof_intel_ipc_firmware_response,
50d272b657SBard Liao 	TP_PROTO(struct snd_sof_dev *sdev, u32 msg, u32 msg_ext),
51d272b657SBard Liao 	TP_ARGS(sdev, msg, msg_ext)
52d272b657SBard Liao );
53d272b657SBard Liao 
54d272b657SBard Liao DEFINE_EVENT(sof_intel_ipc_firmware_template, sof_intel_ipc_firmware_initiated,
55d272b657SBard Liao 	TP_PROTO(struct snd_sof_dev *sdev, u32 msg, u32 msg_ext),
56d272b657SBard Liao 	TP_ARGS(sdev, msg, msg_ext)
57d272b657SBard Liao );
58d272b657SBard Liao 
59d272b657SBard Liao TRACE_EVENT(sof_intel_D0I3C_updated,
60d272b657SBard Liao 	TP_PROTO(struct snd_sof_dev *sdev, u8 reg),
61d272b657SBard Liao 	TP_ARGS(sdev, reg),
62d272b657SBard Liao 	TP_STRUCT__entry(
63d272b657SBard Liao 		__string(device_name, dev_name(sdev->dev))
64d272b657SBard Liao 		__field(u8, reg)
65d272b657SBard Liao 	),
66d272b657SBard Liao 	TP_fast_assign(
67*2c92ca84SSteven Rostedt (Google) 		__assign_str(device_name);
68d272b657SBard Liao 		__entry->reg = reg;
69d272b657SBard Liao 	),
70d272b657SBard Liao 	TP_printk("device_name=%s register=%#x",
71d272b657SBard Liao 		  __get_str(device_name), __entry->reg)
72d272b657SBard Liao );
73d272b657SBard Liao 
74d272b657SBard Liao TRACE_EVENT(sof_intel_hda_irq_ipc_check,
75d272b657SBard Liao 	TP_PROTO(struct snd_sof_dev *sdev, u32 irq_status),
76d272b657SBard Liao 	TP_ARGS(sdev, irq_status),
77d272b657SBard Liao 	TP_STRUCT__entry(
78d272b657SBard Liao 		__string(device_name, dev_name(sdev->dev))
79d272b657SBard Liao 		__field(u32, irq_status)
80d272b657SBard Liao 	),
81d272b657SBard Liao 	TP_fast_assign(
82*2c92ca84SSteven Rostedt (Google) 		__assign_str(device_name);
83d272b657SBard Liao 		__entry->irq_status = irq_status;
84d272b657SBard Liao 	),
85d272b657SBard Liao 	TP_printk("device_name=%s irq_status=%#x",
86d272b657SBard Liao 		  __get_str(device_name), __entry->irq_status)
87d272b657SBard Liao );
88d272b657SBard Liao 
89d272b657SBard Liao TRACE_EVENT(sof_intel_hda_dsp_pcm,
90d272b657SBard Liao 	TP_PROTO(struct snd_sof_dev *sdev,
91d272b657SBard Liao 		struct hdac_stream *hstream,
92d272b657SBard Liao 		struct snd_pcm_substream *substream,
93d272b657SBard Liao 		snd_pcm_uframes_t pos
94d272b657SBard Liao 	),
95d272b657SBard Liao 	TP_ARGS(sdev, hstream, substream, pos),
96d272b657SBard Liao 	TP_STRUCT__entry(
97d272b657SBard Liao 		__string(device_name, dev_name(sdev->dev))
98d272b657SBard Liao 		__field(u32, hstream_index)
99d272b657SBard Liao 		__field(u32, substream)
100d272b657SBard Liao 		__field(unsigned long, pos)
101d272b657SBard Liao 	),
102d272b657SBard Liao 	TP_fast_assign(
103*2c92ca84SSteven Rostedt (Google) 		__assign_str(device_name);
104d272b657SBard Liao 		__entry->hstream_index = hstream->index;
105d272b657SBard Liao 		__entry->substream = substream->stream;
106d272b657SBard Liao 		__entry->pos = pos;
107d272b657SBard Liao 	),
108d272b657SBard Liao 	TP_printk("device_name=%s hstream_index=%d substream=%d pos=%lu",
109d272b657SBard Liao 		  __get_str(device_name), __entry->hstream_index,
110d272b657SBard Liao 		  __entry->substream, __entry->pos)
111d272b657SBard Liao );
112d272b657SBard Liao 
113d272b657SBard Liao TRACE_EVENT(sof_intel_hda_dsp_stream_status,
114d272b657SBard Liao 	TP_PROTO(struct device *dev, struct hdac_stream *s, u32 status),
115d272b657SBard Liao 	TP_ARGS(dev, s, status),
116d272b657SBard Liao 	TP_STRUCT__entry(
117d272b657SBard Liao 		__string(device_name, dev_name(dev))
118d272b657SBard Liao 		__field(u32, stream)
119d272b657SBard Liao 		__field(u32, status)
120d272b657SBard Liao 	),
121d272b657SBard Liao 	TP_fast_assign(
122*2c92ca84SSteven Rostedt (Google) 		__assign_str(device_name);
123d272b657SBard Liao 		__entry->stream = s->index;
124d272b657SBard Liao 		__entry->status = status;
125d272b657SBard Liao 	),
126d272b657SBard Liao 	TP_printk("device_name=%s stream=%d status=%#x",
127d272b657SBard Liao 		  __get_str(device_name), __entry->stream, __entry->status)
128d272b657SBard Liao );
129d272b657SBard Liao 
130d272b657SBard Liao TRACE_EVENT(sof_intel_hda_dsp_check_stream_irq,
131d272b657SBard Liao 	TP_PROTO(struct snd_sof_dev *sdev, u32 status),
132d272b657SBard Liao 	TP_ARGS(sdev, status),
133d272b657SBard Liao 	TP_STRUCT__entry(
134d272b657SBard Liao 		__string(device_name, dev_name(sdev->dev))
135d272b657SBard Liao 		__field(u32, status)
136d272b657SBard Liao 	),
137d272b657SBard Liao 	TP_fast_assign(
138*2c92ca84SSteven Rostedt (Google) 		__assign_str(device_name);
139d272b657SBard Liao 		__entry->status = status;
140d272b657SBard Liao 	),
141d272b657SBard Liao 	TP_printk("device_name=%s status=%#x",
142d272b657SBard Liao 		  __get_str(device_name), __entry->status)
143d272b657SBard Liao );
144d272b657SBard Liao 
145baedc630SNoah Klayman #endif /* _TRACE_SOF_INTEL_H */
146baedc630SNoah Klayman 
147baedc630SNoah Klayman /* This part must be outside protection */
148baedc630SNoah Klayman #include <trace/define_trace.h>
149