Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 25 Jan 95 23:29 CST
From:      steve@simon.chi.il.us (Steven E. Piette)
To:        freebsd-hackers@freefall.cdrom.com
Cc:        davidg@Root.COM, jkh@time.cdrom.com, ponds!rivers@dg-rtp.dg.com
Subject:   Re: 3c509 Warm Boot probs...
Message-ID:  <m0rXMlf-000NAvC@simon.chi.il.us>

next in thread | raw e-mail | index | archive | help

Here's the fix to get the 3C509's to reset after warm boots.
It's relative to the 2.0R source base.


Steve

*** if_ep.c.orig        Tue Jan 24 22:57:15 1995
--- if_ep.c     Wed Jan 25 23:19:40 1995
***************
*** 372,386 ****
      int nisa = 0, neisa = 0;
  
      if (ep_current_tag == (EP_LAST_TAG + 1)) {
!       /* Come here just one time */
     
        /* Look for the EISA boards, leave them activated */
!       for(j = 1; j < 16; j++) {
            io_base = (j * EP_EISA_START) | EP_EISA_W0;
            if (inw(io_base + EP_W0_MFG_ID) != MFG_ID)
                continue;
  
!           /* we must found 0x1f if the board is EISA configurated */
            if ((inw(io_base + EP_W0_ADDRESS_CFG) & 0x1f) != 0x1f) 
                continue;
  
--- 372,386 ----
      int nisa = 0, neisa = 0;
  
      if (ep_current_tag == (EP_LAST_TAG + 1)) {
!       /* Come here just one time for all boards */
     
        /* Look for the EISA boards, leave them activated */
!       for (j = 1; j < 16; j++) {
            io_base = (j * EP_EISA_START) | EP_EISA_W0;
            if (inw(io_base + EP_W0_MFG_ID) != MFG_ID)
                continue;
  
!           /* we must find 0x1f if the board is EISA configurated */
            if ((inw(io_base + EP_W0_ADDRESS_CFG) & 0x1f) != 0x1f) 
                continue;
  
***************
*** 398,405 ****
        ep_current_tag--;
  
          /* Look for the ISA boards. Init and leave them actived */
!       outb(id_port, 0xc0);    /* Global reset */
        DELAY(1000);
        for (i = 0; i < EP_MAX_BOARDS; i++) {
            outb(id_port, 0);
            outb(id_port, 0);
--- 398,409 ----
        ep_current_tag--;
  
          /* Look for the ISA boards. Init and leave them actived */
!       outb(id_port, 0);
!       outb(id_port, 0);
!       send_ID_sequence(id_port);
!       outb(id_port, 0xc0);    /* ID Global reset */
        DELAY(1000);
+ 
        for (i = 0; i < EP_MAX_BOARDS; i++) {
            outb(id_port, 0);
            outb(id_port, 0);

----- Begin Included Message -----

>From steve Tue Jan 24 22:54:28 1995
To: jkh@time.cdrom.com, ponds!rivers@dg-rtp.dg.com
Subject: Re: 3c509 probs...
Content-Length: 2884


There's most definitally a reboot problem. It existed in 1.1.5.1 and it's
still in Andres's code. I did fix it in the the old driver but I haven't
got to fixing it in the 2.0R release. I brought home a second 509 to
check out how well the multi-card support works as well.

I thought I look at the 509B problem that was reported but 3COM hasn't
posted any addendum to the tech ref yet and I don't have one.

I can tell you that the reboot problem used to be due to not soft resetting
the card correctly in epprobe. I got it right by trial adn error the last time.

Steve


> From: Thomas David Rivers <ponds!rivers@dg-rtp.dg.com>
> To: freebsd-hackers@freefall.cdrom.com, jkh@time.cdrom.com
> Subject: 3c509 probs...
> 
> Jordan -
> 
>   I discovered this while trying to catch up on 1800+ pieces of mail 
> (I've been busy with work lately.)
> 
>   Anyway, I find that with my 3c509 at work - if I boot DOS/Windows,
> then reboot into FreeBSD, FreeBSD does not recognize the 3c509.  If I
> physically turn the machine off, FreeBSD does recognize the 3c509.
> 
>   Thus, I think there is possibly a probe problem here...
> 
> 	- Dave Rivers -
> 
> (p.s. this is with FreeBSD 2.0R, using the OS/2 boot manager to bounce
> between FreeBSD, OS/2, DOS/Windows.)
> 
----- End Included Message -----




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?m0rXMlf-000NAvC>