OSDN Git Service

ASoC: blackfin: bf5xx-i2s: Add support for TDM mode
authorLars-Peter Clausen <lars@metafoo.de>
Tue, 28 May 2013 17:22:14 +0000 (19:22 +0200)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Thu, 30 May 2013 11:33:40 +0000 (12:33 +0100)
commit8b5e2e396b589119bcc9c6a382a999e0202bae18
treebc5057b3426563cace2ae075bfc2b5fa5ba37c11
parenta3935a29f68c261d31b41c896f95c9333b615abf
ASoC: blackfin: bf5xx-i2s: Add support for TDM mode

The bf5xx-i2s{,-pcm} and bf5xx-tdm{-pcm} drivers are nearly identical. Both are
for the same hardware each supporting a slight different subset of the hardware.
The bf5xx-i2s driver supports 2 channel I2S mode while the bf5xx-tdm driver
supports TDM mode and channel remapping. This patch adds support for TDM mode
and channel remapping to the bf5xx-i2s driver so that we'll eventually be able
to retire the bf5xx-tdm driver. Unfortunately the hardware is fixed to using 8
channels in TDM mode. The bf5xx-tdm driver jumps through a few hoops to make it
work well with other channel counts as well:
* Don't support mmap
* Translate between internal frame size (which is always 8 * sample_size)
  and ALSA frame size (which depends on the channel count)
* Have special copy and silence callbacks which are aware of the mismatch
  between internal and ALSA frame size
* Reduce the maximum buffer size to ensure that there is enough headroom for
  dummy data.

The bf5xx-i2s driver is going to use the same mechanisms when being used int
TDM mode.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
sound/soc/blackfin/bf5xx-i2s-pcm.c
sound/soc/blackfin/bf5xx-i2s-pcm.h [new file with mode: 0644]
sound/soc/blackfin/bf5xx-i2s.c