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.

AM62A3-Q1: Interfacing with Marvell 88E1512 IC

Part Number: AM62A3-Q1
Other Parts Discussed in Thread: AM62A3

Tool/software:

Hello TI,

We are trying to configure 88E1512 with AM62a3. Bellow are my device tree configurations:

 &cpsw3g {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&main_rgmii1_pins_default>;
};

&cpsw_port1 {
	status = "okay";
	phy-mode = "rgmii";
	phy-handle = <&cpsw3g_phy0>;
	mac-address = [00 00 00 00 00 00]; // newly added 
	phys = <&phy_gmii_sel 1>; // newly added

};

&cpsw3g_mdio {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&main_mdio1_pins_default>;

	cpsw3g_phy0: ethernet-phy@0 {
		reg = <0>;
		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_mdio1_pins_default: main-mdio1-pins-default {
		pinctrl-single,pins = <
			AM62AX_IOPAD(0x160, PIN_OUTPUT, 0) /* (V12) MDIO0_MDC */
			AM62AX_IOPAD(0x15c, PIN_INPUT, 0) /* (V13) MDIO0_MDIO */
		>;
	};

	main_rgmii1_pins_default: main-rgmii1-pins-default {
		pinctrl-single,pins = <
			AM62AX_IOPAD(0x14c, PIN_INPUT, 0) /* (AB16) RGMII1_RD0 */
			AM62AX_IOPAD(0x150, PIN_INPUT, 0) /* (V15) RGMII1_RD1 */
			AM62AX_IOPAD(0x154, PIN_INPUT, 0) /* (W15) RGMII1_RD2 */
			AM62AX_IOPAD(0x158, PIN_INPUT, 0) /* (V14) RGMII1_RD3 */
			AM62AX_IOPAD(0x148, PIN_INPUT, 0) /* (AA16) RGMII1_RXC */
			AM62AX_IOPAD(0x144, PIN_INPUT, 0) /* (AA15) RGMII1_RX_CTL */
			AM62AX_IOPAD(0x134, PIN_INPUT, 0) /* (Y17) RGMII1_TD0 */
			AM62AX_IOPAD(0x138, PIN_INPUT, 0) /* (V16) RGMII1_TD1 */
			AM62AX_IOPAD(0x13c, PIN_INPUT, 0) /* (Y16) RGMII1_TD2 */
			AM62AX_IOPAD(0x140, PIN_INPUT, 0) /* (AA17) RGMII1_TD3 */
			AM62AX_IOPAD(0x130, PIN_INPUT, 0) /* (AB17) RGMII1_TXC */
			AM62AX_IOPAD(0x12c, PIN_INPUT, 0) /* (W16) RGMII1_TX_CTL */
		    >;
	  };
};

But unable to detect 88e1512, also not able to ping.
Bellow are the dmesg logs:
root@am62axx-evm:~# dmesg | grep mdio
[    0.317374] davinci_mdio 8000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
[    0.318710] davinci_mdio 8000f00.mdio: phy[0]: device 8000f00.mdio:00, driver unknown
[   11.235574] am65-cpsw-nuss 8000000.ethernet eth0: PHY [8000f00.mdio:00] driver [Generic PHY] (irq=POLL)
root@am62axx-evm:~# dmesg | grep 88e 
root@am62axx-evm:~# dmesg | grep marvell
root@am62axx-evm:~# dmesg | grep 88E    
root@am62axx-evm:~# dmesg | grep ETH0   
root@am62axx-evm:~# dmesg | grep eth 
[    0.000000] psci: probing for conduit method from DT.
[    0.178100] optee: probing for conduit method.
[    0.318786] am65-cpsw-nuss 8000000.ethernet: initializing am65 cpsw nuss version 0x6BA01103, cpsw version 0x6BA81103 Ports: 3 quirks:00000006
[    0.319016] am65-cpsw-nuss 8000000.ethernet: initialized cpsw ale version 1.5
[    0.319026] am65-cpsw-nuss 8000000.ethernet: ALE Table size 512
[    0.319823] am65-cpsw-nuss 8000000.ethernet: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:0
[    0.321726] am65-cpsw-nuss 8000000.ethernet: set new flow-id-base 19
[    2.237029] 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.
[   11.235574] am65-cpsw-nuss 8000000.ethernet eth0: PHY [8000f00.mdio:00] driver [Generic PHY] (irq=POLL)
[   11.235627] am65-cpsw-nuss 8000000.ethernet eth0: configuring for phy/rgmii-rxid link mode
[   14.626716] udc 31000000.usb: binding gadget driver [g_ether]
[   14.645279] using random self ethernet address
[   14.645311] using random host ethernet address
[   14.656405] using random self ethernet address
[   14.656417] using random host ethernet address
[   14.656464] g_ether gadget.0: adding config #2 'RNDIS'/00000000ed73a7a5
[   14.656523] g_ether gadget.0: adding 'rndis'/0000000049e17a52 to config 'RNDIS'/00000000ed73a7a5
[   14.656589] g_ether gadget.0: RNDIS: dual speed IN/ep1in OUT/ep1out NOTIFY/ep2in
[   14.656605] g_ether gadget.0: cfg 2/00000000ed73a7a5 speeds: high full
[   14.656620] g_ether gadget.0:   interface 0 = rndis/0000000049e17a52
[   14.656633] g_ether gadget.0:   interface 1 = rndis/0000000049e17a52
[   14.656653] g_ether gadget.0: adding config #1 'CDC Ethernet (ECM)'/00000000e9397a06
[   14.656671] g_ether gadget.0: adding 'cdc_ethernet'/000000005a3fdf00 to config 'CDC Ethernet (ECM)'/00000000e9397a06
[   14.656703] g_ether gadget.0: CDC Ethernet: dual speed IN/ep1in OUT/ep1out NOTIFY/ep2in
[   14.656717] g_ether gadget.0: cfg 1/00000000e9397a06 speeds: high full
[   14.656732] g_ether gadget.0:   interface 0 = cdc_ethernet/000000005a3fdf00
[   14.656745] g_ether gadget.0:   interface 1 = cdc_ethernet/000000005a3fdf00
[   14.656761] g_ether gadget.0: Ethernet Gadget, version: Memorial Day 2008
[   14.656773] g_ether gadget.0: g_ether ready
[   14.882544] usb0: eth_open

Can you suggest the driver code and the device tree configurations  for the same.

  • Hello Monica,

    First, I noticed in your device tree file you used the "DP83867_RGMIIDCTL_2_00_NS" and "DP83867_PHYCR_FIFO_DEPTH_4_B_NIB" in the &cpsw3g_mdio node. Please note, these are for the TI DP83867 PHY whereas you indicated using the Marvell PHY 88E1512. There should be an equivalent for these but for the Marvell PHY; however because it is not a TI part we cannot offer more detailed feedback on this.

    Additionally, I noticed the below from your boot log and this typically indicates that you didn't enable the Marvell PHY driver in the kernel configuration, so the kernel was not able to attach to a specific phy driver. Please make sure your kernel configuration included the PHY driver you are planning on using.

    [   11.235574] am65-cpsw-nuss 8000000.ethernet eth0: PHY [8000f00.mdio:00] driver [Generic PHY] (irq=POLL)

    Can you also provide the results of "ethtool eth0" and "ethtool -S eth0" before and after the ping. 

    Lastly, what SDK are you using?

    -Daolin

  • Hi Daolin,
        Now, I am able to detect the Marvell PHY driver after enabling in the kernel configurations. I am refering to the bellow link :
    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1270408/am623-dss-dpi-display-on-am62x/4811783?tisearch=e2e-sitesearch&keymatch=DPI%252520dts#4811783

    where they are able to ping through ethernet.
    Below arethe logs of ethtool command : 

    root@am62axx-evm:/opt/bmit/app# dmesg | grep mdio
    [    0.318234] davinci_mdio 8000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
    [    0.319884] davinci_mdio 8000f00.mdio: phy[0]: device 8000f00.mdio:00, driver Marvell 88E1510
    [   12.152596] am65-cpsw-nuss 8000000.ethernet eth0: PHY [8000f00.mdio:00] driver [Marvell 88E1510] (irq=POLL)
    root@am62axx-evm:/opt/bmit/app# ethtool eth0
    Settings for eth0:
    	Supported ports: [ TP	 MII	 FIBRE ]
    	Supported link modes:   10baseT/Half 10baseT/Full
    	                        100baseT/Half 100baseT/Full
    	                        1000baseT/Full
    	Supported pause frame use: Symmetric
    	Supports auto-negotiation: Yes
    	Supported FEC modes: Not reported
    	Advertised link modes:  10baseT/Half 10baseT/Full
    	                        100baseT/Half 100baseT/Full
    	                        1000baseT/Full
    	Advertised pause frame use: Symmetric
    	Advertised auto-negotiation: Yes
    	Advertised FEC modes: Not reported
    	Speed: Unknown!
    	Duplex: Unknown! (255)
    	Auto-negotiation: on
    	Port: Twisted Pair
    	PHYAD: 0
    	Transceiver: external
    	MDI-X: Unknown
    	Supports Wake-on: pg
    	Wake-on: d
            Current message level: 0x000020f7 (8439)
                                   drv probe link ifdown ifup rx_err tx_err hw
    	Link detected: no
    root@am62axx-evm:/opt/bmit/app# ethtool -S eth0
    NIC statistics:
         p0_rx_good_frames: 0
         p0_rx_broadcast_frames: 0
         p0_rx_multicast_frames: 0
         p0_rx_crc_errors: 0
         p0_rx_oversized_frames: 0
         p0_rx_undersized_frames: 0
         p0_ale_drop: 0
         p0_ale_overrun_drop: 0
         p0_rx_octets: 0
         p0_tx_good_frames: 0
         p0_tx_broadcast_frames: 0
         p0_tx_multicast_frames: 0
         p0_tx_octets: 0
         p0_tx_64B_frames: 0
         p0_tx_65_to_127B_frames: 0
         p0_tx_128_to_255B_frames: 0
         p0_tx_256_to_511B_frames: 0
         p0_tx_512_to_1023B_frames: 0
         p0_tx_1024B_frames: 0
         p0_net_octets: 0
         p0_rx_bottom_fifo_drop: 0
         p0_rx_port_mask_drop: 0
         p0_rx_top_fifo_drop: 0
         p0_ale_rate_limit_drop: 0
         p0_ale_vid_ingress_drop: 0
         p0_ale_da_eq_sa_drop: 0
         p0_ale_block_drop: 0
         p0_ale_secure_drop: 0
         p0_ale_auth_drop: 0
         p0_ale_unknown_ucast: 0
         p0_ale_unknown_ucast_bytes: 0
         p0_ale_unknown_mcast: 0
         p0_ale_unknown_mcast_bytes: 0
         p0_ale_unknown_bcast: 0
         p0_ale_unknown_bcast_bytes: 0
         p0_ale_pol_match: 0
         p0_ale_pol_match_red: 0
         p0_ale_pol_match_yellow: 0
         p0_ale_mcast_sa_drop: 0
         p0_ale_dual_vlan_drop: 0
         p0_ale_len_err_drop: 0
         p0_ale_ip_next_hdr_drop: 0
         p0_ale_ipv4_frag_drop: 0
         p0_tx_mem_protect_err: 0
         p0_tx_pri0: 0
         p0_tx_pri1: 0
         p0_tx_pri2: 0
         p0_tx_pri3: 0
         p0_tx_pri4: 0
         p0_tx_pri5: 0
         p0_tx_pri6: 0
         p0_tx_pri7: 0
         p0_tx_pri0_bcnt: 0
         p0_tx_pri1_bcnt: 0
         p0_tx_pri2_bcnt: 0
         p0_tx_pri3_bcnt: 0
         p0_tx_pri4_bcnt: 0
         p0_tx_pri5_bcnt: 0
         p0_tx_pri6_bcnt: 0
         p0_tx_pri7_bcnt: 0
         p0_tx_pri0_drop: 0
         p0_tx_pri1_drop: 0
         p0_tx_pri2_drop: 0
         p0_tx_pri3_drop: 0
         p0_tx_pri4_drop: 0
         p0_tx_pri5_drop: 0
         p0_tx_pri6_drop: 0
         p0_tx_pri7_drop: 0
         p0_tx_pri0_drop_bcnt: 0
         p0_tx_pri1_drop_bcnt: 0
         p0_tx_pri2_drop_bcnt: 0
         p0_tx_pri3_drop_bcnt: 0
         p0_tx_pri4_drop_bcnt: 0
         p0_tx_pri5_drop_bcnt: 0
         p0_tx_pri6_drop_bcnt: 0
         p0_tx_pri7_drop_bcnt: 0
         rx_good_frames: 0
         rx_broadcast_frames: 0
         rx_multicast_frames: 0
         rx_pause_frames: 0
         rx_crc_errors: 0
         rx_align_code_errors: 0
         rx_oversized_frames: 0
         rx_jabber_frames: 0
         rx_undersized_frames: 0
         rx_fragments: 0
         ale_drop: 0
         ale_overrun_drop: 0
         rx_octets: 0
         tx_good_frames: 0
         tx_broadcast_frames: 0
         tx_multicast_frames: 0
         tx_pause_frames: 0
         tx_deferred_frames: 0
         tx_collision_frames: 0
         tx_single_coll_frames: 0
         tx_mult_coll_frames: 0
         tx_excessive_collisions: 0
         tx_late_collisions: 0
         rx_ipg_error: 0
         tx_carrier_sense_errors: 0
         tx_octets: 0
         tx_64B_frames: 0
         tx_65_to_127B_frames: 0
         tx_128_to_255B_frames: 0
         tx_256_to_511B_frames: 0
         tx_512_to_1023B_frames: 0
         tx_1024B_frames: 0
         net_octets: 0
         rx_bottom_fifo_drop: 0
         rx_port_mask_drop: 0
         rx_top_fifo_drop: 0
         ale_rate_limit_drop: 0
         ale_vid_ingress_drop: 0
         ale_da_eq_sa_drop: 0
         ale_block_drop: 0
         ale_secure_drop: 0
         ale_auth_drop: 0
         ale_unknown_ucast: 0
         ale_unknown_ucast_bytes: 0
         ale_unknown_mcast: 0
         ale_unknown_mcast_bytes: 0
         ale_unknown_bcast: 0
         ale_unknown_bcast_bytes: 0
         ale_pol_match: 0
         ale_pol_match_red: 0
         ale_pol_match_yellow: 0
         ale_mcast_sa_drop: 0
         ale_dual_vlan_drop: 0
         ale_len_err_drop: 0
         ale_ip_next_hdr_drop: 0
         ale_ipv4_frag_drop: 0
         iet_rx_assembly_err: 0
         iet_rx_assembly_ok: 0
         iet_rx_smd_err: 0
         iet_rx_frag: 0
         iet_tx_hold: 0
         iet_tx_frag: 0
         tx_mem_protect_err: 0
         tx_pri0: 0
         tx_pri1: 0
         tx_pri2: 0
         tx_pri3: 0
         tx_pri4: 0
         tx_pri5: 0
         tx_pri6: 0
         tx_pri7: 0
         tx_pri0_bcnt: 0
         tx_pri1_bcnt: 0
         tx_pri2_bcnt: 0
         tx_pri3_bcnt: 0
         tx_pri4_bcnt: 0
         tx_pri5_bcnt: 0
         tx_pri6_bcnt: 0
         tx_pri7_bcnt: 0
         tx_pri0_drop: 0
         tx_pri1_drop: 0
         tx_pri2_drop: 0
         tx_pri3_drop: 0
         tx_pri4_drop: 0
         tx_pri5_drop: 0
         tx_pri6_drop: 0
         tx_pri7_drop: 0
         tx_pri0_drop_bcnt: 0
         tx_pri1_drop_bcnt: 0
         tx_pri2_drop_bcnt: 0
         tx_pri3_drop_bcnt: 0
         tx_pri4_drop_bcnt: 0
         tx_pri5_drop_bcnt: 0
         tx_pri6_drop_bcnt: 0
         tx_pri7_drop_bcnt: 0
    

  • Hi Monica,

    I think you might have linked another thread, the thread I'm seeing is about display rather than ethernet

    I see the following output from your ethtool eth0 command, this indicates no connection from your device under test eth0 port to it's linked partner. Can you describe your current network topology? I.e. what do you have connected to your eth0 port?

    Link detected: no

    -Daolin

  • Hello,
    This is the link we are refering to:
    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1295099/tda4vm-cpsw0-is-unable-to-ping-to-the-external-network

    We are using peer-to-peer connection. Bellow are the H/W configurations:

  • Hello Monica, 

    Thanks for sharing the link and the HW configuration. Since you are using peer-to-peer connection, are you using a Linux Host PC as the linked partner? If so, can you check "ethtool <interface connected to DUT>" on the Linux PC to see if the link detected?

    The resolution in the other thread that you linked appears to be enabling RX delay at the PHY. As I mentioned before, did you make sure the below for DP83867 properties are changed to your Marvell PHY and check if there is a RX delay that needs to be added for the Marvell PHY?

    First, I noticed in your device tree file you used the "DP83867_RGMIIDCTL_2_00_NS" and "DP83867_PHYCR_FIFO_DEPTH_4_B_NIB" in the &cpsw3g_mdio node. Please note, these are for the TI DP83867 PHY whereas you indicated using the Marvell PHY 88E1512. There should be an equivalent for these but for the Marvell PHY; however because it is not a TI part we cannot offer more detailed feedback on this.

    -Daolin