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.

[参考译文] DP83867IR:DP83867以太网100Base-T SI 问题

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1384059/dp83867ir-dp83867-ethernet-100base-t-si-issue

器件型号:DP83867IR

工具与软件:

尊敬的 TI 专家:

我们基于 TI 有一个100Base-T 以太网 SI 测试 DP83867IR . 并且"差分输出电压 Pos"出现故障。

由于机械限制、我们必须为以太网信号布线较长的迹线。  

阅读文档  《DP83867疑难解答指南》、 我从 TI 文档中找到有关合规性测试的一些建议" DP83867疑难解答指南 "。

它说可以调整寄存器来改进测试。

将寄存器0x00A0的值从0x606更改为0x609后  、以太网兼容测试通过。

问题1:

但在读取 dp83867.c 的 Linux 器件驱动程序[ https://github.com/TexasInstruments/ti-ethernet-software/blob/main/linux_drivers/dp83867.c]后、我发现 该驱动程序不支持设置寄存器0xA0。 我能否在驱动程序中添加配置寄存器0xA0的功能? 如果是、我应该在何时设置此值、在 Phy 复位之后和 Phy 重新启动之前或在其他步骤之后?

问题2:

从中删除  DP83867IR  数据表中、据说 寄存器0x00A0的默认值由 TRIM 设置、 您能告诉我 TRIM 是什么意思吗?

问题3:

我们是否可以修改  I/O 配置(地址0x0170)以使"差分输出电压 Pos"测试通过?

谢谢

此致

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

    你好、雪!

    我很高兴您能够使用我们的故障排除指南解决您的合规性问题! 请在下面找到我的回复。

    问题1:

    最好的地方是 dp83867_config_init()函数。 这是一个长函数、其中主要确认和配置 MAC 接口、但可以在函数末尾设置寄存器写入。 加载驱动程序后、此函数将在第一个要运行的函数中。

    作为测试:

    • 在此函数中添加寄存器写入、启动电路板、并在终端上读取0xA0以确认值是否为您设置的值。
    • 如果上一步成功、请从终端更改0xA0的值
    • 运行  ifconfig ethx down  和  inconfig ethx up  并再次从终端读取 Reg 0xA0
      • 这将重新加载驱动程序、预期的输出应该是您在驱动程序中设置的输出

    问题2:

    在制造过程中、A0有所需的设置、但每个器件之间的"调节旋钮"是不同的。 这意味着、两个不同的器件可以位于同一设置上(在本例中、该设置是寄存器值)、并且具有不同的输出。 我们希望输出相同、因此裸片"已修整"、这意味着不同器件的默认值可能不同。  在线搜索"trim parameters"了解更多信息。

    问题3:

    寄存器0x170控制 CLKOUT 引脚的输出、这对 PHY 的 MDI 部分没有影响。

    此致、

    Alvaro

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

    你好、Alvaro

    非常感谢您的帮助、我尝试修改了 dp86837驱动程序以配置 TXG_GAINSEL_Fine 参数。 您能帮助我了解一下该贴片是否合适吗?

    ```μ A

    diff -- git a/arch/arm64/boot/dts/Freescale/imx8mp-anvet.dts b/arch/arm64/boot/dts/Freescale/imx8mp-anvet.dts
    Index efeb3a4e84b9..ca7dc8962f56 100644.
    --- a/arch/arm64/boot/dts/Freescale/imx8mp-anvet.dts
    ++ b/arch/arm64/boot/dts/Freescale/imx8mp-anvet.dts
    @@-718、6 +718、11 @@&PMIC{
    /delete-property/ interrupts;
    };

    +/*定制 ANA_LD_TXG_FINE_GAINSEL_AB */
    +&ethphy0{
    + ti、txg-gain-sel-fine =/bits/ 16 <0x0609>;
    +};
    +
    &pwm2{
    状态="正常";
    };
    diff --git a/drivers/net/phy/dp83867.c b/drivers/net/phy/dp83867.c
    索引5f08f9d38bd7..f2b1df0c2ecd 100644
    ---a/drivers/net/phy/dp83867.c.
    ++ b/drivers/net/phy/dp83867.c
    @@-44、6 + 44、7 @@μ s
    #define DP83867_STRAP_STS1 0x006E
    #define DP83867_STRAP_STS2 0x006f
    #define DP83867_RGMIIDCTL 0x0086
    +#define DP83867_ALTFGAB 0x00A0
    #define DP83867_DSP_FFE_CFG 0x012c
    #define DP83867_RXFCFG 0x0134
    #define DP83867_RXFPMD1 0x0136
    @@-153、6 + 154、9 @@μ s
    /* FLD_THR_CFG */
    #define DP83867_FLD_THR_CFG_ENERGY_LOST_THR_MASK 0x7

    +/* ALTFGAB 位*/
    +#define DP83867_ALTFGAB_MASK (GENMASK (3、0)| GENMASK (11、8))
    +
    #define DP83867_LED_COUNT 4.

    /* LED_DRV 位*/
    @@-193,6+197,8 @@ struct dp83867_private {
    bool set_clk_output;
    u32 clk_output_sel;
    bool SGMII_ref_clk_en;
    + U16 txg_gain_sel_fine;
    + bool set_txg_gain_sel;
    };

    static int dp83867_ack_interrupt (struct phy_device * phydev)
    @@-683、6 +689、14 @@静态 int dp83867_of_init (struct phy_device * phydev)
    返回-EINVAL;
    }

    +/*读取 ALTFGAB 配置、如果未设置、则保留默认值*/
    + if (!OF_PROPERTY_READ_U16 (OF_NODE、"ti、txg-gain-sel-fine"、
    +&dp83867->txg_gain_sel_fine)){
    + dp83867->set_txg_gain_sel = true;
    +} else {
    + dp83867->set_txg_gain_sel = false;
    +}
    +
    返回0;
    }
    #else
    @@-946 6 +960、12 μ s @@ int dp83867_config_init (struct phy_device * phydev)
    mask、val);
    }

    +/*如果设置了 TXG_GAINSEL_FINE、则更新 TXG_GAINSEL_FINE *
    + if (dp83867->set_txg_gain_sel){
    + phy_modify_md (phydev、DP83867_DEVADDR、DP83867_ALTFGAB
    + DP83867_ALTFGAB_MASK、dp83867->txg_gain_sel_fine);
    +}
    +
    返回0;
    }

    ```μ A

    我根据您的步骤测试了该代码、并且可以成功设置配置。

    另一个问题是:

    此芯片是否有命令或工具可在生产阶段修改0x00A0寄存器的值、以便驱动程序不需要在运行阶段修改其值?

    此致

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

    你好、雪!

    如果您能够测试代码及其运行效果、那么就可以继续使用!

    此芯片是否有在生产阶段修改0x00A0寄存器值的命令或工具、以便驱动程序在运行阶段无需修改其值?

    而不是所有寄存器访问都必须通过 MDC/MDIO 接口完成。

    此致、

    Alvaro

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

    你好、 Alvaro

    感谢您的支持!

    此致、