On Thu, 2008-05-08 at 09:54 +0200, Juergen Beisert wrote:
I'm confused how to link the pcm-layer and the transmission layer together. pxa2xx-i2s.c registers a codec-dai (line 346), while the imx-ssi.c registers (line 864) a platform-dai (internally called a cpu_dai. BTW: why a different name?). I _believe_ the CPU DAI tries to connect the CPU-pcm to the transmission interface like ssi or i2s on the same chip. But both implementations are using the same layering (pcm-dma and ssi/i2s), but registering different DAIs.
Now I have an ssi driver for my CPU (to be more precise: Two instances of it, when I registering two ssi devices in my BSP file). But how to tell the CPU pcm-layer which one it should use (and for what purpose, play, capture)? And only the ssi driver itself knows how to interact with the DMA controller. But this information is needed in the CPU pcm-layer as it setup the DMA.
Does a list exists, where I can store driver's private data in each layer (mapped iomem addresses for example)? And how to access it, when I only get a "struct snd_pcm_substream" as a parameter?
You shouldn't need to write an I2S driver for the i.MX2x SSI port as the i.MX3x SSI is very similar (maybe identical). Please try imx-ssi.c first, although it may need some changes if the register defs are different and will need changes for DMA config.
Fwiw, I've attached an older 2.4 OSS driver for the i.MX21. This may help with the DMA.
Liam