diff options
Diffstat (limited to 'drivers/net/ethernet/apm/xgene/xgene_enet_hw.c')
-rw-r--r-- | drivers/net/ethernet/apm/xgene/xgene_enet_hw.c | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/drivers/net/ethernet/apm/xgene/xgene_enet_hw.c b/drivers/net/ethernet/apm/xgene/xgene_enet_hw.c index cfa37041ab71..c4bb8027b3fb 100644 --- a/drivers/net/ethernet/apm/xgene/xgene_enet_hw.c +++ b/drivers/net/ethernet/apm/xgene/xgene_enet_hw.c | |||
@@ -689,16 +689,24 @@ static int xgene_enet_phy_connect(struct net_device *ndev) | |||
689 | netdev_dbg(ndev, "No phy-handle found in DT\n"); | 689 | netdev_dbg(ndev, "No phy-handle found in DT\n"); |
690 | return -ENODEV; | 690 | return -ENODEV; |
691 | } | 691 | } |
692 | pdata->phy_dev = of_phy_find_device(phy_np); | ||
693 | } | ||
694 | 692 | ||
695 | phy_dev = pdata->phy_dev; | 693 | phy_dev = of_phy_connect(ndev, phy_np, &xgene_enet_adjust_link, |
694 | 0, pdata->phy_mode); | ||
695 | if (!phy_dev) { | ||
696 | netdev_err(ndev, "Could not connect to PHY\n"); | ||
697 | return -ENODEV; | ||
698 | } | ||
699 | |||
700 | pdata->phy_dev = phy_dev; | ||
701 | } else { | ||
702 | phy_dev = pdata->phy_dev; | ||
696 | 703 | ||
697 | if (!phy_dev || | 704 | if (!phy_dev || |
698 | phy_connect_direct(ndev, phy_dev, &xgene_enet_adjust_link, | 705 | phy_connect_direct(ndev, phy_dev, &xgene_enet_adjust_link, |
699 | pdata->phy_mode)) { | 706 | pdata->phy_mode)) { |
700 | netdev_err(ndev, "Could not connect to PHY\n"); | 707 | netdev_err(ndev, "Could not connect to PHY\n"); |
701 | return -ENODEV; | 708 | return -ENODEV; |
709 | } | ||
702 | } | 710 | } |
703 | 711 | ||
704 | pdata->phy_speed = SPEED_UNKNOWN; | 712 | pdata->phy_speed = SPEED_UNKNOWN; |