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.

[参考译文] Linux/DRA712:McASP 器件树时钟属性

Guru**** 2589245 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/636838/linux-dra712-mcasp-device-tree-clock-properties

器件型号:DRA712

工具/软件:Linux

团队

我们正在尝试弄清楚如何在 McASP 器件树节点中使用时钟属性。

我们从 davinci-mcasp-audio.txt 中了解到 fck_parent 属性用于将时钟父级分配给 MCASPx、但从 EVM DTS (dra7.dtsi、dra71-EVM-common.dtsi)中我们看到使用了分配的时钟和分配的时钟父级属性。

通过分析 Davinci-McASP/c (k 4.4.45)、我们看到时钟是由 McASP_reparent_fck 获取的、后者与 fck_parent 属性相关。

 您能不能帮助我们了解如何使用 时钟属性和/或 McASP 驱动程序在何处获取时钟属性。

提前感谢

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

    我已将您的问题转交给 McASP 专家。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可以使用"Assigned-Clocks"属性以更通用的方式初始化与给定 McASP 相关的不同时钟。 "fck_parent"属性将仅负责重新分析 McASP 实例的功能时钟、这是由 arch/arm/mach-OMAP2/omap_hwmod_7xx_data.c 中的 hwmod 条目确定的(请参阅 McASP 的 main_clk 字段)。

    McASP 驱动程序仅处理"fck_parent"属性。 "Assigned-Clocks"property 由时钟框架处理。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的回答。

    深度诊断对于 DRA72-EVM (dra72-EVM-common.dtsi)、我们从中了解到

    mcasp3{.m&mcasp3}
       #sound-di-cells =<0>;
       分配的时钟=<&mcasp3_ahclkx_mux>;
       分配的时钟父级=<&ATL_clkin2_ck>;

    (笑声)
    };

    mcasp3使用 ahclkx_mux 作为参考时钟、将 atl_clk 作为源。

    从 DRA71x SR2.0的时钟树工具中、我们了解到 ATL_clk2连接到 ATL_clk2_pin。 它与 EVM CPU_Schematic 匹配(第3页)。 该引脚是输出、因此我们了解它不能是 mcasp3的 clk 基准。 我们缺少任何东西吗?

    另一方面、atl_clkin2_ck 器件树节点使用 atl_gfclk_mux 作为时钟源、因此它不会被绑定到 atl_clk_pin?

       atl_clkin2_ck:atl_clkin2_ck{
          #clock-cells =<0>;
          兼容="ti、dra7-atl-clock";
          时钟=<&ATL_gfclk_mux>;  
       };                                                     

      并且 atl_gfclk_mux 将"时钟"作为源、但我们找不到任何节点对其进行配置                                                        

       atl_gfclk_mux:atl_gfclk_mux{
          #clock-cells =<0>;
          兼容="ti、mux-clock";
          时钟=<&L3_iclk_div>、<&DPLL_AE_M2_ck>、<&ATL_DPLL_clk_mux>;
          TI、bit-shift =<26>;
          reg =<0x0c00>;
       };

    您能否帮助我们了解 mcpas3使用的时钟源及其配置位置?

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

    Christian、

    ATL 时钟(atl_clkin2_ck)路由到 McASP AHCLKX (用于 BCLK/FSYNC 生成)以及外部引脚 atl_clk2_pin (连接到 EVM 板中的 aic3106编解码器 MCLK)。

    atl_gfclk 正在重新分析到 dra72-EVM-common.dtsi 文件中的 DPLL_Abe_m2_ck 时钟:

    &ATL{
    分配时钟=<&Abe_DPLL_sys_clk_mux>、
    <&ATL_gfclk_mux>、
    <&DPLL_Abe_ck>、
    <&DPLL_Abe_M2x2_ck>、
    <&clk_clk1_atl>、
    &ATL_clkin2_ck>;
    分配的时钟父级=<&SYS_clk2>、<&DPLL_AE_M2_ck>;
    分配的时钟速率=<0>、<0>、 <180633600>、<361267200>、
    <11289600>、<11289600>;
    
    状态="确定";
    
    atl2{
    BWS = ;
    AWS = ;
    };
    }; 

    总之、配置的 McASP3时钟树如下所示:(Abe DPLL)-> DPLL_Abe_m2 -> atl_gfclk_mux ->(ATL 模块)-> atl_clk2_ck -> mcasp3_ahclkx_mux ->(McASP AHCLKX)

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

    我们必须深入了解 McASP 时钟树、因为在我们的定制设计中、不得将 OSC=19.2M 和 ATL_clk2_pin 用于计时。

    通过 DRA71x SR2.0和 TRF 的时钟树工具(CTT)、我们了解到 DPLL_ABE 提供了 DPLL_ABE_CLKOUT_M2=PER_ABE_X1_GFCLK 和 DPLL_ABE_CLKOUTX2_M2=PER_ABE_X2_CLK。
    我们没有找到 DPLL_ABE 的 EVM DT 配置、因此我们假设默认值(对于这两个值、SYS_CLK_SOURCE 为20MHz)。
    根据 CTT DPLL_ABE_CLKOUT_M2=PER_ABE_X1_GFCLK=PER_ABE_X1_DCLK、该信号结束于 MUX_CLK_CLK。 我们找不到 ATL_端点

    从 TRF 图3-35中、我们了解到 PER_ABE_X1_GFCLK 可到达 ATL_GFCLK 多路复用器、但我们没有找到它如何到达 MCASP。

    您能否提供与 DT 相关的任何信息(ATL 章节只有一页)。


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

    Christian、

    好的、从 DPLL_ABE 到 ATL 功能时钟(ATL_GFCLK)的时钟树如 DRA71x TRM 的图3-35所示。 在图3-44中、我们有从 ATL 输出(ATL_CLK0 - 3)到 McASP 高速时钟(McASP_AHCLKX)的时钟树。 缺失的部分是 ATL_GFCLK -> ATL_CLKn。 在被动状态下、我们可以将 ATL 视为分频器(您可以参阅它的时钟 驱动器)。

    TRM 中的 ATL_GFCLK 对应 DT 中的"ATL_gfclk_mux"。 TRM 中的 ATL 输出(ATL_CLK0-4)对应于 DT 中的"ATL_clkin0_ck"到"ATL_clkin3_ck"时钟。 我在上一段中提到的 ATL 驱动程序负责将 atl_gfclk_mux 连接到 atl_clkn_ck 路径。

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

    非常感谢您的帮助

    我们正在尝试设置在内部生成的 MCASP3 CLKX 和 CLKR (第一个场景图示为 ch 24.6.4.2)。 从本段和图24-114中、我们了解到时钟(Rx TX)来自 AUXCLK=MCASPI_FCLK。
    根据图3-42、我们了解到 MCASP3_AUX_GFCLK 可由 PER_ABE_X1_GFCLK、VIDEO1_CLK (/分频器)、HDMI_CLK (/分频器)派生。

    在我们的设计中、无法使用 VIDEO_CLK 和 HDMI_CLK、因此使用与 EVM 相同的配置(OSC 为20MHz)的 PER_ABE_X1_GFCLK

    我们将 DT 配置为

    &mcasp3{
    #sound-di-cells =<0>;
    分配的时钟=<&mcasp3_aux_gfclk_mux>;
    分配的时钟父项=<&per_Abe_x1_gfclk2_div>;
    
    状态="确定";
    
    运算模式=<0>;
    TDM-SLOTS =<2>;
    serial-dir =<1 2 0 0>;
    TX-num-evt =<32>;
    Rx-num-evt =<32>;
    };
    
    sound_blue:sound@0{
    compatible ="简单音频卡";
    simple-audio-card、name ="蓝牙音频板";
    simple-audio-card、widget =小部件
    "耳机"、"播放"、
    "麦克风"、"捕获";
    简单音频卡、路由=
    "回放"、"TX"、
    "捕获"、 "Rx";
    simple-audio-card、format ="I2S";
    simple-audio-card、bitclock-master =<&sound_blue_master>;
    simple-audio-card、frame-master =<&sound_blue_master>;
    simple-audio-card、bitclock-involving;
    
    sound_blue_master:simple-audio-card、CPU{
    sound-dai =<&mcasp3>;
    system-clock-frequency =<20000000>;
    };
    
    sound_blue_slave:简单音频卡、编解码器{
    sound-dai =<&codec_blue>;
    };
    }
    
    ;codec_blue:BT-SCO-PCM{
    #sound-di-cells =<0>;
    兼容="Linux,bt-SCO";
    };
    


    当我们尝试播放 pcm16b16kStereo 文件时、我们得到了

    "Davinci-McASP 48468000.McASP:太快的参考时钟..."

    更深入地了解、这应在表24-510中列出。 McASP_AHCLKXCTL 位15未被置位。 它由 Davinci_McASP_SET_SYSCLK (...、...、...、dir)设置、但是

    ¿我们如何通过器件树设置该字段?

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

    Christian、

    在卡初始化期间、DaVinci_McASP_SET_SYSCLK ()函数将由简单卡驱动程序(sound/soc/cgeneral/simple-card.c)调用。

    尝试在 CPU Dai 节点中设置"system-clock-id"和"system-clock-direction (系统时钟方向)"属性:

    #include 

    sound_blue_master:simple-audio-card、CPU{ Sound-Dai =<&mcasp3>; 系统时钟频率=<20000000>;
    系统时钟方向="in"; 系统时钟 ID = ; };

    clock id 属性值是作为 DaVinci_McASP_Set_SYSCLK ()函数的 clk_id 参数传递的值。

    J6 EVM 中的 PER_ABE_X1_GFCLK 为180.6336MHz。 它是锁定在该频率的 DPLL_ABE 的输出。 McASP 在该路径中有两个内部分频器:HCLKXDIV (高达4096分频)和 CLKXDIV (高达32分频)。 驱动器应使用 DT 中提供的信息为两个分频器计算适当的值。

    另请注意、在图24-115 (发送时钟发生器方框图)中、外部 AHCLKX 信号不在 SoC 外部、而是在 McASP 模式下。 实际上、外部 AHCLKX 可以来自 ATL 输出时钟(即图3-49所示)。

    还值得一提的是、McASP 驱动程序仅支持同步模式(RCLK 源自 XCLK)。