summaryrefslogtreecommitdiffstats
path: root/sys/dev/mii/inphy.c
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>2002-04-29 11:57:30 +0000
committerphk <phk@FreeBSD.org>2002-04-29 11:57:30 +0000
commit2715240fe7a7238d5caa38cf8f6fb16ee0755a5c (patch)
treeab00a27fad6535ee94d5573484470b55ed8fe2c5 /sys/dev/mii/inphy.c
parent6685a257879878dde6afb0ae79cc136a587b275b (diff)
downloadFreeBSD-src-2715240fe7a7238d5caa38cf8f6fb16ee0755a5c.zip
FreeBSD-src-2715240fe7a7238d5caa38cf8f6fb16ee0755a5c.tar.gz
Move a lot closer to NetBSDs MII support for GigE.
Move fxp and nge drivers over to use the new stuff.
Diffstat (limited to 'sys/dev/mii/inphy.c')
-rw-r--r--sys/dev/mii/inphy.c27
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;
}
OpenPOWER on IntegriCloud