On Mon, 06 Jan 2014 16:21:01 -0800 (PST) Kuninori Morimoto kuninori.morimoto.gx@gmail.com wrote:
Thank you for your help. I see, I will start moving it, but I need sample code for it. Who is using DPCM ?
Nobody in tree unfortunately. The TI OMAP and Qualcomm production kernels use it as do some of the newer Intel Haswell chips but all of that is out of tree. There's also the work Russell has been doing for Kirkwood but I don't think he posted the finished version to the list yet (he's waiting for some fixes from Liam which will hopefully come soon).
Hmm... OK I understood. Do you think it is possible to get these out-of-tree codes from somewhere/somehow ? I can work for DPCM support for our driver, but it is very difficult for me without sample code...
If I could get sample code, and I finished my current task, I will start DPCM support. is it OK ?
Kuninori,
Last month I tried to use DPCM in the Cubox (kirkwood audio + nxp tda998x HDMI transmitter and S/PDIF), and, as your simple-card was not easy to extend, I proposed an other way to describe a DPCM audio system in DT:
http://mailman.alsa-project.org/pipermail/alsa-devel/2013-December/070594.ht...
and also:
http://mailman.alsa-project.org/pipermail/alsa-devel/2014-January/070634.htm...
In fact, DPCM just needs many DAI links, and a flag 'front-end' / 'back-end':
http://mailman.alsa-project.org/pipermail/alsa-devel/2014-January/070623.htm...
Actually, I added many DAI links to your simple-card and I am waiting for Xiubo's patches to be applied before proposing mine.
This will make the Cubox audio system work by selecting the I2S or S/PDIF PCM, but it will not be DPCM. The reason is that, with the actual DPCM, the sample rates and formats are the ones of the front-end, and not the subset of the ones of the DAIs in the sound route. I explained this problem in:
http://mailman.alsa-project.org/pipermail/alsa-devel/2013-December/070585.ht...
and it appears that some development is needed in the sound core to handle this Cubox case.
Coming back to a DPCM example, apart from adding the 'front-end' and 'back-end' flags in the DAI links, the changes were:
- add the global system playback DAI in the audio controller.
This DAI is the audio entry point (front-end). On audio open, the back-end DAIs are searched and started (snd_pcm_open). If there was a platform declared in the associated DAI links, the DMA open would be called many times, so
- don't set a platform pointer in the back-end DAI links.
That's all.
If you want more information, I may send you the patch I did for DPCM in the audio controller (kirkwood-i2s.c).