@@ -760,9 +760,6 @@ static int soc_pcm_close(struct snd_pcm_substream *substream)
snd_soc_runtime_deactivate(rtd, substream->stream);
- for_each_rtd_cpu_dai(rtd, i, cpu_dai)
- snd_soc_dai_digital_mute(cpu_dai, 1, substream->stream);
-
for_each_rtd_cpu_dai(rtd, i, cpu_dai)
snd_soc_dai_shutdown(cpu_dai, substream);
@@ -1229,6 +1226,11 @@ static int soc_pcm_hw_free(struct snd_pcm_substream *substream)
snd_soc_dai_digital_mute(codec_dai, 1,
substream->stream);
}
+ for_each_rtd_cpu_dai(rtd, i, cpu_dai) {
+ if (cpu_dai->active == 1)
+ snd_soc_dai_digital_mute(cpu_dai, 1,
+ substream->stream);
+ }
/* free any machine hw params */
soc_rtd_hw_free(rtd, substream);