At Mon, 2 Dec 2013 17:34:34 +0800, Nicolin Chen wrote:
The snd_soc_dai_digital_mute() here will be never executed because we only decrease codec->active in snd_soc_close(). Thus correct it.
A couple of minor problems by this approach:
- snd_soc_dai_digital_mute() will be called twice in the normal PCM close path.
- In full duplex mode where both playback/capture streams share the same codec, one of the directions won't be handled correctly because codec->active is incremented/decremented twice (once for each direction).
Takashi
Signed-off-by: Nicolin Chen b42378@freescale.com
sound/soc/soc-pcm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c index 22af038..7d19117 100644 --- a/sound/soc/soc-pcm.c +++ b/sound/soc/soc-pcm.c @@ -689,7 +689,7 @@ static int soc_pcm_hw_free(struct snd_pcm_substream *substream) }
/* apply codec digital mute */
- if (!codec->active)
if (codec->active == 1) snd_soc_dai_digital_mute(codec_dai, 1, substream->stream);
/* free any machine hw params */
-- 1.8.4