问题出现的背景:
最近两天遇到了一个iMX6的项目定制WM8960音频芯片播放声音出现砰砰声的问题。
此问题出现在客户的批量产品上,一共检验280台,喇叭噪音大的有10多台,噪音小的有50多台。砰砰声比较大的板子更换音频芯片后测试正常,但换下来的音频芯片在公司自己的6Q-C底板上面无杂音。
前期判断:
以上述信息来看的话,就是这个现象不是必出的,而且和硬件有一定的关联性,由于客户定制做好的板子比较多,单靠硬件去排查解决的话不现实,还是希望能在软件上通过一些手段将这个问题解决或者规避掉。
因为自己对音频这块不是很熟悉,完全不知道如何下手。
刚开始排查的时候,同事提醒有可能是音频芯片的DAPM部分的问题,所谓DAPM,也就是Dynamic Audio Power Management动态音频电源管理,就是通过音频使用过程中用户所使用的音频路径bybass,动态控制路径上的门开关来实现诸如如果使用MIC录音,Speaker放音的时候,就关闭掉Line in通道的输入和HeadPhone放音的路径。这样才来实现节能的功能。
初期猜想是DAPM控制的时候,有一些控制没有做好,导致客户的定制版使用speaker放音的时候,别的通路开关串进去了杂音信号。
因为在6Q-C的Linux4.1.15的系统上测试speaker也有轻微可以接受的砰砰声,而3.0.35系统上没有。李哥说这两个系统的区别就是当时调Linux3.0.35的音频的时候关掉了DAPM的功能,所以理所当然的想到如果把Linux4.1.15系统上音频的DAPM也关掉。