From 7fbf909668d69d7ab4428f6f55cb53fe4451b9b1 Mon Sep 17 00:00:00 2001 From: Takashi Sakamoto Date: Sun, 7 Jul 2019 21:07:54 +0900 Subject: ALSA: firewire-lib/fireface: fix initial value of data block counter for IR context with CIP_NO_HEADER For IR context, ALSA IEC 61883-1/6 engine uses initial value of data block counter as UINT_MAX, to detect first isochronous packet in the middle of packet streaming. At present, when CIP_NO_HEADER is used (i.e. for ALSA fireface driver), the initial value is used for tracepoints event. 0x00 should be for the event when the initial value is UINT_MAX because isochronous packets with CIP_NO_HEADER option has no field for data block count. This commit fixes the bug. Fixes: 76864868dbab ("ALSA: firewire-lib: cache next data_block_counter after probing tracepoints event for IR context") Signed-off-by: Takashi Sakamoto Signed-off-by: Takashi Iwai --- sound/firewire/amdtp-stream.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'sound/firewire/amdtp-stream.c') diff --git a/sound/firewire/amdtp-stream.c b/sound/firewire/amdtp-stream.c index 427624009de9..b60cf25ee5a8 100644 --- a/sound/firewire/amdtp-stream.c +++ b/sound/firewire/amdtp-stream.c @@ -646,8 +646,12 @@ static int parse_ir_ctx_header(struct amdtp_stream *s, unsigned int cycle, err = 0; *data_blocks = *payload_length / sizeof(__be32) / s->data_block_quadlets; - *dbc = s->data_block_counter; *syt = 0; + + if (s->data_block_counter != UINT_MAX) + *dbc = s->data_block_counter; + else + *dbc = 0; } if (err >= 0 && s->flags & CIP_DBC_IS_END_EVENT) -- cgit v1.2.3-59-g8ed1b