How I added the SIS900 card to Etherboot

Author: Marty Connor (mdc@thinguin.org)

Date:   25 Febrary 2001

Description:

This file is intended to help people who want to write an Etherboot
driver or port another driver to Etherboot.  It is a starting point.
Perhaps someday I may write a more detailed description of writing an
Etherboot driver. This text should help get people started, and
studying sis900.[ch] should help show the basic structure and
techniques involved in writing and Etherboot driver.

***********************************************************************

0. Back up all the files I need to modify:

cd etherboot-4.7.20/src
cp Makefile Makefile.orig
cp config.c config.c.orig
cp pci.h pci.h.orig
cp NIC NIC.orig
cp cards.h cards.h.orig

1. Edit src/Makefile to add SIS900FLAGS to defines

SIS900FLAGS=	       	-DINCLUDE_SIS900

2. edit src/pci.h to add PCI signatures for card

#define PCI_VENDOR_ID_SIS         	0x1039
#define PCI_DEVICE_ID_SIS900     	0x0900   
#define PCI_DEVICE_ID_SIS7016    	0x7016  

3. Edit src/config.c to add the card to the card probe list

#if defined(INCLUDE_NS8390)  || defined(INCLUDE_EEPRO100)  || 
    defined(INCLUDE_LANCE)   || defined(INCLUDE_EPIC100)   || 
    defined(INCLUDE_TULIP)   || defined(INCLUDE_OTULIP)    ||
    defined(INCLUDE_3C90X)   || defined(INCLUDE_3C595)     ||
    defined(INCLUDE_RTL8139) || defined(INCLUDE_VIA_RHINE) || 
    defined(INCLUDE_SIS900)  || defined(INCLUDE_W89C840)

... and ...

#ifdef INCLUDE_SIS900
       { PCI_VENDOR_ID_SIS,     	PCI_DEVICE_ID_SIS900,
         "SIS900", 0, 0, 0, 0},
       { PCI_VENDOR_ID_SIS,     	PCI_DEVICE_ID_SIS7016,
	 "SIS7016", 0, 0, 0, 0},
#endif

... and ...

#ifdef INCLUDE_SIS900
	{ "SIS900", sis900_probe, pci_ioaddrs },	
#endif

4. Edit NIC to add sis900 and sis7016 to NIC list

# SIS 900 and SIS 7016
sis900		sis900		0x1039,0x0900
sis7016		sis900		0x1039,0x7016

5. Edit cards.h to add sis900 probe routine declaration

#ifdef	INCLUDE_SIS900
extern struct nic	*sis900_probe(struct nic *, unsigned short *
                        PCI_ARG(struct pci_device *));
#endif

***********************************************************************

At this point, you can begin creating your driver source file.  See
the "Writing and Etherboot Driver" section of the Etherboot
documentation for some hints.  See the skel.c file for a starting
point.  If there is a Linux driver for the card, you may be able to
use that.  Copy and learn from existing Etherboot drivers (this is GPL
/ Open Source software!).

Join the etherboot-developers and etherboot-users mailing lists
(information is on etherboot.sourceforge.net) for information and
assistance. We invite more developers to help improve Etherboot.

Visit the http://etherboot.sourceforge.net, http://thinguin.org, 
http://rom-o-matic.net, and http://ltsp.org sites for information and
assistance.

Enjoy.
