[alsa-devel] [RFC 0/4] FIFO caused playback delay (latency) handling in soc

Raymond Yau superquad.vortex2 at gmail.com
Wed Mar 3 00:29:23 CET 2010

2010/3/2 Peter Ujfalusi <peter.ujfalusi at 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 ?

More information about the Alsa-devel mailing list