[QUESTION] Device tree for gmii-to-rgmii phy driver

Stefan Herbrechtsmeier stefan.herbrechtsmeier-oss at weidmueller.com
Thu Mar 16 17:52:23 CET 2023


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 at 1 {
         };

         gmiitorgmii0: gmiitorgmii at 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 at 1 {
         };

         gmiitorgmii0: gmiitorgmii at 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



More information about the U-Boot mailing list