On Wed, Apr 29, 2009 at 10:35 AM, Jon Smirl jonsmirl@gmail.com wrote:
On Wed, Apr 29, 2009 at 9:04 AM, Takashi Iwai tiwai@suse.de wrote:
At Wed, 29 Apr 2009 08:58:52 -0400, Jon Smirl wrote:
My hardware was has three stereo i2s lines. These three lines are all tied to the same external clock so they are synchronized. Because there are three i2s lines, each with it's own DMA queue and FIFO, I need three independent output buffers. What is the correct way to set this up in ALSA?
So I suppose it's three streams of 2-ch interleaved format?
Yes
If so, an easier way would be to provide three substreams in a PCM, and bind 6 channels with alsa-lib plugin.
How does ALSA start the streams synchronously?
I can start the streams synchronously at the low level by waiting for the frame clock and then enabling the three DMA channels.
Another possible way would be to set up channel_info to point a proper offset for each channel. But, this is less common and maybe more problematic.
Takashi
-- Jon Smirl jonsmirl@gmail.com