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.
工具与软件:
您好!
SDK 版本:09.02.0.05
参考链接:
我们将 serdes2 lane2配置为 SGMII 7。
我的设备树配置:
// SPDX-License-Identifier: GPL-2.0 /** * DT Overlay for CPSW9G in QSGMII mode using J7 Quad Port ETH EXP Add-On Ethernet Card with * J7AHP board. The Add-On Ethernet Card has to be connected to ENET Expansion 1 slot on the * board. * * Product Datasheet: www.ti.com/.../spruj74.pdf * Product Link: www.ti.com/.../J721EXENETXPANEVM * * Copyright (C) 2023 Texas Instruments Incorporated - https://www.ti.com/ */ /dts-v1/; /plugin/; #include <dt-bindings/gpio/gpio.h> #include <dt-bindings/mux/ti-serdes.h> #include <dt-bindings/phy/phy-cadence.h> #include <dt-bindings/phy/phy.h> #include "k3-pinctrl.h" &{/} { aliases { ethernet1 = "/bus@100000/ethernet@c000000/ethernet-ports/port@5"; ethernet2 = "/bus@100000/ethernet@c000000/ethernet-ports/port@6"; ethernet3 = "/bus@100000/ethernet@c000000/ethernet-ports/port@7"; }; }; &main_cpsw0 { status = "okay"; }; &main_cpsw0_port7 { status = "okay"; phy-handle = <&cpsw9g_phy0>; phy-mode = "sgmii"; mac-address = [00 00 00 00 00 00]; phys = <&cpsw0_phy_gmii_sel 7>, <&serdes2_qsgmii_link>; phy-names = "mac", "serdes"; }; &main_cpsw0_mdio { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&mdio0_pins_default>; bus_freq = <1000000>; reset-gpios = <&exp2 17 GPIO_ACTIVE_LOW>; reset-post-delay-us = <120000>; #address-cells = <1>; #size-cells = <0>; cpsw9g_phy0: ethernet-phy@16 { reg = <0>; }; }; &exp2 { /* Power-up ENET1 EXPANDER PHY. */ qsgmii-line-hog { gpio-hog; gpios = <16 GPIO_ACTIVE_HIGH>; output-low; }; /* Toggle MUX2 for MDIO lines */ mux-sel-hog { gpio-hog; gpios = <13 GPIO_ACTIVE_HIGH>, <14 GPIO_ACTIVE_HIGH>, <15 GPIO_ACTIVE_HIGH>; output-high; }; }; &main_pmx0 { mdio0_pins_default: mdio0-pins-default { pinctrl-single,pins = < J784S4_IOPAD(0x05c, PIN_INPUT, 4) /* (AC36) MCASP2_AXR0.MDIO1_MDIO */ J784S4_IOPAD(0x058, PIN_INPUT, 4) /* (AE37) MCASP2_AFSX.MDIO1_MDC */ >; }; }; &serdes_ln_ctrl { idle-states = <J784S4_SERDES0_LANE0_PCIE1_LANE0>, <J784S4_SERDES0_LANE1_PCIE1_LANE1>, <J784S4_SERDES0_LANE2_IP3_UNUSED>, <J784S4_SERDES0_LANE3_USB>, <J784S4_SERDES1_LANE0_PCIE0_LANE0>, <J784S4_SERDES1_LANE1_PCIE0_LANE1>, <J784S4_SERDES1_LANE2_PCIE0_LANE2>, <J784S4_SERDES1_LANE3_PCIE0_LANE3>, <J784S4_SERDES2_LANE0_QSGMII_LANE5>, <J784S4_SERDES2_LANE1_QSGMII_LANE6>, <J784S4_SERDES2_LANE2_QSGMII_LANE7>, <J784S4_SERDES2_LANE3_QSGMII_LANE8>; }; &serdes_wiz2 { status = "okay"; }; &serdes2 { status = "okay"; #address-cells = <1>; #size-cells = <0>; serdes2_qsgmii_link: phy@0 { reg = <2>; cdns,num-lanes = <1>; #phy-cells = <0>; cdns,phy-type = <PHY_TYPE_SGMII>; resets = <&serdes_wiz2 3>; }; };
&main_cpsw0_port7{
状态="正常";
phy-handle =<&cpsw9g_phy0>;
PHY 模式="SGMII";
MAC-ADDRESS =[00 00 00 00];
phys =<&cpsw0_phy_gmii_sel 7>、<&serdes2_qsgmii_link>;
PHY-NAMEs ="MAC"、"SerDes";
};
节点的 PHY 模式会导致以下错误。
日志显示:
[2.687623] am65-cpsw-nuss c000000.ethernet: initializing am65 cpsw nuss version 0x6BA03102, cpsw version 0x6BA82902 Ports: 9 quirks: 000000000000
[ 2.700322] phy-gmii-sel 104044.phy:phy_gmii_sel_of_xlate id:7 ext:139780624
[ 2.701486] phy-gmii-sel 104044.phy:端口7:不支持的模式:"SGMII"
我检查了驱动程序 phy-gmii-sel.c
静态常量
结构 phy_gmii_sel_soc_data phy_gmii_sel_cpsw9g_soc_j784s4 ={
.use_of_data = true、
.regfields = phy_gmii_sel_fields_am654、
.extra_modes = bit (PHY_INTERFACT_MODE_QSGMII)|
位(PHY_INTERFACE_MODE_USXGMII)、
.NUM_PORTS = 8、
.num_qsgmii_main_ports = 2、
};
似乎只有 j784s‘s EXTRA_MODES 不支持 SGMII。 在选择模式后、程序会退出。
case PHY_INTERFACE_MODE_QSGMII: if (!(soc_data->extra_modes & BIT(PHY_INTERFACE_MODE_QSGMII))) goto unsupported; if (if_phy->priv->qsgmii_main_ports & BIT(if_phy->id - 1)) gmii_sel_mode = J72XX_GMII_SEL_MODE_QSGMII; else gmii_sel_mode = J72XX_GMII_SEL_MODE_QSGMII_SUB; break; case PHY_INTERFACE_MODE_SGMII: if (!(soc_data->extra_modes & BIT(PHY_INTERFACE_MODE_SGMII))) goto unsupported; else gmii_sel_mode = J72XX_GMII_SEL_MODE_SGMII; break;
电流驱动器不支持 SGMII?
谢谢
您好!
要在 J784S4上启用 SGMII 模式、请确保 Linux 源中存在以下提交:
1. https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/commit/drivers/phy/ti/phy-gmii-sel.c?h=ti-linux-6.6.y&id=b64dce7e8b3032252df43667d46cf37b28c6b943
2. https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/commit/drivers/phy/ti/phy-j721e-wiz.c?h=ti-linux-6.6.y&id=888fe8dd74a2dc3e32396b8cd9e4b76069db87eb
3. https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/commit/drivers/net/ethernet/ti?h=ti-linux-6.6.y&id=e63dcf67e8c90d8e0f26728de7fe96cc3dda57da
此致、
Siddharth。
我有 alleady 添加这些补丁, eth1可以创建,但我们不能 ping . 请检查我的设备树、谢谢!
您好!
请共享设备树、引导日志和以下内容的输出:
devmem2 0x0502e000
此致、
Siddharth。
您好!
"serdes2"中的"resets"属性应为"<&SerDes_fiz2 4>"。 请检查此更改。
完成此更改后、您还可以共享"ethtool eth1"的输出
此致、
Tanmay
您好,我们使用 SERDES2 lane2 ,这是什么意思 ? 我们将在稍后进行测试并反馈、谢谢。
您好!
但在器件树中、您提到了 SerDes 的"reg"属性为<3>。 这意味着您使用的是 SerDes 2通道3。
基本上、reg 属性是协议的起始通道号、CDN、num-Lanes 是正在使用的通道数。 因此、如果您要在 SerDes 2通道2中仅使用一个通道、则 reg 属性应为<2>、而 CDN、num-Lanes 应为<1>。
reset 属性是各个通道的 RESET 信号。 您应该会对该子节点中使用的所有通道进行重置。 要使用的复位索引为<[0-indexed lane number + 1]>。 因此、对于 SerDes 2通道2、重置将为 <& SerDes_wiz2 3>、对于 SerDes 2通道3、重置将为 <& SerDes_wiz2 4>。
此致、
Tanmay
感谢您的帮助、
我们需要对评估的8个 TH 端口使用 SERDES1、SERDES2、SERDES4。
我们是否应该修改 k3-j784s4-main.dtsi? 我们怎么能做到这一点? k3-j784s4-main.dtsi 中只有 SERDES0 SERDES1 SERDES2; 我们是否应修改其他文件?
serdes_ln_ctrl:mux-controller@4080{
...
mux-reg-masks =<0x4080 0x3>、<0x4084 0x3>、/* SERDES0 lane0/1 SELECT */
…
<0x40a8 0x3>、<0x40ac 0x3>;/* SERDES2 lane2/3 SELECT */
}
大家好、Sid、Tanmay、
此应用需要扩展8个 SGMII 以太网端口、因此需要将 SerDes 4配置为 SGMII。 请提供 DTS 配置示例、在制作 PCB 之前需要验证特性、硬件正在等待测试结论。
@Chen Chen
同时、请参阅以下帖子:
您好!
[报价 userid="35100" URL"~/support/processors-group/processors/f/processors-forum/1392179/tda4vh-q1-sgmii-configuration-of-cpsw-9g/5349754 #5349754"]由于此应用需要扩展8个 SGMII 以太网端口、因此需要将 SerDes 4配置为 SGMII。 请提供示例 DTS 配置[/报价]无法在 EVM 上进行测试、因为 serdes4的连接不可用于以太网。 因此、我可为您提供参考器件树文件、但您无法在 EVM 上对其进行测试。
如果您想查看参考器件树文件、请告诉我。
此致、
Tanmay
您好、Tanmay、
如果您想查看参考设备树文件、请告诉我。
是的、如有必要、我们可以在客户的修改版 EVM 电路板上一起进行调试。
您好、Chen
此问题现在是否已解决?
此致
Semon