大家好,
我们正在开发一款基于 LX2160A Rev2 SoC 的定制电路板,其中 VSC8254 PHY 通过 eMDIO1 连接到 SoC。目前我们在 1G SGMII 模式下启动 PHY 时遇到问题。
到目前为止,我们已经通过在 DPC 文件和 Linux 内核设备树中配置固定链路,成功地在 10G XFI 模式下启动了 PHY。启动后,我们执行 NXP 提供的 mdio_cl45_write 脚本来对所需的 Clause 45 寄存器进行编程,之后链接建立并正常运行。
但是,当我们将配置切换到 1G SGMII 模式时,我们会进行以下更改:
更新 DPC 和 Linux 设备树,使其使用 SGMII 而不是 XFI。
执行 1G 对应的 Clause 45 寄存器初始化序列。
根据新配置的要求,将 SERDES 参考时钟从 125 MHz 更新为 100 MHz。
尽管做了这些更改,PHY 链路仍然无法建立。
供参考:
VSC8254 PHY 连接到 SERDES1 MAC3 和 MAC4。
我们使用 RCW 6 进行 10G XFI 配置。
我们对 1G SGMII 配置采用 RCW 4。
关于在 1G SGMII 模式下启动 PHY 是否需要任何额外的配置更改或初始化步骤,请与我们联系。
感谢您的时间和支持。
1. 请将 RCW[SRDS_PLL_REF_CLK_SEL_S1] 配置为“00”。
2. 请在 Linux 内核中配置“CONFIG_VITESSE_PHY”。
3. 在 Linux 启动 dts 文件 arch/arm64/boot/dts/freescale/fsl-lx2160a-rdb.dts 中,请修改 dpmac3 和 dpmac4 的配置,使其与下面的配置类似。
&dpmac3 {
phy-handle = <&aquantia_phy1>;
phy-connection-type = "usxgmii";
managed = "带内状态";
};
aquantia_phy1:以太网物理层@4 {
/* AQR107 PHY */
兼容 = "ethernet-phy-ieee802.3-c45";
interrupts-extended = <&extirq 2 IRQ_TYPE_LEVEL_LOW>;
reg = <0x4>;
};
修改为:
&dpmac3 {
phy-handle = <&sgmii_phy1>;
phy-connection-type = "sgmii";
managed = "带内状态";
};
sgmii_phy1:以太网物理层@xx{
reg = <0xxx>;//指定与dpmac3相关的MDIO PHY地址
};
4. 请按如下方式修改 dtc 文件 dpc-usxgmii.dts。
板信息 {
港口 {
mac@3 {
link_type = "MAC_LINK_TYPE_PHY";
enet_if = "USXGMII";
};
mac@4 {
link_type = "MAC_LINK_TYPE_PHY";
enet_if = "USXGMII";
};
修改为:
板信息 {
港口 {
mac@3 {
link_type = "MAC_LINK_TYPE_PHY";
};
mac@4 {
link_type = "MAC_LINK_TYPE_PHY";
};