ar71xx: ag71xx: check PHY IDs before accessing the switch registers
authorjuhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Thu, 15 Dec 2011 13:25:23 +0000 (13:25 +0000)
committerjuhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Thu, 15 Dec 2011 13:25:23 +0000 (13:25 +0000)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@29541 3c298f89-4303-0410-b956-a3cf2f4a3e73

target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_ar7240.c

index ffc4948..c0eca4a 100644 (file)
@@ -852,6 +852,14 @@ static struct ar7240sw *ar7240_probe(struct ag71xx *ag)
        u8 ver;
        int i;
 
+       phy_id1 = ar7240sw_phy_read(mii, 0, MII_PHYSID1);
+       phy_id2 = ar7240sw_phy_read(mii, 0, MII_PHYSID2);
+       if (phy_id1 != AR7240_PHY_ID1 || phy_id2 != AR7240_PHY_ID2) {
+               pr_err("%s: unknown phy id '%04x:%04x'\n",
+                      ag->dev->name, phy_id1, phy_id2);
+               return NULL;
+       }
+
        as = kzalloc(sizeof(*as), GFP_KERNEL);
        if (!as)
                return NULL;
@@ -859,7 +867,6 @@ static struct ar7240sw *ar7240_probe(struct ag71xx *ag)
        as->mii_bus = mii;
 
        ctrl = ar7240sw_reg_read(mii, AR7240_REG_MASK_CTRL);
-
        ver = (ctrl >> AR7240_MASK_CTRL_VERSION_S) & AR7240_MASK_CTRL_VERSION_M;
        if (ver != 1) {
                pr_err("%s: unsupported chip, ctrl=%08x\n",
@@ -867,14 +874,6 @@ static struct ar7240sw *ar7240_probe(struct ag71xx *ag)
                return NULL;
        }
 
-       phy_id1 = ar7240sw_phy_read(mii, 0, MII_PHYSID1);
-       phy_id2 = ar7240sw_phy_read(mii, 0, MII_PHYSID2);
-       if (phy_id1 != AR7240_PHY_ID1 || phy_id2 != AR7240_PHY_ID2) {
-               pr_err("%s: unknown phy id '%04x:%04x'\n",
-                      ag->dev->name, phy_id1, phy_id2);
-               return NULL;
-       }
-
        swdev = &as->swdev;
        swdev->name = "AR7240 built-in switch";
        swdev->ports = AR7240_NUM_PORTS - 1;