generic: ar8216: start aneg on each PHY of the AR8327
authorGabor Juhos <juhosg@openwrt.org>
Thu, 5 Jul 2012 08:26:39 +0000 (08:26 +0000)
committerGabor Juhos <juhosg@openwrt.org>
Thu, 5 Jul 2012 08:26:39 +0000 (08:26 +0000)
SVN-Revision: 32604

target/linux/generic/files/drivers/net/phy/ar8216.c

index 698d92dd7d334c77359f21d42bc85867edaf03c4..4df2dbbdb59f67f4904d186626205978d6ce58f5 100644 (file)
@@ -734,6 +734,7 @@ ar8327_hw_init(struct ar8216_priv *priv)
 {
        struct ar8327_platform_data *pdata;
        struct ar8327_led_cfg *led_cfg;
+       struct mii_bus *bus;
        u32 pos, new_pos;
        u32 t;
        int i;
@@ -770,9 +771,20 @@ ar8327_hw_init(struct ar8216_priv *priv)
                priv->write(priv, AR8327_REG_POWER_ON_STRIP, new_pos);
        }
 
-       for (i = 0; i < AR8327_NUM_PHYS; i++)
+       bus = priv->phy->bus;
+       for (i = 0; i < AR8327_NUM_PHYS; i++) {
                ar8327_phy_fixup(priv, i);
 
+               /* start aneg on the PHY */
+               mdiobus_write(bus, i, MII_ADVERTISE, ADVERTISE_ALL |
+                                                    ADVERTISE_PAUSE_CAP |
+                                                    ADVERTISE_PAUSE_ASYM);
+               mdiobus_write(bus, i, MII_CTRL1000, ADVERTISE_1000FULL);
+               mdiobus_write(bus, i, MII_BMCR, BMCR_RESET | BMCR_ANENABLE);
+       }
+
+       msleep(1000);
+
        return 0;
 }