Simplify the logic of phy_connect_fixed() by using the new API
ofnode_phy_is_fixed_link(), which brings additional bonus of
supporting the old DT bindings.

Signed-off-by: Bin Meng <bmeng...@gmail.com>
---

 drivers/net/phy/phy.c | 18 ++++++------------
 1 file changed, 6 insertions(+), 12 deletions(-)

diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
index 69e02685fa..0e85a80761 100644
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -18,6 +18,7 @@
 #include <phy.h>
 #include <errno.h>
 #include <asm/global_data.h>
+#include <dm/of_extra.h>
 #include <linux/bitops.h>
 #include <linux/delay.h>
 #include <linux/err.h>
@@ -1002,19 +1003,12 @@ static struct phy_device *phy_connect_fixed(struct 
mii_dev *bus,
                                            phy_interface_t interface)
 {
        struct phy_device *phydev = NULL;
-       ofnode node = dev_ofnode(dev);
-       const char *name;
+       ofnode eth_node = dev_ofnode(dev);
+       ofnode phy_node;
 
-       node = ofnode_first_subnode(node);
-       while (ofnode_valid(node)) {
-               name = ofnode_get_name(node);
-               if (name && strcmp(name, "fixed-link") == 0) {
-                       phydev = phy_device_create(bus, ofnode_to_offset(node),
-                                                  PHY_FIXED_ID, false,
-                                                  interface);
-                       break;
-               }
-               node = ofnode_next_subnode(node);
+       if (ofnode_phy_is_fixed_link(eth_node, &phy_node)) {
+               phydev = phy_device_create(bus, ofnode_to_offset(phy_node),
+                                          PHY_FIXED_ID, false, interface);
        }
 
        return phydev;
-- 
2.25.1

Reply via email to