This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DP83867IR: "No ethernet found" is displayed in u-boot

Part Number: DP83867IR
Other Parts Discussed in Thread: MSP430F5529

Tool/software:

Hi,

I am developing a product with the xilinx "Kira KV260 SOM".
"DP83867IRRGZR" is used in this PCB.
Currently, the u-boot log (attached u-boot_log.txt) shows "No ethernet found." is displayed and the DP83867 is not recognized.
A similar problem has been posted on the following page, is there a solution?
e2e.ti.com/.../dp83867ir-device-tree-configuration-for-dp83867irrgz-phy-under-gem

The device tree of the Ethernet portion is shown below.
Does the PHY Address defined in the DP83867 data sheet "7.5.4 PHY Address Configuration" match the PHY address listed in the device tree?

Best Regards,

U-Boot 2024.01 (May 14 2024 - 03:31:48 +0000)

CPU:   ZynqMP
Silicon: v3
Chip:  xck26
Detected name: zynqmp-sm-k26-xcl2gi-rev1
Model: ZynqMP SM-K26 Rev1/B/A
Board: Xilinx ZynqMP
DRAM:  2 GiB (effective 4 GiB)
PMUFW:  v1.1
Xilinx I2C FRU format at nvmem0:
 Manufacturer Name: XILINX
 Product Name: SM-K26-XCL2GI
 Serial No: XFL1EB532TAH
 Part Number: 5057-03
 File ID: 0x0
 Revision Number: 1
EL Level:       EL2
Secure Boot:    not authenticated, not encrypted
Core:  61 devices, 33 uclasses, devicetree: board
MMC:   mmc@ff160000: 0
Loading Environment from nowhere... OK
In:    serial
Out:   serial,vidconsole
Err:   serial,vidconsole
Bootmode: JTAG_MODE
Reset reason:   DEBUG
Net:   Could not get PHY for eth0: addr 0
No ethernet found.

Setting bus to 1
Error writing the chip: -121
Setting bus to 1
Error writing the chip: -121
Setting bus to 2
Failure changing bus number (-19)
Setting bus to 1
Error writing the chip: -121
Enable permission for node ID 33
Enable permission for node ID 47
tpm_tis_spi_probe: missing reset GPIO
Hit any key to stop autoboot:  0
switch to partitions #0, OK
mmc0(part 0) is current device
** No partition table - mmc 0 **
Couldn't find partition mmc 0:1
MMC Device 1 not found
no mmc device at slot 1
starting USB...
No working controllers found
USB is stopped. Please issue 'usb start' first.
starting USB...
No working controllers found
USB is stopped. Please issue 'usb start' first.
starting USB...
No working controllers found
USB is stopped. Please issue 'usb start' first.
starting USB...
No working controllers found
USB is stopped. Please issue 'usb start' first.
starting USB...
No working controllers found
USB is stopped. Please issue 'usb start' first.
starting USB...
No working controllers found
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
No ethernet found.
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
missing environment variable: pxeuuid
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Retrieving file: pxelinux.cfg/00000000
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
No ethernet found.
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Retrieving file: pxelinux.cfg/0000000
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
No ethernet found.
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Retrieving file: pxelinux.cfg/000000
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
No ethernet found.
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Retrieving file: pxelinux.cfg/00000
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
No ethernet found.
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Retrieving file: pxelinux.cfg/0000
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
No ethernet found.
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Retrieving file: pxelinux.cfg/000
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
No ethernet found.
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Retrieving file: pxelinux.cfg/00
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
No ethernet found.
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Retrieving file: pxelinux.cfg/0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
No ethernet found.
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Retrieving file: pxelinux.cfg/default-arm-zynqmp-zynqmp
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
No ethernet found.
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Retrieving file: pxelinux.cfg/default-arm-zynqmp
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
No ethernet found.
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Retrieving file: pxelinux.cfg/default-arm
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
No ethernet found.
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Retrieving file: pxelinux.cfg/default
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
No ethernet found.
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Config file not found
starting USB...
No working controllers found
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
No ethernet found.
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
No ethernet found.
Could not get PHY for eth0: addr 0
Could not get PHY for eth0: addr 0
JTAG: Trying to boot script at 20000000
## Executing script at 20000000
Wrong image format for "source" command
JTAG: SCRIPT FAILED: continuing...
Unknown command '
' - try 'help'
ZynqMP>

device tree *********************************
&gem3{
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_gem3_default>;
#address-cells = <0x1>;
#size-cells = <0x0>;
local-mac-address = [00 0a 35 00 1e 53];
phy-mode = "rgmii-id";
phy-handle = <&phy0>;
interrupt-parent = <0x4>;
xlnx,has-mdio = <0x1>;
xlnx,eth-mode = <0x1>;
mdio{
phy0:phy@0 { <---- Is the "0" in the "phy@0" the PHY Address of the DP83867?
reg = <0x0>;
compatible = "ethernet-phy-id2000.a231", "ethernet-phy-ieee802.3-c22";
interrupt = <0x0 0x17 0x4>;
interrupt-parent = <0x4>;
ti,rx-internal-delay = <0x8>;
ti,tx-internal-delay = <0xa>;
ti,fifo-depth = <0x1>;
ti,rxctrl-strap-worka;
};
};
};


&pinctrl0 { /* required by spec */
status = "okay";

pinctrl_gem3_default: gem3-default {
conf {
groups = "ethernet3_0_grp";
slew-rate = <0x1>;
power-source = <0x1>;
};

conf-rx {
pins = "MIO70", "MIO72", "MIO74";
bias-high-impedance;
low-power-disable;
};

conf-bootstrap {
pins = "MIO71", "MIO73", "MIO75";
bias-disable;
low-power-disable;
};

conf-tx {
pins = "MIO64", "MIO65", "MIO66",
"MIO67", "MIO68", "MIO69";
bias-disable;
low-power-enable;
};

conf-mdio {
groups = "mdio3_0_grp";
slew-rate = <0x1>;
power-source = <0x1>;
bias-disable;
};

mux-mdio {
function = "mdio3";
groups = "mdio3_0_grp";
};

mux {
function = "ethernet3";
groups = "ethernet3_0_grp";
};
};
};

  • Hi,

    I will discuss with the team and this E2E to my team member.

    --

    Regards,

    Hillman lin

  • Hi Tokugawa,

    mdio{
    phy0:phy@0 { <---- Is the "0" in the "phy@0" the PHY Address of the DP83867?
    reg = <0x0>;
    compatible = "ethernet-phy-id2000.a231", "ethernet-phy-ieee802.3-c22";
    interrupt = <0x0 0x17 0x4>;

    The "reg = <0x0>" field refers to PHY address for DTS config.

    Please confirm:

    - Are the PHY address strap resistors set for address 0x0? Please share schematic (can email to e-mayhew@ti.com for private share)

    - Is the SoC driving the MAC lines before & during PHY power-up? In this case, it's possible this will change the strapped PHY address on start-up from the intended value.

    Thank you,

    Evan

  • Mayhew-san

    Thank you for your reply.

    > Are the PHY address strap resistors set for address 0x0? Please share schematic (can email to e-mayhew@ti.com for private share)
    I have sent the schematic of the Ethernet PHY part to your e-mail address.
    Currently, the resistors for setting the PHY address are not implemented. In case that the resistors are not implemented, I think it will be set to "0x00" from the following description in the data sheet.
    "Based on the default strap configuration of PHY_ADD[4:0], the DP83867 PHY address will initialize to 0x00 without any external strap configuration."

    > Is the SoC driving the MAC lines before & during PHY power-up? In this case, it's possible this will change the strapped PHY address on start-up from the intended value.
    The components are too small to probe the MAC lines signal, but the power supply has been turned up and reset canceled before the MAC lines can be operated.

    Best Regards,

    Tatsuro

  • Hi Tatsuro-san,

    Thank you for sharing the details.

    I will review the schematic and share feedback by 12/12.

    Best Regards,

    Evan

  • Hi Tatsuro-san,

    Apologies for the delay.

    I did not find any concerns with the schematic that would cause this issue.

    Please confirm:

    • Is Linux boot stage able to identify PHY?
    • Which U-boot driver is being used for DP83867?
    • When probing voltage across RBIAS resistor during PHY power, do you see roughly 1V?
    • If PHY registers are accessible, please share a register dump. This will help me confirm the strapped PHY config (address, MAC interface, ...)

    Thank you,

    Evan

  • Hi Evan-san,

    Sorry for the my late reply.

    > Is Linux boot stage able to identify PHY?
    I don't know because I haven't launched Linux yet. However, it has been checked with the ping command with the bare metal test Ethernet driver.

    > Which U-boot driver is being used for DP83867?
    According to the following page, I think it's "zynq_gem.c".
    xilinx-wiki.atlassian.net/.../U-boot
    github.com/.../zynq_gem.c

    > When probing voltage across RBIAS resistor during PHY power, do you see roughly 1V?
    The resistance is too small to probe and observe with an oscilloscope, but I have connected an 11kΩ resistor according to the datasheet.

    If PHY registers are accessible, please share a register dump. This will help me confirm the strapped PHY config (address, MAC interface, ...)
    Please refer to the file "u-boot_log.txt".

    Zynq MP First Stage Boot Loader
    Release 2024.1   May 19 2024  -  02:40:12
    MultiBootOffset: 0x0
    Reset Mode      :       System Reset
    Platform: Silicon (4.0), Running on A53-0 (64-bit) Processor, Device Name: XCZUUNKNEG
    In JTAG Boot Mode
    Protection configuration applied
    Exit from FSBL
    NOTICE:  BL31: Secure code at 0x60000000
    NOTICE:  BL31: Non secure code at 0x8000000
    NOTICE:  BL31: v2.10.0  (release):v1.1-13187-g4f82b6134
    NOTICE:  BL31: Built : 04:45:53, Mar 12 2024
    
    
    U-Boot 2024.01 (May 14 2024 - 03:31:48 +0000)
    
    CPU:   ZynqMP
    Silicon: v3
    Chip:  xck26
    Detected name: zynqmp-sm-k26-xcl2gi-rev1
    Model: ZynqMP SM-K26 Rev1/B/A
    Board: Xilinx ZynqMP
    DRAM:  2 GiB (effective 4 GiB)
    PMUFW:  v1.1
    Xilinx I2C FRU format at nvmem0:
     Manufacturer Name: XILINX
     Product Name: SM-K26-XCL2GI
     Serial No: XFL1EB532TAH
     Part Number: 5057-03
     File ID: 0x0
     Revision Number: 1
    EL Level:       EL2
    Secure Boot:    not authenticated, not encrypted
    Core:  60 devices, 33 uclasses, devicetree: board
    MMC:   mmc@ff160000: 0
    Loading Environment from nowhere... OK
    In:    serial
    Out:   serial,vidconsole
    Err:   serial,vidconsole
    Bootmode: JTAG_MODE
    Reset reason:   DEBUG
    Net:   PHY reset timed out
    
    ZYNQ GEM: ff0e0000, mdio bus ff0e0000, phyaddr 0, interface rgmii-id
    
    Warning: ethernet@ff0e0000 MAC addresses don't match:
    Address in DT is                ff:ff:ff:ff:ff:ff
    Address in environment is       00:0a:35:0f:da:a7
    eth0: ethernet@ff0e0000
    Setting bus to 1
    Error writing the chip: -121
    Setting bus to 1
    Error writing the chip: -121
    Setting bus to 2
    Failure changing bus number (-19)
    Setting bus to 1
    Error writing the chip: -121
    Enable permission for node ID 33
    Enable permission for node ID 47
    tpm_tis_spi_probe: missing reset GPIO
    Hit any key to stop autoboot:  0
    switch to partitions #0, OK
    mmc0(part 0) is current device
    ** No partition table - mmc 0 **
    Couldn't find partition mmc 0:1
    MMC Device 1 not found
    no mmc device at slot 1
    starting USB...
    No working controllers found
    USB is stopped. Please issue 'usb start' first.
    starting USB...
    No working controllers found
    USB is stopped. Please issue 'usb start' first.
    starting USB...
    No working controllers found
    USB is stopped. Please issue 'usb start' first.
    starting USB...
    No working controllers found
    USB is stopped. Please issue 'usb start' first.
    starting USB...
    No working controllers found
    USB is stopped. Please issue 'usb start' first.
    starting USB...
    No working controllers found
    BOOTP broadcast 1
    BOOTP broadcast 2
    BOOTP broadcast 3
    BOOTP broadcast 4
    BOOTP broadcast 5
    BOOTP broadcast 6
    BOOTP broadcast 7
    BOOTP broadcast 8
    BOOTP broadcast 9
    BOOTP broadcast 10
    BOOTP broadcast 11
    BOOTP broadcast 12
    BOOTP broadcast 13
    BOOTP broadcast 14
    BOOTP broadcast 15
    BOOTP broadcast 16
    BOOTP broadcast 17
    
    Retry time exceeded; starting again
    missing environment variable: pxeuuid
    Retrieving file: pxelinux.cfg/01-00-0a-35-0f-da-a7
    *** ERROR: `serverip' not set
    Retrieving file: pxelinux.cfg/00000000
    *** ERROR: `serverip' not set
    Retrieving file: pxelinux.cfg/0000000
    *** ERROR: `serverip' not set
    Retrieving file: pxelinux.cfg/000000
    *** ERROR: `serverip' not set
    Retrieving file: pxelinux.cfg/00000
    *** ERROR: `serverip' not set
    Retrieving file: pxelinux.cfg/0000
    *** ERROR: `serverip' not set
    Retrieving file: pxelinux.cfg/000
    *** ERROR: `serverip' not set
    Retrieving file: pxelinux.cfg/00
    *** ERROR: `serverip' not set
    Retrieving file: pxelinux.cfg/0
    *** ERROR: `serverip' not set
    Retrieving file: pxelinux.cfg/default-arm-zynqmp-zynqmp
    *** ERROR: `serverip' not set
    Retrieving file: pxelinux.cfg/default-arm-zynqmp
    *** ERROR: `serverip' not set
    Retrieving file: pxelinux.cfg/default-arm
    *** ERROR: `serverip' not set
    Retrieving file: pxelinux.cfg/default
    *** ERROR: `serverip' not set
    Config file not found
    starting USB...
    No working controllers found
    BOOTP broadcast 1
    BOOTP broadcast 2
    BOOTP broadcast 3
    BOOTP broadcast 4
    BOOTP broadcast 5
    BOOTP broadcast 6
    BOOTP broadcast 7
    BOOTP broadcast 8
    BOOTP broadcast 9
    BOOTP broadcast 10
    BOOTP broadcast 11
    BOOTP broadcast 12
    BOOTP broadcast 13
    BOOTP broadcast 14
    BOOTP broadcast 15
    BOOTP broadcast 16
    BOOTP broadcast 17
    
    Retry time exceeded; starting again
    BOOTP broadcast 1
    BOOTP broadcast 2
    BOOTP broadcast 3
    BOOTP broadcast 4
    BOOTP broadcast 5
    BOOTP broadcast 6
    BOOTP broadcast 7
    BOOTP broadcast 8
    BOOTP broadcast 9
    BOOTP broadcast 10
    BOOTP broadcast 11
    BOOTP broadcast 12
    BOOTP broadcast 13
    BOOTP broadcast 14
    BOOTP broadcast 15
    BOOTP broadcast 16
    BOOTP broadcast 17
    
    Retry time exceeded; starting again
    JTAG: Trying to boot script at 20000000
    ## Executing script at 20000000
    Wrong image format for "source" command
    JTAG: SCRIPT FAILED: continuing...
    Unknown command '
    ' - try 'help'
    ZynqMP> setenv ipaddr 192.168.11.11
    ZynqMP> setenv netmask 255.255.255.0
    ZynqMP> printenv ipaddr
    ipaddr=192.168.11.11
    ZynqMP> printenv netmask
    netmask=255.255.255.0
    ZynqMP> printenv ethaddr
    ethaddr=00:0a:35:0f:da:a7
    ZynqMP> ping 192.168.11.10
    Using ethernet@ff0e0000 device
    
    ARP Retry count exceeded; starting again
    ping failed; host 192.168.11.10 is not alive
    ZynqMP> mdio list
    eth0:
    0 - TI DP83867 <--> ethernet@ff0e0000
    ZynqMP> mdio read ethernet@ff0e0000 0
    Reading from bus eth0
    PHY at address 0:
    0 - 0xffff
    ZynqMP> mdio read ethernet@ff0e0000 1
    Reading from bus eth0
    PHY at address 0:
    1 - 0xffff
    ZynqMP> mdio read ethernet@ff0e0000 2
    Reading from bus eth0
    PHY at address 0:
    2 - 0xffff
    ZynqMP> mdio read ethernet@ff0e0000 3
    Reading from bus eth0
    PHY at address 0:
    3 - 0xffff
    ZynqMP> mdio read ethernet@ff0e0000 4
    Reading from bus eth0
    PHY at address 0:
    4 - 0xffff
    ZynqMP>
    

    Best Regards,

  • Hi Tokugawa-san,

    0 - TI DP83867 <--> ethernet@ff0e0000
    ZynqMP> mdio read ethernet@ff0e0000 0
    Reading from bus eth0
    PHY at address 0:
    0 - 0xffff

    From boot log, it's unclear if MDIO access failure is due to driver issue, incorrect PHY address strap, or the PHY not powering properly.

    Here are some test cases to confirm this, please let me know if these are viable:

    • Using external controller (e.g. MSP430F5529 Launchpad), connect MDC/MDIO from LP to DP83867 and access the PHY registers
    • During ping, probe MAC and MDI signal lines. If MAC signal lines are active during ping, PHY is alive.
    • Probe PHY XI input clock and power rails after powering.

    Thank you,

    Evan

  • Hi Evan-san,

    Thank you for checking.
    I am currently using a device tree like as follows, but please let me confirm if there are any problems.

    &gem3 {
    	status = "okay";
    	phy-handle = <&phy0>;
    	phy-mode = "rgmii-id";
    	pinctrl-names = "default";
    	pinctrl-0 = <&pinctrl_gem3_default>;
    	mdio: mdio {
    		#address-cells = <1>;
    		#size-cells = <0>;
    		phy0: ethernet-phy@0 {
    			#phy-cells = <1>;
    			compatible = "ethernet-phy-id2000.a231";
    			reg = <0x0>;
    			ti,rx-internal-delay = <0x8>;
    			ti,tx-internal-delay = <0xa>;
    			ti,fifo-depth = <0x1>;
    			ti,dp83867-rxctrl-strap-quirk;
    		};
    	};
    };
    
    &pinctrl0 {
    	status = "okay";	
    	pinctrl_gem3_default: gem3-default {
    		mux {
    			function = "ethernet3";
    			groups = "ethernet3_0_grp";
    		};
    
    		conf {
    			groups = "ethernet3_0_grp";
    			slew-rate = <SLEW_RATE_SLOW>;
    			power-source = <IO_STANDARD_LVCMOS18>;
    		};
    
    		conf-rx {
    			pins = "MIO70", "MIO71", "MIO72", "MIO73", "MIO74",
    									"MIO75";
    			bias-high-impedance;
    			low-power-disable;
    		};
    
    		conf-tx {
    			pins = "MIO64", "MIO65", "MIO66", "MIO67", "MIO68",
    									"MIO69";
    			bias-disable;
    			low-power-enable;
    		};
    
    		mux-mdio {
    			function = "mdio3";
    			groups = "mdio3_0_grp";
    		};
    
    		conf-mdio {
    			groups = "mdio3_0_grp";
    			slew-rate = <SLEW_RATE_SLOW>;
    			power-source = <IO_STANDARD_LVCMOS18>;
    			bias-disable;
    		};
    	};
    };
    
    

    Best Regards,

    Tatsuro

  • Hi Tokugawa-san,

    I don't see any concerns in the device tree.

    Please share results for any of the test cases noted in previous reply.

    Thank you,

    Evan

  • Hi Evan-san,

    Thank you for your reply.

    > Using external controller (e.g. MSP430F5529 Launchpad), connect MDC/MDIO from LP to DP83867 and access the PHY registers
    > During ping, probe MAC and MDI signal lines. If MAC signal lines are active during ping, PHY is alive.
    > Probe PHY XI input clock and power rails after powering.
    In the above three test cases, the PHY is connected to the FPGA and the resistor chip is small, so the signal cannot be probed with an oscilloscope.

    > From boot log, it's unclear if MDIO access failure is due to driver issue, incorrect PHY address strap, or the PHY not powering properly.
    Power appears to be properly supplied to the PHY as follows. Since there is no strap connected to the PHY, I think that the PHY address is "0".

    Best Regards,
    Tatsuro

  • Hi Tatsuro-san,

    It is challenging to confirm if PHY is alive or strapped with correct PHY address without access to probe the peripheral pins.

    One test we can do is to sweep from PHY addresses 0x0 to 0x31 and attempt register access at each address.

    Is it possible to test in Linux as well? As we do not have many options for hardware peripheral checks, checking driver init / register access in Linux would help isolate if SW or HW is the root cause.

    Thank you,

    Evan

  • Hi Evan-san,

    Thank you for your reply.

    > One test we can do is to sweep from PHY addresses 0x0 to 0x31 and attempt register access at each address.


    After changing the PHY address in order, it became recognized as "5" instead of "0".
    I don't know why the PHY address is "5", but I'm relieved

    U-Boot 2024.01 (May 14 2024 - 03:31:48 +0000)
    
    CPU:   ZynqMP
    Silicon: v3
    Chip:  xck26
    Detected name: zynqmp-sm-k26-xcl2gi-rev1
    Model: ZynqMP SM-K26 Rev1/B/A
    Board: Xilinx ZynqMP
    DRAM:  2 GiB (effective 4 GiB)
    PMUFW:  v1.1
    Xilinx I2C FRU format at nvmem0:
     Manufacturer Name: XILINX
     Product Name: SM-K26-XCL2GI
     Serial No: XFL1EB532TAH
     Part Number: 5057-03
     File ID: 0x0
     Revision Number: 1
    EL Level:       EL2
    Secure Boot:    not authenticated, not encrypted
    Core:  60 devices, 33 uclasses, devicetree: board
    MMC:   mmc@ff160000: 0
    Loading Environment from nowhere... OK
    In:    serial
    Out:   serial,vidconsole
    Err:   serial,vidconsole
    Bootmode: JTAG_MODE
    Reset reason:   DEBUG
    Net:
    ZYNQ GEM: ff0e0000, mdio bus ff0e0000, phyaddr 5, interface rgmii-id
    
    Warning: ethernet@ff0e0000 MAC addresses don't match:
    Address in DT is                00:04:99:40:03:ff
    Address in environment is       00:0a:35:0f:da:a7
    eth0: ethernet@ff0e0000
    Setting bus to 1
    Error writing the chip: -121
    Setting bus to 1
    Error writing the chip: -121
    Setting bus to 2
    Failure changing bus number (-19)
    Setting bus to 1
    Error writing the chip: -121
    Enable permission for node ID 33
    Enable permission for node ID 47
    tpm_tis_spi_probe: missing reset GPIO
    Hit any key to stop autoboot:  0
    switch to partitions #0, OK
    mmc0(part 0) is current device
    ** No partition table - mmc 0 **
    Couldn't find partition mmc 0:1
    MMC Device 1 not found
    no mmc device at slot 1
    starting USB...
    No working controllers found
    USB is stopped. Please issue 'usb start' first.
    starting USB...
    No working controllers found
    USB is stopped. Please issue 'usb start' first.
    starting USB...
    No working controllers found
    USB is stopped. Please issue 'usb start' first.
    starting USB...
    No working controllers found
    USB is stopped. Please issue 'usb start' first.
    starting USB...
    No working controllers found
    USB is stopped. Please issue 'usb start' first.
    starting USB...
    No working controllers found
    BOOTP broadcast 1
    BOOTP broadcast 2
    BOOTP broadcast 3
    BOOTP broadcast 4
    BOOTP broadcast 5
    BOOTP broadcast 6
    BOOTP broadcast 7
    BOOTP broadcast 8
    BOOTP broadcast 9
    BOOTP broadcast 10
    BOOTP broadcast 11
    BOOTP broadcast 12
    BOOTP broadcast 13
    BOOTP broadcast 14
    BOOTP broadcast 15
    BOOTP broadcast 16
    BOOTP broadcast 17
    
    Retry time exceeded; starting again
    missing environment variable: pxeuuid
    Retrieving file: pxelinux.cfg/01-00-0a-35-0f-da-a7
    *** ERROR: `ipaddr' not set
    Retrieving file: pxelinux.cfg/00000000
    *** ERROR: `ipaddr' not set
    Retrieving file: pxelinux.cfg/0000000
    *** ERROR: `ipaddr' not set
    Retrieving file: pxelinux.cfg/000000
    *** ERROR: `ipaddr' not set
    Retrieving file: pxelinux.cfg/00000
    *** ERROR: `ipaddr' not set
    Retrieving file: pxelinux.cfg/0000
    *** ERROR: `ipaddr' not set
    Retrieving file: pxelinux.cfg/000
    *** ERROR: `ipaddr' not set
    Retrieving file: pxelinux.cfg/00
    *** ERROR: `ipaddr' not set
    Retrieving file: pxelinux.cfg/0
    *** ERROR: `ipaddr' not set
    Retrieving file: pxelinux.cfg/default-arm-zynqmp-zynqmp
    *** ERROR: `ipaddr' not set
    Retrieving file: pxelinux.cfg/default-arm-zynqmp
    *** ERROR: `ipaddr' not set
    Retrieving file: pxelinux.cfg/default-arm
    *** ERROR: `ipaddr' not set
    Retrieving file: pxelinux.cfg/default
    *** ERROR: `ipaddr' not set
    Config file not found
    starting USB...
    No working controllers found
    BOOTP broadcast 1
    BOOTP broadcast 2
    BOOTP broadcast 3
    BOOTP broadcast 4
    BOOTP broadcast 5
    BOOTP broadcast 6
    BOOTP broadcast 7
    BOOTP broadcast 8
    BOOTP broadcast 9
    BOOTP broadcast 10
    BOOTP broadcast 11
    BOOTP broadcast 12
    BOOTP broadcast 13
    BOOTP broadcast 14
    BOOTP broadcast 15
    BOOTP broadcast 16
    BOOTP broadcast 17
    
    Retry time exceeded; starting again
    BOOTP broadcast 1
    BOOTP broadcast 2
    BOOTP broadcast 3
    BOOTP broadcast 4
    BOOTP broadcast 5
    BOOTP broadcast 6
    BOOTP broadcast 7
    BOOTP broadcast 8
    BOOTP broadcast 9
    BOOTP broadcast 10
    BOOTP broadcast 11
    BOOTP broadcast 12
    BOOTP broadcast 13
    BOOTP broadcast 14
    BOOTP broadcast 15
    BOOTP broadcast 16
    BOOTP broadcast 17
    
    Retry time exceeded; starting again
    JTAG: Trying to boot script at 20000000
    ## Executing script at 20000000
    Wrong image format for "source" command
    JTAG: SCRIPT FAILED: continuing...
    Unknown command '
    ' - try 'help'
    ZynqMP> mii info
    PHY 0x05: OUI = 0x80028, Model = 0x23, Rev = 0x01, 1000baseT, FDX
    ZynqMP> setenv ipaddr 192.168.11.75
    ZynqMP> setenv netmask 255.255.255.0
    ZynqMP> ping 192.168.11.74
    Using ethernet@ff0e0000 device
    host 192.168.11.74 is alive
    ZynqMP> mdio read 0 0
    0 is not a known ethernet
    Reading from bus eth0
    PHY at address 0:
    0 - 0xffff
    ZynqMP> mdio read 5 0
    5 is not a known ethernet
    Reading from bus eth0
    PHY at address 5:
    0 - 0x1140
    ZynqMP> mdio read 5 1
    5 is not a known ethernet
    Reading from bus eth0
    PHY at address 5:
    1 - 0x796d
    ZynqMP> mdio read 5 2
    5 is not a known ethernet
    Reading from bus eth0
    PHY at address 5:
    2 - 0x2000
    ZynqMP> mdio read 5 3
    5 is not a known ethernet
    Reading from bus eth0
    PHY at address 5:
    3 - 0xa231
    ZynqMP> mdio read 5 4
    5 is not a known ethernet
    Reading from bus eth0
    PHY at address 5:
    4 - 0x1e1
    ZynqMP>

    /include/ "system-conf.dtsi"
    / {
    	chosen {
                    bootargs = "earlycon console=ttyPS1,115200 clk_ignore_unused ext4=/dev/mmcblk0p2:/rootfs init_fatal_sh=1 cma=900M ";
                    stdout-path = "serial1:115200n8";
            };
    };
    
    &cpu_opp_table {
    		compatible = "operating-points-v2";
    		opp-shared;
    		opp04 {
    			opp-hz = /bits/ 64 <1299999988>;
    			opp-microvolt = <1000000>;
    			clock-latency-ns = <500000>;
    			};
    };
    
    &gem3 {
    	status = "okay";
    	phy-handle = <&phy0>;
    	phy-mode = "rgmii-id";
    	pinctrl-names = "default";
    	pinctrl-0 = <&pinctrl_gem3_default>;
    	mdio: mdio {
    		#address-cells = <1>;
    		#size-cells = <0>;
    		phy0: ethernet-phy@5 {								# <----- Change PHY address to "5"
    			#phy-cells = <1>;
    			compatible = "ethernet-phy-id2000.a231";
    			reg = <0x5>;									# <----- Change PHY address to "5"
    			ti,rx-internal-delay = <0x8>;
    			ti,tx-internal-delay = <0xa>;
    			ti,fifo-depth = <0x1>;
    			ti,dp83867-rxctrl-strap-quirk;
    		};
    	};
    };
    
    &pinctrl0 {
    	status = "okay";	
    	pinctrl_gem3_default: gem3-default {
    		mux {
    			function = "ethernet3";
    			groups = "ethernet3_0_grp";
    		};
    
    		conf {
    			groups = "ethernet3_0_grp";
    			slew-rate = <SLEW_RATE_SLOW>;
    			power-source = <IO_STANDARD_LVCMOS18>;
    		};
    
    		conf-rx {
    			pins = "MIO70", "MIO71", "MIO72", "MIO73", "MIO74",
    									"MIO75";
    			bias-high-impedance;
    			low-power-disable;
    		};
    
    		conf-tx {
    			pins = "MIO64", "MIO65", "MIO66", "MIO67", "MIO68",
    									"MIO69";
    			bias-disable;
    			low-power-enable;
    		};
    
    		mux-mdio {
    			function = "mdio3";
    			groups = "mdio3_0_grp";
    		};
    
    		conf-mdio {
    			groups = "mdio3_0_grp";
    			slew-rate = <SLEW_RATE_SLOW>;
    			power-source = <IO_STANDARD_LVCMOS18>;
    			bias-disable;
    		};
    	};
    };

    It was very helpful for me to consult with you.

    Thanks a lot.
    Tatsuro

  • Hi Tatsuro-san,

    Great to hear the PHY is alive and recognized!

    There are two possible causes for unexpected PHY address:

    1) Strap connections on PHY address bootstrap pins. I did not see any straps in schematic, but I do not have the full schematic file to confirm.
    2) MAC is driving PHY bootstrap pins during PHY power-up.

    Thank you,

    Evan