Netboot Mailing List (by thread)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

New MX987x5 Etherboot Driver

I've created a new Etherboot driver to better support the Macronix 
MX987x5 (tulip clone) chip as found in some recent, affordable 10/100 
cards.  I've included the README file for the driver at the end of this 

I used the tulip.c file as a starting point. I then decided to rewrite it 
for the Macronix after reading the data sheet and application note for 
the MX98715A. First to support 10/100 auto-negotiation, but also to use 
the Linux EEPROM routines so that the entire driver would be using the 
same coding interface rather than having the FreeBSD coding for SROM and 
the Linux coding for other parts.  See what you think.  By making it a 
separate driver file it will not affect the current tulip driver, and may 
make other PCI tulip clone support easier.

You can download the driver at

I'd appreciate code review and other feedback.


Marty Connor


README file for mx987x5 driver for etherboot-4.2.11

This directory contains 4 files that implement a driver for PCI fast
(10/100) ethernet cards based on the Macronix MX987x5 chipset.

This software may be used and distributed according to the terms of
the GNU Public License, incorporated herein by reference.


1. unpack the tar file:

    $ cd etherboot-4.2.11
    $ tar -zxvf mx987x5-0.75b1.tar.gz

2. back up Makefile and config.c

    $ cd src
    $ cp Makefile Makefile.orig
    $ cp config.c config.c.orig

3. copy in new files

    $ cd ../mx987x5-0.75b1
    $ cp Makefile config.c mx987x5.c mx987x5.h ../src

4. compile

    $ cd ../src-32
    $ make

    You should get an mx987x5.lzrom file

5. make a test floppy

    $ make mx987x5.lzrom

At this point, you can try booting a workstation.  Of course you have
to have all the usual Etherboot stuff (bootp/dhcp/NFS) set up, and you
need a Linux kernel with v0.91 (4.14.99) or later of the tulip.c driver
compiled in.  That file is available at:

See the comments at the beginning of mx987x5.[ch] for more information
on the code.  


I've tested this driver with a SOHOware Fast 10/100 Model SDA110A
card, and it worked at both 10 and 100 mbits. Other cards based on the
MX987x5 family may work as well.

Basically, these cards are about 20$US, are supported by Linux and now
Etherboot, and being PCI, they auto-configure IRQ and IOADDR and
auto-negotiate 10/100 half/full duplex. It seems like a pretty good
value compared to some of the pricier cards, and can lower the cost of
building/adapting thin client workstations substantially while giving
a considerable performance increase.

These changes replace the 10mbit(fixed) support in the tulip driver
for the MX98715. This driver lets the card choose the fastest speed it
can negotiate with the peer device.  It would of course be possible to
make a compile-time option to initialize the card for fixed speed
operation, but auto-negotiation seems more generally useful as a
starting point.

I burned an AM27C256 (32KByte) EPROM with mx987x5.lzrom and it worked.
According to the data sheet the MX98715A supports up to 64K (27C512) of
EPROM, so we should be able to stuff lots of code in.

I've liberally commented the code and header files in the hope that it
will help the next person who hacks the code or needs to support some
tulip clone card, or wishes to add functionality.

Anyway, please test this if you can on your MX987x5 based card, and let
me ( and the netboot list (
know how things go.  I also would appreciate code review by people who
program.  I'm a strong believer in "another set of eyes".

   Name: Martin D. Connor
US Mail: Entity Cyber, Inc.; P.O. Box 391827; Cambridge, MA 02139; USA
  Voice: (617) 491-6935, Fax: (617) 491-7046 

This Mail was sent to netboot mailing list by:
Marty Connor <>
To get help about this list, send a mail with 'help' as the only string in
it's body to If you have problems with this list,
send a mail to

For requests or suggestions regarding this mailing list archive please write to