[alsa-devel] [PATCH v5] sound/soc/lapis: add platform driver for ML7213

Tomoya MORINAGA tomoya.rohm at gmail.com
Fri Jun 1 10:13:45 CEST 2012

On Thu, May 31, 2012 at 7:45 PM, Mark Brown
<broonie at opensource.wolfsonmicro.com> wrote:
>> > Please re-read what I wrote.
>> Let me clarify.
>> Do you say native DMA driver API like dmaengine_prep_slave_sg(),
>> dmaengine_submit() shouldn't be used from ASoC driver, right ?
> Your driver should be written in terms of the ASoC DMA framework.

I understand your order.
But isn't it only me ?
You mean all ASoC driver uses dmaengine should be written in terms of
the ASoC DMA framework.
Right ?

>> > No, all current mainline drivers using the library use cyclic DMA.
>> I can't see any driver uses cyclic DMA. (I saw linux-next's tree from
>> kernel.org.)
>> Where is your saying "current mainline" ?
> Linus' tree, or mine.

Sorry, I couldn't find.
Is your saying Linus's tree this ?
However, any ASoC driver doesn't use cyclic DMA's.

> Have you even looked at the soc-dmaengine-pcm
> code?  It uncondtionally requests a cyclic channel.

I already saw soc-dmaengine-pcm.c

>> However I think it seems difficult for supporting all devices.
>> Because hardware dependency control code can't be added.
>> For example, for ML7213, needs interrupt control both before/after DMA transfer.
>> However,  in case of using soc-dmaengine, the control can't be done.
>> Because the processing is in soc-dmaengine.
> Please be more specific.  What are the concrete problems that you see?
> Why is it not possible to address them within the framework?

I show the code.
+static void i2s_dma_tx_complete(void *arg)

+       ioh_i2s_irq_ctrl(ioh->number, SNDRV_PCM_STREAM_PLAYBACK,
IOH_EN_IRQ);   ##<<Interrupt control

Our device needs interrupt control both before/after DMA transfer like above.
In your soc-dma-engine, DMA transfer complete code is in soc-dma-engine, right ?
So, the vendor specific code like the above can't be written.

ROHM Co., Ltd.

More information about the Alsa-devel mailing list