NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: kern/40586: rgephy(4) now selects incorrect speed for some re(4)
The following reply was made to PR kern/40586; it has been noted by GNATS.
From: Geoff Wing <gcw%pobox.com@localhost>
To: gnats-bugs%NetBSD.org@localhost
Cc:
Subject: Re: kern/40586: rgephy(4) now selects incorrect speed for some
re(4)
Date: Tue, 10 Feb 2009 09:53:24 +1100
On Monday 2009-02-09 22:05 +0000, Christoph Egger output:
: I'm using rgephy(4) on nfe(4) and I can't reproduce
: the problem. Maybe rgephy.c triggers a bug in re(4) now ?
:
: Christoph
It only applies to some chips. The hack I'm using (see below)
reintroduces some of the previous version which initialised the
chip differently. The rgephy_load_dspcode() path doesn't do
the same PHY_WRITE()s.
Regards,
Geoff
--- rgephy.c.orig 2009-02-09 10:45:34.000000000 +1100
+++ rgephy.c 2009-01-20 12:33:49.000000000 +1100
@@ -593,17 +593,20 @@
struct rgephy_softc *rsc;
uint16_t ssr;
+ mii_phy_reset(sc);
+ DELAY(1000);
+
rsc = (struct rgephy_softc *)sc;
- if (rsc->mii_revision == 3) {
+ if (rsc->mii_revision < 2) {
+ rgephy_load_dspcode(sc);
+ } else if (rsc->mii_revision == 3) {
/* RTL8211C(L) */
ssr = PHY_READ(sc, RGEPHY_MII_SSR);
if ((ssr & RGEPHY_SSR_ALDPS) != 0) {
ssr &= ~RGEPHY_SSR_ALDPS;
PHY_WRITE(sc, RGEPHY_MII_SSR, ssr);
}
- }
-#if 0
- else {
+ } else {
PHY_WRITE(sc, 0x1F, 0x0001);
PHY_WRITE(sc, 0x09, 0x273a);
PHY_WRITE(sc, 0x0e, 0x7bfb);
@@ -629,9 +632,5 @@
/* NWay enable and Restart NWay */
PHY_WRITE(sc, RGEPHY_MII_BMCR,
RGEPHY_BMCR_RESET | RGEPHY_BMCR_AUTOEN | RGEPHY_BMCR_STARTNEG);
-#endif
- mii_phy_reset(sc);
- DELAY(1000);
- rgephy_load_dspcode(sc);
}
Home |
Main Index |
Thread Index |
Old Index