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.

TLV320AIC34: am62x上tdm 模式下的多codec配置问题

Part Number: TLV320AIC34

我们有两颗 tlv320aic34 编解码器连接到 AM62x 的 mcasp1 上,我们使用了这两颗编解码器的 A 部分和 B 部分,这意味着四个编解码器共用同一个 CPU DAI,它们也共用同一对 AXR0(发送)和 AXR1(接收)信号线。 我使用了 LINE2LP、LINE2LM、LINE2RP、LINE2RM 作为线路输入,使用 LEFT_LOP、LEFT_LOM、RIGHT_LOP、RIGHT_LOM 作为线路输出。 我需要同时对这四个编解码器进行播放和录音。

我的问题是,针对这种硬件配置,我是否必须创建一个新的 machine driver,还是 simple-audio-card 驱动就能适用?

我目前创建了一个新的 machine driver,配置了一个 cpu dai 和四个 codec,cpu 做主,支持 8 个槽位,每个 24 位,数据格式是 dsp_b。但播放时没有声音,虽然从编程角度看,BCLK、FCLK 和 MCASP1 输出的波形都是正确的。

我通过 amixer 将左右声道 DAC MUX 设置为 DAC_L3/R3,使 DAC 直接连接到 LINEOUT。当我播放静音的 wav 时,线路输出上出现了一个频率和幅度相对稳定的 1.18MHz 正弦波;而播放其它正常的 wav 时,输出变成了频率和幅度不断变化的正弦波。

请帮忙分析一下这个问题应该如何排查

内核版本为v6.6.32

&{/} {
    sound {
        compatible = "simple-audio-card-custom";
        simple-audio-card,name = "custom";

    #address-cells = <1>;
    #size-cells = <0>;
    simple-audio-card,widgets =
        "Line",                 "codec1 Line In",
        "Line",                 "codec1 Line Out",
        "Line",                 "codec2 Line In",
        "Line",                 "codec2 Line Out",
        "Line",                 "codec3 Line In",
        "Line",                 "codec3 Line Out",
        "Line",                 "codec4 Line In",
        "Line",                 "codec4 Line Out"; 
    simple-audio-card,routing =
        "codec1 LINE2L",               "codec1 Line In",
        "codec1 LINE2R",               "codec1 Line In",
        "codec1 Line Out",             "codec1 LLOUT",
        "codec1 Line Out",             "codec1 RLOUT",
        "codec2 LINE2L",               "codec2 Line In",
        "codec2 LINE2R",               "codec2 Line In",
        "codec2 Line Out",             "codec2 LLOUT",
        "codec2 Line Out",             "codec2 RLOUT",
        "codec3 LINE2L",               "codec3 Line In",
        "codec3 LINE2R",               "codec3 Line In",
        "codec3 Line Out",             "codec3 LLOUT",
        "codec3 Line Out",             "codec3 RLOUT",
        "codec4 LINE2L",               "codec4 Line In",
        "codec4 LINE2R",               "codec4 Line In",
        "codec4 Line Out",             "codec4 LLOUT",
        "codec4 Line Out",             "codec4 RLOUT";
    simple-audio-card,dai-link@0 {
        reg = <0>;
        format = "dsp_b";
        bitclock-master = <&cpu>;                   
        frame-master = <&cpu>;
        bitclock-inversion;
        cpu: cpu {
            mclk-fs = <384>;
            sound-dai = <&mcasp1>;
            clocks = <&audio_refclk0>;
            system-clock-direction-out;
            dai-tdm-slot-num = <8>;
            dai-tdm-slot-width = <24>;
            dai-tdm-slot-tx-mask = <1 1 1 1 1 1 1 1>;
            dai-tdm-slot-rx-mask = <1 1 1 1 1 1 1 1>;
        };
        codec_ports{
            codec: codec@0 {
                sound-dai = <&audio_codec1>;
                dai-tdm-slot-num = <8>;
                dai-tdm-slot-width = <24>;
                dai-tdm-slot-tx-mask = <1 1 0 0 0 0 0 0>;
                dai-tdm-slot-rx-mask = <1 1 0 0 0 0 0 0>;
            };
            codec1: codec@1 {
                dai-tdm-slot-num = <8>;
                dai-tdm-slot-width = <24>;
                dai-tdm-slot-tx-mask = <0 0 1 1 0 0 0 0>;
                dai-tdm-slot-rx-mask = <0 0 1 1 0 0 0 0>;
                sound-dai = <&audio_codec2>;
            };
            codec2: codec@2 {
                dai-tdm-slot-num = <8>;
                dai-tdm-slot-width = <24>;
                dai-tdm-slot-tx-mask = <0 0 0 0 1 1 0 0>;
                dai-tdm-slot-rx-mask = <0 0 0 0 1 1 0 0>;
                sound-dai = <&audio_codec3>;
            };
            codec3: codec@3 {
                dai-tdm-slot-num = <8>;
                dai-tdm-slot-width = <24>;
                dai-tdm-slot-tx-mask = <0 0 0 0 0 0 1 1>;
                dai-tdm-slot-rx-mask = <0 0 0 0 0 0 1 1>;
                sound-dai = <&audio_codec4>;
            };
        };
    };
};
};