Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * amdtp-motu-trace.h - tracepoint definitions to dump a part of packet data
0004  *
0005  * Copyright (c) 2017 Takashi Sakamoto
0006  */
0007 
0008 #undef TRACE_SYSTEM
0009 #define TRACE_SYSTEM        snd_firewire_motu
0010 
0011 #if !defined(_SND_FIREWIRE_MOTU_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
0012 #define _SND_FIREWIRE_MOTU_TRACE_H
0013 
0014 #include <linux/tracepoint.h>
0015 
0016 static void copy_sph(u32 *frame, __be32 *buffer, unsigned int data_blocks,
0017              unsigned int data_block_quadlets);
0018 static void copy_message(u64 *frames, __be32 *buffer, unsigned int data_blocks,
0019              unsigned int data_block_quadlets);
0020 
0021 TRACE_EVENT(data_block_sph,
0022     TP_PROTO(struct amdtp_stream *s, unsigned int data_blocks, __be32 *buffer),
0023     TP_ARGS(s, data_blocks, buffer),
0024     TP_STRUCT__entry(
0025         __field(int, src)
0026         __field(int, dst)
0027         __field(unsigned int, data_blocks)
0028         __dynamic_array(u32, tstamps, data_blocks)
0029     ),
0030     TP_fast_assign(
0031         if (s->direction == AMDTP_IN_STREAM) {
0032             __entry->src = fw_parent_device(s->unit)->node_id;
0033             __entry->dst = fw_parent_device(s->unit)->card->node_id;
0034         } else {
0035             __entry->src = fw_parent_device(s->unit)->card->node_id;
0036             __entry->dst = fw_parent_device(s->unit)->node_id;
0037         }
0038         __entry->data_blocks = data_blocks;
0039         copy_sph(__get_dynamic_array(tstamps), buffer, data_blocks, s->data_block_quadlets);
0040     ),
0041     TP_printk(
0042         "%04x %04x %u %s",
0043         __entry->src,
0044         __entry->dst,
0045         __entry->data_blocks,
0046         __print_array(__get_dynamic_array(tstamps), __entry->data_blocks, 4)
0047     )
0048 );
0049 
0050 TRACE_EVENT(data_block_message,
0051     TP_PROTO(struct amdtp_stream *s, unsigned int data_blocks, __be32 *buffer),
0052     TP_ARGS(s, data_blocks, buffer),
0053     TP_STRUCT__entry(
0054         __field(int, src)
0055         __field(int, dst)
0056         __field(unsigned int, data_blocks)
0057         __dynamic_array(u64, messages, data_blocks)
0058     ),
0059     TP_fast_assign(
0060         if (s->direction == AMDTP_IN_STREAM) {
0061             __entry->src = fw_parent_device(s->unit)->node_id;
0062             __entry->dst = fw_parent_device(s->unit)->card->node_id;
0063         } else {
0064             __entry->src = fw_parent_device(s->unit)->card->node_id;
0065             __entry->dst = fw_parent_device(s->unit)->node_id;
0066         }
0067         __entry->data_blocks = data_blocks;
0068         copy_message(__get_dynamic_array(messages), buffer, data_blocks, s->data_block_quadlets);
0069     ),
0070     TP_printk(
0071         "%04x %04x %u %s",
0072         __entry->src,
0073         __entry->dst,
0074         __entry->data_blocks,
0075         __print_array(__get_dynamic_array(messages), __entry->data_blocks, 8)
0076     )
0077 );
0078 
0079 #endif
0080 
0081 #undef TRACE_INCLUDE_PATH
0082 #define TRACE_INCLUDE_PATH  .
0083 #undef TRACE_INCLUDE_FILE
0084 #define TRACE_INCLUDE_FILE  amdtp-motu-trace
0085 #include <trace/define_trace.h>