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
index | next in thread | previous in thread | raw e-mail
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_________
>
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199512211550.RAA09925>
