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, 17a9c4284bSTakashi Sakamoto TP_PROTO(const struct amdtp_stream *s, u32 cycles, u32 cip_header[2], unsigned int payload_quadlets, unsigned int index), 18a9c4284bSTakashi Sakamoto TP_ARGS(s, cycles, cip_header, payload_quadlets, 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) 28a9c4284bSTakashi Sakamoto __field(unsigned int, packet_index) 29*17e1717cSTakashi Sakamoto __field(unsigned int, irq) 300c95c1d6STakashi Sakamoto __field(unsigned int, index) 310c95c1d6STakashi Sakamoto ), 320c95c1d6STakashi Sakamoto TP_fast_assign( 330c95c1d6STakashi Sakamoto __entry->second = cycles / CYCLES_PER_SECOND; 340c95c1d6STakashi Sakamoto __entry->cycle = cycles % CYCLES_PER_SECOND; 350c95c1d6STakashi Sakamoto __entry->channel = s->context->channel; 360c95c1d6STakashi Sakamoto __entry->src = fw_parent_device(s->unit)->node_id; 370c95c1d6STakashi Sakamoto __entry->dest = fw_parent_device(s->unit)->card->node_id; 380c95c1d6STakashi Sakamoto __entry->cip_header0 = cip_header[0]; 390c95c1d6STakashi Sakamoto __entry->cip_header1 = cip_header[1]; 400c95c1d6STakashi Sakamoto __entry->payload_quadlets = payload_quadlets; 41a9c4284bSTakashi Sakamoto __entry->packet_index = s->packet_index; 42*17e1717cSTakashi Sakamoto __entry->irq = !!in_interrupt(); 43a9c4284bSTakashi Sakamoto __entry->index = index; 440c95c1d6STakashi Sakamoto ), 450c95c1d6STakashi Sakamoto TP_printk( 46a9c4284bSTakashi Sakamoto "%02u %04u %04x %04x %02d %08x %08x %03u %02u %01u %02u", 470c95c1d6STakashi Sakamoto __entry->second, 480c95c1d6STakashi Sakamoto __entry->cycle, 490c95c1d6STakashi Sakamoto __entry->src, 500c95c1d6STakashi Sakamoto __entry->dest, 510c95c1d6STakashi Sakamoto __entry->channel, 520c95c1d6STakashi Sakamoto __entry->cip_header0, 530c95c1d6STakashi Sakamoto __entry->cip_header1, 540c95c1d6STakashi Sakamoto __entry->payload_quadlets, 55a9c4284bSTakashi Sakamoto __entry->packet_index, 56a9c4284bSTakashi Sakamoto __entry->irq, 570c95c1d6STakashi Sakamoto __entry->index) 580c95c1d6STakashi Sakamoto ); 590c95c1d6STakashi Sakamoto 600c95c1d6STakashi Sakamoto TRACE_EVENT(out_packet, 61a9c4284bSTakashi Sakamoto TP_PROTO(const struct amdtp_stream *s, u32 cycles, __be32 *cip_header, unsigned int payload_length, unsigned int index), 62a9c4284bSTakashi Sakamoto TP_ARGS(s, cycles, cip_header, payload_length, index), 630c95c1d6STakashi Sakamoto TP_STRUCT__entry( 640c95c1d6STakashi Sakamoto __field(unsigned int, second) 650c95c1d6STakashi Sakamoto __field(unsigned int, cycle) 660c95c1d6STakashi Sakamoto __field(int, channel) 670c95c1d6STakashi Sakamoto __field(int, src) 680c95c1d6STakashi Sakamoto __field(int, dest) 690c95c1d6STakashi Sakamoto __field(u32, cip_header0) 700c95c1d6STakashi Sakamoto __field(u32, cip_header1) 710c95c1d6STakashi Sakamoto __field(unsigned int, payload_quadlets) 72a9c4284bSTakashi Sakamoto __field(unsigned int, packet_index) 73*17e1717cSTakashi Sakamoto __field(unsigned int, irq) 740c95c1d6STakashi Sakamoto __field(unsigned int, index) 750c95c1d6STakashi Sakamoto ), 760c95c1d6STakashi Sakamoto TP_fast_assign( 770c95c1d6STakashi Sakamoto __entry->second = cycles / CYCLES_PER_SECOND; 780c95c1d6STakashi Sakamoto __entry->cycle = cycles % CYCLES_PER_SECOND; 790c95c1d6STakashi Sakamoto __entry->channel = s->context->channel; 800c95c1d6STakashi Sakamoto __entry->src = fw_parent_device(s->unit)->card->node_id; 810c95c1d6STakashi Sakamoto __entry->dest = fw_parent_device(s->unit)->node_id; 820c95c1d6STakashi Sakamoto __entry->cip_header0 = be32_to_cpu(cip_header[0]); 830c95c1d6STakashi Sakamoto __entry->cip_header1 = be32_to_cpu(cip_header[1]); 840c95c1d6STakashi Sakamoto __entry->payload_quadlets = payload_length / 4; 85a9c4284bSTakashi Sakamoto __entry->packet_index = s->packet_index; 86*17e1717cSTakashi Sakamoto __entry->irq = !!in_interrupt(); 87a9c4284bSTakashi Sakamoto __entry->index = index; 880c95c1d6STakashi Sakamoto ), 890c95c1d6STakashi Sakamoto TP_printk( 90a9c4284bSTakashi Sakamoto "%02u %04u %04x %04x %02d %08x %08x %03u %02u %01u %02u", 910c95c1d6STakashi Sakamoto __entry->second, 920c95c1d6STakashi Sakamoto __entry->cycle, 930c95c1d6STakashi Sakamoto __entry->src, 940c95c1d6STakashi Sakamoto __entry->dest, 950c95c1d6STakashi Sakamoto __entry->channel, 960c95c1d6STakashi Sakamoto __entry->cip_header0, 970c95c1d6STakashi Sakamoto __entry->cip_header1, 980c95c1d6STakashi Sakamoto __entry->payload_quadlets, 99a9c4284bSTakashi Sakamoto __entry->packet_index, 100a9c4284bSTakashi Sakamoto __entry->irq, 1010c95c1d6STakashi Sakamoto __entry->index) 1020c95c1d6STakashi Sakamoto ); 1030c95c1d6STakashi Sakamoto 1040c95c1d6STakashi Sakamoto #endif 1050c95c1d6STakashi Sakamoto 1060c95c1d6STakashi Sakamoto #undef TRACE_INCLUDE_PATH 1070c95c1d6STakashi Sakamoto #define TRACE_INCLUDE_PATH . 1080c95c1d6STakashi Sakamoto #undef TRACE_INCLUDE_FILE 1090c95c1d6STakashi Sakamoto #define TRACE_INCLUDE_FILE amdtp-stream-trace 1100c95c1d6STakashi Sakamoto #include <trace/define_trace.h> 111