Unlike the Development Kit, our custom carrier board utilizes the TI DP83867 PHY with an RGMII interface.
To enable this configuration, we have added the following settings in the file:
./Linux_for_Tegra/source/hardware/nvidia/t23x/nv-public/nv-soc/tegra234-base-overlay.dtsi
ethernet@2310000 {
compatible = "nvidia,nveqos";
reg = <0x0 0x02310000 0x0 0x10000>,
<0x0 0x023D0000 0x0 0x10000>,
<0x0 0x02300000 0x0 0x10000>;
reg-names = "mac", "macsec-base", "hypervisor";
interrupts = <0 194 0x4>, <0 186 0x4>, <0 187 0x4>, <0 188 0x4>, <0 189 0x4>, <0 190 0x4>, <0 191 0x4>;
interrupt-names = "common", "vm0", "vm1", "vm2", "vm3", "macsec-ns-irq", "macsec-s-irq";
resets = <&bpmp TEGRA234_RESET_EQOS>, <&bpmp TEGRA234_RESET_EQOS_MACSEC>;
reset-names = "mac", "macsec_ns_rst";
clocks = <&bpmp TEGRA234_CLK_PLLREFE_VCOOUT>, <&bpmp TEGRA234_CLK_EQOS_AXI>, <&bpmp TEGRA234_CLK_EQOS_RX>, <&bpmp TEGRA234_CLK_EQOS_PTP_REF>,
<&bpmp TEGRA234_CLK_EQOS_TX>, <&bpmp TEGRA234_CLK_AXI_CBB>, <&bpmp TEGRA234_CLK_EQOS_RX_M>,
<&bpmp TEGRA234_CLK_EQOS_RX_INPUT>, <&bpmp TEGRA234_CLK_EQOS_MACSEC_TX>, <&bpmp TEGRA234_CLK_EQOS_TX_DIVIDER>,
<&bpmp TEGRA234_CLK_EQOS_MACSEC_RX>;
clock-names = "pllrefe_vcoout", "eqos_axi", "eqos_rx", "eqos_ptp_ref", "eqos_tx", "axi_cbb",
"eqos_rx_m", "eqos_rx_input", "eqos_macsec_tx", "eqos_tx_divider", "eqos_macsec_rx";
#if TEGRA_IOMMU_DT_VERSION >= DT_VERSION_2
interconnects = <&mc TEGRA234_MEMORY_CLIENT_EQOSR>, <&mc TEGRA234_MEMORY_CLIENT_EQOSW>;
interconnect-names = "dma-mem", "write";
#endif
iommus = <&smmu_niso1 TEGRA234_SID_EQOS>;
nvidia,num-dma-chans = <8>;
nvidia,num-mtl-queues = <8>;
nvidia,mtl-queues = <0 1 2 3 4 5 6 7>;
nvidia,dma-chans = <0 1 2 3 4 5 6 7>;
nvidia,tc-mapping = <0 1 2 3 4 5 6 7>;
nvidia,residual-queue = <1>;
nvidia,rx-queue-prio = <0x2 0x1 0x30 0x48 0x0 0x0 0x0 0x0>;
nvidia,tx-queue-prio = <0x0 0x7 0x2 0x3 0x0 0x0 0x0 0x0>;
nvidia,rxq_enable_ctrl = <2 2 2 2 2 2 2 2>;
nvidia,vm-irq-config = <&eqos_vm_irq_config>;
status = "okay";
nvidia,dcs-enable = <0x1>;
nvidia,macsec-enable = <0>;
nvidia,pad_calibration = <0x1>;
nvidia,pad_auto_cal_pd_offset = <0x0>;
nvidia,pad_auto_cal_pu_offset = <0x0>;
nvidia,rx_riwt = <512>;
nvidia,rx_frames = <64>;
nvidia,tx_usecs = <256>;
nvidia,tx_frames = <5>;
nvidia,promisc_mode = <1>;
nvidia,slot_num_check = <0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0>;
nvidia,slot_intvl_vals = <0x0 0x7D 0x7D 0x7D 0x7D 0x7D 0x7D 0x7D>;
nvidia,ptp_ref_clock_speed = <208333334>;
nvidia,instance_id = <4>;
nvidia,ptp-rx-queue = <3>;
pinctrl-names = "mii_rx_disable", "mii_rx_enable";
pinctrl-0 = <&eqos_mii_rx_input_state_disable>;
pinctrl-1 = <&eqos_mii_rx_input_state_enable>;
nvidia,dma_rx_ring_sz = <1024>;
nvidia,dma_tx_ring_sz = <1024>;
dma-coherent;
phy-mode = "rgmii-id";
phy-handle = <&phy0>;
};
mdio {
compatible = "nvidia,eqos-mdio";
#address-cells = <1>;
#size-cells = <0>;
phy0: phy@0 {
reg = <0>;
nvidia,phy-rst-pdelay-msec = <224>;
nvidia,phy-rst-duration-usec = <10000>;
interrupt-parent = <&gpio>;
interrupts = <TEGRA234_MAIN_GPIO(G, 4) IRQ_TYPE_LEVEL_LOW>;
status = "okay";
};
};
After applying this configuration, we encounter the following errors during boot:
wave@jetson:~$ ls
Desktop Documents Downloads Music Pictures Public Templates Videos
wave@jetson:~$ sudo dmesg | grep ethernet
[sudo] password for wave:
[ 0.116178] sysfs: cannot create duplicate filename ‘/bus/platform/devices/2310000.ethernet’
[ 9.547442] nvpps c6a0000.nvpps: primary-emac found ethernet@6800000
[ 9.547466] nvpps c6a0000.nvpps: using ptp notifier method on emac ethernet@6800000
[ 9.564347] nvethernet 6800000.ethernet: Adding to iommu group 48
[ 9.564773] nvethernet 6800000.ethernet: failed to read skip mac reset flag, default 0
[ 9.564781] nvethernet 6800000.ethernet: setting to default DMA bit mask
[ 9.564811] nvethernet 6800000.ethernet: failed to read UPHY GBE mode- default to 10G
[ 9.951489] nvethernet 6800000.ethernet: Ethernet MAC address: 3c:6d:66:1b:a6:67
[ 9.954258] nvethernet 6800000.ethernet: macsec parameter is missing or disabled
[ 9.954264] nvethernet 6800000.ethernet: Macsec not supported/Not enabled
[ 9.956657] nvethernet 6800000.ethernet: eth0 (HW ver: 31) created with 10 DMA channels
[ 9.957248] nvethernet 2310000.ethernet: Adding to iommu group 53
[ 9.957862] nvethernet 2310000.ethernet: failed to read skip mac reset flag, default 0
[ 9.957868] nvethernet 2310000.ethernet: failed to read MDIO address
[ 9.957871] nvethernet 2310000.ethernet: Failed to read nvida,pause_frames, so setting to default support as disable
[ 9.957873] nvethernet 2310000.ethernet: setting to default DMA bit mask
[ 9.957879] nvethernet 2310000.ethernet: max-platform-mtu DT entry missing, setting default 1500
[ 9.958159] nvethernet 2310000.ethernet: failed to get phy reset gpio error: -2
[ 9.961536] nvethernet 2310000.ethernet: Ethernet MAC index missing
[ 9.961559] nvethernet 2310000.ethernet: Ethernet MAC address: 3c:6d:66:1b:a6:67
[ 9.963120] nvethernet 2310000.ethernet: macsec parameter is missing or disabled
[ 9.963125] nvethernet 2310000.ethernet: Macsec not supported/Not enabled
[ 9.964424] nvethernet 2310000.ethernet: eth1 (HW ver: 53) created with 8 DMA channels
[ 10.114520] nvethernet 6800000.ethernet eno1: renamed from eth0
[ 14.063678] mdio_bus 6800000.ethernet: MDIO device at address 0 is missing.
[ 14.063692] nvethernet 6800000.ethernet: failed to connect PHY
[ 14.077824] nvethernet 2310000.ethernet: failed to connect PHY
wave@jetson:~$ lsmod | grep dp83867
dp83867 20480 0
wave@jetson:~$
ave@jetson:~$ ifconfig -a
can0: flags=128 mtu 16
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 10 (UNSPEC)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 218
can1: flags=128 mtu 16
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 10 (UNSPEC)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 219
eno1: flags=4098<BROADCAST,MULTICAST> mtu 1500
ether 3c:6d:66:1b:a6:67 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth1: flags=4098<BROADCAST,MULTICAST> mtu 1500
ether 3c:6d:66:1b:a6:67 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1000 (Local Loopback)
RX packets 12900 bytes 796228 (796.2 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 12900 bytes 796228 (796.2 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Could you please advise if there are any misconfigurations in the above or suggest possible corrections?
Thank you in advance for your support.