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.

DP83869HM: How to configure the phy node, when it is not linked to an Ethernet controller

Part Number: DP83869HM

Hi,

on our custom board we use the DP83869HM phy chip, connected to a NXP SJA1105S switch. We configure the switch directly via SPI interface, no device tree entry is used. The following phy settings are already configured via strap pins:

  • operational mode is set to RGMII copper Ethernet
  • autonegotiation enabled
  • mirroring disabled

The associated Linux phy driver is available as an int-tree Kernel module. Is it possible to configure and start up the phy via device tree in this special use case and if yes, how? For us it is especially important, that we can setup the RGMII internal delays.

As an example, this is our current network-related device tree configuration:

&ethernet0{
	pinctrl-names = "default", "sleep";
	pinctrl-0 = <&eth1_pins_mx>;
	pinctrl-1 = <&eth1_sleep_pins_mx>;
	status = "okay";

	/* USER CODE BEGIN ethernet0 */

	st,eth-clk-sel;
	phy-mode = "rgmii-id";

	fixed-link {
		speed = <1000>;
		full-duplex;
	};

	mdio0 {
		#address-cells = <1>;
		#size-cells = <0>;
		compatible = "snps,dwmac-mdio";

		rgmii_phy5: ethernet-phy@5 {
		    /* DP83TG720S-Q1 */
		    compatible = "ethernet-phy-ieee802.3-c22";
			reg = <5>;
			status = "okay";
		};

		rgmii_phy4: ethernet-phy@4 {
            /* DP83TG720S-Q1 */
			compatible = "ethernet-phy-ieee802.3-c22";
			reg = <4>;
			status = "okay";
		};

		rgmii_phy0: ethernet-phy@0 {
			/* TI DP83869HM */
			compatible = "ethernet-phy-ieee802.3-c22";
			reg = <0>;
			ti,op-mode = <DP83869_RGMII_COPPER_ETHERNET>;
			rx-internal-delay-ps = <2000>;
			tx-internal-delay-ps = <2000>;
			status = "okay";
		};
	};

	/* USER CODE END ethernet0 */
};

Thanks and best regards

  • Hello Christian,

    You may configure the Rgmii delay settings by programming the following registers : 

    1. Reg x32[1:0] to enable shift mode for Tx and Rx.

    2. Reg x86[7:4] and Reg x86[3:0] for fine tuning the delay futher.

    Details of these registers are in the datasheet.

    --

    Regards,

    Vikram