Date: Sun, 30 Jul 95 22:15:38 PDT From: schwarz@alpharel.com (Steve Schwarz) To: freebsd-bugs@freebsd.org, freebsd-hackers@freebsd.org, freebsd-hardware@freebsd.org, hosokawa@mt.cs.keio.ac.jp, jleppek@suw2k.ess.harris.com Subject: 3c589 card CAN be made to work BNC Message-ID: <9507310515.AA16043@optisun40.optigfx.COM>
next in thread | raw e-mail | index | archive | help
Ok. It's been a long weekend (note the time) but trial and error is always like that. I >finally< have wrestled my 3c589 into working BNC. I went over to the Linux 3c589_cs.c driver and read it (line by line) against FreeBSD's /usr/src/sys/i386/isa/if_zp.c. In doing so, I discovered some things Linux was doing that FreeBSD was not. This leads to the following patch to FreeBSD's /usr/src/sys/i386/isa/if_zp.c. My original of that source file came from the 2.0.5 cdrom. Here is the single diff-section patch: ######################################################################## *** if_zp.c Mon Jul 31 00:47:22 1995 --- if_zp.c.orig Sun Jul 30 17:42:19 1995 *************** *** 1069,1082 **** if (!(ifp->if_flags & IFF_ALTPHYS) && (sc->ep_connectors & BNC)) { #endif #ifdef ZP_DEBUG ! printf("START TRANSCEIVER"); #endif /* ZP_DEBUG */ - GO_WINDOW(0); - /* Set the xcvr */ - outw(BASE + EP_W0_ADDRESS_CFG, 3 << 14); - GO_WINDOW(2); outw(BASE + EP_COMMAND, START_TRANSCEIVER); - GO_WINDOW(1); DELAY(1000); } #if defined(__NetBSD__) || defined(__FreeBSD__) --- 1069,1077 ---- if (!(ifp->if_flags & IFF_ALTPHYS) && (sc->ep_connectors & BNC)) { #endif #ifdef ZP_DEBUG ! printf("START TRANCEIVER"); #endif /* ZP_DEBUG */ outw(BASE + EP_COMMAND, START_TRANSCEIVER); DELAY(1000); } #if defined(__NetBSD__) || defined(__FreeBSD__) ######################################################################## This patch is not elegant but it is enough to make BNC work without affecting UTP. I confess to being a total novice as far as the procedure for submitting bug fixes. If I have not given enough information for someone to handle getting this fix in, please just let me know. I can't resist quoting the comment from the Linux source file that made me first think I had found the answer: /* This is vital: the transceiver used must be set in the resource configuration register. It took me many hours to discover this. */ I know the feeling. sts
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?9507310515.AA16043>