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.

AM620-Q1: Enabling eth1 in U-boot shell.

Part Number: AM620-Q1
Other Parts Discussed in Thread: AM620, DP83869

Tool/software:

If I enable eth1 in * uboot.dtsi, why can I not make it "active'?

How do I enable the second ethernet port?  I'm assuming it's done using "k3-am62x-sk-common-u-boot.dtsi".  I made a change here to see the above in u-boot shell but I think I'm missing some configuration info.  Here's my "k3-am62x-sk-common-u-boot.dtsi" file:

// SPDX-License-Identifier: GPL-2.0
/*
 * Common AM62x SK dts file for SPLs
 * Copyright (C) 2021-2022 Texas Instruments Incorporated - https://www.ti.com/
 */

/ {
	chosen {
		stdout-path = "serial2:115200n8";
		tick-timer = &timer1;
	};

	aliases {
		mmc0 = &sdhci0;
		mmc1 = &sdhci1;
	};

	memory@80000000 {
		bootph-pre-ram;
	};
};

&cbass_main{
	bootph-pre-ram;

	timer1: timer@2400000 {
		clock-frequency = <25000000>;
		bootph-pre-ram;
	};
};

&dmss {
	bootph-pre-ram;
};

&secure_proxy_main {
	bootph-pre-ram;
};

&dmsc {
	bootph-pre-ram;
	k3_sysreset: sysreset-controller {
		compatible = "ti,sci-sysreset";
		bootph-pre-ram;
	};
};

&k3_pds {
	bootph-pre-ram;
};

&k3_clks {
	bootph-pre-ram;
};

&k3_reset {
	bootph-pre-ram;
};

&wkup_conf {
	bootph-pre-ram;
};

&chipid {
	bootph-pre-ram;
};

&main_pmx0 {
	bootph-pre-ram;
};

&main_uart0 {
	bootph-pre-ram;
};

&main_uart0_pins_default {
	bootph-pre-ram;
};

&main_uart1 {
	bootph-pre-ram;
};

&cbass_mcu {
	bootph-pre-ram;
};

&cbass_wakeup {
	bootph-pre-ram;
};

&mcu_pmx0 {
	bootph-pre-ram;
};

&wkup_uart0 {
	bootph-pre-ram;
};

&main_i2c0 {
	bootph-pre-ram;
};

&main_i2c0_pins_default {
	bootph-pre-ram;
};

&sdhci0 {
	bootph-pre-ram;
};

&sdhci1 {
	bootph-pre-ram;
};

&main_mmc1_pins_default {
	bootph-pre-ram;
};

&usbss0 {
	bootph-pre-ram;
};

&usb0 {
	dr_mode = "peripheral";
	/* Since role switching is not supported in U-Boot */
	/delete-property/ extcon;
	bootph-pre-ram;
};

&usbss1 {
	bootph-pre-ram;
};

&usb1 {
	bootph-pre-ram;
};

&main_usb1_pins_default {
	bootph-pre-ram;
};

&cpsw3g {
	reg = <0x0 0x8000000 0x0 0x200000>,
	      <0x0 0x43000200 0x0 0x8>;
	reg-names = "cpsw_nuss", "mac_efuse";
	/delete-property/ ranges;
	/* This is WA because MDIO driver is not DM enabled */
	pinctrl-0 = <&main_mdio1_pins_default &main_rgmii1_pins_default>;
	bootph-pre-ram;

	cpsw-phy-sel@04044 {
		compatible = "ti,am64-phy-gmii-sel";
		reg = <0x0 0x00104044 0x0 0x8>;
		bootph-pre-ram;
	};
};

//&cpsw_port2 {
// JM 	status = "disabled";
//	bootph-pre-ram;
//};

&main_bcdma {
	bootph-pre-ram;
	reg = <0x00 0x485c0100 0x00 0x100>,
	      <0x00 0x4c000000 0x00 0x20000>,
	      <0x00 0x4a820000 0x00 0x20000>,
	      <0x00 0x4aa40000 0x00 0x20000>,
	      <0x00 0x4bc00000 0x00 0x100000>,
	      <0x00 0x48600000 0x00 0x8000>,
	      <0x00 0x484a4000 0x00 0x2000>,
	      <0x00 0x484c2000 0x00 0x2000>;
	reg-names = "gcfg", "bchanrt", "rchanrt", "tchanrt",
		    "ringrt" , "cfg", "tchan", "rchan";
};

&main_pktdma {
	bootph-pre-ram;
	reg = <0x00 0x485c0000 0x00 0x100>,
	      <0x00 0x4a800000 0x00 0x20000>,
	      <0x00 0x4aa00000 0x00 0x20000>,
	      <0x00 0x4b800000 0x00 0x200000>,
	      <0x00 0x485e0000 0x00 0x10000>,
	      <0x00 0x484a0000 0x00 0x2000>,
	      <0x00 0x484c0000 0x00 0x2000>,
	      <0x00 0x48430000 0x00 0x1000>;
	reg-names = "gcfg", "rchanrt", "tchanrt", "ringrt",
		    "cfg", "tchan", "rchan", "rflow";
};

&fss {
	bootph-pre-ram;
};

&cpsw_port1 {
	bootph-pre-ram;
};
// JM
&cpsw_port2 {
	bootph-pre-ram;
};
// end
&main_rgmii1_pins_default {
	bootph-pre-ram;
};
// JM
//&main_rgmii2_pins_default {
//	bootph-pre-ram;
//};
// end 
&main_mdio1_pins_default {
	bootph-pre-ram;
};

&cpsw3g_phy0 {
	bootph-pre-ram;
};
// JM
//&cpsw3g_phy1 {
//	bootph-pre-ram;
//};
// end
&dmsc {
	bootph-pre-ram;
	k3_sysreset: sysreset-controller {
		compatible = "ti,sci-sysreset";
		bootph-pre-ram;
	};
};

&main_gpio0 {
	bootph-pre-ram;
};

&main_i2c1 {
	bootph-pre-ram;
};

&main_i2c1_pins_default {
	bootph-pre-ram;
};

&exp1 {
	bootph-pre-ram;
};

&vdd_mmc1 {
	bootph-pre-ram;
};

USB0 should be started by default, correct?  We don't have a usbc device on USB0, just a standard USBA connection.  Any changes required there in the file, as well?

Right now I get the following:

  • Hello Jim,

    Which U-boot version are you currently using? Yes, I believe it should be "k3-am62x-sk-common-u-boot.dtsi" where you should enable the 2nd ethernet port. After doing some research, it seems that you might need to try adding a "ethernet-ports" section like the below. I got this information from another individual who seemed to have got ethernet port 2 working in U-boot, although on AM64x. 

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1335810/am6422-ethernet-boot/5193990?tisearch=e2e-sitesearch&keymatch=ethact#5193990 

    &cpsw3g {
    	reg = <0x0 0x8000000 0x0 0x200000>,
    	      <0x0 0x43000200 0x0 0x8>;
    	reg-names = "cpsw_nuss", "mac_efuse";
    	/delete-property/ ranges;
    	pinctrl-0 = <&mdio1_pins_default	/* HACK: as MDIO driver is not DM enabled */
    		     &rmii1_pins_default>;
    	bootph-pre-ram;
    
    	cpsw-phy-sel@04044 {
    		compatible = "ti,am64-phy-gmii-sel";
    		reg = <0x0 0x43004044 0x0 0x8>;
    		bootph-pre-ram;
    	};
    
    	ethernet-ports { <-------Add this and try it out
    		bootph-pre-ram;
    	};
    };
    
    &cpsw_port2 {
    	bootph-pre-ram;
    };
    
    &rmii1_pins_default {
    	bootph-pre-ram;
    };
    
    &mdio1_pins_default {
    	bootph-pre-ram;
    };
    
    &cpsw3g_phy13 {
    	bootph-pre-ram;
    };

    I'm going to try replicating your steps on my setup, but I won't get to it until likely tomorrow. Just to clarify, the following were the steps you took?

    1. Make changes to k3-am62x-sk-common-u-boot.dtsi 

    2. Build U-boot

    3. Copy the u-boot binaries to SD card

    4. Boot into U-boot prompt

    5. Run the "setenv ethact eth1" command

    For the USB question, I'd recommend making that a separate E2E post as currently, this thread is assigned to ethernet support experts.

    -Daolin

  • Doalin,

    Great!  I'm using U-Boot 2023.04(?) - see below:

    I'll try the changes you suggested for eth1.  I'll watch for your response.

  • Hi Jim,

    I made the below additions to the default "k3-am62x-sk-common-u-boot.dtsi", rebuilt u-boot, copied the 3 u-boot binaries into the boot partition of my SD card.

    &cpsw3g {
    	reg = <0x0 0x8000000 0x0 0x200000>,
    	      <0x0 0x43000200 0x0 0x8>;
    	reg-names = "cpsw_nuss", "mac_efuse";
    	/delete-property/ ranges;
    	/* This is WA because MDIO driver is not DM enabled */
    	pinctrl-0 = <&main_mdio1_pins_default &main_rgmii1_pins_default &main_rgmii2_pins_default>;
    	bootph-pre-ram;
    
    	cpsw-phy-sel@04044 {
    		compatible = "ti,am64-phy-gmii-sel";
    		reg = <0x0 0x00104044 0x0 0x8>;
    		bootph-pre-ram;
    	};
    };
    
    &cpsw_port2 {
    	phy-mode = "rgmii-rxid";
    	phy-handle = <&cpsw3g_phy1>;
    	bootph-pre-ram;
    };
    
    &cpsw3g_mdio {
    	cpsw3g_phy1: ethernet-phy@1 {
    		reg = <1>;
    		ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
    		ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
    		ti,min-output-impedance;
    	};
    };
    
    &main_pmx0 {
    	main_rgmii2_pins_default: main-rgmii2-pins-default {
    		pinctrl-single,pins = <
    			AM62X_IOPAD(0x184, PIN_INPUT, 0) /* (AE23) RGMII2_RD0 */
    			AM62X_IOPAD(0x188, PIN_INPUT, 0) /* (AB20) RGMII2_RD1 */
    			AM62X_IOPAD(0x18c, PIN_INPUT, 0) /* (AC21) RGMII2_RD2 */
    			AM62X_IOPAD(0x190, PIN_INPUT, 0) /* (AE22) RGMII2_RD3 */
    			AM62X_IOPAD(0x180, PIN_INPUT, 0) /* (AD23) RGMII2_RXC */
    			AM62X_IOPAD(0x17c, PIN_INPUT, 0) /* (AD22) RGMII2_RX_CTL */
    			AM62X_IOPAD(0x16c, PIN_OUTPUT, 0) /* (Y18) RGMII2_TD0 */
    			AM62X_IOPAD(0x170, PIN_OUTPUT, 0) /* (AA18) RGMII2_TD1 */
    			AM62X_IOPAD(0x174, PIN_OUTPUT, 0) /* (AD21) RGMII2_TD2 */
    			AM62X_IOPAD(0x178, PIN_OUTPUT, 0) /* (AC20) RGMII2_TD3 */
    			AM62X_IOPAD(0x168, PIN_OUTPUT, 0) /* (AE21) RGMII2_TXC */
    			AM62X_IOPAD(0x164, PIN_OUTPUT, 0) /* (AA19) RGMII2_TX_CTL */
    		>;
    	};
    };

    I'm testing on an SK-AM62x EVM connected via the 2nd port directly to a host Linux PC running a DHCP server. Testing in the U-boot console, I am able to check that an IP address has been assigned to port 2 and perform a ping test.

    I do however see that despite setting ethact to eth1, I don't see it listed as active in net list. I'm not yet sure why this is the case, but functionality wise, it appears that port 2 is functional. I would suggest testing your port2 with a link partner like I did and see if it's able to ping to the linked partner with your current configuration. If it doesn't work, I would suggest adding the same changes I made to the "k3-am62x-sk-common-u-boot.dtsi" if you are testing on a SK-AM62x EVM.

    => net list
    eth0 : ethernet@8000000port@1 1c:63:49:0f:61:eb active
    eth1 : ethernet@8000000port@2 70:ff:76:1e:d4:5c 
    => setenv ethact eth1
    => net list          
    eth0 : ethernet@8000000port@1 1c:63:49:0f:61:eb active
    eth1 : ethernet@8000000port@2 70:ff:76:1e:d4:5c 
    => setenv autoload no; dhcp;
    link up on port 2, speed 1000, full duplex
    BOOTP broadcast 1
    BOOTP broadcast 2
    BOOTP broadcast 3
    DHCP client bound to address 172.168.1.32 (1036 ms)
    => ping 172.168.1.1
    link up on port 2, speed 1000, full duplex
    Using ethernet@8000000port@2 device
    host 172.168.1.1 is alive
    

    For documentation purposes, this is what it looks like when "setenv ethact eth1" did not get run to move the active ethernet port to the 2nd port. So it seems almost as if U-boot automatically moves ethact to the second port, along with labeling it as "active".

    => net list
    eth0 : ethernet@8000000port@1 1c:63:49:0f:61:eb active
    eth1 : ethernet@8000000port@2 70:ff:76:1e:d4:5c 
    => printenv ethact
    ## Error: "ethact" not defined
    => setenv autoload no; 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
    link up on port 2, speed 1000, full duplex
    BOOTP broadcast 1
    BOOTP broadcast 2
    BOOTP broadcast 3
    DHCP client bound to address 172.168.1.35 (1034 ms)
    => setenv autoload no; dhcp;
    link up on port 2, speed 1000, full duplex
    BOOTP broadcast 1
    BOOTP broadcast 2
    BOOTP broadcast 3
    DHCP client bound to address 172.168.1.35 (1022 ms)
    => ping 172.168.1.1
    link up on port 2, speed 1000, full duplex
    Using ethernet@8000000port@2 device
    host 172.168.1.1 is alive
    => printenv ethact
    ethact=ethernet@8000000port@2
    => net list
    eth0 : ethernet@8000000port@1 1c:63:49:0f:61:eb 
    eth1 : ethernet@8000000port@2 70:ff:76:1e:d4:5c active
    => 
    

    Another test I ran seemed to indicate only after activating the 2nd port with dhcp or ping would set the "active" label to port2

    => net list
    eth0 : ethernet@8000000port@1 1c:63:49:0f:61:eb active
    eth1 : ethernet@8000000port@2 70:ff:76:1e:d4:5c 
    => printenv ethact
    ## Error: "ethact" not defined
    => setenv ethact eth1
    => printenv ethact   
    ethact=eth1
    => \<INTERRUPT>
    => net list          
    eth0 : ethernet@8000000port@1 1c:63:49:0f:61:eb active
    eth1 : ethernet@8000000port@2 70:ff:76:1e:d4:5c 
    => setenv ethact ethernet@8000000port@2
    => net list                            
    eth0 : ethernet@8000000port@1 1c:63:49:0f:61:eb active
    eth1 : ethernet@8000000port@2 70:ff:76:1e:d4:5c 
    => setenv autoload no; dhcp;
    link up on port 2, speed 1000, full duplex
    BOOTP broadcast 1
    BOOTP broadcast 2
    BOOTP broadcast 3
    DHCP client bound to address 172.168.1.35 (1020 ms)
    => net list
    eth0 : ethernet@8000000port@1 1c:63:49:0f:61:eb 
    eth1 : ethernet@8000000port@2 70:ff:76:1e:d4:5c active
    => 
    

    -Daolin

  • Doalin,

    OK!  I've attached a log on our hardware and got the following:

    U-Boot SPL 2023.04-dirty (Jul 01 2024 - 10:27:56 -0400)
    SYSFW ABI: 3.1 (firmware rev 0x0009 '9.2.8--v09.02.08 (Kool Koala)')
    SPL initial stack usage: 13408 bytes
    Trying to boot from MMC2
    Authentication passed
    Authentication passed
    Authentication passed
    Authentication passed
    Authentication passed
    Starting ATF on ARM64 core...
    
    NOTICE:  BL31: v2.10.0(release):v2.10.0-367-g00f1ec6b87-dirty
    NOTICE:  BL31: Built : 16:09:05, Feb  9 2024
    
    U-Boot SPL 2023.04-dirty (Jul 01 2024 - 10:28:03 -0400)
    SYSFW ABI: 3.1 (firmware rev 0x0009 '9.2.8--v09.02.08 (Kool Koala)')
    SPL initial stack usage: 1856 bytes
    Trying to boot from MMC2
    Authentication passed
    Authentication passed
    
    
    U-Boot 2023.04-dirty (Jul 01 2024 - 10:28:03 -0400)
    
    SoC:   AM62X SR1.0 HS-FS
    Model: Texas Instruments AM625 SK
    EEPROM not available at 80, trying to read at 81
    Reading on-board EEPROM at 0x51 failed -121
    DRAM:  no bloblist found!2 GiB
    Core:  66 devices, 28 uclasses, devicetree: separate
    MMC:   mmc@fa10000: 0, mmc@fa00000: 1
    Loading Environment from nowhere... OK
    In:    serial
    Out:   serial
    Err:   serial
    EEPROM not available at 80, trying to read at 81
    Reading on-board EEPROM at 0x51 failed -121
    Net:   eth0: ethernet@8000000port@1
    Warning: ethernet@8000000port@2 (eth1) using random MAC address - 92:94:e0:3e:b5:3d
    , eth1: ethernet@8000000port@2
    Hit any key to stop autoboot:  0
    => net list
    eth0 : ethernet@8000000port@1 98:03:8a:7f:17:3f active
    eth1 : ethernet@8000000port@2 92:94:e0:3e:b5:3d
    => setenv ethact eth1
    => net list
    eth0 : ethernet@8000000port@1 98:03:8a:7f:17:3f active
    eth1 : ethernet@8000000port@2 92:94:e0:3e:b5:3d
    => setenv autoload no; dhcp;
    link up on port 2, speed 10, half duplex
    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
    
    Abort
    => net list
    eth0 : ethernet@8000000port@1 98:03:8a:7f:17:3f
    eth1 : ethernet@8000000port@2 92:94:e0:3e:b5:3d active
    => setenv ipaddr 192.168.1.51
    => ping 192.168.1.50
    link up on port 2, speed 10, half duplex
    Using ethernet@8000000port@2 device
    host 192.168.1.50 is alive
    =>
    

    Why is our eth1 at speed 10, half duplex?  Also, any explanation for the need for me to set the ipaddr?

  • Hi Jim, 

    Why is our eth1 at speed 10, half duplex?

    Is your linked partner, the device you connected your DUT via ethernet cable with IP address 192.168.1.50, limited to 10Mbps, half duplex? Another thing to double check if the link is up via mii tool in U-boot (see below).

    => mii 
    mii - MII utility commands
    
    Usage:
    mii device                           - list available devices
    mii device <devname>                 - set current device
    mii info  <addr>                    - display MII PHY info
    mii read  <addr> <reg>              - read MII PHY <addr> register <reg>
    mii write <addr> <reg> <data>       - write MII PHY <addr> register <reg>
    mii modify <addr> <reg> <data> <mask> - modify MII PHY <addr> register <reg>
                                           updating bits identified in <mask>
    mii dump  <addr> <reg>              - pretty-print <addr> <reg> (0-5 only)
    Addr and/or reg may be ranges, e.g. 2-7.
    => mii device
    MII devices: 'mdio@f00' 'ethernet@8000000port@1' 
    Current device: 'mdio@f00'
    => mii device ethernet@8000000port@1
    => mii device
    MII devices: 'mdio@f00' 'ethernet@8000000port@1' 
    Current device: 'ethernet@8000000port@1'
    => mii dump 1 0
    0.    (1140)                -- PHY control register --
     (8000:0000) 0.15   =    0    reset
     (4000:0000) 0.14   =    0    loopback
     (2040:0040) 0. 6,13 =  b10   speed selection = 1000 Mbps <---check this
     (1000:1000) 0.12   =    1    A/N enable
     (0800:0000) 0.11   =    0    power-down
     (0400:0000) 0.10   =    0    isolate
     (0200:0000) 0. 9   =    0    restart A/N
     (0100:0100) 0. 8   =    1    duplex = full             <--- check this
     (0080:0000) 0. 7   =    0    collision test enable
     (003f:0000) 0. 5- 0 =    0    (reserved)
    => mii dump 1 1
    1.    (796d)                -- PHY status register --
     (8000:0000) 1.15   =    0    100BASE-T4 able
     (4000:4000) 1.14   =    1    100BASE-X full duplex able
     (2000:2000) 1.13   =    1    100BASE-X half duplex able
     (1000:1000) 1.12   =    1    10 Mbps   full duplex able
     (0800:0800) 1.11   =    1    10 Mbps   half duplex able
     (0400:0000) 1.10   =    0    100BASE-T2 full duplex able
     (0200:0000) 1. 9   =    0    100BASE-T2 half duplex able
     (0100:0100) 1. 8   =    1    extended status
     (0080:0000) 1. 7   =    0    (reserved)
     (0040:0040) 1. 6   =    1    MF preamble suppression
     (0020:0020) 1. 5   =    1    A/N complete
     (0010:0000) 1. 4   =    0    remote fault
     (0008:0008) 1. 3   =    1    A/N able
     (0004:0004) 1. 2   =    1    link status             <---- check this
     (0002:0000) 1. 1   =    0    jabber detect
     (0001:0001) 1. 0   =    1    extended capabilities

    Also, any explanation for the need for me to set the ipaddr?

    I see in your log, that "setenv autoload no; dhcp;" was aborted, do you have a DHCP server setup in your network? Based on this abortion, it may be the case that you don't have this setup so it cannot dynamically assign an IP address to your ethernet interface, which is why you probably needed to set the IP address statically with setenv ipaddr.

    -Daolin

  • Daolin,

    Here's the output:

    U-Boot 2023.04-dirty (Jul 01 2024 - 10:28:03 -0400)
    
    SoC:   AM62X SR1.0 HS-FS
    Model: Texas Instruments AM625 SK
    EEPROM not available at 80, trying to read at 81
    Reading on-board EEPROM at 0x51 failed -121
    DRAM:  no bloblist found!2 GiB
    Core:  66 devices, 28 uclasses, devicetree: separate
    MMC:   mmc@fa10000: 0, mmc@fa00000: 1
    Loading Environment from nowhere... OK
    In:    serial
    Out:   serial
    Err:   serial
    EEPROM not available at 80, trying to read at 81
    Reading on-board EEPROM at 0x51 failed -121
    Net:   eth0: ethernet@8000000port@1
    Warning: ethernet@8000000port@2 (eth1) using random MAC address - 5a:04:00:1a:15:0d
    , eth1: ethernet@8000000port@2
    Hit any key to stop autoboot:  0
    => mii
    mii - MII utility commands
    
    Usage:
    mii device                            - list available devices
    mii device <devname>                  - set current device
    mii info   <addr>                     - display MII PHY info
    mii read   <addr> <reg>               - read  MII PHY <addr> register <reg>
    mii write  <addr> <reg> <data>        - write MII PHY <addr> register <reg>
    mii modify <addr> <reg> <data> <mask> - modify MII PHY <addr> register <reg>
                                            updating bits identified in <mask>
    mii dump   <addr> <reg>               - pretty-print <addr> <reg> (0-5 only)
    Addr and/or reg may be ranges, e.g. 2-7.
    => mii device
    MII devices: 'mdio@f00' 'ethernet@8000000port@1'
    Current device: 'mdio@f00'
    => mii device ethernet@8000000port@1
    => mii device
    MII devices: 'mdio@f00' 'ethernet@8000000port@1'
    Current device: 'ethernet@8000000port@1'
    => mii dump 1 0
    0.     (0000)                 -- PHY control register --
      (8000:0000) 0.15    =     0     reset
      (4000:0000) 0.14    =     0     loopback
      (2040:0000) 0. 6,13 =   b00    speed selection = 10 Mbps
      (1000:0000) 0.12    =     0     A/N enable
      (0800:0000) 0.11    =     0     power-down
      (0400:0000) 0.10    =     0     isolate
      (0200:0000) 0. 9    =     0     restart A/N
      (0100:0000) 0. 8    =     0     duplex = half
      (0080:0000) 0. 7    =     0     collision test enable
      (003f:0000) 0. 5- 0 =     0     (reserved)
    
    
    => mii dump 1 1
    1.     (ffff)                 -- PHY status register --
      (8000:8000) 1.15    =     1     100BASE-T4 able
      (4000:4000) 1.14    =     1     100BASE-X  full duplex able
      (2000:2000) 1.13    =     1     100BASE-X  half duplex able
      (1000:1000) 1.12    =     1     10 Mbps    full duplex able
      (0800:0800) 1.11    =     1     10 Mbps    half duplex able
      (0400:0400) 1.10    =     1     100BASE-T2 full duplex able
      (0200:0200) 1. 9    =     1     100BASE-T2 half duplex able
      (0100:0100) 1. 8    =     1     extended status
      (0080:0080) 1. 7    =     1     (reserved)
      (0040:0040) 1. 6    =     1     MF preamble suppression
      (0020:0020) 1. 5    =     1     A/N complete
      (0010:0010) 1. 4    =     1     remote fault
      (0008:0008) 1. 3    =     1     A/N able
      (0004:0004) 1. 2    =     1     link status
      (0002:0002) 1. 1    =     1     jabber detect
      (0001:0001) 1. 0    =     1     extended capabilities
    
    
    =>
    

      Is this eth0 and eth1 configuration/ - 

    => mii dump 0 0
    0.     (1140)                 -- PHY control register --
      (8000:0000) 0.15    =     0     reset
      (4000:0000) 0.14    =     0     loopback
      (2040:0040) 0. 6,13 =   b10    speed selection = 1000 Mbps
      (1000:1000) 0.12    =     1     A/N enable
      (0800:0000) 0.11    =     0     power-down
      (0400:0000) 0.10    =     0     isolate
      (0200:0000) 0. 9    =     0     restart A/N
      (0100:0100) 0. 8    =     1     duplex = full
      (0080:0000) 0. 7    =     0     collision test enable
      (003f:0000) 0. 5- 0 =     0     (reserved)
    
    
    => mii dump 1 0
    0.     (0000)                 -- PHY control register --
      (8000:0000) 0.15    =     0     reset
      (4000:0000) 0.14    =     0     loopback
      (2040:0000) 0. 6,13 =   b00    speed selection = 10 Mbps
      (1000:0000) 0.12    =     0     A/N enable
      (0800:0000) 0.11    =     0     power-down
      (0400:0000) 0.10    =     0     isolate
      (0200:0000) 0. 9    =     0     restart A/N
      (0100:0000) 0. 8    =     0     duplex = half
      (0080:0000) 0. 7    =     0     collision test enable
      (003f:0000) 0. 5- 0 =     0     (reserved)
    
    
    =>
    

    Is it possible to modify the registers?  Why would eth0 be 1000 Mbps and eth1 be 10 Mbps?  My host connection follows:

    Thanks!

  • Hi Jim, 

    I'm not sure why eth1 appears to be configured for speed selection 10Mbps based on the PHY control register dump. Are you using a custom board running AM620 or a TI EVM? If you're using a custom board, what ethernet PHY are you using for your eth0 and what ethernet PHY are you using for your eth1? 

    I noticed in the eth1 PHY control register dump, "A/N enable" is 0, which seems to imply the PHY for eth1 does not support auto-negotiation or its not configured to enable auto-negotiation. This might be why the line rate was configured for the 10Mbps that the speed selection was selected for. Can you check if your PHY for eth1 supports auto-negotiation?

    Since for the eth0 PHY control register dump, "A/N enable" is 1, it seems the PHY for eth0 does support auto-negotiation. Can you switch the cable connected on eth1 to eth0 and see if you still see the same issue of 10Mbps, half duplex that you saw when eth1 was connected? This is to mostly to check there is nothing wrong with the auto-negotiation between the two linked partners (DUT and your host connection).

    -Daolin

  • Daolin,

    How would I configure eth1 to enable auto-negotiation?  It doesn't appear that I can modify the registers using mii write.

  • Hi Jim,

    From my understanding mii write should be the right utility to write to the PHY registers; however, I personally have not needed to do this before since auto-negotiation usually selects the speed grade and duplexity depending on what matches between the linked partners. Which is why I was wondering if you can check on the items I asked in my previous response before trying to modify the PHY registers. 

    Any PHY register modification I previously needed to do were mostly for debugging purposes and I only did them in Linux environment with phytool. Mii tool is the equivalent in U-boot environment.

    -Daolin

  • Daolin,

    OK!  I checked the following:

    For both eth0 and eth1, these pins are pulled down to ground.  I did notice on eth1, after I interrupt the autoboot and it reaches the u-boot shell that the RGMII2_RD3 goes high (3.3V).  

    We are using a custom board and both transceivers are identical.

    Also, on the Ethernet transceiver for eth1, LED_0 goes high.

    Our transceiver is "DP83869HMRGZR".

    Also, I don't think the mii command recognizes eth1.

  • Hi Jim,

    Thanks for clarifying you are using the DP83869 ethernet PHY. This PHY should support auto-negotiation so it's strange that eth1 shows that A/N enable is 0.

    Can you switch the cable connected on eth1 to eth0 and see if you still see the same issue of 10Mbps, half duplex that you saw when eth1 was connected?

    Can you additionally test this and see if the same issue shows for eth0?

    Additionally, you mentioned writing to the PHY with mii write didn't work, can you show a log what the error was?

    -Daolin

  • Doalin,

    Here's the "ping" command.  With both eth0 and eth1 configured, I can setenv ethact to either eth0 or eth1 and get a "ping" (after I setenv ipaddr to 192.168.1.51) - My DHCP server is on my Linux machine - I've done a lot of this on Windows.

    I'll follow up with the write failure shortly.

    => ping 192.168.1.50
    link up on port 1, speed 100, full duplex
    Using ethernet@8000000port@1 device
    host 192.168.1.50 is alive
    => ping 192.168.1.50
    link up on port 1, speed 100, full duplex
    Using ethernet@8000000port@1 device
    host 192.168.1.50 is alive
    => setenv ethact eth1
    => ping 192.168.1.50
    link up on port 2, speed 10, half duplex
    Using ethernet@8000000port@2 device
    host 192.168.1.50 is alive
    => ping 192.168.1.50
    link up on port 2, speed 10, half duplex
    Using ethernet@8000000port@2 device
    host 192.168.1.50 is alive
    

    Nothing in the TI image is preventing the second Ethernet transceiver from configuring to the higher speed, correct?  My USB to ethernet adapter is limited to 100 Mbps.

    Why is "ethernet@8000000port@2" not listed in "mii devices"?  It looks like these registers (if I'm looking at the correct ones) have random values in them.  The status register should be 0x0000 at reset.

    => mii devoce ethernet@8000000port@2
    No such device: ethernet@8000000port@2
    => setenv ethact eth1
    => net list
    eth0 : ethernet@8000000port@1 98:03:8a:7f:17:3f
    eth1 : ethernet@8000000port@2 f6:db:cb:56:11:a2 active
    => mii dump 1 0
    0.     (0000)                 -- PHY control register --
      (8000:0000) 0.15    =     0     reset
      (4000:0000) 0.14    =     0     loopback
      (2040:0000) 0. 6,13 =   b00    speed selection = 10 Mbps
      (1000:0000) 0.12    =     0     A/N enable
      (0800:0000) 0.11    =     0     power-down
      (0400:0000) 0.10    =     0     isolate
      (0200:0000) 0. 9    =     0     restart A/N
      (0100:0000) 0. 8    =     0     duplex = half
      (0080:0000) 0. 7    =     0     collision test enable
      (003f:0000) 0. 5- 0 =     0     (reserved)
    
    
    => mii dump 1 1
    1.     (ffff)                 -- PHY status register --
      (8000:8000) 1.15    =     1     100BASE-T4 able
      (4000:4000) 1.14    =     1     100BASE-X  full duplex able
      (2000:2000) 1.13    =     1     100BASE-X  half duplex able
      (1000:1000) 1.12    =     1     10 Mbps    full duplex able
      (0800:0800) 1.11    =     1     10 Mbps    half duplex able
      (0400:0400) 1.10    =     1     100BASE-T2 full duplex able
      (0200:0200) 1. 9    =     1     100BASE-T2 half duplex able
      (0100:0100) 1. 8    =     1     extended status
      (0080:0080) 1. 7    =     1     (reserved)
      (0040:0040) 1. 6    =     1     MF preamble suppression
      (0020:0020) 1. 5    =     1     A/N complete
      (0010:0010) 1. 4    =     1     remote fault
      (0008:0008) 1. 3    =     1     A/N able
      (0004:0004) 1. 2    =     1     link status
      (0002:0002) 1. 1    =     1     jabber detect
      (0001:0001) 1. 0    =     1     extended capabilities
    
    

  • Hi Jim,

    Why is "ethernet@8000000port@2" not listed in "mii devices"? 

    I think it's because you had a type when typing "mii device" (you instead wrote "mii devoce")

    It looks like these registers (if I'm looking at the correct ones) have random values in them.  The status register should be 0x0000 at reset.

    Yes, it's strange that you see 0xffff, I don't see 0xffff on my setup either.

    >>>Nothing in the TI image is preventing the second Ethernet transceiver from configuring to the higher speed, correct? 

    From my knowledge, there really shouldn't be anything in the TI image preventing the 2nd ethernet phy from configuring to a higher speed grade. One idea I have is if you are able to boot into Linux on your DUT and see if the link speed and duplexity is also half-duplex, 10mbps. If you do see the same issue in Linux, additionally check the phy status register and see if you still see 0xffff.

    If the problem still persists in Linux, I will need to check with the team and perhaps the Ethernet PHY team to see if they might have ideas to what is going on.

    -Daolin

  • Daolin,

    I also made sure the following pins were pulled to ground:

    Using the Am62x-lp-sk development board, I see what you describe:

    => mii device
    MII devices: 'mdio@f00' 'ethernet@8000000port@1'
    Current device: 'mdio@f00'
    => mi device ethernet@8000000port@1
    => mii dump 1 0
    0.     (1140)                 -- PHY control register --
      (8000:0000) 0.15    =     0     reset
      (4000:0000) 0.14    =     0     loopback
      (2040:0040) 0. 6,13 =   b10    speed selection = 1000 Mbps
      (1000:1000) 0.12    =     1     A/N enable
      (0800:0000) 0.11    =     0     power-down
      (0400:0000) 0.10    =     0     isolate
      (0200:0000) 0. 9    =     0     restart A/N
      (0100:0100) 0. 8    =     1     duplex = full
      (0080:0000) 0. 7    =     0     collision test enable
      (003f:0000) 0. 5- 0 =     0     (reserved)
    
    
    => mii dump 0 0
    0.     (1140)                 -- PHY control register --
      (8000:0000) 0.15    =     0     reset
      (4000:0000) 0.14    =     0     loopback
      (2040:0040) 0. 6,13 =   b10    speed selection = 1000 Mbps
      (1000:1000) 0.12    =     1     A/N enable
      (0800:0000) 0.11    =     0     power-down
      (0400:0000) 0.10    =     0     isolate
      (0200:0000) 0. 9    =     0     restart A/N
      (0100:0100) 0. 8    =     1     duplex = full
      (0080:0000) 0. 7    =     0     collision test enable
      (003f:0000) 0. 5- 0 =     0     (reserved)
    
    

    Our custom board continues to show the following:

    MII devices: 'mdio@f00' 'ethernet@8000000port@1'
    Current device: 'ethernet@8000000port@1'
    => mii dump 0 0
    0.     (1140)                 -- PHY control register --
      (8000:0000) 0.15    =     0     reset
      (4000:0000) 0.14    =     0     loopback
      (2040:0040) 0. 6,13 =   b10    speed selection = 1000 Mbps
      (1000:1000) 0.12    =     1     A/N enable
      (0800:0000) 0.11    =     0     power-down
      (0400:0000) 0.10    =     0     isolate
      (0200:0000) 0. 9    =     0     restart A/N
      (0100:0100) 0. 8    =     1     duplex = full
      (0080:0000) 0. 7    =     0     collision test enable
      (003f:0000) 0. 5- 0 =     0     (reserved)
    
    
    => mii dump 1 0
    0.     (0000)                 -- PHY control register --
      (8000:0000) 0.15    =     0     reset
      (4000:0000) 0.14    =     0     loopback
      (2040:0000) 0. 6,13 =   b00    speed selection = 10 Mbps
      (1000:0000) 0.12    =     0     A/N enable
      (0800:0000) 0.11    =     0     power-down
      (0400:0000) 0.10    =     0     isolate
      (0200:0000) 0. 9    =     0     restart A/N
      (0100:0000) 0. 8    =     0     duplex = half
      (0080:0000) 0. 7    =     0     collision test enable
      (003f:0000) 0. 5- 0 =     0     (reserved)
    
    
    =>
    

    Unfortunately, I'm not able to fully boot Linux on our custom board.  In another thread, I'm trying to get that resolved.  With the TI "base" image, I get the following log:

    =>
    U-Boot SPL 2023.04-dirty (Jul 02 2024 - 16:34:48 -0400)
    SYSFW ABI: 3.1 (firmware rev 0x0009 '9.2.8--v09.02.08 (Kool Koala)')
    SPL initial stack usage: 13408 bytes
    Trying to boot from MMC2
    Authentication passed
    Authentication passed
    Authentication passed
    Authentication passed
    Authentication passed
    Starting ATF on ARM64 core...
    
    NOTICE:  BL31: v2.10.0(release):v2.10.0-367-g00f1ec6b87-dirty
    NOTICE:  BL31: Built : 16:09:05, Feb  9 2024
    
    U-Boot SPL 2023.04-dirty (Jul 02 2024 - 16:34:54 -0400)
    SYSFW ABI: 3.1 (firmware rev 0x0009 '9.2.8--v09.02.08 (Kool Koala)')
    SPL initial stack usage: 1856 bytes
    Trying to boot from MMC2
    Authentication passed
    Authentication passed
    
    
    U-Boot 2023.04-dirty (Jul 02 2024 - 16:34:54 -0400)
    
    SoC:   AM62X SR1.0 HS-FS
    Model: Texas Instruments AM625 SK
    EEPROM not available at 80, trying to read at 81
    Reading on-board EEPROM at 0x51 failed -121
    DRAM:  no bloblist found!2 GiB
    Core:  66 devices, 28 uclasses, devicetree: separate
    MMC:   mmc@fa10000: 0, mmc@fa00000: 1
    Loading Environment from nowhere... OK
    In:    serial
    Out:   serial
    Err:   serial
    EEPROM not available at 80, trying to read at 81
    Reading on-board EEPROM at 0x51 failed -121
    Net:   eth0: ethernet@8000000port@1
    Warning: ethernet@8000000port@2 (eth1) using random MAC address - e6:cf:b4:f6:49:f9
    , eth1: ethernet@8000000port@2
    Hit any key to stop autoboot:  0
    switch to partitions #0, OK
    mmc1 is current device
    SD/MMC found on device 1
    Failed to load 'boot.scr'
    574 bytes read in 14 ms (40 KiB/s)
    Loaded env from uEnv.txt
    Importing environment from mmc1 ...
    ## Error: "main_cpsw0_qsgmii_phyinit" not defined
    15442432 bytes read in 1217 ms (12.1 MiB/s)
    36181 bytes read in 19 ms (1.8 MiB/s)
    Working FDT set to 88000000
    ## Flattened Device Tree blob at 88000000
       Booting using the fdt blob at 0x88000000
    Working FDT set to 88000000
       Loading Device Tree to 000000008fef4000, end 000000008fffffff ... OK
    Working FDT set to 8fef4000
    
    Starting kernel ...
    
    [    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
    [    0.000000] Linux version 6.1.83-rt28-ti-rt-g96b0ebd82722 (oe-user@oe-host) (aarch64-oe-linux-gcc (GCC) 11.4.0, GNU ld (GNU Binutils) 2.38.20220708) #1 SMP PREEMPT_RT Mon May 13 23:06:24 UTC 2024
    [    0.000000] Machine model: Texas Instruments AM625 Generic
    [    0.000000] earlycon: ns16550a0 at MMIO32 0x0000000002800000 (options '')
    [    0.000000] printk: bootconsole [ns16550a0] enabled
    [    0.000000] efi: UEFI not found.
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a0000000, size 2 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a0000000, compatible id shared-dma-pool
    [    0.000000] Zone ranges:
    [    0.000000]   DMA      [mem 0x0000000080000000-0x00000000ffffffff]
    [    0.000000]   DMA32    empty
    [    0.000000]   Normal   empty
    [    0.000000] Movable zone start for each node
    [    0.000000] Early memory node ranges
    [    0.000000]   node   0: [mem 0x0000000080000000-0x000000009e77ffff]
    [    0.000000]   node   0: [mem 0x000000009e780000-0x00000000a01fffff]
    [    0.000000]   node   0: [mem 0x00000000a0200000-0x00000000a0ffffff]
    [    0.000000]   node   0: [mem 0x00000000a1000000-0x00000000a103ffff]
    [    0.000000]   node   0: [mem 0x00000000a1040000-0x00000000ffffffff]
    [    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000000ffffffff]
    [    0.000000] cma: Reserved 32 MiB at 0x00000000fbe00000
    [    0.000000] psci: probing for conduit method from DT.
    [    0.000000] psci: PSCIv1.1 detected in firmware.
    [    0.000000] psci: Using standard PSCI v0.2 function IDs
    [    0.000000] psci: Trusted OS migration not required
    [    0.000000] psci: SMC Calling Convention v1.4
    [    0.000000] percpu: Embedded 20 pages/cpu s44928 r8192 d28800 u81920
    [    0.000000] Detected VIPT I-cache on CPU0
    [    0.000000] CPU features: detected: GIC system register CPU interface
    [    0.000000] CPU features: kernel page table isolation disabled by kernel configuration
    [    0.000000] CPU features: detected: ARM erratum 845719
    [    0.000000] alternatives: applying boot alternatives
    [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 516096
    [    0.000000] Kernel command line: console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 mtdparts=spi-nand0:512k(ospi.tiboot3),2m(ospi.tispl),4m(ospi.u-boot),256k(ospi.env),256k(ospi.env.backup),98048k@32m(ospi.rootfs),256k@130816k(ospi.phypattern);omap2-nand.0:2m(NAND.tiboot3),2m(NAND.tispl),2m(NAND.tiboot3.backup),4m(NAND.u-boot),256k(NAND.u-boot-env),256k(NAND.u-boot-env.backup),-(NAND.file-system) root=PARTUUID=1a2fb328-02 rw rootfstype=ext4 rootwait
    [    0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
    [    0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
    [    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
    [    0.000000] Memory: 1984996K/2097152K available (9792K kernel code, 1192K rwdata, 2244K rodata, 1728K init, 422K bss, 79388K reserved, 32768K cma-reserved)
    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
    [    0.000000] rcu: Preemptible hierarchical RCU implementation.
    [    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=4.
    [    0.000000] rcu:     RCU_SOFTIRQ processing moved to rcuc kthreads.
    [    0.000000]  No expedited grace period (rcu_normal_after_boot).
    [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 100 jiffies.
    [    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
    [    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
    [    0.000000] GICv3: GIC: Using split EOI/Deactivate mode
    [    0.000000] GICv3: 256 SPIs implemented
    [    0.000000] GICv3: 0 Extended SPIs implemented
    [    0.000000] Root IRQ handler: 0xffff800008412740
    [    0.000000] GICv3: GICv3 features: 16 PPIs
    [    0.000000] GICv3: CPU0: found redistributor 0 region 0:0x0000000001880000
    [    0.000000] ITS [mem 0x01820000-0x0182ffff]
    [    0.000000] GIC: enabling workaround for ITS: Socionext Synquacer pre-ITS
    [    0.000000] ITS@0x0000000001820000: Devices Table too large, reduce ids 20->19
    [    0.000000] ITS@0x0000000001820000: allocated 524288 Devices @80800000 (flat, esz 8, psz 64K, shr 0)
    [    0.000000] ITS: using cache flushing for cmd queue
    [    0.000000] GICv3: using LPI property table @0x0000000080030000
    [    0.000000] GIC: using cache flushing for LPI property table
    [    0.000000] GICv3: CPU0: using allocated LPI pending table @0x0000000080040000
    [    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
    [    0.000000] arch_timer: cp15 timer(s) running at 200.00MHz (phys).
    [    0.000000] clocksource: arch_sys_counter: mask: 0x3ffffffffffffff max_cycles: 0x2e2049d3e8, max_idle_ns: 440795210634 ns
    [    0.000001] sched_clock: 58 bits at 200MHz, resolution 5ns, wraps every 4398046511102ns
    [    0.000189] Console: colour dummy device 80x25
    [    0.409018] Calibrating delay loop (skipped), value calculated using timer frequency.. 400.00 BogoMIPS (lpj=200000)
    [    0.409029] pid_max: default: 32768 minimum: 301
    [    0.409109] LSM: Security Framework initializing
    [    0.409233] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
    [    0.409255] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
    [    0.410893] rcu: Hierarchical SRCU implementation.
    [    0.410900] rcu:     Max phase no-delay instances is 400.
    [    0.410945] printk: bootconsole [ns16550a0] printing thread started
    [    0.463387] Platform MSI: msi-controller@1820000 domain created
    [    0.463530] PCI/MSI: /bus@f0000/interrupt-controller@1800000/msi-controller@1820000 domain created
    [    0.463575] EFI services will not be available.
    [    0.463786] smp: Bringing up secondary CPUs ...
    [    0.464530] Detected VIPT I-cache on CPU1
    [    0.464639] GICv3: CPU1: found redistributor 1 region 0:0x00000000018a0000
    [    0.464654] GICv3: CPU1: using allocated LPI pending table @0x0000000080050000
    [    0.464706] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
    [    0.514759] Detected VIPT I-cache on CPU2
    [    0.514848] GICv3: CPU2: found redistributor 2 region 0:0x00000000018c0000
    [    0.514862] GICv3: CPU2: using allocated LPI pending table @0x0000000080060000
    [    0.514897] CPU2: Booted secondary processor 0x0000000002 [0x410fd034]
    [    0.540749] Detected VIPT I-cache on CPU3
    [    0.540830] GICv3: CPU3: found redistributor 3 region 0:0x00000000018e0000
    [    0.540843] GICv3: CPU3: using allocated LPI pending table @0x0000000080070000
    [    0.540873] CPU3: Booted secondary processor 0x0000000003 [0x410fd034]
    [    0.540931] smp: Brought up 1 node, 4 CPUs
    [    0.540936] SMP: Total of 4 processors activated.
    [    0.575123] CPU features: detected: 32-bit EL0 Support
    [    0.575126] CPU features: detected: CRC32 instructions
    [    0.575169] CPU: All CPU(s) started at EL2
    [    0.575170] alternatives: applying system-wide alternatives
    [    0.576672] devtmpfs: initialized
    [    0.584609] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275000 ns
    [    0.584634] futex hash table entries: 1024 (order: 4, 65536 bytes, linear)
    [    0.585940] pinctrl core: initialized pinctrl subsystem
    [    0.586581] DMI not present or invalid.
    [    0.587070] NET: Registered PF_NETLINK/PF_ROUTE protocol family
    [    0.607958] DMA: preallocated 256 KiB GFP_KERNEL pool for atomic allocations
    [    0.608209] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
    [    0.608396] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
    [    0.608484] audit: initializing netlink subsys (disabled)
    [    0.608639] audit: type=2000 audit(0.607:1): state=initialized audit_enabled=0 res=1
    [    0.609251] thermal_sys: Registered thermal governor 'step_wise'
    [    0.609466] ASID allocator initialised with 65536 entries
    [    0.623052] HugeTLB: registered 1.00 GiB page size, pre-allocated 0 pages
    [    0.623062] HugeTLB: 0 KiB vmemmap can be freed for a 1.00 GiB page
    [    0.623067] HugeTLB: registered 32.0 MiB page size, pre-allocated 0 pages
    [    0.623070] HugeTLB: 0 KiB vmemmap can be freed for a 32.0 MiB page
    [    0.623074] HugeTLB: registered 2.00 MiB page size, pre-allocated 0 pages
    [    0.623076] HugeTLB: 0 KiB vmemmap can be freed for a 2.00 MiB page
    [    0.623080] HugeTLB: registered 64.0 KiB page size, pre-allocated 0 pages
    [    0.623084] HugeTLB: 0 KiB vmemmap can be freed for a 64.0 KiB page
    [    0.626425] iommu: Default domain type: Translated
    [    0.626435] iommu: DMA domain TLB invalidation policy: strict mode
    [    0.626760] SCSI subsystem initialized
    [    0.627136] usbcore: registered new interface driver usbfs
    [    0.627175] usbcore: registered new interface driver hub
    [    0.627207] usbcore: registered new device driver usb
    [    0.627532] pps_core: LinuxPPS API ver. 1 registered
    [    0.627536] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [    0.627553] PTP clock support registered
    [    0.627653] EDAC MC: Ver: 3.0.0
    [    0.628340] FPGA manager framework
    [    0.628444] Advanced Linux Sound Architecture Driver Initialized.
    [    0.629410] clocksource: Switched to clocksource arch_sys_counter
    [    0.629647] VFS: Disk quotas dquot_6.6.0
    [    0.629684] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
    [    0.636303] NET: Registered PF_INET protocol family
    [    0.636598] IP idents hash table entries: 32768 (order: 6, 262144 bytes, linear)
    [    0.638315] tcp_listen_portaddr_hash hash table entries: 1024 (order: 3, 40960 bytes, linear)
    [    0.638365] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
    [    0.638378] TCP established hash table entries: 16384 (order: 5, 131072 bytes, linear)
    [    0.638603] TCP bind hash table entries: 16384 (order: 8, 1310720 bytes, linear)
    [    0.640094] TCP: Hash tables configured (established 16384 bind 16384)
    [    0.640320] UDP hash table entries: 1024 (order: 4, 98304 bytes, linear)
    [    0.640498] UDP-Lite hash table entries: 1024 (order: 4, 98304 bytes, linear)
    [    0.640861] NET: Registered PF_UNIX/PF_LOCAL protocol family
    [    0.641322] RPC: Registered named UNIX socket transport module.
    [    0.641328] RPC: Registered udp transport module.
    [    0.641330] RPC: Registered tcp transport module.
    [    0.641333] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [    0.641343] PCI: CLS 0 bytes, default 64
    [    0.689274] Initialise system trusted keyrings
    [    0.689489] workingset: timestamp_bits=62 max_order=19 bucket_order=0
    [    0.694766] squashfs: version 4.0 (2009/01/31) Phillip Lougher
    [    0.695302] NFS: Registering the id_resolver key type
    [    0.695353] Key type id_resolver registered
    [    0.695356] Key type id_legacy registered
    [    0.695452] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
    [    0.695458] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
    [    0.730030] Key type asymmetric registered
    [    0.730039] Asymmetric key parser 'x509' registered
    [    0.730105] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 245)
    [    0.730112] io scheduler mq-deadline registered
    [    0.730116] io scheduler kyber registered
    [    0.759941] pinctrl-single 4084000.pinctrl: 34 pins, size 136
    [    0.760629] pinctrl-single f4000.pinctrl: 171 pins, size 684
    [    0.765845] Serial: 8250/16550 driver, 12 ports, IRQ sharing enabled
    [    0.802475] loop: module loaded
    [    0.803365] megasas: 07.719.03.00-rc1
    [    0.806560] tun: Universal TUN/TAP device driver, 1.6
    [    0.807118] VFIO - User Level meta-driver version: 0.3
    [    0.807693] usbcore: registered new interface driver usb-storage
    [    0.808164] i2c_dev: i2c /dev entries driver
    [    0.808561] sdhci: Secure Digital Host Controller Interface driver
    [    0.808565] sdhci: Copyright(c) Pierre Ossman
    [    0.808685] sdhci-pltfm: SDHCI platform and OF driver helper
    [    0.809082] SMCCC: SOC_ID: ARCH_SOC_ID not implemented, skipping ....
    [    0.809335] usbcore: registered new interface driver usbhid
    [    0.809339] usbhid: USB HID core driver
    [    0.810125] optee: probing for conduit method.
    [    0.810161] optee: revision 4.1 (012cdca4)
    [    0.810465] optee: dynamic shared memory is enabled
    [    0.810874] optee: initialized driver
    [    0.812176] Initializing XFRM netlink socket
    [    0.812217] NET: Registered PF_PACKET protocol family
    [    0.812293] Key type dns_resolver registered
    [    0.812580] registered taskstats version 1
    [    0.812584] Loading compiled-in X.509 certificates
    [    0.819282] ti-sci 44043000.system-controller: ABI: 3.1 (firmware rev 0x0009 '9.2.8--v09.02.08 (Kool Koala)')
    [    0.860302] ti-sci-clk 44043000.system-controller:clock-controller: recalc-rate failed for dev=81, clk=20, ret=-19
    [    0.873949] omap_i2c 20000000.i2c: bus 0 rev0.12 at 400 kHz
    [    0.874677] omap8250 4a00000.serial: failed to get alias
    [    0.875962] mmc1: CQHCI version 5.10
    [    0.876068] mmc0: CQHCI version 5.10
    [    0.876721] debugfs: Directory 'pd:182' with parent 'pm_genpd' already present!
    [    0.882438] ti-sci-clk 44043000.system-controller:clock-controller: is_prepared failed for dev=81, clk=20, ret=-19
    [    0.887795] ALSA device list:
    [    0.887801]   No soundcards found.
    [    0.891662] Warning: unable to open an initial console.
    [    0.917584] mmc0: SDHCI controller on fa10000.mmc [fa10000.mmc] using ADMA 64-bit
    [    0.917584] mmc1: SDHCI controller on fa00000.mmc [fa00000.mmc] using ADMA 64-bit
    [    0.918038] Waiting for root device PARTUUID=1a2fb328-02...
    [    0.949684] mmc1: new SDHC card at address 5048
    [    0.950490] mmcblk1: mmc1:5048 SD32G 28.8 GiB
    [    0.953203]  mmcblk1: p1 p2
    [    0.966709] mmc0: Command Queue Engine enabled
    [    0.966733] mmc0: new HS200 MMC card at address 0001
    [    0.967456] mmcblk0: mmc0:0001 IS032G 29.1 GiB
    [    0.969471] mmcblk0boot0: mmc0:0001 IS032G 4.00 MiB
    [    0.970766] mmcblk0boot1: mmc0:0001 IS032G 4.00 MiB
    [    0.971868] mmcblk0rpmb: mmc0:0001 IS032G 4.00 MiB, chardev (240:0)
    [    0.998451] EXT4-fs (mmcblk1p2): recovery complete
    [    0.999604] EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Quota mode: none.
    [    0.999685] VFS: Mounted root (ext4 filesystem) on device 179:2.
    [    1.000568] devtmpfs: mounted
    [    1.001765] Freeing unused kernel memory: 1728K
    [    1.001879] Run /sbin/init as init process
    [    1.666126] systemd[1]: System time before build time, advancing clock.
    [    1.802706] NET: Registered PF_INET6 protocol family
    [    1.803915] Segment Routing with IPv6
    [    1.803949] In-situ OAM (IOAM) with IPv6
    [    1.846114] systemd[1]: systemd 250.5+ running in system mode (+PAM -AUDIT -SELINUX -APPARMOR +IMA -SMACK +SECCOMP -GCRYPT -GNUTLS -OPENSSL +ACL +BLKID -CURL -ELFUTILS -FIDO2 -IDN2 -IDN -IPTC +KMOD -LIBCRYPTSETUP +LIBFDISK -PCRE2 -PWQUALITY -P11KIT -QRENCODE -BZIP2 -LZ4 -XZ -ZLIB +ZSTD -BPF_FRAMEWORK -XKBCOMMON +UTMP +SYSVINIT default-hierarchy=hybrid)
    [    1.846774] systemd[1]: Detected architecture arm64.
    [    1.879978] systemd[1]: Hostname set to <am62xx-evm>.
    [    2.042842] systemd-sysv-generator[162]: SysV service '/etc/init.d/thermal-zone-init' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
    [    2.390159] systemd[1]: /etc/systemd/system/sync-clocks.service:11: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
    [    2.463766] systemd[1]: Queued start job for default target Multi-User System.
    [    2.491360] systemd[1]: Created slice Slice /system/getty.
    [    2.498731] systemd[1]: Created slice Slice /system/modprobe.
    [    2.499737] systemd[1]: Created slice User and Session Slice.
    [    2.505762] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
    [    2.511533] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
    [    2.519623] systemd[1]: Reached target Path Units.
    [    2.527187] systemd[1]: Reached target Remote File Systems.
    [    2.532069] systemd[1]: Reached target Slice Units.
    [    2.537776] systemd[1]: Reached target Swaps.
    [    2.545090] systemd[1]: Listening on RPCbind Server Activation Socket.
    [    2.547272] systemd[1]: Reached target RPC Port Mapper.
    [    2.560793] systemd[1]: Listening on Process Core Dump Socket.
    [    2.561289] systemd[1]: Listening on initctl Compatibility Named Pipe.
    [    2.562219] systemd[1]: Listening on Journal Audit Socket.
    [    2.568103] systemd[1]: Listening on Journal Socket (/dev/log).
    [    2.574825] systemd[1]: Listening on Journal Socket.
    [    2.580643] systemd[1]: Listening on Network Service Netlink Socket.
    [    2.588013] systemd[1]: Listening on udev Control Socket.
    [    2.591461] systemd[1]: Listening on udev Kernel Socket.
    [    2.597982] systemd[1]: Listening on User Database Manager Socket.
    [    2.629966] systemd[1]: Mounting Huge Pages File System...
    [    2.634044] systemd[1]: Mounting POSIX Message Queue File System...
    [    2.640178] systemd[1]: Mounting Kernel Debug File System...
    [    2.643314] systemd[1]: Kernel Trace File System was skipped because of a failed condition check (ConditionPathExists=/sys/kernel/tracing).
    [    2.649313] systemd[1]: Mounting Temporary Directory /tmp...
    [    2.665937] systemd[1]: Starting Create List of Static Device Nodes...
    [    2.671599] systemd[1]: Starting Load Kernel Module configfs...
    [    2.678124] systemd[1]: Starting Load Kernel Module drm...
    [    2.684472] systemd[1]: Starting Load Kernel Module fuse...
    [    2.696734] systemd[1]: Starting Start psplash boot splash screen...
    [    2.710029] systemd[1]: Starting RPC Bind...
    [    2.710320] systemd[1]: File System Check on Root Device was skipped because of a failed condition check (ConditionPathIsReadWrite=!/).
    [    2.711611] systemd[1]: systemd-journald.service: unit configures an IP firewall, but the local system does not support BPF/cgroup firewalling.
    [    2.711631] systemd[1]: (This warning is only shown for the first unit using IP firewalling.)
    [    2.716636] systemd[1]: Starting Journal Service...
    [    2.729737] fuse: init (API version 7.37)
    [    2.832440] systemd[1]: Starting Load Kernel Modules...
    [    2.836924] systemd[1]: Starting Generate network units from Kernel command line...
    [    2.843209] systemd[1]: Starting Remount Root and Kernel File Systems...
    [    2.851200] systemd[1]: Starting Coldplug All udev Devices...
    [    2.862835] systemd[1]: Mounted Huge Pages File System.
    [    2.863374] systemd[1]: Mounted POSIX Message Queue File System.
    [    2.869863] systemd[1]: Mounted Kernel Debug File System.
    [    2.876302] systemd[1]: Mounted Temporary Directory /tmp.
    [    2.883341] systemd[1]: Finished Create List of Static Device Nodes.
    [    2.889326] systemd[1]: modprobe@configfs.service: Deactivated successfully.
    [    2.890229] systemd[1]: Finished Load Kernel Module configfs.
    [    2.892154] systemd[1]: modprobe@drm.service: Deactivated successfully.
    [    2.893474] systemd[1]: Finished Load Kernel Module drm.
    [    2.898803] systemd[1]: modprobe@fuse.service: Deactivated successfully.
    [    2.899734] systemd[1]: Finished Load Kernel Module fuse.
    [    2.900732] systemd[1]: psplash-start.service: Main process exited, code=exited, status=255/EXCEPTION
    [    2.901583] systemd[1]: psplash-start.service: Failed with result 'exit-code'.
    [    2.902661] systemd[1]: Failed to start Start psplash boot splash screen.
    [    2.902829] systemd[1]: Dependency failed for Start psplash-systemd progress communication helper.
    [    2.902894] systemd[1]: psplash-systemd.service: Job psplash-systemd.service/start failed with result 'dependency'.
    [    2.908388] systemd[1]: Finished Generate network units from Kernel command line.
    [    2.916526] EXT4-fs (mmcblk1p2): re-mounted. Quota mode: none.
    [    2.924660] cryptodev: loading out-of-tree module taints kernel.
    [    2.927610] cryptodev: driver 1.12 loaded.
    [    3.021099] systemd[1]: Mounting FUSE Control File System...
    [    3.025782] systemd[1]: Mounting Kernel Configuration File System...
    [    3.030346] systemd[1]: Started Journal Service.
    [    3.096949] systemd-journald[174]: Received client request to flush runtime journal.
    [    3.523532] Internal error: synchronous external abort: 0000000096000010 [#1] PREEMPT_RT SMP
    [    3.523553] Modules linked in: mcrc rti_wdt(+) sa2ul cryptodev(O) drm fuse drm_panel_orientation_quirks ipv6
    [    3.523584] CPU: 2 PID: 200 Comm: systemd-udevd Tainted: G           O       6.1.83-rt28-ti-rt-g96b0ebd82722 #1
    [    3.523593] Hardware name: Texas Instruments AM625 Generic (DT)
    [    3.523598] pstate: 80000005 (Nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    [    3.523605] pc : 0xffff800000a862d4
    [    3.523609] lr : 0xffff800000a862c0
    [    3.523612] sp : ffff0000031df9a0
    [    3.523615] x29: ffff0000031df9a0 x28: 0000000000000001 x27: ffff800008d9bbb0
    [    3.523623] x26: 0000000000000000 x25: ffff0000031dfd20 x24: 00000000000003e8
    [    3.523631] x23: ffff800008e6f050 x22: ffff000003c68a90 x21: ffff0000002e9010
    [    3.523640] x20: ffff800008fea090 x19: ffff000003c68a80 x18: 0000000000000000
    [    3.523648] x17: 0000000000000003 x16: 000006291cb02f6e x15: 0018c632aa6a4668
    [    3.523656] x14: 0000000000000000 x13: 000000000007acfc x12: ffff800008b6f5b8
    [    3.523664] x11: ffff80000099ffff x10: 000000000000003f x9 : 0000000000000000
    [    3.523672] x8 : ffff000003233280 x7 : ffff800008feb000 x6 : 0068000000000713
    [    3.523680] x5 : ffff0000002e92c8 x4 : ffff0000002e92c8 x3 : 0000000000000000
    [    3.523688] x2 : ffff000000d6b000 x1 : 0000000000000000 x0 : ffff800008fea000
    [    3.523697] Call trace:
    [    3.523701]  0xffff800000a862d4
    [    3.523704]  0xffff80000853b264
    [    3.523707]  0xffff800008538a38
    [    3.523709]  0xffff800008538cc4
    [    3.523712]  0xffff800008538d9c
    [    3.523714]  0xffff800008539570
    [    3.523717]  0xffff800008536850
    [    3.523719]  0xffff8000085384b4
    [    3.523721]  0xffff800008537e4c
    [    3.523724]  0xffff800008539eb4
    [    3.523726]  0xffff80000853af14
    [    3.523729]  0xffff800000a8a01c
    [    3.523731]  0xffff800008013960
    [    3.523734]  0xffff8000080a6554
    [    3.523736]  0xffff8000080a7fbc
    [    3.523739]  0xffff8000080a85d4
    [    3.523741]  0xffff8000080a866c
    [    3.523744]  0xffff80000801db1c
    [    3.523746]  0xffff80000801dc10
    [    3.523749]  0xffff80000898d650
    [    3.523752]  0xffff80000898eb04
    [    3.523754]  0xffff800008011488
    [    3.523761] Code: 2a0003f4 b140041f 54001728 91024014 (b9400294)
    [    3.728334] ---[ end trace 0000000000000000 ]---
    [    3.747124] rtc-ti-k3 2b1f0000.rtc: registered as rtc0
    [    3.747168] rtc-ti-k3 2b1f0000.rtc: setting system clock to 1970-01-01T00:00:02 UTC (2)
    [    3.787922] platform 78000000.r5f: R5F core may have been powered on by a different host, programmed state (0) != actual state (1)
    [    3.791525] platform 78000000.r5f: configured R5F for IPC-only mode
    [    3.791557] platform 78000000.r5f: device does not have reserved memory regions, ret = -22
    [    3.791566] k3_r5_rproc bus@f0000:bus@b00000:r5fss@78000000: reserved memory init failed, ret = -22
    [    3.791578] remoteproc remoteproc0: releasing 78000000.r5f
    [    3.791595] k3_r5_rproc bus@f0000:bus@b00000:r5fss@78000000: k3_r5_cluster_rproc_init failed, ret = -22
    [    3.791634] k3_r5_rproc: probe of bus@f0000:bus@b00000:r5fss@78000000 failed with error -22
    [    4.290540] random: crng init done
    [    5.257191] cfg80211: Loading compiled-in X.509 certificates for regulatory database
    [    5.267149] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
    [    5.268047] cfg80211: Loaded X.509 cert 'wens: 61c038651aabdcf94bd0ac7ff06c7248db18c600'
    [    5.389177] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
    [    5.389214] cfg80211: failed to load regulatory.db
    [   14.307061] platform 40900000.crypto: deferred probe pending
    
    

    It might be a good idea to include the ethernet PHY team at this point.

    The data I included from the development board is without the full Linux boot.

    Also, when I generate the modified *.dtb files (using "Linux Board Port"), I use the following for the defconfig file (Top Level Make file):

    "make ARCH=arm64 CROSS_COMPILE='aarch64-none-linux-gnu-' am62x_evm_r5_defconfig  am62x_evm_a53_defconfig".

    There was a default defconfig provided with the SDK but I wasn't sure it was correct.

    Using mdio list, I get the following on our custom board:

    Thanks!

  • Hi Jim,

    I appreciate you sending these details. Since it seems like the issue of 10Mbps, half duplex on eth1 only shows up on your custom board, it almost indicates that maybe the hardware configuration is not setup correctly, it could be the ethernet PHY or the SoC MAC side. I think the best way to get a hold of the Ethernet PHY team is to create a separate thread describing the mii read results you see from the PHY to see if they can help rule out if the configuration is not correct from the PHY side.

    As for the Linux boot issue, I'm not the best person to respond, but one comment I want to make is that the "am62x_evm_r5_defconfig" should not be built with the ARCH=arm64 CROSS_COMPILE='aarch64-none-linux-gnu-' toolchain environment variables. Since this defconfig is specific to R5 core, it should be using the "arm" architecture (ARCH), more information in "Porting U-boot" section. https://dev.ti.com/tirex/explore/node?node=A__Aea6RRpDjmWpbq1XT0xp3w__AM62-ACADEMY__uiYMDcq__LATEST 

    I still recommend you resolving the boot issue on the other thread as I'm not the expert on the boot process.

    -Daolin

  • OK!  I'm working through the boot issue on another thread and the "Linux Board Port" document has one defconfig file that they provide with the SDK.  I can use that unless advised otherwise.  

  • Hi Jim, 

    Sounds good, keep me posted on how things go with the separate thread with the Ethernet PHY team. 

    -Daolin

    P.S. My responses will be delayed until July 10th as I will be out of office during the U.S. July 4th holiday