ALSA: firewire-lib: postpone to start IR context
[linux-2.6-block.git] / sound / firewire / bebob / bebob_stream.c
index 5e4a61458be24792f539c1c4f7038e469ca3ef4f..7ac0d9f495c47ca2a5d423ff9981c9457853334d 100644 (file)
@@ -658,7 +658,15 @@ int snd_bebob_stream_start_duplex(struct snd_bebob *bebob)
                if (err < 0)
                        goto error;
 
-               err = amdtp_domain_start(&bebob->domain);
+               // The device postpones start of transmission mostly for 1 sec
+               // after receives packets firstly. For safe, IR context starts
+               // 1.5 sec (=12000 cycles) later. This is within 2.0 sec
+               // (=CALLBACK_TIMEOUT).
+               // Furthermore, some devices transfer isoc packets with
+               // discontinuous counter in the beginning of packet streaming.
+               // The delay has an effect to avoid detection of this
+               // discontinuity.
+               err = amdtp_domain_start(&bebob->domain, 12000);
                if (err < 0)
                        goto error;