From owner-freebsd-hackers Wed Jan 25 21:28:53 1995 Return-Path: hackers-owner Received: (from root@localhost) by freefall.cdrom.com (8.6.9/8.6.6) id VAA16202 for hackers-outgoing; Wed, 25 Jan 1995 21:28:53 -0800 Received: from simon.chi.il.us (simon.chi.il.us [199.245.227.17]) by freefall.cdrom.com (8.6.9/8.6.6) with SMTP id VAA16196 for ; Wed, 25 Jan 1995 21:28:50 -0800 Received: by simon.chi.il.us (Smail3.1.29.1 #3) id m0rXMlf-000NAvC; Wed, 25 Jan 95 23:29 CST Message-Id: Date: Wed, 25 Jan 95 23:29 CST From: steve@simon.chi.il.us (Steven E. Piette) To: freebsd-hackers@freefall.cdrom.com Subject: Re: 3c509 Warm Boot probs... Cc: davidg@Root.COM, jkh@time.cdrom.com, ponds!rivers@dg-rtp.dg.com Sender: hackers-owner@FreeBSD.org Precedence: bulk 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 > 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 -----