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>
