summaryrefslogtreecommitdiffstats
path: root/drivers/eisa
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@ppc970.osdl.org>2005-04-16 15:20:36 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-04-16 15:20:36 -0700
commit1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (patch)
tree0bba044c4ce775e45a88a51686b5d9f90697ea9d /drivers/eisa
Linux-2.6.12-rc2
Initial git repository build. I'm not bothering with the full history, even though we have it. We can create a separate "historical" git archive of that later if we want to, and in the meantime it's about 3.2GB when imported into git - space that would just make the early git days unnecessarily complicated, when we don't have a lot of good infrastructure for it. Let it rip!
Diffstat (limited to 'drivers/eisa')
-rw-r--r--drivers/eisa/Kconfig56
-rw-r--r--drivers/eisa/Makefile21
-rw-r--r--drivers/eisa/eisa-bus.c430
-rw-r--r--drivers/eisa/eisa.ids1278
-rw-r--r--drivers/eisa/pci_eisa.c66
-rw-r--r--drivers/eisa/virtual_root.c75
6 files changed, 1926 insertions, 0 deletions
diff --git a/drivers/eisa/Kconfig b/drivers/eisa/Kconfig
new file mode 100644
index 000000000000..c0646576cf47
--- /dev/null
+++ b/drivers/eisa/Kconfig
@@ -0,0 +1,56 @@
+#
+# EISA configuration
+#
+config EISA_VLB_PRIMING
+ bool "Vesa Local Bus priming"
+ depends on X86_PC && EISA
+ default n
+ ---help---
+ Activate this option if your system contains a Vesa Local
+ Bus (VLB) card that identify itself as an EISA card (such as
+ the Adaptec AHA-284x).
+
+ When in doubt, say N.
+
+config EISA_PCI_EISA
+ bool "Generic PCI/EISA bridge"
+ depends on !PARISC && PCI && EISA
+ default y
+ ---help---
+ Activate this option if your system contains a PCI to EISA
+ bridge. If your system have both PCI and EISA slots, you
+ certainly need this option.
+
+ When in doubt, say Y.
+
+# Using EISA_VIRTUAL_ROOT on something other than an Alpha or
+# an X86_PC may lead to crashes...
+
+config EISA_VIRTUAL_ROOT
+ bool "EISA virtual root device"
+ depends on EISA && (ALPHA || X86_PC)
+ default y
+ ---help---
+ Activate this option if your system only have EISA bus
+ (no PCI slots). The Alpha Jensen is an example of such
+ a system.
+
+ When in doubt, say Y.
+
+config EISA_NAMES
+ bool "EISA device name database"
+ depends on EISA
+ default y
+ ---help---
+ By default, the kernel contains a database of all known EISA
+ device names to make the information in sysfs comprehensible
+ to the user. This database increases size of the kernel
+ image by about 40KB, but it gets freed after the system
+ boots up, so it doesn't take up kernel memory. Anyway, if
+ you are building an installation floppy or kernel for an
+ embedded system where kernel image size really matters, you
+ can disable this feature and you'll get device ID instead of
+ names.
+
+ When in doubt, say Y.
+
diff --git a/drivers/eisa/Makefile b/drivers/eisa/Makefile
new file mode 100644
index 000000000000..70abf93fe6b0
--- /dev/null
+++ b/drivers/eisa/Makefile
@@ -0,0 +1,21 @@
+# Makefile for the Linux device tree
+
+obj-$(CONFIG_EISA) += eisa-bus.o
+obj-${CONFIG_EISA_PCI_EISA} += pci_eisa.o
+
+# virtual_root.o should be the last EISA root device to initialize,
+# so leave it at the end of the list.
+obj-${CONFIG_EISA_VIRTUAL_ROOT} += virtual_root.o
+
+
+# Ugly hack to get DEVICE_NAME_SIZE value...
+DEVICE_NAME_SIZE =$(shell awk '$$1=="\#define" && $$2=="DEVICE_NAME_SIZE" {print $$3-1}' $(srctree)/include/linux/device.h)
+
+$(obj)/eisa-bus.o: $(obj)/devlist.h
+
+quiet_cmd_eisaid = GEN $@
+ cmd_eisaid = sed -e '/^\#/D' -e 's/^\([[:alnum:]]\{7\}\) \+"\([^"]\{1,$(DEVICE_NAME_SIZE)\}\).*"/EISA_DEVINFO ("\1", "\2"),/' $< > $@
+
+clean-files := devlist.h
+$(obj)/devlist.h: $(src)/eisa.ids include/linux/device.h
+ $(call cmd,eisaid)
diff --git a/drivers/eisa/eisa-bus.c b/drivers/eisa/eisa-bus.c
new file mode 100644
index 000000000000..6381ba53853c
--- /dev/null
+++ b/drivers/eisa/eisa-bus.c
@@ -0,0 +1,430 @@
+/*
+ * EISA bus support functions for sysfs.
+ *
+ * (C) 2002, 2003 Marc Zyngier <maz@wild-wind.fr.eu.org>
+ *
+ * This code is released under the GPL version 2.
+ */
+
+#include <linux/kernel.h>
+#include <linux/device.h>
+#include <linux/eisa.h>
+#include <linux/module.h>
+#include <linux/moduleparam.h>
+#include <linux/init.h>
+#include <linux/slab.h>
+#include <linux/ioport.h>
+#include <asm/io.h>
+
+#define SLOT_ADDRESS(r,n) (r->bus_base_addr + (0x1000 * n))
+
+#define EISA_DEVINFO(i,s) { .id = { .sig = i }, .name = s }
+
+struct eisa_device_info {
+ struct eisa_device_id id;
+ char name[DEVICE_NAME_SIZE];
+};
+
+#ifdef CONFIG_EISA_NAMES
+static struct eisa_device_info __initdata eisa_table[] = {
+#include "devlist.h"
+};
+#define EISA_INFOS (sizeof (eisa_table) / (sizeof (struct eisa_device_info)))
+#endif
+
+#define EISA_MAX_FORCED_DEV 16
+
+static int enable_dev[EISA_MAX_FORCED_DEV];
+static int enable_dev_count;
+static int disable_dev[EISA_MAX_FORCED_DEV];
+static int disable_dev_count;
+
+static int is_forced_dev (int *forced_tab,
+ int forced_count,
+ struct eisa_root_device *root,
+ struct eisa_device *edev)
+{
+ int i, x;
+
+ for (i = 0; i < forced_count; i++) {
+ x = (root->bus_nr << 8) | edev->slot;
+ if (forced_tab[i] == x)
+ return 1;
+ }
+
+ return 0;
+}
+
+static void __init eisa_name_device (struct eisa_device *edev)
+{
+#ifdef CONFIG_EISA_NAMES
+ int i;
+ for (i = 0; i < EISA_INFOS; i++) {
+ if (!strcmp (edev->id.sig, eisa_table[i].id.sig)) {
+ strlcpy (edev->pretty_name,
+ eisa_table[i].name,
+ DEVICE_NAME_SIZE);
+ return;
+ }
+ }
+
+ /* No name was found */
+ sprintf (edev->pretty_name, "EISA device %.7s", edev->id.sig);
+#endif
+}
+
+static char __init *decode_eisa_sig(unsigned long addr)
+{
+ static char sig_str[EISA_SIG_LEN];
+ u8 sig[4];
+ u16 rev;
+ int i;
+
+ for (i = 0; i < 4; i++) {
+#ifdef CONFIG_EISA_VLB_PRIMING
+ /*
+ * This ugly stuff is used to wake up VL-bus cards
+ * (AHA-284x is the only known example), so we can
+ * read the EISA id.
+ *
+ * Thankfully, this only exists on x86...
+ */
+ outb(0x80 + i, addr);
+#endif
+ sig[i] = inb (addr + i);
+
+ if (!i && (sig[0] & 0x80))
+ return NULL;
+ }
+
+ sig_str[0] = ((sig[0] >> 2) & 0x1f) + ('A' - 1);
+ sig_str[1] = (((sig[0] & 3) << 3) | (sig[1] >> 5)) + ('A' - 1);
+ sig_str[2] = (sig[1] & 0x1f) + ('A' - 1);
+ rev = (sig[2] << 8) | sig[3];
+ sprintf(sig_str + 3, "%04X", rev);
+
+ return sig_str;
+}
+
+static int eisa_bus_match (struct device *dev, struct device_driver *drv)
+{
+ struct eisa_device *edev = to_eisa_device (dev);
+ struct eisa_driver *edrv = to_eisa_driver (drv);
+ const struct eisa_device_id *eids = edrv->id_table;
+
+ if (!eids)
+ return 0;
+
+ while (strlen (eids->sig)) {
+ if (!strcmp (eids->sig, edev->id.sig) &&
+ edev->state & EISA_CONFIG_ENABLED) {
+ edev->id.driver_data = eids->driver_data;
+ return 1;
+ }
+
+ eids++;
+ }
+
+ return 0;
+}
+
+struct bus_type eisa_bus_type = {
+ .name = "eisa",
+ .match = eisa_bus_match,
+};
+
+int eisa_driver_register (struct eisa_driver *edrv)
+{
+ int r;
+
+ edrv->driver.bus = &eisa_bus_type;
+ if ((r = driver_register (&edrv->driver)) < 0)
+ return r;
+
+ return 0;
+}
+
+void eisa_driver_unregister (struct eisa_driver *edrv)
+{
+ driver_unregister (&edrv->driver);
+}
+
+static ssize_t eisa_show_sig (struct device *dev, char *buf)
+{
+ struct eisa_device *edev = to_eisa_device (dev);
+ return sprintf (buf,"%s\n", edev->id.sig);
+}
+
+static DEVICE_ATTR(signature, S_IRUGO, eisa_show_sig, NULL);
+
+static ssize_t eisa_show_state (struct device *dev, char *buf)
+{
+ struct eisa_device *edev = to_eisa_device (dev);
+ return sprintf (buf,"%d\n", edev->state & EISA_CONFIG_ENABLED);
+}
+
+static DEVICE_ATTR(enabled, S_IRUGO, eisa_show_state, NULL);
+
+static int __init eisa_init_device (struct eisa_root_device *root,
+ struct eisa_device *edev,
+ int slot)
+{
+ char *sig;
+ unsigned long sig_addr;
+ int i;
+
+ sig_addr = SLOT_ADDRESS (root, slot) + EISA_VENDOR_ID_OFFSET;
+
+ if (!(sig = decode_eisa_sig (sig_addr)))
+ return -1; /* No EISA device here */
+
+ memcpy (edev->id.sig, sig, EISA_SIG_LEN);
+ edev->slot = slot;
+ edev->state = inb (SLOT_ADDRESS (root, slot) + EISA_CONFIG_OFFSET) & EISA_CONFIG_ENABLED;
+ edev->base_addr = SLOT_ADDRESS (root, slot);
+ edev->dma_mask = root->dma_mask; /* Default DMA mask */
+ eisa_name_device (edev);
+ edev->dev.parent = root->dev;
+ edev->dev.bus = &eisa_bus_type;
+ edev->dev.dma_mask = &edev->dma_mask;
+ edev->dev.coherent_dma_mask = edev->dma_mask;
+ sprintf (edev->dev.bus_id, "%02X:%02X", root->bus_nr, slot);
+
+ for (i = 0; i < EISA_MAX_RESOURCES; i++) {
+#ifdef CONFIG_EISA_NAMES
+ edev->res[i].name = edev->pretty_name;
+#else
+ edev->res[i].name = edev->id.sig;
+#endif
+ }
+
+ if (is_forced_dev (enable_dev, enable_dev_count, root, edev))
+ edev->state = EISA_CONFIG_ENABLED | EISA_CONFIG_FORCED;
+
+ if (is_forced_dev (disable_dev, disable_dev_count, root, edev))
+ edev->state = EISA_CONFIG_FORCED;
+
+ return 0;
+}
+
+static int __init eisa_register_device (struct eisa_device *edev)
+{
+ if (device_register (&edev->dev))
+ return -1;
+
+ device_create_file (&edev->dev, &dev_attr_signature);
+ device_create_file (&edev->dev, &dev_attr_enabled);
+
+ return 0;
+}
+
+static int __init eisa_request_resources (struct eisa_root_device *root,
+ struct eisa_device *edev,
+ int slot)
+{
+ int i;
+
+ for (i = 0; i < EISA_MAX_RESOURCES; i++) {
+ /* Don't register resource for slot 0, since this is
+ * very likely to fail... :-( Instead, grab the EISA
+ * id, now we can display something in /proc/ioports.
+ */
+
+ /* Only one region for mainboard */
+ if (!slot && i > 0) {
+ edev->res[i].start = edev->res[i].end = 0;
+ continue;
+ }
+
+ if (slot) {
+ edev->res[i].name = NULL;
+ edev->res[i].start = SLOT_ADDRESS (root, slot) + (i * 0x400);
+ edev->res[i].end = edev->res[i].start + 0xff;
+ edev->res[i].flags = IORESOURCE_IO;
+ } else {
+ edev->res[i].name = NULL;
+ edev->res[i].start = SLOT_ADDRESS (root, slot) + EISA_VENDOR_ID_OFFSET;
+ edev->res[i].end = edev->res[i].start + 3;
+ edev->res[i].flags = IORESOURCE_BUSY;
+ }
+
+ if (request_resource (root->res, &edev->res[i]))
+ goto failed;
+ }
+
+ return 0;
+
+ failed:
+ while (--i >= 0)
+ release_resource (&edev->res[i]);
+
+ return -1;
+}
+
+static void __init eisa_release_resources (struct eisa_device *edev)
+{
+ int i;
+
+ for (i = 0; i < EISA_MAX_RESOURCES; i++)
+ if (edev->res[i].start || edev->res[i].end)
+ release_resource (&edev->res[i]);
+}
+
+static int __init eisa_probe (struct eisa_root_device *root)
+{
+ int i, c;
+ struct eisa_device *edev;
+
+ printk (KERN_INFO "EISA: Probing bus %d at %s\n",
+ root->bus_nr, root->dev->bus_id);
+
+ /* First try to get hold of slot 0. If there is no device
+ * here, simply fail, unless root->force_probe is set. */
+
+ if (!(edev = kmalloc (sizeof (*edev), GFP_KERNEL))) {
+ printk (KERN_ERR "EISA: Couldn't allocate mainboard slot\n");
+ return -ENOMEM;
+ }
+
+ memset (edev, 0, sizeof (*edev));
+
+ if (eisa_request_resources (root, edev, 0)) {
+ printk (KERN_WARNING \
+ "EISA: Cannot allocate resource for mainboard\n");
+ kfree (edev);
+ if (!root->force_probe)
+ return -EBUSY;
+ goto force_probe;
+ }
+
+ if (eisa_init_device (root, edev, 0)) {
+ eisa_release_resources (edev);
+ kfree (edev);
+ if (!root->force_probe)
+ return -ENODEV;
+ goto force_probe;
+ }
+
+ printk (KERN_INFO "EISA: Mainboard %s detected.\n", edev->id.sig);
+
+ if (eisa_register_device (edev)) {
+ printk (KERN_ERR "EISA: Failed to register %s\n",
+ edev->id.sig);
+ eisa_release_resources (edev);
+ kfree (edev);
+ }
+
+ force_probe:
+
+ for (c = 0, i = 1; i <= root->slots; i++) {
+ if (!(edev = kmalloc (sizeof (*edev), GFP_KERNEL))) {
+ printk (KERN_ERR "EISA: Out of memory for slot %d\n",
+ i);
+ continue;
+ }
+
+ memset (edev, 0, sizeof (*edev));
+
+ if (eisa_request_resources (root, edev, i)) {
+ printk (KERN_WARNING \
+ "Cannot allocate resource for EISA slot %d\n",
+ i);
+ kfree (edev);
+ continue;
+ }
+
+ if (eisa_init_device (root, edev, i)) {
+ eisa_release_resources (edev);
+ kfree (edev);
+ continue;
+ }
+
+ printk (KERN_INFO "EISA: slot %d : %s detected",
+ i, edev->id.sig);
+
+ switch (edev->state) {
+ case EISA_CONFIG_ENABLED | EISA_CONFIG_FORCED:
+ printk (" (forced enabled)");
+ break;
+
+ case EISA_CONFIG_FORCED:
+ printk (" (forced disabled)");
+ break;
+
+ case 0:
+ printk (" (disabled)");
+ break;
+ }
+
+ printk (".\n");
+
+ c++;
+
+ if (eisa_register_device (edev)) {
+ printk (KERN_ERR "EISA: Failed to register %s\n",
+ edev->id.sig);
+ eisa_release_resources (edev);
+ kfree (edev);
+ }
+ }
+
+ printk (KERN_INFO "EISA: Detected %d card%s.\n", c, c == 1 ? "" : "s");
+
+ return 0;
+}
+
+static struct resource eisa_root_res = {
+ .name = "EISA root resource",
+ .start = 0,
+ .end = 0xffffffff,
+ .flags = IORESOURCE_IO,
+};
+
+static int eisa_bus_count;
+
+int __init eisa_root_register (struct eisa_root_device *root)
+{
+ int err;
+
+ /* Use our own resources to check if this bus base address has
+ * been already registered. This prevents the virtual root
+ * device from registering after the real one has, for
+ * example... */
+
+ root->eisa_root_res.name = eisa_root_res.name;
+ root->eisa_root_res.start = root->res->start;
+ root->eisa_root_res.end = root->res->end;
+ root->eisa_root_res.flags = IORESOURCE_BUSY;
+
+ if ((err = request_resource (&eisa_root_res, &root->eisa_root_res)))
+ return err;
+
+ root->bus_nr = eisa_bus_count++;
+
+ if ((err = eisa_probe (root)))
+ release_resource (&root->eisa_root_res);
+
+ return err;
+}
+
+static int __init eisa_init (void)
+{
+ int r;
+
+ if ((r = bus_register (&eisa_bus_type)))
+ return r;
+
+ printk (KERN_INFO "EISA bus registered\n");
+ return 0;
+}
+
+module_param_array(enable_dev, int, &enable_dev_count, 0444);
+module_param_array(disable_dev, int, &disable_dev_count, 0444);
+
+postcore_initcall (eisa_init);
+
+int EISA_bus; /* for legacy drivers */
+EXPORT_SYMBOL (EISA_bus);
+EXPORT_SYMBOL (eisa_bus_type);
+EXPORT_SYMBOL (eisa_driver_register);
+EXPORT_SYMBOL (eisa_driver_unregister);
diff --git a/drivers/eisa/eisa.ids b/drivers/eisa/eisa.ids
new file mode 100644
index 000000000000..ed69837d8b74
--- /dev/null
+++ b/drivers/eisa/eisa.ids
@@ -0,0 +1,1278 @@
+# This list is a compilation of EISA ids.
+# It also includes numerous ISA cards for which an EISA id
+# has been allocated.
+#
+# Please send any patch/addition/correction to
+# Marc Zyngier <maz@wild-wind.fr.eu.org>
+#
+# Many entries were contributed by Andries.Brouwer@cwi.nl
+
+ABP0510 "Advansys ABP-510 ISA SCSI Host Adapter"
+ABP0540 "Advansys ABP-540/542 ISA SCSI Host Adapter"
+ABP7401 "AdvanSys ABP-740/742 EISA Single Channel SCSI Host Adapter"
+ABP7501 "AdvanSys ABP-750/752 EISA Dual Channel SCSI Host Adapter"
+ACC1200 "ACCTON EtherCombo-32 Ethernet Adapter"
+ACC120A "ACCTON EtherCombo-32 Ethernet Adapter"
+ACC1650 "Accton MPX Ethernet Adapter (EN165x)"
+ACC1660 "Accton MPX Ethernet Adapter (EN166x)"
+ACE1010 "ACME Super Fast System Board"
+ACE2010 "ACME PC Network"
+ACE3010 "ACME Arcnet Plan"
+ACE3030 "ACME Sample VS Board 1"
+ACE4010 "ACME Tape Controller"
+ACE5010 "ACME VDU Video Board"
+ACE6010 "ACME Disk Controller"
+ACE7010 "ACME Multi-Function Board"
+ACR1201 "Acer 1200 486/25 EISA System Board"
+ACR1211 "AcerFrame 3000SP33 486/33 EISA System Board"
+ACR1341 "M1 486SX/20 CPU Board"
+ACR1351 "M1 486SX/20 CPU Board"
+ACR1361 "M1 487/20 CPU Board"
+ACR1371 "M1 487/20 CPU Board"
+ACR1381 "M1 486/20 CPU Board"
+ACR1391 "M1 486/20 CPU Board"
+ACR1581 "M1 486/33 CPU Board"
+ACR1591 "M1 486/33 CPU Board"
+ACR15A1 "M1 486/33 CPU Board"
+ACR15B1 "M1 486/33 CPU Board"
+ACR1701 "AcerFrame 1000"
+ACR1711 "AcerFrame 1000 486/33 SYSTEM-2"
+ACR1801 "Acer P43WE EISA System Board"
+ACR3211 "AcerFrame 3000MP 486 SYSTEM-1"
+ACR3221 "AcerFrame 486 Series SYSTEM-2"
+ACR3231 "AcerFrame 486 Series SYSTEM-3"
+ACR3241 "AcerFrame 486 Series SYSTEM-4"
+ACR3261 "AcerFrame 3000MP 486 SYSTEM-1"
+ACR3271 "AcerFrame 486 Series SYSTEM-2"
+ACR3281 "AcerFrame 486 Series SYSTEM-3"
+ACR3291 "AcerFrame 486 Series SYSTEM-4"
+ACR4509 "ACER/Altos M1 System Board"
+ADI0001 "Lightning Networks 32-Bit EISA Ethernet LAN Adapter"
+ADP0000 "Adaptec AHA-1740 SCSI"
+ADP0001 "Adaptec AHA-1740A SCSI"
+ADP0002 "Adaptec AHA-1742A SCSI"
+ADP0100 "Adaptec AHA-1540/1542 ISA SCSI Host Adapter"
+AIM0002 "AUVA OPTi/EISA 32-Bit 486 All-in-One System Board"
+ADP0200 "Adaptec AHA-1520/1522 ISA SCSI Host Adapter"
+ADP0400 "Adaptec AHA-1744 SCSI"
+ADP7756 "Adaptec AHA-284x SCSI (BIOS enabled)"
+ADP7757 "Adaptec AHA-284x SCSI (BIOS disabled)"
+ADP7770 "Adaptec AIC-7770 SCSI (on motherboard)"
+ADP7771 "Adaptec AHA-274x SCSI"
+AEI0401 "486EI EISA System Board"
+AEO0301 "486EO EISA System Board"
+AIR0101 "AIR486SE/25/33 EISA Baby AT-foot print motherboard."
+AIR0103 "AIR486SE/25/33/50"
+AIR0201 "AIR486LE/25/33/50"
+AIR0301 "AIR 486EO EISA System Board"
+AIR0401 "486EI EISA System Board"
+AIR0501 "AIR 586EP PCI/EISA System Board"
+AIR0601 "AIR 54CEP PCI/EISA System Board"
+AIR0701 "AIR 54CDP PCI/EISA System Board"
+AIR0702 "AIR 54CDP PCI/EISA Dual-Processors System Board"
+AIR0901 "AIR 54TDP PCI/EISA Dual-Processors System Board"
+AIR1001 "AIR P6NDP PCI/EISA Dual-Pentium Processor System Board"
+AIR2001 "AIR SCSI-2E"
+AIR2101 "AIR SCSI-2V"
+AIR3001 "ENET2E EISA BUS MASTER ETHERNET ADAPTER"
+AIR3101 "ENET-2V LOCAL BUS MASTER ETHERNET ADAPTER"
+ALR0001 "Power/Business VEISA System Board"
+ALR0041 "PowerPro System Board"
+ALR0181 "PowerPro System Board"
+ALR0241 "Evolution V Pentium Tower System Board"
+ALR0341 "EISA PCI base System Board"
+ALR3000 "80486 Processor Module"
+ALR3010 "Pentium Processor Board"
+ALR3023 "ALR 16-bit VGA without Parallel port"
+ALR8580 "Advanced Disk Array Caching EISA Controller"
+ALRA0C1 "System Board"
+ALRA301 "Revolution Q-SMP System Board"
+ALRA311 "Revolution Q-2SMP System Board"
+ALRB0A0 "Primary System Processor Board - 80486DX2/66"
+ALRB0B0 "Secondary System Processor Board - 80486DX2/66"
+AMI44C1 "AMI SCSI Host Adapter - Series 44"
+AMI15C1 "AMI SCSI Host Adapter"
+AMI15D1 "AMI SCSI Host Adapter - Rev 2"
+AMI15E1 "AMI Normal Single Ended EISA SCSI CACHING Controller-Ver 1.22"
+AMI16B1 "AMI ENTERPRISE EISA system board"
+AMI2509 "AMI ENTERPRISE EISA system board"
+AMI25B1 "AMI ENTERPRISE EISA system board"
+AMI28A1 "AMI EZ-FLEX EISA System Board"
+AMI44D2 "AMI Fast Single Ended EISA SCSI CACHING Controller"
+AMI4801 "AMI Series 48 EISA Fast SCSI Host Adapter"
+AMI68B1 "AMI Enterprise III 486 EISA System Board"
+APS0101 "EISA PIP INTERFACE"
+APS0102 "EISA PIP INTERFACE"
+APS0103 "EISA PIP INTERFACE"
+ARC0010 "Alta EtherTPI/Combo"
+ARC0020 "Alta TokenCombo-16 S/U"
+ASU0100 "ASUS EISA-SC100 SCSI Cache Host Adapter (CFG file V2.0)"
+ASU0500 "ASUS EISA-L500 Ethernet LAN ADAPTER"
+ASU4001 "EISA-486C Main Board"
+ASU4101 "EISA-486E Main Board"
+ASU4201 "EISA-486A Main Board"
+ASU4301 "EISA-486SI Main Board"
+ASU4501 "Mini EISA-486H Main Board"
+ASU4701 "Mini EISA-486AS Main Board"
+ASU4901 "VL/EISA-486SV1 Main Board"
+ASU5101 "PCI/E-P5MP4 or PCI/E-P54NP4 Main Board V2.3"
+ASU5201 "P/E-P55T2P4D Main Board (CFG File V1.2)"
+ATI1500 "ATI AT-1500 Ethernet Adapter Card"
+ATI1700 "ATI AT-1700 Ethernet Adapter Card"
+ATI4400 "mach32 EISA Video Accelerator Card"
+ATI4402 "mach32 EISA Video Accelerator Card"
+ATI4410 "mach32 Video Accelerator Card"
+ATI4420 "mach32 Video Accelerator Card"
+ATI4430 "mach32 VLB Video Accelerator Card"
+ATT2402 "AT&T SCSI Host Adapter A (StarServer E)"
+ATT2404 "DPT SCSI Host Bus Adapter (PM2012B/9X)"
+AVI2E01 "AVIEW2E EISA SVGA Adapter"
+AVM0001 "AVM ISDN-Controller A1"
+BAN0440 "Banyan ICA"
+BAN0670 "Banyan ICAplus"
+BAN0680 "Banyan ICA/RM"
+BUS4201 "BusTek/BusLogic Bt74xB 32-Bit Bus Master EISA-to-SCSI Host Adapter"
+BUS4202 "BusTek/BusLogic Bt74xC 32-Bit Bus Master EISA-to-SCSI Host Adapter"
+BUS6001 "BusTek/BusLogic Bt760 32-Bit Bus Master EISA-to-Ethernet Controller"
+BUS6301 "BusTek/BusLogic Bt763E EISA 32-Bit 82596-based Ethernet Controller"
+CCI0000 "Cache Computers, Inc. Memory Refresh Controller"
+CCI1001 "Cache Computers Inc. 486/25 EISA System Board"
+CCI2001 "Cache Computers Inc. 486/33 EISA System Board"
+CCI3001 "Cache Computers, Inc. Modular EISA System Board"
+CCI3009 "Cache Computers Inc. Modular EISA System Board"
+CCI4000 "Cache Computers, Inc. 486/33 CPU Board"
+CCI4001 "Cache Computers, Inc. 486/33 CPU Board"
+CCI5001 "Cache Computers, Inc. 486/50 CPU Board"
+CCI6001 "Cache Computer EISA Ethernet LAN Adapter"
+CCI7001 "Cache Computers, Inc. EISA System Board"
+CCI8001 "Cache Computers, Inc. EISA System Board"
+CHAA041 "Chase AT4 Intelligent Serial Controller"
+CHAA081 "Chase AT8 Intelligent Serial Controller"
+CHAA091 "Chase AT8+ Intelligent Serial Controller"
+CHAA161 "Chase AT16 Intelligent Serial Controller"
+CHAA171 "Chase AT16+ Intelligent Serial Controller"
+CMD0003 "CMD Technology, Inc. EISA SCSI Host Adapter"
+CNT2000 "900E/950E EISA Bus 32-bit Ethernet LAN Adapter"
+COG5000 "Cogent eMASTER+ AT Combo 16-Bit Workstation Ethernet Adapter"
+COG7002 "Cogent eMASTER+ ATS Combo Bus-Mastering Ethernet Adapter"
+COG9002 "Cogent eMASTER+ EISA XL 32-Bit Burst-mode Ethernet Adapter"
+CPQ0101 "Compaq SYSTEMPRO System Board"
+CPQ0109 "Compaq SYSTEMPRO System Board (ASSY # 001981)"
+CPQ0401 "Compaq DESKPRO 486/33L or 386/33L System Board"
+CPQ0501 "Compaq DESKPRO/M System Board"
+CPQ0509 "Compaq DESKPRO/M System Board with Audio"
+CPQ0511 "Compaq SYSTEMPRO/LT System Board"
+CPQ0521 "Compaq DESKPRO XL System Board"
+CPQ0531 "Compaq ProSignia 500 System Board"
+CPQ0541 "Compaq ProSignia 300 System Board"
+CPQ0551 "Compaq ProLiant 2500 Server"
+CPQ0552 "Compaq ProLiant 2500 System Board"
+CPQ0553 "Compaq ProLiant 1600 System Board"
+CPQ0559 "Compaq ProLiant 1500 System Board"
+CPQ0561 "Compaq ProLiant 3000 System Board"
+CPQ0571 "Compaq ProSignia 200 Server"
+CPQ0579 "Compaq ProLiant 800 Server"
+CPQ0589 "Compaq ProLiant 850R"
+CPQ0601 "Compaq ProSignia Server"
+CPQ0609 "Compaq ProSignia Server"
+CPQ0611 "Compaq ProSignia Server"
+CPQ0621 "Compaq ProSignia Server (ASSY # 3154)"
+CPQ0629 "Compaq ProSignia Server (ASSY # 3154)"
+CPQ0631 "Compaq ProLiant 1000 Server"
+CPQ0639 "Compaq ProLiant 1000 Server"
+CPQ0671 "Compaq ProSignia 200"
+CPQ0679 "Compaq ProLiant 1850R"
+CPQ0680 "Compaq ProLiant CL1850 System Board"
+CPQ0681 "ProLiant CL380"
+CPQ0685 "Compaq ProLiant DL360"
+CPQ0686 "Compaq ProSignia 780"
+CPQ0687 "Compaq ProSignia 740"
+CPQ0688 "Compaq ProLiant 800 System Board"
+CPQ0689 "Compaq ProLiant 1600 System Board"
+CPQ0690 "Compaq ProLiant ML370"
+CPQ0691 "Compaq ProLiant 800"
+CPQ0692 "Compaq ProLiant DL380"
+CPQ0701 "Compaq ProSignia VS"
+CPQ0709 "Compaq ProLiant 3000 System Board"
+CPQ0711 "Compaq ProSignia VS"
+CPQ0712 "Compaq ProLiant ML530"
+CPQ0714 "Compaq ProLiant ML570"
+CPQ0715 "Compaq ProLiant DL580"
+CPQ0718 "Compaq TaskSmart N2400"
+CPQ071D "Compaq TaskSmart C2500"
+CPQ0808 "Compaq ProLiant 5500"
+CPQ0809 "Compaq ProLiant 6500 System Board"
+CPQ0810 "Compaq ProLiant 6400R System Board"
+CPQ0811 "Compaq ProLiant 1500 System Board"
+CPQ1001 "Compaq Portable 486"
+CPQ1009 "Compaq Portable 486/66"
+CPQ1201 "Compaq DESKPRO 486/25"
+CPQ1301 "Compaq DESKPRO 486/50L"
+CPQ1401 "Compaq Portable 486c"
+CPQ1409 "Compaq Portable 486c/66"
+CPQ1501 "Compaq SYSTEMPRO/XL Server"
+CPQ1509 "Compaq ProLiant 4000 Server"
+CPQ1519 "Compaq ProLiant 2000 Server"
+CPQ1529 "Compaq ProLiant 4500 Server"
+CPQ1561 "Compaq ProLiant 5000 System Board"
+CPQ1563 "Compaq ProLiant 6000 System Board"
+CPQ1565 "Compaq ProLiant 6500 System Board"
+CPQ1601 "Compaq ProLiant 7000"
+CPQ1602 "Compaq ProLiant 6000"
+CPQ1603 "Compaq Standard Peripherals Board"
+CPQ1608 "Compaq ProLiant 8500"
+CPQ1609 "Compaq ProLiant 8000"
+CPQ1669 "Compaq ProLiant 7000 System Board"
+CPQ3001 "Compaq Advanced VGA"
+CPQ3011 "Compaq QVision 1024/E Video Controller"
+CPQ3021 "Compaq QVision 1024/I Video Controller"
+CPQ3111 "Compaq QVision 1024/E Graphics Controller"
+CPQ3112 "Compaq QVision 1280/E Graphics Controller"
+CPQ3121 "Compaq QVision 1024/I Graphics Controller"
+CPQ3122 "Compaq QVision 1280/I Graphics Controller"
+CPQ4001 "Compaq 32-Bit Intelligent Drive Array Controller"
+CPQ4002 "Compaq Intelligent Drive Array Controller-2"
+CPQ4010 "Compaq 32-Bit Intelligent Drive Array Expansion Controller"
+CPQ4020 "Compaq SMART Array Controller"
+CPQ4030 "Compaq SMART-2/E Array Controller"
+CPQ4300 "Compaq Advanced ESDI Fixed Disk Controller"
+CPQ4401 "Compaq Integrated SCSI-2 Options Port"
+CPQ4410 "Compaq Integrated 32-Bit Fast-SCSI-2 Controller"
+CPQ4411 "Compaq 32-Bit Fast-SCSI-2 Controller"
+CPQ4420 "Compaq 6260 SCSI-2 Controller"
+CPQ4430 "Compaq 32-Bit Fast-Wide SCSI-2/E Controller"
+CPQ4431 "Compaq 32-Bit Fast-Wide SCSI-2/E Controller"
+CPQ5000 "Compaq 386/33 System Processor Board used as Secondary"
+CPQ5251 "Compaq 5/133 System Processor Board-2MB"
+CPQ5253 "Compaq 5/166 System Processor Board-2MB"
+CPQ5255 "Compaq 5/133 System Processor Board-1MB"
+CPQ525D "Compaq 5/100 System Processor Board-1MB"
+CPQ5281 "Compaq 486/50 System Processor Board used as Secondary"
+CPQ5282 "Compaq 486/50 System Processor Board used as Secondary"
+CPQ5287 "Compaq 5/66 System Processor Board used as Secondary"
+CPQ528A "Compaq 5/100 System Processor Board w/ Transaction Blaster"
+CPQ528B "Compaq 5/100 System Processor Board"
+CPQ528F "Compaq 486DX2/66 System Processor Board used as Secondary"
+CPQ529B "Compaq 5/90 System Processor Board"
+CPQ529F "Compaq 5/133 System Processor Board"
+CPQ52A0 "Compaq System Processor"
+CPQ5900 "Compaq 486/33 System Processor Board used as Secondary"
+CPQ5A00 "Compaq 486/33 System Processor Board (ASSY # 002013) used as Secondary"
+CPQ5B00 "Compaq 486DX2/66 System Processor Board used as Secondary"
+CPQ5C00 "Compaq 486/33 System Processor Board used as Secondary"
+CPQ6000 "Compaq 32-Bit DualSpeed Token Ring Controller"
+CPQ6001 "Compaq 32-Bit DualSpeed Token Ring Controller"
+CPQ6002 "Compaq NetFlex-2 TR"
+CPQ6100 "Compaq NetFlex ENET-TR"
+CPQ6101 "Compaq NetFlex-2 Controller"
+CPQ6200 "Compaq DualPort Ethernet Controller"
+CPQ6300 "Compaq NetFlex-2 DualPort TR"
+CPQ7000 "Compaq 32-Bit Server Manager/R Board"
+CPQ7001 "Compaq 32-Bit Server Manager/R Board"
+CPQ7100 "Compaq Remote Insight Board"
+CPQ7200 "Compaq StorageWorks Fibre Channel Host Bus Adapter/E"
+CPQ9004 "Compaq 386/33 Processor Board"
+CPQ9005 "Compaq 386/25 Processor Board"
+CPQ9013 "Compaq 486DX2/66 System Processor Board used as Primary"
+CPQ9014 "Compaq 486/33 System Processor Board used as Primary"
+CPQ9015 "Compaq 486/33 Processor Board"
+CPQ9016 "Compaq 486DX2/66 Processor Board"
+CPQ9017 "Compaq 486DX2/50 Processor Board"
+CPQ9018 "Compaq 486/33 Processor Board (8 MB)"
+CPQ9034 "Compaq 486SX/25 Processor Board"
+CPQ9035 "Compaq 486SX/16 Processor Board"
+CPQ9036 "Compaq 486SX/25 Processor Board (8 MB)"
+CPQ9037 "Compaq 486SX/16 Processor Board (8 MB)"
+CPQ9038 "Compaq 486SX/33 Processor Board (8 MB)"
+CPQ903C "Compaq 486SX/33 Processor Board (4 MB)"
+CPQ9040 "Compaq 5/66 Processor Board"
+CPQ9041 "Compaq 5/66 Processor Board"
+CPQ9042 "Compaq 5/66 Processor Board"
+CPQ9043 "Compaq 5/66 Processor Board"
+CPQ9044 "Compaq 5/60 Processor Board"
+CPQ9045 "Compaq 5/60 Processor Board"
+CPQ9046 "Compaq 5/60 Processor Board"
+CPQ9047 "Compaq 5/60 Processor Board"
+CPQ9251 "Compaq 5/133 System Processor Board-2MB"
+CPQ9253 "Compaq 5/166 System Processor Board-2MB"
+CPQ9255 "Compaq 5/133 System Processor Board-1MB"
+CPQ925D "Compaq 5/100 System Processor Board-1MB"
+CPQ925F "ProLiant 2500 Dual Pentium Pro Processor Board"
+CPQ9267 "Compaq Pentium II Processor Board"
+CPQ9278 "Compaq Processor Board"
+CPQ9279 "Compaq Processor Board"
+CPQ9280 "Compaq Processor Board"
+CPQ9281 "Compaq 486/50 System Processor Board used as Primary"
+CPQ9282 "Compaq 486/50 System Processor Board used as Primary"
+CPQ9283 "Processor Modules"
+CPQ9285 "Processor Modules"
+CPQ9286 "Compaq Slot-1 Terminator Board"
+CPQ9287 "Compaq 5/66 System Processor Board used as Primary"
+CPQ928A "Compaq 5/100 System Processor Board w/ Transaction Blaster"
+CPQ928B "Compaq 5/100 System Processor Board"
+CPQ928F "Compaq 486DX2/66 System Processor Board used as Primary"
+CPQ929B "Compaq 5/90 System Processor Board"
+CPQ929F "Compaq 5/133 System Processor Board"
+CPQ92A0 "Compaq ProLiant 1500 Processor Board"
+CPQ92A4 "Compaq System Processor Board"
+CPQ92B0 "Compaq Processor Board"
+CPQ92B1 "Compaq FRC Processor Board"
+CPQ92B2 "Compaq Terminator Board"
+CPQ92B3 "6/200 FlexSMP Dual Processor Board"
+CPQ92B4 "Compaq Processor Board"
+CPQ92B5 "Compaq Terminator Board"
+CPQ92B6 "Compaq Processor Board"
+CPQ92B7 "Compaq Processor(s)"
+CPQ92B8 "Compaq Terminator Board"
+CPQ92B9 "Compaq Terminator Board"
+CPQ9351 "Compaq 5/133 System Processor Board-2MB"
+CPQ9353 "Compaq 5/166 System Processor Board-2MB"
+CPQ9355 "Compaq 5/133 System Processor Board-1MB"
+CPQ935D "Compaq 5/100 System Processor Board-1MB"
+CPQ9381 "Compaq 486/50 System Processor Board"
+CPQ9382 "Compaq 486/50 System Processor Board"
+CPQ9387 "Compaq 5/66 System Processor Board"
+CPQ938A "Compaq 5/100 System Processor Board w/ Transaction Blaster"
+CPQ938B "Compaq 5/100 System Processor Board"
+CPQ939B "Compaq 5/90 System Processor Board"
+CPQ939F "Compaq 5/133 System Processor Board"
+CPQ9451 "Compaq 5/133 System Processor Board-2MB"
+CPQ9453 "Compaq 5/166 System Processor Board-2MB"
+CPQ9455 "Compaq 5/133 System Processor Board-1MB"
+CPQ945D "Compaq 5/100 System Processor Board-1MB"
+CPQ9481 "Compaq 486/50 System Processor Board"
+CPQ9482 "Compaq 486/50 System Processor Board"
+CPQ9487 "Compaq 5/66 System Processor Board"
+CPQ948A "Compaq 5/100 System Processor Board w/ Transaction Blaster"
+CPQ948B "Compaq 5/100 System Processor Board"
+CPQ949B "Compaq 5/90 System Processor Board"
+CPQ949F "Compaq 5/133 System Processor Board"
+CPQ9901 "Compaq 486SX/16 Processor Board"
+CPQ9902 "Compaq 486SX/16 Processor Board"
+CPQ9903 "Compaq 486SX/25 Processor Board"
+CPQ9904 "Compaq 486SX/25 Processor Board"
+CPQ9905 "Compaq 486SX/25 Processor Board"
+CPQ9906 "Compaq 486/33 Processor Board"
+CPQ9907 "Compaq 486DX2/66 Processor Board"
+CPQ9908 "Compaq 486SX/16 Processor Board"
+CPQ9909 "Compaq 486SX/16 Processor Board"
+CPQ990A "Compaq 486SX/25 Processor Board"
+CPQ990B "Compaq 486SX/25 Processor Board"
+CPQ990C "Compaq 486SX/25 Processor Board"
+CPQ990D "Compaq 486/33 Processor Board"
+CPQ990E "Compaq 486SX/33 Processor Board (8 MB)"
+CPQ990F "Compaq 486SX/33 Processor Board (8 MB)"
+CPQ9990 "Compaq 386/33 System Processor Board used as Primary"
+CPQ9991 "Compaq 386/33 Desktop Processor Board"
+CPQ9999 "Compaq 486/33 System Processor Board used as Primary"
+CPQ999A "Compaq 486/33 Desktop Processor Board"
+CPQ9A83 "Compaq DESKPRO XL Processor Board"
+CPQ9AA1 "Compaq ProSignia 500 Processor Board"
+CPQ9AA2 "Compaq ProSignia 300 Processor Board"
+CPQA000 "Compaq Enhanced Option Slot Serial Board"
+CPQA010 "Compaq Enhanced Option Slot Modem Board"
+CPQA015 "Compaq Integrated Remote Console (IRC)"
+CPQA020 "Compaq Integrated CD Rom Adapter"
+CPQA030 "Compaq Integrated CD Rom Adapter"
+CPQA040 "Compaq Automatic Server Recovery (ASR)"
+CPQA045 "Compaq Integrated Management Display Information"
+CPQF000 "Compaq Fixed Disk Drive Feature"
+CPQF100 "Compaq Ethernet 16TP Controller"
+CPQF110 "Compaq Token Ring 16TR Controller"
+CPQF120 "Compaq NetFlex-3/E Controller"
+CPQF140 "Compaq NetFlex-3/E Controller"
+CPQFA0D "Compaq SYSTEMPRO 4-Socket System Memory Board"
+CPQFA0E "Compaq SYSTEMPRO 6-Socket System Memory Board"
+CPQFA0F "Compaq DESKPRO 486/25 System Memory Board"
+CPQFA1A "Compaq DESKPRO 3-Socket System Memory Board"
+CPQFA1B "Compaq DESKPRO 486/50 System Memory Board"
+CPQFA1C "Compaq System Memory Expansion Board"
+CPQFA1D "Compaq SYSTEMPRO/XL Memory Expansion Board"
+CPQFA1E "Compaq Memory Expansion Board"
+CPQFB03 "Compaq Async/Parallel Printer Intf Assy 000990"
+CPQFB07 "Compaq DESKPRO 2400 Baud Modem"
+CPQFB09 "Compaq SpeedPaq 144/I Modem"
+CPQFB11 "Compaq Internal 28.8/33.6 Data+Fax Modem"
+CPQFC0B "Compaq Advanced Graphics 1024 Board"
+CPQFD08 "Compaq 135Mb, 150/250Mb Tape Adapter"
+CPQFD13 "Compaq 15MHz ESDI Fixed Disk Controller 001283"
+CPQFD17 "Compaq SCSI Tape Adapter"
+CPX0301 "Universal 10/100VG Selectable EISA LAN Adapter"
+CRS3203 "Crescendo 320 FDDI/CDDI EISA Adapter"
+CRS3204 "Cisco CDDI/FDDI EISA Adapter"
+CSI0690 "CSI F70X9 EISA FDDI DNI adapter card"
+CUI0000 "CUI Examples -- Virtual Board"
+DBI0101 "Digi C/X Host Adapter - EISA"
+DBI0102 "Digi C/X Host Adapter - EISA"
+DBI0201 "Digi EISA/Xem Host Adapter"
+DBI0301 "Digi EPC/X Host Adapter - EISA"
+DBI0501 "Digi Ports/Xem Host Adapter - ISA"
+DBI0601 "Digi EPC/X Host Adapter - ISA"
+DBI0701 "Digi C/X Host Adapter - ISA"
+DBI0801 "Digi PC/Xr - ISA"
+DBI0901 "Digi PC/Xt - ISA"
+DBI0C01 "Digi DataFire - ISA"
+DBI0D01 "Digi DataFire/4 - ISA"
+DBI0E01 "Digi PC IMAC - ISA"
+DBI0F01 "Digi PC IMAC/4 - ISA"
+DBI1001 "Digi PC/Xe - ISA"
+DBI1101 "Digi ES/4 Host Adapter - EISA"
+DBI1201 "Digi Acceleport Xr 920 - ISA"
+DEC1011 "Digital EISA Video Controller (EVC-1)"
+DEC1021 "Digital EISA SCSI Controller (ESC-1)"
+DEC1031 "DECpc MTE Series System Board"
+DEC2030 "Digital Ethernet Controller (DE203)"
+DEC2040 "Digital Ethernet Controller (DE204)"
+DEC2050 "Digital Ethernet Controller (DE205)"
+DEC2400 "DECpc AXP/150 System Board"
+DEC2500 "DEC EISA NVRAM for Alpha AXP"
+DEC2A01 "Digital AlphaServer 2100 Family System Board"
+DEC2E00 "Digital KFESA DSSI EISA Host Adapter"
+DEC2F00 "Digital WANcontroller/EISA (DNSES)"
+DEC3001 "DEC FDDIcontroller/EISA Adapter"
+DEC3002 "DEC FDDIcontroller/EISA Adapter"
+DEC3003 "DEC FDDIcontroller/EISA Adapter"
+DEC3004 "DEC FDDI Controller"
+DEC4220 "Digital EISA Ethernet Controller (DE422-SA)"
+DEC4250 "Digital EtherWORKS Turbo EISA (DE425-AA)"
+DEC5000 "Digital AlphaServer 1000, 1000A and AlphaStation 600A System Board"
+DEC5100 "Digital AlphaStation 600 Family System Board"
+DEC5301 "Digital 800 AlphaServer Family System Board"
+DEC6000 "Digital AlphaServer 8200 and 8400 Family System Board"
+DEC6400 "Digital AlphaServer 4100 System Board"
+DEC8101 "DEC VGA 1024 Graphics Adapter"
+DEC8102 "DEC 8514/A-Compatible Graphics Adapter"
+DEC8103 "DECpc VGA 1024 NI Graphics Adapter"
+DEC8300 "DEC DEPCA LC Ethernet Controller"
+DEC8301 "DEC DEPCA TURBO Ethernet Controller"
+DEL0000 "Generic ISA Board"
+DEL0001 "Dell System(R) 425E(TM) System Board"
+DEL0002 "Dell System(R) 433E(TM) System Board"
+DEL0003 "Dell System(R) 425TE(TM) System Board"
+DEL0004 "Dell System(R) 433TE(TM) System Board"
+DEL0005 "Dell Powerline(TM) Workstation 433DE(TM) System Board"
+DEL0006 "Dell Powerline(TM) Workstation 420DE(TM) System Board"
+DEL0007 "Dell Powerline(TM) Workstation 450DE(TM) System Board"
+DEL0008 "Dell Powerline(TM) Server 433SE(TM) System Board"