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.

[参考译文] TDA4VM:串行器/解串器的寄存器偏移

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1177955/tda4vm-register-offset-for-serdes

器件型号:TDA4VM

你(们)好  

我正在 TDA4VMXEVM 上的 PCIe0上工作。 同时浏览该主题: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1004565/faq-tda4vm-tda4vm-dra829v-routing-pcie-reference-clock-externally?tisearch=e2e-sitesearch&keymatch=routing%20refclk%20externally

我可以看到一个补丁: /cfs-file/__key/communityserver-discussions-components-files/791/0001_2D00_route_2D00_clock_2D00_externally.patch

您能否确认寄存器偏移量

>>静态常量结构 reg_field cmn_plllc_clk1outdiv = REG_field (Sierra CMN_PLLLC_CLK1_PREG、0、6);
它是地址为0x05000098的寄存器"CMN_PLLLC_CLK1_PREG__CMN_PLLLC_LOCK_CNTTHRESH_PRG"
"CMN_PLLLC_LOCK_CNTTHRESH_PRG"是12位字段、但 REG_Field 字段描述了0-6位。 请确认。

>>静态常量结构 reg_field cmn_plllc_clk1_en = REG_field (Sierra CMN_PLLLC_CLK1_PREG、12、12);
它是地址为0x05000098的寄存器"CMN_PLLLC_CLK1_PREG__CMN_PLLLC_LOCK_CNTTHRESH_PRG"
"CMN_PLLLC_LOCK_CNTTHRESH_PRG"是12位字段、但 REG_Field 字段描述了12位。 请确认。


>>静态常量结构 reg_field phy_PMA_CMN_ctrl_rcv_out_en = REG_field (PHY_PMA_CMN_CTRL1、6、7);
它是地址为0x0505E000的寄存器"PHY_PMA_CMN_CTRL2_PHY_PMA_CMN_CTRL1"。 请确认。

>>静态常量结构 reg_field phy_pll_cfg_1 = REG_field (Sierra PHY_PLL_CFG、1、1);
地址为0x0500C01C 的寄存器"PHY_AUTO_CFG_CTRL_PHY_PLL_CFG"。 请确认。

>>静态常量结构 reg_field pllctrl_lock = REG_field (Sierra PLLCTRL_STATUS_PREG、0、0);//第3872页、待办事项
它是具有地址0x05004088 +(j * 0x400)(其中 j = 0至1)的寄存器"PLLLNC_STATUS_PREG____PLLCTRL_STATUS_PREG_j"

此致  

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

    地址:

    串行器/解串器寄存器采用本机形式、为16位宽。 但在 TRM 中将两个相邻的寄存器组合在一起、因为 TRM 中的所有寄存器都定义为32位宽。 以您提出的第一个问题为例、 PHY_PMA_CMN_CTRL1是 TRM 寄存器 CMN_PLLLC_CLK1_PRG_CMN_PLLLC_LOCK_CNTTHRESH_PREG 的前半部分、正确的 TRM 字段说明 应为:

    CMN_PLLLC_CLK1_PRG_CMN_PLLLC_LOCK_CNTTHRESH_PRG[CMN_PLLLC_CLK1OUTDIV_PRG]

    驱动程序代码将这些"半"寄存器转换为正确的 SOC 地址。  

    我看到你的问题的其余部分是由同一个问题引起的。 因此不会逐一回答。 如果您仍有疑问、请告诉我。  

    Jian

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

    感谢 Jian 的及时回应。 它真的很有帮助。 更新了 PCIe0/SerDes0的补丁(请注意、我们不使用 Linux)

    temp32 = READ32 (0x05000000 + 0xC01C);// PHY_AUTO_CFG_CTRL_PHY_PLL_CFG
    temp32 |=(1<<1);// PHY 配置为使用 PLL LC 和 LC1
    WRITE32 (0x05000000+ 0xC01C、temp32);  

    //WRITE32 (0x0505E000、3<<6);// PCIe0/SerDes0不需要;仅适用于 SERDES_10G0

    //根据 Jian 评论: e2e.ti.com/.../3348028

    temp32 = READ32 (0x05000000+ 0xe000);// PHY_PMA_CMN_CTRL
    temp32 |=(1<<6);//驱动 CMN_REFCLK_rcv_out_en PMA 输入
    WRITE32 (0x05000000+ 0xe000、temp32);  

    temp32 = READ32 (0x05000098);//CMN_PLLLC_CLK1_PREG_CMN_PLLLC_LOCK_CNTTHRESH_PREG
    temp32 |=((1<<28)|(0x2e<16));
    WRITE32 (0x05000098、temp32);

    WRITE32 (0x00118090、0x01000000);// CTRLMMR_ACSPIE0_CTRL  
    WRITE32 (0x00105008、0x68EF3490);// CTRLMMR_lock1_KICK0  
    WRITE32 (0x0010500C、0xD172BC5A);// CTRLMMR_lock1_KICK1  

    WRITE32 (0x00108070、0x00000100);// CTRLMMR_PCIe_REFCLK0_CLKSEL

    您能确认粗体部分吗?

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

    Haq、  

    您无需设置0x0500e000寄存器。 位6和位7启用 CMN_REFCLK_n 输出、与您的情况无关。  

    Jian

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

    感谢 Jian 的回应。 谢谢  

    这可以解决我的问题。  

    与 TRM 相关的问题:

    我在 TRM 中看不到"SERDES_LANECTL0"寄存器的"P0_standard_mode"描述。 您能否提供这些位的详细信息、或者您能否确认该值(对于 TDA4VMXEVM 电路板上的 PCIe0 - X1通道-我已设置值2)。  

    供参考:我已设置 CTRLMMR_PCIE0_CTRL = 0x82 (PCIe0根复合体、1通道和 Gen3)

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

    尊敬的 Jian:  

    您是否有时间了解上述问题?  

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

    Haq、  

    我已经在 您创建的另一个线程中回答了有关 P0_standard_mode 的问题:

    (8) J721EXSOMXEVM:PCIe 节点-处理器论坛-处理器- TI E2E 支持论坛中缺少引脚控制 DTS 属性

    我还检查了电路板、这些位应保留为0。  

    此致

    Jian

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

    尊敬的 Jian:  

    感谢您在另一个线程中提供有关"P0_standard_mode"的信息。  

    但我无法理解其余的评论>>> 、并且我也检查了电路板、这些位应保留为0。  

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

    Haq、  

    在另一个线程中、我查找到:

      P0_standard_mode 在我们的文档中、它被定义为" Cadence 指定的标准模式"。

    因此、如果 SERDES 需要支持 Cadence 定义的任何原始模式、则怀疑使用了该字段。 由于我无法获得 Cadence 模式的实际定义、我检查了我的工作 EVM、并确认这些位应保留为默认值、不可编程。  

    此致

    Jian

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

    尊敬的 Jian:  

    我可以在 执行 lspci 命令后看到(使用 devmem2)这些位(P0_standard_mode)的值3 (等于 lane mode_Gen4 -这不是默认值或复位值)。 "wiz_mode_select"函数也会确认该值。  

    谢谢。