Browse Source

generic: ar8216: start aneg on each PHY of the AR8327

SVN-Revision: 32604
Gabor Juhos 13 years ago
parent
commit
6b8392eb12
1 changed files with 13 additions and 1 deletions
  1. 13 1
      target/linux/generic/files/drivers/net/phy/ar8216.c

+ 13 - 1
target/linux/generic/files/drivers/net/phy/ar8216.c

@@ -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;
 }