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.

[参考译文] TLV320AIC3100:TLV320AIC31XX-LINUX 驱动程序、设置麦克风偏置时出现问题、Raspberry Pi 4

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1401011/tlv320aic3100-tlv320aic31xx-linux-driver-issues-setting-up-mic-bias-raspberry-pi-4

器件型号:TLV320AIC3100

工具与软件:

我们不能通过音频控件向 MICBIAS 发送电压、我们有音频工作、但我们无法从 alsamixer 打开麦克风偏置。 我们可以手动设置微偏置的寄存器、以使麦克风部分工作、但它会随机关闭、从而使麦克风断电。

我们是否需要自定义声卡驱动程序或对此 DTS 文件进行编辑以帮助解决麦克风偏置问题?

/dts-v1/;
/plugin/;

/ {
        compatible = "brcm,bcm2835";

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

        fragment@1 {
                target-path="/";
                __overlay__ {
                        tlv320aic3x_mclk: tlv320aic3x_mclk {
                                compatible = "fixed-clock";
                                #clock-cells = <0>;
                                clock-frequency = <12000000>;
                        };
                };
        };

        fragment@2 {
                target-path = "/";
                __overlay__ {
                        codec_1v8_reg: codec-1v8-reg {
                                compatible = "regulator-fixed";
                                regulator-name = "tlv320aic3100_1v8";
                                regulator-min-microvolt = <1800000>;
                                regulator-max-microvolt = <1800000>;
                                regulator-always-on;
                        };
                };
        };

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

                        tlv320aic3x: tlv320aic3x@18{
                                #sound-dai-cells = <0>;
                                compatible = "ti,tlv320aic3100";
                                reg = <0x18>;

                                HPVDD-supply = <&vdd_3v3_reg>;
                                SPRVDD-supply = <&vdd_3v3_reg>;
                                SPLVDD-supply = <&vdd_3v3_reg>;
                                AVDD-supply = <&vdd_3v3_reg>;
                                IOVDD-supply = <&vdd_3v3_reg>;
                                DVDD-supply = <&codec_1v8_reg>;
                                micbias-supply = <&vdd_3v3_reg>;

                                ai31xx-micbias-vg = <0x3>;

                                status = "okay";
                        };
                };
        };

        fragment@4 {
                target = <&sound>;
                __overlay__ {
                        compatible = "simple-audio-card";
                        simple-audio-card,name = "tlv320aic3100-soundcard";
                        simple-audio-card,format = "i2s";
                        simple-audio-card,frame-master = <&cpu_dai>;
                        simple-audio-card,bitclock-master = <&cpu_dai>;
                        status = "okay";

                        cpu_dai: simple-audio-card,cpu {
                                sound-dai = <&i2s>;
                        };

                        simple-audio-card,codec {
                                sound-dai = <&tlv320aic3x>;
                                clocks = <&tlv320aic3x_mclk>;
                                clock-names = "mclk";
                        };
                };
        };
};


我们希望在设置 MIC 偏置时获得任何帮助和指导。

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

    您好!

    只是为了确保您的线路"ai31xx-micbAS-vg =<0x3>;"没有打开麦克风偏置? 已尝试将其设置为" "(如内核文档(https://www.kernel.org/doc/Documentation/devicetree/bindings/sound/tlv320aic31xx.txt)?)中所指定)还是设置为其他麦克风偏置选项之一? 请告诉我、这是否能修复它。 鉴于编解码器中具有麦克风偏置设置、应该能够设置 MIC 偏置。

    此致!
    MIR

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

    你好、米尔!  

    是的、我们已尝试将"ai31xx-micbAS-vg =<0x3>"设置为 以及内核文档中指定的其他选项、但这样做时、我们会在编译 dtbo 文件时收到语法错误。

    sudo DTC -@-i dts -o dtb -o TLV320AIC3100.dtbo TLV320AIC319.dts
    错误:TLV320AIC319.dts:58.26-27语法错误
    致命错误:无法解析输入树

    但是、我们可以直接将其设置为绑定的值、就像将其设置为<0x3>一样、并且我们有日志语句确认 ai31xx-micbias -vg 已设置为正确的值/绑定。 我们还尝试导入正确的绑定、但也遇到了无法编译 DTS 文件的类似问题。   

    在内核代码中、我们看不到将 micbias 寄存器设置为 所选 值的任何地方。 我们可以看到用于设置寄存器的 micbias_event 函数、但是使用调试日志、我们看到该函数从未被调用、我们在 alsamixer 中没有看到用于切换 micbias 或触发 micbias_event 的任何控件。  

    我们是否可能缺少任何文件或驱动程序、我们是否有任何理由不能使用这些绑定? 我们还应该能够看到 alsamixer 中的微偏置控制吗?



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

    您好!

    该器件的 Linux 文档中提到了第四个驱动程序文件"tlv320aic31xx-micbias.h"。 我将在这里附上它、它只定义了可能有用的偏置值。 如果 micbias 定义从未被调用、您甚至可以复制这些定义并将其放在 tlv320aic31xx.c 文件的顶部。  

    它看起来像是驱动程序 c 文件中的 mic_bias_event 在"snd_soc_dapm_supply"调用中引用。 我不确定这意味着什么、但它可能会对您有所帮助。

    我还将附加我版本的 c 和 h 文件、看看这是否有用。 我想我的版本与官方 Linux 内核版本略有不同。  

    如果以上方法都不起作用、您可以尝试直接使用 I2C 设置微偏置。

    如果您需要更多帮助、请告诉我。

    此致!
    MIR

    e2e.ti.com/.../8637.tlv320aic31xx.ce2e.ti.com/.../tlv320aic31xx.h

    e2e.ti.com/.../tlv320aic31xx_2D00_micbias.h