tmp_suning_uos_patched/sound/soc
Peter Ujfalusi f57d2cfaad ASoC: tlv320dac33: FIFO caused delay reporting
Delay reporting for the three implemented DAC33 FIFO modes.
DAC33 has FIFO depth status register(s), but it can not be used, since
inside of pcm_pointer we can not send I2C commands.
Timestamp based estimation need to be used. The method of calculating
the delay depends on the active FIFO mode.

Bypass mode: FIFO is bypassed, report 0 as delay

Mode1: nSample fill mode. In this mode I need to use two timestamp
ts1: taken when the interrupt has been received
ts2: taken before writing to nSample register.

Interrupts are coming when DAC33 FIFO depth goes under alarm threshold.

Phase1: when we received the alarm threshold, but our workqueue has
        not been executed (safeguard phase). Just count the played out
        samples since ts1 and subtract it from the alarm threshold
        value.
Phase2: During nSample burst (after writing to nSample register), count
        the played out samples since ts1, count the samples received
        since ts2 (in a burst). Estimate the FIFO depth using these and
        alarm threshold value.
Phase3: Draining phase (after the burst read), count the played out
        samples since ts1. Estimate the FIFO depth using the nSample
        configuration and the alarm threshold value.

Mode7: Threshold based fill mode. In this mode one timestamp is enough.
ts1: taken when the interrupt has been received

Interrupts are coming when DAC33 FIFO depth reaches upper threshold.

Phase1: Draining phase (after the burst), counting the played out
        samples since ts1, and subtract it from the upper threshold
        value.
Phase2: During burst operation. Using the pre calculated time needed to
        play out samples from the buffer during the drain period (from
        upper to lower threshold), move the time window to cover the
        estimated time from the burst start to the current time.
        Calculate the samples played out since lower threshold and also
        the samples received during the same time.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@nokia.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
2010-04-26 15:16:39 +01:00
..
atmel ALSA: ASoC: move dma_data from snd_soc_dai to snd_soc_pcm_stream 2010-04-05 19:14:11 +01:00
au1x MIPS/SOUND: Alchemy: DB1200 AC97+I2S audio support. 2010-02-27 12:53:01 +01:00
blackfin ASoC: change bf5xx-ad1938 machine driver to bf5xx-ad193x machine driver 2010-03-19 12:47:34 +00:00
codecs ASoC: tlv320dac33: FIFO caused delay reporting 2010-04-26 15:16:39 +01:00
davinci ALSA: ASoC: move dma_data from snd_soc_dai to snd_soc_pcm_stream 2010-04-05 19:14:11 +01:00
fsl of: add 'of_' prefix to machine_is_compatible() 2010-02-09 08:33:00 -07:00
imx Merge branch 'for-2.6.34' into for-2.6.35 2010-04-17 10:45:54 +09:00
omap Merge branch 'for-2.6.34' into for-2.6.35 2010-04-05 19:19:32 +01:00
pxa ASoC: Zipit Z2 WM8750 ASoC driver 2010-04-12 11:33:16 +01:00
s3c24xx ASoC: WM8750: Convert to new API 2010-04-09 12:17:42 +01:00
s6000 ALSA: ASoC: move dma_data from snd_soc_dai to snd_soc_pcm_stream 2010-04-05 19:14:11 +01:00
sh ASoC: fsi: Add FSI2 device support 2010-03-26 11:17:45 +00:00
txx9
Kconfig
Makefile
soc-cache.c ASoC: soc-cache: let reg be AND'ed by 0xff instead of data buffer for 8_8 mode 2010-03-18 11:23:23 +00:00
soc-core.c Merge branch 'for-2.6.34' into for-2.6.35 2010-03-29 21:03:20 +01:00
soc-dapm.c ASoC: Allow force enabled pins to be disabled 2010-03-22 17:21:23 +00:00
soc-jack.c ASoC: Add a notifier for jack status changes 2010-03-22 17:20:57 +00:00
soc-utils.c