Home | History | Annotate | Download | only in netboot
      1 How I added the SIS900 card to Etherboot
      2 
      3 Author: Marty Connor (mdc (a] thinguin.org)
      4 
      5 Date:   25 Febrary 2001
      6 
      7 Description:
      8 
      9 This file is intended to help people who want to write an Etherboot
     10 driver or port another driver to Etherboot.  It is a starting point.
     11 Perhaps someday I may write a more detailed description of writing an
     12 Etherboot driver. This text should help get people started, and
     13 studying sis900.[ch] should help show the basic structure and
     14 techniques involved in writing and Etherboot driver.
     15 
     16 ***********************************************************************
     17 
     18 0. Back up all the files I need to modify:
     19 
     20 cd etherboot-4.7.20/src
     21 cp Makefile Makefile.orig
     22 cp config.c config.c.orig
     23 cp pci.h pci.h.orig
     24 cp NIC NIC.orig
     25 cp cards.h cards.h.orig
     26 
     27 1. Edit src/Makefile to add SIS900FLAGS to defines
     28 
     29 SIS900FLAGS=	       	-DINCLUDE_SIS900
     30 
     31 2. edit src/pci.h to add PCI signatures for card
     32 
     33 #define PCI_VENDOR_ID_SIS         	0x1039
     34 #define PCI_DEVICE_ID_SIS900     	0x0900   
     35 #define PCI_DEVICE_ID_SIS7016    	0x7016  
     36 
     37 3. Edit src/config.c to add the card to the card probe list
     38 
     39 #if defined(INCLUDE_NS8390)  || defined(INCLUDE_EEPRO100)  || 
     40     defined(INCLUDE_LANCE)   || defined(INCLUDE_EPIC100)   || 
     41     defined(INCLUDE_TULIP)   || defined(INCLUDE_OTULIP)    ||
     42     defined(INCLUDE_3C90X)   || defined(INCLUDE_3C595)     ||
     43     defined(INCLUDE_RTL8139) || defined(INCLUDE_VIA_RHINE) || 
     44     defined(INCLUDE_SIS900)  || defined(INCLUDE_W89C840)
     45 
     46 ... and ...
     47 
     48 #ifdef INCLUDE_SIS900
     49        { PCI_VENDOR_ID_SIS,     	PCI_DEVICE_ID_SIS900,
     50          "SIS900", 0, 0, 0, 0},
     51        { PCI_VENDOR_ID_SIS,     	PCI_DEVICE_ID_SIS7016,
     52 	 "SIS7016", 0, 0, 0, 0},
     53 #endif
     54 
     55 ... and ...
     56 
     57 #ifdef INCLUDE_SIS900
     58 	{ "SIS900", sis900_probe, pci_ioaddrs },	
     59 #endif
     60 
     61 4. Edit NIC to add sis900 and sis7016 to NIC list
     62 
     63 # SIS 900 and SIS 7016
     64 sis900		sis900		0x1039,0x0900
     65 sis7016		sis900		0x1039,0x7016
     66 
     67 5. Edit cards.h to add sis900 probe routine declaration
     68 
     69 #ifdef	INCLUDE_SIS900
     70 extern struct nic	*sis900_probe(struct nic *, unsigned short *
     71                         PCI_ARG(struct pci_device *));
     72 #endif
     73 
     74 ***********************************************************************
     75 
     76 At this point, you can begin creating your driver source file.  See
     77 the "Writing and Etherboot Driver" section of the Etherboot
     78 documentation for some hints.  See the skel.c file for a starting
     79 point.  If there is a Linux driver for the card, you may be able to
     80 use that.  Copy and learn from existing Etherboot drivers (this is GPL
     81 / Open Source software!).
     82 
     83 Join the etherboot-developers and etherboot-users mailing lists
     84 (information is on etherboot.sourceforge.net) for information and
     85 assistance. We invite more developers to help improve Etherboot.
     86 
     87 Visit the http://etherboot.sourceforge.net, http://thinguin.org, 
     88 http://rom-o-matic.net, and http://ltsp.org sites for information and
     89 assistance.
     90 
     91 Enjoy.
     92