Skip to content

Commit

Permalink
ALSA: firewire-motu: more code refactoring for MOTU data block proces…
Browse files Browse the repository at this point in the history
…sing layer

MOTU data block processing layer has some tracepoints events. This
commit is code refactoring to split probing the events from processing
data blocks.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
  • Loading branch information
takaswie authored and tiwai committed Jul 22, 2019
1 parent 9a738ad commit d2d5a6b
Showing 1 changed file with 36 additions and 14 deletions.
50 changes: 36 additions & 14 deletions sound/firewire/motu/amdtp-motu.c
Original file line number Diff line number Diff line change
Expand Up @@ -310,6 +310,22 @@ static void __maybe_unused copy_message(u64 *frames, __be32 *buffer,
}
}

static void probe_tracepoints_events(struct amdtp_stream *s,
const struct pkt_desc *descs,
unsigned int packets)
{
int i;

for (i = 0; i < packets; ++i) {
const struct pkt_desc *desc = descs + i;
__be32 *buf = desc->ctx_payload;
unsigned int data_blocks = desc->data_blocks;

trace_data_block_sph(s, data_blocks, buf);
trace_data_block_message(s, data_blocks, buf);
}
}

static unsigned int process_ir_ctx_payloads(struct amdtp_stream *s,
const struct pkt_desc *descs,
unsigned int packets,
Expand All @@ -319,23 +335,26 @@ static unsigned int process_ir_ctx_payloads(struct amdtp_stream *s,
unsigned int pcm_frames = 0;
int i;

// For data block processing.
for (i = 0; i < packets; ++i) {
const struct pkt_desc *desc = descs + i;
__be32 *buf = desc->ctx_payload;
unsigned int data_blocks = desc->data_blocks;

trace_data_block_sph(s, data_blocks, buf);
trace_data_block_message(s, data_blocks, buf);

if (p->midi_ports)
read_midi_messages(s, buf, data_blocks);

if (pcm) {
read_pcm_s32(s, pcm, buf, data_blocks, pcm_frames);
pcm_frames += data_blocks;
}

if (p->midi_ports)
read_midi_messages(s, buf, data_blocks);
}

// For tracepoints.
if (trace_data_block_sph_enabled() ||
trace_data_block_message_enabled())
probe_tracepoints_events(s, descs, packets);

return pcm_frames;
}

Expand Down Expand Up @@ -390,29 +409,32 @@ static unsigned int process_it_ctx_payloads(struct amdtp_stream *s,
unsigned int pcm_frames = 0;
int i;

// For data block processing.
for (i = 0; i < packets; ++i) {
const struct pkt_desc *desc = descs + i;
__be32 *buf = desc->ctx_payload;
unsigned int data_blocks = desc->data_blocks;

// TODO: how to interact control messages between userspace?

if (p->midi_ports)
write_midi_messages(s, buf, data_blocks);

if (pcm) {
write_pcm_s32(s, pcm, buf, data_blocks, pcm_frames);
pcm_frames += data_blocks;
} else {
write_pcm_silence(s, buf, data_blocks);
}

write_sph(s, buf, data_blocks);
if (p->midi_ports)
write_midi_messages(s, buf, data_blocks);

trace_data_block_sph(s, data_blocks, buf);
trace_data_block_message(s, data_blocks, buf);
// TODO: how to interact control messages between userspace?

write_sph(s, buf, data_blocks);
}

// For tracepoints.
if (trace_data_block_sph_enabled() ||
trace_data_block_message_enabled())
probe_tracepoints_events(s, descs, packets);

return pcm_frames;
}

Expand Down

0 comments on commit d2d5a6b

Please sign in to comment.