Enabling DP83867 on Jetson Orin

Background : We are trying to get our ethernet port up. We have DP83867 connected on hardware and have done necessary updates to kernel to have dp83867 enabled in BSP.
We are not seeing any transactions and would need expert advice to proceed further.
We have added following files

  1. devmem-data-7-may.txt
    This as devmem output which verifies configuration of needed pins in RGMII mode
  2. lsmod.txt
    This demonstrates the dp83867 driver inserted and in use
    3.dmesg.txt
    bootup logs from target
    4.interrupts.txt
    This is output of /proc/interrupts from target
  3. gpio.txt
    Will provide info on configured interrupt pin
  4. initial_waveform_4MHz.png & WaveformStableAt2MHz.png
    Waveforms captured at MDIO pins of DP86867
    Plus reference to previous ticket
    Previous Ticket
    devmem-data-7-may.txt (680 Bytes)
    dmesg.txt (69.1 KB)
    gpio.txt (7.1 KB)

    interrupts.txt (45.1 KB)
    lsmod.txt (2.7 KB)

Does /proc/interrupt |grep eth give you any number increase when you up down the eth0 interface?

Does eth phy reset pin give any toggle when boot up?

busybox devmem 0x02434070 : 0x00000058

This GPIO G4 pinctrl seems still not match document. Please check the TRM to understand each bit first.


Will read the TRM but we have updated this particular pin config based on info available.
Would certainly help if you could highlight particular bit which doesnt fall in line with expectation.

Oh sorry. My mistake. That looks correct.

Please also check rest of pinmux. If they are correct, check the rst pin toggle status in the boot process.

These 2 registers might help

0x022140a0 for GPIO G,5
0x02214080 for GPIO G,4

Attached is the spreadsheet i use to verify all registers if they are seen according to what the document suggests.
Will check 0x022140a0 and 0x02214080 and revert
Plus will check the interrupts counts for up and down and revert on that too
RegBitsMapping-1.0.pdf (613.5 KB)

busybox devmem 0x02434080 : 0x00000400
busybox devmem 0x024340a0 : 0x00000056

You dumped the wrong addr.

my bad, here is the right one
busybox devmem 0x02214080 : 0x00000045
busybox devmem 0x022140a0 : 0x00000003

Result looks fine. Please ask hardware engineer to help check if the ETH RST pin got toggled.

We monitored RST pin and here is bit of background
Scenario1:
As per hw engineer RST pin was floating and was in power on reset configuration in that scenario we were able to see dp83867.ko loaded and used
In this configuration when i do “ifconfig eth0 down” and the “ifconfig eth0 up” i see following outcome

-----WHEN RESET PIN IS FLOATING
orin@orin-desktop:~$ sudo ifconfig eth0 up
[  109.773182] Trying to unregister non-registered hwtime source
[  126.853742] nvethernet 2310000.ethernet: [poll_check][42][type:0x4][loga-0x0] poll_check: timeout
[  126.868800] net eth0: failed to poll MAC Software reset
SIOCSIFFLAGS: Operation not permitted
orin@orin-desktop:~$ cat /proc/interrupts | grep eth

Scenario2:

  1. HW Engineer connect RST pin (not left it floating)
  2. We are able to see transition on RST pin from high to low and high again (see attached image)
  3. in lsmod we arent able to see dp83867.ko loaded and in use
  4. in dmesg we see error as below
------AFTER CONNECTING RESET
orin@orin-desktop:~$ sudo ifconfig eth0 up
[  244.886661] mdio_bus 2310000.ethernet: MDIO device at address 0 is missing.
[  244.893880] nvethernet 2310000.ethernet: failed to connect PHY
[  244.899895] net eth0: ether_open: Cannot attach to PHY (error: -19)
SIOCSIFFLAGS: No such device
orin@orin-desktop:~$ 

Your thoughts please

We are monitoring RST on oscilloscope and Post boot when RST is connected, we see it toggles multiple times and after a while this lines continues to stay low.

Hi,

It looks like scenario 2 is expected. Could you change dp83867.ko to kernel image and see what is the result?

Sorry, i do not follow that.
I have enabled dp83867 through kernel config and have updated dts accordingly
Have made CONFIG_DP83867_PHY=m in tegra_defconfig

Yes, I mean could you set it as =y instead of “m”?

And what is the result in /sys/bus/mdio_bus on your device?

Sure will do, shall revert, thanks

dmesg-post-dp83867-made-y-2.txt (64.9 KB)

Attached dmesg post have dp83867 configured as Y
What i see in logs is

[   20.163987] mdio_bus 2310000.ethernet: MDIO device at address 0 is missing.
[   20.172251] nvethernet 2310000.ethernet: failed to connect PHY
[   20.179193] net eth0: ether_open: Cannot attach to PHY (error: -19)

log has response to what we see under /sys/bus/mdio_bus please check that

Your thoughts