generic: ar8216: move ar8xxx_id_chip into ar8xxx_phy_probe
[openwrt/openwrt.git] / target / linux / generic / files / drivers / net / phy / ar8216.c
index 2f0be1b8da7848b43ed72681288edf6ace29020d..b8cc2c8f4c2155b3a0c2c25a7bfdfafe41e0d4d6 100644 (file)
 #include <linux/skbuff.h>
 #include <linux/netdevice.h>
 #include <linux/netlink.h>
+#include <linux/of_device.h>
 #include <linux/bitops.h>
 #include <net/genetlink.h>
 #include <linux/switch.h>
 #include <linux/delay.h>
 #include <linux/phy.h>
-#include <linux/netdevice.h>
 #include <linux/etherdevice.h>
 #include <linux/lockdep.h>
 #include <linux/ar8216_platform.h>
@@ -1813,7 +1813,7 @@ static const struct ar8xxx_chip ar8316_chip = {
 };
 
 static int
-ar8xxx_id_chip(struct ar8xxx_priv *priv)
+ar8xxx_read_id(struct ar8xxx_priv *priv)
 {
        u32 val;
        u16 id;
@@ -1838,6 +1838,17 @@ ar8xxx_id_chip(struct ar8xxx_priv *priv)
 
        priv->chip_ver = (id & AR8216_CTRL_VERSION) >> AR8216_CTRL_VERSION_S;
        priv->chip_rev = (id & AR8216_CTRL_REVISION);
+       return 0;
+}
+
+static int
+ar8xxx_id_chip(struct ar8xxx_priv *priv)
+{
+       int ret;
+
+       ret = ar8xxx_read_id(priv);
+       if(ret)
+               return ret;
 
        switch (priv->chip_ver) {
        case AR8XXX_VER_AR8216:
@@ -1964,10 +1975,6 @@ ar8xxx_probe_switch(struct ar8xxx_priv *priv)
        struct switch_dev *swdev;
        int ret;
 
-       ret = ar8xxx_id_chip(priv);
-       if (ret)
-               return ret;
-
        chip = priv->chip;
 
        swdev = &priv->dev;
@@ -2195,6 +2202,11 @@ ar8xxx_phy_probe(struct phy_device *phydev)
        }
 
        priv->mii_bus = phydev->mdio.bus;
+       priv->pdev = &phydev->mdio.dev;
+
+       ret = ar8xxx_id_chip(priv);
+       if (ret)
+               goto free_priv;
 
        ret = ar8xxx_probe_switch(priv);
        if (ret)