| 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. |