generic: ar8216: simplify phy features setup
[oweals/openwrt.git] / target / linux / generic / files / drivers / net / phy / ar8216.c
index c02803b5e01d7c50dd901a4927ef4e8cfa0cc429..e6a460734fe207f16c1e780ebbc986a3845c99e8 100644 (file)
@@ -1653,7 +1653,7 @@ ar8216_id_chip(struct ar8216_priv *priv)
        u16 id;
        int i;
 
-       val = ar8216_mii_read(priv, AR8216_REG_CTRL);
+       val = priv->read(priv, AR8216_REG_CTRL);
        if (val == ~0)
                return -ENODEV;
 
@@ -1661,7 +1661,7 @@ ar8216_id_chip(struct ar8216_priv *priv)
        for (i = 0; i < AR8X16_PROBE_RETRIES; i++) {
                u16 t;
 
-               val = ar8216_mii_read(priv, AR8216_REG_CTRL);
+               val = priv->read(priv, AR8216_REG_CTRL);
                if (val == ~0)
                        return -ENODEV;
 
@@ -1689,10 +1689,8 @@ ar8216_id_chip(struct ar8216_priv *priv)
                break;
        default:
                printk(KERN_DEBUG
-                       "ar8216: Unknown Atheros device [ver=%d, rev=%d, phy_id=%04x%04x]\n",
-                       priv->chip_ver, priv->chip_rev,
-                       mdiobus_read(priv->mii_bus, priv->phy->addr, 2),
-                       mdiobus_read(priv->mii_bus, priv->phy->addr, 3));
+                       "ar8216: Unknown Atheros device [ver=%d, rev=%d]\n",
+                       priv->chip_ver, priv->chip_rev);
 
                return -ENODEV;
        }
@@ -1784,18 +1782,22 @@ ar8216_config_init(struct phy_device *pdev)
        }
 
        priv->mii_bus = pdev->bus;
+       priv->read = ar8216_mii_read;
+       priv->write = ar8216_mii_write;
+
        priv->phy = pdev;
 
        ret = ar8216_id_chip(priv);
        if (ret)
                goto err_free_priv;
 
-       if (pdev->addr != 0) {
-               if (ar8xxx_has_gige(priv)) {
-                       pdev->supported |= SUPPORTED_1000baseT_Full;
-                       pdev->advertising |= ADVERTISED_1000baseT_Full;
-               }
+       if (ar8xxx_has_gige(priv))
+               pdev->supported = SUPPORTED_1000baseT_Full;
+       else
+               pdev->supported = SUPPORTED_100baseT_Full;
+       pdev->advertising = pdev->supported;
 
+       if (pdev->addr != 0) {
                if (chip_is_ar8316(priv)) {
                        /* check if we're attaching to the switch twice */
                        pdev = pdev->bus->phy_map[0];
@@ -1826,15 +1828,7 @@ ar8216_config_init(struct phy_device *pdev)
                return 0;
        }
 
-       if (ar8xxx_has_gige(priv))
-               pdev->supported = SUPPORTED_1000baseT_Full;
-       else
-               pdev->supported = SUPPORTED_100baseT_Full;
-       pdev->advertising = pdev->supported;
-
        mutex_init(&priv->reg_mutex);
-       priv->read = ar8216_mii_read;
-       priv->write = ar8216_mii_write;
 
        pdev->priv = priv;
 
@@ -1972,6 +1966,8 @@ ar8216_probe(struct phy_device *pdev)
                return -ENOMEM;
 
        priv->mii_bus = pdev->bus;
+       priv->read = ar8216_mii_read;
+       priv->write = ar8216_mii_write;
        priv->phy = pdev;
 
        ret = ar8216_id_chip(priv);