From: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
Date: Wed, 22 Mar 2023 08:42:47 +0000 (+0100)
Subject: net: phy: gmii2rgmii: Support external rgmii-id phy
X-Git-Tag: v2025.01-rc5-pxa1908~1009^2~16
X-Git-Url: http://git.dujemihanovic.xyz/img/html/static/%7B%7B?a=commitdiff_plain;h=29003429617945250e2cafed985f8221d4b46832;p=u-boot.git

net: phy: gmii2rgmii: Support external rgmii-id phy

Read the phy mode of the external phy from the device tree if available
and check that it is a RGMII variant.

Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
---

diff --git a/drivers/net/phy/xilinx_gmii2rgmii.c b/drivers/net/phy/xilinx_gmii2rgmii.c
index 0b7436a7e1..e2969bc484 100644
--- a/drivers/net/phy/xilinx_gmii2rgmii.c
+++ b/drivers/net/phy/xilinx_gmii2rgmii.c
@@ -48,7 +48,14 @@ static int xilinxgmiitorgmii_config(struct phy_device *phydev)
 		return -EINVAL;
 	}
 
-	ext_phydev->interface = PHY_INTERFACE_MODE_RGMII;
+	ext_phydev->interface = ofnode_read_phy_mode(node);
+	if (ext_phydev->interface == PHY_INTERFACE_MODE_NA) {
+		ext_phydev->interface = PHY_INTERFACE_MODE_RGMII;
+	} else if (!phy_interface_is_rgmii(ext_phydev)) {
+		printf("Incorrect external interface type\n");
+		return -EINVAL;
+	}
+
 	ext_phydev->node = phandle.node;
 	phydev->priv = ext_phydev;