您好!
我是一名嵌入式软件工程师、最近从事一个基于 NXP i.MX8QM Arm 处理器的开发板项目、该项目采用运行 Linux 5.4.47内核的 TI TLV320AIC3204立体声音频编解码器。 编解码器芯片通过 SAI1 I2S 总线连接。 我可以让音频播放部分正常工作、但目前在使录制功能正常工作方面遇到一些困难、希望您能提供建议和帮助。 详细信息如下所示。
我的发展基于图中所示的以下框架。 我目前正在使用 Linux 内核5.4.47附带的“编解码器驱动程序”(tlv320aic32x4-i2c.c/tlv320aic32x4.c)和同一内核发行版附带的“平台驱动程序”文件“simple-sound.c”(linux-imX/sound/soc/sgeneral/simple-card.c)。 按照以下步骤将设备树(DTS)配置为音频设备:
原理图如流程图所示:
重新启动后、我确认在内核中检测到 TLV320AIC3204编解码器芯片
1)使用“aplay -l”命令列出新添加的音频设备:
sysdefault:card=tlv320audio
tlv320-音频,
默认音频设备
2) 2)通过测试音频播放:可以使用以下命令播放音频片段
aplay -D sysdefault:card=tlv320audio -f dat 1.wav
但是、录制功能不起作用。
我尝试使用以下命令:
arecord -vv -D sysdefault:card=tlv320audio foo.wav
执行录音命令时,观察到以下情况:
1) 1) 未观察到 MICBIAS 信号发生变化、
2) 2) PIN1 MCLK 输出正常
3) 3)编解码器芯片未输出引脚2 BCLK 和 WCLK 信号
经过一些初步调试后,我发现在 arecord 调用期间,调用了 sound/soc/co-dapm.c 中的“dapm_power_widget”函数。 在浏览每个小部件时,所有捕获小部件的“new_power”属性都有一个“0”值,“target_bias _level”保持为0 (snd_SOC_bias _off)。 反过来、录制失败。
我想知道以前是否有人遇到过这个问题。 这是 DTS 配置问题还是需要修补程序的内核驱动程序问题。 提前感谢您的帮助!