diff options
Diffstat (limited to 'sys/dev/mii/e1000phy.c')
-rw-r--r-- | sys/dev/mii/e1000phy.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/sys/dev/mii/e1000phy.c b/sys/dev/mii/e1000phy.c index e978c043d72a..050e9db71577 100644 --- a/sys/dev/mii/e1000phy.c +++ b/sys/dev/mii/e1000phy.c @@ -185,6 +185,11 @@ e1000phy_reset(struct mii_softc *sc) { uint16_t reg, page; + /* Undo power-down / isolate */ + reg = PHY_READ(sc, E1000_CR); + reg &= ~(E1000_CR_ISOLATE | E1000_CR_POWER_DOWN); + PHY_WRITE(sc, E1000_CR, reg); + reg = PHY_READ(sc, E1000_SCR); if ((sc->mii_flags & MIIF_HAVEFIBER) != 0) { reg &= ~E1000_SCR_AUTO_X_MODE; @@ -353,6 +358,8 @@ e1000phy_service(struct mii_softc *sc, struct mii_data *mii, int cmd) reg = PHY_READ(sc, E1000_CR); reg &= ~E1000_CR_AUTO_NEG_ENABLE; + /* Undo power-down / isolate */ + reg &= ~(E1000_CR_ISOLATE | E1000_CR_POWER_DOWN); PHY_WRITE(sc, E1000_CR, reg | E1000_CR_RESET); if (IFM_SUBTYPE(ife->ifm_media) == IFM_1000_T) { |