diff options
| author | Bill Paul <wpaul@FreeBSD.org> | 2001-09-18 00:31:19 +0000 |
|---|---|---|
| committer | Bill Paul <wpaul@FreeBSD.org> | 2001-09-18 00:31:19 +0000 |
| commit | 1d083681bc4638e6bf33dcbd867072d09d855531 (patch) | |
| tree | bcb25d040dbc704ddfd76ecb4c98925f43d8644b /sys/dev | |
| parent | febceb3e2716bdc088394063714357ec042ddaa6 (diff) | |
Notes
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/mii/brgphy.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/sys/dev/mii/brgphy.c b/sys/dev/mii/brgphy.c index 8a7909caecb2..1c0d97ec8045 100644 --- a/sys/dev/mii/brgphy.c +++ b/sys/dev/mii/brgphy.c @@ -280,6 +280,11 @@ setit: BRGPHY_1000CTL_MSE); } break; +#ifdef foo + case IFM_NONE: + PHY_WRITE(sc, MII_BMCR, BMCR_ISO|BMCR_PDOWN); + break; +#endif case IFM_100_T4: default: return (EINVAL); @@ -407,12 +412,20 @@ brgphy_mii_phy_auto(mii, waitfor) struct mii_softc *mii; int waitfor; { - int bmsr, i; + int bmsr, ktcr = 0, i; if ((mii->mii_flags & MIIF_DOINGAUTO) == 0) { - PHY_WRITE(mii, BRGPHY_MII_1000CTL, + mii_phy_reset(mii); + PHY_WRITE(mii, BRGPHY_MII_BMCR, 0); + DELAY(1000); + ktcr = PHY_READ(mii, BRGPHY_MII_1000CTL); + PHY_WRITE(mii, BRGPHY_MII_1000CTL, ktcr | BRGPHY_1000CTL_AFD|BRGPHY_1000CTL_AHD); - PHY_WRITE(mii, BRGPHY_MII_ANAR, BRGPHY_SEL_TYPE); + ktcr = PHY_READ(mii, BRGPHY_MII_1000CTL); + DELAY(1000); + PHY_WRITE(mii, BRGPHY_MII_ANAR, + BMSR_MEDIA_TO_ANAR(mii->mii_capabilities) | ANAR_CSMA); + DELAY(1000); PHY_WRITE(mii, BRGPHY_MII_BMCR, BRGPHY_BMCR_AUTOEN | BRGPHY_BMCR_STARTNEG); PHY_WRITE(mii, BRGPHY_MII_IMR, 0xFF00); |
