This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TAS5805M:支持器件树、适用于地层上的双 TAS5805M DAC 配置

Guru**** 2353800 points
Other Parts Discussed in Thread: TAS5805M, TAS2781
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1502196/tas5805m-support-with-the-device-tree-for-dual-tas5805m-dac-configuration-on-raspbian

器件型号:TAS5805M
主题中讨论的其他器件: TAS5805TAS2781

工具/软件:

我将使用两个以2.1主/从配置连接的 TAS5805M DAC 构建 Raspberry Pi HAT。 我使用的原理图非常接近 数据表建议值、可 在此处获取。 我遇到的问题是为该 Hat for Raspbian 构建正确的设备树。

我从 Raspberry Pi HAT 开始、具有一个 单路 TAS5805M DAC 以及 该主题中的驱动器实现。  我做了几个调整,使它构建为最新的内核版本 和设备树 , 可以 在这里找到 它运行得很好!

现在、我正在尝试添加一个 但无法使其正常工作。  我得到的最接近的是这个旋转的设备树 主 DAC 使用 TAS5805M 驱动器、它可按预期播放音频。

/dts-v1/;
/plugin/;

/ {
    compatible = "brcm,bcm2835";

    fragment@0 {
        target = <&i2s>;
        __overlay__ {
            status = "okay";
        };
    };

    fragment@1 {
        target = <&i2c1>;
        __overlay__ {
            status = "okay";
            clock-frequency = <400000>;
            #address-cells = <1>;
            #size-cells = <0>;

            tas5805m_master: tas5805m@2e {
                #sound-dai-cells = <0>;
                compatible = "ti,tas5805m";
                reg = <0x2e>;
                pvdd-supply = <&vdd_3v3_reg>;
                pdn-gpios = <&gpio 4 0>;
                ti,dsp-config-name = "2.0_basic";
                sound-name-prefix = "Main";
            };

            tas5805m_slave: tas5805m@2f {
                #sound-dai-cells = <0>;
                compatible = "ti,tas5805m";
                reg = <0x2f>;
                pvdd-supply = <&vdd_3v3_reg>;
                pdn-gpios = <&gpio 5 0>;
                ti,dsp-config-name = "1.0_basic";
                sound-name-prefix = "Woofer";
            };
        };
    };

    fragment@2 {
        target = <&sound>;
        __overlay__ {
            status = "okay";
            compatible = "simple-audio-card";
            label = "Louder-Raspberry-2X";
            simple-audio-card,widgets =
                "Speaker", "Speaker";
            simple-audio-card,routing =
                "Speaker", "Main OUTA",
                "Speaker", "Main OUTB";
                // "Speaker", "Woofer OUTA",
                // "Speaker", "Woofer OUTB";
            simple-audio-card,dai-link {
                format = "i2s";
                bitclock-master = <&dailink_master>;
                frame-master = <&dailink_master>;
                dailink_master: simple-audio-card,cpu {
                    sound-dai = <&i2s>;
                    dai-tdm-slot-num = <2>;
                    dai-tdm-slot-width = <32>;
                };
                codec@0 {
                    sound-dai = <&tas5805m_master>;
                };
                // codec@1 {
                //     sound-dai = <&tas5805m_slave>;
                // };
            };
        };
    };
};

但只要我注释掉 codec@1 该段和相应的 routing 段、就会在初始化时报告错误

Apr 15 17:51:25 lab-louder-pi-04 kernel:  tas5805m-amplifier-tas5805m-amplifier: substream tas5805m-amplifier-tas5805m-amplifier has no playback, no capture
Apr 15 17:51:25 lab-louder-pi-04 kernel: asoc-simple-card soc:sound: ASoC: can't create pcm tas5805m-amplifier-tas5805m-amplifier :-22
Apr 15 17:51:25 lab-louder-pi-04 kernel: asoc-simple-card: probe of soc:sound failed with error -22
我希望您可能会看到我的做法有误、
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这里是有问题的器件(只是为了稍微展示一下)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢您使用 TAS5805。 请使用此驱动程序。  lpaa-android-drivers/tasdevice-linux-driver - Unnamed repository;编辑此文件"description"以命名存储库。 此链接中还包含驱动程序集成指南、以及如何定义两个 tas5805m、regbin 工具等

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    只是为了确认我在理解代码方面的初始步骤是否正确

    -这是使用最新内核为 BeagleBone 设备实现多个 TAS*设备的驱动程序(假设移植到 Raspberry Pi 足够简单)

    -驱动程序在一条总线上处理多个 I2C 设备

    - DSP 配置应以.bin 文件的形式提供,该文件由[Windows only] Regbin 工具生成,而它又由 JSON 配置提供,可以手动输入或从 PPC 工具导入为.cfg 文件。

    -提供的说明允许它将其作为完整内核构建的一部分进行构建,但不能作为一个独立的内核模块(这是我目前正在做的,因为我的目标是将其集成到库存树莓映像中)

    您能否确认本手册是否应包含附有实际示例的附件? 因为对我来说,它们都不可导出,因此没有太大的价值

    您是否计划在将来将此代码推入上游 Linux 内核代码?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我们有一个与 Linux 主线类似的上游代码、器件是 TAS2781。 TAS2781比 TAS5805m 更复杂、不考虑此架构。

    TASDEVICE 驱动程序只是此架构的入门级版本。

    https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/sound/soc codecs/tas2781-i2c.c? h=v6.15-rc2

    e2e.ti.com/.../am335x_2D00_boneblack_2D00_hdmi.dtsi

    还有一点、此驱动程序可以支持不同 i2c 总线上的器件。 具体请参阅 " 附录 V |如何某些特殊情况设置 DTS "(在指南中)

    享受 tasdevice 驱动程序、祝您好运。