aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/mii/e1000phy.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/mii/e1000phy.c')
-rw-r--r--sys/dev/mii/e1000phy.c7
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) {