M88E1512, Potential AGX Orin Config#2 Issue

Hi, I am attempting to bring up an 88E1512 phy on an AGX Orin. I believe I have followed the adaptation guide appropriately, but I am still running into issues. My pinmux has been set to match the adaptation guide.


I have confirmed that running ‘ifconfig eth0 down’ triggers the reset pin on the phy using an oscope and, similarly, ‘ifconfig eth0 up’ drives the reset line high. Similarly, I have used mdio-tool to force the interrupt line which toggles and releases with the write to page 3, register 18 bit 15.

ODMDATA has been set in my conf accoring to the adaptation guide. I have not yet implemented the pipe2uphy devicetree entries to fully move to configuration #2 – some help with that would be appreciated.

I have disabled the MGBE interfaces.
/* Disable MGBE interfaces /
ethernet@6810000{
status = “disabled”;
};
ethernet@6910000 {
status = “disabled”;
};
ethernet@6A10000 {
status = “disabled”;
};
ethernet@6B10000 {
status = “disabled”;
};
/
EQOS /
ethernet@2310000 {
status = “okay”;
nvidia,mac-addr-idx = <0>;
nvidia,phy-reset-gpio = <&tegra_main_gpio TEGRA234_MAIN_GPIO(G, 5) 0>;
phy-mode = “rgmii-id”;
phy-handle = <&phy>;
nvidia,max-platform-mtu= <8000>;
nvidia,pause_frames = <0>; /
0=enable, 1=disable */
// /delete-node/ fixed-link;

	mdio {
		compatible = "nvidia,eqos-mdio";
		#address-cells = <1>;
		#size-cells = <0>;

		phy: phy@0 {
			reg = <0>;
                    	nvidia,phy-rst-pdelay-msec = <224>; /* msec */
                    	nvidia,phy-rst-duration-usec = <10000>; /* usec */
                    	interrupt-parent = <&tegra_main_gpio>;
                    	interrupts = <TEGRA234_MAIN_GPIO(G, 4) IRQ_TYPE_LEVEL_LOW>;
                    	marvell,copper-mode;
                    	/* Setup LED[2] as interrupt pin (active low) */
			marvell,reg-init = <0x03 0x12 0x7fff 0x880>;
		};
	};
};

One thing I did notice is the phy has the page 18 register 20 set to the default of “0x7” which is a reserved value. I did try adjusting this to 0x8200 (RGMII to Copper & SW Reset) but no change.

I am getting the device showing up on eth0

gms@gms-desktop:/proc/device-tree$ sudo ifconfig eth0
eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 48:b0:2d:95:15:45 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

In the dmesg log, the string, “trying to unregister non-registered hwtime source” and “hwmon hwmon6: temp1_input not attached to any thermal zone” were in response to ifconfig eth0 down commands.

Thank you for any help!

devtree.dts (547.8 KB)
Orin-20230829-gpio-default.dtsi (2.1 KB)
Orin-20230829-pinmux.dtsi (64.6 KB)
dmesg.txt (67.8 KB)

Rel-35.4.1 shall fix that “trying to unregister non-registered hwtime source”.

If it does not fix, then your issue is from something else.

Hi Wayne, thank you for the response. I am already on 35.4.1. Sorry for omitting that in my original post.

Thanks,
Joe

Hi Wayne,

Do you have any update on this? I am already on Release 35.4.1. What “something else” can I check?

Thanks,
Joe

Hi,

Just to clarify. Is there any actual functional problem here or you are just asking about why there is a log printed?

The phy is not communicating. Ifconfig eth0 up is not giving me a connection.

As this thing has been checked many times. Please directly check this post.

  1. ODMdata is not related to RGMII.

  2. Make sure the pinmux and gpio are correctly configured and flashed to the board.

Hi Wayne,

I somehow missed the part about needing the different compatible string for the production modules. I updated my .dts as follows:

/ {
nvidia,dtsfilename = FILE;
nvidia,dtbbuildtime = DATE, TIME;

compatible = "nvidia,p3737-0000+p3701-0004", "nvidia,p3701-0004", "nvidia,tegra234", "nvidia,tegra23x";

I reflashed my board with this change and don’t see any difference in behavior in the ethernet. Are there additional changes that need to be made? I don’t see any other aspects of this post that differ from mine with the exception of removing the marvell,copper-mode and initial register config from the dts.

From what I can tell, both the pinmux and GPIO appear to be flashed. Do you have any specific tests you could recommend to verify?

I’m still ending up in the exact same situation as before.

For the specific sections you quoted, I did change the reg address from 1 to 0 and verified that was correct using mdio-tool reads/writes.

I am, oddly, having issues with the equivalent of the J40 port on my custom carrier as it works for flashing but does not appear to do anything in Linux. I am investigating this issue as well.

Check your /proc/interrupts and if the interrupt got increase when you on/off the interface.

Hi Wayne,

I get one interrupt when I ifconfig up/down. I don’t recall which one results in the increase but it is only one of the two yields an interrupt. I do not get any other interrupts.

Using mdio tools, I am able to force the interrupt pins which results in Linux disabling the interrupt.

I do not get an interrupt when the Ethernet cable is connected/disconnected.

Thanks for the help!

Hi Wayne,

It appears our custom cable may be damaged. This topic can be closed. Hopefully, things will work well once the cable is repaired. If it continues to not work, I will request the thread be reopened. Thank you very much for your assistance.

Thanks,
Joe