diff options
Diffstat (limited to 'sys/dev/mii/inphy.c')
-rw-r--r-- | sys/dev/mii/inphy.c | 27 |
1 files changed, 4 insertions, 23 deletions
diff --git a/sys/dev/mii/inphy.c b/sys/dev/mii/inphy.c index 58e070f..6ad444a 100644 --- a/sys/dev/mii/inphy.c +++ b/sys/dev/mii/inphy.c @@ -144,7 +144,7 @@ inphy_attach(device_t dev) sc->mii_capabilities = PHY_READ(sc, MII_BMSR) & ma->mii_capmask; device_printf(dev, " "); - mii_add_media(sc); + mii_phy_add_media(sc); printf("\n"); MIIBUS_MEDIAINIT(sc->mii_dev); @@ -192,27 +192,7 @@ inphy_service(struct mii_softc *sc, struct mii_data *mii, int cmd) if ((mii->mii_ifp->if_flags & IFF_UP) == 0) break; - switch (IFM_SUBTYPE(ife->ifm_media)) { - case IFM_AUTO: - /* - * If we're already in auto mode, just return. - */ - if (PHY_READ(sc, MII_BMCR) & BMCR_AUTOEN) - return (0); - (void) mii_phy_auto(sc, 0); - break; - case IFM_100_T4: - /* - * XXX Not supported as a manual setting right now. - */ - return (EINVAL); - default: - /* - * BMCR data is stored in the ifmedia entry. - */ - PHY_WRITE(sc, MII_ANAR, mii_anar(ife->ifm_media)); - PHY_WRITE(sc, MII_BMCR, ife->ifm_data); - } + mii_phy_setmedia(sc); break; case MII_TICK: @@ -235,6 +215,7 @@ static void inphy_status(struct mii_softc *sc) { struct mii_data *mii = sc->mii_pdata; + struct ifmedia_entry *ife = mii->mii_media.ifm_cur; int bmsr, bmcr, scr; mii->mii_media_status = IFM_AVALID; @@ -268,5 +249,5 @@ inphy_status(struct mii_softc *sc) if (scr & SCR_FDX) mii->mii_media_active |= IFM_FDX; } else - mii->mii_media_active |= mii_media_from_bmcr(bmcr); + mii->mii_media_active = ife->ifm_media; } |