主题:DRA821和 SysConfig 中讨论的其他器件
工具/软件:
Champ、
我的客户将把 RGMII 2、RGMII 3 和 RGMII 4 用于 DRA821 上的三个以太网端口、因为只有两个 SERDES 和 PCIe、而 USB 则需要其中两个。
客户希望获得补丁来在 DRA821 EVM 上启用 RGMII 2、并以 GESI 板作为基准、以启用所有三个 RGMII 端口。
Br、Rich
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.
工具/软件:
Champ、
我的客户将把 RGMII 2、RGMII 3 和 RGMII 4 用于 DRA821 上的三个以太网端口、因为只有两个 SERDES 和 PCIe、而 USB 则需要其中两个。
客户希望获得补丁来在 DRA821 EVM 上启用 RGMII 2、并以 GESI 板作为基准、以启用所有三个 RGMII 端口。
Br、Rich
Sudheer,
感谢您发送编修。
有一个与 PIN MUX 配置和 SysConfig 工具相关的 e2e 我想提请大家注意、因为您在创建补丁时可能有点感触。
这也是客户的反馈、当前 SDK 10.0 与 SysConfig 工具不一致。
供您参考。
Br、Rich
您好 Rich、
我已启用 Linux 的 RGMII2 并能够与远程器件进行通信。
请查找以下日志和代码参考、以通过本地 Linux Diver 启用 RGMII。
k3-j7200-evm-quad-port-eth-exp.dtso 文件:
e2e.ti.com/.../k3_2D00_j7200_2D00_evm_2D00_quad_2D00_port_2D00_eth_2D00_exp.dtso
k3-j7200-common-proc-board.dts 文件:
测试日志:
从您的参考中 Ping 测试日志
注意:
由于 TI EVM 仅支持 RGMII2、因此高于 Dtso 仅配置 RGMII2 引脚、但用于参考为所有 CPSW 端口提供的配置信息。
此致、
Sudheer
Sudheer,
DTS 用于在 GESI 板上启用 RGMII2。
感谢您努力验证和创建它。
您是否在 SDK 和 SysConfig 工具中找到了定义不对齐问题? 我可以对此表示赞扬吗?
Br、Rich
您好、
[报价 userid=“9853" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1501242/dra821u-linux-configuration-for-dra821u-with-gesi-rgmii2/5803314 #5803314“]DTS 用于在 GESI 板上启用 RGMII2。
感谢您努力验证和创建它。
[/报价]感谢您的确认。
[报价 userid=“9853" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1501242/dra821u-linux-configuration-for-dra821u-with-gesi-rgmii2/5803314 #5803314“]您是否在 SDK 和 SysConfig 工具中找到了定义不对齐问题? 我可以对此表示赞扬吗?
[/报价]如上面的 E2E 中所述 、它基于“k3-j7200-mcu-wakeup.dtsi"中“中引脚多路复用节点定义的偏移地址。
我添加的补丁还指向多个引脚多路复用节点、用于将 CPSW 端口启用到 RGMII、每个节点都有一个基于“k3-j7200-mcu-wakeup.dtsi"文件“文件中地址的偏移地址。
此致、
Sudheer
Sudheer,
是的、我查看 DTS、您使用的定义仍然是“J721E_IOPAD",“,因此、因此您遵循 SDK 10 中的原始设置。
但是、SysConfig 生成引脚设置 DTS 将使用定义“J7200_IOPAD",“,该、该定义将无法直接在 SDK 10 中使用。
您建议客户使用当前 SysConfig 工具、因为客户将依赖 SysConfig 生成与当前 SDK 10 不一致的 DTSI。
e2e.ti.com/.../devicetree-_2800_1_2900_.dtsi
Br、Rich
您好、
[引用 userid=“9853" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1501242/dra821u-linux-configuration-for-dra821u-with-gesi-rgmii2/5803408 #5803408“]但是、SysConfig 生成引脚设置 DTS 将使用定义“J7200_IOPAD",“,该、该定义将无法直接在 SDK 10 中使用。
您建议客户使用当前 SysConfig 工具、因为客户将依赖 SysConfig 生成与当前 SDK 10 不一致的 DTSI。
[/报价]是、SDK 仅定义了 J721E_IOPAD。
他们可以通过参考 DTS 文件中的现有 IOPAD 配置来更改名称。
会引起开发团队的注意。 到目前为止、客户可以修改名称并使用。 无论如何、 客户需要根据 E2E 中解释的基地址定义的引脚多路复用节点更改偏移、如下所述。
https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1496179/dra821u-dra821u-j7200-mcu_mdio0-pin-mux-assignment/5758892#5758892
您好、
[报价 userid=“9853" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1501242/dra821u-linux-configuration-for-dra821u-with-gesi-rgmii2/5807999 #5807999“]这看起来很可能是未设置 PHY 中的时钟延迟。
您是否也可以使用 iPerf 进行测试?
[/报价]我一边检查一下。
您能否请客户检查 ping、以及 Ping 统计信息 测量值。
此致、
Sudheer
您好、
如何 更新 ENET CTRL 寄存器??
我们可以使用 devmem2 命令来写入 ENET CTRL 寄存器。
要从器件树中配置 RGMII 延迟、请查看以下常见问题解答中提供的补丁。
https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1319345/faq-tda4vm-how-to-configure-rgmii-clock-delay-on-j7-devices
此致、
Sudheer
你(们)好
修补程序。 但如果仍然以 1G 速度不工作。
我还有一个新问题:如何 在 uboot 中启用该 RGMII 端口???
diff --git a/arch/arm64/boot/dts/ti/k3-j7200-moxa-uc-8600a.dts b/arch/arm64/boot/dts/ti/k3-j7200-moxa-uc-8600a.dts index 7a3a9188c..d9bbe3ddc 100644 --- a/arch/arm64/boot/dts/ti/k3-j7200-moxa-uc-8600a.dts +++ b/arch/arm64/boot/dts/ti/k3-j7200-moxa-uc-8600a.dts @@ -433,6 +433,7 @@ cpsw5g_phy0: ethernet-phy@0 { reg = <0>; ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>; + ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>; ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>; ti,min-output-impedance; @@ -457,7 +458,7 @@ &cpsw0_port1 { status = "disabled"; phy-handle = <&cpsw5g_phy1>; - phy-mode = "rgmii-rxid"; + phy-mode = "rgmii-id"; mac-address = [00 00 00 00 00 00]; phys = <&cpsw0_phy_gmii_sel 1>; }; diff --git a/drivers/phy/ti/phy-gmii-sel.c b/drivers/phy/ti/phy-gmii-sel.c index 81dd1c344..e4965439d 100644 --- a/drivers/phy/ti/phy-gmii-sel.c +++ b/drivers/phy/ti/phy-gmii-sel.c @@ -210,20 +210,29 @@ struct phy_gmii_sel_soc_data phy_gmii_sel_soc_dm814 = { static const struct reg_field phy_gmii_sel_fields_am654[][PHY_GMII_SEL_LAST] = { - { [PHY_GMII_SEL_PORT_MODE] = REG_FIELD(0x0, 0, 2), }, - { [PHY_GMII_SEL_PORT_MODE] = REG_FIELD(0x4, 0, 2), }, - { [PHY_GMII_SEL_PORT_MODE] = REG_FIELD(0x8, 0, 2), }, - { [PHY_GMII_SEL_PORT_MODE] = REG_FIELD(0xC, 0, 2), }, - { [PHY_GMII_SEL_PORT_MODE] = REG_FIELD(0x10, 0, 2), }, - { [PHY_GMII_SEL_PORT_MODE] = REG_FIELD(0x14, 0, 2), }, - { [PHY_GMII_SEL_PORT_MODE] = REG_FIELD(0x18, 0, 2), }, - { [PHY_GMII_SEL_PORT_MODE] = REG_FIELD(0x1C, 0, 2), }, + { [PHY_GMII_SEL_PORT_MODE] = REG_FIELD(0x0, 0, 2), + [PHY_GMII_SEL_RGMII_ID_MODE] = REG_FIELD(0x0, 4, 4), }, + { [PHY_GMII_SEL_PORT_MODE] = REG_FIELD(0x4, 0, 2), + [PHY_GMII_SEL_RGMII_ID_MODE] = REG_FIELD(0x4, 4, 4), }, + { [PHY_GMII_SEL_PORT_MODE] = REG_FIELD(0x8, 0, 2), + [PHY_GMII_SEL_RGMII_ID_MODE] = REG_FIELD(0x8, 4, 4), }, + { [PHY_GMII_SEL_PORT_MODE] = REG_FIELD(0xC, 0, 2), + [PHY_GMII_SEL_RGMII_ID_MODE] = REG_FIELD(0xC, 4, 4), }, + { [PHY_GMII_SEL_PORT_MODE] = REG_FIELD(0x10, 0, 2), + [PHY_GMII_SEL_RGMII_ID_MODE] = REG_FIELD(0x10, 4, 4), }, + { [PHY_GMII_SEL_PORT_MODE] = REG_FIELD(0x14, 0, 2), + [PHY_GMII_SEL_RGMII_ID_MODE] = REG_FIELD(0x14, 4, 4), }, + { [PHY_GMII_SEL_PORT_MODE] = REG_FIELD(0x18, 0, 2), + [PHY_GMII_SEL_RGMII_ID_MODE] = REG_FIELD(0x18, 4, 4), }, + { [PHY_GMII_SEL_PORT_MODE] = REG_FIELD(0x1C, 0, 2), + [PHY_GMII_SEL_RGMII_ID_MODE] = REG_FIELD(0x1C, 4, 4), }, }; static const struct phy_gmii_sel_soc_data phy_gmii_sel_soc_am654 = { .use_of_data = true, .regfields = phy_gmii_sel_fields_am654, + .features = BIT(PHY_GMII_SEL_RGMII_ID_MODE), }; static const @@ -231,6 +240,7 @@ struct phy_gmii_sel_soc_data phy_gmii_sel_cpsw5g_soc_j7200 = { .use_of_data = true, .regfields = phy_gmii_sel_fields_am654, .extra_modes = BIT(PHY_INTERFACE_MODE_QSGMII) | BIT(PHY_INTERFACE_MODE_SGMII), + .features = BIT(PHY_GMII_SEL_RGMII_ID_MODE), .num_ports = 4, .num_qsgmii_main_ports = 1, }; @@ -240,6 +250,7 @@ struct phy_gmii_sel_soc_data phy_gmii_sel_cpsw9g_soc_j721e = { .use_of_data = true, .regfields = phy_gmii_sel_fields_am654, .extra_modes = BIT(PHY_INTERFACE_MODE_QSGMII) | BIT(PHY_INTERFACE_MODE_SGMII), + .features = BIT(PHY_GMII_SEL_RGMII_ID_MODE), .num_ports = 8, .num_qsgmii_main_ports = 2, }; @@ -251,6 +262,7 @@ struct phy_gmii_sel_soc_data phy_gmii_sel_cpsw9g_soc_j784s4 = { .extra_modes = BIT(PHY_INTERFACE_MODE_QSGMII) | BIT(PHY_INTERFACE_MODE_SGMII) | BIT(PHY_INTERFACE_MODE_USXGMII), .num_ports = 8, + .features = BIT(PHY_GMII_SEL_RGMII_ID_MODE), .num_qsgmii_main_ports = 2, };
您好、
我有一个新问题、如何 在 uboot 中启用此 RGMII 端口???
请创建一个新线程以从 U-Boot 启用 RGMII。
对于 1GHz iperf 测试将失败、您是否打算禁用 MAC 侧的 TX 和 RX 延迟、并且无需开启以太网 PHY 侧的 TX 和 RX 延迟? [/报价]MAC 不支持 Rx 延迟。
我建议从 MAC 禁用 Tx 和 Rx、并在 PHY 侧以所需的延迟启用。
客户是在 TI EVM 还是定制电路板上进行检查?[/quote]您仍然看到 ping 工作正常、但 iPerf 测试将失败吗? [/报价]让我在我这边确认一下。
此致、
Sudheer
你(们)好
[引述 userid=“540868" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1501242/dra821u-linux-configuration-for-dra821u-with-gesi-rgmii2/5861011 #5861011“]你有没有这样的发现吗?
在调整 PHY 延迟后、我需要检查 1Gbps 的 iperf。
[/报价]我已经在 PHY 侧进行了延迟调整测试、并从 MAC 侧禁用了延迟、iprf 成功地以 1Gbps 运行。
更多信息、请参阅以下捕获内容。
用于参考的器件树配置。
此致、
Sudheer