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.

AM62L: Ethernet PHY auto-negotiation failure on AM62L32 (DP83822, RMII) in U-Boot

Part Number: AM62L

Hello,

We are developing a custom board based on the AM62L32 SoC (SDK 11.00.15.05). The board uses a DP83822 Ethernet PHY in RMII mode. The PHY works correctly from the Linux kernel, but in U-Boot we are encountering an auto-negotiation/configuration failure when the cable is not connected at boot.

Below are the relevant device-tree nodes and the observed U-Boot log and behavior.

rmii1_pins_default: rgmii1-default-pins {
    pinctrl-single,pins = <
        AM62LX_IOPAD(0x011c, PIN_INPUT, 1) /* (W11) RMII1_CRS_DV */
        AM62LX_IOPAD(0x0134, PIN_INPUT, 1) /* (Y7) RMII1_REF_CLK */
        AM62LX_IOPAD(0x0138, PIN_INPUT, 1) /* (Y8) RMII1_RXD0 */
        AM62LX_IOPAD(0x013c, PIN_INPUT, 1) /* (AA6) RMII1_RXD1 */
        AM62LX_IOPAD(0x0130, PIN_INPUT, 1) /* (Y6) RMII1_RX_ER */
        AM62LX_IOPAD(0x0120, PIN_OUTPUT, 1) /* (AC10) RMII1_TXD0 */
        AM62LX_IOPAD(0x0124, PIN_OUTPUT, 1) /* (W13) RMII1_TXD1 */
        AM62LX_IOPAD(0x0118, PIN_OUTPUT, 1) /* (AB11) RMII1_TX_EN */
    >;
};

mdio1_pins_default: mdio1-default-pins {
    pinctrl-single,pins = <
        AM62LX_IOPAD(0x014c, PIN_OUTPUT, 0) /* (AC15) MDIO0_MDC */
        AM62LX_IOPAD(0x0148, PIN_INPUT, 0) /* (AC13) MDIO0_MDIO */
    >;
};

wkup_gpio0_pins_default: wkup-gpio0-default-pins {
    pinctrl-single,pins = <
        AM62LX_IOPAD(0x000c, PIN_OUTPUT_PULLUP, 7) /* (W22) WKUP_GPIO0_3 */
    >;
};

&wkup_gpio0 {
    status = "okay";
};  
    
&cpsw3g {
    pinctrl-names = "default";
    pinctrl-0 = <&rmii1_pins_default>;
};  
    
&cpsw_port1 {
    phy-mode = "rmii";
    phy-handle = <&cpsw3g_phy1>;
};  
    
&cpsw_port2 {
    status = "disabled";
};
    
&cpsw3g_mdio {
    pinctrl-names = "default";
    pinctrl-0 = <&mdio1_pins_default>;
    status = "okay";
    
    cpsw3g_phy1: ethernet-phy@31 {
        reg = <31>;
        ti,rmii-mode = "master";
        pinctrl-names = "default";
        pinctrl-0 = <&wkup_gpio0_pins_default>;
        reset-gpios = <&wkup_gpio0 3 GPIO_ACTIVE_LOW>;
        reset-assert-us = <100>;
        reset-deassert-us = <500>;
    };
};

If the PHY is not connected at boot, we see the following when attempting to ping (or when U-Boot tries to bring up the interface):

=> ping 192.168.27.86
ethernet@8000000port@1 Waiting for PHY auto negotiation to complete......... TIMEOUT !
am65_cpsw_nuss_port ethernet@8000000port@1: phy_startup failed
am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error
Using ethernet@8000000port@1 device

ARP Retry count exceeded; starting again
am65_cpsw_nuss_port ethernet@8000000port@1: phy_config failed: -110
am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error
ping failed; host 192.168.27.86 is not alive

After physically plugging in the cable and retrying:

=> ping 192.168.27.86
am65_cpsw_nuss_port ethernet@8000000port@1: phy_config failed: -110
am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error
Using ethernet@8000000port@1 device

ARP Retry count exceeded; starting again
am65_cpsw_nuss_port ethernet@8000000port@1: phy_config failed: -110
am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error
ping failed; host 192.168.27.86 is not alive

The same device-tree in the Linux kernel results in a working Ethernet link , so the hardware wiring, PHY ID and configuration appear correct at the kernel level.

The PHY auto-negotiation / configuration in U-Boot times out when the cable is not connected at boot; once the cable is connected later, U-Boot still fails to configure the PHY (-110 timeout). We need guidance for resolving the issue.

Thanks,
Nilesh 

  • Hello Nilesh,

    Please let me contact an U-boot expert. Expect some delay. Thanks for your patience.

    Regards,

    Stan

  • Hello Stanislav,

    Any update on this ?

    Thanks,
    Nilesh

  • Hi,

    What is the primary boot mode for your board? Do you have an AM62L EVM? If so do you see the same issue using the default SD card boot mode for the EVM?

    Best Regards,

    Schuyler

  • Hi,

    Default boot mode is EMMC for board. I have not checked on AM62L EVM, will check that.

    Thanks,
    Nilesh

  • Hi Schuyler,

    With default prebuilt image (tisdk-default-image-am62lxx-evm-11.00.15.05.rootfs.wic) provided in SDK 11.00.15.05 flashed on SD Card, i checked the same scenario where Ethernet cable is not connected to evm and tried to ping, for first the auto negotiation fails and connected the cable on the device and again tried to ping same address the auto negotiation does not happens or the phy config fails in uboot.

    Please find below EVM logs for the same

    NOTICE: bl1_plat_arch_setup arch setup
    NOTICE: Booting Trusted Firmware
    NOTICE: BL1: v2.12.0(release):11.00.13-5-ga70f82d5a-dirty
    NOTICE: BL1: Built : 12:24:23, May 29 2025
    NOTICE: BL1: dram_class: 11
    NOTICE: lpddr4: post start - PI training status=0x27c0a000
    NOTICE: bl1_platform_setup DDR init done
    NOTICE: k3_bl1_handoff ENTERING WFI - end of bl1
    NOTICE: BL31: v2.12.0(release):11.00.13-5-ga70f82d5a-dirty
    NOTICE: BL31: Built : 12:24:23, May 29 2025
    NOTICE: SYSFW ABI: 4.0 (firmware rev 0x000b '11.0.12-v11.00.12 (Fancy Rat)')
    ERROR: Agent 0 Protocol 0x10 Message 0x7: not supported

    U-Boot SPL 2025.01-00464-g1d6ba4a32cdd (May 29 2025 - 19:36:32 +0000)
    SPL initial stack usage: 1872 bytes
    Trying to boot from MMC2
    ERROR: Agent 0 Protocol 0x10 Message 0x7: not supported


    U-Boot 2025.01-00464-g1d6ba4a32cdd (May 29 2025 - 19:36:32 +0000)

    SoC: AM62LX SR1.0 HS-FS
    Model: Texas Instruments AM62L3 Evaluation Module
    DRAM: 2 GiB
    ERROR: Agent 0 Protocol 0x10 Message 0x7: not supported
    Core: 80 devices, 31 uclasses, devicetree: separate
    MMC: mmc@fa10000: 0, mmc@fa00000: 1
    Loading Environment from nowhere... OK
    In: serial@2800000
    Out: serial@2800000
    Err: serial@2800000
    Net: eth0: ethernet@8000000port@1
    Warning: ethernet@8000000port@2 (eth1) using random MAC address - de:41:f0:86:7a:61
    , eth1: ethernet@8000000port@2
    Hit any key to stop autoboot: 0
    =>
    =>
    =>
    => mii infoc
    PHY 0x00: OUI = 0x80028, Model = 0x23, Rev = 0x01, 10baseT, HDX
    PHY 0x01: OUI = 0x80028, Model = 0x23, Rev = 0x01, 10baseT, HDX
    => mii infoc
    PHY 0x00: OUI = 0x80028, Model = 0x23, Rev = 0x01, 10baseT, HDX
    PHY 0x01: OUI = 0x80028, Model = 0x23, Rev = 0x01, 10baseT, HDX
    => env set serverip 192.168.27.86
    => env set ipaddr 192.168.27.87
    => ping 192.168.27.86
    ethernet@8000000port@1 Waiting for PHY auto negotiation to complete......... TIMEOUT !
    am65_cpsw_nuss_port ethernet@8000000port@1: phy_startup failed
    am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error
    am65_cpsw_nuss_port ethernet@8000000port@2: phy_config failed: -110am65_cpsw_nuss_port ethernet@8000000port@2: am65_cpsw_start end error
    Using ethernet@8000000port@1 device

    ARP Retry count exceeded; starting again
    ping failed; host 192.168.27.86 is not alive
    => ping 192.168.27.86
    am65_cpsw_nuss_port ethernet@8000000port@1: phy_config failed: -110am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error
    am65_cpsw_nuss_port ethernet@8000000port@2: phy_config failed: -110am65_cpsw_nuss_port ethernet@8000000port@2: am65_cpsw_start end error
    Using ethernet@8000000port@1 device

    ARP Retry count exceeded; starting again
    ping failed; host 192.168.27.86 is not alive
    => 


    Thanks,
    Nilesh 

  • Hi Schuyler,

    Any update on this ?

    Thanks,
    Nilesh

  • Hello Stanislav,

    Any update on this ?

    Thanks,
    Nilesh

  • Hello Schuyler,

    Any update on this.

    Thanks,
    Nilesh

  • Hello Nilesh,

    Have some doubts on the am62l ddr booting, can you accept my connection request?

    thank you.

  • Hi,

    This is possibly an issue with how u-boot is architected concerning the state machine of the ethernet driver. 

    Is the following sequence what you are experiencing?

    - Cable is dis-connected at boot, perform a network command such as DHCP, timeout happens since there is not a link partner, connecting the cable does not correct the timeout issue.

    - Cable is connected at boot, perform a network command such as DHCP and the ethernet works as expected. This proves that the networking portion of u-boot works as expected, no DTS issues.

    Best Regards,

    Schuyler

  • Hi Schuyler,

    Yes the sequence i'm experiencing is exactly what you mentioned

    - Cable is dis-connected at boot, perform a network command such as DHCP, timeout happens since there is not a link partner, connecting the cable does not correct the timeout issue.

    => Yes, if the cable is not connected we get timeout error and connecting the cable does not correct timeout issue, below is the log for the same scenario

    Logs: 

    => dhcp
    ethernet@8000000port@1 Waiting for PHY auto negotiation to complete......... TIMEOUT !
    am65_cpsw_nuss_port ethernet@8000000port@1: phy_startup failed
    am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error
    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

    Abort
    => dhcp
    am65_cpsw_nuss_port ethernet@8000000port@1: phy_config failed: -110am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error
    BOOTP broadcast 1
    BOOTP broadcast 2
    BOOTP broadcast 3
    BOOTP broadcast 4
    BOOTP broadcast 5
    BOOTP broadcast 6
    BOOTP broadcast 7

    Abort
    =>

    - Cable is connected at boot, perform a network command such as DHCP and the ethernet works as expected. This proves that the networking portion of u-boot works as expected, no DTS issues. 

    => Yes,  if the cable is connected at boot, the ethernet works as expected. Below is log when the cable is connected at boot and run the dhcp command

    Logs:

    => dhcp
    link up on port 1, speed 100, full duplex
    BOOTP broadcast 1
    BOOTP broadcast 2
    BOOTP broadcast 3
    BOOTP broadcast 4

    Abort
    =>

    Could you please let us know if there is:

    • A known workaround (e.g., explicit PHY reset, re-init sequence, or env/config option), or

    • A recommended patch or configuration change in U-Boot to handle late cable insertion gracefully?

    Any guidance or solution you can provide for this scenario would be greatly appreciated.

    Best Regards,
    Nilesh