mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-30 07:34:12 +08:00
ALSA: firewire-motu: unify common tracepoints for both direction
In ALSA firewire-motu driver, some tracepoints are supported to probe vendor-specific data fields for SPH and status/control messages in payload of isochronous packet. At present, the events of tracepoints are unique each of direction, however the pair of events has the same structure and print format. It's possible to unify the pair. This commit unifies the pair. From userspace, direction is specified by filtering for src/dst fields in the structure. Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
eee22af1ed
commit
c5dfd4b885
@ -18,7 +18,7 @@ static void copy_sph(u32 *frame, __be32 *buffer, unsigned int data_blocks,
|
||||
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(
|
||||
@ -28,8 +28,13 @@ TRACE_EVENT(in_data_block_sph,
|
||||
__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);
|
||||
),
|
||||
@ -42,31 +47,7 @@ TRACE_EVENT(in_data_block_sph,
|
||||
)
|
||||
);
|
||||
|
||||
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,
|
||||
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(
|
||||
@ -76,32 +57,13 @@ TRACE_EVENT(in_data_block_message,
|
||||
__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,
|
||||
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)->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);
|
||||
),
|
||||
|
@ -306,8 +306,8 @@ static unsigned int process_tx_data_blocks(struct amdtp_stream *s,
|
||||
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);
|
||||
@ -384,8 +384,8 @@ static unsigned int process_rx_data_blocks(struct amdtp_stream *s,
|
||||
|
||||
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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user