At Thu, 05 Jul 2007 19:53:36 +1200, Eliot Blennerhassett wrote: > > Greetings, > > I'm adding linked stream support to my driver (asihpi), and having some > trouble with the end of playback. > > What happens is that the slave streams never transition to SETUP state at the > end of playback. > (Eg playing 4 channel wav file to 2 linked stereo streams with aplay). > > The master stream reaches snd_pcm_drain_done() which then causes > trigger(stop), resulting in all linked streams being stopped. > But only the master state is set to SETUP > > However, now the slave streams are stopped, period_elapsed() is not called > for a final time to (I assme) cause them to transition to the SETUP state. > Eventually I get "playback drain error (DMA or IRQ trouble?)\n" > > My workaround is to set the state of each substream to SETUP in the > trigger-stop operator, but no other driver needs to do this so I think it is > probably the wrong solution - maybe misses some other cleanup code? snd_pcm_drain() has a loop to wait until the all substreams are drained. That's why snd_pcm_drain_done() stops only one substream, not all linked substreams. But, yes, there seems to be a problem with hardware-linked substreams that stops the multiple substreams. This mess comes from the fact that we handle both soft-linked and hard-linked substreams as if they are identical. We'd need a deeper clean up, I'm afraid. Takashi _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel