RGMII Enabling Problem

Hello,

We need to use the RGMII interface on our custom carrier board (designed for AGX Xavier).

We tried the following solutions from other topics. But we have not fixed this.
-Jetson ORIN: RGMII can't send data - #6 by kangqi236
-Jetson AGX Orin RGMII to use - #6 by WayneWWW
-Does Orin support 88E1512 PHY chip? - #18 by WayneWWW

I’m attaching the .dts (exported from our DTB file), debug logs & configured pinmux files.
tegra234-p3701-0000-p3737-0000.dts (488.3 KB)

agx_orin_dmesg.txt (96.3 KB)

tegra234-mb1-bct-pinmux-p3701-0000.dtsi (62.5 KB)

Also, the following picture describes our ethernet implementation from the kernel source:

Module: AGX Orin Dev. Kit module
SW: JetPack-5.0 GA Early Access

These are our all flashing steps:
1- Copy the attached files in the specified paths:

  • tegra234-p3701-0000-p3737-0000.dtb → Linux_for_Tegra/kernel/dtb/tegra234-p3701-0000-p3737-0000.dtb
  • tegra234-mb1-bct-pinmux-p3701-0000.dtsi → Linux_for_Tegra/bootloader/t186ref/BCT/tegra234-mb1-bct-pinmux-p3701-0000.dtsi

2- Apply the binaries, apply the EEPROM configurations (we’ve not used any EEPROM) & change the ODMDATA for 1Gb Ethernet connection.

$ cd ~/nvidia/nvidia_sdk/JetPack_5.0_AG_ORIN/Linux_for_Tegra/
$ sudo ./apply_binaries.sh
$ sed -i "s/cvm_eeprom_read_size = <0x100>;/cvm_eeprom_read_size = <0x0>;/g" bootloader/tegra234-mb2-bct-common.dtsi
$ sed -i "s/cvb_eeprom_read_size = <0x100>;/cvb_eeprom_read_size = <0x0>;/g" bootloader/tegra234-mb2-bct-common.dtsi
$ sed -i "s/ODMDATA=\"gbe-uphy-config-22,hsstp-lane-map-3,nvhs-uphy-config-0,hsio-uphy-config-0,gbe0-enable-10g\";/ODMDATA=\"gbe-uphy-config-0,nvhs-uphy-config-0,hsstp-lane-map-3,hsio-uphy-config-16\";/g" p3701.conf.common

3- Create a user to skip the Ubuntu configuration wizard.

$ sudo tools/l4t_create_default_user.sh -u nvidia -p nvidia -a -n nvidia-agx-orin --accept-license 

4- Then, flash it

$ sudo ./flash.sh --no-flash jetson-agx-orin-devkit mmcblk0p1
$ lsusb | grep 0955:7023
$ sudo ./flash.sh -r jetson-agx-orin-devkit mmcblk0p1

Thanks

Hi,

You only need to set cvb eeprom to 0. Do not touch anything for cvm eeprom.

1 Like

BTW, why do you remove interrupts from your mdio DT?

1 Like

Hi @WayneWWW
I guess the TEGRA_ETHERNETPHY_DT_VERSION is not less than DT_VERSION_2.

Shall I remove the if-check statement (also only set the cvb_read_size) & try it again?

Thanks

Hi,

The default TEGRA_ETHERNETPHY_DT_VERSION is 2 so we intend the interrupt should be added if you check the adaptation guide.

1 Like

Hi @WayneWWW
Thank you. I checked the adaptation guide & removed the if-check side on the dts file from kernel source.
The following screenshot is from it.

The full device-tree file:
tegra234-p3701-0000-p3737-0000.dts (488.4 KB)

The debug logs:
agx_orin_dmesg2.txt (97.9 KB)

Now, the ethernet interface established. Here are the ifconfig & ethtool command results below:

nvidia@nvidia-agx-orin:~$ ifconfig 
eth0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1466
        ether 48:b0:2d:69:33:d4  txqueuelen 1000  (Ethernet)
        RX packets 132  bytes 10209 (10.2 KB)
        RX errors 0  dropped 71  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<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 278  bytes 19194 (19.1 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 278  bytes 19194 (19.1 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

rndis0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether a2:83:40:ce:9b:09  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

usb0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether a2:83:40:ce:9b:0b  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

nvidia@nvidia-agx-orin:~$  sudo ethtool eth0
[sudo] password for nvidia: 
Settings for eth0:
	Supported ports: [ TP MII FIBRE ]
	Supported link modes:   10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Half 1000baseT/Full 
	Supported pause frame use: Symmetric Receive-only
	Supports auto-negotiation: Yes
	Supported FEC modes: Not reported
	Advertised link modes:  10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Half 1000baseT/Full 
	Advertised pause frame use: No
	Advertised auto-negotiation: Yes
	Advertised FEC modes: Not reported
	Speed: Unknown!
	Duplex: Unknown! (255)
	Port: Twisted Pair
	PHYAD: 0
	Transceiver: internal
	Auto-negotiation: on
	MDI-X: Unknown
	Supports Wake-on: g
	Wake-on: d
	Link detected: no
nvidia@nvidia-agx-orin:~$

Thanks

What PHY is in use here and what is current situation?

Is it working now?

1 Like

If the TX does not work, please make sure you put every file that is generated from the pinmux spreadsheet to the BCT. Not only the pinmux dtsi.

There should be a gpio dtsi too.

1 Like

Hello @WayneWWW,

Thanks a lot. Now, the RGMII is working.

The updated GPIO dtsi file: tegra234-mb1-bct-gpio-p3701-0000.dtsi (3.9 KB)

The latest dmesg: agx_orin_dmesg3.txt (94.1 KB)

Kind Regards,
Mehmet

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.