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 ?