Revert "ar71xx: ag71xx: Add connect message: fixed phy"
[openwrt/staging/wigyori.git] / target / linux / ar71xx / files / drivers / net / ethernet / atheros / ag71xx / ag71xx_phy.c
index 9de77e924b7867cc93791adceff2e3aa361a5108..daa373be693291ca5302470cfde4129a59d9e72f 100644 (file)
@@ -76,10 +76,24 @@ void ag71xx_phy_stop(struct ag71xx *ag)
 
 static int ag71xx_phy_connect_fixed(struct ag71xx *ag)
 {
-       struct device *dev = &ag->pdev->dev;
+       struct platform_device *pdev = ag->pdev;
+       struct device *dev = NULL;
        struct ag71xx_platform_data *pdata = ag71xx_get_pdata(ag);
        int ret = 0;
 
+       if (!pdev)
+               return -ENODEV;
+
+       dev = &pdev->dev;
+
+       if (!dev)
+               return -ENODEV;
+
+       if (!ag->phy_dev) {
+               pr_err("Missing PHY for %s", dev_name(dev));
+               return -ENODEV;
+       }
+
        /* use fixed settings */
        switch (pdata->speed) {
        case SPEED_10:
@@ -112,6 +126,7 @@ static int ag71xx_phy_connect_multi(struct ag71xx *ag)
                if (!(pdata->phy_mask & (1 << phy_addr)))
                        continue;
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,5,0)
                if (ag->mii_bus->phy_map[phy_addr] == NULL)
                        continue;
 
@@ -122,6 +137,18 @@ static int ag71xx_phy_connect_multi(struct ag71xx *ag)
 
                if (phydev == NULL)
                        phydev = ag->mii_bus->phy_map[phy_addr];
+#else
+               if (ag->mii_bus->mdio_map[phy_addr] == NULL)
+                       continue;
+
+               DBG("%s: PHY found at %s, uid=%08x\n",
+                       dev_name(dev),
+                       dev_name(&ag->mii_bus->mdio_map[phy_addr]->dev),
+                       ag->mii_bus->mdio_map[phy_addr]->phy_id);
+
+               if (phydev == NULL)
+                       phydev = mdiobus_get_phy(ag->mii_bus, phy_addr);
+#endif
        }
 
        if (!phydev) {
@@ -130,13 +157,21 @@ static int ag71xx_phy_connect_multi(struct ag71xx *ag)
                return -ENODEV;
        }
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,5,0)
        ag->phy_dev = phy_connect(ag->dev, dev_name(&phydev->dev),
+#else
+       ag->phy_dev = phy_connect(ag->dev, phydev_name(phydev),
+#endif
                                  &ag71xx_phy_link_adjust,
                                  pdata->phy_if_mode);
 
        if (IS_ERR(ag->phy_dev)) {
                dev_err(dev, "could not connect to PHY at %s\n",
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,5,0)
                           dev_name(&phydev->dev));
+#else
+                          phydev_name(phydev));
+#endif
                return PTR_ERR(ag->phy_dev);
        }
 
@@ -149,7 +184,12 @@ static int ag71xx_phy_connect_multi(struct ag71xx *ag)
        phydev->advertising = phydev->supported;
 
        dev_info(dev, "connected to PHY at %s [uid=%08x, driver=%s]\n",
-                   dev_name(&phydev->dev), phydev->phy_id, phydev->drv->name);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,5,0)
+                   dev_name(&phydev->dev),
+#else
+                   phydev_name(phydev),
+#endif
+                   phydev->phy_id, phydev->drv->name);
 
        ag->link = 0;
        ag->speed = 0;