drivers: net: xgene: Fix backward compatibility
authorIyappan Subramanian <isubramanian@apm.com>
Sat, 13 Aug 2016 05:05:47 +0000 (22:05 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sat, 13 Aug 2016 18:48:53 +0000 (11:48 -0700)
This patch fixes the backward compatibility on handling phy_connect(), by
iterating over the phy-handle, when new DT is used with older kernel.

Signed-off-by: Iyappan Subramanian <isubramanian@apm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/apm/xgene/xgene_enet_hw.c

index 18bb9556dd006861c0cc6e9a8997bac14ade5223..321fb197621e29c1ed01693f79035f2f26b50460 100644 (file)
@@ -761,18 +761,18 @@ int xgene_enet_phy_connect(struct net_device *ndev)
        if (dev->of_node) {
                for (i = 0 ; i < 2; i++) {
                        np = of_parse_phandle(dev->of_node, "phy-handle", i);
-                       if (np)
-                               break;
-               }
 
-               if (!np) {
-                       netdev_dbg(ndev, "No phy-handle found in DT\n");
-                       return -ENODEV;
+                       if (!np)
+                               continue;
+
+                       phy_dev = of_phy_connect(ndev, np,
+                                                &xgene_enet_adjust_link,
+                                                0, pdata->phy_mode);
+                       of_node_put(np);
+                       if (phy_dev)
+                               break;
                }
 
-               phy_dev = of_phy_connect(ndev, np, &xgene_enet_adjust_link,
-                                        0, pdata->phy_mode);
-               of_node_put(np);
                if (!phy_dev) {
                        netdev_err(ndev, "Could not connect to PHY\n");
                        return -ENODEV;