(缺乏)ZED板声卡在GNU/Linux中的支持

(缺乏)ZED板声卡在GNU/Linux中的支持

我试图说服声卡在类似于 Avnet ZED 板的自定义硬件上工作。

原始驱动程序示例基于经过大量修改(普通补丁大约 180k 行)的 3.14.12 内核,称为 zed_adau1761。 “声卡”不是在一个驱动程序内处理的,它分为三个逻辑部分:

  1. 编解码器驱动程序adau1761-i2c.c,
  2. 负责处理流数据 axi-i2s.c 的驱动程序,
  3. 将上述两者设置为协同工作的驱动程序,zed_adau1761.c。

与前两个驱动程序不同,第三个驱动程序可能从未被主流化,并且仅存在于内核的 Analog Devices Github 分支中现在可能已不复存在的部分的一个分支中。

该开发板仍然根据安富利网页出售,因此可能有一些黑客在使用它。

我的问题是,今天的工具无法像大约 7 年前那样使用旧内核,同时旧内核充满其他问题,但旧驱动程序不包含在新内核中并且两者都不适用于较新的内核。

3. 驱动程序是否以不同的名称进行主线化?或者我尝试了错误的方法来使声卡工作?

感谢任何对这个问题有更深入了解的人!

答案1

多年来,人们对 SoC 驱动程序的态度在某种程度上发生了变化。

对 OF(开放固件 - 换句话说,设备树中的配置)的支持已在声卡驱动程序领域进行了重新设计、改进和扩展。

最好使用通用解决方案,而不是编写多个机器驱动程序(我的问题中的“胶水”驱动程序 - 3.)。在本例中,它是一个“简单音频卡”机器驱动程序和设备树中的适当配置:

zed_sound {
        compatible = "simple-audio-card";
        simple-audio-card,format = "i2s";
        simple-audio-card,name = "ZED ADAU1761";
        simple-audio-card,dai-link@0 {
                format = "i2s";
                cpu {
                        sound-dai = <&axi_i2s_0>;
                };
                codec {
                        sound-dai = <&adau1761>;
                };
        };
};

该解决方案适用于最新的内核。测试时使用长期稳定版 - 5.10.x 进行测试。

相关内容