@@ -700,10 +700,16 @@ static int soc_pcm_clean(struct snd_soc_pcm_runtime *rtd,
700
700
snd_soc_runtime_deactivate (rtd , substream -> stream );
701
701
702
702
/* Make sure DAI parameters cleared if the DAI becomes inactive */
703
- for_each_rtd_dais (rtd , i , dai )
703
+ for_each_rtd_dais (rtd , i , dai ) {
704
704
if (snd_soc_dai_active (dai ) == 0 &&
705
705
(dai -> rate || dai -> channels || dai -> sample_bits ))
706
706
soc_pcm_set_dai_params (dai , NULL );
707
+
708
+ if (snd_soc_dai_stream_active (dai , substream -> stream ) == 0 ) {
709
+ if (dai -> driver -> ops && !dai -> driver -> ops -> mute_unmute_on_trigger )
710
+ snd_soc_dai_digital_mute (dai , 1 , substream -> stream );
711
+ }
712
+ }
707
713
}
708
714
709
715
for_each_rtd_dais (rtd , i , dai )
@@ -896,8 +902,10 @@ static int __soc_pcm_prepare(struct snd_soc_pcm_runtime *rtd,
896
902
snd_soc_dapm_stream_event (rtd , substream -> stream ,
897
903
SND_SOC_DAPM_STREAM_START );
898
904
899
- for_each_rtd_dais (rtd , i , dai )
900
- snd_soc_dai_digital_mute (dai , 0 , substream -> stream );
905
+ for_each_rtd_dais (rtd , i , dai ) {
906
+ if (dai -> driver -> ops && !dai -> driver -> ops -> mute_unmute_on_trigger )
907
+ snd_soc_dai_digital_mute (dai , 0 , substream -> stream );
908
+ }
901
909
902
910
out :
903
911
return soc_pcm_ret (rtd , ret );
0 commit comments