记录以前解决的无声问题,以便总结解题思路
一,音乐播放中但耳机中无声
Platform:MTK,MT6755
Description:
[预置条件]:插入耳机,后台播放音乐,声音和振动中将触摸提示音开关打开
[测试步骤]:主菜单--设置--声音和振动--信息铃声--随机预览五六个铃--选择任一铃声设为信息铃声--下来状态栏进入音乐
[实际结果]:音乐正在播放但耳机中无声,拖动进度条仍无声,拔出耳机后播放音乐,再次插入耳机,即可恢复
Analysis:
1,mainlog/kernel log pcm流程开关正常;
2,抓取无声音和有声时的digital/analog寄存器,其中digitalregister对比如下,左边为无声右边为有声:
3,查看AP的datasheet,对应寄存器所代表的意义;
4,AFE_I2S_CON1的0bit无声时为0,有声时为1,代表的意义是I2S2_EN;
5,查看代码,搜索到setI2SDacEnable在做AFE_I2S_CON1的0bit的enable/disable,打开相关trace
6,添加trace,看到在恢复音乐播放前AFE_I2S_CON1是被disable的:
7,查看code此场景下setI2SDacEnable(false)的可能,结合mainlog,可以看到HPimpendance的播放在使用:
8,如此定位到mt_soc_pcm_hp_impedance.c中mtk_soc_pcm_hp_impedance_close()中未加判断就直接setI2SDacEnable(false)
二,调节音量后设置的拨号盘钢琴、默认音效变为无声
Platform:MTK,MT6755
Description:
[预置条件]:拨号设置:开启拨号键盘触摸音效为默认、钢琴
[测试步骤]:拨号盘--输入字符、数字--观察--音量键--调节铃声、音乐、闹钟音量级--拨号盘输入字符、数字--观察
[实际结果]:调节音量级后的拨号盘音效变为无声
Analysis:
1, 查看log,音量调节时使用的是I2S0dl1DAI播放和拨号盘fastmixer使用DL2DAI播放,
观察log,发现拨号盘无声都是发生在音量播放结束后。
2, 查看code,mtk_pcm_I2S0dl1_stop()/mtk_pcm_I2S0dl1_close()中是否有影响无声的操作;其中 mtk_pcm_I2S0dl1_close()中有在设置AFE_I2S_CON3(SmartPA相关)
3,再查看dl2相关代码并未对AFE_I2S_CON3做些计数的保护,因此添加相关代码:
三,喇叭无声,耳机有声:
Platform:sdm450 +external codec+smartpa
Description:
[预置条件]:原先喇叭播放有声音
[测试步骤]:音乐播放中插入耳机,耳机有声音,拔出耳机,再点击播放音乐,喇叭无声。
[实际结果]:喇叭无声
Analysis:
1,抓取qxdm log,0x1586 有声音
2,使用tinymix 给smartpa 的输入打tone音,喇叭无声,定位到smartpa的问题;
3,