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.

[参考译文] AM4378:关于按器件树更改器件的初始值

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1127737/am4378-about-changing-the-initial-value-of-a-device-by-device-tree

器件型号:AM4378
主题中讨论的其他器件: TLV320AIC3104

您好!

我们的客户正在使用 AM4378使用 TI-LinuxSDK (v7.03.0.005)进行开发。
他们正在使用 AudioCodec (TLV320AIC3104)、并确认当 MCLK 为24MHz 时、他们可以使用以下 DTS 输出44.1kHz 音频数据。

< device tree >
sound0: sound0 {
              compatible = "simple-audio-card";

              simple-audio-card,name = "TEST";
              simple-audio-card,widgets = "Line", "Line Out";
              simple-audio-card,routing =
                            "Line Out",           "LLOUT",
                            "Line Out",           "RLOUT";

              simple-audio-card,format = "i2s";
              simple-audio-card,bitclock-master = <&sound0_master>;
              simple-audio-card,frame-master = <&sound0_master>;

              simple-audio-card,cpu {
                            sound-dai = <&mcasp1>;
                            system-clock-frequency = <24000000>;
              };

              sound0_master: simple-audio-card,codec {
                            sound-dai = <&tlv320aic3104>;
                            system-clock-frequency = <24000000>;
              };
};


&i2c2 {
              status = "okay";

              pinctrl-names = "default";
              pinctrl-0 = <&i2c2_pins>;

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

                            reset-gpios = <&gpio5 19 GPIO_ACTIVE_LOW>;

                            IOVDD-supply = <&dummy_vcodec_vdd>;
                            AVDD-supply = <&dummy_vcodec_vdd>;
                            DRVDD-supply = <&dummy_vcodec_vdd>;
                            DVDD-supply = <&vldo1>;
              };
};


&mcasp1 {
              #sound-dai-cells = <0>;
              pinctrl-names = "default", "sleep";
              pinctrl-0 = <&mcasp1_pins>;
              pinctrl-1 = <&mcasp1_sleep_pins>;

              status = "okay";

              op-mode = <0>;
              tdm-slots = <2>;
              serial-dir = <
                            0 1 0 0
              >;
              tx-num-evt = <32>;
              rx-num-evt = <32>;
};

他们正在尝试将 AudioCodec 的 MCLK 更改为12MHz (输出为44.1kHz)。
他们现在想通过 DeviceTree、PRCM_CM_CLKOUT1_CTRL 寄存器中的 CLKOUT1SEL0DIV (位[21-20])将 PRCM 输出设置为12MHz。
它们将分配的时钟、分配的时钟父级和分配的时钟速率添加到器件树和中的 tlv320aic3104属性
他们尝试将 OSC 时钟(24MHz)设置为 OSC 时钟(12MHz)的1/2。

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

    assigned-clocks = <&clkout1_mux_ck>;                    <-- Add
    assigned-clock-parents = <&clkout1_osc_div_ck>;         <-- Add
    assigned-clock-rates = <12000000>;                      <-- Add

    reset-gpios = <&gpio5 19 GPIO_ACTIVE_LOW>;

    IOVDD-supply = <&dummy_vcodec_vdd>;
    AVDD-supply = <&dummy_vcodec_vdd>;
    DRVDD-supply = <&dummy_vcodec_vdd>;
    DVDD-supply = <&vldo1>;
};

他们假定通过这种修改、他们可以将 PRCM_CM_CLKOUT1_CTRL 寄存器中的 CLKOUT1SEL0DIV (位[21-20])设置为 B01、但它仍保持在其默认值(B00)。
设置位置或内容是否出错?

此致、

库吉·西加塔