Deleted Added
full compact
32c32
< * $FreeBSD: head/sys/dev/mii/brgphy.c 95722 2002-04-29 13:07:38Z phk $
---
> * $FreeBSD: head/sys/dev/mii/brgphy.c 96026 2002-05-04 11:00:30Z phk $
62c62
< "$FreeBSD: head/sys/dev/mii/brgphy.c 95722 2002-04-29 13:07:38Z phk $";
---
> "$FreeBSD: head/sys/dev/mii/brgphy.c 96026 2002-05-04 11:00:30Z phk $";
89,90c89
< static int brgphy_mii_phy_auto(struct mii_softc *, int);
< extern void mii_phy_auto_timeout(void *);
---
> static int brgphy_mii_phy_auto(struct mii_softc *);
231c230
< (void) brgphy_mii_phy_auto(sc, 1);
---
> (void) brgphy_mii_phy_auto(sc);
316,318c315,316
< if (brgphy_mii_phy_auto(sc, 0) == EJUSTRETURN)
< return (0);
< break;
---
> brgphy_mii_phy_auto(sc);
> return (0);
393c391
< brgphy_mii_phy_auto(mii, waitfor)
---
> brgphy_mii_phy_auto(mii)
395d392
< int waitfor;
397c394
< int bmsr, ktcr = 0, i;
---
> int ktcr = 0;
399,446c396,409
< if ((mii->mii_flags & MIIF_DOINGAUTO) == 0) {
< 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);
< 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);
< }
<
< if (waitfor) {
< /* Wait 500ms for it to complete. */
< for (i = 0; i < 500; i++) {
< if ((bmsr = PHY_READ(mii, BRGPHY_MII_BMSR)) &
< BRGPHY_BMSR_ACOMP)
< return (0);
< DELAY(1000);
< #if 0
< if ((bmsr & BMSR_ACOMP) == 0)
< printf("%s: autonegotiation failed to complete\n",
< mii->mii_dev.dv_xname);
< #endif
< }
<
< /*
< * Don't need to worry about clearing MIIF_DOINGAUTO.
< * If that's set, a timeout is pending, and it will
< * clear the flag.
< */
< return (EIO);
< }
<
< /*
< * Just let it finish asynchronously. This is for the benefit of
< * the tick handler driving autonegotiation. Don't want 500ms
< * delays all the time while the system is running!
< */
< if ((mii->mii_flags & MIIF_DOINGAUTO) == 0) {
< mii->mii_flags |= MIIF_DOINGAUTO;
< mii->mii_auto_ch = timeout(mii_phy_auto_timeout, mii, hz >> 1);
< }
---
> 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);
> 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);