kernel-ark/sound/soc/davinci
Ben Gardiner 52e2c5d38e ASoC: davinci-pcm: convert to BATCH mode
The davinci-pcm driver's snd_pcm_ops pointer function currently calls into
the edma controller driver to read the current positions of the edma channels
to determine pos to return to the ALSA framework. In particular,
davinci_pcm_pointer() calls edma_get_position() and the latter has a comment
indicating that "Its channel should not be active when this is called" whereas
the channel is surely active when snd_pcm_ops.pointer is called.

The operation of davinci-pcm in capture and playback appears to follow close
the other pcm drivers who export SNDRV_PCM_INFO_BATCH except that davinci-pcm
does not report it's positions from pointer() using the last transferred
chunk. Instead it peeks directly into the edma controller to determine the
current position as discussed above.

Convert the davinci-pcm driver to BATCH mode: count the periods elapsed in the
prtd->period member and use its value to report the 'pos' to the alsa
framework in the davinci_pcm_pointer function.

There is a phase offset of 2 periods between the position used by dma setup
and the position reported in the pointer function. Either +2 in the dma
setup or -2 in the pointer function (with wrapping, both) accounts for this
offset -- I opted for the latter since it makes the first-time setup clearer.

Signed-off-by: Ben Gardiner <bengardiner@nanometrics.ca>
Reviewed-by: Steven Faludi <stevenfaludi@nanometrics.ca>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2011-05-25 19:14:31 +08:00
..
davinci-evm.c asoc: davinci: da830/omap-l137: correct cpu_dai_name 2011-02-03 20:16:09 +00:00
davinci-i2s.c ASoC: Davinci: Replace usage of IO_ADDRESS with ioremap() 2011-02-09 22:33:32 +00:00
davinci-i2s.h ASoC: multi-component - ASoC Multi-Component Support 2010-08-12 14:00:00 +01:00
davinci-mcasp.c davinci-mcasp: fix _CBM_CFS pin directions 2011-04-26 11:43:53 +01:00
davinci-mcasp.h ASoC: multi-component - ASoC Multi-Component Support 2010-08-12 14:00:00 +01:00
davinci-pcm.c ASoC: davinci-pcm: convert to BATCH mode 2011-05-25 19:14:31 +08:00
davinci-pcm.h ASoC: multi-component - ASoC Multi-Component Support 2010-08-12 14:00:00 +01:00
davinci-sffsdr.c ASoC: Do not include soc-dapm.h 2010-11-22 14:04:41 +00:00
davinci-vcif.c asoc: davinci_voicecodec: use mfd_data instead of driver_data 2011-03-23 10:41:56 +01:00
Kconfig DaVinci: DM365: Voice Codec support for the DM365 EVM 2010-03-12 11:12:24 +00:00
Makefile