• Lars-Peter Clausen's avatar
    ASoC: blackfin: bf5xx-i2s: Add support for TDM mode · 8b5e2e39
    Lars-Peter Clausen authored
    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: default avatarLars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
    8b5e2e39
bf5xx-i2s.c 9.72 KB