Index: sys/dev/mii/e1000phy.c =================================================================== --- sys/dev/mii/e1000phy.c (revision 215455) +++ sys/dev/mii/e1000phy.c (working copy) @@ -160,12 +160,13 @@ if (PHY_READ(sc, E1000_ESSR) & E1000_ESSR_FIBER_LINK) sc->mii_flags |= MIIF_HAVEFIBER; break; + case MII_MODEL_MARVELL_E1116: case MII_MODEL_MARVELL_E1149: /* - * Some 88E1149 PHY's page select is initialized to - * point to other bank instead of copper/fiber bank - * which in turn resulted in wrong registers were - * accessed during PHY operation. It is believed that + * Some 88E1116 and 88E1149 PHY's page selection is + * initialized to point to other bank instead of + * copper/fiber bank which in turn resulted in accessing + * wrong registers during PHY operation. It is believed * page 0 should be used for copper PHY so reinitialize * E1000_EADR to select default copper PHY. If parent * device know the type of PHY(either copper or fiber), @@ -257,11 +258,12 @@ if (esc->mii_model == MII_MODEL_MARVELL_E1116 || esc->mii_model == MII_MODEL_MARVELL_E1149) { + page = PHY_READ(sc, E1000_EADR); PHY_WRITE(sc, E1000_EADR, 2); reg = PHY_READ(sc, E1000_SCR); reg |= E1000_SCR_RGMII_POWER_UP; PHY_WRITE(sc, E1000_SCR, reg); - PHY_WRITE(sc, E1000_EADR, 0); + PHY_WRITE(sc, E1000_EADR, page); } }