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.

AM6548: Linux BSP device tree when switching from TI DP83867 to TI DP83826

Part Number: AM6548

Hi Support,

We are using Phytec PhyCore AM65 SOM, and our custom board design is based on the Phytec AM65x carrier board.

The Phytec AM65x carrier board uses TI DP83867, we have changed to use TI DP83826.  TI DP83826 is 10/100/1000 and uses RGMII, DP83826 is 10/100 and uses RMII.

I wonder how to change the Linux device tree to switch from RGMII to RMII?

The current Linux device tree is as follows. Do we need to make any changes? 

PRUSS:

/* Dual Ethernet application node on PRU-ICSSG1 */
	pruss1_eth: pruss1_eth {
		compatible = "ti,am654-icssg-prueth";
		pinctrl-names = "default";
		pinctrl-0 = <&icssg1_rgmii_pins_default>;
		sram = <&msmc_ram>;
		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>;
		mii-g-rt = <&icssg1_mii_g_rt>;
		mii-rt = <&icssg1_mii_rt>;
		dma-coherent;
		dmas = <&main_udmap 0xc200>, /* egress slice 0 */
		       <&main_udmap 0xc201>, /* egress slice 0 */
		       <&main_udmap 0xc202>, /* egress slice 0 */
		       <&main_udmap 0xc203>, /* egress slice 0 */
		       <&main_udmap 0xc204>, /* egress slice 1 */
		       <&main_udmap 0xc205>, /* egress slice 1 */
		       <&main_udmap 0xc206>, /* egress slice 1 */
		       <&main_udmap 0xc207>, /* egress slice 1 */

		       <&main_udmap 0x4200>, /* ingress slice 0 */
		       <&main_udmap 0x4201>, /* ingress slice 1 */
		       <&main_udmap 0x4202>, /* mgmnt rsp slice 0 */
		       <&main_udmap 0x4203>; /* mgmnt rsp slice 1 */
		dma-names = "tx0-0", "tx0-1", "tx0-2", "tx0-3",
			    "tx1-0", "tx1-1", "tx1-2", "tx1-3",
			    "rx0", "rx1",
			    "rxmgm0", "rxmgm1";

		pruss1_emac0: ethernet-mii0 {
			phy-handle = <&pruss1_eth1_phy>;
			phy-mode = "rmii";
			interrupts-extended = <&icssg1_intc 24>;
			syscon-rgmii-delay = <&scm_conf 0x4110>;
			iep = <&icssg1_iep0>;
			/* Filled in by bootloader */
			local-mac-address = [00 00 00 00 00 00];
		};

		pruss1_emac1: ethernet-mii1 {
			phy-handle = <&pruss1_eth2_phy>;
			phy-mode = "rmii";
			interrupts-extended = <&icssg1_intc 25>;
			syscon-rgmii-delay = <&scm_conf 0x4114>;
			/* Filled in by bootloader */
			local-mac-address = [00 00 00 00 00 00];
		};
	};

Pin mux:

icssg1_mdio_pins_default: icssg1_mdio_pins_default {
		pinctrl-single,pins = <
			AM65X_IOPAD(0x0180, PIN_INPUT, 0)	/* (AD18) PRG1_MDIO0_MDIO */
			AM65X_IOPAD(0x0184, PIN_OUTPUT, 0)	/* (AH18) PRG1_MDIO0_MDC */
		>;
	};

	icssg1_rgmii_pins_default: icssg1_rgmii_pins_default {
		pinctrl-single,pins = <
			AM65X_IOPAD(0x00e0, PIN_INPUT, 2)	/* (AE22) PRG1_PRU0_GPO0.PRG1_RGMII1_RD0 */
			AM65X_IOPAD(0x00e4, PIN_INPUT, 2)	/* (AG24) PRG1_PRU0_GPO1.PRG1_RGMII1_RD1 */
			AM65X_IOPAD(0x00e8, PIN_INPUT, 2)	/* (AF23) PRG1_PRU0_GPO2.PRG1_RGMII1_RD2 */
			AM65X_IOPAD(0x00ec, PIN_INPUT, 2)	/* (AD21) PRG1_PRU0_GPO3.PRG1_RGMII1_RD3 */
			AM65X_IOPAD(0x00f0, PIN_INPUT, 2)	/* (AG23) PRG1_PRU0_GPO4.PRG1_RGMII1_RX_CTL */
			AM65X_IOPAD(0x00f8, PIN_INPUT, 2)	/* (AF22) PRG1_PRU0_GPO6.PRG1_RGMII1_RXC */
			AM65X_IOPAD(0x010c, PIN_OUTPUT, 2)	/* (AF21) PRG1_PRU0_GPO11.PRG1_RGMII1_TX_CTL */
			AM65X_IOPAD(0x0110, PIN_OUTPUT, 2)	/* (AH20) PRG1_PRU0_GPO12.PRG1_RGMII1_TD0 */
			AM65X_IOPAD(0x0114, PIN_OUTPUT, 2)	/* (AH21) PRG1_PRU0_GPO13.PRG1_RGMII1_TD1 */
			AM65X_IOPAD(0x0118, PIN_OUTPUT, 2)	/* (AG20) PRG1_PRU0_GPO14.PRG1_RGMII1_TD2 */
			AM65X_IOPAD(0x011c, PIN_OUTPUT, 2)	/* (AD19) PRG1_PRU0_GPO15.PRG1_RGMII1_TD3 */
			AM65X_IOPAD(0x0120, PIN_INPUT, 2)	/* (AD20) PRG1_PRU0_GPO16.PRG1_RGMII1_TXC */

			AM65X_IOPAD(0x0130, PIN_INPUT, 2)	/* (AH24) PRG1_PRU1_GPO0.PRG1_RGMII2_RD0 */
			AM65X_IOPAD(0x0134, PIN_INPUT, 2)	/* (AH23) PRG1_PRU1_GPO1.PRG1_RGMII2_RD1 */
			AM65X_IOPAD(0x0138, PIN_INPUT, 2)	/* (AG21) PRG1_PRU1_GPO2.PRG1_RGMII2_RD2 */
			AM65X_IOPAD(0x013c, PIN_INPUT, 2)	/* (AH22) PRG1_PRU1_GPO3.PRG1_RGMII2_RD3 */
			AM65X_IOPAD(0x0140, PIN_INPUT, 2)	/* (AE21) PRG1_PRU1_GPO4.PRG1_RGMII2_RX_CTL */
			AM65X_IOPAD(0x0148, PIN_INPUT, 2)	/* (AG22) PRG1_PRU1_GPO6.PRG1_RGMII2_RXC */
			AM65X_IOPAD(0x015c, PIN_OUTPUT, 2)	/* (AC20) PRG1_PRU1_GPO11.PRG1_RGMII2_TX_CTL */
			AM65X_IOPAD(0x0160, PIN_OUTPUT, 2)	/* (AE20) PRG1_PRU1_GPO12.PRG1_RGMII2_TD0 */
			AM65X_IOPAD(0x0164, PIN_OUTPUT, 2)	/* (AF19) PRG1_PRU1_GPO13.PRG1_RGMII2_TD1 */
			AM65X_IOPAD(0x0168, PIN_OUTPUT, 2)	/* (AH19) PRG1_PRU1_GPO14.PRG1_RGMII2_TD2 */
			AM65X_IOPAD(0x016c, PIN_OUTPUT, 2)	/* (AG19) PRG1_PRU1_GPO15.PRG1_RGMII2_TD3 */
			AM65X_IOPAD(0x0170, PIN_INPUT, 2)	/* (AE19) PRG1_PRU1_GPO16.PRG1_RGMII2_TXC */
		>;
	};

MDIO:

&icssg1_mdio {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&icssg1_mdio_pins_default>;

	pruss1_eth1_phy: ethernet-phy@1 {
		reg = <1>;
		rx-internal-delay-ps = <1>;
		tx-internal-delay-ps = <1>;
	};

	pruss1_eth2_phy: ethernet-phy@5 {
		reg = <5>;
		rx-internal-delay-ps = <1>;
		tx-internal-delay-ps = <1>;
	};
};