大家好!
我有一个带有 TLV320AIC3104音频编解码器的定制 Xilinx Ultrascale+ MPSoC 板。 编解码器通过 I2C 连接到 ARM 处理器进行配置、并连接到 FPGA 进行 I2S 音频接口连接。 我已经为 I2S 接口创建了一个块设计(硬件设计)。 块设计非常基本。 我使用了 Xilinx 音频格式器 IP、I2S 接收器和发送器 IP。
我使用的是 petalinux、它会自动为硬件设计创建内核配置和器件树条目。 我认为自动生成的东西没有问题。
现在、我的工作是将外部硬件添加到我的 Linux 项目中。 我已将 TLV320AIC3104添加到内核配置中、并启用了 ALSA ASOC 简易声卡驱动程序。
我创建了两个器件树条目:一个用于编解码器、另一个用于简易声卡。 主线 Linux 上已有用于 TLV320AIC3104编解码器和 Simple sound 卡的器件树条目: am57xx-beagle-x15-common.dtsi - arch/arm/boot/dts/am57xx-be15-common.dtsi - Linux 源代码(v5.11.10)- Bootlin (使用 ctrl320AIC3104和 simple 器件树状网络搜索 TLV320AIC3104音频节点)。 我的设备树条目几乎相同、但 ALSA 无法识别声卡! 我还阅读了有关如何设置驱动程序的简短说明: TLV320AIC3XSW-Linux 驱动程序或库| TI.com 、但遗憾的是它仍然无法正常工作。
在电路板上测试设计之前、我想测试仿真器上的 Linux 映像、以查看是否已正确设置所有内容。 遗憾的是、它不是 Linux 正在引导并正常工作、但 uBoot 会显示一些错误消息:
[2.665735]已初始化高级 Linux 声音架构驱动程序。
(笑声)
[5.375628] xlnx_format_PCM 80010000.audio_formatter:声卡设备创建失败
[5.376359]注册的 xlnx_format_PCM 80010000.audio_formatter: PCM 平台器件
[5.377945] xlnx_I2S 8002000.I2S_receiver:xlnx_I2S_capture DAI registered
[5.378645] xlnx_I2S 80030000.I2S_transmitter:xlnx_I2S_playback DAI registered
(笑声)
[6.477359] ASOC-simple-card sound0:解析错误-22
[6.477870] ASOC-simple-card:Sound0探测器失败,错误-22
(笑声)
[6.359714] tlv320aic3x-codec 0-0018:0-0018未找到电源 IOVDD、使用虚拟稳压器
[6.361562] tlv320aic3x-codec 0-0018:0-0018未找到电源 DVDD、正在使用虚拟稳压器
[6.362193] tlv320aic3x-codec 0-0018:0-0018电源 AVDD 未找到、使用虚拟稳压器
[6.362751] tlv320aic3x-codec 0-0018:0-0018未找到电源 DRVDD、使用虚拟稳压器
(笑声)
[6.6646434] ALSA 设备列表:
[6.664918]未找到声卡。
请注意 ASOC-simple-card sound0:parse 错误-22问题。 -22是-EINVAL 的值、表示 "无效参数" (来源: 错误:Linux 系统错误(fnal.gov))
我认为这是因为简单音频卡的一个或一些设备树属性有误。 但我找不到问题。 我花了很多小时来寻找问题
您知道问题是什么吗? 附件中包含音频节点(编解码器、简单音频卡)的.dtsi 文件。 此开机自检也附带了引导日志。
e2e.ti.com/.../system_2D00_user.dtsi.txte2e.ti.com/.../uboot_5F00_log.txt
我使用的是 petalinux 2020.2