[alsa-devel] About snd_dmaengine_pcm_trigger()
Kuninori Morimoto
kuninori.morimoto.gx at gmail.com
Wed Mar 5 06:20:47 CET 2014
Hi Mark, Lars and all
I need your opinion
Now, I'm working for ${LINUX}/sound/soc/sh/fsi and ${LINUX}/sound/soc/sh/rcar drirvers.
These drivers are supporting DMAEngine transfer,
but it is using original DMAEngine method,
not using snd_dmaengine_pcm_trigger() or snd_dmaengine_pcm_register().
I was requested to use it from Mark.
The reason why I couldn't use it was our DMAEngine
didn't have "cyclic" tranfer support which is used on
dmaengine_pcm_prepare_and_submit()
But now, I created cyclic support on our DMA driver (on my local PC at this point)
Then, I noticed our drivers still can't use snd_dmaengine_pcm_xxx() method.
1st, our device needs PIO tranfer support too.
Current PIO/DMA transfer are sharing many methods/functions.
Code will become difficult to read if it is separated forcibly.
(to using snd_dmaengine_pcm_xxx())
2nd, our device DMA ON/OFF timing has relation ship to other register settings.
Unfortunately, our device is picky, it needs like this
HW init setting -> DMA ON -> HW start setting
It can be solved if snd_dmaengine_pcm_xxx() has callbacks,
but many callbacks are needed...
3rd, our device needs special method on snd_pcm_ops
int the future.
From my point of view,
our driver can replace to use "cyclic" DMA transfer
instead of current original DMAEngine method.
I guess, it is not difficult.
But, using snd_dmaengine_pcm_xxx() is difficult.
But, what do you think ?
More information about the Alsa-devel
mailing list