From 13d11f14ae40ecc9001f9ac6287b4c6db52fe48d Mon Sep 17 00:00:00 2001 From: Takashi Sakamoto Date: Sat, 22 May 2021 10:33:03 +0900 Subject: [PATCH] ALSA: firewire-lib: code refactoring for transfer delay In later commit, transfer delay is used in both IR and IT contexts. This commit refactors regardless of transfer delay. Signed-off-by: Takashi Sakamoto Link: https://lore.kernel.org/r/20210522013303.49596-7-o-takashi@sakamocchi.jp Signed-off-by: Takashi Iwai --- sound/firewire/amdtp-stream.c | 24 ++++++++---------------- sound/firewire/amdtp-stream.h | 7 +++---- 2 files changed, 11 insertions(+), 20 deletions(-) diff --git a/sound/firewire/amdtp-stream.c b/sound/firewire/amdtp-stream.c index 2620951..6dceb8c 100644 --- a/sound/firewire/amdtp-stream.c +++ b/sound/firewire/amdtp-stream.c @@ -294,17 +294,11 @@ int amdtp_stream_set_parameters(struct amdtp_stream *s, unsigned int rate, s->syt_interval = amdtp_syt_intervals[sfc]; // default buffering in the device. - if (s->direction == AMDTP_OUT_STREAM) { - s->ctx_data.rx.transfer_delay = - TRANSFER_DELAY_TICKS - TICKS_PER_CYCLE; - - if (s->flags & CIP_BLOCKING) { - // additional buffering needed to adjust for no-data - // packets. - s->ctx_data.rx.transfer_delay += - TICKS_PER_SECOND * s->syt_interval / rate; - } - } + s->transfer_delay = TRANSFER_DELAY_TICKS - TICKS_PER_CYCLE; + + // additional buffering needed to adjust for no-data packets. + if (s->flags & CIP_BLOCKING) + s->transfer_delay += TICKS_PER_SECOND * s->syt_interval / rate; return 0; } @@ -897,12 +891,10 @@ static void generate_pkt_descs(struct amdtp_stream *s, const __be32 *ctx_header, desc->cycle = compute_ohci_it_cycle(*ctx_header, s->queue_size); - if (aware_syt && seq->syt_offset != CIP_SYT_NO_INFO) { - desc->syt = compute_syt(seq->syt_offset, desc->cycle, - s->ctx_data.rx.transfer_delay); - } else { + if (aware_syt && seq->syt_offset != CIP_SYT_NO_INFO) + desc->syt = compute_syt(seq->syt_offset, desc->cycle, s->transfer_delay); + else desc->syt = CIP_SYT_NO_INFO; - } desc->data_blocks = seq->data_blocks; diff --git a/sound/firewire/amdtp-stream.h b/sound/firewire/amdtp-stream.h index fc653fe..467d502 100644 --- a/sound/firewire/amdtp-stream.h +++ b/sound/firewire/amdtp-stream.h @@ -140,15 +140,13 @@ struct amdtp_stream { unsigned int dbc_interval; } tx; struct { - // To calculate CIP data blocks and tstamp. - unsigned int transfer_delay; - // To generate CIP header. unsigned int fdf; // To generate constant hardware IRQ. unsigned int event_count; + // To calculate CIP data blocks and tstamp. struct { struct seq_desc *descs; unsigned int size; @@ -169,7 +167,8 @@ struct amdtp_stream { unsigned int sph; unsigned int fmt; - /* Internal flags. */ + // Internal flags. + unsigned int transfer_delay; enum cip_sfc sfc; unsigned int syt_interval; -- 2.7.4