2010/3/2 Peter Ujfalusi peter.ujfalusi@nokia.com
Hello,
There has been discussion in alsa-devel in this subject several times, but no actual patches has been sent.
Based on the available information the latency caused by the HW buffer on some systems can be handled by updating the runtime->delay.
It has been discussed, that the runtime->delay can also be updated dynamically to show more accurate delay.
To further complicate things, in ASoC we could have more buffer in the chain. To handle this we need soc level support.
This RFC series tries to do that in soc by:
- introducing a pcm_pointer wrapper
- in this wrapper we call the original pcm_pointer functions to get the
DMA pointer
- introducing a new interface in dai_ops to ask the delay from the dais
- adding the cpu_dai and codec_dai returned delay to form the actual
delay
- update the runtime->delay with this value.
With this approach none of the existing drivers need change, but they can add support for specifying the FIFO caused delay.
In this series on top of the core changes the omap(3) code is updated to take this delay reporting into use. I have not added the support to the tlv320dac33 codec driver, since it needs a bit more work, but along the same line it can be done, and if the tlv320dac33 is hooked to omap McBSP than applications can know the whole delay/latency on that path.
Since this is for RFC, I have based it on sound-2.6 topc/asoc branch, which does not have the McBSP regcache nor the sidetone patches, but I would like to get feedback on this method first than create a proper series.
I have left out linux-omap from this RFC round, since the problem is ALSA related.
Thank you, Péter Ujfalusi
Peter Ujfalusi (4): ASoC: core: soc level wrapper for pcm_pointer callback ASoC: core: Add delay operation to snd_soc_dai_ops OMAP3: McBSP: Add interface for transmit FIFO state query ASoC: OMAP3: Report delay on playback caused by the internal FIFO
arch/arm/plat-omap/include/plat/mcbsp.h | 4 +++ arch/arm/plat-omap/mcbsp.c | 27 ++++++++++++++++++++++++ include/sound/soc-dai.h | 6 +++++ sound/soc/omap/omap-mcbsp.c | 26 +++++++++++++++++++++++ sound/soc/soc-core.c | 34 ++++++++++++++++++++++++++++++- 5 files changed, 96 insertions(+), 1 deletions(-)
Do soc support snd_pcm_rewind() and snd_pcm_forward ?