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)
Geoff Wing wrote:
> 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);
rgephy_load_dspcode() already does this revision check.
You can safely call it unconditionally.
> + } 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