
On 03/22/2013 12:30 PM, Russell King - ARM Linux wrote:
On Thu, Mar 21, 2013 at 05:26:19PM +0100, Lars-Peter Clausen wrote:
The problem with the current library is that we don't know yet which dmaengine device is going to be used by the time we pre-allocate the audio buffers, since the DMA filter parameters often are provided by the DAI driver.
That's not really a problem. The CPU DAI can provide the data via the playback_dma_data and capture_dma_data pointers, which the ASoC DMA engine driver can pick up on when it initializes. This data can contain everything that the ASoC DMA engine driver needs.
Yes and no. Unfortunately it doesn't work for all drivers. But yes that's the way I want to move forward for the non dt case. Let the channels be requested in the pcm_new callback.
Where my driver falls down is if you need to reconfigure the DMA engine later - it doesn't provide an API for that, but that's trivially easy to augment the API.
If you want to look at what I did for sa11x0 Assabet platforms, it's still all here:
http://ftp.arm.linux.org.uk/git/gitweb.cgi?p=linux-arm.git;a=shortlog;h=2f03...
As you will see from the dates, it's over a year old now - the only thing I do with it is occasionally rebase it to bring it up to a more modern kernel.