summaryrefslogtreecommitdiffstats
path: root/sound/firewire/bebob/bebob_stream.c
diff options
context:
space:
mode:
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>2021-05-24 05:13:46 +0200
committerTakashi Iwai <tiwai@suse.de>2021-05-25 08:54:38 +0200
commit5ec85c198eff077e99bc5ff615eb9618004962e2 (patch)
tree322ab5f142548fb154554042816f0677536cc5aa /sound/firewire/bebob/bebob_stream.c
parentALSA: bebob: cancel switching connection order (diff)
downloadlinux-5ec85c198eff077e99bc5ff615eb9618004962e2.tar.xz
linux-5ec85c198eff077e99bc5ff615eb9618004962e2.zip
ALSA: bebob: distinguish M-Audio ProFire Lightbridge quirk
In former commit, ALSA IEC 61883-1/6 packet streaming engine drops initial tx packets till the packet includes any event. This allows ALSA bebob driver not to give option to skip initial packet since the engine does drop the initial packet. However, M-Audio ProFire Lightbridge has a quirk to stop packet transmission after start multiplexing event to the packet. After several thousands cycles, it restart packet transmission again. This commit specializes the usage of initial skip option for the model. Additionally, this commit expands timeout enough to wait processing content of tx packet. Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Link: https://lore.kernel.org/r/20210524031346.50539-5-o-takashi@sakamocchi.jp Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/firewire/bebob/bebob_stream.c')
-rw-r--r--sound/firewire/bebob/bebob_stream.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/sound/firewire/bebob/bebob_stream.c b/sound/firewire/bebob/bebob_stream.c
index 975670a29a72..91306da1bafe 100644
--- a/sound/firewire/bebob/bebob_stream.c
+++ b/sound/firewire/bebob/bebob_stream.c
@@ -7,7 +7,7 @@
#include "./bebob.h"
-#define READY_TIMEOUT_MS 2500
+#define READY_TIMEOUT_MS 4000
/*
* NOTE;
@@ -644,12 +644,14 @@ int snd_bebob_stream_start_duplex(struct snd_bebob *bebob)
if (err < 0)
goto error;
- // Some devices transfer isoc packets with discontinuous counter in the beginning
- // of packet streaming.
- if (bebob->version < 2)
- tx_init_skip_cycles = 3200;
+ if (!bebob->discontinuity_quirk)
+ tx_init_skip_cycles = 0;
else
tx_init_skip_cycles = 16000;
+
+ // MEMO: In the early stage of packet streaming, the device transfers NODATA packets.
+ // After several hundred cycles, it begins to multiplex event into the packet with
+ // syt information.
err = amdtp_domain_start(&bebob->domain, tx_init_skip_cycles);
if (err < 0)
goto error;