Thread 中讨论的其他器件:J7200XSOMXEVM、、 DRA821
工具与软件:
大家好、团队成员:
我们 已根据 J7200XSOMXEVM 参考设计设计设计了定制电路板。
我们正在使用 PROCESSOR-SDK-LINUX-RT J7200(10.00.07.03)为定制电路板开发软件。
在定制电路板上、我们尝试在不通过 PHY 的情况下、使用 RGMII 固定链路连接来连接 DRA821U 和另一个制造商的 IC。
因此、我们通过参考以下论坛修改了器件树和驱动程序(am65-cpsw-nuss.c)。
-设备树
&cpsw0_port3 {
status = "okay";
phy-mode = "rgmii";
fixed-link {
speed = <1000>;
full-duplex;
};
};
-驱动程序(board-support/ti-linux-kernel-6.6.32+git-ti-rt/drivers/net/ti/am65-cpsw-nuss.c)
+ if (of_phy_is_fixed_link(port_np)) {
+ ret = of_phy_register_fixed_link(port_np);
+ if (ret) {
+ if (ret != -EPROBE_DEFER) {
+ dev_err(dev, "%pOF error retrieving port phy: %d\n",
+ port_np, ret);
+ goto of_node_put;
+ }
+ }
+ port->slave.phy_node = of_node_get(port_np);
+ }else{
port->slave.ifphy = devm_of_phy_get(dev, port_np, NULL);
if (IS_ERR(port->slave.ifphy)) {
ret = PTR_ERR(port->slave.ifphy);
dev_err(dev, "%pOF error retrieving port phy: %d\n",
port_np, ret);
goto of_node_put;
}
/* Initialize the Serdes PHY for the port */
ret = am65_cpsw_init_serdes_phy(dev, port_np, port);
if (ret)
goto of_node_put;
+ }
在 Linux 中、接口按配置运行(1000baseT/Full)。
~# ethtool eth2
Settings for eth2:
Supported ports: [ MII ]
Supported link modes: 1000baseT/Full
Supported pause frame use: Symmetric
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 1000baseT/Full
Advertised pause frame use: Symmetric
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Link partner advertised link modes: 1000baseT/Full
Link partner advertised pause frame use: No
Link partner advertised auto-negotiation: No
Link partner advertised FEC modes: Not reported
Speed: 1000Mb/s
Duplex: Full
Auto-negotiation: on
Port: MII
PHYAD: 0
Transceiver: internal
Supports Wake-on: d
Wake-on: d
Current message level: 0x000020f7 (8439)
drv probe link ifdown ifup rx_err tx_err hw
Link detected: yes
但是、RGMII3_TXC 的频率为2.5MHz (10Mbps)。
此外、相关的寄存器值如下:


如何将器件树设置反映在寄存器中?
此致、
Mizutani