diff options
author | Takashi Sakamoto <o-takashi@sakamocchi.jp> | 2021-05-22 04:33:03 +0300 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2021-05-22 09:48:06 +0300 |
commit | 13d11f14ae40ecc9001f9ac6287b4c6db52fe48d (patch) | |
tree | 450a47718ffc93a90c09c9b9e6207114a1018920 | |
parent | c9f3ac2aae9fc0e034722e8153291da3f8a265cb (diff) | |
download | linux-13d11f14ae40ecc9001f9ac6287b4c6db52fe48d.tar.xz |
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 <o-takashi@sakamocchi.jp>
Link: https://lore.kernel.org/r/20210522013303.49596-7-o-takashi@sakamocchi.jp
Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r-- | sound/firewire/amdtp-stream.c | 24 | ||||
-rw-r--r-- | 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 26209513199a..6dceb8cd6e0c 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 fc653fe95405..467d5021624b 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; |