diff options
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/mii/makphy.c | 26 | ||||
| -rw-r--r-- | sys/dev/mii/makphyvar.h | 5 |
2 files changed, 19 insertions, 12 deletions
diff --git a/sys/dev/mii/makphy.c b/sys/dev/mii/makphy.c index b9957ea0cb7..836a24066e3 100644 --- a/sys/dev/mii/makphy.c +++ b/sys/dev/mii/makphy.c @@ -1,4 +1,4 @@ -/* $NetBSD: makphy.c,v 1.70 2021/12/28 06:35:37 msaitoh Exp $ */ +/* $NetBSD: makphy.c,v 1.71 2021/12/28 06:36:29 msaitoh Exp $ */ /*- * Copyright (c) 1998, 1999, 2000, 2001 The NetBSD Foundation, Inc. @@ -59,7 +59,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: makphy.c,v 1.70 2021/12/28 06:35:37 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: makphy.c,v 1.71 2021/12/28 06:36:29 msaitoh Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -259,7 +259,8 @@ page0: default: break; } - } + } else + maksc->sc_flags |= MAKPHY_F_FICO_AUTOSEL; break; default: break; @@ -487,14 +488,19 @@ makphy_status(struct mii_softc *sc) mii->mii_media_active |= IFM_1000_SX; } else if ((sc->mii_mpd_model == MII_MODEL_xxMARVELL_E1011) || (sc->mii_mpd_model == MII_MODEL_xxMARVELL_E1111)) { - /* Fiber/Copper auto select mode */ - - PHY_READ(sc, MAKPHY_ESSR, &essr); - if ((essr & ESSR_FIBER_LINK) == 0) + struct makphy_softc *maksc = (struct makphy_softc *)sc; + + if ((maksc->sc_flags & MAKPHY_F_FICO_AUTOSEL) != 0) { + /* Fiber/Copper auto select mode */ + PHY_READ(sc, MAKPHY_ESSR, &essr); + if ((essr & ESSR_FIBER_LINK) == 0) + goto copper; + else { + /* Regard as 1000BASE-SX */ + mii->mii_media_active |= IFM_1000_SX; + } + } else goto copper; - - /* XXX Assume 1000BASE-SX only */ - mii->mii_media_active |= IFM_1000_SX; } else if (sc->mii_mpd_model == MII_MODEL_xxMARVELL_E1112) { /* Fiber/Copper auto select mode */ diff --git a/sys/dev/mii/makphyvar.h b/sys/dev/mii/makphyvar.h index 853f97c3418..ee12c9f02a3 100644 --- a/sys/dev/mii/makphyvar.h +++ b/sys/dev/mii/makphyvar.h @@ -1,4 +1,4 @@ -/* $NetBSD: makphyvar.h,v 1.2 2019/03/25 06:17:56 msaitoh Exp $ */ +/* $NetBSD: makphyvar.h,v 1.3 2021/12/28 06:36:29 msaitoh Exp $ */ /*- * Copyright (c) 2018 The NetBSD Foundation, Inc. @@ -37,6 +37,7 @@ struct makphy_softc { uint32_t sc_flags; }; -#define MAKPHY_F_I210 __BIT(0) /* Identify I210 (mii_model == 0) */ +#define MAKPHY_F_I210 __BIT(0) /* Identify I210 (mii_model == 0) */ +#define MAKPHY_F_FICO_AUTOSEL __BIT(1) /* Fiber/Copper autoselect mode */ #endif /* _MII_MAKPHYVAR_H_ */ |
