Hope to get technical guidance,Use the KSZ9896 PHY to replace the Jetson-AGX-Xavier PHY driver via the MDIO interface

My reference is as follows: https://forums.developer.nvidia.com/t/how-to-replace-net-phy-of-xavier/77574

Then I want to ask the path of the device tree file corresponding to jetson-agx-xavier 32g, as well as the file name, whether it is consistent with the file path I modified, I am afraid that the modification will not take effect.

Here is the path to the file I modified:

./hardware/nvidia/platform/t19x/common/kernel-dts/t19x-common-platforms/tegra194-platforms-eqos.dtsi.

Contents modified by the tegra194-platforms-eqos.dtsi file:

ethernet@2490000 {
interrupts = <0 194 0x4>, /* common /
<0 186 0x4>, /
tx0 /
<0 190 0x4>; /
rx0 /
/
rxq_enable_ctrl =
* 0x0 = Not enabled, 0x1 = Enabled for AV
* 0x2 = Enabled for Legacy, 0x3 = Reserved
/
nvidia,rxq_enable_ctrl = <2>;
nvidia,num-dma-chans = <1>;
nvidia,dma-chans = <0>;
nvidia,num-mtl-queues = <1>;
nvidia,mtl-queues = <0>;
nvidia,rx-queue-prio = <0x2>;
nvidia,tx-queue-prio = <0x0>;
/
0=enable, 1=disable */
nvidia,pause_frames = <0>;
//add
nvidia,phy-reset-gpio = <&tegra_main_gpio TEGRA194_MAIN_GPIO(G, 5) 1>;
phy-mode = “rgmii-id”;
phy-handle = <&phy>;
//add
fixed-link {
speed = <1000>;
full-duplex;
};
//nvidia,max-platform-mtu = <16383>;

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

  	phy: phy@0 {
  		//add
  		compatible = "microchip,ksz9896";
  		reg = <0>;
  		interrupt-parent = <&tegra_main_gpio>;
  		interrupts = <TEGRA194_MAIN_GPIO(G, 4) IRQ_TYPE_LEVEL_LOW>;
  		//add
  		microchip,copper-mode;
  		/* Setup LED[2] as interrupt pin (active low) */
  		//add
  		microchip,reg-init = <0x03 0x12 0x7fff 0x880>;
  	};
  };

};

How do I enable fixed-link? For platforms that support device trees, simply add a fixed-link child node to the Mac device node.

I modified whether the device tree file corresponds to jetson-agx-xavier’s platform by modifying this tegra194-platforms-eqos.dtsi
The file is still tegra194-p2888-0001-p2822-0000.dts
File.

Use the KSZ9896 PHY to replace the Jetson-AGX-Xavier PHY driver via the MDIO interface

The network ping on jetson is not working, can the senior take a look for me? Thank you.

It is not an error that you are flashing tegra194-p2888-0001-p2822-0000.dtb to your device…

Please get some basic knowledge of how device tree works first.

“dtsi” file is more like a file that will be “included” by other files and “dts” file is the one that will become a finalized dtb file… We flash the finalized dtb file but not a dtsi file…

And for ksz9896 phy, some other users had shared their experience.

I have seen this topic, this topic uses I2C and SPI drivers, not MDIO, so now you need to configure Linux PHY Fixed-Link mode, RGMII interface delay, Switch has a default delay state, need Mac to adapt, keep Mac consistent with Switch. I probably know how this works, but I don’t know exactly what to modify.@WayneWWW

Okay, thanks, it’s that I don’t know which different jetson platforms correspond to that device tree file, is there a description in the official SDK development guide? I went to learn about the device tree file.

Hi,

You could check your flash log from flash.sh to know which dtb is in use.
Then download our kernel public source to track the code. I guess you already had them.

1 Like

How does jetson-agx-xavier set fixed-link mode?
I want to set the MPU to treat the external switch as a virtual PHY with fixed connection properties, in this mode, the switch works in the default working state, and Linux will not be able to access
The internal registers of the switch cannot be managed by ordinary MDIO, the MPU only has basic network communication functions, and the network is fixed: link up/1000M or 100M/full
duplex.

If I knew exactly how to set the fixed-link mode, this problem should be solved

What does that mean how to set fixed-link mode? How did you tell whether the fixed-link mode is set or not?

View the two configurations of Speed and Duplex with the command “sudo ethtool eth0”

I would like to ask in which device tree file to enable fixed-link? For platforms that support device trees, just add a fixed-link child node to the Mac device node, but I don’t know to modify that file, add the following child node to the corresponding file:

  fixed-link {
  	speed = <1000>;
  	full-duplex;
  };

Have you downloaded the kernel source? You don’t know how to compile the dtb?

請問你kernel source有抓了嗎? 你的問題是不知道怎樣compile dtb ?

你会说中文的呀?

我有jetson的内核源码文件了,但是我不知道要修改那个设备树文件,才能使能fixed-link模式,因为我修改了一些文件,但是没有生效

Two possible reasons

  1. your change/patch is not built into the dtb.
  2. Change/patch is already in dtb. But you didn’t update the dtb on the board correctly…

Please check whether you hit 1 or 2.


有兩種可能

  1. 你改的東西沒build進dtb
  2. 你改的東西有進dtb, 但是你沒有更新到板子上讀到的dtb…

所以麻煩先確認一下你是碰到1還是2.

我修改的文件是

./hardware/nvidia/platform/t19x/common/kernel-dts/t19x-common-platforms/tegra194-platforms-eqos.dtsi

然后我编译执行./nvbuild.sh -o $PWD/kernel_out,
在执行拷贝设备树:

cp -r ./kernel_out/arch/arm64/boot/dts/nvidia/* /home/lth/nvidia/install_sdk/JetPack_5.0.2_Linux_JETSON_AGX_XAVIER_TARGETS/Linux_for_Tegra/kernel/dtb
我再烧录文件:
sudo ./flash.sh -r -k kernel-dtb jetson-agx-xavier-devkit mmcblk0p1

By default rel-35 reads the dtb from rootfs. So you need to check /boot/extlinux/extlinux.conf and see which dtb is in use.


rel-35預設的dtb是從rootfs讀的. 所以你要看/boot/extlinux/extlinux.conf裡面指定的路徑在哪 然後去改那個dtb

1 Like

还是直接把编译的dtb文件tegra194-p2888-0001-p2822-0000.dtb拷贝到板子上,放在/boot目录下面,jetson-agx-xavier的dtb文件是更新这个tegra194-p2888-0001-p2822-0000.dtb文件吧

好的,谢谢,我先看看我电脑的这个文件

我看了一下,我内核源码下/roofs/boot/extlinux/extlinux.conf文件是这样的:

TIMEOUT 30
DEFAULT primary

MENU TITLE L4T boot options

LABEL primary
MENU LABEL primary kernel
LINUX /boot/Image
FDT /boot/dtb/kernel_tegra194-p2888-0001-p2822-0000.dtb
INITRD /boot/initrd
APPEND ${cbootargs}
所以是这个文件kernel_tegra194-p2888-0001-p2822-0000.dtb吗?