When Kconfig PHY_ETHERNET_ID is set, create external PHY using via
ethernet-phy-id driver to support using starpping resistors
of the external PHY.

Fixes: commit a744a284e354  ("net: phy: Add support for ethernet-phy-id with 
gpio reset")
Signed-off-by: Tapio Reijonen <tapio.reijo...@vaisala.com>
---

 drivers/net/phy/xilinx_gmii2rgmii.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/drivers/net/phy/xilinx_gmii2rgmii.c 
b/drivers/net/phy/xilinx_gmii2rgmii.c
index e44b7b75bd5..1d6d204b228 100644
--- a/drivers/net/phy/xilinx_gmii2rgmii.c
+++ b/drivers/net/phy/xilinx_gmii2rgmii.c
@@ -18,7 +18,7 @@ DECLARE_GLOBAL_DATA_PTR;
 static int xilinxgmiitorgmii_config(struct phy_device *phydev)
 {
        ofnode node = phy_get_ofnode(phydev);
-       struct phy_device *ext_phydev;
+       struct phy_device *ext_phydev = NULL;
        struct ofnode_phandle_args phandle;
        int ext_phyaddr = -1;
        int ret;
@@ -40,8 +40,13 @@ static int xilinxgmiitorgmii_config(struct phy_device 
*phydev)
                return ret;
 
        ext_phyaddr = ofnode_read_u32_default(phandle.node, "reg", -1);
-       ext_phydev = phy_find_by_mask(phydev->bus,
-                                     1 << ext_phyaddr);
+
+       if (IS_ENABLED(CONFIG_PHY_ETHERNET_ID))
+               ext_phydev = phy_connect_phy_id(phydev->bus, phydev->dev, 
ext_phyaddr);
+
+       if (!ext_phydev)
+               ext_phydev = phy_find_by_mask(phydev->bus,
+                                             1 << ext_phyaddr);
        if (!ext_phydev) {
                printf("%s, No external phy device found\n", __func__);
                return -EINVAL;
-- 
2.39.5

Reply via email to