10c95c1d6STakashi Sakamoto /* 20c95c1d6STakashi Sakamoto * amdtp-stream-trace.h - tracepoint definitions to dump a part of packet data 30c95c1d6STakashi Sakamoto * 40c95c1d6STakashi Sakamoto * Copyright (c) 2016 Takashi Sakamoto 50c95c1d6STakashi Sakamoto * Licensed under the terms of the GNU General Public License, version 2. 60c95c1d6STakashi Sakamoto */ 70c95c1d6STakashi Sakamoto 80c95c1d6STakashi Sakamoto #undef TRACE_SYSTEM 90c95c1d6STakashi Sakamoto #define TRACE_SYSTEM snd_firewire_lib 100c95c1d6STakashi Sakamoto 110c95c1d6STakashi Sakamoto #if !defined(_AMDTP_STREAM_TRACE_H) || defined(TRACE_HEADER_MULTI_READ) 120c95c1d6STakashi Sakamoto #define _AMDTP_STREAM_TRACE_H 130c95c1d6STakashi Sakamoto 140c95c1d6STakashi Sakamoto #include <linux/tracepoint.h> 150c95c1d6STakashi Sakamoto 160c95c1d6STakashi Sakamoto TRACE_EVENT(in_packet, 1764d0bf4dSTakashi Sakamoto TP_PROTO(const struct amdtp_stream *s, u32 cycles, const __be32 *cip_header, unsigned int payload_length, unsigned int data_blocks, unsigned int index), 1864d0bf4dSTakashi Sakamoto TP_ARGS(s, cycles, cip_header, payload_length, data_blocks, index), 190c95c1d6STakashi Sakamoto TP_STRUCT__entry( 200c95c1d6STakashi Sakamoto __field(unsigned int, second) 210c95c1d6STakashi Sakamoto __field(unsigned int, cycle) 220c95c1d6STakashi Sakamoto __field(int, channel) 230c95c1d6STakashi Sakamoto __field(int, src) 240c95c1d6STakashi Sakamoto __field(int, dest) 250c95c1d6STakashi Sakamoto __field(u32, cip_header0) 260c95c1d6STakashi Sakamoto __field(u32, cip_header1) 270c95c1d6STakashi Sakamoto __field(unsigned int, payload_quadlets) 2864d0bf4dSTakashi Sakamoto __field(unsigned int, data_blocks) 2964d0bf4dSTakashi Sakamoto __field(unsigned int, data_block_counter) 30a9c4284bSTakashi Sakamoto __field(unsigned int, packet_index) 3117e1717cSTakashi Sakamoto __field(unsigned int, irq) 320c95c1d6STakashi Sakamoto __field(unsigned int, index) 330c95c1d6STakashi Sakamoto ), 340c95c1d6STakashi Sakamoto TP_fast_assign( 350c95c1d6STakashi Sakamoto __entry->second = cycles / CYCLES_PER_SECOND; 360c95c1d6STakashi Sakamoto __entry->cycle = cycles % CYCLES_PER_SECOND; 370c95c1d6STakashi Sakamoto __entry->channel = s->context->channel; 380c95c1d6STakashi Sakamoto __entry->src = fw_parent_device(s->unit)->node_id; 390c95c1d6STakashi Sakamoto __entry->dest = fw_parent_device(s->unit)->card->node_id; 404a10ceccSTakashi Sakamoto __entry->cip_header0 = be32_to_cpu(cip_header[0]); 414a10ceccSTakashi Sakamoto __entry->cip_header1 = be32_to_cpu(cip_header[1]); 42*a8520f3eSTakashi Sakamoto __entry->payload_quadlets = payload_length / sizeof(__be32); 4364d0bf4dSTakashi Sakamoto __entry->data_blocks = data_blocks; 4464d0bf4dSTakashi Sakamoto __entry->data_block_counter = s->data_block_counter, 45a9c4284bSTakashi Sakamoto __entry->packet_index = s->packet_index; 4617e1717cSTakashi Sakamoto __entry->irq = !!in_interrupt(); 47a9c4284bSTakashi Sakamoto __entry->index = index; 480c95c1d6STakashi Sakamoto ), 490c95c1d6STakashi Sakamoto TP_printk( 5064d0bf4dSTakashi Sakamoto "%02u %04u %04x %04x %02d %08x %08x %03u %02u %03u %02u %01u %02u", 510c95c1d6STakashi Sakamoto __entry->second, 520c95c1d6STakashi Sakamoto __entry->cycle, 530c95c1d6STakashi Sakamoto __entry->src, 540c95c1d6STakashi Sakamoto __entry->dest, 550c95c1d6STakashi Sakamoto __entry->channel, 560c95c1d6STakashi Sakamoto __entry->cip_header0, 570c95c1d6STakashi Sakamoto __entry->cip_header1, 580c95c1d6STakashi Sakamoto __entry->payload_quadlets, 5964d0bf4dSTakashi Sakamoto __entry->data_blocks, 6064d0bf4dSTakashi Sakamoto __entry->data_block_counter, 61a9c4284bSTakashi Sakamoto __entry->packet_index, 62a9c4284bSTakashi Sakamoto __entry->irq, 630c95c1d6STakashi Sakamoto __entry->index) 640c95c1d6STakashi Sakamoto ); 650c95c1d6STakashi Sakamoto 660c95c1d6STakashi Sakamoto TRACE_EVENT(out_packet, 6764d0bf4dSTakashi Sakamoto TP_PROTO(const struct amdtp_stream *s, u32 cycles, const __be32 *cip_header, unsigned int payload_length, unsigned int data_blocks, unsigned int index), 6864d0bf4dSTakashi Sakamoto TP_ARGS(s, cycles, cip_header, payload_length, data_blocks, index), 690c95c1d6STakashi Sakamoto TP_STRUCT__entry( 700c95c1d6STakashi Sakamoto __field(unsigned int, second) 710c95c1d6STakashi Sakamoto __field(unsigned int, cycle) 720c95c1d6STakashi Sakamoto __field(int, channel) 730c95c1d6STakashi Sakamoto __field(int, src) 740c95c1d6STakashi Sakamoto __field(int, dest) 750c95c1d6STakashi Sakamoto __field(u32, cip_header0) 760c95c1d6STakashi Sakamoto __field(u32, cip_header1) 770c95c1d6STakashi Sakamoto __field(unsigned int, payload_quadlets) 7864d0bf4dSTakashi Sakamoto __field(unsigned int, data_blocks) 7964d0bf4dSTakashi Sakamoto __field(unsigned int, data_block_counter) 80a9c4284bSTakashi Sakamoto __field(unsigned int, packet_index) 8117e1717cSTakashi Sakamoto __field(unsigned int, irq) 820c95c1d6STakashi Sakamoto __field(unsigned int, index) 830c95c1d6STakashi Sakamoto ), 840c95c1d6STakashi Sakamoto TP_fast_assign( 850c95c1d6STakashi Sakamoto __entry->second = cycles / CYCLES_PER_SECOND; 860c95c1d6STakashi Sakamoto __entry->cycle = cycles % CYCLES_PER_SECOND; 870c95c1d6STakashi Sakamoto __entry->channel = s->context->channel; 880c95c1d6STakashi Sakamoto __entry->src = fw_parent_device(s->unit)->card->node_id; 890c95c1d6STakashi Sakamoto __entry->dest = fw_parent_device(s->unit)->node_id; 900c95c1d6STakashi Sakamoto __entry->cip_header0 = be32_to_cpu(cip_header[0]); 910c95c1d6STakashi Sakamoto __entry->cip_header1 = be32_to_cpu(cip_header[1]); 92*a8520f3eSTakashi Sakamoto __entry->payload_quadlets = payload_length / sizeof(__be32); 9364d0bf4dSTakashi Sakamoto __entry->data_blocks = data_blocks; 9464d0bf4dSTakashi Sakamoto __entry->data_block_counter = s->data_block_counter, 95a9c4284bSTakashi Sakamoto __entry->packet_index = s->packet_index; 9617e1717cSTakashi Sakamoto __entry->irq = !!in_interrupt(); 97a9c4284bSTakashi Sakamoto __entry->index = index; 980c95c1d6STakashi Sakamoto ), 990c95c1d6STakashi Sakamoto TP_printk( 10064d0bf4dSTakashi Sakamoto "%02u %04u %04x %04x %02d %08x %08x %03u %02u %03u %02u %01u %02u", 1010c95c1d6STakashi Sakamoto __entry->second, 1020c95c1d6STakashi Sakamoto __entry->cycle, 1030c95c1d6STakashi Sakamoto __entry->src, 1040c95c1d6STakashi Sakamoto __entry->dest, 1050c95c1d6STakashi Sakamoto __entry->channel, 1060c95c1d6STakashi Sakamoto __entry->cip_header0, 1070c95c1d6STakashi Sakamoto __entry->cip_header1, 1080c95c1d6STakashi Sakamoto __entry->payload_quadlets, 10964d0bf4dSTakashi Sakamoto __entry->data_blocks, 11064d0bf4dSTakashi Sakamoto __entry->data_block_counter, 111a9c4284bSTakashi Sakamoto __entry->packet_index, 112a9c4284bSTakashi Sakamoto __entry->irq, 1130c95c1d6STakashi Sakamoto __entry->index) 1140c95c1d6STakashi Sakamoto ); 1150c95c1d6STakashi Sakamoto 116b164d2fdSTakashi Sakamoto TRACE_EVENT(in_packet_without_header, 117*a8520f3eSTakashi Sakamoto TP_PROTO(const struct amdtp_stream *s, u32 cycles, unsigned int payload_length, unsigned int data_blocks, unsigned int index), 118*a8520f3eSTakashi Sakamoto TP_ARGS(s, cycles, payload_length, data_blocks, index), 119b164d2fdSTakashi Sakamoto TP_STRUCT__entry( 120b164d2fdSTakashi Sakamoto __field(unsigned int, second) 121b164d2fdSTakashi Sakamoto __field(unsigned int, cycle) 122b164d2fdSTakashi Sakamoto __field(int, channel) 123b164d2fdSTakashi Sakamoto __field(int, src) 124b164d2fdSTakashi Sakamoto __field(int, dest) 125b164d2fdSTakashi Sakamoto __field(unsigned int, payload_quadlets) 126b164d2fdSTakashi Sakamoto __field(unsigned int, data_blocks) 127b164d2fdSTakashi Sakamoto __field(unsigned int, data_block_counter) 128b164d2fdSTakashi Sakamoto __field(unsigned int, packet_index) 129b164d2fdSTakashi Sakamoto __field(unsigned int, irq) 130b164d2fdSTakashi Sakamoto __field(unsigned int, index) 131b164d2fdSTakashi Sakamoto ), 132b164d2fdSTakashi Sakamoto TP_fast_assign( 133b164d2fdSTakashi Sakamoto __entry->second = cycles / CYCLES_PER_SECOND; 134b164d2fdSTakashi Sakamoto __entry->cycle = cycles % CYCLES_PER_SECOND; 135b164d2fdSTakashi Sakamoto __entry->channel = s->context->channel; 136b164d2fdSTakashi Sakamoto __entry->src = fw_parent_device(s->unit)->node_id; 137b164d2fdSTakashi Sakamoto __entry->dest = fw_parent_device(s->unit)->card->node_id; 138*a8520f3eSTakashi Sakamoto __entry->payload_quadlets = payload_length / sizeof(__be32); 139b164d2fdSTakashi Sakamoto __entry->data_blocks = data_blocks, 140b164d2fdSTakashi Sakamoto __entry->data_block_counter = s->data_block_counter, 141b164d2fdSTakashi Sakamoto __entry->packet_index = s->packet_index; 142b164d2fdSTakashi Sakamoto __entry->irq = !!in_interrupt(); 143b164d2fdSTakashi Sakamoto __entry->index = index; 144b164d2fdSTakashi Sakamoto ), 145b164d2fdSTakashi Sakamoto TP_printk( 1465ef108c5STakashi Sakamoto "%02u %04u %04x %04x %02d %03u %02u %03u %02u %01u %02u", 147b164d2fdSTakashi Sakamoto __entry->second, 148b164d2fdSTakashi Sakamoto __entry->cycle, 149b164d2fdSTakashi Sakamoto __entry->src, 150b164d2fdSTakashi Sakamoto __entry->dest, 151b164d2fdSTakashi Sakamoto __entry->channel, 152b164d2fdSTakashi Sakamoto __entry->payload_quadlets, 153b164d2fdSTakashi Sakamoto __entry->data_blocks, 154b164d2fdSTakashi Sakamoto __entry->data_block_counter, 155b164d2fdSTakashi Sakamoto __entry->packet_index, 156b164d2fdSTakashi Sakamoto __entry->irq, 157b164d2fdSTakashi Sakamoto __entry->index) 158b164d2fdSTakashi Sakamoto ); 159b164d2fdSTakashi Sakamoto 160b164d2fdSTakashi Sakamoto TRACE_EVENT(out_packet_without_header, 161b164d2fdSTakashi Sakamoto TP_PROTO(const struct amdtp_stream *s, u32 cycles, unsigned int payload_length, unsigned int data_blocks, unsigned int index), 162b164d2fdSTakashi Sakamoto TP_ARGS(s, cycles, payload_length, data_blocks, index), 163b164d2fdSTakashi Sakamoto TP_STRUCT__entry( 164b164d2fdSTakashi Sakamoto __field(unsigned int, second) 165b164d2fdSTakashi Sakamoto __field(unsigned int, cycle) 166b164d2fdSTakashi Sakamoto __field(int, channel) 167b164d2fdSTakashi Sakamoto __field(int, src) 168b164d2fdSTakashi Sakamoto __field(int, dest) 169b164d2fdSTakashi Sakamoto __field(unsigned int, payload_quadlets) 170b164d2fdSTakashi Sakamoto __field(unsigned int, data_blocks) 171b164d2fdSTakashi Sakamoto __field(unsigned int, data_block_counter) 172b164d2fdSTakashi Sakamoto __field(unsigned int, packet_index) 173b164d2fdSTakashi Sakamoto __field(unsigned int, irq) 174b164d2fdSTakashi Sakamoto __field(unsigned int, index) 175b164d2fdSTakashi Sakamoto ), 176b164d2fdSTakashi Sakamoto TP_fast_assign( 177b164d2fdSTakashi Sakamoto __entry->second = cycles / CYCLES_PER_SECOND; 178b164d2fdSTakashi Sakamoto __entry->cycle = cycles % CYCLES_PER_SECOND; 179b164d2fdSTakashi Sakamoto __entry->channel = s->context->channel; 180b164d2fdSTakashi Sakamoto __entry->src = fw_parent_device(s->unit)->card->node_id; 181b164d2fdSTakashi Sakamoto __entry->dest = fw_parent_device(s->unit)->node_id; 182*a8520f3eSTakashi Sakamoto __entry->payload_quadlets = payload_length / sizeof(__be32); 183b164d2fdSTakashi Sakamoto __entry->data_blocks = data_blocks, 184aa9a9e39STakashi Sakamoto __entry->data_block_counter = s->data_block_counter, 185b164d2fdSTakashi Sakamoto __entry->packet_index = s->packet_index; 186b164d2fdSTakashi Sakamoto __entry->irq = !!in_interrupt(); 187b164d2fdSTakashi Sakamoto __entry->index = index; 188b164d2fdSTakashi Sakamoto ), 189b164d2fdSTakashi Sakamoto TP_printk( 190b164d2fdSTakashi Sakamoto "%02u %04u %04x %04x %02d %03u %02u %03u %02u %01u %02u", 191b164d2fdSTakashi Sakamoto __entry->second, 192b164d2fdSTakashi Sakamoto __entry->cycle, 193b164d2fdSTakashi Sakamoto __entry->src, 194b164d2fdSTakashi Sakamoto __entry->dest, 195b164d2fdSTakashi Sakamoto __entry->channel, 196b164d2fdSTakashi Sakamoto __entry->payload_quadlets, 197b164d2fdSTakashi Sakamoto __entry->data_blocks, 198b164d2fdSTakashi Sakamoto __entry->data_block_counter, 199b164d2fdSTakashi Sakamoto __entry->packet_index, 200b164d2fdSTakashi Sakamoto __entry->irq, 201b164d2fdSTakashi Sakamoto __entry->index) 202b164d2fdSTakashi Sakamoto ); 203b164d2fdSTakashi Sakamoto 2040c95c1d6STakashi Sakamoto #endif 2050c95c1d6STakashi Sakamoto 2060c95c1d6STakashi Sakamoto #undef TRACE_INCLUDE_PATH 2070c95c1d6STakashi Sakamoto #define TRACE_INCLUDE_PATH . 2080c95c1d6STakashi Sakamoto #undef TRACE_INCLUDE_FILE 2090c95c1d6STakashi Sakamoto #define TRACE_INCLUDE_FILE amdtp-stream-trace 2100c95c1d6STakashi Sakamoto #include <trace/define_trace.h> 211