Content © Alfred Arnold, 2002 (original HERE). Edited by Major Tom.
Yet some more Micro Channel Ethernet Linux stuff - this time it is not
a complete driver but an addition to an existing driver to increase its
usability.
D-Link also sold a Micro Channel Ethernet Adapter, the DE-320CT. From its
basic layout, it is an NE2000 (NE/2 to be precise) compatible adapter,
which has good and bad sides, but it is a short board and has a 10BaseT
connector, a feature most older Micro Channel adapters lack.
Unfortunately, it is not precisely the same as an NE/2: It has a different
POSID, the layout of the POS registers is different, and - what makes things
most difficult - the MAC address PROM is different. The MAC address is the
unique 48-bit address that identifies any piece of Ethernet or TR equipment.
Standard NE2000 cards have an 8-bit wide PROM that can simply be read with a
programmed I/O instruction. The DE-320 however uses a serial EEPROM (a 93C46
to be exact), and the serial protocol has to be implemented in software.
A very tedious procedure, but fortunately this only has to be done once
during initialization.
Note: The procedure of accessing the serial EEPROM
was found by analyzing the packet driver. I had no information or
documentation from D-Link, so my code may be incomplete!
You may download the sources here. I am
providing the following files:
- dlink.c - A tiny Linux program to dump the EEPROM's
contents. The program assumes a base I/O address of 0x300, the default
address for a DE-320.
- ne2.c - A modified NE/2 Linux driver that also detects
the DE-320, for 2.2 series kernels.
- ne2-2.4.c - The same for 2.4 series kernels.
Rename to 'ne2.c' for usage!
To use the Linux driver, simply copy the ne2.c file over the existing one in
driver/net, enable NE/2 support and recompile your kernel resp. modules.
The modifications I added to the original NE/2 driver are as follows:
- add the DE-320 and its POSID to the list of recognized boards
- add the DE-320 method of deducing I/O address and interrupt from the
POS register values
- Add a routine to read the MAC address from the EEPROM
Like always, comments are (constructive) criticism are always welcome!
Note #2: This page was written after drinking a bottle of beer, so
it probably contains a horrendous amount of typing errors. Sorry...
Note #3: (2002-07-11) I have added an additional fix that.
- displays a correct slot number - it was off by one
- corrects the amount of I/O space assigned to the D-Link card - it only
occupies 32 instead of 48 addresses, and the driver refused to
initialize all boards if you had more than one
|