OSDN Git Service

net: phy: bcm7xxx: utilize PHY revision in config_init
authorFlorian Fainelli <f.fainelli@gmail.com>
Fri, 19 Sep 2014 20:07:56 +0000 (13:07 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 19 Sep 2014 20:27:07 +0000 (16:27 -0400)
Now that the GENET and SF2 drivers have been updated to communicate us
what is the revision of the BCM7xxx integrated PHY, utilize that
information in the config_init() callback to call into the appropriate
workaround function based on our revision.

While at it, we also print the revision and patch level to help debug
new chips.

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/bcm7xxx.c

index be3a591..daae699 100644 (file)
@@ -196,13 +196,22 @@ static int bcm7xxx_eee_enable(struct phy_device *phydev)
 
 static int bcm7xxx_28nm_config_init(struct phy_device *phydev)
 {
-       int ret;
-
-       ret = bcm7445_config_init(phydev);
-       if (ret)
-               return ret;
+       u8 rev = PHY_BRCM_7XXX_REV(phydev->dev_flags);
+       u8 patch = PHY_BRCM_7XXX_PATCH(phydev->dev_flags);
+       int ret = 0;
+
+       dev_info(&phydev->dev, "PHY revision: 0x%02x, patch: %d\n", rev, patch);
+
+       switch (rev) {
+       case 0xa0:
+       case 0xb0:
+               ret = bcm7445_config_init(phydev);
+               break;
+       default:
+               ret = bcm7xxx_28nm_afe_config_init(phydev);
+               break;
+       }
 
-       ret = bcm7xxx_28nm_afe_config_init(phydev);
        if (ret)
                return ret;