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