Because of the Thanksgiving holiday in the U.S., TI E2E™ design support forum responses may be delayed from November 25 through December 2. Thank you for your patience.

AM6442: Hi, can you please verify device tree for PRU_ICSSG1 ethernet.

Part Number: AM6442

Tool/software:

Hi, have been trying to bring up Ethernet on AM6442. We are using RGMII ports on PRU_ICSSG1. During initialization, I get the following error:  

[   11.753582] icssg-prueth icssg1-eth: port 2: using random MAC addr: ae:b4:6b:b9:81:11
[   11.753635] icssg-prueth icssg1-eth: registering netdevs
[   11.754561] icssg-prueth icssg1-eth: couldn't connect to phy ethernet-phy@1
[   11.754583] icssg-prueth icssg1-eth: can't connect to MII0 PHY, error --19 (deferring)


Can you please verify the device tree attached below:
	icssg1_rgmii1_pins_default: icssg1-rgmii1-pins-default {
		pinctrl-single,pins = <
			AM64X_IOPAD(0x00b8, PIN_INPUT, 2)	/* (Y7) PRG1_PRU0_GPO0.PRG1_RGMII1_RD0 */
			AM64X_IOPAD(0x00bc, PIN_INPUT, 2)	/* (U8) PRG1_PRU0_GPO1.PRG1_RGMII1_RD1 */
			AM64X_IOPAD(0x00c0, PIN_INPUT, 2)	/* (W8) PRG1_PRU0_GPO2.PRG1_RGMII1_RD2 */
			AM64X_IOPAD(0x00c4, PIN_INPUT, 2)	/* (V8) PRG1_PRU0_GPO3.PRG1_RGMII1_RD3 */
			AM64X_IOPAD(0x00c8, PIN_INPUT, 2)	/* (Y8) PRG1_PRU0_GPO4.PRG1_RGMII1_RX_CTL */
			AM64X_IOPAD(0x00d0, PIN_INPUT, 2)	/* (AA7) PRG1_PRU0_GPO6.PRG1_RGMII1_RXC */
			AM64X_IOPAD(0x00e4, PIN_OUTPUT, 2)	/* (AA8) PRG1_PRU0_GPO11.PRG1_RGMII1_TD0 */
			AM64X_IOPAD(0x00e8, PIN_OUTPUT, 2)	/* (U9) PRG1_PRU0_GPO12.PRG1_RGMII1_TD1 */
			AM64X_IOPAD(0x00ec, PIN_OUTPUT, 2)	/* (W9) PRG1_PRU0_GPO13.PRG1_RGMII1_TD2 */
			AM64X_IOPAD(0x00f0, PIN_OUTPUT, 2)	/* (AA9) PRG1_PRU0_GPO14.PRG1_RGMII1_TD3 */
			AM64X_IOPAD(0x00f4, PIN_OUTPUT, 2)	/* (Y9) PRG1_PRU0_GPO15.PRG1_RGMII1_TX_CTL */
			AM64X_IOPAD(0x00f8, PIN_OUTPUT, 2)	/* (V9) PRG1_PRU0_GPO16.PRG1_RGMII1_TXC */
		>;
	};

	icssg1_rgmii2_pins_default: icssg1-rgmii2-pins-default {
		pinctrl-single,pins = <
			AM64X_IOPAD(0x0108, PIN_INPUT, 2)	/* (W11) PRG1_PRU1_GPO0.PRG1_RGMII2_RD0 */
			AM64X_IOPAD(0x010c, PIN_INPUT, 2)	/* (V11) PRG1_PRU1_GPO1.PRG1_RGMII2_RD1 */
			AM64X_IOPAD(0x0110, PIN_INPUT, 2)	/* (AA12) PRG1_PRU1_GPO2.PRG1_RGMII2_RD2 */
			AM64X_IOPAD(0x0114, PIN_INPUT, 2)	/* (Y12) PRG1_PRU1_GPO3.PRG1_RGMII2_RD3 */
			AM64X_IOPAD(0x0118, PIN_INPUT, 2)	/* (W12) PRG1_PRU1_GPO4.PRG1_RGMII2_RX_CTL */
			AM64X_IOPAD(0x0120, PIN_INPUT, 2)	/* (U11) PRG1_PRU1_GPO6.PRG1_RGMII2_RXC */
			AM64X_IOPAD(0x0134, PIN_OUTPUT, 2)	/* (AA10) PRG1_PRU1_GPO11.PRG1_RGMII2_TD0 */
			AM64X_IOPAD(0x0138, PIN_OUTPUT, 2)	/* (V10) PRG1_PRU1_GPO12.PRG1_RGMII2_TD1 */
			AM64X_IOPAD(0x013c, PIN_OUTPUT, 2)	/* (U10) PRG1_PRU1_GPO13.PRG1_RGMII2_TD2 */
			AM64X_IOPAD(0x0140, PIN_OUTPUT, 2)	/* (AA11) PRG1_PRU1_GPO14.PRG1_RGMII2_TD3 */
			AM64X_IOPAD(0x0144, PIN_OUTPUT, 2)	/* (Y11) PRG1_PRU1_GPO15.PRG1_RGMII2_TX_CTL */
			AM64X_IOPAD(0x0148, PIN_OUTPUT, 2)	/* (AA4) PRG1_PRU1_GPO16.PRG1_RGMII2_TXC */
		>;
	};
	
	
	&icssg1_mdio {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&icssg1_mdio_pins_default &clkout1_pins_default>;

	icssg1_phy1: ethernet-phy@1 {
		status = "okay";
		compatible = "ethernet-phy-ieee802.3-c22";
		reg = <0x1>;
		reset-gpios = <&main_gpio1 17 GPIO_ACTIVE_LOW>;
		reset-assert-us = <1000>;
		reset-deassert-us = <1000>;
	};

	icssg1_phy2: ethernet-phy@2 {
		status = "okay";
		compatible = "ethernet-phy-ieee802.3-c22";
		reg = <0x0>;
		reset-gpios = <&main_gpio1 17 GPIO_ACTIVE_LOW>;
		reset-assert-us = <1000>;
		reset-deassert-us = <1000>;
	};
};

icssg1_eth: icssg1-eth {
		compatible = "ti,am642-icssg-prueth";
		pinctrl-names = "default";
		pinctrl-0 = <&icssg1_rgmii1_pins_default &icssg1_rgmii2_pins_default>;

		sram = <&oc_sram>;
		ti,prus = <&pru1_0>, <&rtu1_0>, <&tx_pru1_0>, <&pru1_1>, <&rtu1_1>, <&tx_pru1_1>;
		firmware-name = "ti-pruss/am65x-sr2-pru0-prueth-fw.elf",
				"ti-pruss/am65x-sr2-rtu0-prueth-fw.elf",
				"ti-pruss/am65x-sr2-txpru0-prueth-fw.elf",
				"ti-pruss/am65x-sr2-pru1-prueth-fw.elf",
				"ti-pruss/am65x-sr2-rtu1-prueth-fw.elf",
				"ti-pruss/am65x-sr2-txpru1-prueth-fw.elf";

		ti,pruss-gp-mux-sel = <2>,	/* MII mode */
				      <2>,
				      <2>,
				      <2>,	/* MII mode */
				      <2>,
				      <2>;

		ti,mii-g-rt = <&icssg1_mii_g_rt>;
		ti,mii-rt = <&icssg1_mii_rt>;
		ti,iep = <&icssg1_iep0>, <&icssg1_iep1>;

		interrupt-parent = <&icssg1_intc>;
		interrupts = <24 0 2>, <25 1 3>;
		interrupt-names = "tx_ts0", "tx_ts1";

		dmas = <&main_pktdma 0xc200 15>, /* egress slice 0 */
		       <&main_pktdma 0xc201 15>, /* egress slice 0 */
		       <&main_pktdma 0xc202 15>, /* egress slice 0 */
		       <&main_pktdma 0xc203 15>, /* egress slice 0 */
		       <&main_pktdma 0xc204 15>, /* egress slice 1 */
		       <&main_pktdma 0xc205 15>, /* egress slice 1 */
		       <&main_pktdma 0xc206 15>, /* egress slice 1 */
		       <&main_pktdma 0xc207 15>, /* egress slice 1 */
		       <&main_pktdma 0x4200 15>, /* ingress slice 0 */
		       <&main_pktdma 0x4201 15>; /* ingress slice 1 */
		dma-names = "tx0-0", "tx0-1", "tx0-2", "tx0-3",
			    "tx1-0", "tx1-1", "tx1-2", "tx1-3",
			    "rx0", "rx1";

		ethernet-ports {
			#address-cells = <1>;
			#size-cells = <0>;
			icssg1_emac0: port@0 {
				reg = <0>;
				phy-handle = <&icssg1_phy1>;
				phy-mode = "rgmii-txid";
				ti,syscon-rgmii-delay = <&main_conf 0x4110>;
				/* Filled in by bootloader */
				local-mac-address = [00 00 00 00 00 00];
			};

			icssg1_emac1: port@1 {
				reg = <1>;
				phy-handle = <&icssg1_phy2>;
				phy-mode = "rgmii-txid";
				ti,syscon-rgmii-delay = <&main_conf 0x4114>;
				/* Filled in by bootloader */
				local-mac-address = [00 00 00 00 00 00];
			};
		};
	};
};


We are using phy. we are using kernel 6.11 and a custom yocto build.

Thanks