Hi Siva Durga Prasad Paladugu,

we want to add rgmii-id support to the gmiitorgmii phy driver. How does the correct device tree for the gmiitorgmii looks like? The converter sits between the MAC and the external PHY (MAC <==> GMII2RGMII <==> RGMII_PHY) which would mean that the phy-handle of the MAC should point to the GMII2RGMII and the GMII2RGMII to RGMII_PHY:

&gem0 {
    phy-handle = <&gmiitorgmii0>;
    phy-mode = "gmii";

    mdio {
        ethphy0: ethernet-phy@1 {
        };

        gmiitorgmii0: gmiitorgmii@8 {
            compatible = "xlnx,gmii-to-rgmii-1.0";
            phy-handle = <&ethphy0>;
            phy-mode = "rgmii-id";
        };
    };
};

This device tree snippet does not work in the kernel. The kernel gmii2rgmii driver does not use a phy driver as base and manipulates the functions of the external phy object instead. It requires the following device tree snippet:

&gem0 {
    phy-handle = <&ethphy0>;
    phy-mode = "rgmii-id";

    mdio {
        ethphy0: ethernet-phy@1 {
        };

        gmiitorgmii0: gmiitorgmii@8 {
            compatible = "xlnx,gmii-to-rgmii-1.0";
            phy-handle = <&ethphy0>;
            phy-mode = "rgmii-id";
        };
    };
};

This does not work in u-boot because the phy framework ignores the phy-handle of the MAC for the gmii2rgmii but the gmii2rgmii driver itself checks the phy-mode of the MAC.

What is the correct device tree and thereby proper implementation?

Regards
  Stefan

Reply via email to