可能的一种原因是RT5651的时钟配置寄存器没有配置正确。解决方案:
rt5651->asrc_en = ucontrol->value.integer.value[0];
if (rt5651->asrc_en) {
- snd_soc_write(codec, 0x80, 0x4000);
+ snd_soc_write(codec, 0x80, 0x0);
snd_soc_write(codec, 0x81, 0x0302);
snd_soc_write(codec, 0x82, 0x0800);
snd_soc_write(codec, 0x73, 0x1004);
RT5651的0x80寄存器定义如下: