Date: Tue, 13 Jun 95 23:39 CDT From: steve@simon.chi.il.us (Steven E. Piette) To: davidg@Root.COM Cc: jhay@mikom.csir.co.za, hackers@freebsd.org Subject: Re: Possible patch for SMC 8216/8416 probe bug Message-ID: <m0sLkEn-000NAyC@simon.chi.il.us>
next in thread | raw e-mail | index | archive | help
> From freefall.cdrom.com!owner-freebsd-hackers Tue Jun 13 16:42:07 1995 > To: John Hay <jhay@mikom.csir.co.za> > cc: hackers@freebsd.org > Subject: Re: Possible patch for SMC 8216/8416 probe bug > From: David Greenman <davidg@Root.COM> > Reply-To: davidg@Root.COM > Date: Tue, 13 Jun 1995 14:37:03 -0700 > Sender: hackers-owner@freebsd.org > Content-Length: 377 > > >Maybe David Greenman should look at it, as he seems to do most stuff in > >the if_ed.c driver. > > I think the detection can be done in a way that doesn't require any of the > memory test stuff. I'll look at the documentation I have on this soon. For > now, people can set a specific "iosiz", 16384 for instance, and use the flags > option to force 16 bit operation (flags 0x4). > > -DG > What's wrong with using the probe section from ED_TYPE_SMC8216T? It worked find here when I first put developed the 8416 patch. It doesn't care if the card is a combo or utp only device. I did test the driver with Elite 16, Ultra, and Ether EZ to make sure it still worked after the patch to 2.0-RELEASE ie: (based on 2.0.5-ALPHA /usr/src/sys/i386/isa/if_ed.c) case ED_TYPE_SMC8216C: case ED_TYPE_SMC8216T: if (sc->type = ED_TYPE_SMC8216C) { sc->type_str = "SMC8216/SMC8216C"; sc->kdc.kdc_description = "Ethernet adapter: SMC 8216 or 8216C"; } else { sc->type_str = "SMC8216T"; sc->kdc.kdc_description = "Ethernet adapter: SMC 8216T"; } outb(sc->asic_addr + ED_WD790_HWR, inb(sc->asic_addr + ED_WD790_HWR) | ED_WD790_HWR_SWH); switch (inb(sc->asic_addr + ED_WD790_RAR) & ED_WD790_RAR_SZ64) { case ED_WD790_RAR_SZ64: memsize = 65536; break; case ED_WD790_RAR_SZ32: memsize = 32768; break; case ED_WD790_RAR_SZ16: memsize = 16384; break; case ED_WD790_RAR_SZ8: /* 8216 has 16K shared mem -- 8416 has 8K */ if (sc->type = ED_TYPE_SMC8216C) { sc->type_str = "SMC8416C/SMC8416BT"; sc->kdc.kdc_description = "Ethernet adapter: SMC 8416C or 8416BT"; } else { sc->type_str = "SMC8416T"; sc->kdc.kdc_description = "Ethernet adapter: SMC 8416T"; memsize = 8192; break; } outb(sc->asic_addr + ED_WD790_HWR, inb(sc->asic_addr + ED_WD790_HWR) & ~ED_WD790_HWR_SWH); isa16bit = 1; sc->is790 = 1; break; Or did I miss something important? Steve Piette Applied Computer Technology steve@simon.chi.il.US. 7N852 Phar Lap Drive (708) 513-6920 St. Charles, IL 60175-6868 ------------------------------------------------------------------------------- By sending unsolicited commercially-oriented e-mail to this address, the sender agrees to pay a $100 flat fee to the recipient for proofreading services.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?m0sLkEn-000NAyC>