xref: /linux/sound/hda/trace.h (revision 71e2f4dd5a65bd8dbca0b77661e75eea471168f8)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #undef TRACE_SYSTEM
3 #define TRACE_SYSTEM hda
4 
5 #if !defined(__HDAC_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
6 #define __HDAC_TRACE_H
7 
8 #include <linux/tracepoint.h>
9 #include <linux/device.h>
10 #include <sound/hdaudio.h>
11 
12 #ifndef HDAC_MSG_MAX
13 #define HDAC_MSG_MAX	500
14 #endif
15 
16 struct hdac_bus;
17 struct hdac_codec;
18 
19 TRACE_EVENT(hda_send_cmd,
20 	TP_PROTO(struct hdac_bus *bus, unsigned int cmd),
21 	TP_ARGS(bus, cmd),
22 	TP_STRUCT__entry(__dynamic_array(char, msg, HDAC_MSG_MAX)),
23 	TP_fast_assign(
24 		snprintf(__get_str(msg), HDAC_MSG_MAX,
25 			 "[%s:%d] val=0x%08x",
26 			 dev_name((bus)->dev), (cmd) >> 28, cmd);
27 	),
28 	TP_printk("%s", __get_str(msg))
29 );
30 
31 TRACE_EVENT(hda_get_response,
32 	TP_PROTO(struct hdac_bus *bus, unsigned int addr, unsigned int res),
33 	TP_ARGS(bus, addr, res),
34 	TP_STRUCT__entry(__dynamic_array(char, msg, HDAC_MSG_MAX)),
35 	TP_fast_assign(
36 		snprintf(__get_str(msg), HDAC_MSG_MAX,
37 			 "[%s:%d] val=0x%08x",
38 			 dev_name((bus)->dev), addr, res);
39 	),
40 	TP_printk("%s", __get_str(msg))
41 );
42 
43 TRACE_EVENT(hda_unsol_event,
44 	TP_PROTO(struct hdac_bus *bus, u32 res, u32 res_ex),
45 	TP_ARGS(bus, res, res_ex),
46 	TP_STRUCT__entry(__dynamic_array(char, msg, HDAC_MSG_MAX)),
47 	TP_fast_assign(
48 		snprintf(__get_str(msg), HDAC_MSG_MAX,
49 			 "[%s:%d] res=0x%08x, res_ex=0x%08x",
50 			 dev_name((bus)->dev), res_ex & 0x0f, res, res_ex);
51 	),
52 	TP_printk("%s", __get_str(msg))
53 );
54 
55 DECLARE_EVENT_CLASS(hdac_stream,
56 	TP_PROTO(struct hdac_bus *bus, struct hdac_stream *azx_dev),
57 
58 	TP_ARGS(bus, azx_dev),
59 
60 	TP_STRUCT__entry(
61 		__field(unsigned char, stream_tag)
62 	),
63 
64 	TP_fast_assign(
65 		__entry->stream_tag = (azx_dev)->stream_tag;
66 	),
67 
68 	TP_printk("stream_tag: %d", __entry->stream_tag)
69 );
70 
71 DEFINE_EVENT(hdac_stream, snd_hdac_stream_start,
72 	TP_PROTO(struct hdac_bus *bus, struct hdac_stream *azx_dev),
73 	TP_ARGS(bus, azx_dev)
74 );
75 
76 DEFINE_EVENT(hdac_stream, snd_hdac_stream_stop,
77 	TP_PROTO(struct hdac_bus *bus, struct hdac_stream *azx_dev),
78 	TP_ARGS(bus, azx_dev)
79 );
80 
81 #endif /* __HDAC_TRACE_H */
82 
83 /* This part must be outside protection */
84 #undef TRACE_INCLUDE_PATH
85 #define TRACE_INCLUDE_PATH .
86 
87 #undef TRACE_INCLUDE_FILE
88 #define TRACE_INCLUDE_FILE trace
89 
90 #include <trace/define_trace.h>
91