xref: /openbmc/linux/sound/firewire/amdtp-stream-trace.h (revision 0c95c1d6197f3edd3f6ef76f927d67e8ec0794ed)
1*0c95c1d6STakashi Sakamoto /*
2*0c95c1d6STakashi Sakamoto  * amdtp-stream-trace.h - tracepoint definitions to dump a part of packet data
3*0c95c1d6STakashi Sakamoto  *
4*0c95c1d6STakashi Sakamoto  * Copyright (c) 2016 Takashi Sakamoto
5*0c95c1d6STakashi Sakamoto  * Licensed under the terms of the GNU General Public License, version 2.
6*0c95c1d6STakashi Sakamoto  */
7*0c95c1d6STakashi Sakamoto 
8*0c95c1d6STakashi Sakamoto #undef TRACE_SYSTEM
9*0c95c1d6STakashi Sakamoto #define TRACE_SYSTEM		snd_firewire_lib
10*0c95c1d6STakashi Sakamoto 
11*0c95c1d6STakashi Sakamoto #if !defined(_AMDTP_STREAM_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
12*0c95c1d6STakashi Sakamoto #define _AMDTP_STREAM_TRACE_H
13*0c95c1d6STakashi Sakamoto 
14*0c95c1d6STakashi Sakamoto #include <linux/tracepoint.h>
15*0c95c1d6STakashi Sakamoto 
16*0c95c1d6STakashi Sakamoto TRACE_EVENT(in_packet,
17*0c95c1d6STakashi Sakamoto 	TP_PROTO(const struct amdtp_stream *s, u32 cycles, u32 cip_header[2], unsigned int payload_quadlets),
18*0c95c1d6STakashi Sakamoto 	TP_ARGS(s, cycles, cip_header, payload_quadlets),
19*0c95c1d6STakashi Sakamoto 	TP_STRUCT__entry(
20*0c95c1d6STakashi Sakamoto 		__field(unsigned int, second)
21*0c95c1d6STakashi Sakamoto 		__field(unsigned int, cycle)
22*0c95c1d6STakashi Sakamoto 		__field(int, channel)
23*0c95c1d6STakashi Sakamoto 		__field(int, src)
24*0c95c1d6STakashi Sakamoto 		__field(int, dest)
25*0c95c1d6STakashi Sakamoto 		__field(u32, cip_header0)
26*0c95c1d6STakashi Sakamoto 		__field(u32, cip_header1)
27*0c95c1d6STakashi Sakamoto 		__field(unsigned int, payload_quadlets)
28*0c95c1d6STakashi Sakamoto 		__field(unsigned int, index)
29*0c95c1d6STakashi Sakamoto 	),
30*0c95c1d6STakashi Sakamoto 	TP_fast_assign(
31*0c95c1d6STakashi Sakamoto 		__entry->second = cycles / CYCLES_PER_SECOND;
32*0c95c1d6STakashi Sakamoto 		__entry->cycle = cycles % CYCLES_PER_SECOND;
33*0c95c1d6STakashi Sakamoto 		__entry->channel = s->context->channel;
34*0c95c1d6STakashi Sakamoto 		__entry->src = fw_parent_device(s->unit)->node_id;
35*0c95c1d6STakashi Sakamoto 		__entry->dest = fw_parent_device(s->unit)->card->node_id;
36*0c95c1d6STakashi Sakamoto 		__entry->cip_header0 = cip_header[0];
37*0c95c1d6STakashi Sakamoto 		__entry->cip_header1 = cip_header[1];
38*0c95c1d6STakashi Sakamoto 		__entry->payload_quadlets = payload_quadlets;
39*0c95c1d6STakashi Sakamoto 		__entry->index = s->packet_index;
40*0c95c1d6STakashi Sakamoto 	),
41*0c95c1d6STakashi Sakamoto 	TP_printk(
42*0c95c1d6STakashi Sakamoto 		"%02u %04u %04x %04x %02d %08x %08x %03u %02u",
43*0c95c1d6STakashi Sakamoto 		__entry->second,
44*0c95c1d6STakashi Sakamoto 		__entry->cycle,
45*0c95c1d6STakashi Sakamoto 		__entry->src,
46*0c95c1d6STakashi Sakamoto 		__entry->dest,
47*0c95c1d6STakashi Sakamoto 		__entry->channel,
48*0c95c1d6STakashi Sakamoto 		__entry->cip_header0,
49*0c95c1d6STakashi Sakamoto 		__entry->cip_header1,
50*0c95c1d6STakashi Sakamoto 		__entry->payload_quadlets,
51*0c95c1d6STakashi Sakamoto 		__entry->index)
52*0c95c1d6STakashi Sakamoto );
53*0c95c1d6STakashi Sakamoto 
54*0c95c1d6STakashi Sakamoto TRACE_EVENT(out_packet,
55*0c95c1d6STakashi Sakamoto 	TP_PROTO(const struct amdtp_stream *s, u32 cycles, __be32 *cip_header, unsigned int payload_length),
56*0c95c1d6STakashi Sakamoto 	TP_ARGS(s, cycles, cip_header, payload_length),
57*0c95c1d6STakashi Sakamoto 	TP_STRUCT__entry(
58*0c95c1d6STakashi Sakamoto 		__field(unsigned int, second)
59*0c95c1d6STakashi Sakamoto 		__field(unsigned int, cycle)
60*0c95c1d6STakashi Sakamoto 		__field(int, channel)
61*0c95c1d6STakashi Sakamoto 		__field(int, src)
62*0c95c1d6STakashi Sakamoto 		__field(int, dest)
63*0c95c1d6STakashi Sakamoto 		__field(u32, cip_header0)
64*0c95c1d6STakashi Sakamoto 		__field(u32, cip_header1)
65*0c95c1d6STakashi Sakamoto 		__field(unsigned int, payload_quadlets)
66*0c95c1d6STakashi Sakamoto 		__field(unsigned int, index)
67*0c95c1d6STakashi Sakamoto 	),
68*0c95c1d6STakashi Sakamoto 	TP_fast_assign(
69*0c95c1d6STakashi Sakamoto 		__entry->second = cycles / CYCLES_PER_SECOND;
70*0c95c1d6STakashi Sakamoto 		__entry->cycle = cycles % CYCLES_PER_SECOND;
71*0c95c1d6STakashi Sakamoto 		__entry->channel = s->context->channel;
72*0c95c1d6STakashi Sakamoto 		__entry->src = fw_parent_device(s->unit)->card->node_id;
73*0c95c1d6STakashi Sakamoto 		__entry->dest = fw_parent_device(s->unit)->node_id;
74*0c95c1d6STakashi Sakamoto 		__entry->cip_header0 = be32_to_cpu(cip_header[0]);
75*0c95c1d6STakashi Sakamoto 		__entry->cip_header1 = be32_to_cpu(cip_header[1]);
76*0c95c1d6STakashi Sakamoto 		__entry->payload_quadlets = payload_length / 4;
77*0c95c1d6STakashi Sakamoto 		__entry->index = s->packet_index;
78*0c95c1d6STakashi Sakamoto 	),
79*0c95c1d6STakashi Sakamoto 	TP_printk(
80*0c95c1d6STakashi Sakamoto 		"%02u %04u %04x %04x %02d %08x %08x %03u %02u",
81*0c95c1d6STakashi Sakamoto 		__entry->second,
82*0c95c1d6STakashi Sakamoto 		__entry->cycle,
83*0c95c1d6STakashi Sakamoto 		__entry->src,
84*0c95c1d6STakashi Sakamoto 		__entry->dest,
85*0c95c1d6STakashi Sakamoto 		__entry->channel,
86*0c95c1d6STakashi Sakamoto 		__entry->cip_header0,
87*0c95c1d6STakashi Sakamoto 		__entry->cip_header1,
88*0c95c1d6STakashi Sakamoto 		__entry->payload_quadlets,
89*0c95c1d6STakashi Sakamoto 		__entry->index)
90*0c95c1d6STakashi Sakamoto );
91*0c95c1d6STakashi Sakamoto 
92*0c95c1d6STakashi Sakamoto #endif
93*0c95c1d6STakashi Sakamoto 
94*0c95c1d6STakashi Sakamoto #undef TRACE_INCLUDE_PATH
95*0c95c1d6STakashi Sakamoto #define TRACE_INCLUDE_PATH	.
96*0c95c1d6STakashi Sakamoto #undef TRACE_INCLUDE_FILE
97*0c95c1d6STakashi Sakamoto #define TRACE_INCLUDE_FILE	amdtp-stream-trace
98*0c95c1d6STakashi Sakamoto #include <trace/define_trace.h>
99