GNU Linux-libre 4.14.290-gnu1
[releases.git] / sound / firewire / motu / amdtp-motu-trace.h
1 /*
2  * amdtp-motu-trace.h - tracepoint definitions to dump a part of packet data
3  *
4  * Copyright (c) 2017 Takashi Sakamoto
5  * Licensed under the terms of the GNU General Public License, version 2.
6  */
7
8 #undef TRACE_SYSTEM
9 #define TRACE_SYSTEM            snd_firewire_motu
10
11 #if !defined(_SND_FIREWIRE_MOTU_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
12 #define _SND_FIREWIRE_MOTU_TRACE_H
13
14 #include <linux/tracepoint.h>
15
16 static void copy_sph(u32 *frame, __be32 *buffer, unsigned int data_blocks,
17                      unsigned int data_block_quadlets);
18 static void copy_message(u64 *frames, __be32 *buffer, unsigned int data_blocks,
19                          unsigned int data_block_quadlets);
20
21 TRACE_EVENT(in_data_block_sph,
22         TP_PROTO(struct amdtp_stream *s, unsigned int data_blocks, __be32 *buffer),
23         TP_ARGS(s, data_blocks, buffer),
24         TP_STRUCT__entry(
25                 __field(int, src)
26                 __field(int, dst)
27                 __field(unsigned int, data_blocks)
28                 __dynamic_array(u32, tstamps, data_blocks)
29         ),
30         TP_fast_assign(
31                 __entry->src = fw_parent_device(s->unit)->node_id;
32                 __entry->dst = fw_parent_device(s->unit)->card->node_id;
33                 __entry->data_blocks = data_blocks;
34                 copy_sph(__get_dynamic_array(tstamps), buffer, data_blocks, s->data_block_quadlets);
35         ),
36         TP_printk(
37                 "%04x %04x %u %s",
38                 __entry->src,
39                 __entry->dst,
40                 __entry->data_blocks,
41                 __print_array(__get_dynamic_array(tstamps), __entry->data_blocks, 4)
42         )
43 );
44
45 TRACE_EVENT(out_data_block_sph,
46         TP_PROTO(struct amdtp_stream *s, unsigned int data_blocks, __be32 *buffer),
47         TP_ARGS(s, data_blocks, buffer),
48         TP_STRUCT__entry(
49                 __field(int, src)
50                 __field(int, dst)
51                 __field(unsigned int, data_blocks)
52                 __dynamic_array(u32, tstamps, data_blocks)
53         ),
54         TP_fast_assign(
55                 __entry->src = fw_parent_device(s->unit)->card->node_id;
56                 __entry->dst = fw_parent_device(s->unit)->node_id;
57                 __entry->data_blocks = data_blocks;
58                 copy_sph(__get_dynamic_array(tstamps), buffer, data_blocks, s->data_block_quadlets);
59         ),
60         TP_printk(
61                 "%04x %04x %u %s",
62                 __entry->src,
63                 __entry->dst,
64                 __entry->data_blocks,
65                 __print_array(__get_dynamic_array(tstamps), __entry->data_blocks, 4)
66         )
67 );
68
69 TRACE_EVENT(in_data_block_message,
70         TP_PROTO(struct amdtp_stream *s, unsigned int data_blocks, __be32 *buffer),
71         TP_ARGS(s, data_blocks, buffer),
72         TP_STRUCT__entry(
73                 __field(int, src)
74                 __field(int, dst)
75                 __field(unsigned int, data_blocks)
76                 __dynamic_array(u64, messages, data_blocks)
77         ),
78         TP_fast_assign(
79                 __entry->src = fw_parent_device(s->unit)->node_id;
80                 __entry->dst = fw_parent_device(s->unit)->card->node_id;
81                 __entry->data_blocks = data_blocks;
82                 copy_message(__get_dynamic_array(messages), buffer, data_blocks, s->data_block_quadlets);
83         ),
84         TP_printk(
85                 "%04x %04x %u %s",
86                 __entry->src,
87                 __entry->dst,
88                 __entry->data_blocks,
89                 __print_array(__get_dynamic_array(messages), __entry->data_blocks, 8)
90         )
91 );
92
93 TRACE_EVENT(out_data_block_message,
94         TP_PROTO(struct amdtp_stream *s, unsigned int data_blocks, __be32 *buffer),
95         TP_ARGS(s, data_blocks, buffer),
96         TP_STRUCT__entry(
97                 __field(int, src)
98                 __field(int, dst)
99                 __field(unsigned int, data_blocks)
100                 __dynamic_array(u64, messages, data_blocks)
101         ),
102         TP_fast_assign(
103                 __entry->src = fw_parent_device(s->unit)->card->node_id;
104                 __entry->dst = fw_parent_device(s->unit)->node_id;
105                 __entry->data_blocks = data_blocks;
106                 copy_message(__get_dynamic_array(messages), buffer, data_blocks, s->data_block_quadlets);
107         ),
108         TP_printk(
109                 "%04x %04x %u %s",
110                 __entry->src,
111                 __entry->dst,
112                 __entry->data_blocks,
113                 __print_array(__get_dynamic_array(messages), __entry->data_blocks, 8)
114         )
115 );
116
117 #endif
118
119 #undef TRACE_INCLUDE_PATH
120 #define TRACE_INCLUDE_PATH      .
121 #undef TRACE_INCLUDE_FILE
122 #define TRACE_INCLUDE_FILE      amdtp-motu-trace
123 #include <trace/define_trace.h>