Skip site navigation (1)Skip section navigation (2)
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>