Date: Thu, 21 Dec 1995 17:50:34 +0200 (UKR) From: Dmitry Kohmanyuk <dk@mammoth.cs.kiev.ua> To: graichen@omega.physik.fu-berlin.de (Thomas Graichen) Cc: dk+@ua.net, bugs@freebsd.org Subject: Re: i386/906: netboot ca't find NE2000-compat card (DP83905 chip, Dauphin notebook) Message-ID: <199512211550.RAA09925@mammoth.cs.kiev.ua> In-Reply-To: <199512211018.LAA02275@mordillo> from "Thomas Graichen" at Dec 21, 95 11:18:12 am
next in thread | previous in thread | raw e-mail | index | archive | help
Sometimes, Thomas Graichen wrote: > this came up some time before - it works if you uncomment the other > types wd etc. - but this is only a hack have you read my report carefully? when I run stock program (compiled for everything I beleive), it can't recognize the card. when I run custom-compiled version with only NE enabled (I am sure my card is NE-compatible), it hangs the system. I have tried to locate exact place of code where it hangs, and I hope I succeeded. What hack do you mean? I can't understand, please explain. can NE-2000 board be used by FreeBSD's netboot loader in 8-bit mode? dk. > t > > hasn't Dmitry Kohmanyuk said ? ... > > > > > > >Number: 906 > > >Category: i386 > > >Synopsis: /sys/i386/boot/netboot/nb8390.com cannot recognize NE2000-comp. card > > >Confidential: no > > >Severity: serious > > >Priority: high > > >Responsible: freebsd-bugs > > >State: open > > >Class: sw-bug > > >Submitter-Id: current-users > > >Arrival-Date: Wed Dec 20 13:00:02 PST 1995 > > >Last-Modified: > > >Originator: Dmitry Kohmanyuk > > >Organization: > > FARM Computing Association > > >Release: FreeBSD snark.ukma.kiev.ua 2.0.5-RELEASE > > >Environment: > > > > > > I have Douphin DTR-1 notebook (bought it yesterday). > > It is 486SLC (no coprocessor), has 6 megs of RAM, small HD, > > and built-in Ethernet card. > > > > The documentation claims that the card is NE-2000 compatible, > > based on DP83905 chip from NS, controller is AT/LANTIC, > > connection is TP, RJ-45, > > and it has 8K x 8 static RAM buffer (so, should be fast), > > 256 bit EEPROM (for port/irq/etc setup), 16 byte FIFO. > > Then, doc says: "Mode: I/O Port mode, > > compatible with 8BIT Mode offered by Novell NE2000" > > > > >Description: > > > > I try to setup my notebook to be a diskless FreeBSD workstation > > (I think it should work fine at least in text mode). > > > > I boot bare-bones DOS (F5 on boot), run the supplied "lanon" > > program (it enables the card); the light on hub goes on after that). > > I run the setup/diagnostic program in "packet sniffer" mode and it > > indeed shows all my rwho packets flowing on the wire (and some others, too). > > The setup/diag program, when tests reading NIC regs, says: "8 bit slot found", > > so I assume card should work in 8-bit mode. > > > > I already have 2 diskless PCs running FreeBSD (2.0.5 and 2.1) here. > > Then, I run nb8390.com program (from floppy). > > I know there can be some problems with supplied nb8390.com since it's configured > > to probe for both WD and NE, so I built a custom version which probes only for NE. > > > > the stock version says, "No adapter found". My version (that same file > > which boots 2 other boxes) hangs. > > > > The card is set to port 0x300, irq 5. The boot program is set to port 0x300. > > I have patched source to insert some debug printf's, and found that it > > fails testing for 8-bit card, and hangs when testing for 16-bit card. > > I have read the if_ed.c from 2.0.5 (it seems 2.1 is the same for NE2000s), > > and copied the ed_probe_generic8390() code to test the board. it succeeds! > > This is a relevant piece of code from /sys/i386/boot/netboot/ns8390.c > > (DPRINTF() and DELAY() are mine, as well as long if() followed by goto): > > > > [ the last thing printed is ne-3, so it hangs before ne-3.1 ] > > [ note that bcompare() returns 1 on memory equal, unlike bcmp() ] > > > > [...] > > DPRINTF(("NE*000 card... ")); > > eth_bmem = (char *)0; /* No shared memory */ > > eth_asic_base = NE_BASE + NE_ASIC_OFFSET; > > eth_nic_base = NE_BASE; > > eth_vendor = VENDOR_NOVELL; > > eth_flags = FLAG_PIO; > > eth_memsize = MEM_16384; > > eth_tx_start = 32; > > c = inb(eth_asic_base + NE_RESET); > > outb(eth_asic_base + NE_RESET, c); > > DELAY(5000); > > inb(0x84); > > outb(eth_nic_base + D8390_P0_COMMAND, D8390_COMMAND_STP | > > D8390_COMMAND_RD2); > > DELAY(5000); > > DPRINTF(("ne-1 ")); > > /* dk: test for 8390 chip, from 2.0.5's driver */ > > if ((inb(eth_nic_base + D8390_P0_COMMAND) & > > (D8390_COMMAND_RD2 | D8390_COMMAND_TXP | > > D8390_COMMAND_STA | D8390_COMMAND_STP)) != > > (D8390_COMMAND_RD2 | D8390_COMMAND_STP) || > > (inb(eth_nic_base + D8390_P0_ISR) & D8390_ISR_RST) != D8390_ISR_RST) > > goto no_novell; > > DPRINTF(("ne-1.2 ")); > > outb(eth_nic_base + D8390_P0_RCR, D8390_RCR_MON); > > outb(eth_nic_base + D8390_P0_DCR, D8390_DCR_FT1 | D8390_DCR_LS); > > outb(eth_nic_base + D8390_P0_PSTART, MEM_8192); > > outb(eth_nic_base + D8390_P0_PSTOP, MEM_16384); > > DPRINTF(("ne-2 ")); > > eth_pio_write(test, 8192, sizeof(test)); > > eth_pio_read(8192, testbuf, sizeof(test)); > > if (!bcompare(test, testbuf, sizeof(test))) { > > DPRINTF(("ne-3 ")); > > eth_flags |= FLAG_16BIT; > > eth_memsize = MEM_32768; > > eth_tx_start = 64; > > outb(eth_nic_base + D8390_P0_DCR, D8390_DCR_WTS | > > D8390_DCR_FT1 | D8390_DCR_LS); > > outb(eth_nic_base + D8390_P0_PSTART, MEM_16384); > > outb(eth_nic_base + D8390_P0_PSTOP, MEM_32768); > > eth_pio_write(test, 16384, sizeof(test)); > > eth_pio_read(16384, testbuf, sizeof(test)); > > DPRINTF(("ne-3.1 ")); > > if (!bcompare(testbuf, test, sizeof(test))) return (0); > > } > > DPRINTF(("ne-4 ")); > > eth_pio_read(0, romdata, 16); > > DPRINTF(("ne-5 ")); > > printf("\r\nNE1000/NE2000 base 0x%x, addr ", eth_nic_base); > > [...] > > > > I have tried to enable shared memory mode. > > I have tried to set 64K mode instead of 16K ("Novell-compatible" as setup prog > > says) > > > > I have "CHRDY after BALE high", "IO16 after strobe", "read cycles enhanced", > > "TPI link integrity checking enabled" settings, but I haven't touched them. > > > > I have written down the NIC registers (thanks great diag program > > which comes with board!) > > CR 22 > > TSK 83 > > ISR 15 > > IMR 00 > > RSR 11 > > RCR 1C > > TCR 00 > > DCR 58 > > although I doubt this is relevant here. > > > > >How-To-Repeat: > > > > just run the nb8390.com program. > > > > >Fix: > > > > none known ;-( > > > > sorry for this long report, I have tried to provide _ALL_ the info > > which can help. > > > > >Audit-Trail: > > >Unformatted: > > > > > > _______________________________________________________||___________________ > __|| > Perfection is reached, not when there is no __|| thomas graichen > longer anything to add, but when there __|| freie universitaet berlin > is no longer anything to take away __|| fachbereich physik > __|| > - Antoine de Saint-Exupery - __|| graichen@mail.physik.fu-berlin.de > ___________________________||__________________graichen@FreeBSD.org_________ >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199512211550.RAA09925>