summaryrefslogtreecommitdiffstats
path: root/src/drivers/net/3c509-eisa.c
diff options
context:
space:
mode:
authorMichael Brown2005-04-17 19:52:33 +0200
committerMichael Brown2005-04-17 19:52:33 +0200
commitbd2c3b0f27decef220adb5f36bfc40f9099d329b (patch)
treee7f75fdbec939175c78acac4563504d6701b410f /src/drivers/net/3c509-eisa.c
parentAvoid deleting .cvsignore (diff)
downloadipxe-bd2c3b0f27decef220adb5f36bfc40f9099d329b.tar.gz
ipxe-bd2c3b0f27decef220adb5f36bfc40f9099d329b.tar.xz
ipxe-bd2c3b0f27decef220adb5f36bfc40f9099d329b.zip
Split out EISA driver into a separate file, since 3c509s can only take 16K
ROMs (AFAIK).
Diffstat (limited to 'src/drivers/net/3c509-eisa.c')
-rw-r--r--src/drivers/net/3c509-eisa.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/drivers/net/3c509-eisa.c b/src/drivers/net/3c509-eisa.c
new file mode 100644
index 00000000..a0cda042
--- /dev/null
+++ b/src/drivers/net/3c509-eisa.c
@@ -0,0 +1,38 @@
+/*
+ * Split out from 3c509.c, since EISA cards are relatively rare, and
+ * ROM space in 3c509s is very limited.
+ *
+ */
+
+#include "eisa.h"
+#include "isa.h"
+#include "console.h"
+#include "3c509.h"
+
+/*
+ * The EISA probe function
+ *
+ */
+static int el3_eisa_probe ( struct dev *dev, struct eisa_device *eisa ) {
+ struct nic *nic = nic_device ( dev );
+
+ enable_eisa_device ( eisa );
+ nic->ioaddr = eisa->ioaddr;
+ nic->irqno = 0;
+ printf ( "3C5x9 board on EISA at %#hx - ", nic->ioaddr );
+
+ /* Hand off to generic t5x9 probe routine */
+ return t5x9_probe ( nic, ISA_PROD_ID ( PROD_ID ), ISA_PROD_ID_MASK );
+}
+
+static struct eisa_id el3_eisa_adapters[] = {
+ { "3Com 3c509 EtherLink III (EISA)", MFG_ID, PROD_ID },
+};
+
+static struct eisa_driver el3_eisa_driver =
+ EISA_DRIVER ( "3c509 (EISA)", el3_eisa_adapters );
+
+BOOT_DRIVER ( "3c509 (EISA)", find_eisa_boot_device, el3_eisa_driver,
+ el3_eisa_probe );
+
+ISA_ROM ( "3c509-eisa","3c509 (EISA)" );