18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * amdtp-motu-trace.h - tracepoint definitions to dump a part of packet data 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright (c) 2017 Takashi Sakamoto 68c2ecf20Sopenharmony_ci */ 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ci#undef TRACE_SYSTEM 98c2ecf20Sopenharmony_ci#define TRACE_SYSTEM snd_firewire_motu 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ci#if !defined(_SND_FIREWIRE_MOTU_TRACE_H) || defined(TRACE_HEADER_MULTI_READ) 128c2ecf20Sopenharmony_ci#define _SND_FIREWIRE_MOTU_TRACE_H 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ci#include <linux/tracepoint.h> 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_cistatic void copy_sph(u32 *frame, __be32 *buffer, unsigned int data_blocks, 178c2ecf20Sopenharmony_ci unsigned int data_block_quadlets); 188c2ecf20Sopenharmony_cistatic void copy_message(u64 *frames, __be32 *buffer, unsigned int data_blocks, 198c2ecf20Sopenharmony_ci unsigned int data_block_quadlets); 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_ciTRACE_EVENT(data_block_sph, 228c2ecf20Sopenharmony_ci TP_PROTO(struct amdtp_stream *s, unsigned int data_blocks, __be32 *buffer), 238c2ecf20Sopenharmony_ci TP_ARGS(s, data_blocks, buffer), 248c2ecf20Sopenharmony_ci TP_STRUCT__entry( 258c2ecf20Sopenharmony_ci __field(int, src) 268c2ecf20Sopenharmony_ci __field(int, dst) 278c2ecf20Sopenharmony_ci __field(unsigned int, data_blocks) 288c2ecf20Sopenharmony_ci __dynamic_array(u32, tstamps, data_blocks) 298c2ecf20Sopenharmony_ci ), 308c2ecf20Sopenharmony_ci TP_fast_assign( 318c2ecf20Sopenharmony_ci if (s->direction == AMDTP_IN_STREAM) { 328c2ecf20Sopenharmony_ci __entry->src = fw_parent_device(s->unit)->node_id; 338c2ecf20Sopenharmony_ci __entry->dst = fw_parent_device(s->unit)->card->node_id; 348c2ecf20Sopenharmony_ci } else { 358c2ecf20Sopenharmony_ci __entry->src = fw_parent_device(s->unit)->card->node_id; 368c2ecf20Sopenharmony_ci __entry->dst = fw_parent_device(s->unit)->node_id; 378c2ecf20Sopenharmony_ci } 388c2ecf20Sopenharmony_ci __entry->data_blocks = data_blocks; 398c2ecf20Sopenharmony_ci copy_sph(__get_dynamic_array(tstamps), buffer, data_blocks, s->data_block_quadlets); 408c2ecf20Sopenharmony_ci ), 418c2ecf20Sopenharmony_ci TP_printk( 428c2ecf20Sopenharmony_ci "%04x %04x %u %s", 438c2ecf20Sopenharmony_ci __entry->src, 448c2ecf20Sopenharmony_ci __entry->dst, 458c2ecf20Sopenharmony_ci __entry->data_blocks, 468c2ecf20Sopenharmony_ci __print_array(__get_dynamic_array(tstamps), __entry->data_blocks, 4) 478c2ecf20Sopenharmony_ci ) 488c2ecf20Sopenharmony_ci); 498c2ecf20Sopenharmony_ci 508c2ecf20Sopenharmony_ciTRACE_EVENT(data_block_message, 518c2ecf20Sopenharmony_ci TP_PROTO(struct amdtp_stream *s, unsigned int data_blocks, __be32 *buffer), 528c2ecf20Sopenharmony_ci TP_ARGS(s, data_blocks, buffer), 538c2ecf20Sopenharmony_ci TP_STRUCT__entry( 548c2ecf20Sopenharmony_ci __field(int, src) 558c2ecf20Sopenharmony_ci __field(int, dst) 568c2ecf20Sopenharmony_ci __field(unsigned int, data_blocks) 578c2ecf20Sopenharmony_ci __dynamic_array(u64, messages, data_blocks) 588c2ecf20Sopenharmony_ci ), 598c2ecf20Sopenharmony_ci TP_fast_assign( 608c2ecf20Sopenharmony_ci if (s->direction == AMDTP_IN_STREAM) { 618c2ecf20Sopenharmony_ci __entry->src = fw_parent_device(s->unit)->node_id; 628c2ecf20Sopenharmony_ci __entry->dst = fw_parent_device(s->unit)->card->node_id; 638c2ecf20Sopenharmony_ci } else { 648c2ecf20Sopenharmony_ci __entry->src = fw_parent_device(s->unit)->card->node_id; 658c2ecf20Sopenharmony_ci __entry->dst = fw_parent_device(s->unit)->node_id; 668c2ecf20Sopenharmony_ci } 678c2ecf20Sopenharmony_ci __entry->data_blocks = data_blocks; 688c2ecf20Sopenharmony_ci copy_message(__get_dynamic_array(messages), buffer, data_blocks, s->data_block_quadlets); 698c2ecf20Sopenharmony_ci ), 708c2ecf20Sopenharmony_ci TP_printk( 718c2ecf20Sopenharmony_ci "%04x %04x %u %s", 728c2ecf20Sopenharmony_ci __entry->src, 738c2ecf20Sopenharmony_ci __entry->dst, 748c2ecf20Sopenharmony_ci __entry->data_blocks, 758c2ecf20Sopenharmony_ci __print_array(__get_dynamic_array(messages), __entry->data_blocks, 8) 768c2ecf20Sopenharmony_ci ) 778c2ecf20Sopenharmony_ci); 788c2ecf20Sopenharmony_ci 798c2ecf20Sopenharmony_ci#endif 808c2ecf20Sopenharmony_ci 818c2ecf20Sopenharmony_ci#undef TRACE_INCLUDE_PATH 828c2ecf20Sopenharmony_ci#define TRACE_INCLUDE_PATH . 838c2ecf20Sopenharmony_ci#undef TRACE_INCLUDE_FILE 848c2ecf20Sopenharmony_ci#define TRACE_INCLUDE_FILE amdtp-motu-trace 858c2ecf20Sopenharmony_ci#include <trace/define_trace.h> 86