Android 系统无声问题分析

记录以前解决的无声问题,以便总结解题思路


一,音乐播放中但耳机中无声

Platform:MTK,MT6755

Description:

[预置条件]:插入耳机,后台播放音乐,声音和振动中将触摸提示音开关打开

[测试步骤]:主菜单--设置--声音和振动--信息铃声--随机预览五六个铃--选择任一铃声设为信息铃声--下来状态栏进入音乐

[实际结果]:音乐正在播放但耳机中无声,拖动进度条仍无声,拔出耳机后播放音乐,再次插入耳机,即可恢复


Analysis:

1,mainlog/kernel log pcm流程开关正常;

2,抓取无声音和有声时的digital/analog寄存器,其中digitalregister对比如下,左边为无声右边为有声:


3,查看APdatasheet,对应寄存器所代表的意义;

4,AFE_I2S_CON10bit无声时为0,有声时为1,代表的意义是I2S2_EN;

Android 系统无声问题分析_第1张图片

5,查看代码,搜索到setI2SDacEnable在做AFE_I2S_CON10bitenable/disable,打开相关trace

Android 系统无声问题分析_第2张图片

6,添加trace,看到在恢复音乐播放前AFE_I2S_CON1是被disable的:


7,查看code此场景下setI2SDacEnable(false)的可能,结合mainlog,可以看到HPimpendance的播放在使用:

Android 系统无声问题分析_第3张图片

8,如此定位到mt_soc_pcm_hp_impedance.cmtk_soc_pcm_hp_impedance_close()中未加判断就直接setI2SDacEnable(false)



二,调节音量后设置的拨号盘钢琴、默认音效变为无声

Platform:MTK,MT6755

Description:

[预置条件]:拨号设置:开启拨号键盘触摸音效为默认、钢琴

[测试步骤]:拨号盘--输入字符、数字--观察--音量键--调节铃声、音乐、闹钟音量级--拨号盘输入字符、数字--观察

[实际结果]:调节音量级后的拨号盘音效变为无声

Analysis:

1, 查看log,音量调节时使用的是I2S0dl1DAI播放和拨号盘fastmixer使用DL2DAI播放,

观察log,发现拨号盘无声都是发生在音量播放结束后。


2, 查看codemtk_pcm_I2S0dl1_stop()/mtk_pcm_I2S0dl1_close()中是否有影响无声的操作;其中 mtk_pcm_I2S0dl1_close()中有在设置AFE_I2S_CON3SmartPA相关)


3,再查看dl2相关代码并未对AFE_I2S_CON3做些计数的保护,因此添加相关代码:

Android 系统无声问题分析_第4张图片



三,喇叭无声,耳机有声:

Platform:sdm450 +external codec+smartpa

Description:

[预置条件]:原先喇叭播放有声音

[测试步骤]:音乐播放中插入耳机,耳机有声音,拔出耳机,再点击播放音乐,喇叭无声。

[实际结果]:喇叭无声


Analysis:

1,抓取qxdm log,0x1586 有声音

2,使用tinymix 给smartpa 的输入打tone音,喇叭无声,定位到smartpa的问题;

3,


你可能感兴趣的:(Issue,Analysis)