[alsa-devel] [RFC 0/4] FIFO caused playback delay (latency) handling in soc
superquad.vortex2 at gmail.com
Wed Mar 3 00:29:23 CET 2010
2010/3/2 Peter Ujfalusi <peter.ujfalusi at nokia.com>
> 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
> - 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
> 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 ?
More information about the Alsa-devel