static void copy_message(u64 *frames, __be32 *buffer, unsigned int data_blocks,
                         unsigned int data_block_quadlets);
 
-TRACE_EVENT(in_data_block_sph,
+TRACE_EVENT(data_block_sph,
        TP_PROTO(struct amdtp_stream *s, unsigned int data_blocks, __be32 *buffer),
        TP_ARGS(s, data_blocks, buffer),
        TP_STRUCT__entry(
                __dynamic_array(u32, tstamps, data_blocks)
        ),
        TP_fast_assign(
-               __entry->src = fw_parent_device(s->unit)->node_id;
-               __entry->dst = fw_parent_device(s->unit)->card->node_id;
+               if (s->direction == AMDTP_IN_STREAM) {
+                       __entry->src = fw_parent_device(s->unit)->node_id;
+                       __entry->dst = fw_parent_device(s->unit)->card->node_id;
+               } else {
+                       __entry->src = fw_parent_device(s->unit)->card->node_id;
+                       __entry->dst = fw_parent_device(s->unit)->node_id;
+               }
                __entry->data_blocks = data_blocks;
                copy_sph(__get_dynamic_array(tstamps), buffer, data_blocks, s->data_block_quadlets);
        ),
        )
 );
 
-TRACE_EVENT(out_data_block_sph,
-       TP_PROTO(struct amdtp_stream *s, unsigned int data_blocks, __be32 *buffer),
-       TP_ARGS(s, data_blocks, buffer),
-       TP_STRUCT__entry(
-               __field(int, src)
-               __field(int, dst)
-               __field(unsigned int, data_blocks)
-               __dynamic_array(u32, tstamps, data_blocks)
-       ),
-       TP_fast_assign(
-               __entry->src = fw_parent_device(s->unit)->card->node_id;
-               __entry->dst = fw_parent_device(s->unit)->node_id;
-               __entry->data_blocks = data_blocks;
-               copy_sph(__get_dynamic_array(tstamps), buffer, data_blocks, s->data_block_quadlets);
-       ),
-       TP_printk(
-               "%04x %04x %u %s",
-               __entry->src,
-               __entry->dst,
-               __entry->data_blocks,
-               __print_array(__get_dynamic_array(tstamps), __entry->data_blocks, 4)
-       )
-);
-
-TRACE_EVENT(in_data_block_message,
-       TP_PROTO(struct amdtp_stream *s, unsigned int data_blocks, __be32 *buffer),
-       TP_ARGS(s, data_blocks, buffer),
-       TP_STRUCT__entry(
-               __field(int, src)
-               __field(int, dst)
-               __field(unsigned int, data_blocks)
-               __dynamic_array(u64, messages, data_blocks)
-       ),
-       TP_fast_assign(
-               __entry->src = fw_parent_device(s->unit)->node_id;
-               __entry->dst = fw_parent_device(s->unit)->card->node_id;
-               __entry->data_blocks = data_blocks;
-               copy_message(__get_dynamic_array(messages), buffer, data_blocks, s->data_block_quadlets);
-       ),
-       TP_printk(
-               "%04x %04x %u %s",
-               __entry->src,
-               __entry->dst,
-               __entry->data_blocks,
-               __print_array(__get_dynamic_array(messages), __entry->data_blocks, 8)
-       )
-);
-
-TRACE_EVENT(out_data_block_message,
+TRACE_EVENT(data_block_message,
        TP_PROTO(struct amdtp_stream *s, unsigned int data_blocks, __be32 *buffer),
        TP_ARGS(s, data_blocks, buffer),
        TP_STRUCT__entry(
                __dynamic_array(u64, messages, data_blocks)
        ),
        TP_fast_assign(
-               __entry->src = fw_parent_device(s->unit)->card->node_id;
-               __entry->dst = fw_parent_device(s->unit)->node_id;
+               if (s->direction == AMDTP_IN_STREAM) {
+                       __entry->src = fw_parent_device(s->unit)->node_id;
+                       __entry->dst = fw_parent_device(s->unit)->card->node_id;
+               } else {
+                       __entry->src = fw_parent_device(s->unit)->card->node_id;
+                       __entry->dst = fw_parent_device(s->unit)->node_id;
+               }
                __entry->data_blocks = data_blocks;
                copy_message(__get_dynamic_array(messages), buffer, data_blocks, s->data_block_quadlets);
        ),
 
        struct amdtp_motu *p = s->protocol;
        struct snd_pcm_substream *pcm;
 
-       trace_in_data_block_sph(s, data_blocks, buffer);
-       trace_in_data_block_message(s, data_blocks, buffer);
+       trace_data_block_sph(s, data_blocks, buffer);
+       trace_data_block_message(s, data_blocks, buffer);
 
        if (p->midi_ports)
                read_midi_messages(s, buffer, data_blocks);
 
        write_sph(s, buffer, data_blocks);
 
-       trace_out_data_block_sph(s, data_blocks, buffer);
-       trace_out_data_block_message(s, data_blocks, buffer);
+       trace_data_block_sph(s, data_blocks, buffer);
+       trace_data_block_message(s, data_blocks, buffer);
 
        return data_blocks;
 }