ASoC: improve asynchronous mode support in the fsl_ssi driver
authorTimur Tabi <timur@freescale.com>
Tue, 13 Sep 2011 17:59:37 +0000 (12:59 -0500)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Thu, 15 Sep 2011 23:05:29 +0000 (00:05 +0100)
commit5e538ecade22a5ec4c8e18d494db0ecf924254eb
tree6cd093a7757d7b7c8ac616668175f28541a71f92
parent32d2a0c17d81016215381d337dad876dc972ee83
ASoC: improve asynchronous mode support in the fsl_ssi driver

The Freescale SSI audio controller supports "synchronous" and "asynchronous"
modes.  In synchronous mode, playback and capture use the same input clock,
so sample rates must be the same during simultaneous playback and capture.
Unfortunately, the code which supports asynchronous mode is just broken in
various ways.  In particular, it was constraining sample sizes as well as
the sample rate.

The fix also allows us to simplify the code by eliminating the 'asynchronous',
'playback', and 'capture' variables that were used to keep track of playback
and capture streams.

Unfortunately, it turns out that simulataneous playback and record does not
actually work on the only platform that supports asynchronous mode: the
Freescale P1022DS reference board.  If a second stream is started, the SSI
grinds to halt for both streams.  This is true even if the P1022 is configured
for synchronous mode, so it's likely a hardware problem that needs to be
worked around.

Signed-off-by: Timur Tabi <timur@freescale.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
sound/soc/fsl/fsl_ssi.c