ASoC: omap-mcpdm: Fix for full duplex audio use case
authorPeter Ujfalusi <peter.ujfalusi@ti.com>
Wed, 20 Mar 2013 09:47:13 +0000 (10:47 +0100)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Wed, 20 Mar 2013 09:59:52 +0000 (10:59 +0100)
commit81054b226b76145628670a962674ab312690ab86
treeb12a53c9dc24851e3ac20a22c321004e32f1a5cd
parent623766318aeb5f8dee83b2e8926c39cf83568197
ASoC: omap-mcpdm: Fix for full duplex audio use case

Due to HW limitation within OMAP McPDM IP uplink and downlink need to be
started at the same time. This causes issues when we have two streams
running, for example:
arecord | aplay

In this case the playback stream would have no channels enabled since at the
capture start we are not aware that a playback is going to start.

The workaround is to configure the other direction to stereo when the first
stream is started. When the second stream is coming we check the new stream's
number of channels against the pre-configured channels. If it does not match
we stop and restart McPDM to update the configuration. This might result a
small pop. If the coming stream is a match we do nothing in the McPDM driver.

This workaround can handle most use cases without the need to restart McPDM.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
sound/soc/omap/omap-mcpdm.c