AnsweredAssumed Answered

wm8960 mute & unmute fail question

Question asked by Victor Lan on Aug 26, 2019
Latest reply on Aug 27, 2019 by Victor Lan

Hi Everyone

 

I meet one strange question as below situation

Motherboard is i.mx6qp platform; OS is android 9; kernel version is 4.14.98

 

when I finished wm8960 driver porting, and the normal sound process should be call soc-pcm.c soc_pcm_prepare() function, then will call snd_soc_dai_digital_mute(rtd->codec_dais[i], 0,substream->stream); into wm8960.c 

.digital_mute = wm8960_mute, the sound will show.

 

after if no sound event, it will call soc-pcm.c soc_pcm_hw_free() function then into snd_soc_dai_digital_mute(rtd->codec_dais[i], 1,substream->stream); it also will call wm8960.c .digital_mute = wm8960_mute, again then the sound will quiet. 

 

but now I meet a strange question is sound show first, then never get call 

soc-pcm.c soc_pcm_hw_free() ; it means, my sound alway turn on......alwayslike as below log, did anyone have a suggestion?

 

 

[ 227.390112] VICTOR soc-pcm.c soc_pcm_open
[ 227.394421] VICTOR snd_soc_set_runtime_hwparams
[ 227.403577] VICTOR soc_pcm_init_runtime_hw
[ 227.407757] VICTOR snd_soc_runtime_activate
[ 227.412203] VICTOR soc_pcm_ioctl
[ 227.415464] VICTOR soc_pcm_hw_params
[ 227.419963] VICTOR soc_dai_hw_params
[ 227.424366] wm8960_set_pll wm8960_configure_clocking start.......
[ 227.430660] <wm8960_set_pll:1167>freq_in=0,freq_out=0,g_freq_had_set=0
[ 227.440636] <wm8960_set_pll:1167>freq_in=24000000,freq_out=22579200,g_freq_had_set=0

[ 227.718736] wm8960_set_pll wm8960_configure_clocking end.......
[ 227.726784] VICTOR soc_dai_hw_params
[ 227.731905] VICTOR soc-pcm.c soc_pcm_prepare
[ 227.745367] wm8960.c  wm8960_mute mute=0
[ 227.748508] Complete do mute!g_freq_had_set=0
[ 227.754873] do_audio_on_extra_action, g_wm8960_hp_force_out=0
[ 227.764467] change WM8960_LOUT2 0x17B
[ 227.771649] <wm8960_global_write>do_audio_on_extra_action, g_wm8960_speaker_disable=false!!
[ 227.782374] mxc_wm8960_amp_on enable=1
[ 227.786164] soc-pcm.c snd_soc_dai_digital_mute (cpu_dai, 0, substream->stream)
[ 227.793967] VICTOR soc_pcm_ioctl
[ 227.797269] VICTOR soc_pcm_trigger

 

 

*******NEVER CALL soc_pcm_hw_free() into snd_soc_dai_digital_mute(rtd->codec_dais[i], 1,substream->stream)*******

Outcomes