summaryrefslogtreecommitdiffstats
path: root/cfe/cfe/pci
diff options
context:
space:
mode:
authorroot <root@lamia.panaceas.james.local>2015-12-19 13:13:57 +0000
committerroot <root@lamia.panaceas.james.local>2015-12-19 14:18:03 +0000
commit1a2238d1bddc823df06f67312d96ccf9de2893cc (patch)
treec58a3944d674a667f133ea5a730f5037e57d3d2e /cfe/cfe/pci
downloadbootloader-1a2238d1bddc823df06f67312d96ccf9de2893cc.tar.gz
bootloader-1a2238d1bddc823df06f67312d96ccf9de2893cc.tar.bz2
bootloader-1a2238d1bddc823df06f67312d96ccf9de2893cc.zip
CFE from danitool [without hostTools dir]: https://mega.nz/#!mwZyFK7a!CPT3BKC8dEw29kubtdYxhB91G9vIIismTkgzQ3iUy3k
Diffstat (limited to 'cfe/cfe/pci')
-rw-r--r--cfe/cfe/pci/cfe_pci.h52
-rw-r--r--cfe/cfe/pci/devlist2h.awk220
-rw-r--r--cfe/cfe/pci/ldtinit.c641
-rw-r--r--cfe/cfe/pci/ldtreg.h184
-rw-r--r--cfe/cfe/pci/pci_machdep.h35
-rw-r--r--cfe/cfe/pci/pci_subr.c710
-rw-r--r--cfe/cfe/pci/pciconf.c1296
-rw-r--r--cfe/cfe/pci/pcidevs1355
-rw-r--r--cfe/cfe/pci/pcidevs.h1360
-rw-r--r--cfe/cfe/pci/pcidevs_data.h5873
-rw-r--r--cfe/cfe/pci/pcireg.h615
-rw-r--r--cfe/cfe/pci/pcivar.h216
12 files changed, 12557 insertions, 0 deletions
diff --git a/cfe/cfe/pci/cfe_pci.h b/cfe/cfe/pci/cfe_pci.h
new file mode 100644
index 0000000..8780a6f
--- /dev/null
+++ b/cfe/cfe/pci/cfe_pci.h
@@ -0,0 +1,52 @@
+/* *********************************************************************
+ * Broadcom Common Firmware Environment (CFE)
+ *
+ * PCI definitions File: cfe_pci.h
+ *
+ * This file includes other files and defines macros to make
+ * our environment match that of the PCI configuration code
+ *
+ * Author: Mitch Lichtenberg (mpl@broadcom.com)
+ *
+ *********************************************************************
+ *
+ * Copyright 2000,2001,2002,2003
+ * Broadcom Corporation. All rights reserved.
+ *
+ * This software is furnished under license and may be used and
+ * copied only in accordance with the following terms and
+ * conditions. Subject to these conditions, you may download,
+ * copy, install, use, modify and distribute modified or unmodified
+ * copies of this software in source and/or binary form. No title
+ * or ownership is transferred hereby.
+ *
+ * 1) Any source code used, modified or distributed must reproduce
+ * and retain this copyright notice and list of conditions
+ * as they appear in the source file.
+ *
+ * 2) No right is granted to use any trade name, trademark, or
+ * logo of Broadcom Corporation. The "Broadcom Corporation"
+ * name may not be used to endorse or promote products derived
+ * from this software without the prior written permission of
+ * Broadcom Corporation.
+ *
+ * 3) THIS SOFTWARE IS PROVIDED "AS-IS" AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO, ANY IMPLIED
+ * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+ * PURPOSE, OR NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT
+ * SHALL BROADCOM BE LIABLE FOR ANY DAMAGES WHATSOEVER, AND IN
+ * PARTICULAR, BROADCOM SHALL NOT BE LIABLE FOR DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE), EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ ********************************************************************* */
+
+#include "lib_types.h"
+#include "lib_string.h"
+#include "lib_printf.h"
+
+#define panic(x) printf(x)
diff --git a/cfe/cfe/pci/devlist2h.awk b/cfe/cfe/pci/devlist2h.awk
new file mode 100644
index 0000000..1f0b9b4
--- /dev/null
+++ b/cfe/cfe/pci/devlist2h.awk
@@ -0,0 +1,220 @@
+#! /usr/bin/awk -f
+# $NetBSD: devlist2h.awk,v 1.2 1996/01/22 21:08:09 cgd Exp $
+#
+# Copyright (c) 1995, 1996 Christopher G. Demetriou
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. All advertising materials mentioning features or use of this software
+# must display the following acknowledgement:
+# This product includes software developed by Christopher G. Demetriou.
+# 4. The name of the author may not be used to endorse or promote products
+# derived from this software without specific prior written permission
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+BEGIN {
+ nproducts = nvendors = 0
+ dfile="pcidevs_data.h"
+ hfile="pcidevs.h"
+}
+NR == 1 {
+ VERSION = $0
+ gsub("\\$", "", VERSION)
+
+ printf("/*\n") > dfile
+ printf(" * THIS FILE AUTOMATICALLY GENERATED. DO NOT EDIT.\n") \
+ > dfile
+ printf(" *\n") > dfile
+ printf(" * generated from:\n") > dfile
+ printf(" *\t%s\n", VERSION) > dfile
+ printf(" */\n") > dfile
+
+ printf("/*\n") > hfile
+ printf(" * THIS FILE AUTOMATICALLY GENERATED. DO NOT EDIT.\n") \
+ > hfile
+ printf(" *\n") > hfile
+ printf(" * generated from:\n") > hfile
+ printf(" *\t%s\n", VERSION) > hfile
+ printf(" */\n") > hfile
+
+ next
+}
+$1 == "vendor" {
+ nvendors++
+
+ vendorindex[$2] = nvendors; # record index for this name, for later.
+ vendors[nvendors, 1] = $2; # name
+ vendors[nvendors, 2] = $3; # id
+ printf("#define\tPCI_VENDOR_%s\t%s\t", vendors[nvendors, 1],
+ vendors[nvendors, 2]) > hfile
+
+ i = 3; f = 4;
+
+ # comments
+ ocomment = oparen = 0
+ if (f <= NF) {
+ printf("\t/* ") > hfile
+ ocomment = 1;
+ }
+ while (f <= NF) {
+ if ($f == "#") {
+ printf("(") > hfile
+ oparen = 1
+ f++
+ continue
+ }
+ if (oparen) {
+ printf("%s", $f) > hfile
+ if (f < NF)
+ printf(" ") > hfile
+ f++
+ continue
+ }
+ vendors[nvendors, i] = $f
+ printf("%s", vendors[nvendors, i]) > hfile
+ if (f < NF)
+ printf(" ") > hfile
+ i++; f++;
+ }
+ if (oparen)
+ printf(")") > hfile
+ if (ocomment)
+ printf(" */") > hfile
+ printf("\n") > hfile
+
+ next
+}
+$1 == "product" {
+ nproducts++
+
+ products[nproducts, 1] = $2; # vendor name
+ products[nproducts, 2] = $3; # product id
+ products[nproducts, 3] = $4; # id
+ printf("#define\tPCI_PRODUCT_%s_%s\t%s\t", products[nproducts, 1],
+ products[nproducts, 2], products[nproducts, 3]) > hfile
+
+ i=4; f = 5;
+
+ # comments
+ ocomment = oparen = 0
+ if (f <= NF) {
+ printf("\t/* ") > hfile
+ ocomment = 1;
+ }
+ while (f <= NF) {
+ if ($f == "#") {
+ printf("(") > hfile
+ oparen = 1
+ f++
+ continue
+ }
+ if (oparen) {
+ printf("%s", $f) > hfile
+ if (f < NF)
+ printf(" ") > hfile
+ f++
+ continue
+ }
+ products[nproducts, i] = $f
+ printf("%s", products[nproducts, i]) > hfile
+ if (f < NF)
+ printf(" ") > hfile
+ i++; f++;
+ }
+ if (oparen)
+ printf(")") > hfile
+ if (ocomment)
+ printf(" */") > hfile
+ printf("\n") > hfile
+
+ next
+}
+{
+ if ($0 == "")
+ blanklines++
+ print $0 > hfile
+ if (blanklines < 2)
+ print $0 > dfile
+}
+END {
+ # print out the match tables
+
+ printf("\n") > dfile
+
+
+ printf("static const struct pci_knowndev pci_knowndevs[] = {\n") > dfile
+ for (i = 1; i <= nproducts; i++) {
+ printf("\t{\n") > dfile
+ printf("\t PCI_VENDOR_%s, PCI_PRODUCT_%s_%s,\n",
+ products[i, 1], products[i, 1], products[i, 2]) \
+ > dfile
+ printf("\t ") > dfile
+ printf("0") > dfile
+ printf(",\n") > dfile
+
+ vendi = vendorindex[products[i, 1]];
+ printf("\t \"") > dfile
+ j = 3;
+ needspace = 0;
+ while (vendors[vendi, j] != "") {
+ if (needspace)
+ printf(" ") > dfile
+ printf("%s", vendors[vendi, j]) > dfile
+ needspace = 1
+ j++
+ }
+ printf("\",\n") > dfile
+
+ printf("\t \"") > dfile
+ j = 4;
+ needspace = 0;
+ while (products[i, j] != "") {
+ if (needspace)
+ printf(" ") > dfile
+ printf("%s", products[i, j]) > dfile
+ needspace = 1
+ j++
+ }
+ printf("\",\n") > dfile
+ printf("\t},\n") > dfile
+ }
+ for (i = 1; i <= nvendors; i++) {
+ printf("\t{\n") > dfile
+ printf("\t PCI_VENDOR_%s, 0,\n", vendors[i, 1]) \
+ > dfile
+ printf("\t PCI_KNOWNDEV_NOPROD,\n") \
+ > dfile
+ printf("\t \"") > dfile
+ j = 3;
+ needspace = 0;
+ while (vendors[i, j] != "") {
+ if (needspace)
+ printf(" ") > dfile
+ printf("%s", vendors[i, j]) > dfile
+ needspace = 1
+ j++
+ }
+ printf("\",\n") > dfile
+ printf("\t NULL,\n") > dfile
+ printf("\t},\n") > dfile
+ }
+ printf("\t{ 0, 0, 0, NULL, NULL, }\n") > dfile
+ printf("};\n") > dfile
+}
diff --git a/cfe/cfe/pci/ldtinit.c b/cfe/cfe/pci/ldtinit.c
new file mode 100644
index 0000000..26025af
--- /dev/null
+++ b/cfe/cfe/pci/ldtinit.c
@@ -0,0 +1,641 @@
+/* *********************************************************************
+ * Broadcom Common Firmware Environment (CFE)
+ *
+ * LDT Fabric Initialization File: ldtinit.c
+ *
+ *********************************************************************
+ *
+ * Copyright 2001,2002,2003
+ * Broadcom Corporation. All rights reserved.
+ *
+ * This software is furnished under license and may be used and
+ * copied only in accordance with the following terms and
+ * conditions. Subject to these conditions, you may download,
+ * copy, install, use, modify and distribute modified or unmodified
+ * copies of this software in source and/or binary form. No title
+ * or ownership is transferred hereby.
+ *
+ * 1) Any source code used, modified or distributed must reproduce
+ * and retain this copyright notice and list of conditions
+ * as they appear in the source file.
+ *
+ * 2) No right is granted to use any trade name, trademark, or
+ * logo of Broadcom Corporation. The "Broadcom Corporation"
+ * name may not be used to endorse or promote products derived
+ * from this software without the prior written permission of
+ * Broadcom Corporation.
+ *
+ * 3) THIS SOFTWARE IS PROVIDED "AS-IS" AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO, ANY IMPLIED
+ * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+ * PURPOSE, OR NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT
+ * SHALL BROADCOM BE LIABLE FOR ANY DAMAGES WHATSOEVER, AND IN
+ * PARTICULAR, BROADCOM SHALL NOT BE LIABLE FOR DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE), EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ ********************************************************************* */
+/*
+ * Copyright 2001,2002
+ * Broadcom Corporation. All rights reserved.
+ *
+ * This software is furnished under license and may be used and
+ * copied only in accordance with the following terms and
+ * conditions. Subject to these conditions, you may download,
+ * copy, install, use, modify and distribute modified or unmodified
+ * copies of this software in source and/or binary form. No title
+ * or ownership is transferred hereby.
+ *
+ * 1) Any source code used, modified or distributed must reproduce
+ * and retain this copyright notice and list of conditions as
+ * they appear in the source file.
+ *
+ * 2) No right is granted to use any trade name, trademark, or
+ * logo of Broadcom Corporation. Neither the "Broadcom
+ * Corporation" name nor any trademark or logo of Broadcom
+ * Corporation may be used to endorse or promote products
+ * derived from this software without the prior written
+ * permission of Broadcom Corporation.
+ *
+ * 3) THIS SOFTWARE IS PROVIDED "AS-IS" AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO, ANY IMPLIED
+ * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+ * PURPOSE, OR NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT
+ * SHALL BROADCOM BE LIABLE FOR ANY DAMAGES WHATSOEVER, AND IN
+ * PARTICULAR, BROADCOM SHALL NOT BE LIABLE FOR DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE), EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * ldtinit.c: generic LDT fabric initialization and capability
+ * management.
+ */
+
+#include "lib_types.h"
+#include "lib_printf.h"
+#include "cfe_timer.h"
+
+#include "pcivar.h"
+#include "pcireg.h"
+#include "ldtreg.h"
+
+/* Write-to-clear bit masks */
+
+#if CFG_LDT_REV_017 /* XXX not really the right test */
+#define LDT_LINKCTRL_WC (LDT_LINKCTRL_CRCERROR_MASK)
+#else
+#define LDT_LINKCTRL_WC (LDT_LINKCTRL_LINKFAIL | LDT_LINKCTRL_CRCERROR_MASK)
+#endif
+
+
+/* LDT capability lookup. */
+
+unsigned
+pci_find_ldt_cap (pcitag_t tag, int secondary)
+{
+ pcireg_t cpr;
+ pcireg_t cr;
+ int offset, prev;
+ int type;
+
+ cpr = pci_conf_read(tag, PCI_CAPLISTPTR_REG);
+ offset = PCI_CAPLIST_PTR(cpr) &~ 0x3;
+ prev = 0;
+
+ while (offset != 0 && offset != prev) {
+#if (LDT_DEBUG > 1)
+ pci_tagprintf(tag, "read cap offset %04x\n", offset);
+#endif
+ cr = pci_conf_read(tag, offset);
+ if (PCI_CAPLIST_CAP(cr) == PCI_CAP_LDT) {
+ type = LDT_COMMAND_TYPE(cr);
+ if (secondary && type == LDT_COMMAND_TYPE_HOST)
+ return offset;
+ if (!secondary && type == LDT_COMMAND_TYPE_SLAVE)
+ return offset;
+ }
+ prev = offset;
+ offset = PCI_CAPLIST_NEXT(cr) &~ 0x3;
+ }
+ return 0;
+}
+
+
+/* LDT utility functions, mostly for capabilities. */
+
+static pcireg_t
+ldt_get_link(pcitag_t tag, int offset, int index)
+{
+ return pci_conf_read(tag, offset + LDT_LINK_OFF(index));
+}
+
+static void
+ldt_set_link(pcitag_t tag, int offset, int index, pcireg_t lr)
+{
+ pci_conf_write(tag, offset + LDT_LINK_OFF(index), lr);
+}
+
+#if (LDT_DEBUG != 0)
+static void
+ldt_show_cap(pcitag_t tag, int offset, int secondary)
+{
+ printf(" Cmd %08x", pci_conf_read(tag, offset));
+ offset += 4;
+ printf(" Lnk0 %08x", pci_conf_read(tag, offset));
+ offset += 4;
+ if (!secondary) {
+ printf(" Lnk1 %08x", pci_conf_read(tag, offset));
+ offset += 4;
+ }
+ printf(" Freq0 %08x", pci_conf_read(tag, offset));
+ offset += 4;
+ if (!secondary) {
+ printf(" Freq1 %08x", pci_conf_read(tag, offset));
+ offset += 4;
+ }
+ printf("\n");
+}
+#else
+static void
+ldt_show_cap(pcitag_t tag, int offset, int secondary)
+{
+}
+#endif
+
+
+/* LDT bus initialization and sizing. */
+
+/* We expect the entire chain to be ready at approximately the same
+ time, but we add some delay here for possible node-to-node
+ differences.
+
+ Empirically, neither InitDone nor LinkFail is reported for an
+ unconnected link. Thus we do not expect the outgoing link of a
+ terminating tunnel node to become ready.
+
+ Also, CRC errors are observed to occur with InitDone, so link
+ errors do not necessarily force LinkFail.
+*/
+
+static int
+ldt_wait_ready (pcitag_t tag, int offset, int index)
+{
+ int count;
+ pcireg_t lr;
+ int linkerr;
+
+ linkerr = 0;
+ count = 0x10000; /* empirical */
+ do {
+ if (--count == 0)
+ return 1;
+ lr = ldt_get_link(tag, offset, index);
+ if ((lr & (LDT_LINKCTRL_LINKFAIL | LDT_LINKCTRL_CRCERROR_MASK)) != 0)
+ linkerr = 1;
+ } while ((lr & (LDT_LINKCTRL_INITDONE | LDT_LINKCTRL_LINKFAIL)) == 0);
+
+ return linkerr;
+}
+
+static void
+ldt_end_chain (pcitag_t tag, int offset, int index)
+{
+ pcireg_t lr, t;
+
+ lr = ldt_get_link(tag, offset, index);
+ lr |= LDT_LINKCTRL_EOC;
+ ldt_set_link(tag, offset, index, lr);
+ lr |= LDT_LINKCTRL_TXOFF;
+ ldt_set_link(tag, offset, index, lr);
+ t = ldt_get_link(tag, offset, index); /* push */
+}
+
+
+static uint16_t
+ldt_freq_cap (pcitag_t tag, int offset, int index)
+{
+ pcireg_t cmd, cr;
+ uint16_t freq_cap;
+
+ cmd = pci_conf_read(tag, offset + LDT_COMMAND_CAP_OFF);
+ if (LDT_COMMAND_TYPE(cmd) == LDT_COMMAND_TYPE_HOST) {
+ cr = pci_conf_read(tag, offset + LDT_FREQ_OFF);
+ if (LDT_REVISION_ID(cr) == LDT_REV_017) {
+ /* REV 0.17 has restricted support for setting
+ frequencies. We assume that this is the host bridge in
+ pseudo-1.0x mode, in which case the desired maximum
+ frequency was left in the LDT_FREQ register and all
+ lower frequencies are supported. */
+ freq_cap = (1 << (LDT_LINKFREQ(cr) + 1)) - 1;
+ } else {
+ freq_cap = LDT_LINKFREQ_CAP(cr);
+ }
+ } else {
+ cr = pci_conf_read(tag, offset + LDT_FREQ0_OFF);
+ if (LDT_REVISION_ID(cr) == LDT_REV_017) {
+ /* REV 0.17 has restricted support for setting frequencies.
+ This is not the host bridge. What to do? XXX */
+ freq_cap = (1 << LDT_FREQ_200);
+ } else {
+ cr = pci_conf_read(tag, offset + LDT_FREQn_OFF(index));
+ freq_cap = LDT_LINKFREQ_CAP(cr);
+ }
+ }
+ return freq_cap;
+}
+
+static uint8_t
+ldt_max_freq (uint16_t freq_cap)
+{
+ unsigned ldt_freq;
+
+ /* 200 MHz (encoded as 1 << 0) is required for all devices */
+ freq_cap |= (1 << LDT_FREQ_200);
+
+ ldt_freq = 0;
+
+ while (freq_cap != 1) {
+ ldt_freq++;
+ freq_cap >>= 1;
+ }
+
+ return (ldt_freq >= LDT_FREQ_200 && ldt_freq <= LDT_FREQ_1000) ?
+ ldt_freq : LDT_FREQ_200;
+}
+
+static void
+ldt_set_freq (pcitag_t tag, int offset, int index, uint8_t freq)
+{
+ pcireg_t cmd, cr;
+
+ cmd = pci_conf_read(tag, offset + LDT_COMMAND_CAP_OFF);
+ if (LDT_COMMAND_TYPE(cmd) == LDT_COMMAND_TYPE_HOST) {
+ cr = pci_conf_read(tag, offset + LDT_FREQ_OFF);
+ cr &=~ LDT_LINKFREQ_MASK;
+ cr |= (freq << LDT_LINKFREQ_SHIFT);
+ pci_conf_write(tag, offset + LDT_FREQ_OFF, cr);
+ } else {
+ cr = pci_conf_read(tag, offset + LDT_FREQn_OFF(index));
+ cr &=~ LDT_LINKFREQ_MASK;
+ cr |= (freq << LDT_LINKFREQ_SHIFT);
+ pci_conf_write(tag, offset + LDT_FREQn_OFF(index), cr);
+ }
+#if (LDT_DEBUG > 1)
+ pci_tagprintf(tag, "set link %d freq = %02x\n", index, freq);
+#endif
+}
+
+
+/* LDT fabric initialization. See LDT Spec, Section 13.3. */
+static int
+ldt_fabric_init (pcitag_t br_tag, int br_offset, int bus, pci_flags_t flags)
+{
+ int next_free_id;
+ pcitag_t prev_tag, tag;
+ int offset, prev_offset;
+ int link, prev_link;
+ uint16_t prev_cap;
+ pcireg_t cmd, lr, id, t;
+ int double_ended;
+ int linkerr;
+
+ prev_tag = br_tag; prev_offset = br_offset; prev_link = 0;
+ /* Since there is no direct peer-to-peer traffic, there is no
+ point in configuring a downstream link with more capability
+ than the current one. */
+ prev_cap = ldt_freq_cap(br_tag, br_offset, 0);
+
+ next_free_id = 1;
+ double_ended = 0;
+
+#if (LDT_DEBUG != 0)
+ printf("Link sizing for bus %d, bridge freq cap %04x\n",
+ bus, ldt_freq_cap(br_tag, br_offset, 0));
+#endif
+ for (;;) {
+
+ tag = pci_make_tag(bus, 0, 0);
+
+ id = pci_conf_read(tag, PCI_ID_REG);
+#if (LDT_DEBUG > 1)
+ pci_tagprintf(tag, "ldt_fabric_init: id register %08x\n", id);
+#endif
+ if (PCI_VENDOR(id) == 0xffff) {
+ /* The incoming link had InitDone set, but we got an NXA
+ trying to read the vendor id. Either the reverse link
+ is broken or we have found an LDT-Lite node. For now,
+ assume the latter. Since an LDT-Lite device cannot be
+ a tunnel, assume the chain terminates here. */
+ pci_tagprintf(tag, "assumed LDT-LITE device (virtual unit %d)\n",
+ next_free_id);
+ break;
+ }
+
+ offset = pci_find_ldt_cap(tag, LDT_PRIMARY);
+#if (LDT_DEBUG > 1)
+ pci_tagprintf(tag, "ldt_fabric_init: offset %08x\n", offset);
+#endif
+ if (offset == 0) {
+ /* There is no primary interface; we must have found a host. */
+ offset = pci_find_ldt_cap(tag, LDT_SECONDARY);
+ if (offset != 0) {
+ lr = pci_conf_read(tag, offset + LDT_COMMAND_CAP_OFF);
+ lr |= LDT_COMMAND_DOUBLE_ENDED;
+ pci_conf_write(tag, offset + LDT_COMMAND_CAP_OFF, lr);
+ double_ended = 1;
+ }
+ break;
+ }
+
+ /* Otherwise, we have the primary interface. */
+
+ /* Rewrite the old value to set master host bit. */
+ cmd = pci_conf_read(tag, offset + LDT_COMMAND_CAP_OFF);
+#if (LDT_DEBUG > 1)
+ pci_tagprintf(tag, "ldt_fabric_init: set master host\n");
+#endif
+ pci_conf_write(tag, offset + LDT_COMMAND_CAP_OFF, cmd);
+ cmd = pci_conf_read(tag, offset + LDT_COMMAND_CAP_OFF); /* push */
+
+ id = pci_conf_read(tag, PCI_ID_REG);
+
+ /* Update the unit id, gingerly. */
+ cmd &= ~LDT_COMMAND_UNIT_ID_MASK;
+ cmd |= (next_free_id << LDT_COMMAND_UNIT_ID_SHIFT);
+#if (LDT_DEBUG != 0)
+ pci_tagprintf(tag, "ldt_fabric_init: set unit id %d\n", next_free_id);
+#endif
+ if (!pci_conf_write_acked(tag, offset + LDT_COMMAND_CAP_OFF, cmd)) {
+ pci_tagprintf(tag, "no ack of id update to %d\n", next_free_id);
+ }
+
+ /* The unit id just changed. Update the tag */
+ tag = pci_make_tag(bus, next_free_id, 0);
+#if (LDT_DEBUG > 1)
+ pci_tagprintf(tag, "ldt_fabric_init: check unit id\n");
+#endif
+ t = pci_conf_read(tag, PCI_ID_REG);
+ if (t != id) {
+ pci_tagprintf(tag, "id mismatch: old %08x, new %08x\n", id, t);
+ }
+
+ next_free_id += LDT_COMMAND_UNIT_COUNT(cmd);
+
+ link = LDT_COMMAND_MASTER_HOST(cmd); /* Upstream link index */
+
+ /* LDT Rev 0.17 does not support frequency updates. */
+ if ((flags & PCI_FLG_LDT_REV_017) == 0) {
+ /* Find common frequency for upstream link. */
+ uint16_t link_cap, freq_cap_in, freq_cap_out;
+ uint8_t ldt_freq;
+
+ freq_cap_out = ldt_freq_cap(prev_tag, prev_offset, prev_link);
+ freq_cap_in = ldt_freq_cap(tag, offset, link);
+ link_cap = freq_cap_in & freq_cap_out;
+ ldt_freq = ldt_max_freq(link_cap & prev_cap);
+
+#if (LDT_DEBUG != 0)
+ pci_tagprintf(tag, "set freq %d\n", ldt_freq);
+#endif
+ /* Set up frequency registers, next warm reset installs. */
+ ldt_set_freq(prev_tag, prev_offset, prev_link, ldt_freq);
+ ldt_set_freq(tag, offset, link, ldt_freq);
+
+ prev_cap &= link_cap;
+ }
+
+ link ^= 1; /* Downstream */
+ linkerr = ldt_wait_ready(tag, offset, link);
+ lr = ldt_get_link(tag, offset, link);
+ ldt_set_link(tag, offset, link, lr | LDT_LINKCTRL_WC);
+
+#if (LDT_DEBUG != 0)
+ pci_tagprintf(tag, "node: up %d down %d:\n", link ^ 1, link);
+#endif
+ ldt_show_cap(tag, offset, LDT_PRIMARY);
+
+ if (linkerr || next_free_id > 0x1f) {
+ /* No downstream link or too many devices, set end of chain */
+ ldt_end_chain(tag, offset, link);
+ break;
+ }
+
+ prev_tag = tag; prev_offset = offset; prev_link = link;
+ }
+
+ return double_ended;
+}
+
+
+static int
+ldt_fabric_reinit (int bus)
+{
+ int next_free_id;
+ pcitag_t tag;
+ int offset;
+ int link;
+ pcireg_t cmd, lr, id, t;
+ int linkerr;
+
+ next_free_id = 1;
+
+#if (LDT_DEBUG != 0)
+ printf("Link resizing for bus %d\n", bus);
+#endif
+ for (;;) {
+
+ tag = pci_make_tag(bus, 0, 0);
+
+ id = pci_conf_read(tag, PCI_ID_REG);
+ if (PCI_VENDOR(id) == 0xffff) {
+ /* Per the init pass, assume this indicates a link to an
+ LDT-Lite node, and the chain terminates here. */
+ break;
+ }
+
+ offset = pci_find_ldt_cap(tag, LDT_PRIMARY);
+ if (offset == 0) {
+ /* There is no primary interface; we must have found a host. */
+ offset = pci_find_ldt_cap(tag, LDT_SECONDARY);
+ if (offset != 0) {
+ lr = pci_conf_read(tag, offset + LDT_COMMAND_CAP_OFF);
+ lr |= LDT_COMMAND_DOUBLE_ENDED;
+ pci_conf_write(tag, offset + LDT_COMMAND_CAP_OFF, lr);
+ }
+ break;
+ }
+
+ /* Otherwise, we have the primary interface. */
+
+ /* Rewrite the old value to set master host bit. */
+ cmd = pci_conf_read(tag, offset + LDT_COMMAND_CAP_OFF);
+ pci_conf_write(tag, offset + LDT_COMMAND_CAP_OFF, cmd);
+ cmd = pci_conf_read(tag, offset + LDT_COMMAND_CAP_OFF);
+
+ id = pci_conf_read(tag, PCI_ID_REG);
+
+ /* (Re)update the unit id. See above. */
+ cmd &= ~LDT_COMMAND_UNIT_ID_MASK;
+ cmd |= (next_free_id << LDT_COMMAND_UNIT_ID_SHIFT);
+ if (!pci_conf_write_acked(tag, offset + LDT_COMMAND_CAP_OFF, cmd)) {
+ pci_tagprintf(tag, "no ack of id update to %d\n", next_free_id);
+ }
+
+ /* The unit id just changed. Update the tag */
+ tag = pci_make_tag(bus, next_free_id, 0);
+ t = pci_conf_read(tag, PCI_ID_REG); /* for good measure */
+ if (t != id) {
+ pci_tagprintf(tag, "id mismatch: old %08x, new %08x\n", id, t);
+ }
+
+ next_free_id += LDT_COMMAND_UNIT_COUNT(cmd);
+
+ link = LDT_COMMAND_MASTER_HOST(cmd); /* Upstream link index */
+ link ^= 1; /* Downstream */
+
+ linkerr = ldt_wait_ready(tag, offset, link);
+
+ lr = ldt_get_link(tag, offset, link);
+ ldt_set_link(tag, offset, link, lr | LDT_LINKCTRL_WC);
+#if (LDT_DEBUG > 1)
+ pci_tagprintf(tag, "node: up %d down %d:\n", link ^ 1, link);
+ ldt_show_cap(tag, offset, LDT_PRIMARY);
+#endif
+ if (linkerr || next_free_id > 0x1f) {
+ /* No downstream link or too many devices, set end of chain */
+ ldt_end_chain(tag, offset, link);
+ break;
+ }
+ }
+ return next_free_id - 1;
+}
+
+
+/* LDT link reset (warm or cold as set by caller) */
+
+void
+ldt_link_reset (pcitag_t tag, int delay)
+{
+ pcireg_t brctl;
+
+ /* This code may be necessary for LDT buses behind bridges (none
+ of which yet exist) but seems to be a bad idea for the SB-1250
+ LDT bus in pass 1 parts. Note that if we do reset, we must
+ delay to give any attached devices a chance to (re)initialize
+ per the PCI spec. */
+
+ /* Attempt a Secondary Bus Reset. */
+ brctl = pci_conf_read(tag, PPB_BRCTL_INTERRUPT_REG);
+ brctl |= PPB_BRCTL_SECONDARY_RESET;
+ pci_conf_write(tag, PPB_BRCTL_INTERRUPT_REG, brctl);
+
+ brctl = pci_conf_read(tag, PPB_BRCTL_INTERRUPT_REG);
+ if ((brctl & PPB_BRCTL_SECONDARY_RESET) != 0) {
+ int i;
+ /* Bit can be written, assume soft reset is implemented. */
+ brctl &=~ PPB_BRCTL_SECONDARY_RESET;
+ pci_conf_write(tag, PPB_BRCTL_INTERRUPT_REG, brctl);
+
+ /* Add some delay (duration is a guess) */
+ for (i = 0; i < delay; i++)
+ (void)pci_conf_read(tag, PPB_BRCTL_INTERRUPT_REG);
+ /* Alternatively, wait for LinkFail or InitDone. */
+ }
+}
+
+
+/* LDT bridge and fabric initialization for a secondary chain */
+
+int
+ldt_chain_init (pcitag_t tag, int bus, pci_flags_t flags)
+{
+ int offset;
+ int double_ended;
+ int linkerr;
+ pcireg_t cr, lr;
+ int ndev, no_probe;
+
+#if 0
+ /* This code may be necessary for LDT buses behind bridges (none
+ of which yet exist) but seems to be a bad idea for the SB-1250
+ LDT bus in pass 1 parts. Note that if we do reset, we must
+ delay to give any attached devices a chance to (re)initialize
+ per the PCI spec. */
+
+ /* Attempt a Secondary Bus Reset. */
+ ldt_link_reset(tag, 100);
+#endif /* 0 */
+
+ /* To avoid a chip erratum, we must prevent Type 0 configuration
+ probes that get NXAs on a double hosted chain. */
+ no_probe = 0;
+
+ offset = pci_find_ldt_cap(tag, LDT_SECONDARY);
+ if (offset != 0) {
+ linkerr = ldt_wait_ready(tag, offset, 0);
+
+#if (LDT_DEBUG > 1)
+ pci_tagprintf(tag, "bridge secondary:\n");
+ ldt_show_cap(tag, offset, LDT_SECONDARY);
+#endif
+ if (linkerr) {
+ pci_tagprintf(tag, "secondary bad or never ready\n");
+ } else {
+ lr = ldt_get_link(tag, offset, 0);
+ if ((lr & LDT_LINKCTRL_INITDONE) != 0)
+ double_ended = ldt_fabric_init(tag, offset, bus, flags);
+ else {
+ ldt_end_chain(tag, offset, 0);
+ double_ended = 0;
+ }
+ cr = pci_conf_read(tag, offset + LDT_COMMAND_CAP_OFF);
+ if (double_ended)
+ cr |= LDT_COMMAND_DOUBLE_ENDED;
+ else
+ cr &=~ LDT_COMMAND_DOUBLE_ENDED;
+ pci_conf_write(tag, offset + LDT_COMMAND_CAP_OFF, cr);
+
+ /* Rev 0.17 does not support dynamic link resizing. */
+ if ((flags & PCI_FLG_LDT_REV_017) == 0) {
+ /* Issue a warm reset to update link frequencies. */
+ cr = pci_conf_read(tag, offset + LDT_COMMAND_CAP_OFF);
+ cr |= LDT_COMMAND_WARM_RESET;
+ pci_conf_write(tag, offset + LDT_COMMAND_CAP_OFF, cr);
+ cr = pci_conf_read(tag, offset + LDT_COMMAND_CAP_OFF);
+ ldt_link_reset(tag, 100);
+ ldt_wait_ready(tag, offset, 0);
+
+#if (LDT_DEBUG > 1)
+ pci_tagprintf(tag, "bridge secondary:\n");
+ ldt_show_cap(tag, offset, LDT_SECONDARY);
+#endif
+ /* After reset, let secondary devices reinitialize. */
+ cfe_sleep(CFE_HZ/2);
+
+ ndev = ldt_fabric_reinit(bus);
+
+ if (double_ended) {
+ cr = pci_conf_read(tag, offset + LDT_COMMAND_CAP_OFF);
+ cr |= LDT_COMMAND_DOUBLE_ENDED;
+ pci_conf_write(tag, offset + LDT_COMMAND_CAP_OFF, cr);
+
+ /* Bug workaround -- don't scan simple dual-hosted chain */
+ if (ndev == 0)
+ no_probe = 1;
+ }
+ }
+ }
+ }
+
+ return no_probe;
+}
diff --git a/cfe/cfe/pci/ldtreg.h b/cfe/cfe/pci/ldtreg.h
new file mode 100644
index 0000000..140effe
--- /dev/null
+++ b/cfe/cfe/pci/ldtreg.h
@@ -0,0 +1,184 @@
+/*
+ * Copyright 2000,2001
+ * Broadcom Corporation. All rights reserved.
+ *
+ * This software is furnished under license and may be used and
+ * copied only in accordance with the following terms and
+ * conditions. Subject to these conditions, you may download,
+ * copy, install, use, modify and distribute modified or unmodified
+ * copies of this software in source and/or binary form. No title
+ * or ownership is transferred hereby.
+ *
+ * 1) Any source code used, modified or distributed must reproduce
+ * and retain this copyright notice and list of conditions as
+ * they appear in the source file.
+ *
+ * 2) No right is granted to use any trade name, trademark, or
+ * logo of Broadcom Corporation. Neither the "Broadcom
+ * Corporation" name nor any trademark or logo of Broadcom
+ * Corporation may be used to endorse or promote products
+ * derived from this software without the prior written
+ * permission of Broadcom Corporation.
+ *
+ * 3) THIS SOFTWARE IS PROVIDED "AS-IS" AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO, ANY IMPLIED
+ * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+ * PURPOSE, OR NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT
+ * SHALL BROADCOM BE LIABLE FOR ANY DAMAGES WHATSOEVER, AND IN
+ * PARTICULAR, BROADCOM SHALL NOT BE LIABLE FOR DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE), EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _LDTREG_H_
+#define _LDTREG_H_
+
+/*
+ * LDT capability register definitions and macros.
+ * Derived from Revison 0.17 of the LDT (now HyperTransport)
+ * Specification with some 1.02/1.03 features.
+ *
+ * Note: Register and field definitions assume 32-bit register accesses.
+ */
+
+/*
+ * LDT Capability registers (identified by offsets within the capability)
+ */
+
+/*
+ * Command Register; contains command and capability fields.
+ */
+#define LDT_COMMAND_CAP_OFF 0x00
+
+#define LDT_CAP_ID_MASK 0x000000ff
+#define LDT_CAP_ID_SHIFT 0
+#define LDT_CAP_PTR_MASK 0x0000ff00
+#define LDT_CAP_PTR_SHIFT 8
+
+#define LDT_COMMAND_MASK 0xffff0000
+#define LDT_COMMAND_SHIFT 16
+#define LDT_COMMAND(cmd) \
+ (((cmd) & LDT_COMMAND_MASK) >> LDT_COMMAND_SHIFT)
+#define LDT_COMMAND_TYPE_MASK 0xe0000000
+#define LDT_COMMAND_TYPE_SHIFT (16+13)
+#define LDT_COMMAND_TYPE(cmd) \
+ (((cmd) & LDT_COMMAND_TYPE_MASK) >> LDT_COMMAND_TYPE_SHIFT)
+#define LDT_COMMAND_TYPE_SLAVE 0x0
+#define LDT_COMMAND_TYPE_HOST 0x1
+#define LDT_COMMAND_TYPE_IDC 0x4
+#define LDT_COMMAND_TYPE_AMAP 0x5
+/* Following for 1.0x only */
+#define LDT_COMMAND_DROP_ON_INIT 0x10000000
+
+/*
+ * An LDT capability for type Slave (aka Primary, aka "tunnel") consists
+ * of a Command register, two Link registers, and two Freq/Rev registers.
+ */
+/* Slave/Primary commands */
+#define LDT_COMMAND_UNIT_ID_MASK 0x001f0000
+#define LDT_COMMAND_UNIT_ID_SHIFT (16+0)
+#define LDT_COMMAND_UNIT_ID(cmd) \
+ (((cmd) & LDT_COMMAND_UNIT_ID_MASK) >> LDT_COMMAND_UNIT_ID_SHIFT)
+#define LDT_COMMAND_UNIT_COUNT_MASK 0x03e00000
+#define LDT_COMMAND_UNIT_COUNT_SHIFT (16+5)
+#define LDT_COMMAND_UNIT_COUNT(cmd) \
+ (((cmd) & LDT_COMMAND_UNIT_COUNT_MASK) >> LDT_COMMAND_UNIT_COUNT_SHIFT)
+#define LDT_COMMAND_MASTER_HOST_MASK 0x04000000
+#define LDT_COMMAND_MASTER_HOST(cmd) \
+ (((cmd) & LDT_COMMAND_MASTER_HOST_MASK) ? 1 : 0)
+#define LDT_COMMAND_DEFAULT_DIRECTION_MASK 0x08000000
+#define LDT_COMMAND_DEFAULT_DIRECTION(cmd) \
+ (((cmd) & LDT_COMMAND_DEFAULT_DIRECTION_MASK) ? 1 : 0)
+
+/*
+ * An LDT capability for type Host (aka Secondary) consists of a
+ * Command register, a single Link register, and a Freq/Rev register.
+ */
+/* Host/Secondary command fields */
+#define LDT_COMMAND_WARM_RESET 0x00010000
+#define LDT_COMMAND_DOUBLE_ENDED 0x00020000
+#define LDT_COMMAND_DEVICE_NUMBER_MASK 0x007c0000
+#define LDT_COMMAND_DEVICE_NUMBER_SHIFT (16+2)
+/* Following for 1.0x only */
+#define LDT_COMMAND_CHAIN_SIDE 0x00800000
+#define LDT_COMMAND_HOST_HIDE 0x01000000
+#define LDT_COMMAND_ACT_AS_SLAVE 0x02000000
+#define LDT_COMMAND_INBOUND_EOC_ERROR 0x04000000
+
+
+/*
+ * Link Register; contains control and config fields.
+ */
+#define LDT_LINK_OFF(n) (0x04 + ((n)<<2))
+
+#define LDT_LINKCTRL_MASK 0x0000ffff
+#define LDT_LINKCTRL_SHIFT 0
+#define LDT_LINKCTRL(cr) \
+ (((cr) & LDT_LINKCTRL_MASK) >> LDT_LINKCTRL_SHIFT)
+#define LDT_LINKCTRL_CFLE 0x00000002
+#define LDT_LINKCTRL_CST 0x00000004
+#define LDT_LINKCTRL_CFE 0x00000008
+#define LDT_LINKCTRL_LINKFAIL 0x00000010
+#define LDT_LINKCTRL_INITDONE 0x00000020
+#define LDT_LINKCTRL_EOC 0x00000040
+#define LDT_LINKCTRL_TXOFF 0x00000080
+#define LDT_LINKCTRL_CRCERROR_MASK 0x00000f00
+#define LDT_LINKCTRL_CRCERROR_SHIFT 8
+#define LDT_LINKCTRL_ISOCEN 0x00001000
+#define LDT_LINKCTRL_LSEN 0x00002000
+/* Following for 1.0x only */
+#define LDT_LINKCTRL_EXTCTL 0x00004000
+
+#define LDT_LINKCFG_MASK 0xffff0000
+#define LDT_LINKCFG_SHIFT 16
+#define LDT_LINKCFG(cr) \
+ (((cr) & LDT_LINKCFG_MASK) >> LDT_LINKCFG_SHIFT)
+#define LDT_LINKCFG_MAX_WIDTH_IN(cr) \
+ (((cr) >> (16+0)) & 0xf)
+#define LDT_LINKCFG_MAX_WIDTH_OUT(cr) \
+ (((cr) >> (16+4)) & 0xf)
+#define LDT_LINKCFG_WIDTH_IN(cr) \
+ (((cr) >> (16+8)) & 0xf)
+#define LDT_LINKCFG_WIDTH_OUT(cr) \
+ (((cr) >> (16+12)) & 0xf)
+
+
+/*
+ * Link Frequency Register; contains version and frequency fields.
+ */
+#define LDT_LINKFREQ_CAP(cr) \
+ (((cr) >> 16) & 0xffff)
+
+#define LDT_LINKFREQ_MASK 0x00000f00
+#define LDT_LINKFREQ_SHIFT 8
+#define LDT_LINKFREQ(cr) \
+ (((cr) >> 8) & 0x0f)
+
+#define LDT_REVISION_ID(cr) \
+ (((cr) >> 0) & 0xff)
+
+#define LDT_REV_017 0x11
+#define LDT_REV_102 0x22
+
+/* Slave/Primary offsets */
+#define LDT_FREQ0_OFF 0x0c
+#define LDT_FREQ1_OFF 0x10
+#define LDT_FREQn_OFF(n) (0x0c + ((n)<<2))
+
+/* Host/Secondary offsets */
+#define LDT_FREQ_OFF 0x08
+
+#define LDT_FREQ_200 0x00
+#define LDT_FREQ_300 0x01
+#define LDT_FREQ_400 0x02
+#define LDT_FREQ_500 0x03
+#define LDT_FREQ_600 0x04
+#define LDT_FREQ_800 0x05
+#define LDT_FREQ_1000 0x06
+
+#endif /* _LDTREG_H_ */
diff --git a/cfe/cfe/pci/pci_machdep.h b/cfe/cfe/pci/pci_machdep.h
new file mode 100644
index 0000000..c8b57ec
--- /dev/null
+++ b/cfe/cfe/pci/pci_machdep.h
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2001,2002 SiByte, Inc. All rights reserved.
+ */
+
+#ifndef _PCI_MACHDEP_H_
+#define _PCI_MACHDEP_H_
+
+/*
+ * Machine-specific definitions for PCI autoconfiguration.
+ *
+ * See the comments in pci_machdep.c for more explanation.
+ */
+
+#include "lib_types.h"
+
+/*
+ * Address types, as integers.
+ */
+
+typedef uint32_t pci_addr_t;
+typedef uint64_t phys_addr_t; /* ZBbus physical addresses. */
+
+/*
+ * Configuration tag; created from a {bus,device,function} triplet by
+ * pci_make_tag(), and passed to pci_conf_read() and pci_conf_write().
+ */
+typedef uint32_t pcitag_t;
+
+/*
+ * Type of a value read from or written to a configuration register.
+ * Always 32 bits.
+ */
+typedef uint32_t pcireg_t;
+
+#endif /* _PCI_MACHDEP_H_ */
diff --git a/cfe/cfe/pci/pci_subr.c b/cfe/cfe/pci/pci_subr.c
new file mode 100644
index 0000000..56c65b1
--- /dev/null
+++ b/cfe/cfe/pci/pci_subr.c
@@ -0,0 +1,710 @@
+/*
+ * Copyright (c) 1997 Zubin D. Dittia. All rights reserved.
+ * Copyright (c) 1995, 1996, 1998
+ * Christopher G. Demetriou. All rights reserved.
+ * Copyright (c) 1994 Charles M. Hannum. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Charles M. Hannum.
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * PCI autoconfiguration support functions.
+ */
+
+#include "lib_types.h"
+#include "lib_string.h"
+#include "lib_printf.h"
+#ifndef PCIVERBOSE
+# if CFG_MINIMAL_SIZE
+# define PCIVERBOSE 0
+# else
+# define PCIVERBOSE 1
+# endif
+#endif
+
+#include "pcireg.h"
+#include "pcivar.h"
+
+const char *pci_findvendor(pcireg_t id_reg);
+
+static void pci_conf_print_ids(pcireg_t rval, const char *prefix);
+static int pci_conf_print_bar (pcitag_t,
+ const pcireg_t *, int, const char *, int, int);
+
+/*
+ * Descriptions of known PCI classes and subclasses.
+ *
+ * Subclasses are described in the same way as classes, but have a
+ * NULL subclass pointer.
+ */
+struct pci_class {
+ char *name;
+ int val; /* as wide as pci_{,sub}class_t */
+ struct pci_class *subclasses;
+};
+
+struct pci_class pci_subclass_prehistoric[] = {
+ { "miscellaneous", PCI_SUBCLASS_PREHISTORIC_MISC, },
+ { "VGA", PCI_SUBCLASS_PREHISTORIC_VGA, },
+ { 0 }
+};
+
+struct pci_class pci_subclass_mass_storage[] = {
+ { "SCSI", PCI_SUBCLASS_MASS_STORAGE_SCSI, },
+ { "IDE", PCI_SUBCLASS_MASS_STORAGE_IDE, },
+ { "floppy", PCI_SUBCLASS_MASS_STORAGE_FLOPPY, },
+ { "IPI", PCI_SUBCLASS_MASS_STORAGE_IPI, },
+ { "RAID", PCI_SUBCLASS_MASS_STORAGE_RAID, },
+ { "miscellaneous", PCI_SUBCLASS_MASS_STORAGE_MISC, },
+ { 0 },
+};
+
+struct pci_class pci_subclass_network[] = {
+ { "ethernet", PCI_SUBCLASS_NETWORK_ETHERNET, },
+ { "token ring", PCI_SUBCLASS_NETWORK_TOKENRING, },
+ { "FDDI", PCI_SUBCLASS_NETWORK_FDDI, },
+ { "ATM", PCI_SUBCLASS_NETWORK_ATM, },
+ { "ISDN", PCI_SUBCLASS_NETWORK_ISDN, },
+ { "WorldFip", PCI_SUBCLASS_NETWORK_WORLDFIP, },
+ { "PCMIG MultiComp", PCI_SUBCLASS_NETWORK_PCIMGMULTICOMP, },
+ { "miscellaneous", PCI_SUBCLASS_NETWORK_MISC, },
+ { 0 },
+};
+
+struct pci_class pci_subclass_display[] = {
+ { "VGA", PCI_SUBCLASS_DISPLAY_VGA, },
+ { "XGA", PCI_SUBCLASS_DISPLAY_XGA, },
+ { "3D", PCI_SUBCLASS_DISPLAY_3D, },
+ { "miscellaneous", PCI_SUBCLASS_DISPLAY_MISC, },
+ { 0 },
+};
+
+struct pci_class pci_subclass_multimedia[] = {
+ { "video", PCI_SUBCLASS_MULTIMEDIA_VIDEO, },
+ { "audio", PCI_SUBCLASS_MULTIMEDIA_AUDIO, },
+ { "telephony", PCI_SUBCLASS_MULTIMEDIA_TELEPHONY, },
+ { "miscellaneous", PCI_SUBCLASS_MULTIMEDIA_MISC, },
+ { 0 },
+};
+
+struct pci_class pci_subclass_memory[] = {
+ { "RAM", PCI_SUBCLASS_MEMORY_RAM, },
+ { "flash", PCI_SUBCLASS_MEMORY_FLASH, },
+ { "miscellaneous", PCI_SUBCLASS_MEMORY_MISC, },
+ { 0 },
+};
+
+struct pci_class pci_subclass_bridge[] = {
+ { "host", PCI_SUBCLASS_BRIDGE_HOST, },
+ { "ISA", PCI_SUBCLASS_BRIDGE_ISA, },
+ { "EISA", PCI_SUBCLASS_BRIDGE_EISA, },
+ { "MicroChannel", PCI_SUBCLASS_BRIDGE_MCA, },
+ { "PCI", PCI_SUBCLASS_BRIDGE_PCI, },
+ { "PCMCIA", PCI_SUBCLASS_BRIDGE_PCMCIA, },
+ { "NuBus", PCI_SUBCLASS_BRIDGE_NUBUS, },
+ { "CardBus", PCI_SUBCLASS_BRIDGE_CARDBUS, },
+ { "RACEway", PCI_SUBCLASS_BRIDGE_RACEWAY, },
+ { "Semi-transparent PCI", PCI_SUBCLASS_BRIDGE_STPCI, },
+ { "InfiniBand", PCI_SUBCLASS_BRIDGE_INFINIBAND, },
+ { "miscellaneous", PCI_SUBCLASS_BRIDGE_MISC, },
+ { 0 },
+};
+
+struct pci_class pci_subclass_communications[] = {
+ { "serial", PCI_SUBCLASS_COMMUNICATIONS_SERIAL, },
+ { "parallel", PCI_SUBCLASS_COMMUNICATIONS_PARALLEL, },
+ { "multi-port serial", PCI_SUBCLASS_COMMUNICATIONS_MPSERIAL, },
+ { "modem", PCI_SUBCLASS_COMMUNICATIONS_MODEM, },
+ { "miscellaneous", PCI_SUBCLASS_COMMUNICATIONS_MISC, },
+ { 0 },
+};
+
+struct pci_class pci_subclass_system[] = {
+ { "8259 PIC", PCI_SUBCLASS_SYSTEM_PIC, },
+ { "8237 DMA", PCI_SUBCLASS_SYSTEM_DMA, },
+ { "8254 timer", PCI_SUBCLASS_SYSTEM_TIMER, },
+ { "RTC", PCI_SUBCLASS_SYSTEM_RTC, },
+ { "PCI Hot-Plug", PCI_SUBCLASS_SYSTEM_PCIHOTPLUG, },
+ { "miscellaneous", PCI_SUBCLASS_SYSTEM_MISC, },
+ { 0 },
+};
+
+struct pci_class pci_subclass_input[] = {
+ { "keyboard", PCI_SUBCLASS_INPUT_KEYBOARD, },
+ { "digitizer", PCI_SUBCLASS_INPUT_DIGITIZER, },
+ { "mouse", PCI_SUBCLASS_INPUT_MOUSE, },
+ { "scanner", PCI_SUBCLASS_INPUT_SCANNER, },
+ { "game port", PCI_SUBCLASS_INPUT_GAMEPORT, },
+ { "miscellaneous", PCI_SUBCLASS_INPUT_MISC, },
+ { 0 },
+};
+
+struct pci_class pci_subclass_dock[] = {
+ { "generic", PCI_SUBCLASS_DOCK_GENERIC, },
+ { "miscellaneous", PCI_SUBCLASS_DOCK_MISC, },
+ { 0 },
+};
+
+struct pci_class pci_subclass_processor[] = {
+ { "386", PCI_SUBCLASS_PROCESSOR_386, },
+ { "486", PCI_SUBCLASS_PROCESSOR_486, },
+ { "Pentium", PCI_SUBCLASS_PROCESSOR_PENTIUM, },
+ { "Alpha", PCI_SUBCLASS_PROCESSOR_ALPHA, },
+ { "PowerPC", PCI_SUBCLASS_PROCESSOR_POWERPC, },
+ { "MIPS", PCI_SUBCLASS_PROCESSOR_MIPS, },
+ { "Co-processor", PCI_SUBCLASS_PROCESSOR_COPROC, },
+ { 0 },
+};
+
+struct pci_class pci_subclass_serialbus[] = {
+ { "Firewire", PCI_SUBCLASS_SERIALBUS_FIREWIRE, },
+ { "ACCESS.bus", PCI_SUBCLASS_SERIALBUS_ACCESS, },
+ { "SSA", PCI_SUBCLASS_SERIALBUS_SSA, },
+ { "USB", PCI_SUBCLASS_SERIALBUS_USB, },
+ /* XXX Fiber Channel/_FIBRECHANNEL */
+ { "Fiber Channel", PCI_SUBCLASS_SERIALBUS_FIBER, },
+ { "SMBus", PCI_SUBCLASS_SERIALBUS_SMBUS, },
+ { "InfiniBand", PCI_SUBCLASS_SERIALBUS_INFINIBAND, },
+ { "IPMI", PCI_SUBCLASS_SERIALBUS_IPMI, },
+ { "SERCOS", PCI_SUBCLASS_SERIALBUS_SERCOS, },
+ { "CANbus", PCI_SUBCLASS_SERIALBUS_CANBUS, },
+ { 0 },
+};
+
+struct pci_class pci_subclass_wireless[] = {
+ { "iRDA", PCI_SUBCLASS_WIRELESS_IRDA, },
+ { "Consumer IR", PCI_SUBCLASS_WIRELESS_CONSUMERIR, },
+ { "RF", PCI_SUBCLASS_WIRELESS_RF, },
+ { "miscellaneous", PCI_SUBCLASS_WIRELESS_MISC, },
+ { 0 },
+};
+
+struct pci_class pci_subclass_i2o[] = {
+ { "1.0", PCI_SUBCLASS_I2O_STANDARD, },
+ { 0 },
+};
+
+struct pci_class pci_subclass_satcom[] = {
+ { "TV", PCI_SUBCLASS_SATCOM_TV, },
+ { "audio", PCI_SUBCLASS_SATCOM_AUDIO, },
+ { "voice", PCI_SUBCLASS_SATCOM_VOICE, },
+ { "data", PCI_SUBCLASS_SATCOM_DATA, },
+ { 0 },
+};
+
+struct pci_class pci_subclass_crypto[] = {
+ { "network/computing", PCI_SUBCLASS_CRYPTO_NETCOMP, },
+ { "entertainment", PCI_SUBCLASS_CRYPTO_ENTERTAINMENT, },
+ { "miscellaneous", PCI_SUBCLASS_CRYPTO_MISC, },
+ { 0 },
+};
+
+struct pci_class pci_subclass_dasp[] = {
+ { "DPIO", PCI_SUBCLASS_DASP_DPIO, },
+ { "time and frequency", PCI_SUBCLASS_DASP_TIMERFREQ, },
+ { "miscellaneous", PCI_SUBCLASS_DASP_MISC, },
+ { 0 },
+};
+
+struct pci_class pci_class[] = {
+ { "prehistoric", PCI_CLASS_PREHISTORIC,
+ pci_subclass_prehistoric, },
+ { "mass storage", PCI_CLASS_MASS_STORAGE,
+ pci_subclass_mass_storage, },
+ { "network", PCI_CLASS_NETWORK,
+ pci_subclass_network, },
+ { "display", PCI_CLASS_DISPLAY,
+ pci_subclass_display, },
+ { "multimedia", PCI_CLASS_MULTIMEDIA,
+ pci_subclass_multimedia, },
+ { "memory", PCI_CLASS_MEMORY,
+ pci_subclass_memory, },
+ { "bridge", PCI_CLASS_BRIDGE,
+ pci_subclass_bridge, },
+ { "communications", PCI_CLASS_COMMUNICATIONS,
+ pci_subclass_communications, },
+ { "system", PCI_CLASS_SYSTEM,
+ pci_subclass_system, },
+ { "input", PCI_CLASS_INPUT,
+ pci_subclass_input, },
+ { "dock", PCI_CLASS_DOCK,
+ pci_subclass_dock, },
+ { "processor", PCI_CLASS_PROCESSOR,
+ pci_subclass_processor, },
+ { "serial bus", PCI_CLASS_SERIALBUS,
+ pci_subclass_serialbus, },
+ { "wireless", PCI_CLASS_WIRELESS,
+ pci_subclass_wireless, },
+ { "I2O", PCI_CLASS_I2O,
+ pci_subclass_i2o, },
+ { "satellite comm", PCI_CLASS_SATCOM,
+ pci_subclass_satcom, },
+ { "crypto", PCI_CLASS_CRYPTO,
+ pci_subclass_crypto, },
+ { "DASP", PCI_CLASS_DASP,
+ pci_subclass_dasp, },
+ { "undefined", PCI_CLASS_UNDEFINED,
+ 0, },
+ { 0 },
+};
+
+#if PCIVERBOSE
+/*
+ * Descriptions of of known vendors and devices ("products").
+ */
+#include "pcidevs.h"
+
+struct pci_knowndev2 {
+ pci_vendor_id_t vendor;
+ pci_product_id_t product;
+ int flags;
+ int vendorname, productname;
+};
+#define PCI_KNOWNDEV_NOPROD 0x01 /* match on vendor only */
+#include "pcidevs_data2.h"
+
+const char *
+pci_findvendor(pcireg_t id_reg)
+{
+ pci_vendor_id_t vendor = PCI_VENDOR(id_reg);
+ const struct pci_knowndev2 *kdp;
+
+ kdp = pci_knowndevs;
+ while (kdp->vendorname != PCI_STRING_NULL) { /* all have vendor name */
+ if (kdp->vendor == vendor)
+ break;
+ kdp++;
+ }
+ if (kdp->vendorname == PCI_STRING_NULL) return NULL;
+ return PCI_STRING(kdp->vendorname);
+}
+#else
+const char *
+pci_findvendor(pcireg_t id_reg)
+{
+ return NULL;
+}
+#endif /* PCIVERBOSE */
+
+void
+pci_devinfo(pcireg_t id_reg, pcireg_t class_reg, int showclass, char *cp)
+{
+ pci_vendor_id_t vendor;
+ pci_product_id_t product;
+ pci_class_t class;
+ pci_subclass_t subclass;
+ pci_interface_t interface;
+ pci_revision_t revision;
+ const char *vendor_namep, *product_namep;
+ struct pci_class *classp, *subclassp;
+#if PCIVERBOSE
+ const struct pci_knowndev2 *kdp;
+ const char *unmatched = "unknown ";
+#else
+ const char *unmatched = "";
+#endif
+
+ vendor = PCI_VENDOR(id_reg);
+ product = PCI_PRODUCT(id_reg);
+
+ class = PCI_CLASS(class_reg);
+ subclass = PCI_SUBCLASS(class_reg);
+ interface = PCI_INTERFACE(class_reg);
+ revision = PCI_REVISION(class_reg);
+
+#if PCIVERBOSE
+ kdp = pci_knowndevs;
+ while (kdp->vendorname != PCI_STRING_NULL) { /* all have vendor name */
+ if (kdp->vendor == vendor && (kdp->product == product ||
+ (kdp->flags & PCI_KNOWNDEV_NOPROD) != 0))
+ break;
+ kdp++;
+ }
+ if (kdp->vendorname == PCI_STRING_NULL)
+ vendor_namep = product_namep = NULL;
+ else {
+ vendor_namep = PCI_STRING(kdp->vendorname);
+ product_namep = ((kdp->flags & PCI_KNOWNDEV_NOPROD) == 0 ?
+ PCI_STRING(kdp->productname) : NULL);
+ }
+#else /* PCIVERBOSE */
+ vendor_namep = product_namep = NULL;
+#endif /* PCIVERBOSE */
+
+ classp = pci_class;
+ while (classp->name != NULL) {
+ if (class == classp->val)
+ break;
+ classp++;
+ }
+
+ subclassp = (classp->name != NULL) ? classp->subclasses : NULL;
+ while (subclassp && subclassp->name != NULL) {
+ if (subclass == subclassp->val)
+ break;
+ subclassp++;
+ }
+
+ if (vendor_namep == NULL)
+ cp += sprintf(cp, "%svendor 0x%04x product 0x%04x",
+ unmatched, vendor, product);
+ else if (product_namep != NULL)
+ cp += sprintf(cp, "%s %s", vendor_namep, product_namep);
+ else
+ cp += sprintf(cp, "%s product 0x%04x", vendor_namep, product);
+ if (showclass) {
+ cp += sprintf(cp, " (");
+ if (classp->name == NULL)
+ cp += sprintf(cp, "class 0x%02x, subclass 0x%02x",
+ class, subclass);
+ else {
+ if (subclassp == NULL || subclassp->name == NULL)
+ cp += sprintf(cp, "%s subclass 0x%02x",
+ classp->name, subclass);
+ else
+ cp += sprintf(cp, "%s %s", subclassp->name, classp->name);
+ }
+ if (interface != 0)
+ cp += sprintf(cp, ", interface 0x%02x", interface);
+ if (revision != 0)
+ cp += sprintf(cp, ", revision 0x%02x", revision);
+ cp += sprintf(cp, ")");
+ }
+}
+
+
+/*
+ * Support routines for printing out PCI configuration registers.
+ */
+
+#define i2o(i) ((i) * 4)
+#define o2i(o) ((o) / 4)
+#define onoff(str, bit) \
+ do { \
+ printf(" %s: %s\n", (str), (rval & (bit)) ? "on" : "off"); \
+ } while (0)
+
+#if PCIVERBOSE
+static void
+pci_conf_print_ids(pcireg_t rval, const char *prefix)
+{
+ const struct pci_knowndev2 *kdp;
+
+ for (kdp = pci_knowndevs; kdp->vendorname != PCI_STRING_NULL; kdp++) {
+ if (kdp->vendor == PCI_VENDOR(rval) &&
+ (kdp->product == PCI_PRODUCT(rval) ||
+ (kdp->flags & PCI_KNOWNDEV_NOPROD) != 0)) {
+ break;
+ }
+ }
+ if (kdp->vendorname != PCI_STRING_NULL)
+ printf("%sVendor Name: %s (0x%04x)\n", prefix,
+ PCI_STRING(kdp->vendorname), PCI_VENDOR(rval));
+ else
+ printf("%sVendor ID: 0x%04x\n", prefix, PCI_VENDOR(rval));
+ if (kdp->productname != PCI_STRING_NULL
+ && (kdp->flags & PCI_KNOWNDEV_NOPROD) == 0)
+ printf("%sDevice Name: %s (0x%04x)\n", prefix,
+ PCI_STRING(kdp->productname), PCI_PRODUCT(rval));
+ else
+ printf("%sDevice ID: 0x%04x\n", prefix, PCI_PRODUCT(rval));
+}
+#else
+static void
+pci_conf_print_ids(pcireg_t rval, const char *prefix)
+{
+ printf("%sVendor ID: 0x%04x\n", prefix, PCI_VENDOR(rval));
+ printf("%sDevice ID: 0x%04x\n", prefix, PCI_PRODUCT(rval));
+}
+#endif /* PCIVERBOSE */
+
+static int
+pci_conf_print_bar(
+ pcitag_t tag, const pcireg_t *regs,
+ int reg, const char *name,
+ int sizebar, int onlyimpl)
+{
+ int width;
+ pcireg_t mask, rval;
+ pcireg_t mask64h, rval64h;
+
+#ifdef __GNUC__ /* XXX GCC -Wuninitialized inadequacies */
+ mask64h = rval64h = 0;
+#endif
+
+ width = 4;
+
+ /*
+ * Section 6.2.5.1, `Address Maps', tells us that:
+ *
+ * 1) The builtin software should have already mapped the
+ * device in a reasonable way.
+ *
+ * 2) A device which wants 2^n bytes of memory will hardwire
+ * the bottom n bits of the address to 0. As recommended,
+ * we write all 1s and see what we get back.
+ */
+ rval = regs[o2i(reg)];
+ /* XXX don't size unknown memory type? */
+ if (rval != 0 && sizebar) {
+ uint32_t cmdreg;
+
+ /*
+ * The following sequence seems to make some devices
+ * (e.g. host bus bridges, which don't normally
+ * have their space mapped) very unhappy, to
+ * the point of crashing the system.
+ *
+ * Therefore, if the mapping register is zero to
+ * start out with, don't bother trying.
+ */
+
+ cmdreg = pci_conf_read(tag, PCI_COMMAND_STATUS_REG);
+ cmdreg &= (PCI_COMMAND_MASK << PCI_COMMAND_SHIFT); /* keep status */
+ pci_conf_write(tag, PCI_COMMAND_STATUS_REG,
+ cmdreg & ~(PCI_COMMAND_IO_ENABLE | PCI_COMMAND_MEM_ENABLE));
+
+ pci_conf_write(tag, reg, 0xffffffff);
+ mask = pci_conf_read(tag, reg);
+ pci_conf_write(tag, reg, rval);
+ if (PCI_MAPREG_TYPE(rval) == PCI_MAPREG_TYPE_MEM &&
+ PCI_MAPREG_MEM_TYPE(rval) == PCI_MAPREG_MEM_TYPE_64BIT) {
+ rval64h = regs[o2i(reg + 4)];
+ pci_conf_write(tag, reg + 4, 0xffffffff);
+ mask64h = pci_conf_read(tag, reg + 4);
+ pci_conf_write(tag, reg + 4, rval64h);
+ width = 8;
+ }
+
+ pci_conf_write(tag, PCI_COMMAND_STATUS_REG, cmdreg);
+ } else
+ mask = 0;
+
+ if (rval == 0 && onlyimpl)
+ return width;
+
+ printf(" Base Address Register at 0x%02x", reg);
+ if (name)
+ printf(" (%s)", name);
+ printf("\n ");
+ if (rval == 0) {
+ printf("not implemented(?)\n");
+ return width;
+ }
+ printf("type: ");
+ if (PCI_MAPREG_TYPE(rval) == PCI_MAPREG_TYPE_MEM) {
+ const char *type, *prefetch;
+
+ switch (PCI_MAPREG_MEM_TYPE(rval)) {
+ case PCI_MAPREG_MEM_TYPE_32BIT:
+ type = "32-bit";
+ break;
+ case PCI_MAPREG_MEM_TYPE_32BIT_1M:
+ type = "32-bit-1M";
+ break;
+ case PCI_MAPREG_MEM_TYPE_64BIT:
+ type = "64-bit";
+ break;
+ default:
+ type = "unknown (XXX)";
+ break;
+ }
+ if (PCI_MAPREG_MEM_PREFETCHABLE(rval))
+ prefetch = "";
+ else
+ prefetch = "non";
+ printf("%s %sprefetchable memory\n", type, prefetch);
+ switch (PCI_MAPREG_MEM_TYPE(rval)) {
+ case PCI_MAPREG_MEM_TYPE_64BIT:
+ printf(" base: 0x%016llx, ",
+ PCI_MAPREG_MEM64_ADDR(
+ ((((long long) rval64h) << 32) | rval)));
+ if (sizebar)
+ printf("size: 0x%016llx",
+ PCI_MAPREG_MEM64_SIZE(
+ ((((long long) mask64h) << 32) | mask)));
+ else
+ printf("not sized");
+ printf("\n");
+ break;
+ case PCI_MAPREG_MEM_TYPE_32BIT:
+ case PCI_MAPREG_MEM_TYPE_32BIT_1M:
+ default:
+ printf(" base: 0x%08x, ", PCI_MAPREG_MEM_ADDR(rval));
+ if (sizebar)
+ printf("size: 0x%08x", PCI_MAPREG_MEM_SIZE(mask));
+ else
+ printf("not sized");
+ printf("\n");
+ break;
+ }
+ } else {
+ if (sizebar)
+ printf("%d-bit ", mask & ~0x0000ffff ? 32 : 16);
+ printf("i/o\n");
+ printf(" base: 0x%08x, ", PCI_MAPREG_IO_ADDR(rval));
+ if (sizebar)
+ printf("size: 0x%08x", PCI_MAPREG_IO_SIZE(mask));
+ else
+ printf("not sized");
+ printf("\n");
+ }
+
+ return width;
+}
+
+
+/* Summary printing: Display device ID, status, memory map only. */
+
+#define on(str, bit) \
+ do { if (rval & (bit)) printf(" %s: on\n", (str)); } while (0)
+
+void
+pci_conf_print(pcitag_t tag)
+{
+ pcireg_t regs[o2i(256)];
+ int off, width;
+ pcireg_t rval;
+ uint32_t base, limit;
+ int sizebars;
+
+ if (!pci_probe_tag(tag)) {
+ printf("no device\n");
+ return;
+ }
+
+ for (off = 0; off < 256; off += 4)
+ regs[o2i(off)] = pci_conf_read(tag, off);
+
+ rval = regs[o2i(PCI_ID_REG)];
+ pci_conf_print_ids(rval, " ");
+
+ rval = regs[o2i(PCI_COMMAND_STATUS_REG)];
+
+ printf(" Command: 0x%04x\n", rval & 0xffff);
+ on("I/O space accesses", PCI_COMMAND_IO_ENABLE);
+ on("Memory space accesses", PCI_COMMAND_MEM_ENABLE);
+ on("Bus mastering", PCI_COMMAND_MASTER_ENABLE);
+
+ printf(" Status: 0x%04x\n", PCI_STATUS(rval));
+ on("Slave signaled Target Abort", PCI_STATUS_TARGET_TARGET_ABORT);
+ on("Master received Target Abort", PCI_STATUS_MASTER_TARGET_ABORT);
+ on("Master received Master Abort", PCI_STATUS_MASTER_ABORT);
+ on("Asserted System Error (SERR)", PCI_STATUS_SYSTEM_ERROR);
+ on("Parity error detected", PCI_STATUS_PARITY_DETECT);
+
+ switch (PCI_HDRTYPE_TYPE(regs[o2i(PCI_BHLC_REG)])) {
+ case 0:
+ /* Standard device header */
+ printf(" Type 0 (normal) header:\n");
+
+ /* sizing host BARs is often bad news */
+ sizebars = 1;
+ if (PCI_CLASS(regs[o2i(PCI_CLASS_REG)]) == PCI_CLASS_BRIDGE &&
+ PCI_SUBCLASS(regs[o2i(PCI_CLASS_REG)]) == PCI_SUBCLASS_BRIDGE_HOST)
+ sizebars = 0;
+ for (off = PCI_MAPREG_START; off < PCI_MAPREG_END; off += width)
+ width = pci_conf_print_bar(tag, regs, off, NULL, sizebars, 1);
+
+ rval = regs[o2i(PCI_BPARAM_INTERRUPT_REG)];
+ printf(" Interrupt Line: 0x%02x\n", PCI_INTERRUPT_LINE(rval));
+ break;
+
+ case 1:
+ /* PCI-PCI bridge header */
+ printf(" Type 1 (PCI-PCI bridge) header:\n");
+
+ rval = regs[o2i(PPB_BUSINFO_REG)];
+ printf(" Buses:\n");
+ printf(" Primary: %d,", PPB_BUSINFO_PRIMARY(rval));
+ printf(" Secondary: %d,", PPB_BUSINFO_SECONDARY(rval));
+ printf(" Subordinate: %d\n", PPB_BUSINFO_SUBORD(rval));
+
+ rval = regs[o2i(PPB_IO_STATUS_REG)];
+ printf(" Secondary Status: 0x%04x\n", PPB_SECSTATUS(rval));
+ on(" Data parity error detected", PCI_STATUS_PARITY_ERROR);
+ on(" Signaled Target Abort", PCI_STATUS_TARGET_TARGET_ABORT);
+ on(" Received Target Abort", PCI_STATUS_MASTER_TARGET_ABORT);
+ on(" Received Master Abort", PCI_STATUS_MASTER_ABORT);
+ on(" System Error", PCI_STATUS_SYSTEM_ERROR);
+ on(" Parity Error", PCI_STATUS_PARITY_DETECT);
+
+ rval = regs[o2i(PPB_IO_STATUS_REG)];
+ base = PPB_IO_BASE(rval);
+ limit = PPB_IO_LIMIT(rval);
+ if (base != 0 || limit != 0) {
+ printf(" I/O Range:\n");
+
+ if ((base & 0xf) != 0 || (limit & 0xf) != 0) {
+ base = ((base & 0xf0) << 8) | 0x000;
+ limit = ((limit & 0xf0) << 8) | 0xfff;
+ rval = regs[o2i(PPB_IO_UPPER_REG)];
+ base |= PPB_BASE(rval) << 16;
+ limit |= PPB_LIMIT(rval) << 16;
+ printf(" base: 0x%08x, limit: 0x%08x\n", base, limit);
+ } else {
+ base = (base << 8) | 0x000;
+ limit = (limit << 8) | 0xfff;
+ printf(" base: 0x%04x, limit: 0x%04x\n", base, limit);
+ }
+ }
+
+ base = PPB_BASE(regs[o2i(PPB_MEM_REG)]) & 0xfff0;
+ limit = PPB_LIMIT(regs[o2i(PPB_MEM_REG)]) & 0xfff0;
+ printf(" Memory Range:\n");
+ base = (base << 16) | 0x00000;
+ limit = (limit << 16) | 0xfffff;
+ printf(" base: 0x%08x, limit: 0x%08x\n", base, limit);
+
+ base = PPB_BASE(regs[o2i(PPB_PREFMEM_REG)]) & 0xffff;
+ limit = PPB_LIMIT(regs[o2i(PPB_PREFMEM_REG)]) & 0xffff;
+ if (base != 0 || limit != 0
+ || regs[o2i(PPB_PREFMEM_BASE_UPPER_REG)] != 0
+ || regs[o2i(PPB_PREFMEM_LIMIT_UPPER_REG)] != 0) {
+ printf(" Prefetchable Memory Range:\n");
+ if ((base & 0xf) != 0 || (limit & 0xf) != 0) {
+ base = ((base & 0xfff0) << 16) | 0x00000;
+ limit = ((limit & 0xfff0) << 16) | 0xfffff;
+ printf(" base: 0x%08x%08x, limit: 0x%08x%08x\n",
+ regs[o2i(PPB_PREFMEM_BASE_UPPER_REG)], base,
+ regs[o2i(PPB_PREFMEM_LIMIT_UPPER_REG)], limit);
+ } else {
+ base = (base << 16) | 0x00000;
+ limit = (limit << 16) | 0xfffff;
+ printf(" base: 0x%08x, limit: 0x%08x\n", base, limit);
+ }
+ }
+
+ if (regs[o2i(PPB_MAPREG_ROM)] != 0)
+ printf(" Expansion ROM Base Address: 0x%08x\n",
+ regs[o2i(PPB_MAPREG_ROM)]);
+ break;
+
+ default:
+ break;
+ }
+}
+
diff --git a/cfe/cfe/pci/pciconf.c b/cfe/cfe/pci/pciconf.c
new file mode 100644
index 0000000..9f23f7c
--- /dev/null
+++ b/cfe/cfe/pci/pciconf.c
@@ -0,0 +1,1296 @@
+/* *********************************************************************
+ * Broadcom Common Firmware Environment (CFE)
+ *
+ * PCI Configuration File: pciconf.c
+ *
+ *********************************************************************
+ *
+ * Copyright 2001,2002,2003
+ * Broadcom Corporation. All rights reserved.
+ *
+ * This software is furnished under license and may be used and
+ * copied only in accordance with the following terms and
+ * conditions. Subject to these conditions, you may download,
+ * copy, install, use, modify and distribute modified or unmodified
+ * copies of this software in source and/or binary form. No title
+ * or ownership is transferred hereby.
+ *
+ * 1) Any source code used, modified or distributed must reproduce
+ * and retain this copyright notice and list of conditions
+ * as they appear in the source file.
+ *
+ * 2) No right is granted to use any trade name, trademark, or
+ * logo of Broadcom Corporation. The "Broadcom Corporation"
+ * name may not be used to endorse or promote products derived
+ * from this software without the prior written permission of
+ * Broadcom Corporation.
+ *
+ * 3) THIS SOFTWARE IS PROVIDED "AS-IS" AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO, ANY IMPLIED
+ * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+ * PURPOSE, OR NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT
+ * SHALL BROADCOM BE LIABLE FOR ANY DAMAGES WHATSOEVER, AND IN
+ * PARTICULAR, BROADCOM SHALL NOT BE LIABLE FOR DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE), EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * Based in part on the algor p5064 version of pciconf.c:
+ * generic PCI bus configuration
+ * Copyright (c) 1999 Algorithmics Ltd
+ * which in turn appears to be based on PMON code.
+ */
+
+#include "cfe_pci.h"
+#include "cfe_timer.h"
+#include "lib_types.h"
+#include "lib_string.h"
+#include "lib_printf.h"
+#include "lib_malloc.h"
+
+#include "pcivar.h"
+#include "pcireg.h"
+#include "pcidevs.h"
+#include "ldtreg.h"
+
+#ifndef MIN
+#define MIN(a,b) ((a) < (b) ? (a) : (b))
+#endif
+
+#ifndef MAX
+#define MAX(a,b) ((a) > (b) ? (a) : (b))
+#endif
+
+#define PRINTF printf
+#define VPRINTF vprintf
+
+extern void cfe_ledstr(const char *);
+#define SBD_DISPLAY(msg) cfe_ledstr(msg)
+
+int _pciverbose;
+
+/* pci_devinfo uses sprintf(), and we don't necessarily want to drag
+ in all those tables for a minimal build, so set this function
+ pointer if it is required. */
+void (*_pci_devinfo_func) (pcireg_t, pcireg_t, int, char *);
+
+int _pci_nbus; /* start off with one bus */
+const int _pci_maxbus; /* maximum number of busses */
+int _pci_enumerated = 0;
+
+/* The "devices" here are actually PCI "functions" */
+#ifndef PCIMAX_DEV
+#define PCIMAX_DEV 16 /* arbitrary */
+#endif
+#ifndef PCIMAX_MEMWIN
+#define PCIMAX_MEMWIN 3 /* arbitrary per device */
+#endif
+#ifndef PCIMAX_IOWIN
+#define PCIMAX_IOWIN 1 /* arbitrary per device */
+#endif
+
+struct pcidev {
+ struct pci_attach_args *pa;
+ int bus;
+ unsigned char min_gnt;
+ unsigned char max_lat;
+ short nmemwin;
+ short niowin;
+};
+
+struct pciwin {
+ struct pcidev *dev;
+ int reg;
+ size_t size;
+ pcireg_t address;
+};
+
+struct pcirange {
+ pcireg_t base;
+ pcireg_t next;
+ pcireg_t limit;
+};
+
+static struct pci_attach_args *pciarg; /* the array of devices (external) */
+static struct pcidev *pcidev; /* parallel attr array (internal) */
+static int pcindev;
+static int pcimaxdev;
+
+static struct pciwin *pcimemwin; /* the array of memory windows */
+static int pcinmemwin;
+static int pcimaxmemwin;
+static struct pcirange pcimemaddr;
+
+static struct pciwin *pciiowin; /* the array of i/o windows */
+static int pciniowin;
+static int pcimaxiowin;
+static struct pcirange pciioaddr;
+
+
+/* The pass 1 SB-1250 LDT host bridge (LHB) does not implement the base
+ and limit registers for its secondary bus correctly. To compensate,
+ the following code includes hardware-dependent extensions to:
+ - pad the assignment of addresses on the "first" bus behind that
+ bridge (its secondary) so that the 32 bytes starting at the base
+ address are unused.
+ - pad the assignment of addresses on the "first" bus not behind that
+ bridge (the successor to its subordinate bus) so that the 32 bytes
+ starting at the limit address + 1 are unused.
+ - derive values assigned to the mem and io limit registers from
+ the last allocated address + 1, not from the last allocated
+ address as specified for conforming PCI bridges.
+ For pass 1 parts, the revision of the LHB is 1. This problem is fixed
+ and the workaround is unnecessary for revision numbers greater than 1.
+*/
+
+static int lhb_secondary_bus;
+static int lhb_subordinate_bus;
+
+
+static void
+print_bdf (int bus, int device, int function)
+{
+ PRINTF ("PCI");
+ if (bus >= 0)
+ PRINTF (" bus %d", bus);
+ if (device >= 0)
+ PRINTF (" slot %d", device);
+ if (function >= 0)
+ PRINTF ("/%d", function);
+ PRINTF (": ");
+}
+
+void
+pci_bdfprintf (int bus, int device, int function, const char *fmt, ...)
+{
+ va_list arg;
+
+ print_bdf (bus, device, function);
+#ifdef __VARARGS_H
+ va_start(arg);
+#else
+ va_start(arg, fmt);
+#endif
+ VPRINTF (fmt, arg);
+ va_end(arg);
+}
+
+void
+pci_tagprintf (pcitag_t tag, const char *fmt, ...)
+{
+ va_list arg;
+ int bus, device, function;
+
+ pci_break_tag (tag, &bus, &device, &function);
+ print_bdf (bus, device, function);
+
+#ifdef __VARARGS_H
+ va_start(arg);
+#else
+ va_start(arg, fmt);
+#endif
+ VPRINTF (fmt, arg);
+ va_end(arg);
+}
+
+
+/* Initialize the pci-pci bridges and bus hierarchy. */
+
+/* let rec */
+static void pci_businit (int bus, pci_flags_t flags);
+
+static void
+pci_businit_dev_func (pcitag_t tag, pci_flags_t flags)
+{
+ pcireg_t id, class, bhlc;
+
+ class = pci_conf_read(tag, PCI_CLASS_REG);
+ id = pci_conf_read(tag, PCI_ID_REG);
+ bhlc = pci_conf_read(tag, PCI_BHLC_REG);
+
+ pcindev++;
+
+ if (PCI_CLASS(class) == PCI_CLASS_BRIDGE && PCI_HDRTYPE_TYPE(bhlc) == 1) {
+ enum {NONE, PCI, LDT} sec_type;
+ int offset;
+ int bus, device, function;
+ int bus2;
+ struct pci_bus *psec;
+ pcireg_t data;
+
+ sec_type = NONE;
+ offset = 0;
+ switch (PCI_SUBCLASS(class)) {
+ case PCI_SUBCLASS_BRIDGE_PCI:
+ /* See if there is an LDT capability for the secondary. */
+ offset = pci_find_ldt_cap(tag, LDT_SECONDARY);
+ sec_type = offset == 0 ? PCI : LDT;
+ break;
+ case PCI_SUBCLASS_BRIDGE_HOST:
+ case PCI_SUBCLASS_BRIDGE_MISC:
+ /* A Type 1 host bridge (e.g., SB-1250 LDT) or an
+ X-to-LDT bridge with unassigned subclass (LDT?).
+ Probe iff the secondary is LDT (best policy?) */
+ offset = pci_find_ldt_cap(tag, LDT_SECONDARY);
+ if (offset != 0) sec_type = LDT;
+ break;
+ }
+
+ if (sec_type == NONE || _pci_nbus == _pci_maxbus)
+ return;
+
+ pci_break_tag(tag, &bus, &device, &function);
+
+ if (sec_type == LDT && offset != 0) {
+ pcireg_t cr = pci_conf_read(tag, offset+LDT_COMMAND_CAP_OFF);
+ if ((cr & LDT_COMMAND_DOUBLE_ENDED) != 0)
+ return;
+ }
+
+ bus2 = _pci_nbus;
+ psec = &_pci_bus[_pci_nbus];
+ _pci_nbus++;
+
+ psec->tag = tag;
+ psec->primary = bus;
+
+ /*
+ * set primary to bus
+ * set secondary to _pci_nbus
+ * set subordinate to max possible bus number
+ */
+ data = (PCI_BUSMAX << 16) | (bus2 << 8) | bus;
+ pci_conf_write(tag, PPB_BUSINFO_REG, data);
+
+ /*
+ * set base interrupt mapping.
+ */
+ if (bus == 0) {
+ /* We assume board-specific wiring for bus 0 devices. */
+ psec->inta_shift = pci_int_shift_0(tag);
+ } else {
+ /* We assume expansion boards wired per PCI Bridge spec */
+ psec->inta_shift = (_pci_bus[bus].inta_shift + device) % 4;
+ }
+
+ /* if the new bus is LDT, do the fabric initialization */
+ if (sec_type == LDT)
+ _pci_bus[bus2].no_probe = ldt_chain_init(tag, bus2, flags);
+ else
+ _pci_bus[bus2].no_probe = 0;
+
+#ifdef _CSWARM_
+ /* We must avoid attempting to scan the secondary bus of the
+ diagnostic sturgeon on a cswarm (MasterAbortMode == 0
+ appears not to suppress propagation of aborts). We know
+ its secondary bus number will be 2 on cswarm. */
+ if (bus2 == 2)
+ _pci_bus[bus2].no_probe = 1;
+#endif
+
+ /* Scan the new bus for PCI-PCI bridges and initialize. To
+ avoid a chip erratum, we must skip this for double-hosted
+ chains with no secondary devices. The no_probe attribute
+ is a workaround (see ldt_chain_init above). */
+ if (_pci_bus[bus2].no_probe) {
+ _pci_bus[bus2].min_io_addr = 0xffffffff;
+ _pci_bus[bus2].max_io_addr = 0;
+ _pci_bus[bus2].min_mem_addr = 0xffffffff;
+ _pci_bus[bus2].max_mem_addr = 0;
+ } else
+ pci_businit(bus2, flags);
+
+ /* reset subordinate bus number */
+ data = (data & 0xff00ffff) | ((_pci_nbus - 1) << 16);
+ pci_conf_write(tag, PPB_BUSINFO_REG, data);
+
+ /* SB-1250 pass 1 work-around: remember the buses behind the
+ LDT host bridge. This is not the far end of a
+ double-hosted chain. */
+ if (PCI_VENDOR(id) == PCI_VENDOR_SIBYTE &&
+ PCI_PRODUCT(id) == PCI_PRODUCT_SIBYTE_SB1250_LDT &&
+ PCI_REVISION(class) == 1) {
+ lhb_secondary_bus = bus2;
+ lhb_subordinate_bus = _pci_nbus - 1;
+ }
+ }
+}
+
+static void
+pci_businit_dev (int bus, int device, pci_flags_t flags)
+{
+ pcitag_t tag;
+ pcireg_t bhlc;
+ int function, maxfunc;
+
+ tag = pci_make_tag(bus, device, 0);
+ if (!pci_canscan (tag))
+ return;
+
+ if (!pci_probe_tag(tag))
+ return;
+
+ bhlc = pci_conf_read(tag, PCI_BHLC_REG);
+ maxfunc = PCI_HDRTYPE_MULTIFN(bhlc) ? PCI_FUNCMAX : 0;
+
+ for (function = 0; function <= maxfunc; function++) {
+ tag = pci_make_tag(bus, device, function);
+ if (pci_probe_tag(tag))
+ pci_businit_dev_func(tag, flags);
+ }
+}
+
+
+static void
+pci_businit (int bus, pci_flags_t flags)
+{
+ struct pci_bus *ppri;
+ int device;
+
+ ppri = &_pci_bus[bus];
+ ppri->min_io_addr = 0xffffffff;
+ ppri->max_io_addr = 0;
+ ppri->min_mem_addr = 0xffffffff;
+ ppri->max_mem_addr = 0;
+
+ /* Pass 1 errata: we must number the buses in ascending order to
+ avoid problems with the LDT host bridge capturing all
+ configuration cycles. */
+
+ for (device = 0; device <= PCI_DEVMAX; device++)
+ pci_businit_dev (bus, device, flags);
+}
+
+
+/* Scan each PCI device on the system and record its configuration
+ requirements. */
+
+static void
+pci_query_dev_func (pcitag_t tag)
+{
+ pcireg_t id, class;
+ pcireg_t old, mask;
+ pcireg_t stat;
+ pcireg_t bparam;
+ pcireg_t icr;
+ pcireg_t bhlc;
+ pcireg_t t; /* used for pushing writes to cfg registers */
+ unsigned int x;
+ int reg, mapreg_end, mapreg_rom;
+ struct pci_bus *pb;
+ struct pci_attach_args *pa;
+ struct pcidev *pd;
+ struct pciwin *pm, *pi;
+ int bus, device, function, incr;
+ uint16_t cmd;
+ uint8_t pin, pci_int;
+
+ class = pci_conf_read(tag, PCI_CLASS_REG);
+ id = pci_conf_read(tag, PCI_ID_REG);
+ pci_break_tag(tag, &bus, &device, &function);
+
+ if (_pciverbose && _pci_devinfo_func) {
+ char devinfo[256];
+ (*_pci_devinfo_func)(id, class, 1, devinfo);
+ pci_tagprintf(tag, "%s\n", devinfo);
+ }
+
+ if (pcindev >= pcimaxdev) {
+ panic ("pci: unexpected device number\n");
+ return;
+ }
+
+ pa = &pciarg[pcindev];
+ pa->pa_tag = tag;
+ pa->pa_id = id;
+ pa->pa_class = class;
+
+ pd = &pcidev[pcindev++];
+ pd->pa = pa;
+ pd->bus = bus;
+ pd->nmemwin = 0;
+ pd->niowin = 0;
+
+ pb = &_pci_bus[bus];
+ pb->ndev++;
+
+ stat = pci_conf_read(tag, PCI_COMMAND_STATUS_REG);
+
+ /* do all devices support fast back-to-back */
+ if ((stat & PCI_STATUS_BACKTOBACK_SUPPORT) == 0)
+ pb->fast_b2b = 0; /* no, sorry */
+
+ /* do all devices run at 66 MHz */
+ if ((stat & PCI_STATUS_66MHZ_SUPPORT) == 0)
+ pb->freq66 = 0; /* no, sorry */
+
+ /* find slowest devsel */
+ x = PCI_STATUS_DEVSEL(stat);
+ if (x > pb->devsel)
+ pb->devsel = x;
+
+ bparam = pci_conf_read(tag, PCI_BPARAM_INTERRUPT_REG);
+
+ pd->min_gnt = PCI_BPARAM_GRANT (bparam);
+ pd->max_lat = PCI_BPARAM_LATENCY (bparam);
+
+ if (pd->min_gnt != 0 || pd->max_lat != 0) {
+ /* find largest minimum grant time of all devices */
+ if (pd->min_gnt != 0 && pd->min_gnt > pb->min_gnt)
+ pb->min_gnt = pd->min_gnt;
+
+ /* find smallest maximum latency time of all devices */
+ if (pd->max_lat != 0 && pd->max_lat < pb->max_lat)
+ pb->max_lat = pd->max_lat;
+
+ if (pd->max_lat != 0)
+ /* subtract our minimum on-bus time per sec from bus bandwidth */
+ pb->bandwidth -= pd->min_gnt * 4000000 /
+ (pd->min_gnt + pd->max_lat);
+ }
+
+ /* Hook any special setup code and test for skipping resource
+ allocation, e.g., for our own host bridges. */
+ if (pci_device_preset(tag) != 0)
+ return;
+
+ /* Does the function need an interrupt mapping? */
+ icr = pci_conf_read(tag, PCI_BPARAM_INTERRUPT_REG);
+ pin = PCI_INTERRUPT_PIN(icr);
+ icr &=~ (PCI_INTERRUPT_LINE_MASK << PCI_INTERRUPT_LINE_SHIFT);
+ if (pin == PCI_INTERRUPT_PIN_NONE)
+ pci_int = 0;
+ else if (bus == 0)
+ pci_int = pci_int_map_0(tag);
+ else
+ pci_int = (pb->inta_shift + device + (pin - 1)) % 4 + 1;
+ icr |= pci_int_line(pci_int) << PCI_INTERRUPT_LINE_SHIFT;
+ pci_conf_write(tag, PCI_BPARAM_INTERRUPT_REG, icr);
+
+ /* Find and size the BARs */
+ bhlc = pci_conf_read(tag, PCI_BHLC_REG);
+ switch (PCI_HDRTYPE_TYPE(bhlc)) {
+ case 0: /* Type 0 */
+ mapreg_end = PCI_MAPREG_END;
+ mapreg_rom = PCI_MAPREG_ROM;
+ break;
+ case 1: /* Type 1 (bridge) */
+ mapreg_end = PCI_MAPREG_PPB_END;
+ mapreg_rom = PCI_MAPREG_PPB_ROM;
+ break;
+ case 2: /* Type 2 (cardbus) */
+ mapreg_end = PCI_MAPREG_PCB_END;
+ mapreg_rom = PCI_MAPREG_NONE;
+ break;
+ default: /* unknown */
+ mapreg_end = PCI_MAPREG_START; /* assume none */
+ mapreg_rom = PCI_MAPREG_NONE;
+ break;
+ }
+
+ cmd = pci_conf_read(tag, PCI_COMMAND_STATUS_REG);
+ cmd &= (PCI_COMMAND_MASK << PCI_COMMAND_SHIFT); /* don't clear status */
+ pci_conf_write(tag, PCI_COMMAND_STATUS_REG,
+ cmd & ~(PCI_COMMAND_IO_ENABLE | PCI_COMMAND_MEM_ENABLE));
+ t = pci_conf_read(tag, PCI_COMMAND_STATUS_REG); /* push the write */
+
+ for (reg = PCI_MAPREG_START; reg < mapreg_end; reg += incr) {
+ old = pci_conf_read(tag, reg);
+ pci_conf_write(tag, reg, 0xffffffff);
+ mask = pci_conf_read(tag, reg);
+ pci_conf_write(tag, reg, old);
+
+ /* Assume 4 byte reg, unless we find out otherwise below. */
+ incr = 4;
+
+ /* 0 if not implemented, all-1s if (for some reason) 2nd half
+ of 64-bit BAR or if device broken and reg not implemented
+ (should return 0). */
+ if (mask == 0 || mask == 0xffffffff)
+ continue;
+
+ if (_pciverbose >= 3)
+ pci_tagprintf (tag, "reg 0x%x = 0x%x\n", reg, mask);
+
+ if (PCI_MAPREG_TYPE(mask) == PCI_MAPREG_TYPE_IO) {
+
+ mask |= 0xffff0000; /* must be ones */
+
+ if (pciniowin >= pcimaxiowin) {
+ PRINTF ("pci: too many i/o windows\n");
+ continue;
+ }
+ pi = &pciiowin[pciniowin++];
+
+ pi->dev = pd;
+ pi->reg = reg;
+ pi->size = -(PCI_MAPREG_IO_ADDR(mask));
+ pd->niowin++;
+ } else {
+ switch (PCI_MAPREG_MEM_TYPE(mask)) {
+ case PCI_MAPREG_MEM_TYPE_32BIT:
+ case PCI_MAPREG_MEM_TYPE_32BIT_1M:
+ break;
+ case PCI_MAPREG_MEM_TYPE_64BIT:
+ incr = 8;
+ {
+ pcireg_t oldhi, maskhi;
+
+ if (reg + 4 >= PCI_MAPREG_END) {
+ pci_tagprintf (tag,
+ "misplaced 64-bit region ignored\n");
+ continue;
+ }
+
+ oldhi = pci_conf_read(tag, reg + 4);
+ pci_conf_write(tag, reg + 4, 0xffffffff);
+ maskhi = pci_conf_read(tag, reg + 4);
+ pci_conf_write(tag, reg + 4, oldhi);
+
+ if (maskhi != 0xffffffff) {
+ pci_tagprintf (tag,
+ "true 64-bit region (%08x) ignored\n",
+ maskhi);
+ continue;
+ }
+ }
+ break;
+ default:
+ pci_tagprintf (tag, "reserved mapping type 0x%x\n",
+ PCI_MAPREG_MEM_TYPE(mask));
+ continue;
+ }
+
+ if (!PCI_MAPREG_MEM_PREFETCHABLE(mask))
+ _pci_bus[bus].prefetch = 0;
+
+ if (pcinmemwin >= pcimaxmemwin) {
+ PRINTF ("pci: too many memory windows\n");
+ continue;
+ }
+ pm = &pcimemwin[pcinmemwin++];
+
+ pm->dev = pd;
+ pm->reg = reg;
+ pm->size = -(PCI_MAPREG_MEM_ADDR(mask));
+ pd->nmemwin++;
+ }
+ }
+
+ /* Finally check for Expansion ROM */
+ if (mapreg_rom != PCI_MAPREG_NONE) {
+ reg = mapreg_rom;
+ old = pci_conf_read(tag, reg);
+ pci_conf_write(tag, reg, 0xfffffffe);
+ mask = pci_conf_read(tag, reg);
+ pci_conf_write(tag, reg, old);
+
+ /* 0 if not implemented, 0xfffffffe or 0xffffffff if device
+ broken and/or register not implemented. */
+ if (mask != 0 && mask != 0xfffffffe && mask != 0xffffffff) {
+ if (_pciverbose >= 3)
+ pci_tagprintf (tag, "reg 0x%x = 0x%x\n", reg, mask);
+
+ if (pcinmemwin >= pcimaxmemwin) {
+ PRINTF ("pci: too many memory windows\n");
+ goto done;
+ }
+
+ pm = &pcimemwin[pcinmemwin++];
+ pm->dev = pd;
+ pm->reg = reg;
+ pm->size = -(PCI_MAPREG_ROM_ADDR(mask));
+ pd->nmemwin++;
+ }
+ }
+
+done:
+ cmd |= PCI_COMMAND_INVALIDATE_ENABLE; /* any reason not to? */
+ pci_conf_write(tag, PCI_COMMAND_STATUS_REG, cmd);
+}
+
+static void
+pci_query_dev (int bus, int device)
+{
+ pcitag_t tag;
+ pcireg_t bhlc;
+ int probed, function, maxfunc;
+
+ tag = pci_make_tag(bus, device, 0);
+ if (!pci_canscan (tag))
+ return;
+
+ if (_pciverbose >= 2)
+ pci_bdfprintf (bus, device, -1, "probe...");
+
+ probed = pci_probe_tag(tag);
+
+ if (_pciverbose >= 2)
+ PRINTF ("completed\n");
+
+ if (!probed)
+ return;
+
+ bhlc = pci_conf_read(tag, PCI_BHLC_REG);
+ maxfunc = PCI_HDRTYPE_MULTIFN(bhlc) ? PCI_FUNCMAX : 0;
+
+ for (function = 0; function <= maxfunc; function++) {
+ tag = pci_make_tag(bus, device, function);
+ if (pci_probe_tag(tag))
+ pci_query_dev_func(tag);
+ }
+
+ if (_pciverbose >= 2)
+ pci_bdfprintf (bus, device, -1, "done\n");
+}
+
+
+static void
+pci_query (int bus)
+{
+ int device;
+ struct pci_bus *pb = &_pci_bus[bus];
+ pcireg_t sec_status;
+ unsigned int def_ltim, max_ltim;
+
+ if (bus != 0) {
+ sec_status = pci_conf_read(pb->tag, PPB_IO_STATUS_REG);
+ pb->fast_b2b = (sec_status & PCI_STATUS_BACKTOBACK_SUPPORT) ? 1 : 0;
+ pb->freq66 = (sec_status & PCI_STATUS_66MHZ_SUPPORT) ? 1 : 0;
+ }
+
+ if (pb->no_probe)
+ pb->ndev = 0;
+ else {
+ for (device = 0; device <= PCI_DEVMAX; device++)
+ pci_query_dev (bus, device);
+ }
+
+ if (pb->ndev != 0) {
+ /* convert largest minimum grant time to cycle count */
+ max_ltim = pb->min_gnt * (pb->freq66 ? 66 : 33) / 4;
+
+ /* now see how much bandwidth is left to distribute */
+ if (pb->bandwidth <= 0) {
+ pci_bdfprintf (bus, -1, -1, "warning: total bandwidth exceeded\n");
+ def_ltim = 1;
+ } else {
+ /* calculate a fair share for each device */
+ def_ltim = pb->bandwidth / pb->ndev;
+ if (def_ltim > pb->max_lat)
+ /* that would exceed critical time for some device */
+ def_ltim = pb->max_lat;
+ /* convert to cycle count */
+ def_ltim = def_ltim * (pb->freq66 ? 66 : 33) / 4;
+ }
+ /* most devices don't implement bottom three bits, so round up */
+ def_ltim = (def_ltim + 7) & ~7;
+ max_ltim = (max_ltim + 7) & ~7;
+
+ pb->def_ltim = MIN (def_ltim, 255);
+ pb->max_ltim = MIN (MAX (max_ltim, def_ltim), 255);
+ }
+}
+
+
+static int
+wincompare (const void *a, const void *b)
+{
+ const struct pciwin *wa = a, *wb = b;
+ if (wa->dev->bus != wb->dev->bus)
+ /* sort into ascending order of bus number */
+ return (int)(wa->dev->bus - wb->dev->bus);
+ else
+ /* sort into descending order of size */
+ return (int)(wb->size - wa->size);
+}
+
+
+static pcireg_t
+pci_allocate_io(pcitag_t tag, size_t size)
+{
+ pcireg_t address;
+
+ /* allocate upwards after rounding to size boundary */
+ address = (pciioaddr.next + (size - 1)) & ~(size - 1);
+ if (address < pciioaddr.next || address + size > pciioaddr.limit)
+ return -1;
+ pciioaddr.next = address + size;
+ return address;
+}
+
+static pcireg_t
+pci_align_io_addr(pcireg_t addr)
+{
+ /* align to appropriate bridge boundaries (4K for Rev 1.1 Bridge Arch).
+ Over/underflow will show up in subsequent allocations. */
+ return (addr + ((1 << 12)-1)) & ~((1 << 12)-1);
+}
+
+static void
+pci_assign_iowins(int bus, struct pciwin *pi_first, struct pciwin *pi_limit)
+{
+ struct pciwin *pi;
+ struct pci_bus *pb = &_pci_bus[bus];
+ pcireg_t t; /* for pushing writes */
+
+ pciioaddr.next = pci_align_io_addr(pciioaddr.next);
+
+ /* Pass 1 errata work around. Avoid assigning any real devices
+ at the base address of the LDT host bridge. */
+ if (bus == lhb_secondary_bus) {
+ pb->min_io_addr = pciioaddr.next;
+ pciioaddr.next += (1 << 12);
+ pb->max_io_addr = pciioaddr.next - 1;
+ }
+
+ for (pi = pi_first; pi < pi_limit; pi++) {
+ struct pcidev *pd = pi->dev;
+ pcitag_t tag = pd->pa->pa_tag;
+ pcireg_t base;
+
+ if (pd->niowin < 0)
+ continue;
+ pi->address = pci_allocate_io (tag, pi->size);
+ if (pi->address == -1) {
+ pci_tagprintf (tag,
+ "not enough PCI i/o space (%ld requested)\n",
+ (long)pi->size);
+ pd->nmemwin = pd->niowin = -1;
+ continue;
+ }
+
+ if (pi->address < pb->min_io_addr)
+ pb->min_io_addr = pi->address;
+ if (pi->address + pi->size - 1 > pb->max_io_addr)
+ pb->max_io_addr = pi->address + pi->size - 1;
+
+ if (_pciverbose >= 2)
+ pci_tagprintf (tag,
+ "I/O BAR at 0x%x gets %ld bytes @ 0x%x\n",
+ pi->reg, (long)pi->size, pi->address);
+ base = pci_conf_read(tag, pi->reg);
+ base = (base & ~PCI_MAPREG_IO_ADDR_MASK) | pi->address;
+ pci_conf_write(tag, pi->reg, base);
+ t = pci_conf_read(tag, pi->reg);
+ }
+
+ if (pb->min_io_addr < pb->max_io_addr) {
+ /* if any io on bus, expand to valid bridge limit */
+ pb->max_io_addr |= ((1 << 12)-1);
+ pciioaddr.next = pb->max_io_addr + 1;
+ }
+
+ /* More Pass 1 errata work around. Make sure the 32 bytes beyond
+ the LDT window are not allocated by reserving an entire quantum
+ of io space. */
+ if (bus == lhb_subordinate_bus) {
+ pciioaddr.next = pci_align_io_addr(pciioaddr.next) + (1 << 12);
+ }
+}
+
+static void
+pci_setup_iowins (void)
+{
+ struct pciwin *pi, *pi_first, *pi_limit;
+ int bus;
+
+ qsort(pciiowin, pciniowin, sizeof(struct pciwin), wincompare);
+ pi_first = pciiowin;
+ pi_limit = &pciiowin[pciniowin];
+
+ for (bus = 0; bus < _pci_nbus; bus++) {
+ pi = pi_first;
+ while (pi != pi_limit && pi->dev->bus == bus)
+ pi++;
+ pci_assign_iowins(bus, pi_first, pi);
+ pi_first = pi;
+ }
+}
+
+
+static pcireg_t
+pci_allocate_mem(pcitag_t tag, size_t size)
+{
+ pcireg_t address;
+
+ /* allocate upwards after rounding to size boundary */
+ address = (pcimemaddr.next + (size - 1)) & ~(size - 1);
+ if (address < pcimemaddr.next || address + size > pcimemaddr.limit)
+ return -1;
+ pcimemaddr.next = address + size;
+ return address;
+}
+
+static pcireg_t
+pci_align_mem_addr(pcireg_t addr)
+{
+ /* align to appropriate bridge boundaries (1M for Rev 1.1 Bridge Arch).
+ Over/underflow will show up in subsequent allocations. */
+ return (addr + ((1 << 20)-1)) & ~((1 << 20)-1);
+}
+
+static void
+pci_assign_memwins(int bus, struct pciwin *pm_first, struct pciwin *pm_limit)
+{
+ struct pciwin *pm;
+ struct pci_bus *pb = &_pci_bus[bus];
+ pcireg_t t; /* for pushing writes */
+
+ pcimemaddr.next = pci_align_mem_addr(pcimemaddr.next);
+
+ /* Pass 1 errata work around. Avoid assigning any real devices
+ at the base address of the LDT host bridge. */
+ if (bus == lhb_secondary_bus) {
+ pb->min_mem_addr = pcimemaddr.next;
+ pcimemaddr.next += (1 << 20);
+ pb->max_mem_addr = pcimemaddr.next - 1;
+ }
+
+ for (pm = pm_first; pm < pm_limit; ++pm) {
+ struct pcidev *pd = pm->dev;
+ pcitag_t tag = pd->pa->pa_tag;
+
+ if (pd->nmemwin < 0)
+ continue;
+ pm->address = pci_allocate_mem (tag, pm->size);
+ if (pm->address == -1) {
+ pci_tagprintf (tag,
+ "not enough PCI mem space (%ld requested)\n",
+ (long)pm->size);
+ pd->nmemwin = pd->niowin = -1;
+ continue;
+ }
+ if (_pciverbose >= 2)
+ pci_tagprintf (tag,
+ "%s BAR at 0x%x gets %ld bytes @ 0x%x\n",
+ pm->reg != PCI_MAPREG_ROM ? "MEM" : "ROM",
+ pm->reg, (long)pm->size, pm->address);
+
+ if (pm->address < pb->min_mem_addr)
+ pb->min_mem_addr = pm->address;
+ if (pm->address + pm->size - 1 > pb->max_mem_addr)
+ pb->max_mem_addr = pm->address + pm->size - 1;
+
+ if (pm->reg != PCI_MAPREG_ROM) {
+ /* normal memory - expansion rom done below */
+ pcireg_t base = pci_conf_read(tag, pm->reg);
+ base = pm->address | (base & ~PCI_MAPREG_MEM_ADDR_MASK);
+ pci_conf_write(tag, pm->reg, base);
+ t = pci_conf_read(tag, pm->reg);
+ if (PCI_MAPREG_MEM_TYPE(t) == PCI_MAPREG_MEM_TYPE_64BIT) {
+ pci_conf_write(tag, pm->reg + 4, 0);
+ t = pci_conf_read(tag, pm->reg + 4);
+ }
+ }
+ }
+
+ /* align final bus window */
+ if (pb->min_mem_addr < pb->max_mem_addr) {
+ pb->max_mem_addr |= ((1 << 20) - 1);
+ pcimemaddr.next = pb->max_mem_addr + 1;
+ }
+
+ /* More pass 1 errata work around. Make sure the next 32 bytes
+ beyond the LDT window are not used by reserving an entire
+ quantum of PCI memory space. */
+ if (bus == lhb_subordinate_bus) {
+ pcimemaddr.next = pci_align_mem_addr(pcimemaddr.next) + (1 << 20);
+ }
+}
+
+static void
+pci_setup_memwins (void)
+{
+ struct pciwin *pm, *pm_first, *pm_limit;
+ int bus;
+
+ qsort(pcimemwin, pcinmemwin, sizeof(struct pciwin), wincompare);
+ pm_first = pcimemwin;
+ pm_limit = &pcimemwin[pcinmemwin];
+
+ for (bus = 0; bus < _pci_nbus; bus++) {
+ pm = pm_first;
+ while (pm != pm_limit && pm->dev->bus == bus)
+ pm++;
+ pci_assign_memwins(bus, pm_first, pm);
+ pm_first = pm;
+ }
+
+ /* Program expansion rom address base after normal memory base,
+ to keep DEC ethernet chip happy */
+ for (pm = pcimemwin; pm < pm_limit; pm++) {
+ if (pm->reg == PCI_MAPREG_ROM && pm->address != -1) {
+ struct pcidev *pd = pm->dev; /* expansion rom */
+ pcitag_t tag = pd->pa->pa_tag;
+ pcireg_t base;
+ pcireg_t t; /* for pushing writes */
+
+ /* Do not enable ROM at this time -- PCI spec 2.2 s6.2.5.2 last
+ paragraph, says that if the expansion ROM is enabled, accesses
+ to other registers via the BARs may not be done by portable
+ software!!! */
+ base = pci_conf_read(tag, pm->reg);
+ base = pm->address | (base & ~PCI_MAPREG_ROM_ADDR_MASK);
+ base &= ~PCI_MAPREG_ROM_ENABLE;
+ pci_conf_write(tag, pm->reg, base);
+ t = pci_conf_read(tag, pm->reg);
+ }
+ }
+}
+
+
+static void
+pci_setup_ppb(pci_flags_t flags)
+{
+ int i;
+
+ for (i = _pci_nbus - 1; i > 0; i--) {
+ struct pci_bus *psec = &_pci_bus[i];
+ struct pci_bus *ppri = &_pci_bus[psec->primary];
+ if (ppri->min_io_addr > psec->min_io_addr)
+ ppri->min_io_addr = psec->min_io_addr;
+ if (ppri->max_io_addr < psec->max_io_addr)
+ ppri->max_io_addr = psec->max_io_addr;
+ if (ppri->min_mem_addr > psec->min_mem_addr)
+ ppri->min_mem_addr = psec->min_mem_addr;
+ if (ppri->max_mem_addr < psec->max_mem_addr)
+ ppri->max_mem_addr = psec->max_mem_addr;
+ }
+
+ if (_pciverbose >= 2) {
+ struct pci_bus *pb = &_pci_bus[0];
+ if (pb->min_io_addr < pb->max_io_addr)
+ pci_bdfprintf (0, -1, -1, "io 0x%08x-0x%08x\n",
+ pb->min_io_addr, pb->max_io_addr);
+ if (pb->min_mem_addr < pb->max_mem_addr)
+ pci_bdfprintf (0, -1, -1, "mem 0x%08x-0x%08x\n",
+ pb->min_mem_addr, pb->max_mem_addr);
+ }
+
+ for (i = 1; i < _pci_nbus; i++) {
+ struct pci_bus *pb = &_pci_bus[i];
+ pcireg_t cmd;
+ pcireg_t iodata, memdata;
+ pcireg_t brctl;
+ pcireg_t t; /* for pushing writes */
+
+ cmd = pci_conf_read(pb->tag, PCI_COMMAND_STATUS_REG);
+ if (_pciverbose >= 2)
+ pci_bdfprintf (i, -1, -1, "subordinate to bus %d\n", pb->primary);
+
+ cmd |= PCI_COMMAND_MASTER_ENABLE;
+ if (pb->min_io_addr < pb->max_io_addr) {
+ uint32_t io_limit;
+
+ /* Pass 1 work-round: limits are next free, not last used. */
+ io_limit = pb->max_io_addr;
+ if (i == lhb_secondary_bus)
+ io_limit++;
+
+ cmd |= PCI_COMMAND_IO_ENABLE;
+ if (_pciverbose >= 2)
+ pci_bdfprintf (i, -1, -1, "io 0x%08x-0x%08x\n",
+ pb->min_io_addr, io_limit);
+ iodata = pci_conf_read(pb->tag, PPB_IO_STATUS_REG);
+ if ((iodata & PPB_IO_ADDR_CAP_MASK) == PPB_IO_ADDR_CAP_32) {
+ pcireg_t upperdata;
+
+ upperdata = ((pb->min_io_addr) >> 16) & PPB_IO_UPPER_BASE_MASK;
+ upperdata |= (io_limit & PPB_IO_UPPER_LIMIT_MASK);
+ pci_conf_write(pb->tag, PPB_IO_UPPER_REG, upperdata);
+ }
+ iodata = (iodata & ~PPB_IO_BASE_MASK)
+ | ((pb->min_io_addr >> 8) & 0xf0);
+ iodata = (iodata & ~PPB_IO_LIMIT_MASK)
+ | ((io_limit & PPB_IO_LIMIT_MASK) & 0xf000);
+ } else {
+ /* Force an empty window */
+ iodata = pci_conf_read(pb->tag, PPB_IO_STATUS_REG);
+ iodata &=~ (PPB_IO_BASE_MASK | PPB_IO_LIMIT_MASK);
+ iodata |= (1 << 4) | (0 << (8+4));
+ }
+ pci_conf_write(pb->tag, PPB_IO_STATUS_REG, iodata);
+ /* Push the write (see SB-1250 Errata, Section 8.10) */
+ t = pci_conf_read(pb->tag, PPB_IO_STATUS_REG);
+
+ if (pb->min_mem_addr < pb->max_mem_addr) {
+ uint32_t mem_limit;
+
+ /* SB-1250 pass 1 workaround: limit is next free, not last used */
+ mem_limit = pb->max_mem_addr;
+ if (i == lhb_secondary_bus)
+ mem_limit++;
+
+ cmd |= PCI_COMMAND_MEM_ENABLE;
+ if (_pciverbose >= 2)
+ pci_bdfprintf (i, -1, -1, "mem 0x%08x-0x%08x\n",
+ pb->min_mem_addr, mem_limit);
+ memdata = pci_conf_read(pb->tag, PPB_MEM_REG);
+ memdata = (memdata & ~PPB_MEM_BASE_MASK)
+ | ((pb->min_mem_addr >> 16) & 0xfff0);
+ memdata = (memdata & ~PPB_MEM_LIMIT_MASK)
+ | ((mem_limit & PPB_MEM_LIMIT_MASK) & 0xfff00000);
+ } else {
+ /* Force an empty window */
+ memdata = pci_conf_read(pb->tag, PPB_MEM_REG);
+ memdata &=~ (PPB_MEM_BASE_MASK | PPB_MEM_LIMIT_MASK);
+ memdata |= (1 << 4) | (0 << (16+4));
+ }
+ pci_conf_write(pb->tag, PPB_MEM_REG, memdata);
+ /* Push the write (see SB-1250 Errata, Section 8.10) */
+ t = pci_conf_read(pb->tag, PPB_MEM_REG);
+
+ /* Force an empty prefetchable memory window */
+ memdata = pci_conf_read(pb->tag, PPB_PREFMEM_REG);
+ memdata &=~ (PPB_MEM_BASE_MASK | PPB_MEM_LIMIT_MASK);
+ memdata |= (1 << 4) | (0 << (16+4));
+ pci_conf_write(pb->tag, PPB_PREFMEM_REG, memdata);
+ /* Push the write (see SB-1250 Errata, Section 8.10) */
+ t = pci_conf_read(pb->tag, PPB_PREFMEM_REG);
+
+ /* Do any final bridge dependent initialization */
+ pci_bridge_setup(pb->tag, flags);
+
+ brctl = pci_conf_read(pb->tag, PPB_BRCTL_INTERRUPT_REG);
+#ifdef _SB1250_PASS2_
+ /* LDT MasterAborts _will_ cause bus errors in pass 2 when
+ enabled. Pending negotiations with clients, leave
+ MasterAbortMode off to disable their propagation. */
+#else
+ brctl |= (PPB_BRCTL_SERR_ENABLE | PPB_BRCTL_MASTER_ABORT_MODE);
+#endif
+ if (pb->fast_b2b)
+ brctl |= PPB_BRCTL_BACKTOBACK_ENABLE;
+ pci_conf_write(pb->tag, PPB_BRCTL_INTERRUPT_REG, brctl);
+ t = pci_conf_read(pb->tag, PPB_BRCTL_INTERRUPT_REG); /* push */
+
+ pci_conf_write(pb->tag, PCI_COMMAND_STATUS_REG, cmd);
+ }
+}
+
+
+int
+pci_cacheline_log2 (void)
+{
+ /* default to 8 words == 2^3 */
+ return 3;
+}
+
+
+int
+pci_maxburst_log2 (void)
+{
+ return 32; /* no limit */
+}
+
+static void
+pci_setup_devices (pci_flags_t flags)
+{
+ struct pcidev *pd;
+
+ /* Enable each PCI interface */
+ for (pd = pcidev; pd < &pcidev[pcindev]; pd++) {
+ struct pci_bus *pb = &_pci_bus[pd->bus];
+ pcitag_t tag = pd->pa->pa_tag;
+ pcireg_t cmd, misc;
+ unsigned int ltim;
+
+ /* Consider setting interrupt line here */
+
+ cmd = pci_conf_read(tag, PCI_COMMAND_STATUS_REG);
+ cmd |= PCI_COMMAND_MASTER_ENABLE
+ | PCI_COMMAND_SERR_ENABLE
+ | PCI_COMMAND_PARITY_ENABLE;
+ /* Always enable i/o & memory space, in case this card is
+ just snarfing space from the fixed ISA block and doesn't
+ declare separate PCI space. */
+ cmd |= PCI_COMMAND_IO_ENABLE | PCI_COMMAND_MEM_ENABLE;
+ if (pb->fast_b2b)
+ cmd |= PCI_COMMAND_BACKTOBACK_ENABLE;
+
+ /* Write status too, to clear any pending error bits. */
+ pci_conf_write(tag, PCI_COMMAND_STATUS_REG, cmd);
+
+ ltim = pd->min_gnt * (pb->freq66 ? 66 : 33) / 4;
+ ltim = MIN (MAX (pb->def_ltim, ltim), pb->max_ltim);
+
+ misc = pci_conf_read (tag, PCI_BHLC_REG);
+ PCI_LATTIMER_SET (misc, ltim);
+ PCI_CACHELINE_SET (misc, 1 << pci_cacheline_log2());
+ pci_conf_write (tag, PCI_BHLC_REG, misc);
+
+ pci_device_setup (tag); /* hook for post setup */
+ }
+}
+
+
+void
+pci_configure (pci_flags_t flags)
+{
+ int bus;
+
+#if (PCI_DEBUG > 1)
+ _pciverbose = 3;
+#else
+ _pciverbose = (flags & PCI_FLG_VERBOSE);
+#endif
+ _pci_devinfo_func = (_pciverbose != 0) ? pci_devinfo : NULL;
+ pciarg = NULL;
+
+ /* SB-1250 pass 1 workaround: discover LHB buses during traversal. */
+ lhb_secondary_bus = lhb_subordinate_bus = -1;
+
+ /* initialise the host bridge(s) */
+ SBD_DISPLAY ("PCIH");
+ if (pci_hwinit(flags) < 0)
+ return;
+
+ /* initialise any PCI-PCI bridges, discover and number buses */
+ SBD_DISPLAY ("PCIB");
+ pcindev = 0;
+ pci_businit(0, flags);
+
+ /* scan configuration space of all devices to collect attributes */
+ SBD_DISPLAY ("PCIS");
+ pcimaxdev = pcindev;
+ pciarg = (struct pci_attach_args *) KMALLOC (pcimaxdev * sizeof(struct pci_attach_args), 0);
+ if (pciarg == NULL) {
+ PRINTF ("pci: no memory for device table\n");
+ pcimaxdev = 0;
+ } else {
+ pcidev = (struct pcidev *) KMALLOC (pcimaxdev * sizeof(struct pcidev), 0);
+ if (pcidev == NULL) {
+ KFREE (pciarg); pciarg = NULL;
+ PRINTF ("pci: no memory for device attribute table\n");
+ pcimaxdev = 0;
+ }
+ }
+ pcindev = 0;
+
+ pcimaxmemwin = PCIMAX_DEV * PCIMAX_MEMWIN;
+ pcimemwin = (struct pciwin *) KMALLOC (pcimaxmemwin * sizeof(struct pciwin), 0);
+ if (pcimemwin == NULL) {
+ PRINTF ("pci: no memory for window table\n");
+ pcimaxmemwin = 0;
+ }
+ pcimaxiowin = PCIMAX_DEV * PCIMAX_IOWIN;
+ pciiowin = (struct pciwin *) KMALLOC (pcimaxiowin * sizeof(struct pciwin), 0);
+ if (pciiowin == NULL) {
+ PRINTF ("pci: no memory for window table\n");
+ pcimaxiowin = 0;
+ }
+
+ pcinmemwin = pciniowin = 0;
+ for (bus = 0; bus < _pci_nbus; bus++) {
+ pci_query (bus);
+ }
+
+ if (pcindev != pcimaxdev) {
+ panic ("Inconsistent device count\n");
+ return;
+ }
+
+ /* alter PCI bridge parameters based on query data */
+ pci_hwreinit (flags);
+
+ /* setup the individual device windows */
+ pcimemaddr.base = minpcimemaddr;
+ pcimemaddr.limit = maxpcimemaddr;
+ pciioaddr.base = minpciioaddr;
+ pciioaddr.limit = maxpciioaddr;
+
+ pcimemaddr.next = pcimemaddr.base;
+ pciioaddr.next = pciioaddr.base;
+ pci_setup_iowins ();
+ pci_setup_memwins ();
+
+ /* set up and enable each device */
+ if (_pci_nbus > 1)
+ pci_setup_ppb (flags);
+ pci_setup_devices (flags);
+
+ KFREE (pciiowin); pciiowin = NULL;
+ KFREE (pcimemwin); pcimemwin = NULL;
+ KFREE (pcidev); pcidev = NULL;
+
+ _pci_enumerated = 1;
+}
+
+
+int
+pci_foreachdev(int (*fn)(pcitag_t tag))
+{
+ int i, rv;
+
+ for (i = 0, rv = 0; i < pcindev && rv == 0; i++)
+ rv = (*fn)(pciarg[i].pa_tag);
+
+ return rv;
+}
+
+
+static int
+dump_configuration(pcitag_t tag)
+{
+ pci_tagprintf(tag, "dump of ");
+ pci_conf_print(tag);
+ return 0;
+}
+
+void
+pci_show_configuration(void)
+{
+ pci_foreachdev(dump_configuration);
+}
+
+int
+pci_find_class(uint32_t class, int enumidx, pcitag_t *tag)
+{
+ int i;
+ struct pci_attach_args *thisdev;
+
+ thisdev = pciarg;
+ for (i = 0; i < pcindev && enumidx >= 0; i++) {
+ if (PCI_CLASS(thisdev->pa_class) == class) {
+ if (enumidx == 0) {
+ *tag = thisdev->pa_tag;
+ return 0;
+ } else {
+ enumidx--;
+ }
+ }
+ thisdev++;
+ }
+
+ return -1;
+}
+
+int
+pci_find_device(uint32_t vid, uint32_t did, int enumidx, pcitag_t *tag)
+{
+ int i;
+ struct pci_attach_args *thisdev;
+
+ thisdev = pciarg;
+ for (i = 0; i < pcindev && enumidx >= 0; i++) {
+ if ((PCI_VENDOR(thisdev->pa_id) == vid) &&
+ (PCI_PRODUCT(thisdev->pa_id) == did)) {
+ if (enumidx == 0) {
+ *tag = thisdev->pa_tag;
+ return 0;
+ } else {
+ enumidx--;
+ }
+ }
+ thisdev++;
+ }
+
+ return -1;
+}
diff --git a/cfe/cfe/pci/pcidevs b/cfe/cfe/pci/pcidevs
new file mode 100644
index 0000000..65b03ab
--- /dev/null
+++ b/cfe/cfe/pci/pcidevs
@@ -0,0 +1,1355 @@
+$pcidevs 2002/09/03 broadcom $
+
+/*
+ * Copyright (c) 1995, 1996 Christopher G. Demetriou
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Christopher G. Demetriou
+ * for the NetBSD Project.
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * NOTE: a fairly complete list of PCI codes can be found at:
+ *
+ * http://members.hyperlink.net.au/~chart/pci.htm
+ *
+ * which replaces the database found at
+ *
+ * http://www.yourvote.com/pci/
+ *
+ * (but it doesn't always seem to match vendor documentation)
+ */
+
+/*
+ * List of known PCI vendors. This list has been trimmed to include
+ * only vendors with products appearing in the lists below.
+ */
+
+vendor COMPAQ 0x0e11 Compaq
+vendor SYMBIOS 0x1000 Symbios Logic
+vendor ATI 0x1002 ATI Technologies
+vendor ULSI 0x1003 ULSI Systems
+vendor VLSI 0x1004 VLSI Technology
+vendor AVANCE 0x1005 Avance Logic
+vendor NS 0x100b National Semiconductor
+vendor TSENG 0x100c Tseng Labs
+vendor WEITEK 0x100e Weitek
+vendor DEC 0x1011 Digital Equipment
+vendor CIRRUS 0x1013 Cirrus Logic
+vendor IBM 0x1014 IBM
+vendor WD 0x101c Western Digital
+vendor AMD 0x1022 Advanced Micro Devices
+vendor TRIDENT 0x1023 Trident Microsystems
+vendor ACER 0x1025 Acer
+vendor MATROX 0x102b Matrox
+vendor CHIPS 0x102c Chips and Technologies
+vendor TOSHIBA 0x102f Toshiba America
+vendor NEC 0x1033 NEC
+vendor FUTUREDOMAIN 0x1036 Future Domain
+vendor SIS 0x1039 Silicon Integrated System
+vendor HP 0x103c Hewlett-Packard
+vendor PCTECH 0x1042 PC Technology
+vendor DPT 0x1044 Distributed Processing Technology
+vendor OPTI 0x1045 Opti
+vendor ELSA 0x1048 Elsa
+vendor SGSTHOMSON 0x104a SGS Thomson Microelectric
+vendor BUSLOGIC 0x104b BusLogic
+vendor TI 0x104c Texas Instruments
+vendor SONY 0x104d Sony
+vendor OAKTECH 0x104e Oak Technology
+vendor WINBOND 0x1050 Winbond Electronics
+vendor MOT 0x1057 Motorola
+vendor PROMISE 0x105a Promise Technology
+vendor NUMBER9 0x105d Number 9 Computer Company
+vendor UMC 0x1060 United Microelectronics
+vendor ITT 0x1061 I. T. T.
+vendor MYLEX 0x1069 Mylex
+vendor APPLE 0x106b Apple Computer
+vendor YAMAHA 0x1073 Yamaha
+vendor NEXGEN 0x1074 NexGen Microsystems
+vendor QLOGIC 0x1077 Q Logic
+vendor LEADTEK 0x107d LeadTek Research
+vendor CONTAQ 0x1080 Contaq Microsystems
+vendor BIT3 0x108a Bit3 Computer Corp.
+vendor OLICOM 0x108d Olicom
+vendor SUN 0x108e Sun Microsystems
+vendor INTERGRAPH 0x1091 Intergraph
+vendor DIAMOND 0x1092 Diamond Computer Systems
+vendor CMDTECH 0x1095 CMD Technology
+vendor QUANTUMDESIGNS 0x1098 Quantum Designs
+vendor BROOKTREE 0x109e Brooktree
+vendor SGI 0x10a9 Silicon Graphics
+vendor ACC 0x10aa ACC Microelectronics
+vendor SYMPHONY 0x10ad Symphony Labs
+vendor PLX 0x10b5 PLX Technology
+vendor MADGE 0x10b6 Madge Networks
+vendor 3COM 0x10B7 3Com
+vendor SMC 0x10b8 Standard Microsystems
+vendor ALI 0x10b9 Acer Labs
+vendor SURECOM 0x10bd Surecom Technology
+vendor SAMSUNGSEMI 0x10c3 Samsung Semiconductors
+vendor NEOMAGIC 0x10c8 Neomagic
+vendor ADVSYS 0x10cd Advanced System Products
+vendor MACRONIX 0x10d9 Macronix
+vendor ES 0x10dd Evans & Sutherland
+vendor NVIDIA 0x10de Nvidia Corporation
+vendor EMULEX 0x10df Emulex
+vendor IMS 0x10e0 Integrated Micro Solutions
+vendor TEKRAM 0x10e1 Tekram Technology (1st PCI Vendor ID)
+vendor NEWBRIDGE 0x10e3 Newbridge Microsystems / Tundra Semiconductor
+vendor AMCIRCUITS 0x10e8 Applied Micro Circuits
+vendor REALTEK 0x10ec Realtek Semiconductor
+vendor NKK 0x10f5 NKK Corporation
+vendor INITIO 0x1101 Initio
+vendor CREATIVELABS 0x1102 Creative Labs
+vendor TRIONES 0x1103 Triones Technologies
+vendor SIGMA 0x1105 Sigma Designs
+vendor VIATECH 0x1106 VIA Technologies
+vendor COGENT 0x1109 Cogent Data Technologies
+vendor RNS 0x1112 RNS
+vendor ACCTON 0x1113 Accton Technology
+vendor VORTEX 0x1119 Vortex Computer Systems
+vendor EFFICIENTNETS 0x111a Efficent Networks
+vendor IDT 0x111d IDT
+vendor FORE 0x1127 FORE Systems
+vendor ZIATECH 0x1138 Ziatech
+vendor ALLIANCE 0x1142 Alliance Semiconductor
+vendor SCHNEIDERKOCH 0x1148 Schneider & Koch
+vendor MUTECH 0x1159 Mutech
+vendor XIRCOM 0x115d Xircom
+vendor ALTERA 0x1172 Altera Corporation
+vendor TOSHIBA2 0x1179 Toshiba America Info Systems
+vendor RICOH 0x1180 Ricoh
+vendor DLINK 0x1186 D-Link Systems
+vendor COROLLARY 0x118c Corrollary
+vendor ACARD 0x1191 Acard
+vendor ZEINET 0x1193 Zeinet
+vendor GALILEO 0x11ab Galileo Technology
+vendor LITEON 0x11ad Lite-On Communications
+vendor V3 0x11b0 V3 Semiconductor
+vendor LUCENT 0x11c1 AT&T Microelectronics
+vendor DOLPHIN 0x11c8 Dolphin Interconnect Solutions
+vendor AURAVISION 0x11d1 Auravision
+vendor ZORAN 0x11de Zoran Corporation
+vendor COMPEX 0x11f6 Compex
+vendor PMCSIERRA 0x11f8 PMC-Sierra
+vendor CYCLADES 0x120e Cyclades
+vendor ESSENTIAL 0x120f Essential Communications
+vendor O2MICRO 0x1217 O2 Micro Inc
+vendor 3DFX 0x121a 3Dfx Interactive
+vendor CCUBE 0x123f C-Cube Microsystems
+vendor AVM 0x1244 AVM
+vendor LINEARSYS 0x1254 Linear Systems
+vendor ASIX 0x125b ASIX Electronics
+vendor ESSTECH 0x125d ESS Technology Inc
+vendor SILMOTION 0x126f Silicon Motion
+vendor ENSONIQ 0x1274 Ensoniq
+vendor DAVICOM 0x1282 Davicom Semiconductor
+vendor ESSTECH2 0x1285 ESS Technology Inc
+vendor TRITECH 0x1292 TriTech Microelectronics
+vendor ALTEON 0x12ae Alteon
+vendor RISCOM 0x12aa RISCom
+vendor USR 0x12b9 US Robotics (3Com)
+vendor NVIDIA_SGS 0x12d2 Nvidia Corporation & SGS Thomson Microelectric
+vendor AUREAL 0x12eb Aureal Semiconductor
+vendor ADMTEK 0x1317 ADMtek
+vendor FORTEMEDIA 0x1319 Forte Media
+vendor DOMEX 0x134a Domex
+vendor LMC 0x1376 LAN Media Corporation
+vendor API 0x14d9 API Networks
+vendor CONEXANT 0x14f1 Conexant Systems
+vendor NETGEAR 0x1385 Netgear
+vendor 3WARE 0x13c1 3ware
+vendor SUNDANCETI 0x13f0 Sundance Technology
+vendor CMEDIA 0x13f6 C-Media Electronics Inc
+vendor DELTA 0x1500 Delta Electronics
+vendor SOLIDUM 0x1588 Solidum Systems Corp.
+vendor SIBYTE 0x166d SiByte, Inc.
+vendor SYMPHONY2 0x1c1c Symphony Labs (2nd PCI Vendor ID)
+vendor TEKRAM2 0x1de1 Tekram Technology (2nd PCI Vendor ID)
+vendor BROADCOM 0x14e4 Broadcom
+vendor 3DLABS 0x3d3d 3D Labs
+vendor AVANCE2 0x4005 Avance Logic (2nd PCI Vendor ID)
+vendor ADDTRON 0x4033 Addtron Technology
+vendor NETVIN 0x4a14 NetVin
+vendor S3 0x5333 S3
+vendor C4T 0x6374 c't Magazin
+vendor INTEL 0x8086 Intel
+vendor PROLAN 0x8c4a ProLAN
+vendor KTI 0x8e2e KTI
+vendor ADP 0x9004 Adaptec
+vendor ADP2 0x9005 Adaptec (2nd PCI Vendor ID)
+vendor ATRONICS 0x907f Atronics
+vendor ARC 0xedd8 ARC Logic
+vendor EPIGRAM 0xfeda Epigram
+vendor INVALID 0xffff INVALID VENDOR ID
+
+/*
+ * List of known products. Grouped by vendor.
+ */
+
+/* 3COM Products */
+product 3COM 3C985 0x0001 3c985 Gigabit Ethernet
+product 3COM 3C590 0x5900 3c590 Ethernet
+product 3COM 3C595TX 0x5950 3c595-TX 10/100 Ethernet
+product 3COM 3C595T4 0x5951 3c595-T4 10/100 Ethernet
+product 3COM 3C595MII 0x5952 3c595-MII 10/100 Ethernet
+product 3COM 3C900TPO 0x9000 3c900-TPO Ethernet
+product 3COM 3C900COMBO 0x9001 3c900-COMBO Ethernet
+product 3COM 3C905TX 0x9050 3c905-TX 10/100 Ethernet
+product 3COM 3C905T4 0x9051 3c905-T4 10/100 Ethernet
+product 3COM 3C900BTPO 0x9004 3c900B-TPO Ethernet
+product 3COM 3C900BCOMBO 0x9005 3c900B-COMBO Ethernet
+product 3COM 3C900BTPC 0x9006 3c900B-TPC Ethernet
+product 3COM 3C905BTX 0x9055 3c905B-TX 10/100 Ethernet
+product 3COM 3C905BT4 0x9056 3c905B-T4 10/100 Ethernet
+product 3COM 3C905BCOMBO 0x9058 3c905B-COMBO 10/100 Ethernet
+product 3COM 3C905BFX 0x905a 3c905B-FX 100 Ethernet
+product 3COM 3C905CTX 0x9200 3c905C-TX 10/100 Ethernet with mngmt
+product 3COM 3C980SRV 0x9800 3c980 Server Adapter 10/100 Ethernet
+product 3COM 3C980CTXM 0x9805 3c980C-TXM 10/100 Ethernet
+product 3COM 3CR990TX97 0x9903 3CR990-TX-97 10/100 Ethernet
+
+/* 3Dfx Interactive producs */
+product 3DFX VOODOO 0x0001 Voodoo
+product 3DFX VOODOO2 0x0002 Voodoo2
+product 3DFX BANSHEE 0x0003 Banshee
+product 3DFX VOODOO3 0x0005 Voodoo3
+
+/* 3D Labs products */
+product 3DLABS 300SX 0x0001 GLINT 300SX
+product 3DLABS 500TX 0x0002 GLINT 500TX
+product 3DLABS DELTA 0x0003 GLINT DELTA
+product 3DLABS PERMEDIA 0x0004 GLINT Permedia
+product 3DLABS 500MX 0x0006 GLINT 500MX
+product 3DLABS PERMEDI2 0x0007 GLINT Permedia 2
+
+/* 3ware products */
+product 3WARE ESCALADE 0x1000 Escalade IDE RAID
+
+/* ACC Products */
+product ACC 2188 0x0000 ACCM 2188 VL-PCI Bridge
+product ACC 2051_HB 0x2051 2051 PCI Single Chip Solution (host bridge)
+product ACC 2051_ISA 0x5842 2051 PCI Single Chip Solution (ISA bridge)
+
+/* Acard products */
+product ACARD AEC6710 0x8002 AEC6710 SCSI
+product ACARD AEC6712UW 0x8010 AEC6712UW SCSI
+product ACARD AEC6712U 0x8020 AEC6712U SCSI
+product ACARD AEC6712S 0x8030 AEC6712S SCSI
+product ACARD AEC6710D 0x8040 AEC6710D SCSI
+product ACARD AEC6715UW 0x8050 AEC6715UW SCSI
+
+/* Accton products */
+product ACCTON MPX5030 0x1211 MPX 5030/5038 Ethernet
+
+/* Acer products */
+product ACER M1435 0x1435 M1435 VL-PCI Bridge
+
+/* Acer Labs products */
+product ALI M1445 0x1445 M1445 VL-PCI Bridge
+product ALI M1449 0x1449 M1449 PCI-ISA Bridge
+product ALI M1451 0x1451 M1451 Host-PCI Bridge
+product ALI M1461 0x1461 M1461 Host-PCI Bridge
+product ALI M1531 0x1531 M1531 Host-PCI Bridge
+product ALI M1541 0x1541 M1541 Host-PCI Bridge
+product ALI M1543 0x1533 M1543 PCI-ISA Bridge
+product ALI M3309 0x3309 M3309 MPEG Decoder
+product ALI M4803 0x5215 M4803
+product ALI M5229 0x5229 M5229 UDMA IDE Controller
+product ALI M5237 0x5237 M5237 USB Host Controller
+product ALI M7101 0x7101 M7101 Power Management Controller
+
+/* Adaptec products */
+product ADP AIC7850 0x5078 AIC-7850
+product ADP AIC7855 0x5578 AIC-7855
+product ADP AIC5900 0x5900 AIC-5900 ATM
+product ADP AIC5905 0x5905 AIC-5905 ATM
+product ADP AIC6915 0x6915 AIC-6915 10/100 Ethernet
+product ADP AIC7860 0x6078 AIC-7860
+product ADP APA1480 0x6075 APA-1480 Ultra
+product ADP 2940AU 0x6178 AHA-2940A Ultra
+product ADP AIC7870 0x7078 AIC-7870
+product ADP 2940 0x7178 AHA-2940
+product ADP 3940 0x7278 AHA-3940
+product ADP 3985 0x7378 AHA-3985
+product ADP 2944 0x7478 AHA-2944
+product ADP AIC7895 0x7895 AIC-7895 Ultra
+product ADP AIC7880 0x8078 AIC-7880 Ultra
+product ADP 2940U 0x8178 AHA-2940 Ultra
+product ADP 3940U 0x8278 AHA-3940 Ultra
+product ADP 389XU 0x8378 AHA-389X Ultra
+product ADP 2944U 0x8478 AHA-2944 Ultra
+product ADP 2940UP 0x8778 AHA-2940 Ultra Pro
+
+product ADP2 2940U2 0x0010 AHA-2940 Ultra2
+product ADP2 2930U2 0x0011 AHA-2930 Ultra2
+product ADP2 AIC7890 0x001f AIC-7890/1
+product ADP2 3950U2B 0x0050 AHA-3950 Ultra2
+product ADP2 3950U2D 0x0051 AHA-3950 Ultra2
+product ADP2 AIC7896 0x005f AIC-7896/7
+
+/* Addtron Products */
+product ADDTRON 8139 0x1360 8139 Ethernet
+
+/* ADMtek products */
+product ADMTEK AL981 0x0981 ADMtek AL981 10/100 Ethernet
+
+/* Advanced System Products */
+product ADVSYS 1200A 0x1100
+product ADVSYS 1200B 0x1200
+product ADVSYS ULTRA 0x1300 ABP-930/40UA
+product ADVSYS WIDE 0x2300 ABP-940UW
+product ADVSYS U2W 0x2500 ASB-3940U2W
+product ADVSYS U3W 0x2700 ASB-3940U3W
+
+/* Alliance products */
+product ALLIANCE AT24 0x6424 AT24
+product ALLIANCE AT25 0x643d AT25
+
+/* Alteon products */
+product ALTEON ACENIC 0x0001 ACEnic Gigabit Ethernet
+
+/* AMD products */
+product AMD PCNET_PCI 0x2000 79c970 PCnet-PCI LANCE Ethernet
+product AMD PCNET_HOME 0x2001 79c978 PCnet-PCI Home
+product AMD PCSCSI_PCI 0x2020 53c974 PCscsi-PCI SCSI
+product AMD PCNETS_PCI 0x2040 79C974 PCnet-PCI Ethernet & SCSI
+product AMD SC751_SC 0x7006 AMD751 System Controller
+product AMD SC751_PPB 0x7007 AMD751 PCI-to-PCI Bridge
+product AMD PBC756_ISA 0x7408 AMD756 PCI-to-ISA Bridge
+product AMD PBC756_IDE 0x7409 AMD756 IDE controller
+product AMD PBC756_PMC 0x740B AMD756 Power Management Controller
+product AMD PBC756_USB 0x740C AMD756 USB Host Controller
+product AMD HT7520 0x7450 (PLX) HT7520 PCIX Tunnel
+product AMD HT7520_PIC 0x7451 (PLX) HT7520 PCIX IOAPIC
+product AMD AMD8151_AGP 0x7454 AMD8151 AGP Device
+product AMD AMD8151 0x7455 AMD8151 HyperTransport-AGP Bridge
+
+/* API Networks products */
+product API STURGEON 0x0010 AP1011 HyperTransport-PCI Bridge
+
+/* Apple products */
+product APPLE BANDIT 0x0001 Bandit Host-PCI Bridge
+product APPLE GC 0x0002 Grand Central I/O Controller
+product APPLE CONTROL 0x0003 Control
+product APPLE PLANB 0x0004 PlanB
+product APPLE OHARE 0x0007 OHare I/O Controller
+product APPLE BANDIT2 0x0008 Bandit Host-PCI Bridge
+product APPLE HEATHROW 0x0010 MAC-IO I/O Controller (Heathrow)
+product APPLE PADDINGTON 0x0017 MAC-IO I/O Controller (Paddington)
+product APPLE KEYLARGO_USB 0x0019 KeyLargo USB Controller
+product APPLE UNINORTH1 0x001e UniNorth Host-PCI Bridge
+product APPLE UNINORTH2 0x001f UniNorth Host-PCI Bridge
+product APPLE UNINORTH_AGP 0x0020 UniNorth AGP Interface
+product APPLE GMAC 0x0021 GMAC Ethernet
+product APPLE KEYLARGO 0x0022 MAC-IO I/O Controller (KeyLargo)
+
+/* ARC Logic products */
+product ARC 1000PV 0xa091 1000PV
+product ARC 2000PV 0xa099 2000PV
+product ARC 2000MT 0xa0a1 2000MT
+
+/* ASIX Electronics products */
+product ASIX AX88140A 0x1400 AX88140A 10/100 Ethernet
+
+/* ATI products */
+product ATI MACH32 0x4158 Mach32
+product ATI MACH64_CT 0x4354 Mach64 CT
+product ATI MACH64_CX 0x4358 Mach64 CX
+product ATI MACH64_ET 0x4554 Mach64 ET
+product ATI MACH64_VT 0x4654 Mach64 VT
+product ATI MACH64_B 0x4750 Mach64 B
+product ATI MACH64_GB 0x4742 Mach64 GB
+product ATI MACH64_GD 0x4744 Mach64 GD
+product ATI MACH64_GI 0x4749 Mach64 GI
+product ATI MACH64_GP 0x4750 Mach64 GP
+product ATI MACH64_GQ 0x4751 Mach64 GQ
+product ATI MACH64_GT 0x4754 Mach64 GT
+product ATI MACH64_GU 0x4755 Mach64 GU
+product ATI MACH64_GV 0x4756 Mach64 GV
+product ATI MACH64_GW 0x4757 Mach64 GW
+product ATI MACH64_GX 0x4758 Mach64 GX
+product ATI MACH64_GZ 0x475a Mach64 GZ
+product ATI MACH64_LB 0x4c42 Mach64 LB
+product ATI MACH64_LD 0x4c44 Mach64 LD
+product ATI MACH64_LG 0x4c47 Mach64 LG
+product ATI MACH64_LI 0x4c49 Mach64 LI
+product ATI MACH64_LM 0x4c4d Mach64 LM
+product ATI MACH64_LP 0x4c50 Mach64 LP
+product ATI MACH64_LR 0x4c52 Mach64 LR
+
+/* Auravision products */
+product AURAVISION VXP524 0x01f7 VxP524 PCI Video Processor
+
+/* Aureal Semiconductor */
+product AUREAL AU8820 0x0001 AU8820 Vortex Digital Audio Processor
+
+/* Applied Micro Circuts products */
+product AMCIRCUITS S5933 0x4750 S5933 PCI Matchmaker
+product AMCIRCUITS LANAI 0x8043 Myrinet LANai Interface
+product AMCIRCUITS S5920 0x5920 S5920 PCI Target
+
+/* Atronics products */
+product ATRONICS IDE_2015PL 0x2015 IDE-2015PL
+
+/* Avance Logic products */
+product AVANCE AVL2301 0x2301 AVL2301
+product AVANCE AVG2302 0x2302 AVG2302
+product AVANCE2 ALG2301 0x2301 ALG2301
+product AVANCE2 ALG2302 0x2302 ALG2302
+
+/* CCUBE products */
+product CCUBE CINEMASTER 0x8888 Cinemaster C 3.0 DVD Decoder
+
+/* AVM products */
+product AVM FRITZ_CARD 0x0a00 Fritz! Card ISDN Interface
+
+/* Bit3 products */
+product BIT3 PCIVME617 0x0001 PCI-VME Interface Mod. 617
+product BIT3 PCIVME618 0x0010 PCI-VME Interface Mod. 618
+product BIT3 PCIVME2706 0x0300 PCI-VME Interface Mod. 2706
+
+/* Broadcom products */
+product BROADCOM BCM4211 0x4211 BCM4211 iLine10 Controller
+product BROADCOM BCM4212 0x4212 BCM4212 V.90 Modem
+product BROADCOM BCM5700 0x1644 BCM5700 10/100/1000 Ethernet
+product BROADCOM BCM5701 0x1645 BCM5701 10/100/1000 Ethernet
+product BROADCOM BCM5702 0x16a6 BCM5702 10/100/1000 Ethernet
+product BROADCOM BCM5703 0x16a7 BCM5703 10/100/1000 Ethernet
+product BROADCOM BCM5705 0x1653 BCM5705 10/100/1000 Ethernet
+product BROADCOM BCM5820 0x5820 BCM5820 eCommerce Processor
+product BROADCOM BCM5821 0x5821 BCM5821 Super-eCommerce Processor
+product BROADCOM BCM5850 0x5850 BCM5850 SSL/TLS Protocol Processor
+
+/* Brooktree products */
+product BROOKTREE BT848 0x0350 Bt848 Video Capture
+product BROOKTREE BT849 0x0351 Bt849 Video Capture
+product BROOKTREE BT878 0x036e Bt878 Video Capture
+product BROOKTREE BT879 0x036f Bt879 Video Capture
+
+/* BusLogic products */
+product BUSLOGIC MULTIMASTER_NC 0x0140 MultiMaster NC
+product BUSLOGIC MULTIMASTER 0x1040 MultiMaster
+product BUSLOGIC FLASHPOINT 0x8130 FlashPoint
+
+/* c't Magazin products */
+product C4T GPPCI 0x6773 GPPCI
+
+/* Chips and Technologies products */
+product CHIPS 64310 0x00b8 64310
+product CHIPS 65545 0x00d8 65545
+product CHIPS 65548 0x00dc 65548
+product CHIPS 65550 0x00e0 65550
+product CHIPS 65554 0x00e4 65554
+
+/* Cirrus Logic products */
+product CIRRUS CL_GD7548 0x0038 CL-GD7548
+product CIRRUS CL_GD5430 0x00a0 CL-GD5430
+product CIRRUS CL_GD5434_4 0x00a4 CL-GD5434-4
+product CIRRUS CL_GD5434_8 0x00a8 CL-GD5434-8
+product CIRRUS CL_GD5436 0x00ac CL-GD5436
+product CIRRUS CL_GD5446 0x00b8 CL-GD5446
+product CIRRUS CL_GD5480 0x00bc CL-GD5480
+product CIRRUS CL_PD6729 0x1100 CL-PD6729
+product CIRRUS CL_PD6832 0x1110 CL-PD6832 PCI-CardBus Bridge
+product CIRRUS CL_PD6833 0x1113 CL-PD6833 PCI-CardBus Bridge
+product CIRRUS CL_GD7542 0x1200 CL-GD7542
+product CIRRUS CL_GD7543 0x1202 CL-GD7543
+product CIRRUS CL_GD7541 0x1204 CL-GD7541
+product CIRRUS CL_CD4400 0x4400 CL-CD4400 Communications Controller
+product CIRRUS CS4610 0x6001 CS4610 SoundFusion Audio Accelerator
+product CIRRUS CS4280 0x6003 CS4280 CrystalClear Audio Interface
+
+/* CMD Technology products -- info gleaned from their web site */
+product CMDTECH 640 0x0640 PCI0640
+/* No data on the CMD Tech. web site for the following as of Mar. 3 '98 */
+product CMDTECH 642 0x0642 PCI0642
+/* datasheets available from www.cmd.com for the followings */
+product CMDTECH 643 0x0643 PCI0643
+product CMDTECH 646 0x0646 PCI0646
+product CMDTECH 647 0x0647 PCI0647
+product CMDTECH 648 0x0648 PCI0648
+product CMDTECH 649 0x0649 PCI0649
+
+/* Inclusion of 'A' in the following entry is probably wrong. */
+/* No data on the CMD Tech. web site for the following as of Mar. 3 '98 */
+product CMDTECH 650A 0x0650 PCI0650A
+product CMDTECH 670 0x0670 USB0670
+product CMDTECH 673 0x0673 USB0673
+
+/* C-Media products */
+product CMEDIA CMI8338A 0x0100 CMI8338A PCI Audio Device
+product CMEDIA CMI8338B 0x0101 CMI8338B PCI Audio Device
+product CMEDIA CMI8738 0x0111 CMI8738/C3DX PCI Audio Device
+product CMEDIA HSP56 0x0211 HSP56 Audiomodem Riser
+
+/* Cogent Data Technologies products */
+product COGENT EM110TX 0x1400 EX110TX PCI Fast Ethernet Adapter
+
+/* Compaq products */
+product COMPAQ PCI_EISA_BRIDGE 0x0001 PCI-EISA Bridge
+product COMPAQ PCI_ISA_BRIDGE 0x0002 PCI-ISA Bridge
+product COMPAQ TRIFLEX1 0x1000 Triflex Host-PCI Bridge
+product COMPAQ TRIFLEX2 0x2000 Triflex Host-PCI Bridge
+product COMPAQ QVISION_V0 0x3032 QVision
+product COMPAQ QVISION_1280P 0x3033 QVision 1280/p
+product COMPAQ QVISION_V2 0x3034 QVision
+product COMPAQ TRIFLEX4 0x4000 Triflex Host-PCI Bridge
+product COMPAQ USB 0x7020 USB Controller
+product COMPAQ SMART2P 0xae10 SMART2P RAID
+product COMPAQ N100TX 0xae32 Netelligent 10/100 TX
+product COMPAQ N10T 0xae34 Netelligent 10 T
+product COMPAQ IntNF3P 0xae35 Integrated NetFlex 3/P
+product COMPAQ DPNet100TX 0xae40 Dual Port Netelligent 10/100 TX
+product COMPAQ IntPL100TX 0xae43 ProLiant Integrated Netelligent 10/100 TX
+product COMPAQ DP4000 0xb011 Deskpro 4000 5233MMX
+product COMPAQ NF3P_BNC 0xf150 NetFlex 3/P w/ BNC
+product COMPAQ NF3P 0xf130 NetFlex 3/P
+
+/* Compex products - XXX better descriptions */
+product COMPEX NE2KETHER 0x1401 Ethernet
+product COMPEX RL100ATX 0x2011 RL100-ATX 10/100 Ethernet
+product COMPEX RL100TX 0x9881 RL100-TX 10/100 Ethernet
+
+/* Conexant Systems products */
+product CONEXANT SOFTK56 0x2443 SoftK56 PCI Software Modem
+
+/* Contaq Microsystems products */
+product CONTAQ 82C599 0x0600 82C599 PCI-VLB Bridge
+product CONTAQ 82C693 0xc693 82C693 PCI-ISA Bridge
+
+/* Corollary Products */
+product COROLLARY CBUSII_PCIB 0x0014 \"C-Bus II\"-PCI Bridge
+
+/* Creative Labs products */
+product CREATIVELABS SBLIVE 0x0002 SBLive! EMU 10000
+product CREATIVELABS SBJOY 0x7002 PCI Gameport Joystick
+product CREATIVELABS EV1938 0x8938 Ectiva 1938
+
+/* Cyclades products */
+product CYCLADES CYCLOMY_1 0x0100 Cyclom-Y below 1M
+product CYCLADES CYCLOMY_2 0x0101 Cyclom-Y above 1M
+product CYCLADES CYCLOM4Y_1 0x0102 Cyclom-4Y below 1M
+product CYCLADES CYCLOM4Y_2 0x0103 Cyclom-4Y above 1M
+product CYCLADES CYCLOM8Y_1 0x0104 Cyclom-8Y below 1M
+product CYCLADES CYCLOM8Y_2 0x0105 Cyclom-8Y above 1M
+product CYCLADES CYCLOMZ_1 0x0200 Cyclom-Z below 1M
+product CYCLADES CYCLOMZ_2 0x0201 Cyclom-Z above 1M
+
+/* Davicom Semiconductor products */
+product DAVICOM DM9102 0x9102 Davicom DM9102 10/100 Ethernet
+
+/* DEC products */
+product DEC 21050 0x0001 DECchip 21050 PCI-PCI Bridge
+product DEC 21040 0x0002 DECchip 21040 Ethernet
+product DEC 21030 0x0004 DECchip 21030 (\"TGA\")
+product DEC NVRAM 0x0007 Zephyr NV-RAM
+product DEC KZPSA 0x0008 KZPSA
+product DEC 21140 0x0009 DECchip 21140 10/100 Ethernet
+product DEC PBXGB 0x000d TGA2
+product DEC DEFPA 0x000f DEFPA
+/* product DEC ??? 0x0010 ??? VME Interface */
+product DEC 21041 0x0014 DECchip 21041 Ethernet
+product DEC DGLPB 0x0016 DGLPB (\"OPPO\")
+product DEC 21142 0x0019 DECchip 21142/21143 10/100 Ethernet
+product DEC 21052 0x0021 DECchip 21052 PCI-PCI Bridge
+product DEC 21150 0x0022 DECchip 21150 PCI-PCI Bridge
+product DEC 21152 0x0024 DECchip 21152 PCI-PCI Bridge
+product DEC 21153 0x0025 DECchip 21153 PCI-PCI Bridge
+product DEC 21154 0x0026 DECchip 21154 PCI-PCI Bridge
+product DEC CPQ42XX 0x0046 Compaq SMART RAID 42xx
+
+/* Delta products */
+product DELTA 8139 0x1360 8139 Ethernet
+
+/* Diamond products */
+product DIAMOND VIPER 0x9001 Viper/PCI
+
+/* D-Link Systems products */
+product DLINK DFE550TX 0x1002 DFE-550TX 10/100 Ethernet
+
+/* Distributed Processing Technology products */
+product DPT SC_RAID 0xa400 SmartCache/SmartRAID
+product DPT RAID_I2O 0xa501 SmartRAID (I2O)
+product DPT MEMCTLR 0x1012 Memory Controller
+
+/* Dolphin products */
+product DOLPHIN PCISCI 0x0658 PCI-SCI Bridge
+
+/* Domex products */
+product DOMEX PCISCSI 0x0001 DMX-3191D
+
+/* ELSA products */
+product ELSA QS1PCI 0x1000 QuickStep 1000 ISDN card
+
+/* Emulex products */
+product EMULEX LPPFC 0x10df \"Light Pulse\" FibreChannel adapter
+
+/* Ensoniq products */
+product ENSONIQ AUDIOPCI 0x5000 AudioPCI
+product ENSONIQ AUDIOPCI97 0x1371 AudioPCI 97
+product ENSONIQ CT5880 0x5880 CT5880
+
+/* Epigram (now Broadcom) products */
+product EPIGRAM BCM4210 0xa0fa BCM4210 iLine10 Controller
+
+/* Essential Communications products */
+product ESSENTIAL RR_HIPPI 0x0001 RoadRunner HIPPI Interface
+product ESSENTIAL RR_GIGE 0x0005 RoadRunner Gig-E Interface
+
+/* ESS Technology Inc products */
+product ESSTECH MAESTRO1 0x0100 Maestro 1 PCI Audio Accelerator
+product ESSTECH MAESTRO2 0x1968 Maestro 2 PCI Audio Accelerator
+product ESSTECH SOLO1 0x1969 Solo-1 PCI AudioDrive
+product ESSTECH MAESTRO2E 0x1978 Maestro 2E PCI Audio Accelerator
+product ESSTECH MAESTRO3 0x1998 Maestro 3 PCI Audio Accelerator
+product ESSTECH MAESTRO3MODEM 0x1999 Maestro 3 Modem
+
+/* ESS Technology Inc products */
+product ESSTECH2 MAESTRO1 0x0100 Maestro 1 PCI Audio Accelerator
+
+/* O2 Micro Inc */
+product O2MICRO OZ6832 0x6832 OZ6832 CardBus Controller
+
+/* Evans & Sutherland products */
+product ES FREEDOM 0x0001 Freedom PCI-GBus Interface
+
+/* FORE products */
+product FORE PCA200 0x0210 ATM PCA-200
+product FORE PCA200E 0x0300 ATM PCA-200e
+
+/* Forte Media products */
+product FORTEMEDIA FM801 0x0801 Forte Media 801 Sound
+
+/* Future Domain products */
+product FUTUREDOMAIN TMC_18C30 0x0000 TMC-18C30 (36C70)
+
+/* Efficient Networks products */
+product EFFICIENTNETS ENI155PF 0x0000 155P-MF1 ATM (FPGA)
+product EFFICIENTNETS ENI155PA 0x0002 155P-MF1 ATM (ASIC)
+product EFFICIENTNETS ENI25P 0x0003 SpeedStream ENI-25p
+product EFFICIENTNETS SS3000 0x0005 SpeedStream 3000
+
+/* Galileo Technology products */
+product GALILEO GT64010A 0x0146 GT-64010A System Controller
+product GALILEO GT64115 0x4111 GT-64115 System Controller
+product GALILEO GT64011 0x4146 GT-64011 System Controller
+product GALILEO GT64120 0x4620 GT-64120 System Controller
+product GALILEO GT64130 0x6320 GT-64130 System Controller
+
+/* Hewlett-Packard products */
+product HP J2585A 0x1030 J2585A
+
+/* IBM products */
+product IBM MCABRIDGE 0x0002 MCA Bridge
+product IBM ALTALITE 0x0005 CPU Bridge - Alta Lite
+product IBM ALTAMP 0x0007 CPU Bridge - Alta MP
+product IBM ISABRIDGE 0x000a ISA Bridge w/PnP
+product IBM CPUBRIDGE 0x0017 CPU Bridge
+product IBM LANSTREAMER 0x0018 Auto LANStreamer
+product IBM GXT150P 0x001b GXT-150P 2D Accelerator
+product IBM MCABRIDGE2 0x0020 MCA Bridge
+product IBM 82351 0x0022 82351 PCI-PCI Bridge
+product IBM SERVERAID 0x002e ServeRAID
+product IBM OLYMPIC 0x003e Token Ring
+product IBM MIAMI 0x0036 Miami/PCI
+product IBM TURBOWAYS25 0x0053 Turboways 25 ATM
+product IBM MPIC2 0xffff MPIC-II
+
+/* IDT products */
+product IDT 77201 0x0001 77201/77211 ATM (\"NICStAR\")
+
+/* Initio products */
+product INITIO I920 0x0002 INIC-920 SCSI
+product INITIO I940 0x9400 INIC-940 SCSI
+product INITIO I935 0x9401 INIC-935 SCSI
+product INITIO I950 0x9500 INIC-950 SCSI
+
+/* Integrated Micro Solutions products */
+product IMS 8849 0x8849 8849
+product IMS TT128M 0x9128 TwinTurbo 128M
+
+/* Intel products */
+product INTEL PCEB 0x0482 82375EB/SB PCI-EISA Bridge (PCEB)
+product INTEL CDC 0x0483 82424ZX Cache and DRAM controller (CDC)
+product INTEL SIO 0x0484 82378ZB System I/O (SIO)
+product INTEL 82426EX 0x0486 82426EX PCI-to-ISA Bridge (PCIB)
+product INTEL PCMC 0x04a3 82434LX/NX PCI, Cache and Memory Controller (PCMC)
+product INTEL IN_BUSINESS 0x1030 InBusiness Fast Ethernet LAN Controller
+product INTEL 82559ER 0x1209 82559ER Fast Ethernet LAN Controller
+product INTEL 82092AA 0x1222 82092AA IDE controller
+product INTEL SAA7116 0x1223 SAA7116
+product INTEL 82596 0x1226 82596 LAN Controller
+product INTEL EEPRO100 0x1227 EE Pro 100 10/100 Fast Ethernet
+product INTEL EEPRO100S 0x1228 EE Pro 100 Smart 10/100 Fast Ethernet
+product INTEL 82557 0x1229 82557 Fast Ethernet LAN Controller
+product INTEL 82437FX 0x122d 82437FX System Controller (TSC)
+product INTEL 82371FB_ISA 0x122e 82371FB PCI-to-ISA Bridge (PIIX)
+product INTEL 82371FB_IDE 0x1230 82371FB IDE controller (PIIX)
+product INTEL 82371MX 0x1234 82371MX Mobile PCI I/O IDE Xcelerator (MPIIX)
+product INTEL 82437MX 0x1235 82437MX Mobile System Controller (MTSC)
+product INTEL 82441FX 0x1237 82441FX PCI and Memory Controller (PMC)
+product INTEL 82380AB 0x123c 82380AB Mobile PCI-to-ISA Bridge (MISA)
+product INTEL 82380FB 0x124b 82380FB Mobile PCI-to-PCI Bridge (MPCI2)
+product INTEL 82439HX 0x1250 82439HX System Controller (TXC)
+product INTEL 82801AA_LPC 0x2410 82801AA LPC Interface Bridge
+product INTEL 82801AA_IDE 0x2411 82801AA IDE Controller
+product INTEL 82801AA_USB 0x2412 82801AA USB Controller
+product INTEL 82801AA_SMB 0x2413 82801AA SMBus Controller
+product INTEL 82801AA_ACA 0x2415 82801AA AC-97 Audio Controller
+product INTEL 82801AA_ACM 0x2416 82801AA AC-97 PCI Modem
+product INTEL 82801AA_HPB 0x2418 82801AA Hub-to-PCI Bridge
+product INTEL 82801AB_LPC 0x2420 82801AB LPC Interface Bridge
+product INTEL 82801AB_IDE 0x2421 82801AB IDE Controller
+product INTEL 82801AB_USB 0x2422 82801AB USB Controller
+product INTEL 82801AB_SMB 0x2423 82801AB SMBus Controller
+product INTEL 82801AB_ACA 0x2425 82801AB AC-97 Audio Controller
+product INTEL 82801AB_ACM 0x2426 82801AB AC-97 PCI Modem
+product INTEL 82801AB_HPB 0x2428 82801AB Hub-to-PCI Bridge
+product INTEL 82801BA_LPC 0x2440 82801BA LPC Interface Bridge
+product INTEL 82801BA_USB1 0x2442 82801BA USB Controller
+product INTEL 82801BA_SMB 0x2443 82801BA SMBus Controller
+product INTEL 82801BA_USB2 0x2444 82801BA USB Controller
+product INTEL 82801BA_ACA 0x2445 82801BA AC-97 Audio Controller
+product INTEL 82801BA_ACM 0x2446 82801BA AC-97 PCI Modem
+product INTEL 82801BA_LAN 0x2449 82801BA LAN Controller
+product INTEL 82801BA_IDE 0x244B 82801BA IDE Controller
+product INTEL 82801BA_HPB 0x244E 82801BA Hub-to-PCI Bridge
+product INTEL 82371SB_ISA 0x7000 82371SB PCI-to-ISA Bridge (PIIX3)
+product INTEL 82371SB_IDE 0x7010 82371SB IDE Interface (PIIX3)
+product INTEL 82371SB_USB 0x7020 82371SB USB Host Controller (PIIX3)
+product INTEL 82437VX 0x7030 82437VX System Controller (TVX)
+product INTEL 82439TX 0x7100 82439TX System Controller (MTXC)
+product INTEL 82371AB_ISA 0x7110 82371AB PCI-to-ISA Bridge (PIIX4)
+product INTEL 82371AB_IDE 0x7111 82371AB IDE controller (PIIX4)
+product INTEL 82371AB_USB 0x7112 82371AB USB Host Controller (PIIX4)
+product INTEL 82371AB_PMC 0x7113 82371AB Power Management Controller (PIIX4)
+product INTEL 82810_MCH 0x7120 82810 Memory Controller Hub
+product INTEL 82810_GC 0x7121 82810 Graphics Controller
+product INTEL 82810_DC100_MCH 0x7122 82810-DC100 Memory Controller Hub
+product INTEL 82810_DC100_GC 0x7123 82810-DC100 Graphics Controller
+product INTEL 82810E_MCH 0x7124 82810E Memory Controller Hub
+product INTEL 82810E_GC 0x7125 82810E Graphics Controller
+product INTEL 82443LX 0x7180 82443LX PCI AGP Controller (PAC)
+product INTEL 82443LX_AGP 0x7181 82443LX AGP Interface (PAC)
+product INTEL 82443BX 0x7190 82443BX Host Bridge/Controller
+product INTEL 82443BX_AGP 0x7191 82443BX AGP Interface
+product INTEL 82443BX_NOAGP 0x7192 82443BX Host Bridge/Controller (AGP disabled)
+product INTEL 82440MX 0x7194 82440MX Host Bridge/Controller
+product INTEL 82440MX_ACA 0x7195 82440MX AC-97 Audio Controller
+product INTEL 82440MX_ISA 0x7198 82440MX PCI-to-ISA Bridge
+product INTEL 82440MX_IDE 0x7199 82440MX IDE Controller
+product INTEL 82440MX_USB 0x719a 82440MX USB Host Controller
+product INTEL 82440MX_PMC 0x719b 82440MX Power Management Controller
+product INTEL I740 0x7800 i740 Graphics Accelerator
+product INTEL PCI450_PB 0x84c4 82454KX/GX PCI Bridge (PB)
+product INTEL PCI450_MC 0x84c5 82451KX/GX Memory Controller (MC)
+product INTEL 82451NX_MIOC 0x84ca 82451NX Memory & I/O Controller (MIOC)
+product INTEL 82451NX_PXB 0x84cb 82451NX PCI Expander Bridge (PXB)
+
+/* Intergraph products */
+product INTERGRAPH 4D50T 0x00e4 Powerstorm 4D50T
+
+/* I. T. T. products */
+product ITT AGX016 0x0001 AGX016
+product ITT ITT3204 0x0002 ITT3204 MPEG Decoder
+
+/* KTI products - XXX better descriptions */
+product KTI NE2KETHER 0x3000 Ethernet
+
+/* LAN Media Corporation */
+product LMC HSSI 0x0003 HSSI Interface
+product LMC DS3 0x0004 DS3 Interface
+product LMC SSI 0x0005 SSI
+
+/* LeadTek Research */
+product LEADTEK S3_805 0x0000 S3 805
+
+/* Linear Systems / CompuModules */
+product LINEARSYS DVB_TX 0x7629 DVB Transmitter
+product LINEARSYS DVB_RX 0x7630 DVB Receiver
+
+/* Lite-On products */
+product LITEON 82C168 0x0002 82C168/82C169 (PNIC) 10/100 Ethernet
+product LITEON 82C115 0xc115 82C115 (PNIC II) 10/100 Ethernet
+
+/* Lucent products */
+product LUCENT LTMODEM_0440 0x0440 K56flex DSVD LTMODEM
+product LUCENT LTMODEM_0441 0x0441 LTMODEM
+product LUCENT LTMODEM_0442 0x0442 LTMODEM
+product LUCENT LTMODEM_0443 0x0443 LTMODEM
+product LUCENT LTMODEM_0444 0x0444 LTMODEM
+product LUCENT LTMODEM_0445 0x0445 LTMODEM
+product LUCENT LTMODEM_0446 0x0446 LTMODEM
+product LUCENT LTMODEM_0447 0x0447 LTMODEM
+product LUCENT LTMODEM_0448 0x0448 LTMODEM
+product LUCENT LTMODEM_0449 0x0449 LTMODEM
+product LUCENT LTMODEM_044A 0x044A LTMODEM
+product LUCENT LTMODEM_044B 0x044B LTMODEM
+product LUCENT LTMODEM_044C 0x044C LTMODEM
+product LUCENT LTMODEM_044D 0x044D LTMODEM
+product LUCENT LTMODEM_044E 0x044E LTMODEM
+product LUCENT LTMODEM_0450 0x0450 LTMODEM
+product LUCENT LTMODEM_0451 0x0451 LTMODEM
+product LUCENT LTMODEM_0452 0x0452 LTMODEM
+product LUCENT LTMODEM_0453 0x0453 LTMODEM
+product LUCENT LTMODEM_0454 0x0454 LTMODEM
+product LUCENT LTMODEM_0455 0x0455 LTMODEM
+product LUCENT LTMODEM_0456 0x0456 LTMODEM
+product LUCENT LTMODEM_0457 0x0457 LTMODEM
+product LUCENT LTMODEM_0458 0x0458 LTMODEM
+product LUCENT LTMODEM_0459 0x0459 LTMODEM
+product LUCENT LTMODEM_045A 0x045A LTMODEM
+product LUCENT USBHC 0x5801 USB Host Controller
+
+/* Macronix */
+product MACRONIX MX98713 0x0512 MX98713 (PMAC) 10/100 Ethernet
+product MACRONIX MX987x5 0x0531 MX987x5 (PMAC) 10/100 Ethernet
+
+/* Madge Networks products */
+product MADGE COLLAGE25 0x1000 Collage 25 ATM adapter
+product MADGE COLLAGE155 0x1001 Collage 155 ATM adapter
+
+/* Matrox products */
+product MATROX ATLAS 0x0518 MGA PX2085 (\"Atlas\")
+product MATROX MILLENNIUM 0x0519 MGA Millennium 2064W
+product MATROX MYSTIQUE 0x051a MGA Mystique 1064SG
+product MATROX MILLENNIUM2 0x051b MGA Millennium II 2164W
+product MATROX MILLENNIUM2_AGP 0x051f MGA Millennium II 2164WA-B AG
+product MATROX G200_PCI 0x0520 MGA G200 PCI
+product MATROX G200_AGP 0x0521 MGA G200 AGP
+product MATROX G400_AGP 0x0525 MGA G400 AGP
+product MATROX IMPRESSION 0x0d10 MGA Impression
+product MATROX G100_PCI 0x1000 MGA G100 PCI
+product MATROX G100_AGP 0x1001 MGA G100 AGP
+
+/* Motorola products */
+product MOT MPC105 0x0001 MPC105 \"Eagle\" Host Bridge
+product MOT MPC106 0x0002 MPC106 \"Grackle\" Host Bridge
+
+/* Mylex products */
+product MYLEX 960P 0x0001 DAC960P RAID controller
+
+/* Mutech products */
+product MUTECH MV1000 0x0001 MV1000
+
+/* NetVin products - XXX better descriptions */
+product NETVIN 5000 0x5000 5000 Ethernet
+
+/* Newbridge / Tundra products */
+product NEWBRIDGE CA91CX42 0x0000 Universe VME bridge
+
+/* National Semiconductor products */
+product NS DP83810 0x0001 DP83810 10/100 Ethernet
+product NS DP83815 0x0020 DP83815 10/100 Ethernet
+product NS NS87410 0xd001 NS87410
+
+/* NCR/Symbios Logic products */
+product SYMBIOS 810 0x0001 53c810
+product SYMBIOS 820 0x0002 53c820
+product SYMBIOS 825 0x0003 53c825
+product SYMBIOS 815 0x0004 53c815
+product SYMBIOS 810AP 0x0005 53c810AP
+product SYMBIOS 860 0x0006 53c860
+product SYMBIOS 896 0x000b 53c896
+product SYMBIOS 895 0x000c 53c895
+product SYMBIOS 885 0x000d 53c885
+product SYMBIOS 875 0x000f 53c875
+product SYMBIOS 1510 0x0010 53c1510
+product SYMBIOS 875J 0x008f 53c875J
+
+/* Packet Engines products */
+product SYMBIOS PE_GNIC 0x0702 Packet Engines G-NIC Ethernet
+
+/* NEC products */
+product NEC USB 0x0035 USB Host Controller
+product NEC POWERVR2 0x0046 PowerVR PCX2
+product NEC PD72872 0x0063 uPD72872 IEEE 1394 OHCI Host Controller
+product NEC PD72870 0x00cd uPD72870 IEEE 1394 OHCI Host Controller
+product NEC PD72871 0x00ce uPD72871 IEEE 1394 OHCI Host Controller
+
+/* Neomagic products */
+product NEOMAGIC NMMG128ZV 0x0003 MagicGraph 128ZV
+product NEOMAGIC NMMG2160 0x0004 MagicGraph 128XD
+product NEOMAGIC NMMM256AV_VGA 0x0005 MagicMedia 256AV VGA
+product NEOMAGIC NMMM256ZX_VGA 0x0006 MagicMedia 256ZX VGA
+product NEOMAGIC NMMM256AV_AU 0x8005 MagicMedia 256AV Audio
+product NEOMAGIC NMMM256ZX_AU 0x8006 MagicMedia 256ZX Audio
+
+/* Netgear products */
+product NETGEAR GA620 0x620a GA620 Gigabit Ethernet
+
+/* NexGen products */
+product NEXGEN NX82C501 0x4e78 NX82C501 Host-PCI Bridge
+
+/* NKK products */
+product NKK NDR4600 0xA001 NDR4600 Host-PCI Bridge
+
+/* Number Nine products */
+product NUMBER9 I128 0x2309 Imagine-128
+product NUMBER9 I128_2 0x2339 Imagine-128 II
+
+/* Nvidia Corporationn products */
+product NVIDIA RIVATNT 0x0020 RIVA TNT
+product NVIDIA RIVATNT2 0x0028 RIVA TNT2
+product NVIDIA RIVATNT2U 0x0029 RIVA TNT2 Ultra
+product NVIDIA VANTA 0x002C Vanta
+product NVIDIA RIVATNT2M64 0x002D RIVA TNT2 Model 64
+product NVIDIA ALADDINTNT2 0x00A0 Aladdin TNT2
+product NVIDIA GEFORCE256 0x0100 GeForce 256
+product NVIDIA GEFORCEDDR 0x0101 GeForce DDR
+product NVIDIA QUADRO 0x0103 Quadro
+product NVIDIA GEFORCE2 0x0150 GeForce2 GTS
+product NVIDIA GEFORCE2DDR 0x0151 GeForce2 GTS (DDR)
+product NVIDIA GEFORCE2BR 0x0152 GeForce2 GTS
+product NVIDIA QUADRO2 0x0153 Quadro2
+
+/* Nvidia Corporation & SGS Thomson Microelectric */
+product NVIDIA_SGS RIVA128 0x0018 Riva 128
+
+/* Oak Technologies products */
+product OAKTECH OTI1007 0x0107 OTI107
+
+/* Olicom products */
+product OLICOM OC2183 0x0013 Olicom OC-2183/2185 Ethernet
+product OLICOM OC2325 0x0012 Olicom OC-2325 Ethernet
+product OLICOM OC2326 0x0014 Olicom OC-2326 10/100-TX Ethernet
+
+/* Opti products */
+product OPTI 82C557 0xc557 82C557
+product OPTI 82C558 0xc558 82C558
+product OPTI 82C568 0xc568 82C568
+product OPTI 82D568 0xd568 82D568
+product OPTI 82C621 0xc621 82C621
+product OPTI 82C822 0xc822 82C822
+product OPTI RM861HA 0xc861 RM861HA
+product OPTI 82C700 0xc700 82C700
+product OPTI 82C701 0xc701 82C701
+
+/* PC Tech products */
+product PCTECH RZ1000 0x1000 RZ1000
+
+/* PLX Technology products */
+product PLX 9060ES 0x906e 9060ES PCI bus controller
+
+/* ProLAN products - XXX better descriptions */
+product PROLAN NE2KETHER 0x1980 Ethernet
+
+/* Promise products */
+product PROMISE DC5030 0x5300 DC5030
+product PROMISE ULTRA33 0x4d33 Ultra33/ATA Bus Master IDE Accelerator
+product PROMISE ULTRA66 0x4d38 Ultra66/ATA Bus Master IDE Accelerator
+product PROMISE ULTRA100 0x4d30 Ultra100/ATA Bus Master IDE Accelerator
+
+/* QLogic products */
+product QLOGIC ISP1020 0x1020 ISP1020
+product QLOGIC ISP1022 0x1022 ISP1022
+product QLOGIC ISP1080 0x1080 ISP1080
+product QLOGIC ISP1240 0x1240 ISP1240
+product QLOGIC ISP2100 0x2100 ISP2100
+
+/* Quantum Designs products */
+product QUANTUMDESIGNS 8500 0x0001 8500
+product QUANTUMDESIGNS 8580 0x0002 8580
+
+/* Realtek (Creative Labs?) products */
+product REALTEK RT8029 0x8029 8029 Ethernet
+product REALTEK RT8129 0x8129 8129 10/100 Ethernet
+product REALTEK RT8139 0x8139 8139 10/100 Ethernet
+
+/* RICOH products */
+product RICOH Rx5C465 0x0465 5C465 PCI-CardBus bridge
+product RICOH Rx5C466 0x0466 5C466 PCI-CardBus bridge
+product RICOH Rx5C475 0x0475 5C475 PCI-CardBus bridge
+product RICOH RL5C476 0x0476 5C476 PCI-CardBus bridge
+product RICOH Rx5C477 0x0477 5C477 PCI-CardBus bridge
+product RICOH Rx5C478 0x0478 5C478 PCI-CardBus bridge
+
+/* RISCom (SDL Communications, Inc?) products */
+product RISCOM N2 0x5568 N2
+
+/* RNS products */
+product RNS FDDI 0x2200 2200 FDDI
+
+/* S3 products */
+product S3 VIRGE 0x5631 ViRGE
+product S3 TRIO32 0x8810 Trio32
+product S3 TRIO64 0x8811 Trio32/64
+product S3 AURORA64P 0x8812 Aurora64V+
+product S3 TRIO64UVP 0x8814 Trio64UV+
+product S3 VIRGE_VX 0x883d ViRGE/VX
+product S3 868 0x8880 868
+product S3 928 0x88b0 86C928
+product S3 864_0 0x88c0 86C864-0
+product S3 864_1 0x88c1 86C864-1
+product S3 864_2 0x88c2 86C864-2
+product S3 864_3 0x88c3 86C864-3
+product S3 964_0 0x88d0 86C964-0
+product S3 964_1 0x88d1 86C964-1
+product S3 964_2 0x88d2 86C964-2
+product S3 964_3 0x88d3 86C964-3
+product S3 968_0 0x88f0 86C968-0
+product S3 968_1 0x88f1 86C968-1
+product S3 968_2 0x88f2 86C968-2
+product S3 968_3 0x88f3 86C968-3
+product S3 TRIO64V2_DX 0x8901 Trio64V2/DX
+product S3 PLATO_PX 0x8901 Plato/PX
+product S3 TRIO3D 0x8904 86C365 Trio3D
+product S3 VIRGE_DX 0x8a01 ViRGE/DX
+product S3 VIRGE_GX2 0x8a10 ViRGE/GX2
+product S3 TRIO3D2X 0x8a13 Trio3D/2X
+product S3 SAVAGE3D 0x8a20 Savage3D
+product S3 SAVAGE3D_MV 0x8a21 Savage3D+MV
+product S3 SAVAGE4 0x8a22 Savage4
+product S3 VIRGE_MX 0x8c01 ViRGE/MX
+product S3 VIRGE_MXP 0x8c03 ViRGE/MXP
+product S3 SAVAGE_MX_MV 0x8c10 Savage/MX+MV
+product S3 SAVAGE_MX 0x8c11 Savage/MX
+product S3 SAVAGE_IX_MV 0x8c12 Savage/IX+MV
+product S3 SAVAGE_IX 0x8c13 Savage/IX
+product S3 SAVAGE2000 0x9102 Savage2000
+product S3 SONICVIBES 0xca00 SonicVibes
+
+/* Samsung Semiconductor products */
+product SAMSUNGSEMI KS8920 0x8920 KS8920 10/100 Ethernet
+
+/* SGI products */
+product SGI IOC3 0x0003 IOC3
+product SGI RAD1 0x0005 PsiTech RAD1
+product SGI TIGON 0x0009 Tigon Gigabit Ethernet
+
+/* SGS Thomson products */
+product SGSTHOMSON 2000 0x0008 STG 2000X
+product SGSTHOMSON 1764 0x1746 STG 1764X
+
+/* SiByte, Inc. products */
+product SIBYTE SB1250_PCI 0x0001 BCM1250 PCI Host Bridge
+product SIBYTE SB1250_LDT 0x0002 BCM1250 HyperTransport Host Bridge
+
+/* Sigma Designs products */
+product SIGMA HOLLYWOODPLUS 0x8300 REALmagic Hollywood-Plus MPEG-2 Decoder
+
+/* Silicon Integrated System products */
+product SIS 86C201 0x0001 86C201
+product SIS 86C202 0x0002 86C202
+product SIS 86C205 0x0005 86C205
+product SIS 85C503 0x0008 85C503 or 5597/5598 ISA bridge
+product SIS 600PMC 0x0009 600 Power Mngmt Controller
+product SIS 5597_VGA 0x0200 5597/5598 integrated VGA
+product SIS 85C501 0x0406 85C501
+product SIS 85C496 0x0496 85C496
+product SIS 530HB 0x0530 530 Host to PCI Bridge
+product SIS 85C601 0x0601 85C601
+product SIS 900 0x0900 SiS 900 10/100 Ethernet
+product SIS 5597_IDE 0x5513 5597/5598 IDE controller
+product SIS 5597_HB 0x5597 5597/5598 host bridge
+product SIS 530VGA 0x6306 530 GUI Accelerator+3D
+product SIS 6326 0x6326 6326 AGP VGA
+product SIS 5597_USB 0x7001 5597/5598 USB host controller
+product SIS 7016 0x7016 SiS 7016 10/100 Ethernet
+
+/* Silicon Motion products */
+product SILMOTION LYNX_E 0x0810 Lynx E
+
+/* SMC products */
+product SMC 37C665 0x1000 FDC 37C665
+product SMC 37C922 0x1001 FDC 37C922
+product SMC 83C170 0x0005 83C170 (\"EPIC/100\") Fast Ethernet
+product SMC 83C175 0x0006 83C175 (\"EPIC/100\") Fast Ethernet
+
+/* Solidum Systems Corporation */
+product SOLIDUM AMD971 0x2000 SNP8023: AMD 971
+product SOLIDUM CLASS802 0x8023 SNP8023: Classifier Engine
+
+/* Sony products */
+product SONY CXD1947A 0x8009 CXD1947A IEEE 1394 Host Controller
+product SONY CXD32222 0x8039 CXD3222 OHCI IEEE 1394 Host Controller
+product SONY MEMSTICK 0x808a Memory Stick I/F Controller
+
+/* Sun Microsystems products */
+product SUN EBUS 0x1000 PCIO Ebus2
+product SUN HMENETWORK 0x1001 PCIO Happy Meal Ethernet
+product SUN SIMBA 0x5000 Simba PCI bridge
+product SUN MS_IIep 0x9000 microSPARC IIep PCI
+product SUN US_IIi 0xa000 UltraSPARC IIi PCI
+
+/* Sundance Technology products */
+product SUNDANCETI ST201 0x0201 ST201 10/100 Ethernet
+
+/* Surecom Technology products */
+product SURECOM NE34 0x0e34 NE-34 Ethernet
+
+/* Symphony Labs products */
+product SYMPHONY 82C101 0x0001 82C101
+product SYMPHONY 82C103 0x0103 82C103
+product SYMPHONY 82C105 0x0105 82C105
+product SYMPHONY2 82C101 0x0001 82C101
+product SYMPHONY 83C553 0x0565 83C553 PCI-ISA Bridge
+
+/* Schneider & Koch (really SysKonnect) products */
+product SCHNEIDERKOCH SKNET_FDDI 0x4000 SK-NET FDDI-xP
+
+/* Tekram Technology products (1st PCI Vendor ID)*/
+product TEKRAM DC290 0xdc29 DC-290(M)
+
+/* Tekram Technology products (2nd PCI Vendor ID) */
+product TEKRAM2 DC690C 0x690c DC-690C
+
+/* Texas Instruments products */
+product TI TLAN 0x0500 TLAN
+product TI TVP4020 0x3d07 TVP4020 Permedia 2
+product TI TSB12LV21 0x8000 TSB12LV21 IEEE 1394 Host Controller
+product TI TSB12LV22 0x8009 TSB12LV22 OHCI IEEE 1394 Host Controller
+product TI TSB12LV23 0x8019 TSB12LV23 OHCI IEEE 1394 Host Controller
+product TI TSB12LV26 0x8020 TSB12LV26 OHCI IEEE 1394 Host Controller
+product TI PCI1130 0xac12 PCI1130 PCI-CardBus Bridge
+product TI PCI1031 0xac13 PCI1031 PCI-PCMCIA Bridge
+product TI PCI1131 0xac15 PCI1131 PCI-CardBus Bridge
+product TI PCI1250 0xac16 PCI1250 PCI-CardBus Bridge
+product TI PCI1220 0xac17 PCI1220 PCI-CardBus Bridge
+product TI PCI1221 0xac19 PCI1221 PCI-CardBus Bridge
+product TI PCI1450 0xac1b PCI1450 PCI-CardBus Bridge
+product TI PCI1225 0xac1c PCI1225 PCI-CardBus Bridge
+product TI PCI1251 0xac1d PCI1251 PCI-CardBus Bridge
+product TI PCI1211 0xac1e PCI1211 PCI-CardBus Bridge
+product TI PCI1251B 0xac1f PCI1251B PCI-CardBus Bridge
+product TI PCI2030 0xac20 PCI2030 PCI-PCI Bridge
+product TI PCI1420 0xac51 PCI1420 PCI-CardBus Bridge
+product TI PCI1451 0xac52 PCI1451 PCI-CardBus Bridge
+
+/* Toshiba America products */
+product TOSHIBA R4X00 0x0009 R4x00 Host-PCI Bridge
+product TOSHIBA TC35856F 0x0020 TC35856F ATM (\"Meteor\")
+
+/* Toshiba America Info Systems products */
+product TOSHIBA2 HOST 0x0601 Host Bridge/Controller
+product TOSHIBA2 ISA 0x0602 ISA Bridge
+product TOSHIBA2 ToPIC95 0x0603 ToPIC95 CardBus-PCI Bridge
+product TOSHIBA2 ToPIC95B 0x060a ToPIC95B CardBus-PCI Bridge
+product TOSHIBA2 ToPIC97 0x060f ToPIC97 CardBus-PCI Bridge
+product TOSHIBA2 ToPIC100 0x0617 ToPIC100 CardBus-PCI Bridge
+product TOSHIBA2 FIRO 0x0701 Fast Infrared Type O
+
+/* Trident products */
+product TRIDENT CYBERBLADE_I7 0x8420 CyberBlade i7
+product TRIDENT TGUI_9320 0x9320 TGUI 9320
+product TRIDENT TGUI_9350 0x9350 TGUI 9350
+product TRIDENT TGUI_9360 0x9360 TGUI 9360
+product TRIDENT CYBER_9397 0x9397 CYBER 9397
+product TRIDENT CYBER_9397DVD 0x939a CYBER 9397DVD
+product TRIDENT CYBER_9525 0x9525 CYBER 9525
+product TRIDENT TGUI_9420 0x9420 TGUI 9420
+product TRIDENT TGUI_9440 0x9440 TGUI 9440
+product TRIDENT TGUI_9660 0x9660 TGUI 9660
+product TRIDENT TGUI_9680 0x9680 TGUI 9680
+product TRIDENT TGUI_9682 0x9682 TGUI 9682
+
+/* Triones Technologies products */
+/* The 366 and 370 controllers have the same product ID */
+product TRIONES HPT366 0x0004 HPT366/370 IDE Controller
+
+/* TriTech Microelectronics products*/
+product TRITECH TR25202 0xfc02 Pyramid3D TR25202
+
+/* Tseng Labs products */
+product TSENG ET4000_W32P_A 0x3202 ET4000w32p rev A
+product TSENG ET4000_W32P_B 0x3205 ET4000w32p rev B
+product TSENG ET4000_W32P_C 0x3206 ET4000w32p rev C
+product TSENG ET4000_W32P_D 0x3207 ET4000w32p rev D
+product TSENG ET6000 0x3208 ET6000
+
+/* UMC products */
+product UMC UM82C881 0x0001 UM82C881 486 Chipset
+product UMC UM82C886 0x0002 UM82C886 ISA Bridge
+product UMC UM8673F 0x0101 UM8673F EIDE Controller
+product UMC UM8881 0x0881 UM8881 HB4 486 PCI Chipset
+product UMC UM82C891 0x0891 UM82C891
+product UMC UM886A 0x1001 UM886A
+product UMC UM8886BF 0x673a UM8886BF
+product UMC UM8710 0x8710 UM8710
+product UMC UM8886 0x886a UM8886
+product UMC UM8881F 0x8881 UM8881F PCI-Host bridge
+product UMC UM8886F 0x8886 UM8886F PCI-ISA bridge
+product UMC UM8886A 0x888a UM8886A
+product UMC UM8891A 0x8891 UM8891A
+product UMC UM9017F 0x9017 UM9017F
+product UMC UM8886N 0xe88a UM8886N
+product UMC UM8891N 0xe891 UM8891N
+
+/* ULSI Systems products */
+product ULSI US201 0x0201 US201
+
+/* US Robotics products */
+product USR 3CP5609 0x1008 3CP5609 PCI 16550 Modem
+
+/* V3 Semiconductor products */
+product V3 V292PBC 0x0292 V292PBC AMD290x0 Host-PCI Bridge
+product V3 V960PBC 0x0960 V960PBC i960 Host-PCI Bridge
+product V3 V96DPC 0xC960 V96DPC i960 (Dual) Host-PCI Bridge
+
+/* VIA Technologies products, from http://www.via.com.tw/ */
+product VIATECH VT8371_HB 0x0391 VT8371 (Apollo KX133) Host Bridge
+product VIATECH VT8501_MVP4 0x0501 VT8501 MVP4 System Controller
+product VIATECH VT82C505 0x0505 VT82C505 (Pluto)
+product VIATECH VT82C561 0x0561 VT82C561
+product VIATECH VT82C586A_IDE 0x0571 VT82C586A IDE Controller
+product VIATECH VT82C576 0x0576 VT82C576 3V
+product VIATECH VT82C580VP 0x0585 VT82C580 (Apollo VP) Host-PCI Bridge
+product VIATECH VT82C586_ISA 0x0586 VT82C586 (Apollo VP) PCI-ISA Bridge
+product VIATECH VT82C595 0x0595 VT82C595 (Apollo VP2) Host-PCI Bridge
+product VIATECH VT82C596A 0x0596 VT82C596A (Apollo Pro) PCI-ISA Bridge
+product VIATECH VT82C597 0x0597 VT82C597 (Apollo VP3) Host-PCI Bridge
+product VIATECH VT82C598PCI 0x0598 VT82C598 (Apollo MVP3) Host-PCI
+product VIATECH VT82C686A_ISA 0x0686 VT82C686A (Apollo KX133) PCI-ISA Bridge
+product VIATECH VT82C691 0x0691 VT82C691 (Apollo Pro) Host-PCI
+product VIATECH VT82C693 0x0693 VT82C693 (Apollo Pro Plus) Host-PCI
+product VIATECH VT86C926 0x0926 VT86C926 Amazon PCI-Ethernet Controller
+product VIATECH VT82C570M 0x1000 VT82C570M (Apollo) Host-PCI Bridge
+product VIATECH VT82C570MV 0x1006 VT82C570M (Apollo) PCI-ISA Bridge
+product VIATECH VT82C586_IDE 0x1571 VT82C586 (Apollo VP) IDE Controller
+product VIATECH VT82C595_2 0x1595 VT82C595 (Apollo VP2) Host-PCI Bridge
+product VIATECH VT83C572 0x3038 VT83C572 USB Controller
+product VIATECH VT82C586_PWR 0x3040 VT82C586 (Apollo VP) Power Management Controller
+product VIATECH VT3043 0x3043 VT3043 (Rhine) 10/100 Ethernet
+product VIATECH VT82C686A_SMB 0x3057 VT82C686A SMBus Controller
+product VIATECH VT82C686A_AC97 0x3058 VT82C686A AC-97 Audio Controller
+product VIATECH VT82C686A_MC97 0x3068 VT82C686A MC-97 Modem Controller
+product VIATECH VT86C100A 0x6100 VT86C100A (Rhine-II) 10/100 Ethernet
+product VIATECH VT8371_PPB 0x8391 VT8371 (Apollo KX133) PCI-PCI Bridge
+product VIATECH VT8501AGP 0x8501 VT8501 PCI-AGP
+product VIATECH VT82C597AGP 0x8597 VT82C597 (Apollo VP3) PCI-AGP
+product VIATECH VT82C598AGP 0x8598 VT82C598 (Apollo MVP3) PCI-AGP
+
+/* Vortex Computer Systems products */
+/* GDT_PCI */
+product VORTEX GDT_60x0 0x0000 GDT6000/6020/6050
+product VORTEX GDT_6000B 0x0001 GDT6000B/6010
+/* GDT_PCINEW */
+product VORTEX GDT_6x10 0x0002 GDT6110/6510
+product VORTEX GDT_6x20 0x0003 GDT6120/6520
+product VORTEX GDT_6530 0x0004 GDT6530
+product VORTEX GDT_6550 0x0005 GDT6550
+/* GDT_PCINEW, wide/ultra SCSI controllers */
+product VORTEX GDT_6x17 0x0006 GDT6117/6517
+product VORTEX GDT_6x27 0x0007 GDT6127/6527
+product VORTEX GDT_6537 0x0008 GDT6537
+product VORTEX GDT_6557 0x0009 GDT6557/6557-ECC
+/* GDT_PCINEW, wide SCSI controllers */
+product VORTEX GDT_6x15 0x0010 GDT6115/6515
+product VORTEX GDT_6x25 0x0011 GDT6125/6525
+product VORTEX GDT_6535 0x0012 GDT6535
+product VORTEX GDT_6555 0x0013 GDT6555/6555-ECC
+/* GDT_MPR, RP series, wide/ultra SCSI */
+product VORTEX GDT_6x17RP 0x0100 GDT6117RP/GDT6517RP
+product VORTEX GDT_6x27RP 0x0101 GDT6127RP/GDT6527RP
+product VORTEX GDT_6537RP 0x0102 GDT6537RP
+product VORTEX GDT_6557RP 0x0103 GDT6557RP
+/* GDT_MPR, RP series, narrow/ultra SCSI */
+product VORTEX GDT_6x11RP 0x0104 GDT6111RP/GDT6511RP
+product VORTEX GDT_6x21RP 0x0105 GDT6121RP/GDT6521RP
+/* GDT_MPR, RD series, wide/ultra SCSI */
+product VORTEX GDT_6x17RD 0x0110 GDT6117RD/GDT6517RD
+product VORTEX GDT_6x27RD 0x0111 GDT6127RD/GDT6527RD
+product VORTEX GDT_6537RD 0x0112 GDT6537RD
+product VORTEX GDT_6557RD 0x0113 GDT6557RD
+/* GDT_MPR, RD series, narrow/ultra SCSI */
+product VORTEX GDT_6x11RD 0x0114 GDT6111RD/GDT6511RD
+product VORTEX GDT_6x21RD 0x0115 GDT6121RD/GDT6521RD
+/* GDT_MPR, RD series, wide/ultra2 SCSI */
+product VORTEX GDT_6x18RD 0x0118 GDT6118RD/GDT6518RD/GDT6618RD
+product VORTEX GDT_6x28RD 0x0119 GDT6128RD/GDT6528RD/GDT6628RD
+product VORTEX GDT_6x38RD 0x011A GDT6538RD/GDT6638RD
+product VORTEX GDT_6x58RD 0x011B GDT6558RD/GDT6658RD
+/* GDT_MPR, RN series (64-bit PCI), wide/ultra2 SCSI */
+product VORTEX GDT_7x18RN 0x0168 GDT7118RN/GDT7518RN/GDT7618RN
+product VORTEX GDT_7x28RN 0x0169 GDT7128RN/GDT7528RN/GDT7628RN
+product VORTEX GDT_7x38RN 0x016A GDT7538RN/GDT7638RN
+product VORTEX GDT_7x58RN 0x016B GDT7558RN/GDT7658RN
+/* GDT_MPR, RD series, Fibre Channel */
+product VORTEX GDT_6x19RD 0x0210 GDT6519RD/GDT6619RD
+product VORTEX GDT_6x29RD 0x0211 GDT6529RD/GDT6629RD
+/* GDT_MPR, RN series (64-bit PCI), Fibre Channel */
+product VORTEX GDT_7x19RN 0x0260 GDT7519RN/GDT7619RN
+product VORTEX GDT_7x29RN 0x0261 GDT7529RN/GDT7629RN
+
+/* VLSI products */
+product VLSI 82C592 0x0005 82C592 CPU Bridge
+product VLSI 82C593 0x0006 82C593 ISA Bridge
+product VLSI 82C594 0x0007 82C594 Wildcat System Controller
+product VLSI 82C596597 0x0008 82C596/597 Wildcat ISA Bridge
+product VLSI 82C541 0x000c 82C541
+product VLSI 82C543 0x000d 82C543
+product VLSI 82C532 0x0101 82C532
+product VLSI 82C534 0x0102 82C534
+product VLSI 82C535 0x0104 82C535
+product VLSI 82C147 0x0105 82C147
+product VLSI 82C975 0x0200 82C975
+product VLSI 82C925 0x0280 82C925
+
+/* Weitek products */
+product WEITEK P9000 0x9001 P9000
+product WEITEK P9100 0x9100 P9100
+
+/* Western Digital products */
+product WD WD33C193A 0x0193 WD33C193A
+product WD WD33C196A 0x0196 WD33C196A
+product WD WD33C197A 0x0197 WD33C197A
+product WD WD7193 0x3193 WD7193
+product WD WD7197 0x3197 WD7197
+product WD WD33C296A 0x3296 WD33C296A
+product WD WD34C296 0x4296 WD34C296
+product WD 90C 0xC24A 90C
+
+/* Winbond Electronics products */
+product WINBOND W83769F 0x0001 W83769F
+product WINBOND W89C840F 0x0840 W89C840F 10/100 Ethernet
+product WINBOND W89C940F 0x0940 W89C940F Ethernet
+product WINBOND W89C940F_1 0x5a5a W89C940F Ethernet
+
+/* Xircom products */
+/* is the `-3' here just indicating revision 3, or is it really part
+ of the device name? */
+product XIRCOM X3201_3 0x0002 X3201-3 Fast Ethernet Controller
+/* this is the device id `indicating 21143 driver compatibility' */
+product XIRCOM X3201_3_21143 0x0003 X3201-3 Fast Ethernet Controller (21143)
+
+/* Yamaha products */
+product YAMAHA YMF724 0x0004 724 Audio
+product YAMAHA YMF740 0x000A 740 Audio
+product YAMAHA YMF740C 0x000C 740C (DS-1) Audio
+product YAMAHA YMF724F 0x000D 724F (DS-1) Audio
+product YAMAHA YMF744B 0x0010 744 (DS-1S) Audio
+product YAMAHA YMF754 0x0012 754 (DS-1E) Audio
+
+/* Zeinet products */
+product ZEINET 1221 0x0001 1221
+
+/* Ziatech products */
+product ZIATECH ZT8905 0x8905 PCI-ST32 Bridge
+
+/* Zoran products */
+product ZORAN ZR36120 0x6120 Video Controller
diff --git a/cfe/cfe/pci/pcidevs.h b/cfe/cfe/pci/pcidevs.h
new file mode 100644
index 0000000..214ef45
--- /dev/null
+++ b/cfe/cfe/pci/pcidevs.h
@@ -0,0 +1,1360 @@
+/*
+ * THIS FILE AUTOMATICALLY GENERATED. DO NOT EDIT.
+ *
+ * generated from:
+ * pcidevs 2002/09/03 broadcom
+ */
+
+/*
+ * Copyright (c) 1995, 1996 Christopher G. Demetriou
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Christopher G. Demetriou
+ * for the NetBSD Project.
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * NOTE: a fairly complete list of PCI codes can be found at:
+ *
+ * http://members.hyperlink.net.au/~chart/pci.htm
+ *
+ * which replaces the database found at
+ *
+ * http://www.yourvote.com/pci/
+ *
+ * (but it doesn't always seem to match vendor documentation)
+ */
+
+/*
+ * List of known PCI vendors. This list has been trimmed to include
+ * only vendors with products appearing in the lists below.
+ */
+
+#define PCI_VENDOR_COMPAQ 0x0e11 /* Compaq */
+#define PCI_VENDOR_SYMBIOS 0x1000 /* Symbios Logic */
+#define PCI_VENDOR_ATI 0x1002 /* ATI Technologies */
+#define PCI_VENDOR_ULSI 0x1003 /* ULSI Systems */
+#define PCI_VENDOR_VLSI 0x1004 /* VLSI Technology */
+#define PCI_VENDOR_AVANCE 0x1005 /* Avance Logic */
+#define PCI_VENDOR_NS 0x100b /* National Semiconductor */
+#define PCI_VENDOR_TSENG 0x100c /* Tseng Labs */
+#define PCI_VENDOR_WEITEK 0x100e /* Weitek */
+#define PCI_VENDOR_DEC 0x1011 /* Digital Equipment */
+#define PCI_VENDOR_CIRRUS 0x1013 /* Cirrus Logic */
+#define PCI_VENDOR_IBM 0x1014 /* IBM */
+#define PCI_VENDOR_WD 0x101c /* Western Digital */
+#define PCI_VENDOR_AMD 0x1022 /* Advanced Micro Devices */
+#define PCI_VENDOR_TRIDENT 0x1023 /* Trident Microsystems */
+#define PCI_VENDOR_ACER 0x1025 /* Acer */
+#define PCI_VENDOR_MATROX 0x102b /* Matrox */
+#define PCI_VENDOR_CHIPS 0x102c /* Chips and Technologies */
+#define PCI_VENDOR_TOSHIBA 0x102f /* Toshiba America */
+#define PCI_VENDOR_NEC 0x1033 /* NEC */
+#define PCI_VENDOR_FUTUREDOMAIN 0x1036 /* Future Domain */
+#define PCI_VENDOR_SIS 0x1039 /* Silicon Integrated System */
+#define PCI_VENDOR_HP 0x103c /* Hewlett-Packard */
+#define PCI_VENDOR_PCTECH 0x1042 /* PC Technology */
+#define PCI_VENDOR_DPT 0x1044 /* Distributed Processing Technology */
+#define PCI_VENDOR_OPTI 0x1045 /* Opti */
+#define PCI_VENDOR_ELSA 0x1048 /* Elsa */
+#define PCI_VENDOR_SGSTHOMSON 0x104a /* SGS Thomson Microelectric */
+#define PCI_VENDOR_BUSLOGIC 0x104b /* BusLogic */
+#define PCI_VENDOR_TI 0x104c /* Texas Instruments */
+#define PCI_VENDOR_SONY 0x104d /* Sony */
+#define PCI_VENDOR_OAKTECH 0x104e /* Oak Technology */
+#define PCI_VENDOR_WINBOND 0x1050 /* Winbond Electronics */
+#define PCI_VENDOR_MOT 0x1057 /* Motorola */
+#define PCI_VENDOR_PROMISE 0x105a /* Promise Technology */
+#define PCI_VENDOR_NUMBER9 0x105d /* Number 9 Computer Company */
+#define PCI_VENDOR_UMC 0x1060 /* United Microelectronics */
+#define PCI_VENDOR_ITT 0x1061 /* I. T. T. */
+#define PCI_VENDOR_MYLEX 0x1069 /* Mylex */
+#define PCI_VENDOR_APPLE 0x106b /* Apple Computer */
+#define PCI_VENDOR_YAMAHA 0x1073 /* Yamaha */
+#define PCI_VENDOR_NEXGEN 0x1074 /* NexGen Microsystems */
+#define PCI_VENDOR_QLOGIC 0x1077 /* Q Logic */
+#define PCI_VENDOR_LEADTEK 0x107d /* LeadTek Research */
+#define PCI_VENDOR_CONTAQ 0x1080 /* Contaq Microsystems */
+#define PCI_VENDOR_BIT3 0x108a /* Bit3 Computer Corp. */
+#define PCI_VENDOR_OLICOM 0x108d /* Olicom */
+#define PCI_VENDOR_SUN 0x108e /* Sun Microsystems */
+#define PCI_VENDOR_INTERGRAPH 0x1091 /* Intergraph */
+#define PCI_VENDOR_DIAMOND 0x1092 /* Diamond Computer Systems */
+#define PCI_VENDOR_CMDTECH 0x1095 /* CMD Technology */
+#define PCI_VENDOR_QUANTUMDESIGNS 0x1098 /* Quantum Designs */
+#define PCI_VENDOR_BROOKTREE 0x109e /* Brooktree */
+#define PCI_VENDOR_SGI 0x10a9 /* Silicon Graphics */
+#define PCI_VENDOR_ACC 0x10aa /* ACC Microelectronics */
+#define PCI_VENDOR_SYMPHONY 0x10ad /* Symphony Labs */
+#define PCI_VENDOR_PLX 0x10b5 /* PLX Technology */
+#define PCI_VENDOR_MADGE 0x10b6 /* Madge Networks */
+#define PCI_VENDOR_3COM 0x10B7 /* 3Com */
+#define PCI_VENDOR_SMC 0x10b8 /* Standard Microsystems */
+#define PCI_VENDOR_ALI 0x10b9 /* Acer Labs */
+#define PCI_VENDOR_SURECOM 0x10bd /* Surecom Technology */
+#define PCI_VENDOR_SAMSUNGSEMI 0x10c3 /* Samsung Semiconductors */
+#define PCI_VENDOR_NEOMAGIC 0x10c8 /* Neomagic */
+#define PCI_VENDOR_ADVSYS 0x10cd /* Advanced System Products */
+#define PCI_VENDOR_MACRONIX 0x10d9 /* Macronix */
+#define PCI_VENDOR_ES 0x10dd /* Evans & Sutherland */
+#define PCI_VENDOR_NVIDIA 0x10de /* Nvidia Corporation */
+#define PCI_VENDOR_EMULEX 0x10df /* Emulex */
+#define PCI_VENDOR_IMS 0x10e0 /* Integrated Micro Solutions */
+#define PCI_VENDOR_TEKRAM 0x10e1 /* Tekram Technology (1st PCI Vendor ID) */
+#define PCI_VENDOR_NEWBRIDGE 0x10e3 /* Newbridge Microsystems / Tundra Semiconductor */
+#define PCI_VENDOR_AMCIRCUITS 0x10e8 /* Applied Micro Circuits */
+#define PCI_VENDOR_REALTEK 0x10ec /* Realtek Semiconductor */
+#define PCI_VENDOR_NKK 0x10f5 /* NKK Corporation */
+#define PCI_VENDOR_INITIO 0x1101 /* Initio */
+#define PCI_VENDOR_CREATIVELABS 0x1102 /* Creative Labs */
+#define PCI_VENDOR_TRIONES 0x1103 /* Triones Technologies */
+#define PCI_VENDOR_SIGMA 0x1105 /* Sigma Designs */
+#define PCI_VENDOR_VIATECH 0x1106 /* VIA Technologies */
+#define PCI_VENDOR_COGENT 0x1109 /* Cogent Data Technologies */
+#define PCI_VENDOR_RNS 0x1112 /* RNS */
+#define PCI_VENDOR_ACCTON 0x1113 /* Accton Technology */
+#define PCI_VENDOR_VORTEX 0x1119 /* Vortex Computer Systems */
+#define PCI_VENDOR_EFFICIENTNETS 0x111a /* Efficent Networks */
+#define PCI_VENDOR_IDT 0x111d /* IDT */
+#define PCI_VENDOR_FORE 0x1127 /* FORE Systems */
+#define PCI_VENDOR_ZIATECH 0x1138 /* Ziatech */
+#define PCI_VENDOR_ALLIANCE 0x1142 /* Alliance Semiconductor */
+#define PCI_VENDOR_SCHNEIDERKOCH 0x1148 /* Schneider & Koch */
+#define PCI_VENDOR_MUTECH 0x1159 /* Mutech */
+#define PCI_VENDOR_XIRCOM 0x115d /* Xircom */
+#define PCI_VENDOR_ALTERA 0x1172 /* Altera Corporation */
+#define PCI_VENDOR_TOSHIBA2 0x1179 /* Toshiba America Info Systems */
+#define PCI_VENDOR_RICOH 0x1180 /* Ricoh */
+#define PCI_VENDOR_DLINK 0x1186 /* D-Link Systems */
+#define PCI_VENDOR_COROLLARY 0x118c /* Corrollary */
+#define PCI_VENDOR_ACARD 0x1191 /* Acard */
+#define PCI_VENDOR_ZEINET 0x1193 /* Zeinet */
+#define PCI_VENDOR_GALILEO 0x11ab /* Galileo Technology */
+#define PCI_VENDOR_LITEON 0x11ad /* Lite-On Communications */
+#define PCI_VENDOR_V3 0x11b0 /* V3 Semiconductor */
+#define PCI_VENDOR_LUCENT 0x11c1 /* AT&T Microelectronics */
+#define PCI_VENDOR_DOLPHIN 0x11c8 /* Dolphin Interconnect Solutions */
+#define PCI_VENDOR_AURAVISION 0x11d1 /* Auravision */
+#define PCI_VENDOR_ZORAN 0x11de /* Zoran Corporation */
+#define PCI_VENDOR_COMPEX 0x11f6 /* Compex */
+#define PCI_VENDOR_PMCSIERRA 0x11f8 /* PMC-Sierra */
+#define PCI_VENDOR_CYCLADES 0x120e /* Cyclades */
+#define PCI_VENDOR_ESSENTIAL 0x120f /* Essential Communications */
+#define PCI_VENDOR_O2MICRO 0x1217 /* O2 Micro Inc */
+#define PCI_VENDOR_3DFX 0x121a /* 3Dfx Interactive */
+#define PCI_VENDOR_CCUBE 0x123f /* C-Cube Microsystems */
+#define PCI_VENDOR_AVM 0x1244 /* AVM */
+#define PCI_VENDOR_LINEARSYS 0x1254 /* Linear Systems */
+#define PCI_VENDOR_ASIX 0x125b /* ASIX Electronics */
+#define PCI_VENDOR_ESSTECH 0x125d /* ESS Technology Inc */
+#define PCI_VENDOR_SILMOTION 0x126f /* Silicon Motion */
+#define PCI_VENDOR_ENSONIQ 0x1274 /* Ensoniq */
+#define PCI_VENDOR_DAVICOM 0x1282 /* Davicom Semiconductor */
+#define PCI_VENDOR_ESSTECH2 0x1285 /* ESS Technology Inc */
+#define PCI_VENDOR_TRITECH 0x1292 /* TriTech Microelectronics */
+#define PCI_VENDOR_ALTEON 0x12ae /* Alteon */
+#define PCI_VENDOR_RISCOM 0x12aa /* RISCom */
+#define PCI_VENDOR_USR 0x12b9 /* US Robotics (3Com) */
+#define PCI_VENDOR_NVIDIA_SGS 0x12d2 /* Nvidia Corporation & SGS Thomson Microelectric */
+#define PCI_VENDOR_AUREAL 0x12eb /* Aureal Semiconductor */
+#define PCI_VENDOR_ADMTEK 0x1317 /* ADMtek */
+#define PCI_VENDOR_FORTEMEDIA 0x1319 /* Forte Media */
+#define PCI_VENDOR_DOMEX 0x134a /* Domex */
+#define PCI_VENDOR_LMC 0x1376 /* LAN Media Corporation */
+#define PCI_VENDOR_API 0x14d9 /* API Networks */
+#define PCI_VENDOR_CONEXANT 0x14f1 /* Conexant Systems */
+#define PCI_VENDOR_NETGEAR 0x1385 /* Netgear */
+#define PCI_VENDOR_3WARE 0x13c1 /* 3ware */
+#define PCI_VENDOR_SUNDANCETI 0x13f0 /* Sundance Technology */
+#define PCI_VENDOR_CMEDIA 0x13f6 /* C-Media Electronics Inc */
+#define PCI_VENDOR_DELTA 0x1500 /* Delta Electronics */
+#define PCI_VENDOR_SOLIDUM 0x1588 /* Solidum Systems Corp. */
+#define PCI_VENDOR_SIBYTE 0x166d /* SiByte, Inc. */
+#define PCI_VENDOR_SYMPHONY2 0x1c1c /* Symphony Labs (2nd PCI Vendor ID) */
+#define PCI_VENDOR_TEKRAM2 0x1de1 /* Tekram Technology (2nd PCI Vendor ID) */
+#define PCI_VENDOR_BROADCOM 0x14e4 /* Broadcom */
+#define PCI_VENDOR_3DLABS 0x3d3d /* 3D Labs */
+#define PCI_VENDOR_AVANCE2 0x4005 /* Avance Logic (2nd PCI Vendor ID) */
+#define PCI_VENDOR_ADDTRON 0x4033 /* Addtron Technology */
+#define PCI_VENDOR_NETVIN 0x4a14 /* NetVin */
+#define PCI_VENDOR_S3 0x5333 /* S3 */
+#define PCI_VENDOR_C4T 0x6374 /* c't Magazin */
+#define PCI_VENDOR_INTEL 0x8086 /* Intel */
+#define PCI_VENDOR_PROLAN 0x8c4a /* ProLAN */
+#define PCI_VENDOR_KTI 0x8e2e /* KTI */
+#define PCI_VENDOR_ADP 0x9004 /* Adaptec */
+#define PCI_VENDOR_ADP2 0x9005 /* Adaptec (2nd PCI Vendor ID) */
+#define PCI_VENDOR_ATRONICS 0x907f /* Atronics */
+#define PCI_VENDOR_ARC 0xedd8 /* ARC Logic */
+#define PCI_VENDOR_EPIGRAM 0xfeda /* Epigram */
+#define PCI_VENDOR_INVALID 0xffff /* INVALID VENDOR ID */
+
+/*
+ * List of known products. Grouped by vendor.
+ */
+
+/* 3COM Products */
+#define PCI_PRODUCT_3COM_3C985 0x0001 /* 3c985 Gigabit Ethernet */
+#define PCI_PRODUCT_3COM_3C590 0x5900 /* 3c590 Ethernet */
+#define PCI_PRODUCT_3COM_3C595TX 0x5950 /* 3c595-TX 10/100 Ethernet */
+#define PCI_PRODUCT_3COM_3C595T4 0x5951 /* 3c595-T4 10/100 Ethernet */
+#define PCI_PRODUCT_3COM_3C595MII 0x5952 /* 3c595-MII 10/100 Ethernet */
+#define PCI_PRODUCT_3COM_3C900TPO 0x9000 /* 3c900-TPO Ethernet */
+#define PCI_PRODUCT_3COM_3C900COMBO 0x9001 /* 3c900-COMBO Ethernet */
+#define PCI_PRODUCT_3COM_3C905TX 0x9050 /* 3c905-TX 10/100 Ethernet */
+#define PCI_PRODUCT_3COM_3C905T4 0x9051 /* 3c905-T4 10/100 Ethernet */
+#define PCI_PRODUCT_3COM_3C900BTPO 0x9004 /* 3c900B-TPO Ethernet */
+#define PCI_PRODUCT_3COM_3C900BCOMBO 0x9005 /* 3c900B-COMBO Ethernet */
+#define PCI_PRODUCT_3COM_3C900BTPC 0x9006 /* 3c900B-TPC Ethernet */
+#define PCI_PRODUCT_3COM_3C905BTX 0x9055 /* 3c905B-TX 10/100 Ethernet */
+#define PCI_PRODUCT_3COM_3C905BT4 0x9056 /* 3c905B-T4 10/100 Ethernet */
+#define PCI_PRODUCT_3COM_3C905BCOMBO 0x9058 /* 3c905B-COMBO 10/100 Ethernet */
+#define PCI_PRODUCT_3COM_3C905BFX 0x905a /* 3c905B-FX 100 Ethernet */
+#define PCI_PRODUCT_3COM_3C905CTX 0x9200 /* 3c905C-TX 10/100 Ethernet with mngmt */
+#define PCI_PRODUCT_3COM_3C980SRV 0x9800 /* 3c980 Server Adapter 10/100 Ethernet */
+#define PCI_PRODUCT_3COM_3C980CTXM 0x9805 /* 3c980C-TXM 10/100 Ethernet */
+#define PCI_PRODUCT_3COM_3CR990TX97 0x9903 /* 3CR990-TX-97 10/100 Ethernet */
+
+/* 3Dfx Interactive producs */
+#define PCI_PRODUCT_3DFX_VOODOO 0x0001 /* Voodoo */
+#define PCI_PRODUCT_3DFX_VOODOO2 0x0002 /* Voodoo2 */
+#define PCI_PRODUCT_3DFX_BANSHEE 0x0003 /* Banshee */
+#define PCI_PRODUCT_3DFX_VOODOO3 0x0005 /* Voodoo3 */
+
+/* 3D Labs products */
+#define PCI_PRODUCT_3DLABS_300SX 0x0001 /* GLINT 300SX */
+#define PCI_PRODUCT_3DLABS_500TX 0x0002 /* GLINT 500TX */
+#define PCI_PRODUCT_3DLABS_DELTA 0x0003 /* GLINT DELTA */
+#define PCI_PRODUCT_3DLABS_PERMEDIA 0x0004 /* GLINT Permedia */
+#define PCI_PRODUCT_3DLABS_500MX 0x0006 /* GLINT 500MX */
+#define PCI_PRODUCT_3DLABS_PERMEDI2 0x0007 /* GLINT Permedia 2 */
+
+/* 3ware products */
+#define PCI_PRODUCT_3WARE_ESCALADE 0x1000 /* Escalade IDE RAID */
+
+/* ACC Products */
+#define PCI_PRODUCT_ACC_2188 0x0000 /* ACCM 2188 VL-PCI Bridge */
+#define PCI_PRODUCT_ACC_2051_HB 0x2051 /* 2051 PCI Single Chip Solution (host bridge) */
+#define PCI_PRODUCT_ACC_2051_ISA 0x5842 /* 2051 PCI Single Chip Solution (ISA bridge) */
+
+/* Acard products */
+#define PCI_PRODUCT_ACARD_AEC6710 0x8002 /* AEC6710 SCSI */
+#define PCI_PRODUCT_ACARD_AEC6712UW 0x8010 /* AEC6712UW SCSI */
+#define PCI_PRODUCT_ACARD_AEC6712U 0x8020 /* AEC6712U SCSI */
+#define PCI_PRODUCT_ACARD_AEC6712S 0x8030 /* AEC6712S SCSI */
+#define PCI_PRODUCT_ACARD_AEC6710D 0x8040 /* AEC6710D SCSI */
+#define PCI_PRODUCT_ACARD_AEC6715UW 0x8050 /* AEC6715UW SCSI */
+
+/* Accton products */
+#define PCI_PRODUCT_ACCTON_MPX5030 0x1211 /* MPX 5030/5038 Ethernet */
+
+/* Acer products */
+#define PCI_PRODUCT_ACER_M1435 0x1435 /* M1435 VL-PCI Bridge */
+
+/* Acer Labs products */
+#define PCI_PRODUCT_ALI_M1445 0x1445 /* M1445 VL-PCI Bridge */
+#define PCI_PRODUCT_ALI_M1449 0x1449 /* M1449 PCI-ISA Bridge */
+#define PCI_PRODUCT_ALI_M1451 0x1451 /* M1451 Host-PCI Bridge */
+#define PCI_PRODUCT_ALI_M1461 0x1461 /* M1461 Host-PCI Bridge */
+#define PCI_PRODUCT_ALI_M1531 0x1531 /* M1531 Host-PCI Bridge */
+#define PCI_PRODUCT_ALI_M1541 0x1541 /* M1541 Host-PCI Bridge */
+#define PCI_PRODUCT_ALI_M1543 0x1533 /* M1543 PCI-ISA Bridge */
+#define PCI_PRODUCT_ALI_M3309 0x3309 /* M3309 MPEG Decoder */
+#define PCI_PRODUCT_ALI_M4803 0x5215 /* M4803 */
+#define PCI_PRODUCT_ALI_M5229 0x5229 /* M5229 UDMA IDE Controller */
+#define PCI_PRODUCT_ALI_M5237 0x5237 /* M5237 USB Host Controller */
+#define PCI_PRODUCT_ALI_M7101 0x7101 /* M7101 Power Management Controller */
+
+/* Adaptec products */
+#define PCI_PRODUCT_ADP_AIC7850 0x5078 /* AIC-7850 */
+#define PCI_PRODUCT_ADP_AIC7855 0x5578 /* AIC-7855 */
+#define PCI_PRODUCT_ADP_AIC5900 0x5900 /* AIC-5900 ATM */
+#define PCI_PRODUCT_ADP_AIC5905 0x5905 /* AIC-5905 ATM */
+#define PCI_PRODUCT_ADP_AIC6915 0x6915 /* AIC-6915 10/100 Ethernet */
+#define PCI_PRODUCT_ADP_AIC7860 0x6078 /* AIC-7860 */
+#define PCI_PRODUCT_ADP_APA1480 0x6075 /* APA-1480 Ultra */
+#define PCI_PRODUCT_ADP_2940AU 0x6178 /* AHA-2940A Ultra */
+#define PCI_PRODUCT_ADP_AIC7870 0x7078 /* AIC-7870 */
+#define PCI_PRODUCT_ADP_2940 0x7178 /* AHA-2940 */
+#define PCI_PRODUCT_ADP_3940 0x7278 /* AHA-3940 */
+#define PCI_PRODUCT_ADP_3985 0x7378 /* AHA-3985 */
+#define PCI_PRODUCT_ADP_2944 0x7478 /* AHA-2944 */
+#define PCI_PRODUCT_ADP_AIC7895 0x7895 /* AIC-7895 Ultra */
+#define PCI_PRODUCT_ADP_AIC7880 0x8078 /* AIC-7880 Ultra */
+#define PCI_PRODUCT_ADP_2940U 0x8178 /* AHA-2940 Ultra */
+#define PCI_PRODUCT_ADP_3940U 0x8278 /* AHA-3940 Ultra */
+#define PCI_PRODUCT_ADP_389XU 0x8378 /* AHA-389X Ultra */
+#define PCI_PRODUCT_ADP_2944U 0x8478 /* AHA-2944 Ultra */
+#define PCI_PRODUCT_ADP_2940UP 0x8778 /* AHA-2940 Ultra Pro */
+
+#define PCI_PRODUCT_ADP2_2940U2 0x0010 /* AHA-2940 Ultra2 */
+#define PCI_PRODUCT_ADP2_2930U2 0x0011 /* AHA-2930 Ultra2 */
+#define PCI_PRODUCT_ADP2_AIC7890 0x001f /* AIC-7890/1 */
+#define PCI_PRODUCT_ADP2_3950U2B 0x0050 /* AHA-3950 Ultra2 */
+#define PCI_PRODUCT_ADP2_3950U2D 0x0051 /* AHA-3950 Ultra2 */
+#define PCI_PRODUCT_ADP2_AIC7896 0x005f /* AIC-7896/7 */
+
+/* Addtron Products */
+#define PCI_PRODUCT_ADDTRON_8139 0x1360 /* 8139 Ethernet */
+
+/* ADMtek products */
+#define PCI_PRODUCT_ADMTEK_AL981 0x0981 /* ADMtek AL981 10/100 Ethernet */
+
+/* Advanced System Products */
+#define PCI_PRODUCT_ADVSYS_1200A 0x1100
+#define PCI_PRODUCT_ADVSYS_1200B 0x1200
+#define PCI_PRODUCT_ADVSYS_ULTRA 0x1300 /* ABP-930/40UA */
+#define PCI_PRODUCT_ADVSYS_WIDE 0x2300 /* ABP-940UW */
+#define PCI_PRODUCT_ADVSYS_U2W 0x2500 /* ASB-3940U2W */
+#define PCI_PRODUCT_ADVSYS_U3W 0x2700 /* ASB-3940U3W */
+
+/* Alliance products */
+#define PCI_PRODUCT_ALLIANCE_AT24 0x6424 /* AT24 */
+#define PCI_PRODUCT_ALLIANCE_AT25 0x643d /* AT25 */
+
+/* Alteon products */
+#define PCI_PRODUCT_ALTEON_ACENIC 0x0001 /* ACEnic Gigabit Ethernet */
+
+/* AMD products */
+#define PCI_PRODUCT_AMD_PCNET_PCI 0x2000 /* 79c970 PCnet-PCI LANCE Ethernet */
+#define PCI_PRODUCT_AMD_PCNET_HOME 0x2001 /* 79c978 PCnet-PCI Home */
+#define PCI_PRODUCT_AMD_PCSCSI_PCI 0x2020 /* 53c974 PCscsi-PCI SCSI */
+#define PCI_PRODUCT_AMD_PCNETS_PCI 0x2040 /* 79C974 PCnet-PCI Ethernet & SCSI */
+#define PCI_PRODUCT_AMD_SC751_SC 0x7006 /* AMD751 System Controller */
+#define PCI_PRODUCT_AMD_SC751_PPB 0x7007 /* AMD751 PCI-to-PCI Bridge */
+#define PCI_PRODUCT_AMD_PBC756_ISA 0x7408 /* AMD756 PCI-to-ISA Bridge */
+#define PCI_PRODUCT_AMD_PBC756_IDE 0x7409 /* AMD756 IDE controller */
+#define PCI_PRODUCT_AMD_PBC756_PMC 0x740B /* AMD756 Power Management Controller */
+#define PCI_PRODUCT_AMD_PBC756_USB 0x740C /* AMD756 USB Host Controller */
+#define PCI_PRODUCT_AMD_HT7520 0x7450 /* (PLX) HT7520 PCIX Tunnel */
+#define PCI_PRODUCT_AMD_HT7520_PIC 0x7451 /* (PLX) HT7520 PCIX IOAPIC */
+#define PCI_PRODUCT_AMD_AMD8151_AGP 0x7454 /* AMD8151 AGP Device */
+#define PCI_PRODUCT_AMD_AMD8151 0x7455 /* AMD8151 HyperTransport-AGP Bridge */
+
+/* API Networks products */
+#define PCI_PRODUCT_API_STURGEON 0x0010 /* AP1011 HyperTransport-PCI Bridge */
+
+/* Apple products */
+#define PCI_PRODUCT_APPLE_BANDIT 0x0001 /* Bandit Host-PCI Bridge */
+#define PCI_PRODUCT_APPLE_GC 0x0002 /* Grand Central I/O Controller */
+#define PCI_PRODUCT_APPLE_CONTROL 0x0003 /* Control */
+#define PCI_PRODUCT_APPLE_PLANB 0x0004 /* PlanB */
+#define PCI_PRODUCT_APPLE_OHARE 0x0007 /* OHare I/O Controller */
+#define PCI_PRODUCT_APPLE_BANDIT2 0x0008 /* Bandit Host-PCI Bridge */
+#define PCI_PRODUCT_APPLE_HEATHROW 0x0010 /* MAC-IO I/O Controller (Heathrow) */
+#define PCI_PRODUCT_APPLE_PADDINGTON 0x0017 /* MAC-IO I/O Controller (Paddington) */
+#define PCI_PRODUCT_APPLE_KEYLARGO_USB 0x0019 /* KeyLargo USB Controller */
+#define PCI_PRODUCT_APPLE_UNINORTH1 0x001e /* UniNorth Host-PCI Bridge */
+#define PCI_PRODUCT_APPLE_UNINORTH2 0x001f /* UniNorth Host-PCI Bridge */
+#define PCI_PRODUCT_APPLE_UNINORTH_AGP 0x0020 /* UniNorth AGP Interface */
+#define PCI_PRODUCT_APPLE_GMAC 0x0021 /* GMAC Ethernet */
+#define PCI_PRODUCT_APPLE_KEYLARGO 0x0022 /* MAC-IO I/O Controller (KeyLargo) */
+
+/* ARC Logic products */
+#define PCI_PRODUCT_ARC_1000PV 0xa091 /* 1000PV */
+#define PCI_PRODUCT_ARC_2000PV 0xa099 /* 2000PV */
+#define PCI_PRODUCT_ARC_2000MT 0xa0a1 /* 2000MT */
+
+/* ASIX Electronics products */
+#define PCI_PRODUCT_ASIX_AX88140A 0x1400 /* AX88140A 10/100 Ethernet */
+
+/* ATI products */
+#define PCI_PRODUCT_ATI_MACH32 0x4158 /* Mach32 */
+#define PCI_PRODUCT_ATI_MACH64_CT 0x4354 /* Mach64 CT */
+#define PCI_PRODUCT_ATI_MACH64_CX 0x4358 /* Mach64 CX */
+#define PCI_PRODUCT_ATI_MACH64_ET 0x4554 /* Mach64 ET */
+#define PCI_PRODUCT_ATI_MACH64_VT 0x4654 /* Mach64 VT */
+#define PCI_PRODUCT_ATI_MACH64_B 0x4750 /* Mach64 B */
+#define PCI_PRODUCT_ATI_MACH64_GB 0x4742 /* Mach64 GB */
+#define PCI_PRODUCT_ATI_MACH64_GD 0x4744 /* Mach64 GD */
+#define PCI_PRODUCT_ATI_MACH64_GI 0x4749 /* Mach64 GI */
+#define PCI_PRODUCT_ATI_MACH64_GP 0x4750 /* Mach64 GP */
+#define PCI_PRODUCT_ATI_MACH64_GQ 0x4751 /* Mach64 GQ */
+#define PCI_PRODUCT_ATI_MACH64_GT 0x4754 /* Mach64 GT */
+#define PCI_PRODUCT_ATI_MACH64_GU 0x4755 /* Mach64 GU */
+#define PCI_PRODUCT_ATI_MACH64_GV 0x4756 /* Mach64 GV */
+#define PCI_PRODUCT_ATI_MACH64_GW 0x4757 /* Mach64 GW */
+#define PCI_PRODUCT_ATI_MACH64_GX 0x4758 /* Mach64 GX */
+#define PCI_PRODUCT_ATI_MACH64_GZ 0x475a /* Mach64 GZ */
+#define PCI_PRODUCT_ATI_MACH64_LB 0x4c42 /* Mach64 LB */
+#define PCI_PRODUCT_ATI_MACH64_LD 0x4c44 /* Mach64 LD */
+#define PCI_PRODUCT_ATI_MACH64_LG 0x4c47 /* Mach64 LG */
+#define PCI_PRODUCT_ATI_MACH64_LI 0x4c49 /* Mach64 LI */
+#define PCI_PRODUCT_ATI_MACH64_LM 0x4c4d /* Mach64 LM */
+#define PCI_PRODUCT_ATI_MACH64_LP 0x4c50 /* Mach64 LP */
+#define PCI_PRODUCT_ATI_MACH64_LR 0x4c52 /* Mach64 LR */
+
+/* Auravision products */
+#define PCI_PRODUCT_AURAVISION_VXP524 0x01f7 /* VxP524 PCI Video Processor */
+
+/* Aureal Semiconductor */
+#define PCI_PRODUCT_AUREAL_AU8820 0x0001 /* AU8820 Vortex Digital Audio Processor */
+
+/* Applied Micro Circuts products */
+#define PCI_PRODUCT_AMCIRCUITS_S5933 0x4750 /* S5933 PCI Matchmaker */
+#define PCI_PRODUCT_AMCIRCUITS_LANAI 0x8043 /* Myrinet LANai Interface */
+#define PCI_PRODUCT_AMCIRCUITS_S5920 0x5920 /* S5920 PCI Target */
+
+/* Atronics products */
+#define PCI_PRODUCT_ATRONICS_IDE_2015PL 0x2015 /* IDE-2015PL */
+
+/* Avance Logic products */
+#define PCI_PRODUCT_AVANCE_AVL2301 0x2301 /* AVL2301 */
+#define PCI_PRODUCT_AVANCE_AVG2302 0x2302 /* AVG2302 */
+#define PCI_PRODUCT_AVANCE2_ALG2301 0x2301 /* ALG2301 */
+#define PCI_PRODUCT_AVANCE2_ALG2302 0x2302 /* ALG2302 */
+
+/* CCUBE products */
+#define PCI_PRODUCT_CCUBE_CINEMASTER 0x8888 /* Cinemaster C 3.0 DVD Decoder */
+
+/* AVM products */
+#define PCI_PRODUCT_AVM_FRITZ_CARD 0x0a00 /* Fritz! Card ISDN Interface */
+
+/* Bit3 products */
+#define PCI_PRODUCT_BIT3_PCIVME617 0x0001 /* PCI-VME Interface Mod. 617 */
+#define PCI_PRODUCT_BIT3_PCIVME618 0x0010 /* PCI-VME Interface Mod. 618 */
+#define PCI_PRODUCT_BIT3_PCIVME2706 0x0300 /* PCI-VME Interface Mod. 2706 */
+
+/* Broadcom products */
+#define PCI_PRODUCT_BROADCOM_BCM4211 0x4211 /* BCM4211 iLine10 Controller */
+#define PCI_PRODUCT_BROADCOM_BCM4212 0x4212 /* BCM4212 V.90 Modem */
+#define PCI_PRODUCT_BROADCOM_BCM5700 0x1644 /* BCM5700 10/100/1000 Ethernet */
+#define PCI_PRODUCT_BROADCOM_BCM5701 0x1645 /* BCM5701 10/100/1000 Ethernet */
+#define PCI_PRODUCT_BROADCOM_BCM5702 0x16a6 /* BCM5702 10/100/1000 Ethernet */
+#define PCI_PRODUCT_BROADCOM_BCM5703 0x16a7 /* BCM5703 10/100/1000 Ethernet */
+#define PCI_PRODUCT_BROADCOM_BCM5705 0x1653 /* BCM5705 10/100/1000 Ethernet */
+#define PCI_PRODUCT_BROADCOM_BCM5820 0x5820 /* BCM5820 eCommerce Processor */
+#define PCI_PRODUCT_BROADCOM_BCM5821 0x5821 /* BCM5821 Super-eCommerce Processor */
+#define PCI_PRODUCT_BROADCOM_BCM5850 0x5850 /* BCM5850 SSL/TLS Protocol Processor */
+
+/* Brooktree products */
+#define PCI_PRODUCT_BROOKTREE_BT848 0x0350 /* Bt848 Video Capture */
+#define PCI_PRODUCT_BROOKTREE_BT849 0x0351 /* Bt849 Video Capture */
+#define PCI_PRODUCT_BROOKTREE_BT878 0x036e /* Bt878 Video Capture */
+#define PCI_PRODUCT_BROOKTREE_BT879 0x036f /* Bt879 Video Capture */
+
+/* BusLogic products */
+#define PCI_PRODUCT_BUSLOGIC_MULTIMASTER_NC 0x0140 /* MultiMaster NC */
+#define PCI_PRODUCT_BUSLOGIC_MULTIMASTER 0x1040 /* MultiMaster */
+#define PCI_PRODUCT_BUSLOGIC_FLASHPOINT 0x8130 /* FlashPoint */
+
+/* c't Magazin products */
+#define PCI_PRODUCT_C4T_GPPCI 0x6773 /* GPPCI */
+
+/* Chips and Technologies products */
+#define PCI_PRODUCT_CHIPS_64310 0x00b8 /* 64310 */
+#define PCI_PRODUCT_CHIPS_65545 0x00d8 /* 65545 */
+#define PCI_PRODUCT_CHIPS_65548 0x00dc /* 65548 */
+#define PCI_PRODUCT_CHIPS_65550 0x00e0 /* 65550 */
+#define PCI_PRODUCT_CHIPS_65554 0x00e4 /* 65554 */
+
+/* Cirrus Logic products */
+#define PCI_PRODUCT_CIRRUS_CL_GD7548 0x0038 /* CL-GD7548 */
+#define PCI_PRODUCT_CIRRUS_CL_GD5430 0x00a0 /* CL-GD5430 */
+#define PCI_PRODUCT_CIRRUS_CL_GD5434_4 0x00a4 /* CL-GD5434-4 */
+#define PCI_PRODUCT_CIRRUS_CL_GD5434_8 0x00a8 /* CL-GD5434-8 */
+#define PCI_PRODUCT_CIRRUS_CL_GD5436 0x00ac /* CL-GD5436 */
+#define PCI_PRODUCT_CIRRUS_CL_GD5446 0x00b8 /* CL-GD5446 */
+#define PCI_PRODUCT_CIRRUS_CL_GD5480 0x00bc /* CL-GD5480 */
+#define PCI_PRODUCT_CIRRUS_CL_PD6729 0x1100 /* CL-PD6729 */
+#define PCI_PRODUCT_CIRRUS_CL_PD6832 0x1110 /* CL-PD6832 PCI-CardBus Bridge */
+#define PCI_PRODUCT_CIRRUS_CL_PD6833 0x1113 /* CL-PD6833 PCI-CardBus Bridge */
+#define PCI_PRODUCT_CIRRUS_CL_GD7542 0x1200 /* CL-GD7542 */
+#define PCI_PRODUCT_CIRRUS_CL_GD7543 0x1202 /* CL-GD7543 */
+#define PCI_PRODUCT_CIRRUS_CL_GD7541 0x1204 /* CL-GD7541 */
+#define PCI_PRODUCT_CIRRUS_CL_CD4400 0x4400 /* CL-CD4400 Communications Controller */
+#define PCI_PRODUCT_CIRRUS_CS4610 0x6001 /* CS4610 SoundFusion Audio Accelerator */
+#define PCI_PRODUCT_CIRRUS_CS4280 0x6003 /* CS4280 CrystalClear Audio Interface */
+
+/* CMD Technology products -- info gleaned from their web site */
+#define PCI_PRODUCT_CMDTECH_640 0x0640 /* PCI0640 */
+/* No data on the CMD Tech. web site for the following as of Mar. 3 '98 */
+#define PCI_PRODUCT_CMDTECH_642 0x0642 /* PCI0642 */
+/* datasheets available from www.cmd.com for the followings */
+#define PCI_PRODUCT_CMDTECH_643 0x0643 /* PCI0643 */
+#define PCI_PRODUCT_CMDTECH_646 0x0646 /* PCI0646 */
+#define PCI_PRODUCT_CMDTECH_647 0x0647 /* PCI0647 */
+#define PCI_PRODUCT_CMDTECH_648 0x0648 /* PCI0648 */
+#define PCI_PRODUCT_CMDTECH_649 0x0649 /* PCI0649 */
+
+/* Inclusion of 'A' in the following entry is probably wrong. */
+/* No data on the CMD Tech. web site for the following as of Mar. 3 '98 */
+#define PCI_PRODUCT_CMDTECH_650A 0x0650 /* PCI0650A */
+#define PCI_PRODUCT_CMDTECH_670 0x0670 /* USB0670 */
+#define PCI_PRODUCT_CMDTECH_673 0x0673 /* USB0673 */
+
+/* C-Media products */
+#define PCI_PRODUCT_CMEDIA_CMI8338A 0x0100 /* CMI8338A PCI Audio Device */
+#define PCI_PRODUCT_CMEDIA_CMI8338B 0x0101 /* CMI8338B PCI Audio Device */
+#define PCI_PRODUCT_CMEDIA_CMI8738 0x0111 /* CMI8738/C3DX PCI Audio Device */
+#define PCI_PRODUCT_CMEDIA_HSP56 0x0211 /* HSP56 Audiomodem Riser */
+
+/* Cogent Data Technologies products */
+#define PCI_PRODUCT_COGENT_EM110TX 0x1400 /* EX110TX PCI Fast Ethernet Adapter */
+
+/* Compaq products */
+#define PCI_PRODUCT_COMPAQ_PCI_EISA_BRIDGE 0x0001 /* PCI-EISA Bridge */
+#define PCI_PRODUCT_COMPAQ_PCI_ISA_BRIDGE 0x0002 /* PCI-ISA Bridge */
+#define PCI_PRODUCT_COMPAQ_TRIFLEX1 0x1000 /* Triflex Host-PCI Bridge */
+#define PCI_PRODUCT_COMPAQ_TRIFLEX2 0x2000 /* Triflex Host-PCI Bridge */
+#define PCI_PRODUCT_COMPAQ_QVISION_V0 0x3032 /* QVision */
+#define PCI_PRODUCT_COMPAQ_QVISION_1280P 0x3033 /* QVision 1280/p */
+#define PCI_PRODUCT_COMPAQ_QVISION_V2 0x3034 /* QVision */
+#define PCI_PRODUCT_COMPAQ_TRIFLEX4 0x4000 /* Triflex Host-PCI Bridge */
+#define PCI_PRODUCT_COMPAQ_USB 0x7020 /* USB Controller */
+#define PCI_PRODUCT_COMPAQ_SMART2P 0xae10 /* SMART2P RAID */
+#define PCI_PRODUCT_COMPAQ_N100TX 0xae32 /* Netelligent 10/100 TX */
+#define PCI_PRODUCT_COMPAQ_N10T 0xae34 /* Netelligent 10 T */
+#define PCI_PRODUCT_COMPAQ_IntNF3P 0xae35 /* Integrated NetFlex 3/P */
+#define PCI_PRODUCT_COMPAQ_DPNet100TX 0xae40 /* Dual Port Netelligent 10/100 TX */
+#define PCI_PRODUCT_COMPAQ_IntPL100TX 0xae43 /* ProLiant Integrated Netelligent 10/100 TX */
+#define PCI_PRODUCT_COMPAQ_DP4000 0xb011 /* Deskpro 4000 5233MMX */
+#define PCI_PRODUCT_COMPAQ_NF3P_BNC 0xf150 /* NetFlex 3/P w/ BNC */
+#define PCI_PRODUCT_COMPAQ_NF3P 0xf130 /* NetFlex 3/P */
+
+/* Compex products - XXX better descriptions */
+#define PCI_PRODUCT_COMPEX_NE2KETHER 0x1401 /* Ethernet */
+#define PCI_PRODUCT_COMPEX_RL100ATX 0x2011 /* RL100-ATX 10/100 Ethernet */
+#define PCI_PRODUCT_COMPEX_RL100TX 0x9881 /* RL100-TX 10/100 Ethernet */
+
+/* Conexant Systems products */
+#define PCI_PRODUCT_CONEXANT_SOFTK56 0x2443 /* SoftK56 PCI Software Modem */
+
+/* Contaq Microsystems products */
+#define PCI_PRODUCT_CONTAQ_82C599 0x0600 /* 82C599 PCI-VLB Bridge */
+#define PCI_PRODUCT_CONTAQ_82C693 0xc693 /* 82C693 PCI-ISA Bridge */
+
+/* Corollary Products */
+#define PCI_PRODUCT_COROLLARY_CBUSII_PCIB 0x0014 /* \"C-Bus II\"-PCI Bridge */
+
+/* Creative Labs products */
+#define PCI_PRODUCT_CREATIVELABS_SBLIVE 0x0002 /* SBLive! EMU 10000 */
+#define PCI_PRODUCT_CREATIVELABS_SBJOY 0x7002 /* PCI Gameport Joystick */
+#define PCI_PRODUCT_CREATIVELABS_EV1938 0x8938 /* Ectiva 1938 */
+
+/* Cyclades products */
+#define PCI_PRODUCT_CYCLADES_CYCLOMY_1 0x0100 /* Cyclom-Y below 1M */
+#define PCI_PRODUCT_CYCLADES_CYCLOMY_2 0x0101 /* Cyclom-Y above 1M */
+#define PCI_PRODUCT_CYCLADES_CYCLOM4Y_1 0x0102 /* Cyclom-4Y below 1M */
+#define PCI_PRODUCT_CYCLADES_CYCLOM4Y_2 0x0103 /* Cyclom-4Y above 1M */
+#define PCI_PRODUCT_CYCLADES_CYCLOM8Y_1 0x0104 /* Cyclom-8Y below 1M */
+#define PCI_PRODUCT_CYCLADES_CYCLOM8Y_2 0x0105 /* Cyclom-8Y above 1M */
+#define PCI_PRODUCT_CYCLADES_CYCLOMZ_1 0x0200 /* Cyclom-Z below 1M */
+#define PCI_PRODUCT_CYCLADES_CYCLOMZ_2 0x0201 /* Cyclom-Z above 1M */
+
+/* Davicom Semiconductor products */
+#define PCI_PRODUCT_DAVICOM_DM9102 0x9102 /* Davicom DM9102 10/100 Ethernet */
+
+/* DEC products */
+#define PCI_PRODUCT_DEC_21050 0x0001 /* DECchip 21050 PCI-PCI Bridge */
+#define PCI_PRODUCT_DEC_21040 0x0002 /* DECchip 21040 Ethernet */
+#define PCI_PRODUCT_DEC_21030 0x0004 /* DECchip 21030 (\"TGA\") */
+#define PCI_PRODUCT_DEC_NVRAM 0x0007 /* Zephyr NV-RAM */
+#define PCI_PRODUCT_DEC_KZPSA 0x0008 /* KZPSA */
+#define PCI_PRODUCT_DEC_21140 0x0009 /* DECchip 21140 10/100 Ethernet */
+#define PCI_PRODUCT_DEC_PBXGB 0x000d /* TGA2 */
+#define PCI_PRODUCT_DEC_DEFPA 0x000f /* DEFPA */
+/* product DEC ??? 0x0010 ??? VME Interface */
+#define PCI_PRODUCT_DEC_21041 0x0014 /* DECchip 21041 Ethernet */
+#define PCI_PRODUCT_DEC_DGLPB 0x0016 /* DGLPB (\"OPPO\") */
+#define PCI_PRODUCT_DEC_21142 0x0019 /* DECchip 21142/21143 10/100 Ethernet */
+#define PCI_PRODUCT_DEC_21052 0x0021 /* DECchip 21052 PCI-PCI Bridge */
+#define PCI_PRODUCT_DEC_21150 0x0022 /* DECchip 21150 PCI-PCI Bridge */
+#define PCI_PRODUCT_DEC_21152 0x0024 /* DECchip 21152 PCI-PCI Bridge */
+#define PCI_PRODUCT_DEC_21153 0x0025 /* DECchip 21153 PCI-PCI Bridge */
+#define PCI_PRODUCT_DEC_21154 0x0026 /* DECchip 21154 PCI-PCI Bridge */
+#define PCI_PRODUCT_DEC_CPQ42XX 0x0046 /* Compaq SMART RAID 42xx */
+
+/* Delta products */
+#define PCI_PRODUCT_DELTA_8139 0x1360 /* 8139 Ethernet */
+
+/* Diamond products */
+#define PCI_PRODUCT_DIAMOND_VIPER 0x9001 /* Viper/PCI */
+
+/* D-Link Systems products */
+#define PCI_PRODUCT_DLINK_DFE550TX 0x1002 /* DFE-550TX 10/100 Ethernet */
+
+/* Distributed Processing Technology products */
+#define PCI_PRODUCT_DPT_SC_RAID 0xa400 /* SmartCache/SmartRAID */
+#define PCI_PRODUCT_DPT_RAID_I2O 0xa501 /* SmartRAID (I2O) */
+#define PCI_PRODUCT_DPT_MEMCTLR 0x1012 /* Memory Controller */
+
+/* Dolphin products */
+#define PCI_PRODUCT_DOLPHIN_PCISCI 0x0658 /* PCI-SCI Bridge */
+
+/* Domex products */
+#define PCI_PRODUCT_DOMEX_PCISCSI 0x0001 /* DMX-3191D */
+
+/* ELSA products */
+#define PCI_PRODUCT_ELSA_QS1PCI 0x1000 /* QuickStep 1000 ISDN card */
+
+/* Emulex products */
+#define PCI_PRODUCT_EMULEX_LPPFC 0x10df /* \"Light Pulse\" FibreChannel adapter */
+
+/* Ensoniq products */
+#define PCI_PRODUCT_ENSONIQ_AUDIOPCI 0x5000 /* AudioPCI */
+#define PCI_PRODUCT_ENSONIQ_AUDIOPCI97 0x1371 /* AudioPCI 97 */
+#define PCI_PRODUCT_ENSONIQ_CT5880 0x5880 /* CT5880 */
+
+/* Epigram (now Broadcom) products */
+#define PCI_PRODUCT_EPIGRAM_BCM4210 0xa0fa /* BCM4210 iLine10 Controller */
+
+/* Essential Communications products */
+#define PCI_PRODUCT_ESSENTIAL_RR_HIPPI 0x0001 /* RoadRunner HIPPI Interface */
+#define PCI_PRODUCT_ESSENTIAL_RR_GIGE 0x0005 /* RoadRunner Gig-E Interface */
+
+/* ESS Technology Inc products */
+#define PCI_PRODUCT_ESSTECH_MAESTRO1 0x0100 /* Maestro 1 PCI Audio Accelerator */
+#define PCI_PRODUCT_ESSTECH_MAESTRO2 0x1968 /* Maestro 2 PCI Audio Accelerator */
+#define PCI_PRODUCT_ESSTECH_SOLO1 0x1969 /* Solo-1 PCI AudioDrive */
+#define PCI_PRODUCT_ESSTECH_MAESTRO2E 0x1978 /* Maestro 2E PCI Audio Accelerator */
+#define PCI_PRODUCT_ESSTECH_MAESTRO3 0x1998 /* Maestro 3 PCI Audio Accelerator */
+#define PCI_PRODUCT_ESSTECH_MAESTRO3MODEM 0x1999 /* Maestro 3 Modem */
+
+/* ESS Technology Inc products */
+#define PCI_PRODUCT_ESSTECH2_MAESTRO1 0x0100 /* Maestro 1 PCI Audio Accelerator */
+
+/* O2 Micro Inc */
+#define PCI_PRODUCT_O2MICRO_OZ6832 0x6832 /* OZ6832 CardBus Controller */
+
+/* Evans & Sutherland products */
+#define PCI_PRODUCT_ES_FREEDOM 0x0001 /* Freedom PCI-GBus Interface */
+
+/* FORE products */
+#define PCI_PRODUCT_FORE_PCA200 0x0210 /* ATM PCA-200 */
+#define PCI_PRODUCT_FORE_PCA200E 0x0300 /* ATM PCA-200e */
+
+/* Forte Media products */
+#define PCI_PRODUCT_FORTEMEDIA_FM801 0x0801 /* Forte Media 801 Sound */
+
+/* Future Domain products */
+#define PCI_PRODUCT_FUTUREDOMAIN_TMC_18C30 0x0000 /* TMC-18C30 (36C70) */
+
+/* Efficient Networks products */
+#define PCI_PRODUCT_EFFICIENTNETS_ENI155PF 0x0000 /* 155P-MF1 ATM (FPGA) */
+#define PCI_PRODUCT_EFFICIENTNETS_ENI155PA 0x0002 /* 155P-MF1 ATM (ASIC) */
+#define PCI_PRODUCT_EFFICIENTNETS_ENI25P 0x0003 /* SpeedStream ENI-25p */
+#define PCI_PRODUCT_EFFICIENTNETS_SS3000 0x0005 /* SpeedStream 3000 */
+
+/* Galileo Technology products */
+#define PCI_PRODUCT_GALILEO_GT64010A 0x0146 /* GT-64010A System Controller */
+#define PCI_PRODUCT_GALILEO_GT64115 0x4111 /* GT-64115 System Controller */
+#define PCI_PRODUCT_GALILEO_GT64011 0x4146 /* GT-64011 System Controller */
+#define PCI_PRODUCT_GALILEO_GT64120 0x4620 /* GT-64120 System Controller */
+#define PCI_PRODUCT_GALILEO_GT64130 0x6320 /* GT-64130 System Controller */
+
+/* Hewlett-Packard products */
+#define PCI_PRODUCT_HP_J2585A 0x1030 /* J2585A */
+
+/* IBM products */
+#define PCI_PRODUCT_IBM_MCABRIDGE 0x0002 /* MCA Bridge */
+#define PCI_PRODUCT_IBM_ALTALITE 0x0005 /* CPU Bridge - Alta Lite */
+#define PCI_PRODUCT_IBM_ALTAMP 0x0007 /* CPU Bridge - Alta MP */
+#define PCI_PRODUCT_IBM_ISABRIDGE 0x000a /* ISA Bridge w/PnP */
+#define PCI_PRODUCT_IBM_CPUBRIDGE 0x0017 /* CPU Bridge */
+#define PCI_PRODUCT_IBM_LANSTREAMER 0x0018 /* Auto LANStreamer */
+#define PCI_PRODUCT_IBM_GXT150P 0x001b /* GXT-150P 2D Accelerator */
+#define PCI_PRODUCT_IBM_MCABRIDGE2 0x0020 /* MCA Bridge */
+#define PCI_PRODUCT_IBM_82351 0x0022 /* 82351 PCI-PCI Bridge */
+#define PCI_PRODUCT_IBM_SERVERAID 0x002e /* ServeRAID */
+#define PCI_PRODUCT_IBM_OLYMPIC 0x003e /* Token Ring */
+#define PCI_PRODUCT_IBM_MIAMI 0x0036 /* Miami/PCI */
+#define PCI_PRODUCT_IBM_TURBOWAYS25 0x0053 /* Turboways 25 ATM */
+#define PCI_PRODUCT_IBM_MPIC2 0xffff /* MPIC-II */
+
+/* IDT products */
+#define PCI_PRODUCT_IDT_77201 0x0001 /* 77201/77211 ATM (\"NICStAR\") */
+
+/* Initio products */
+#define PCI_PRODUCT_INITIO_I920 0x0002 /* INIC-920 SCSI */
+#define PCI_PRODUCT_INITIO_I940 0x9400 /* INIC-940 SCSI */
+#define PCI_PRODUCT_INITIO_I935 0x9401 /* INIC-935 SCSI */
+#define PCI_PRODUCT_INITIO_I950 0x9500 /* INIC-950 SCSI */
+
+/* Integrated Micro Solutions products */
+#define PCI_PRODUCT_IMS_8849 0x8849 /* 8849 */
+#define PCI_PRODUCT_IMS_TT128M 0x9128 /* TwinTurbo 128M */
+
+/* Intel products */
+#define PCI_PRODUCT_INTEL_PCEB 0x0482 /* 82375EB/SB PCI-EISA Bridge (PCEB) */
+#define PCI_PRODUCT_INTEL_CDC 0x0483 /* 82424ZX Cache and DRAM controller (CDC) */
+#define PCI_PRODUCT_INTEL_SIO 0x0484 /* 82378ZB System I/O (SIO) */
+#define PCI_PRODUCT_INTEL_82426EX 0x0486 /* 82426EX PCI-to-ISA Bridge (PCIB) */
+#define PCI_PRODUCT_INTEL_PCMC 0x04a3 /* 82434LX/NX PCI, Cache and Memory Controller (PCMC) */
+#define PCI_PRODUCT_INTEL_IN_BUSINESS 0x1030 /* InBusiness Fast Ethernet LAN Controller */
+#define PCI_PRODUCT_INTEL_82559ER 0x1209 /* 82559ER Fast Ethernet LAN Controller */
+#define PCI_PRODUCT_INTEL_82092AA 0x1222 /* 82092AA IDE controller */
+#define PCI_PRODUCT_INTEL_SAA7116 0x1223 /* SAA7116 */
+#define PCI_PRODUCT_INTEL_82596 0x1226 /* 82596 LAN Controller */
+#define PCI_PRODUCT_INTEL_EEPRO100 0x1227 /* EE Pro 100 10/100 Fast Ethernet */
+#define PCI_PRODUCT_INTEL_EEPRO100S 0x1228 /* EE Pro 100 Smart 10/100 Fast Ethernet */
+#define PCI_PRODUCT_INTEL_82557 0x1229 /* 82557 Fast Ethernet LAN Controller */
+#define PCI_PRODUCT_INTEL_82437FX 0x122d /* 82437FX System Controller (TSC) */
+#define PCI_PRODUCT_INTEL_82371FB_ISA 0x122e /* 82371FB PCI-to-ISA Bridge (PIIX) */
+#define PCI_PRODUCT_INTEL_82371FB_IDE 0x1230 /* 82371FB IDE controller (PIIX) */
+#define PCI_PRODUCT_INTEL_82371MX 0x1234 /* 82371MX Mobile PCI I/O IDE Xcelerator (MPIIX) */
+#define PCI_PRODUCT_INTEL_82437MX 0x1235 /* 82437MX Mobile System Controller (MTSC) */
+#define PCI_PRODUCT_INTEL_82441FX 0x1237 /* 82441FX PCI and Memory Controller (PMC) */
+#define PCI_PRODUCT_INTEL_82380AB 0x123c /* 82380AB Mobile PCI-to-ISA Bridge (MISA) */
+#define PCI_PRODUCT_INTEL_82380FB 0x124b /* 82380FB Mobile PCI-to-PCI Bridge (MPCI2) */
+#define PCI_PRODUCT_INTEL_82439HX 0x1250 /* 82439HX System Controller (TXC) */
+#define PCI_PRODUCT_INTEL_82801AA_LPC 0x2410 /* 82801AA LPC Interface Bridge */
+#define PCI_PRODUCT_INTEL_82801AA_IDE 0x2411 /* 82801AA IDE Controller */
+#define PCI_PRODUCT_INTEL_82801AA_USB 0x2412 /* 82801AA USB Controller */
+#define PCI_PRODUCT_INTEL_82801AA_SMB 0x2413 /* 82801AA SMBus Controller */
+#define PCI_PRODUCT_INTEL_82801AA_ACA 0x2415 /* 82801AA AC-97 Audio Controller */
+#define PCI_PRODUCT_INTEL_82801AA_ACM 0x2416 /* 82801AA AC-97 PCI Modem */
+#define PCI_PRODUCT_INTEL_82801AA_HPB 0x2418 /* 82801AA Hub-to-PCI Bridge */
+#define PCI_PRODUCT_INTEL_82801AB_LPC 0x2420 /* 82801AB LPC Interface Bridge */
+#define PCI_PRODUCT_INTEL_82801AB_IDE 0x2421 /* 82801AB IDE Controller */
+#define PCI_PRODUCT_INTEL_82801AB_USB 0x2422 /* 82801AB USB Controller */
+#define PCI_PRODUCT_INTEL_82801AB_SMB 0x2423 /* 82801AB SMBus Controller */
+#define PCI_PRODUCT_INTEL_82801AB_ACA 0x2425 /* 82801AB AC-97 Audio Controller */
+#define PCI_PRODUCT_INTEL_82801AB_ACM 0x2426 /* 82801AB AC-97 PCI Modem */
+#define PCI_PRODUCT_INTEL_82801AB_HPB 0x2428 /* 82801AB Hub-to-PCI Bridge */
+#define PCI_PRODUCT_INTEL_82801BA_LPC 0x2440 /* 82801BA LPC Interface Bridge */
+#define PCI_PRODUCT_INTEL_82801BA_USB1 0x2442 /* 82801BA USB Controller */
+#define PCI_PRODUCT_INTEL_82801BA_SMB 0x2443 /* 82801BA SMBus Controller */
+#define PCI_PRODUCT_INTEL_82801BA_USB2 0x2444 /* 82801BA USB Controller */
+#define PCI_PRODUCT_INTEL_82801BA_ACA 0x2445 /* 82801BA AC-97 Audio Controller */
+#define PCI_PRODUCT_INTEL_82801BA_ACM 0x2446 /* 82801BA AC-97 PCI Modem */
+#define PCI_PRODUCT_INTEL_82801BA_LAN 0x2449 /* 82801BA LAN Controller */
+#define PCI_PRODUCT_INTEL_82801BA_IDE 0x244B /* 82801BA IDE Controller */
+#define PCI_PRODUCT_INTEL_82801BA_HPB 0x244E /* 82801BA Hub-to-PCI Bridge */
+#define PCI_PRODUCT_INTEL_82371SB_ISA 0x7000 /* 82371SB PCI-to-ISA Bridge (PIIX3) */
+#define PCI_PRODUCT_INTEL_82371SB_IDE 0x7010 /* 82371SB IDE Interface (PIIX3) */
+#define PCI_PRODUCT_INTEL_82371SB_USB 0x7020 /* 82371SB USB Host Controller (PIIX3) */
+#define PCI_PRODUCT_INTEL_82437VX 0x7030 /* 82437VX System Controller (TVX) */
+#define PCI_PRODUCT_INTEL_82439TX 0x7100 /* 82439TX System Controller (MTXC) */
+#define PCI_PRODUCT_INTEL_82371AB_ISA 0x7110 /* 82371AB PCI-to-ISA Bridge (PIIX4) */
+#define PCI_PRODUCT_INTEL_82371AB_IDE 0x7111 /* 82371AB IDE controller (PIIX4) */
+#define PCI_PRODUCT_INTEL_82371AB_USB 0x7112 /* 82371AB USB Host Controller (PIIX4) */
+#define PCI_PRODUCT_INTEL_82371AB_PMC 0x7113 /* 82371AB Power Management Controller (PIIX4) */
+#define PCI_PRODUCT_INTEL_82810_MCH 0x7120 /* 82810 Memory Controller Hub */
+#define PCI_PRODUCT_INTEL_82810_GC 0x7121 /* 82810 Graphics Controller */
+#define PCI_PRODUCT_INTEL_82810_DC100_MCH 0x7122 /* 82810-DC100 Memory Controller Hub */
+#define PCI_PRODUCT_INTEL_82810_DC100_GC 0x7123 /* 82810-DC100 Graphics Controller */
+#define PCI_PRODUCT_INTEL_82810E_MCH 0x7124 /* 82810E Memory Controller Hub */
+#define PCI_PRODUCT_INTEL_82810E_GC 0x7125 /* 82810E Graphics Controller */
+#define PCI_PRODUCT_INTEL_82443LX 0x7180 /* 82443LX PCI AGP Controller (PAC) */
+#define PCI_PRODUCT_INTEL_82443LX_AGP 0x7181 /* 82443LX AGP Interface (PAC) */
+#define PCI_PRODUCT_INTEL_82443BX 0x7190 /* 82443BX Host Bridge/Controller */
+#define PCI_PRODUCT_INTEL_82443BX_AGP 0x7191 /* 82443BX AGP Interface */
+#define PCI_PRODUCT_INTEL_82443BX_NOAGP 0x7192 /* 82443BX Host Bridge/Controller (AGP disabled) */
+#define PCI_PRODUCT_INTEL_82440MX 0x7194 /* 82440MX Host Bridge/Controller */
+#define PCI_PRODUCT_INTEL_82440MX_ACA 0x7195 /* 82440MX AC-97 Audio Controller */
+#define PCI_PRODUCT_INTEL_82440MX_ISA 0x7198 /* 82440MX PCI-to-ISA Bridge */
+#define PCI_PRODUCT_INTEL_82440MX_IDE 0x7199 /* 82440MX IDE Controller */
+#define PCI_PRODUCT_INTEL_82440MX_USB 0x719a /* 82440MX USB Host Controller */
+#define PCI_PRODUCT_INTEL_82440MX_PMC 0x719b /* 82440MX Power Management Controller */
+#define PCI_PRODUCT_INTEL_I740 0x7800 /* i740 Graphics Accelerator */
+#define PCI_PRODUCT_INTEL_PCI450_PB 0x84c4 /* 82454KX/GX PCI Bridge (PB) */
+#define PCI_PRODUCT_INTEL_PCI450_MC 0x84c5 /* 82451KX/GX Memory Controller (MC) */
+#define PCI_PRODUCT_INTEL_82451NX_MIOC 0x84ca /* 82451NX Memory & I/O Controller (MIOC) */
+#define PCI_PRODUCT_INTEL_82451NX_PXB 0x84cb /* 82451NX PCI Expander Bridge (PXB) */
+
+/* Intergraph products */
+#define PCI_PRODUCT_INTERGRAPH_4D50T 0x00e4 /* Powerstorm 4D50T */
+
+/* I. T. T. products */
+#define PCI_PRODUCT_ITT_AGX016 0x0001 /* AGX016 */
+#define PCI_PRODUCT_ITT_ITT3204 0x0002 /* ITT3204 MPEG Decoder */
+
+/* KTI products - XXX better descriptions */
+#define PCI_PRODUCT_KTI_NE2KETHER 0x3000 /* Ethernet */
+
+/* LAN Media Corporation */
+#define PCI_PRODUCT_LMC_HSSI 0x0003 /* HSSI Interface */
+#define PCI_PRODUCT_LMC_DS3 0x0004 /* DS3 Interface */
+#define PCI_PRODUCT_LMC_SSI 0x0005 /* SSI */
+
+/* LeadTek Research */
+#define PCI_PRODUCT_LEADTEK_S3_805 0x0000 /* S3 805 */
+
+/* Linear Systems / CompuModules */
+#define PCI_PRODUCT_LINEARSYS_DVB_TX 0x7629 /* DVB Transmitter */
+#define PCI_PRODUCT_LINEARSYS_DVB_RX 0x7630 /* DVB Receiver */
+
+/* Lite-On products */
+#define PCI_PRODUCT_LITEON_82C168 0x0002 /* 82C168/82C169 (PNIC) 10/100 Ethernet */
+#define PCI_PRODUCT_LITEON_82C115 0xc115 /* 82C115 (PNIC II) 10/100 Ethernet */
+
+/* Lucent products */
+#define PCI_PRODUCT_LUCENT_LTMODEM_0440 0x0440 /* K56flex DSVD LTMODEM */
+#define PCI_PRODUCT_LUCENT_LTMODEM_0441 0x0441 /* LTMODEM */
+#define PCI_PRODUCT_LUCENT_LTMODEM_0442 0x0442 /* LTMODEM */
+#define PCI_PRODUCT_LUCENT_LTMODEM_0443 0x0443 /* LTMODEM */
+#define PCI_PRODUCT_LUCENT_LTMODEM_0444 0x0444 /* LTMODEM */
+#define PCI_PRODUCT_LUCENT_LTMODEM_0445 0x0445 /* LTMODEM */
+#define PCI_PRODUCT_LUCENT_LTMODEM_0446 0x0446 /* LTMODEM */
+#define PCI_PRODUCT_LUCENT_LTMODEM_0447 0x0447 /* LTMODEM */
+#define PCI_PRODUCT_LUCENT_LTMODEM_0448 0x0448 /* LTMODEM */
+#define PCI_PRODUCT_LUCENT_LTMODEM_0449 0x0449 /* LTMODEM */
+#define PCI_PRODUCT_LUCENT_LTMODEM_044A 0x044A /* LTMODEM */
+#define PCI_PRODUCT_LUCENT_LTMODEM_044B 0x044B /* LTMODEM */
+#define PCI_PRODUCT_LUCENT_LTMODEM_044C 0x044C /* LTMODEM */
+#define PCI_PRODUCT_LUCENT_LTMODEM_044D 0x044D /* LTMODEM */
+#define PCI_PRODUCT_LUCENT_LTMODEM_044E 0x044E /* LTMODEM */
+#define PCI_PRODUCT_LUCENT_LTMODEM_0450 0x0450 /* LTMODEM */
+#define PCI_PRODUCT_LUCENT_LTMODEM_0451 0x0451 /* LTMODEM */
+#define PCI_PRODUCT_LUCENT_LTMODEM_0452 0x0452 /* LTMODEM */
+#define PCI_PRODUCT_LUCENT_LTMODEM_0453 0x0453 /* LTMODEM */
+#define PCI_PRODUCT_LUCENT_LTMODEM_0454 0x0454 /* LTMODEM */
+#define PCI_PRODUCT_LUCENT_LTMODEM_0455 0x0455 /* LTMODEM */
+#define PCI_PRODUCT_LUCENT_LTMODEM_0456 0x0456 /* LTMODEM */
+#define PCI_PRODUCT_LUCENT_LTMODEM_0457 0x0457 /* LTMODEM */
+#define PCI_PRODUCT_LUCENT_LTMODEM_0458 0x0458 /* LTMODEM */
+#define PCI_PRODUCT_LUCENT_LTMODEM_0459 0x0459 /* LTMODEM */
+#define PCI_PRODUCT_LUCENT_LTMODEM_045A 0x045A /* LTMODEM */
+#define PCI_PRODUCT_LUCENT_USBHC 0x5801 /* USB Host Controller */
+
+/* Macronix */
+#define PCI_PRODUCT_MACRONIX_MX98713 0x0512 /* MX98713 (PMAC) 10/100 Ethernet */
+#define PCI_PRODUCT_MACRONIX_MX987x5 0x0531 /* MX987x5 (PMAC) 10/100 Ethernet */
+
+/* Madge Networks products */
+#define PCI_PRODUCT_MADGE_COLLAGE25 0x1000 /* Collage 25 ATM adapter */
+#define PCI_PRODUCT_MADGE_COLLAGE155 0x1001 /* Collage 155 ATM adapter */
+
+/* Matrox products */
+#define PCI_PRODUCT_MATROX_ATLAS 0x0518 /* MGA PX2085 (\"Atlas\") */
+#define PCI_PRODUCT_MATROX_MILLENNIUM 0x0519 /* MGA Millennium 2064W */
+#define PCI_PRODUCT_MATROX_MYSTIQUE 0x051a /* MGA Mystique 1064SG */
+#define PCI_PRODUCT_MATROX_MILLENNIUM2 0x051b /* MGA Millennium II 2164W */
+#define PCI_PRODUCT_MATROX_MILLENNIUM2_AGP 0x051f /* MGA Millennium II 2164WA-B AG */
+#define PCI_PRODUCT_MATROX_G200_PCI 0x0520 /* MGA G200 PCI */
+#define PCI_PRODUCT_MATROX_G200_AGP 0x0521 /* MGA G200 AGP */
+#define PCI_PRODUCT_MATROX_G400_AGP 0x0525 /* MGA G400 AGP */
+#define PCI_PRODUCT_MATROX_IMPRESSION 0x0d10 /* MGA Impression */
+#define PCI_PRODUCT_MATROX_G100_PCI 0x1000 /* MGA G100 PCI */
+#define PCI_PRODUCT_MATROX_G100_AGP 0x1001 /* MGA G100 AGP */
+
+/* Motorola products */
+#define PCI_PRODUCT_MOT_MPC105 0x0001 /* MPC105 \"Eagle\" Host Bridge */
+#define PCI_PRODUCT_MOT_MPC106 0x0002 /* MPC106 \"Grackle\" Host Bridge */
+
+/* Mylex products */
+#define PCI_PRODUCT_MYLEX_960P 0x0001 /* DAC960P RAID controller */
+
+/* Mutech products */
+#define PCI_PRODUCT_MUTECH_MV1000 0x0001 /* MV1000 */
+
+/* NetVin products - XXX better descriptions */
+#define PCI_PRODUCT_NETVIN_5000 0x5000 /* 5000 Ethernet */
+
+/* Newbridge / Tundra products */
+#define PCI_PRODUCT_NEWBRIDGE_CA91CX42 0x0000 /* Universe VME bridge */
+
+/* National Semiconductor products */
+#define PCI_PRODUCT_NS_DP83810 0x0001 /* DP83810 10/100 Ethernet */
+#define PCI_PRODUCT_NS_DP83815 0x0020 /* DP83815 10/100 Ethernet */
+#define PCI_PRODUCT_NS_NS87410 0xd001 /* NS87410 */
+
+/* NCR/Symbios Logic products */
+#define PCI_PRODUCT_SYMBIOS_810 0x0001 /* 53c810 */
+#define PCI_PRODUCT_SYMBIOS_820 0x0002 /* 53c820 */
+#define PCI_PRODUCT_SYMBIOS_825 0x0003 /* 53c825 */
+#define PCI_PRODUCT_SYMBIOS_815 0x0004 /* 53c815 */
+#define PCI_PRODUCT_SYMBIOS_810AP 0x0005 /* 53c810AP */
+#define PCI_PRODUCT_SYMBIOS_860 0x0006 /* 53c860 */
+#define PCI_PRODUCT_SYMBIOS_896 0x000b /* 53c896 */
+#define PCI_PRODUCT_SYMBIOS_895 0x000c /* 53c895 */
+#define PCI_PRODUCT_SYMBIOS_885 0x000d /* 53c885 */
+#define PCI_PRODUCT_SYMBIOS_875 0x000f /* 53c875 */
+#define PCI_PRODUCT_SYMBIOS_1510 0x0010 /* 53c1510 */
+#define PCI_PRODUCT_SYMBIOS_875J 0x008f /* 53c875J */
+
+/* Packet Engines products */
+#define PCI_PRODUCT_SYMBIOS_PE_GNIC 0x0702 /* Packet Engines G-NIC Ethernet */
+
+/* NEC products */
+#define PCI_PRODUCT_NEC_USB 0x0035 /* USB Host Controller */
+#define PCI_PRODUCT_NEC_POWERVR2 0x0046 /* PowerVR PCX2 */
+#define PCI_PRODUCT_NEC_PD72872 0x0063 /* uPD72872 IEEE 1394 OHCI Host Controller */
+#define PCI_PRODUCT_NEC_PD72870 0x00cd /* uPD72870 IEEE 1394 OHCI Host Controller */
+#define PCI_PRODUCT_NEC_PD72871 0x00ce /* uPD72871 IEEE 1394 OHCI Host Controller */
+
+/* Neomagic products */
+#define PCI_PRODUCT_NEOMAGIC_NMMG128ZV 0x0003 /* MagicGraph 128ZV */
+#define PCI_PRODUCT_NEOMAGIC_NMMG2160 0x0004 /* MagicGraph 128XD */
+#define PCI_PRODUCT_NEOMAGIC_NMMM256AV_VGA 0x0005 /* MagicMedia 256AV VGA */
+#define PCI_PRODUCT_NEOMAGIC_NMMM256ZX_VGA 0x0006 /* MagicMedia 256ZX VGA */
+#define PCI_PRODUCT_NEOMAGIC_NMMM256AV_AU 0x8005 /* MagicMedia 256AV Audio */
+#define PCI_PRODUCT_NEOMAGIC_NMMM256ZX_AU 0x8006 /* MagicMedia 256ZX Audio */
+
+/* Netgear products */
+#define PCI_PRODUCT_NETGEAR_GA620 0x620a /* GA620 Gigabit Ethernet */
+
+/* NexGen products */
+#define PCI_PRODUCT_NEXGEN_NX82C501 0x4e78 /* NX82C501 Host-PCI Bridge */
+
+/* NKK products */
+#define PCI_PRODUCT_NKK_NDR4600 0xA001 /* NDR4600 Host-PCI Bridge */
+
+/* Number Nine products */
+#define PCI_PRODUCT_NUMBER9_I128 0x2309 /* Imagine-128 */
+#define PCI_PRODUCT_NUMBER9_I128_2 0x2339 /* Imagine-128 II */
+
+/* Nvidia Corporationn products */
+#define PCI_PRODUCT_NVIDIA_RIVATNT 0x0020 /* RIVA TNT */
+#define PCI_PRODUCT_NVIDIA_RIVATNT2 0x0028 /* RIVA TNT2 */
+#define PCI_PRODUCT_NVIDIA_RIVATNT2U 0x0029 /* RIVA TNT2 Ultra */
+#define PCI_PRODUCT_NVIDIA_VANTA 0x002C /* Vanta */
+#define PCI_PRODUCT_NVIDIA_RIVATNT2M64 0x002D /* RIVA TNT2 Model 64 */
+#define PCI_PRODUCT_NVIDIA_ALADDINTNT2 0x00A0 /* Aladdin TNT2 */
+#define PCI_PRODUCT_NVIDIA_GEFORCE256 0x0100 /* GeForce 256 */
+#define PCI_PRODUCT_NVIDIA_GEFORCEDDR 0x0101 /* GeForce DDR */
+#define PCI_PRODUCT_NVIDIA_QUADRO 0x0103 /* Quadro */
+#define PCI_PRODUCT_NVIDIA_GEFORCE2 0x0150 /* GeForce2 GTS */
+#define PCI_PRODUCT_NVIDIA_GEFORCE2DDR 0x0151 /* GeForce2 GTS (DDR) */
+#define PCI_PRODUCT_NVIDIA_GEFORCE2BR 0x0152 /* GeForce2 GTS */
+#define PCI_PRODUCT_NVIDIA_QUADRO2 0x0153 /* Quadro2 */
+
+/* Nvidia Corporation & SGS Thomson Microelectric */
+#define PCI_PRODUCT_NVIDIA_SGS_RIVA128 0x0018 /* Riva 128 */
+
+/* Oak Technologies products */
+#define PCI_PRODUCT_OAKTECH_OTI1007 0x0107 /* OTI107 */
+
+/* Olicom products */
+#define PCI_PRODUCT_OLICOM_OC2183 0x0013 /* Olicom OC-2183/2185 Ethernet */
+#define PCI_PRODUCT_OLICOM_OC2325 0x0012 /* Olicom OC-2325 Ethernet */
+#define PCI_PRODUCT_OLICOM_OC2326 0x0014 /* Olicom OC-2326 10/100-TX Ethernet */
+
+/* Opti products */
+#define PCI_PRODUCT_OPTI_82C557 0xc557 /* 82C557 */
+#define PCI_PRODUCT_OPTI_82C558 0xc558 /* 82C558 */
+#define PCI_PRODUCT_OPTI_82C568 0xc568 /* 82C568 */
+#define PCI_PRODUCT_OPTI_82D568 0xd568 /* 82D568 */
+#define PCI_PRODUCT_OPTI_82C621 0xc621 /* 82C621 */
+#define PCI_PRODUCT_OPTI_82C822 0xc822 /* 82C822 */
+#define PCI_PRODUCT_OPTI_RM861HA 0xc861 /* RM861HA */
+#define PCI_PRODUCT_OPTI_82C700 0xc700 /* 82C700 */
+#define PCI_PRODUCT_OPTI_82C701 0xc701 /* 82C701 */
+
+/* PC Tech products */
+#define PCI_PRODUCT_PCTECH_RZ1000 0x1000 /* RZ1000 */
+
+/* PLX Technology products */
+#define PCI_PRODUCT_PLX_9060ES 0x906e /* 9060ES PCI bus controller */
+
+/* ProLAN products - XXX better descriptions */
+#define PCI_PRODUCT_PROLAN_NE2KETHER 0x1980 /* Ethernet */
+
+/* Promise products */
+#define PCI_PRODUCT_PROMISE_DC5030 0x5300 /* DC5030 */
+#define PCI_PRODUCT_PROMISE_ULTRA33 0x4d33 /* Ultra33/ATA Bus Master IDE Accelerator */
+#define PCI_PRODUCT_PROMISE_ULTRA66 0x4d38 /* Ultra66/ATA Bus Master IDE Accelerator */
+#define PCI_PRODUCT_PROMISE_ULTRA100 0x4d30 /* Ultra100/ATA Bus Master IDE Accelerator */
+
+/* QLogic products */
+#define PCI_PRODUCT_QLOGIC_ISP1020 0x1020 /* ISP1020 */
+#define PCI_PRODUCT_QLOGIC_ISP1022 0x1022 /* ISP1022 */
+#define PCI_PRODUCT_QLOGIC_ISP1080 0x1080 /* ISP1080 */
+#define PCI_PRODUCT_QLOGIC_ISP1240 0x1240 /* ISP1240 */
+#define PCI_PRODUCT_QLOGIC_ISP2100 0x2100 /* ISP2100 */
+
+/* Quantum Designs products */
+#define PCI_PRODUCT_QUANTUMDESIGNS_8500 0x0001 /* 8500 */
+#define PCI_PRODUCT_QUANTUMDESIGNS_8580 0x0002 /* 8580 */
+
+/* Realtek (Creative Labs?) products */
+#define PCI_PRODUCT_REALTEK_RT8029 0x8029 /* 8029 Ethernet */
+#define PCI_PRODUCT_REALTEK_RT8129 0x8129 /* 8129 10/100 Ethernet */
+#define PCI_PRODUCT_REALTEK_RT8139 0x8139 /* 8139 10/100 Ethernet */
+
+/* RICOH products */
+#define PCI_PRODUCT_RICOH_Rx5C465 0x0465 /* 5C465 PCI-CardBus bridge */
+#define PCI_PRODUCT_RICOH_Rx5C466 0x0466 /* 5C466 PCI-CardBus bridge */
+#define PCI_PRODUCT_RICOH_Rx5C475 0x0475 /* 5C475 PCI-CardBus bridge */
+#define PCI_PRODUCT_RICOH_RL5C476 0x0476 /* 5C476 PCI-CardBus bridge */
+#define PCI_PRODUCT_RICOH_Rx5C477 0x0477 /* 5C477 PCI-CardBus bridge */
+#define PCI_PRODUCT_RICOH_Rx5C478 0x0478 /* 5C478 PCI-CardBus bridge */
+
+/* RISCom (SDL Communications, Inc?) products */
+#define PCI_PRODUCT_RISCOM_N2 0x5568 /* N2 */
+
+/* RNS products */
+#define PCI_PRODUCT_RNS_FDDI 0x2200 /* 2200 FDDI */
+
+/* S3 products */
+#define PCI_PRODUCT_S3_VIRGE 0x5631 /* ViRGE */
+#define PCI_PRODUCT_S3_TRIO32 0x8810 /* Trio32 */
+#define PCI_PRODUCT_S3_TRIO64 0x8811 /* Trio32/64 */
+#define PCI_PRODUCT_S3_AURORA64P 0x8812 /* Aurora64V+ */
+#define PCI_PRODUCT_S3_TRIO64UVP 0x8814 /* Trio64UV+ */
+#define PCI_PRODUCT_S3_VIRGE_VX 0x883d /* ViRGE/VX */
+#define PCI_PRODUCT_S3_868 0x8880 /* 868 */
+#define PCI_PRODUCT_S3_928 0x88b0 /* 86C928 */
+#define PCI_PRODUCT_S3_864_0 0x88c0 /* 86C864-0 */
+#define PCI_PRODUCT_S3_864_1 0x88c1 /* 86C864-1 */
+#define PCI_PRODUCT_S3_864_2 0x88c2 /* 86C864-2 */
+#define PCI_PRODUCT_S3_864_3 0x88c3 /* 86C864-3 */
+#define PCI_PRODUCT_S3_964_0 0x88d0 /* 86C964-0 */
+#define PCI_PRODUCT_S3_964_1 0x88d1 /* 86C964-1 */
+#define PCI_PRODUCT_S3_964_2 0x88d2 /* 86C964-2 */
+#define PCI_PRODUCT_S3_964_3 0x88d3 /* 86C964-3 */
+#define PCI_PRODUCT_S3_968_0 0x88f0 /* 86C968-0 */
+#define PCI_PRODUCT_S3_968_1 0x88f1 /* 86C968-1 */
+#define PCI_PRODUCT_S3_968_2 0x88f2 /* 86C968-2 */
+#define PCI_PRODUCT_S3_968_3 0x88f3 /* 86C968-3 */
+#define PCI_PRODUCT_S3_TRIO64V2_DX 0x8901 /* Trio64V2/DX */
+#define PCI_PRODUCT_S3_PLATO_PX 0x8901 /* Plato/PX */
+#define PCI_PRODUCT_S3_TRIO3D 0x8904 /* 86C365 Trio3D */
+#define PCI_PRODUCT_S3_VIRGE_DX 0x8a01 /* ViRGE/DX */
+#define PCI_PRODUCT_S3_VIRGE_GX2 0x8a10 /* ViRGE/GX2 */
+#define PCI_PRODUCT_S3_TRIO3D2X 0x8a13 /* Trio3D/2X */
+#define PCI_PRODUCT_S3_SAVAGE3D 0x8a20 /* Savage3D */
+#define PCI_PRODUCT_S3_SAVAGE3D_MV 0x8a21 /* Savage3D+MV */
+#define PCI_PRODUCT_S3_SAVAGE4 0x8a22 /* Savage4 */
+#define PCI_PRODUCT_S3_VIRGE_MX 0x8c01 /* ViRGE/MX */
+#define PCI_PRODUCT_S3_VIRGE_MXP 0x8c03 /* ViRGE/MXP */
+#define PCI_PRODUCT_S3_SAVAGE_MX_MV 0x8c10 /* Savage/MX+MV */
+#define PCI_PRODUCT_S3_SAVAGE_MX 0x8c11 /* Savage/MX */
+#define PCI_PRODUCT_S3_SAVAGE_IX_MV 0x8c12 /* Savage/IX+MV */
+#define PCI_PRODUCT_S3_SAVAGE_IX 0x8c13 /* Savage/IX */
+#define PCI_PRODUCT_S3_SAVAGE2000 0x9102 /* Savage2000 */
+#define PCI_PRODUCT_S3_SONICVIBES 0xca00 /* SonicVibes */
+
+/* Samsung Semiconductor products */
+#define PCI_PRODUCT_SAMSUNGSEMI_KS8920 0x8920 /* KS8920 10/100 Ethernet */
+
+/* SGI products */
+#define PCI_PRODUCT_SGI_IOC3 0x0003 /* IOC3 */
+#define PCI_PRODUCT_SGI_RAD1 0x0005 /* PsiTech RAD1 */
+#define PCI_PRODUCT_SGI_TIGON 0x0009 /* Tigon Gigabit Ethernet */
+
+/* SGS Thomson products */
+#define PCI_PRODUCT_SGSTHOMSON_2000 0x0008 /* STG 2000X */
+#define PCI_PRODUCT_SGSTHOMSON_1764 0x1746 /* STG 1764X */
+
+/* SiByte, Inc. products */
+#define PCI_PRODUCT_SIBYTE_SB1250_PCI 0x0001 /* BCM1250 PCI Host Bridge */
+#define PCI_PRODUCT_SIBYTE_SB1250_LDT 0x0002 /* BCM1250 HyperTransport Host Bridge */
+
+/* Sigma Designs products */
+#define PCI_PRODUCT_SIGMA_HOLLYWOODPLUS 0x8300 /* REALmagic Hollywood-Plus MPEG-2 Decoder */
+
+/* Silicon Integrated System products */
+#define PCI_PRODUCT_SIS_86C201 0x0001 /* 86C201 */
+#define PCI_PRODUCT_SIS_86C202 0x0002 /* 86C202 */
+#define PCI_PRODUCT_SIS_86C205 0x0005 /* 86C205 */
+#define PCI_PRODUCT_SIS_85C503 0x0008 /* 85C503 or 5597/5598 ISA bridge */
+#define PCI_PRODUCT_SIS_600PMC 0x0009 /* 600 Power Mngmt Controller */
+#define PCI_PRODUCT_SIS_5597_VGA 0x0200 /* 5597/5598 integrated VGA */
+#define PCI_PRODUCT_SIS_85C501 0x0406 /* 85C501 */
+#define PCI_PRODUCT_SIS_85C496 0x0496 /* 85C496 */
+#define PCI_PRODUCT_SIS_530HB 0x0530 /* 530 Host to PCI Bridge */
+#define PCI_PRODUCT_SIS_85C601 0x0601 /* 85C601 */
+#define PCI_PRODUCT_SIS_900 0x0900 /* SiS 900 10/100 Ethernet */
+#define PCI_PRODUCT_SIS_5597_IDE 0x5513 /* 5597/5598 IDE controller */
+#define PCI_PRODUCT_SIS_5597_HB 0x5597 /* 5597/5598 host bridge */
+#define PCI_PRODUCT_SIS_530VGA 0x6306 /* 530 GUI Accelerator+3D */
+#define PCI_PRODUCT_SIS_6326 0x6326 /* 6326 AGP VGA */
+#define PCI_PRODUCT_SIS_5597_USB 0x7001 /* 5597/5598 USB host controller */
+#define PCI_PRODUCT_SIS_7016 0x7016 /* SiS 7016 10/100 Ethernet */
+
+/* Silicon Motion products */
+#define PCI_PRODUCT_SILMOTION_LYNX_E 0x0810 /* Lynx E */
+
+/* SMC products */
+#define PCI_PRODUCT_SMC_37C665 0x1000 /* FDC 37C665 */
+#define PCI_PRODUCT_SMC_37C922 0x1001 /* FDC 37C922 */
+#define PCI_PRODUCT_SMC_83C170 0x0005 /* 83C170 (\"EPIC/100\") Fast Ethernet */
+#define PCI_PRODUCT_SMC_83C175 0x0006 /* 83C175 (\"EPIC/100\") Fast Ethernet */
+
+/* Solidum Systems Corporation */
+#define PCI_PRODUCT_SOLIDUM_AMD971 0x2000 /* SNP8023: AMD 971 */
+#define PCI_PRODUCT_SOLIDUM_CLASS802 0x8023 /* SNP8023: Classifier Engine */
+
+/* Sony products */
+#define PCI_PRODUCT_SONY_CXD1947A 0x8009 /* CXD1947A IEEE 1394 Host Controller */
+#define PCI_PRODUCT_SONY_CXD32222 0x8039 /* CXD3222 OHCI IEEE 1394 Host Controller */
+#define PCI_PRODUCT_SONY_MEMSTICK 0x808a /* Memory Stick I/F Controller */
+
+/* Sun Microsystems products */
+#define PCI_PRODUCT_SUN_EBUS 0x1000 /* PCIO Ebus2 */
+#define PCI_PRODUCT_SUN_HMENETWORK 0x1001 /* PCIO Happy Meal Ethernet */
+#define PCI_PRODUCT_SUN_SIMBA 0x5000 /* Simba PCI bridge */
+#define PCI_PRODUCT_SUN_MS_IIep 0x9000 /* microSPARC IIep PCI */
+#define PCI_PRODUCT_SUN_US_IIi 0xa000 /* UltraSPARC IIi PCI */
+
+/* Sundance Technology products */
+#define PCI_PRODUCT_SUNDANCETI_ST201 0x0201 /* ST201 10/100 Ethernet */
+
+/* Surecom Technology products */
+#define PCI_PRODUCT_SURECOM_NE34 0x0e34 /* NE-34 Ethernet */
+
+/* Symphony Labs products */
+#define PCI_PRODUCT_SYMPHONY_82C101 0x0001 /* 82C101 */
+#define PCI_PRODUCT_SYMPHONY_82C103 0x0103 /* 82C103 */
+#define PCI_PRODUCT_SYMPHONY_82C105 0x0105 /* 82C105 */
+#define PCI_PRODUCT_SYMPHONY2_82C101 0x0001 /* 82C101 */
+#define PCI_PRODUCT_SYMPHONY_83C553 0x0565 /* 83C553 PCI-ISA Bridge */
+
+/* Schneider & Koch (really SysKonnect) products */
+#define PCI_PRODUCT_SCHNEIDERKOCH_SKNET_FDDI 0x4000 /* SK-NET FDDI-xP */
+
+/* Tekram Technology products (1st PCI Vendor ID)*/
+#define PCI_PRODUCT_TEKRAM_DC290 0xdc29 /* DC-290(M) */
+
+/* Tekram Technology products (2nd PCI Vendor ID) */
+#define PCI_PRODUCT_TEKRAM2_DC690C 0x690c /* DC-690C */
+
+/* Texas Instruments products */
+#define PCI_PRODUCT_TI_TLAN 0x0500 /* TLAN */
+#define PCI_PRODUCT_TI_TVP4020 0x3d07 /* TVP4020 Permedia 2 */
+#define PCI_PRODUCT_TI_TSB12LV21 0x8000 /* TSB12LV21 IEEE 1394 Host Controller */
+#define PCI_PRODUCT_TI_TSB12LV22 0x8009 /* TSB12LV22 OHCI IEEE 1394 Host Controller */
+#define PCI_PRODUCT_TI_TSB12LV23 0x8019 /* TSB12LV23 OHCI IEEE 1394 Host Controller */
+#define PCI_PRODUCT_TI_TSB12LV26 0x8020 /* TSB12LV26 OHCI IEEE 1394 Host Controller */
+#define PCI_PRODUCT_TI_PCI1130 0xac12 /* PCI1130 PCI-CardBus Bridge */
+#define PCI_PRODUCT_TI_PCI1031 0xac13 /* PCI1031 PCI-PCMCIA Bridge */
+#define PCI_PRODUCT_TI_PCI1131 0xac15 /* PCI1131 PCI-CardBus Bridge */
+#define PCI_PRODUCT_TI_PCI1250 0xac16 /* PCI1250 PCI-CardBus Bridge */
+#define PCI_PRODUCT_TI_PCI1220 0xac17 /* PCI1220 PCI-CardBus Bridge */
+#define PCI_PRODUCT_TI_PCI1221 0xac19 /* PCI1221 PCI-CardBus Bridge */
+#define PCI_PRODUCT_TI_PCI1450 0xac1b /* PCI1450 PCI-CardBus Bridge */
+#define PCI_PRODUCT_TI_PCI1225 0xac1c /* PCI1225 PCI-CardBus Bridge */
+#define PCI_PRODUCT_TI_PCI1251 0xac1d /* PCI1251 PCI-CardBus Bridge */
+#define PCI_PRODUCT_TI_PCI1211 0xac1e /* PCI1211 PCI-CardBus Bridge */
+#define PCI_PRODUCT_TI_PCI1251B 0xac1f /* PCI1251B PCI-CardBus Bridge */
+#define PCI_PRODUCT_TI_PCI2030 0xac20 /* PCI2030 PCI-PCI Bridge */
+#define PCI_PRODUCT_TI_PCI1420 0xac51 /* PCI1420 PCI-CardBus Bridge */
+#define PCI_PRODUCT_TI_PCI1451 0xac52 /* PCI1451 PCI-CardBus Bridge */
+
+/* Toshiba America products */
+#define PCI_PRODUCT_TOSHIBA_R4X00 0x0009 /* R4x00 Host-PCI Bridge */
+#define PCI_PRODUCT_TOSHIBA_TC35856F 0x0020 /* TC35856F ATM (\"Meteor\") */
+
+/* Toshiba America Info Systems products */
+#define PCI_PRODUCT_TOSHIBA2_HOST 0x0601 /* Host Bridge/Controller */
+#define PCI_PRODUCT_TOSHIBA2_ISA 0x0602 /* ISA Bridge */
+#define PCI_PRODUCT_TOSHIBA2_ToPIC95 0x0603 /* ToPIC95 CardBus-PCI Bridge */
+#define PCI_PRODUCT_TOSHIBA2_ToPIC95B 0x060a /* ToPIC95B CardBus-PCI Bridge */
+#define PCI_PRODUCT_TOSHIBA2_ToPIC97 0x060f /* ToPIC97 CardBus-PCI Bridge */
+#define PCI_PRODUCT_TOSHIBA2_ToPIC100 0x0617 /* ToPIC100 CardBus-PCI Bridge */
+#define PCI_PRODUCT_TOSHIBA2_FIRO 0x0701 /* Fast Infrared Type O */
+
+/* Trident products */
+#define PCI_PRODUCT_TRIDENT_CYBERBLADE_I7 0x8420 /* CyberBlade i7 */
+#define PCI_PRODUCT_TRIDENT_TGUI_9320 0x9320 /* TGUI 9320 */
+#define PCI_PRODUCT_TRIDENT_TGUI_9350 0x9350 /* TGUI 9350 */
+#define PCI_PRODUCT_TRIDENT_TGUI_9360 0x9360 /* TGUI 9360 */
+#define PCI_PRODUCT_TRIDENT_CYBER_9397 0x9397 /* CYBER 9397 */
+#define PCI_PRODUCT_TRIDENT_CYBER_9397DVD 0x939a /* CYBER 9397DVD */
+#define PCI_PRODUCT_TRIDENT_CYBER_9525 0x9525 /* CYBER 9525 */
+#define PCI_PRODUCT_TRIDENT_TGUI_9420 0x9420 /* TGUI 9420 */
+#define PCI_PRODUCT_TRIDENT_TGUI_9440 0x9440 /* TGUI 9440 */
+#define PCI_PRODUCT_TRIDENT_TGUI_9660 0x9660 /* TGUI 9660 */
+#define PCI_PRODUCT_TRIDENT_TGUI_9680 0x9680 /* TGUI 9680 */
+#define PCI_PRODUCT_TRIDENT_TGUI_9682 0x9682 /* TGUI 9682 */
+
+/* Triones Technologies products */
+/* The 366 and 370 controllers have the same product ID */
+#define PCI_PRODUCT_TRIONES_HPT366 0x0004 /* HPT366/370 IDE Controller */
+
+/* TriTech Microelectronics products*/
+#define PCI_PRODUCT_TRITECH_TR25202 0xfc02 /* Pyramid3D TR25202 */
+
+/* Tseng Labs products */
+#define PCI_PRODUCT_TSENG_ET4000_W32P_A 0x3202 /* ET4000w32p rev A */
+#define PCI_PRODUCT_TSENG_ET4000_W32P_B 0x3205 /* ET4000w32p rev B */
+#define PCI_PRODUCT_TSENG_ET4000_W32P_C 0x3206 /* ET4000w32p rev C */
+#define PCI_PRODUCT_TSENG_ET4000_W32P_D 0x3207 /* ET4000w32p rev D */
+#define PCI_PRODUCT_TSENG_ET6000 0x3208 /* ET6000 */
+
+/* UMC products */
+#define PCI_PRODUCT_UMC_UM82C881 0x0001 /* UM82C881 486 Chipset */
+#define PCI_PRODUCT_UMC_UM82C886 0x0002 /* UM82C886 ISA Bridge */
+#define PCI_PRODUCT_UMC_UM8673F 0x0101 /* UM8673F EIDE Controller */
+#define PCI_PRODUCT_UMC_UM8881 0x0881 /* UM8881 HB4 486 PCI Chipset */
+#define PCI_PRODUCT_UMC_UM82C891 0x0891 /* UM82C891 */
+#define PCI_PRODUCT_UMC_UM886A 0x1001 /* UM886A */
+#define PCI_PRODUCT_UMC_UM8886BF 0x673a /* UM8886BF */
+#define PCI_PRODUCT_UMC_UM8710 0x8710 /* UM8710 */
+#define PCI_PRODUCT_UMC_UM8886 0x886a /* UM8886 */
+#define PCI_PRODUCT_UMC_UM8881F 0x8881 /* UM8881F PCI-Host bridge */
+#define PCI_PRODUCT_UMC_UM8886F 0x8886 /* UM8886F PCI-ISA bridge */
+#define PCI_PRODUCT_UMC_UM8886A 0x888a /* UM8886A */
+#define PCI_PRODUCT_UMC_UM8891A 0x8891 /* UM8891A */
+#define PCI_PRODUCT_UMC_UM9017F 0x9017 /* UM9017F */
+#define PCI_PRODUCT_UMC_UM8886N 0xe88a /* UM8886N */
+#define PCI_PRODUCT_UMC_UM8891N 0xe891 /* UM8891N */
+
+/* ULSI Systems products */
+#define PCI_PRODUCT_ULSI_US201 0x0201 /* US201 */
+
+/* US Robotics products */
+#define PCI_PRODUCT_USR_3CP5609 0x1008 /* 3CP5609 PCI 16550 Modem */
+
+/* V3 Semiconductor products */
+#define PCI_PRODUCT_V3_V292PBC 0x0292 /* V292PBC AMD290x0 Host-PCI Bridge */
+#define PCI_PRODUCT_V3_V960PBC 0x0960 /* V960PBC i960 Host-PCI Bridge */
+#define PCI_PRODUCT_V3_V96DPC 0xC960 /* V96DPC i960 (Dual) Host-PCI Bridge */
+
+/* VIA Technologies products, from http://www.via.com.tw/ */
+#define PCI_PRODUCT_VIATECH_VT8371_HB 0x0391 /* VT8371 (Apollo KX133) Host Bridge */
+#define PCI_PRODUCT_VIATECH_VT8501_MVP4 0x0501 /* VT8501 MVP4 System Controller */
+#define PCI_PRODUCT_VIATECH_VT82C505 0x0505 /* VT82C505 (Pluto) */
+#define PCI_PRODUCT_VIATECH_VT82C561 0x0561 /* VT82C561 */
+#define PCI_PRODUCT_VIATECH_VT82C586A_IDE 0x0571 /* VT82C586A IDE Controller */
+#define PCI_PRODUCT_VIATECH_VT82C576 0x0576 /* VT82C576 3V */
+#define PCI_PRODUCT_VIATECH_VT82C580VP 0x0585 /* VT82C580 (Apollo VP) Host-PCI Bridge */
+#define PCI_PRODUCT_VIATECH_VT82C586_ISA 0x0586 /* VT82C586 (Apollo VP) PCI-ISA Bridge */
+#define PCI_PRODUCT_VIATECH_VT82C595 0x0595 /* VT82C595 (Apollo VP2) Host-PCI Bridge */
+#define PCI_PRODUCT_VIATECH_VT82C596A 0x0596 /* VT82C596A (Apollo Pro) PCI-ISA Bridge */
+#define PCI_PRODUCT_VIATECH_VT82C597 0x0597 /* VT82C597 (Apollo VP3) Host-PCI Bridge */
+#define PCI_PRODUCT_VIATECH_VT82C598PCI 0x0598 /* VT82C598 (Apollo MVP3) Host-PCI */
+#define PCI_PRODUCT_VIATECH_VT82C686A_ISA 0x0686 /* VT82C686A (Apollo KX133) PCI-ISA Bridge */
+#define PCI_PRODUCT_VIATECH_VT82C691 0x0691 /* VT82C691 (Apollo Pro) Host-PCI */
+#define PCI_PRODUCT_VIATECH_VT82C693 0x0693 /* VT82C693 (Apollo Pro Plus) Host-PCI */
+#define PCI_PRODUCT_VIATECH_VT86C926 0x0926 /* VT86C926 Amazon PCI-Ethernet Controller */
+#define PCI_PRODUCT_VIATECH_VT82C570M 0x1000 /* VT82C570M (Apollo) Host-PCI Bridge */
+#define PCI_PRODUCT_VIATECH_VT82C570MV 0x1006 /* VT82C570M (Apollo) PCI-ISA Bridge */
+#define PCI_PRODUCT_VIATECH_VT82C586_IDE 0x1571 /* VT82C586 (Apollo VP) IDE Controller */
+#define PCI_PRODUCT_VIATECH_VT82C595_2 0x1595 /* VT82C595 (Apollo VP2) Host-PCI Bridge */
+#define PCI_PRODUCT_VIATECH_VT83C572 0x3038 /* VT83C572 USB Controller */
+#define PCI_PRODUCT_VIATECH_VT82C586_PWR 0x3040 /* VT82C586 (Apollo VP) Power Management Controller */
+#define PCI_PRODUCT_VIATECH_VT3043 0x3043 /* VT3043 (Rhine) 10/100 Ethernet */
+#define PCI_PRODUCT_VIATECH_VT82C686A_SMB 0x3057 /* VT82C686A SMBus Controller */
+#define PCI_PRODUCT_VIATECH_VT82C686A_AC97 0x3058 /* VT82C686A AC-97 Audio Controller */
+#define PCI_PRODUCT_VIATECH_VT82C686A_MC97 0x3068 /* VT82C686A MC-97 Modem Controller */
+#define PCI_PRODUCT_VIATECH_VT86C100A 0x6100 /* VT86C100A (Rhine-II) 10/100 Ethernet */
+#define PCI_PRODUCT_VIATECH_VT8371_PPB 0x8391 /* VT8371 (Apollo KX133) PCI-PCI Bridge */
+#define PCI_PRODUCT_VIATECH_VT8501AGP 0x8501 /* VT8501 PCI-AGP */
+#define PCI_PRODUCT_VIATECH_VT82C597AGP 0x8597 /* VT82C597 (Apollo VP3) PCI-AGP */
+#define PCI_PRODUCT_VIATECH_VT82C598AGP 0x8598 /* VT82C598 (Apollo MVP3) PCI-AGP */
+
+/* Vortex Computer Systems products */
+/* GDT_PCI */
+#define PCI_PRODUCT_VORTEX_GDT_60x0 0x0000 /* GDT6000/6020/6050 */
+#define PCI_PRODUCT_VORTEX_GDT_6000B 0x0001 /* GDT6000B/6010 */
+/* GDT_PCINEW */
+#define PCI_PRODUCT_VORTEX_GDT_6x10 0x0002 /* GDT6110/6510 */
+#define PCI_PRODUCT_VORTEX_GDT_6x20 0x0003 /* GDT6120/6520 */
+#define PCI_PRODUCT_VORTEX_GDT_6530 0x0004 /* GDT6530 */
+#define PCI_PRODUCT_VORTEX_GDT_6550 0x0005 /* GDT6550 */
+/* GDT_PCINEW, wide/ultra SCSI controllers */
+#define PCI_PRODUCT_VORTEX_GDT_6x17 0x0006 /* GDT6117/6517 */
+#define PCI_PRODUCT_VORTEX_GDT_6x27 0x0007 /* GDT6127/6527 */
+#define PCI_PRODUCT_VORTEX_GDT_6537 0x0008 /* GDT6537 */
+#define PCI_PRODUCT_VORTEX_GDT_6557 0x0009 /* GDT6557/6557-ECC */
+/* GDT_PCINEW, wide SCSI controllers */
+#define PCI_PRODUCT_VORTEX_GDT_6x15 0x0010 /* GDT6115/6515 */
+#define PCI_PRODUCT_VORTEX_GDT_6x25 0x0011 /* GDT6125/6525 */
+#define PCI_PRODUCT_VORTEX_GDT_6535 0x0012 /* GDT6535 */
+#define PCI_PRODUCT_VORTEX_GDT_6555 0x0013 /* GDT6555/6555-ECC */
+/* GDT_MPR, RP series, wide/ultra SCSI */
+#define PCI_PRODUCT_VORTEX_GDT_6x17RP 0x0100 /* GDT6117RP/GDT6517RP */
+#define PCI_PRODUCT_VORTEX_GDT_6x27RP 0x0101 /* GDT6127RP/GDT6527RP */
+#define PCI_PRODUCT_VORTEX_GDT_6537RP 0x0102 /* GDT6537RP */
+#define PCI_PRODUCT_VORTEX_GDT_6557RP 0x0103 /* GDT6557RP */
+/* GDT_MPR, RP series, narrow/ultra SCSI */
+#define PCI_PRODUCT_VORTEX_GDT_6x11RP 0x0104 /* GDT6111RP/GDT6511RP */
+#define PCI_PRODUCT_VORTEX_GDT_6x21RP 0x0105 /* GDT6121RP/GDT6521RP */
+/* GDT_MPR, RD series, wide/ultra SCSI */
+#define PCI_PRODUCT_VORTEX_GDT_6x17RD 0x0110 /* GDT6117RD/GDT6517RD */
+#define PCI_PRODUCT_VORTEX_GDT_6x27RD 0x0111 /* GDT6127RD/GDT6527RD */
+#define PCI_PRODUCT_VORTEX_GDT_6537RD 0x0112 /* GDT6537RD */
+#define PCI_PRODUCT_VORTEX_GDT_6557RD 0x0113 /* GDT6557RD */
+/* GDT_MPR, RD series, narrow/ultra SCSI */
+#define PCI_PRODUCT_VORTEX_GDT_6x11RD 0x0114 /* GDT6111RD/GDT6511RD */
+#define PCI_PRODUCT_VORTEX_GDT_6x21RD 0x0115 /* GDT6121RD/GDT6521RD */
+/* GDT_MPR, RD series, wide/ultra2 SCSI */
+#define PCI_PRODUCT_VORTEX_GDT_6x18RD 0x0118 /* GDT6118RD/GDT6518RD/GDT6618RD */
+#define PCI_PRODUCT_VORTEX_GDT_6x28RD 0x0119 /* GDT6128RD/GDT6528RD/GDT6628RD */
+#define PCI_PRODUCT_VORTEX_GDT_6x38RD 0x011A /* GDT6538RD/GDT6638RD */
+#define PCI_PRODUCT_VORTEX_GDT_6x58RD 0x011B /* GDT6558RD/GDT6658RD */
+/* GDT_MPR, RN series (64-bit PCI), wide/ultra2 SCSI */
+#define PCI_PRODUCT_VORTEX_GDT_7x18RN 0x0168 /* GDT7118RN/GDT7518RN/GDT7618RN */
+#define PCI_PRODUCT_VORTEX_GDT_7x28RN 0x0169 /* GDT7128RN/GDT7528RN/GDT7628RN */
+#define PCI_PRODUCT_VORTEX_GDT_7x38RN 0x016A /* GDT7538RN/GDT7638RN */
+#define PCI_PRODUCT_VORTEX_GDT_7x58RN 0x016B /* GDT7558RN/GDT7658RN */
+/* GDT_MPR, RD series, Fibre Channel */
+#define PCI_PRODUCT_VORTEX_GDT_6x19RD 0x0210 /* GDT6519RD/GDT6619RD */
+#define PCI_PRODUCT_VORTEX_GDT_6x29RD 0x0211 /* GDT6529RD/GDT6629RD */
+/* GDT_MPR, RN series (64-bit PCI), Fibre Channel */
+#define PCI_PRODUCT_VORTEX_GDT_7x19RN 0x0260 /* GDT7519RN/GDT7619RN */
+#define PCI_PRODUCT_VORTEX_GDT_7x29RN 0x0261 /* GDT7529RN/GDT7629RN */
+
+/* VLSI products */
+#define PCI_PRODUCT_VLSI_82C592 0x0005 /* 82C592 CPU Bridge */
+#define PCI_PRODUCT_VLSI_82C593 0x0006 /* 82C593 ISA Bridge */
+#define PCI_PRODUCT_VLSI_82C594 0x0007 /* 82C594 Wildcat System Controller */
+#define PCI_PRODUCT_VLSI_82C596597 0x0008 /* 82C596/597 Wildcat ISA Bridge */
+#define PCI_PRODUCT_VLSI_82C541 0x000c /* 82C541 */
+#define PCI_PRODUCT_VLSI_82C543 0x000d /* 82C543 */
+#define PCI_PRODUCT_VLSI_82C532 0x0101 /* 82C532 */
+#define PCI_PRODUCT_VLSI_82C534 0x0102 /* 82C534 */
+#define PCI_PRODUCT_VLSI_82C535 0x0104 /* 82C535 */
+#define PCI_PRODUCT_VLSI_82C147 0x0105 /* 82C147 */
+#define PCI_PRODUCT_VLSI_82C975 0x0200 /* 82C975 */
+#define PCI_PRODUCT_VLSI_82C925 0x0280 /* 82C925 */
+
+/* Weitek products */
+#define PCI_PRODUCT_WEITEK_P9000 0x9001 /* P9000 */
+#define PCI_PRODUCT_WEITEK_P9100 0x9100 /* P9100 */
+
+/* Western Digital products */
+#define PCI_PRODUCT_WD_WD33C193A 0x0193 /* WD33C193A */
+#define PCI_PRODUCT_WD_WD33C196A 0x0196 /* WD33C196A */
+#define PCI_PRODUCT_WD_WD33C197A 0x0197 /* WD33C197A */
+#define PCI_PRODUCT_WD_WD7193 0x3193 /* WD7193 */
+#define PCI_PRODUCT_WD_WD7197 0x3197 /* WD7197 */
+#define PCI_PRODUCT_WD_WD33C296A 0x3296 /* WD33C296A */
+#define PCI_PRODUCT_WD_WD34C296 0x4296 /* WD34C296 */
+#define PCI_PRODUCT_WD_90C 0xC24A /* 90C */
+
+/* Winbond Electronics products */
+#define PCI_PRODUCT_WINBOND_W83769F 0x0001 /* W83769F */
+#define PCI_PRODUCT_WINBOND_W89C840F 0x0840 /* W89C840F 10/100 Ethernet */
+#define PCI_PRODUCT_WINBOND_W89C940F 0x0940 /* W89C940F Ethernet */
+#define PCI_PRODUCT_WINBOND_W89C940F_1 0x5a5a /* W89C940F Ethernet */
+
+/* Xircom products */
+/* is the `-3' here just indicating revision 3, or is it really part
+ of the device name? */
+#define PCI_PRODUCT_XIRCOM_X3201_3 0x0002 /* X3201-3 Fast Ethernet Controller */
+/* this is the device id `indicating 21143 driver compatibility' */
+#define PCI_PRODUCT_XIRCOM_X3201_3_21143 0x0003 /* X3201-3 Fast Ethernet Controller (21143) */
+
+/* Yamaha products */
+#define PCI_PRODUCT_YAMAHA_YMF724 0x0004 /* 724 Audio */
+#define PCI_PRODUCT_YAMAHA_YMF740 0x000A /* 740 Audio */
+#define PCI_PRODUCT_YAMAHA_YMF740C 0x000C /* 740C (DS-1) Audio */
+#define PCI_PRODUCT_YAMAHA_YMF724F 0x000D /* 724F (DS-1) Audio */
+#define PCI_PRODUCT_YAMAHA_YMF744B 0x0010 /* 744 (DS-1S) Audio */
+#define PCI_PRODUCT_YAMAHA_YMF754 0x0012 /* 754 (DS-1E) Audio */
+
+/* Zeinet products */
+#define PCI_PRODUCT_ZEINET_1221 0x0001 /* 1221 */
+
+/* Ziatech products */
+#define PCI_PRODUCT_ZIATECH_ZT8905 0x8905 /* PCI-ST32 Bridge */
+
+/* Zoran products */
+#define PCI_PRODUCT_ZORAN_ZR36120 0x6120 /* Video Controller */
diff --git a/cfe/cfe/pci/pcidevs_data.h b/cfe/cfe/pci/pcidevs_data.h
new file mode 100644
index 0000000..1bdc7f4
--- /dev/null
+++ b/cfe/cfe/pci/pcidevs_data.h
@@ -0,0 +1,5873 @@
+/*
+ * THIS FILE AUTOMATICALLY GENERATED. DO NOT EDIT.
+ *
+ * generated from:
+ * pcidevs 2002/09/03 broadcom
+ */
+
+/*
+ * Copyright (c) 1995, 1996 Christopher G. Demetriou
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Christopher G. Demetriou
+ * for the NetBSD Project.
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+static const struct pci_knowndev pci_knowndevs[] = {
+ {
+ PCI_VENDOR_3COM, PCI_PRODUCT_3COM_3C985,
+ 0,
+ "3Com",
+ "3c985 Gigabit Ethernet",
+ },
+ {
+ PCI_VENDOR_3COM, PCI_PRODUCT_3COM_3C590,
+ 0,
+ "3Com",
+ "3c590 Ethernet",
+ },
+ {
+ PCI_VENDOR_3COM, PCI_PRODUCT_3COM_3C595TX,
+ 0,
+ "3Com",
+ "3c595-TX 10/100 Ethernet",
+ },
+ {
+ PCI_VENDOR_3COM, PCI_PRODUCT_3COM_3C595T4,
+ 0,
+ "3Com",
+ "3c595-T4 10/100 Ethernet",
+ },
+ {
+ PCI_VENDOR_3COM, PCI_PRODUCT_3COM_3C595MII,
+ 0,
+ "3Com",
+ "3c595-MII 10/100 Ethernet",
+ },
+ {
+ PCI_VENDOR_3COM, PCI_PRODUCT_3COM_3C900TPO,
+ 0,
+ "3Com",
+ "3c900-TPO Ethernet",
+ },
+ {
+ PCI_VENDOR_3COM, PCI_PRODUCT_3COM_3C900COMBO,
+ 0,
+ "3Com",
+ "3c900-COMBO Ethernet",
+ },
+ {
+ PCI_VENDOR_3COM, PCI_PRODUCT_3COM_3C905TX,
+ 0,
+ "3Com",
+ "3c905-TX 10/100 Ethernet",
+ },
+ {
+ PCI_VENDOR_3COM, PCI_PRODUCT_3COM_3C905T4,
+ 0,
+ "3Com",
+ "3c905-T4 10/100 Ethernet",
+ },
+ {
+ PCI_VENDOR_3COM, PCI_PRODUCT_3COM_3C900BTPO,
+ 0,
+ "3Com",
+ "3c900B-TPO Ethernet",
+ },
+ {
+ PCI_VENDOR_3COM, PCI_PRODUCT_3COM_3C900BCOMBO,
+ 0,
+ "3Com",
+ "3c900B-COMBO Ethernet",
+ },
+ {
+ PCI_VENDOR_3COM, PCI_PRODUCT_3COM_3C900BTPC,
+ 0,
+ "3Com",
+ "3c900B-TPC Ethernet",
+ },
+ {
+ PCI_VENDOR_3COM, PCI_PRODUCT_3COM_3C905BTX,
+ 0,
+ "3Com",
+ "3c905B-TX 10/100 Ethernet",
+ },
+ {
+ PCI_VENDOR_3COM, PCI_PRODUCT_3COM_3C905BT4,
+ 0,
+ "3Com",
+ "3c905B-T4 10/100 Ethernet",
+ },
+ {
+ PCI_VENDOR_3COM, PCI_PRODUCT_3COM_3C905BCOMBO,
+ 0,
+ "3Com",
+ "3c905B-COMBO 10/100 Ethernet",
+ },
+ {
+ PCI_VENDOR_3COM, PCI_PRODUCT_3COM_3C905BFX,
+ 0,
+ "3Com",
+ "3c905B-FX 100 Ethernet",
+ },
+ {
+ PCI_VENDOR_3COM, PCI_PRODUCT_3COM_3C905CTX,
+ 0,
+ "3Com",
+ "3c905C-TX 10/100 Ethernet with mngmt",
+ },
+ {
+ PCI_VENDOR_3COM, PCI_PRODUCT_3COM_3C980SRV,
+ 0,
+ "3Com",
+ "3c980 Server Adapter 10/100 Ethernet",
+ },
+ {
+ PCI_VENDOR_3COM, PCI_PRODUCT_3COM_3C980CTXM,
+ 0,
+ "3Com",
+ "3c980C-TXM 10/100 Ethernet",
+ },
+ {
+ PCI_VENDOR_3COM, PCI_PRODUCT_3COM_3CR990TX97,
+ 0,
+ "3Com",
+ "3CR990-TX-97 10/100 Ethernet",
+ },
+ {
+ PCI_VENDOR_3DFX, PCI_PRODUCT_3DFX_VOODOO,
+ 0,
+ "3Dfx Interactive",
+ "Voodoo",
+ },
+ {
+ PCI_VENDOR_3DFX, PCI_PRODUCT_3DFX_VOODOO2,
+ 0,
+ "3Dfx Interactive",
+ "Voodoo2",
+ },
+ {
+ PCI_VENDOR_3DFX, PCI_PRODUCT_3DFX_BANSHEE,
+ 0,
+ "3Dfx Interactive",
+ "Banshee",
+ },
+ {
+ PCI_VENDOR_3DFX, PCI_PRODUCT_3DFX_VOODOO3,
+ 0,
+ "3Dfx Interactive",
+ "Voodoo3",
+ },
+ {
+ PCI_VENDOR_3DLABS, PCI_PRODUCT_3DLABS_300SX,
+ 0,
+ "3D Labs",
+ "GLINT 300SX",
+ },
+ {
+ PCI_VENDOR_3DLABS, PCI_PRODUCT_3DLABS_500TX,
+ 0,
+ "3D Labs",
+ "GLINT 500TX",
+ },
+ {
+ PCI_VENDOR_3DLABS, PCI_PRODUCT_3DLABS_DELTA,
+ 0,
+ "3D Labs",
+ "GLINT DELTA",
+ },
+ {
+ PCI_VENDOR_3DLABS, PCI_PRODUCT_3DLABS_PERMEDIA,
+ 0,
+ "3D Labs",
+ "GLINT Permedia",
+ },
+ {
+ PCI_VENDOR_3DLABS, PCI_PRODUCT_3DLABS_500MX,
+ 0,
+ "3D Labs",
+ "GLINT 500MX",
+ },
+ {
+ PCI_VENDOR_3DLABS, PCI_PRODUCT_3DLABS_PERMEDI2,
+ 0,
+ "3D Labs",
+ "GLINT Permedia 2",
+ },
+ {
+ PCI_VENDOR_3WARE, PCI_PRODUCT_3WARE_ESCALADE,
+ 0,
+ "3ware",
+ "Escalade IDE RAID",
+ },
+ {
+ PCI_VENDOR_ACC, PCI_PRODUCT_ACC_2188,
+ 0,
+ "ACC Microelectronics",
+ "ACCM 2188 VL-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_ACC, PCI_PRODUCT_ACC_2051_HB,
+ 0,
+ "ACC Microelectronics",
+ "2051 PCI Single Chip Solution (host bridge)",
+ },
+ {
+ PCI_VENDOR_ACC, PCI_PRODUCT_ACC_2051_ISA,
+ 0,
+ "ACC Microelectronics",
+ "2051 PCI Single Chip Solution (ISA bridge)",
+ },
+ {
+ PCI_VENDOR_ACARD, PCI_PRODUCT_ACARD_AEC6710,
+ 0,
+ "Acard",
+ "AEC6710 SCSI",
+ },
+ {
+ PCI_VENDOR_ACARD, PCI_PRODUCT_ACARD_AEC6712UW,
+ 0,
+ "Acard",
+ "AEC6712UW SCSI",
+ },
+ {
+ PCI_VENDOR_ACARD, PCI_PRODUCT_ACARD_AEC6712U,
+ 0,
+ "Acard",
+ "AEC6712U SCSI",
+ },
+ {
+ PCI_VENDOR_ACARD, PCI_PRODUCT_ACARD_AEC6712S,
+ 0,
+ "Acard",
+ "AEC6712S SCSI",
+ },
+ {
+ PCI_VENDOR_ACARD, PCI_PRODUCT_ACARD_AEC6710D,
+ 0,
+ "Acard",
+ "AEC6710D SCSI",
+ },
+ {
+ PCI_VENDOR_ACARD, PCI_PRODUCT_ACARD_AEC6715UW,
+ 0,
+ "Acard",
+ "AEC6715UW SCSI",
+ },
+ {
+ PCI_VENDOR_ACCTON, PCI_PRODUCT_ACCTON_MPX5030,
+ 0,
+ "Accton Technology",
+ "MPX 5030/5038 Ethernet",
+ },
+ {
+ PCI_VENDOR_ACER, PCI_PRODUCT_ACER_M1435,
+ 0,
+ "Acer",
+ "M1435 VL-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_ALI, PCI_PRODUCT_ALI_M1445,
+ 0,
+ "Acer Labs",
+ "M1445 VL-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_ALI, PCI_PRODUCT_ALI_M1449,
+ 0,
+ "Acer Labs",
+ "M1449 PCI-ISA Bridge",
+ },
+ {
+ PCI_VENDOR_ALI, PCI_PRODUCT_ALI_M1451,
+ 0,
+ "Acer Labs",
+ "M1451 Host-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_ALI, PCI_PRODUCT_ALI_M1461,
+ 0,
+ "Acer Labs",
+ "M1461 Host-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_ALI, PCI_PRODUCT_ALI_M1531,
+ 0,
+ "Acer Labs",
+ "M1531 Host-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_ALI, PCI_PRODUCT_ALI_M1541,
+ 0,
+ "Acer Labs",
+ "M1541 Host-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_ALI, PCI_PRODUCT_ALI_M1543,
+ 0,
+ "Acer Labs",
+ "M1543 PCI-ISA Bridge",
+ },
+ {
+ PCI_VENDOR_ALI, PCI_PRODUCT_ALI_M3309,
+ 0,
+ "Acer Labs",
+ "M3309 MPEG Decoder",
+ },
+ {
+ PCI_VENDOR_ALI, PCI_PRODUCT_ALI_M4803,
+ 0,
+ "Acer Labs",
+ "M4803",
+ },
+ {
+ PCI_VENDOR_ALI, PCI_PRODUCT_ALI_M5229,
+ 0,
+ "Acer Labs",
+ "M5229 UDMA IDE Controller",
+ },
+ {
+ PCI_VENDOR_ALI, PCI_PRODUCT_ALI_M5237,
+ 0,
+ "Acer Labs",
+ "M5237 USB Host Controller",
+ },
+ {
+ PCI_VENDOR_ALI, PCI_PRODUCT_ALI_M7101,
+ 0,
+ "Acer Labs",
+ "M7101 Power Management Controller",
+ },
+ {
+ PCI_VENDOR_ADP, PCI_PRODUCT_ADP_AIC7850,
+ 0,
+ "Adaptec",
+ "AIC-7850",
+ },
+ {
+ PCI_VENDOR_ADP, PCI_PRODUCT_ADP_AIC7855,
+ 0,
+ "Adaptec",
+ "AIC-7855",
+ },
+ {
+ PCI_VENDOR_ADP, PCI_PRODUCT_ADP_AIC5900,
+ 0,
+ "Adaptec",
+ "AIC-5900 ATM",
+ },
+ {
+ PCI_VENDOR_ADP, PCI_PRODUCT_ADP_AIC5905,
+ 0,
+ "Adaptec",
+ "AIC-5905 ATM",
+ },
+ {
+ PCI_VENDOR_ADP, PCI_PRODUCT_ADP_AIC6915,
+ 0,
+ "Adaptec",
+ "AIC-6915 10/100 Ethernet",
+ },
+ {
+ PCI_VENDOR_ADP, PCI_PRODUCT_ADP_AIC7860,
+ 0,
+ "Adaptec",
+ "AIC-7860",
+ },
+ {
+ PCI_VENDOR_ADP, PCI_PRODUCT_ADP_APA1480,
+ 0,
+ "Adaptec",
+ "APA-1480 Ultra",
+ },
+ {
+ PCI_VENDOR_ADP, PCI_PRODUCT_ADP_2940AU,
+ 0,
+ "Adaptec",
+ "AHA-2940A Ultra",
+ },
+ {
+ PCI_VENDOR_ADP, PCI_PRODUCT_ADP_AIC7870,
+ 0,
+ "Adaptec",
+ "AIC-7870",
+ },
+ {
+ PCI_VENDOR_ADP, PCI_PRODUCT_ADP_2940,
+ 0,
+ "Adaptec",
+ "AHA-2940",
+ },
+ {
+ PCI_VENDOR_ADP, PCI_PRODUCT_ADP_3940,
+ 0,
+ "Adaptec",
+ "AHA-3940",
+ },
+ {
+ PCI_VENDOR_ADP, PCI_PRODUCT_ADP_3985,
+ 0,
+ "Adaptec",
+ "AHA-3985",
+ },
+ {
+ PCI_VENDOR_ADP, PCI_PRODUCT_ADP_2944,
+ 0,
+ "Adaptec",
+ "AHA-2944",
+ },
+ {
+ PCI_VENDOR_ADP, PCI_PRODUCT_ADP_AIC7895,
+ 0,
+ "Adaptec",
+ "AIC-7895 Ultra",
+ },
+ {
+ PCI_VENDOR_ADP, PCI_PRODUCT_ADP_AIC7880,
+ 0,
+ "Adaptec",
+ "AIC-7880 Ultra",
+ },
+ {
+ PCI_VENDOR_ADP, PCI_PRODUCT_ADP_2940U,
+ 0,
+ "Adaptec",
+ "AHA-2940 Ultra",
+ },
+ {
+ PCI_VENDOR_ADP, PCI_PRODUCT_ADP_3940U,
+ 0,
+ "Adaptec",
+ "AHA-3940 Ultra",
+ },
+ {
+ PCI_VENDOR_ADP, PCI_PRODUCT_ADP_389XU,
+ 0,
+ "Adaptec",
+ "AHA-389X Ultra",
+ },
+ {
+ PCI_VENDOR_ADP, PCI_PRODUCT_ADP_2944U,
+ 0,
+ "Adaptec",
+ "AHA-2944 Ultra",
+ },
+ {
+ PCI_VENDOR_ADP, PCI_PRODUCT_ADP_2940UP,
+ 0,
+ "Adaptec",
+ "AHA-2940 Ultra Pro",
+ },
+ {
+ PCI_VENDOR_ADP2, PCI_PRODUCT_ADP2_2940U2,
+ 0,
+ "Adaptec (2nd PCI Vendor ID)",
+ "AHA-2940 Ultra2",
+ },
+ {
+ PCI_VENDOR_ADP2, PCI_PRODUCT_ADP2_2930U2,
+ 0,
+ "Adaptec (2nd PCI Vendor ID)",
+ "AHA-2930 Ultra2",
+ },
+ {
+ PCI_VENDOR_ADP2, PCI_PRODUCT_ADP2_AIC7890,
+ 0,
+ "Adaptec (2nd PCI Vendor ID)",
+ "AIC-7890/1",
+ },
+ {
+ PCI_VENDOR_ADP2, PCI_PRODUCT_ADP2_3950U2B,
+ 0,
+ "Adaptec (2nd PCI Vendor ID)",
+ "AHA-3950 Ultra2",
+ },
+ {
+ PCI_VENDOR_ADP2, PCI_PRODUCT_ADP2_3950U2D,
+ 0,
+ "Adaptec (2nd PCI Vendor ID)",
+ "AHA-3950 Ultra2",
+ },
+ {
+ PCI_VENDOR_ADP2, PCI_PRODUCT_ADP2_AIC7896,
+ 0,
+ "Adaptec (2nd PCI Vendor ID)",
+ "AIC-7896/7",
+ },
+ {
+ PCI_VENDOR_ADDTRON, PCI_PRODUCT_ADDTRON_8139,
+ 0,
+ "Addtron Technology",
+ "8139 Ethernet",
+ },
+ {
+ PCI_VENDOR_ADMTEK, PCI_PRODUCT_ADMTEK_AL981,
+ 0,
+ "ADMtek",
+ "ADMtek AL981 10/100 Ethernet",
+ },
+ {
+ PCI_VENDOR_ADVSYS, PCI_PRODUCT_ADVSYS_1200A,
+ 0,
+ "Advanced System Products",
+ "",
+ },
+ {
+ PCI_VENDOR_ADVSYS, PCI_PRODUCT_ADVSYS_1200B,
+ 0,
+ "Advanced System Products",
+ "",
+ },
+ {
+ PCI_VENDOR_ADVSYS, PCI_PRODUCT_ADVSYS_ULTRA,
+ 0,
+ "Advanced System Products",
+ "ABP-930/40UA",
+ },
+ {
+ PCI_VENDOR_ADVSYS, PCI_PRODUCT_ADVSYS_WIDE,
+ 0,
+ "Advanced System Products",
+ "ABP-940UW",
+ },
+ {
+ PCI_VENDOR_ADVSYS, PCI_PRODUCT_ADVSYS_U2W,
+ 0,
+ "Advanced System Products",
+ "ASB-3940U2W",
+ },
+ {
+ PCI_VENDOR_ADVSYS, PCI_PRODUCT_ADVSYS_U3W,
+ 0,
+ "Advanced System Products",
+ "ASB-3940U3W",
+ },
+ {
+ PCI_VENDOR_ALLIANCE, PCI_PRODUCT_ALLIANCE_AT24,
+ 0,
+ "Alliance Semiconductor",
+ "AT24",
+ },
+ {
+ PCI_VENDOR_ALLIANCE, PCI_PRODUCT_ALLIANCE_AT25,
+ 0,
+ "Alliance Semiconductor",
+ "AT25",
+ },
+ {
+ PCI_VENDOR_ALTEON, PCI_PRODUCT_ALTEON_ACENIC,
+ 0,
+ "Alteon",
+ "ACEnic Gigabit Ethernet",
+ },
+ {
+ PCI_VENDOR_AMD, PCI_PRODUCT_AMD_PCNET_PCI,
+ 0,
+ "Advanced Micro Devices",
+ "79c970 PCnet-PCI LANCE Ethernet",
+ },
+ {
+ PCI_VENDOR_AMD, PCI_PRODUCT_AMD_PCNET_HOME,
+ 0,
+ "Advanced Micro Devices",
+ "79c978 PCnet-PCI Home",
+ },
+ {
+ PCI_VENDOR_AMD, PCI_PRODUCT_AMD_PCSCSI_PCI,
+ 0,
+ "Advanced Micro Devices",
+ "53c974 PCscsi-PCI SCSI",
+ },
+ {
+ PCI_VENDOR_AMD, PCI_PRODUCT_AMD_PCNETS_PCI,
+ 0,
+ "Advanced Micro Devices",
+ "79C974 PCnet-PCI Ethernet & SCSI",
+ },
+ {
+ PCI_VENDOR_AMD, PCI_PRODUCT_AMD_SC751_SC,
+ 0,
+ "Advanced Micro Devices",
+ "AMD751 System Controller",
+ },
+ {
+ PCI_VENDOR_AMD, PCI_PRODUCT_AMD_SC751_PPB,
+ 0,
+ "Advanced Micro Devices",
+ "AMD751 PCI-to-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_AMD, PCI_PRODUCT_AMD_PBC756_ISA,
+ 0,
+ "Advanced Micro Devices",
+ "AMD756 PCI-to-ISA Bridge",
+ },
+ {
+ PCI_VENDOR_AMD, PCI_PRODUCT_AMD_PBC756_IDE,
+ 0,
+ "Advanced Micro Devices",
+ "AMD756 IDE controller",
+ },
+ {
+ PCI_VENDOR_AMD, PCI_PRODUCT_AMD_PBC756_PMC,
+ 0,
+ "Advanced Micro Devices",
+ "AMD756 Power Management Controller",
+ },
+ {
+ PCI_VENDOR_AMD, PCI_PRODUCT_AMD_PBC756_USB,
+ 0,
+ "Advanced Micro Devices",
+ "AMD756 USB Host Controller",
+ },
+ {
+ PCI_VENDOR_AMD, PCI_PRODUCT_AMD_HT7520,
+ 0,
+ "Advanced Micro Devices",
+ "(PLX) HT7520 PCIX Tunnel",
+ },
+ {
+ PCI_VENDOR_AMD, PCI_PRODUCT_AMD_HT7520_PIC,
+ 0,
+ "Advanced Micro Devices",
+ "(PLX) HT7520 PCIX IOAPIC",
+ },
+ {
+ PCI_VENDOR_AMD, PCI_PRODUCT_AMD_AMD8151_AGP,
+ 0,
+ "Advanced Micro Devices",
+ "AMD8151 AGP Device",
+ },
+ {
+ PCI_VENDOR_AMD, PCI_PRODUCT_AMD_AMD8151,
+ 0,
+ "Advanced Micro Devices",
+ "AMD8151 HyperTransport-AGP Bridge",
+ },
+ {
+ PCI_VENDOR_API, PCI_PRODUCT_API_STURGEON,
+ 0,
+ "API Networks",
+ "AP1011 HyperTransport-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_APPLE, PCI_PRODUCT_APPLE_BANDIT,
+ 0,
+ "Apple Computer",
+ "Bandit Host-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_APPLE, PCI_PRODUCT_APPLE_GC,
+ 0,
+ "Apple Computer",
+ "Grand Central I/O Controller",
+ },
+ {
+ PCI_VENDOR_APPLE, PCI_PRODUCT_APPLE_CONTROL,
+ 0,
+ "Apple Computer",
+ "Control",
+ },
+ {
+ PCI_VENDOR_APPLE, PCI_PRODUCT_APPLE_PLANB,
+ 0,
+ "Apple Computer",
+ "PlanB",
+ },
+ {
+ PCI_VENDOR_APPLE, PCI_PRODUCT_APPLE_OHARE,
+ 0,
+ "Apple Computer",
+ "OHare I/O Controller",
+ },
+ {
+ PCI_VENDOR_APPLE, PCI_PRODUCT_APPLE_BANDIT2,
+ 0,
+ "Apple Computer",
+ "Bandit Host-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_APPLE, PCI_PRODUCT_APPLE_HEATHROW,
+ 0,
+ "Apple Computer",
+ "MAC-IO I/O Controller (Heathrow)",
+ },
+ {
+ PCI_VENDOR_APPLE, PCI_PRODUCT_APPLE_PADDINGTON,
+ 0,
+ "Apple Computer",
+ "MAC-IO I/O Controller (Paddington)",
+ },
+ {
+ PCI_VENDOR_APPLE, PCI_PRODUCT_APPLE_KEYLARGO_USB,
+ 0,
+ "Apple Computer",
+ "KeyLargo USB Controller",
+ },
+ {
+ PCI_VENDOR_APPLE, PCI_PRODUCT_APPLE_UNINORTH1,
+ 0,
+ "Apple Computer",
+ "UniNorth Host-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_APPLE, PCI_PRODUCT_APPLE_UNINORTH2,
+ 0,
+ "Apple Computer",
+ "UniNorth Host-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_APPLE, PCI_PRODUCT_APPLE_UNINORTH_AGP,
+ 0,
+ "Apple Computer",
+ "UniNorth AGP Interface",
+ },
+ {
+ PCI_VENDOR_APPLE, PCI_PRODUCT_APPLE_GMAC,
+ 0,
+ "Apple Computer",
+ "GMAC Ethernet",
+ },
+ {
+ PCI_VENDOR_APPLE, PCI_PRODUCT_APPLE_KEYLARGO,
+ 0,
+ "Apple Computer",
+ "MAC-IO I/O Controller (KeyLargo)",
+ },
+ {
+ PCI_VENDOR_ARC, PCI_PRODUCT_ARC_1000PV,
+ 0,
+ "ARC Logic",
+ "1000PV",
+ },
+ {
+ PCI_VENDOR_ARC, PCI_PRODUCT_ARC_2000PV,
+ 0,
+ "ARC Logic",
+ "2000PV",
+ },
+ {
+ PCI_VENDOR_ARC, PCI_PRODUCT_ARC_2000MT,
+ 0,
+ "ARC Logic",
+ "2000MT",
+ },
+ {
+ PCI_VENDOR_ASIX, PCI_PRODUCT_ASIX_AX88140A,
+ 0,
+ "ASIX Electronics",
+ "AX88140A 10/100 Ethernet",
+ },
+ {
+ PCI_VENDOR_ATI, PCI_PRODUCT_ATI_MACH32,
+ 0,
+ "ATI Technologies",
+ "Mach32",
+ },
+ {
+ PCI_VENDOR_ATI, PCI_PRODUCT_ATI_MACH64_CT,
+ 0,
+ "ATI Technologies",
+ "Mach64 CT",
+ },
+ {
+ PCI_VENDOR_ATI, PCI_PRODUCT_ATI_MACH64_CX,
+ 0,
+ "ATI Technologies",
+ "Mach64 CX",
+ },
+ {
+ PCI_VENDOR_ATI, PCI_PRODUCT_ATI_MACH64_ET,
+ 0,
+ "ATI Technologies",
+ "Mach64 ET",
+ },
+ {
+ PCI_VENDOR_ATI, PCI_PRODUCT_ATI_MACH64_VT,
+ 0,
+ "ATI Technologies",
+ "Mach64 VT",
+ },
+ {
+ PCI_VENDOR_ATI, PCI_PRODUCT_ATI_MACH64_B,
+ 0,
+ "ATI Technologies",
+ "Mach64 B",
+ },
+ {
+ PCI_VENDOR_ATI, PCI_PRODUCT_ATI_MACH64_GB,
+ 0,
+ "ATI Technologies",
+ "Mach64 GB",
+ },
+ {
+ PCI_VENDOR_ATI, PCI_PRODUCT_ATI_MACH64_GD,
+ 0,
+ "ATI Technologies",
+ "Mach64 GD",
+ },
+ {
+ PCI_VENDOR_ATI, PCI_PRODUCT_ATI_MACH64_GI,
+ 0,
+ "ATI Technologies",
+ "Mach64 GI",
+ },
+ {
+ PCI_VENDOR_ATI, PCI_PRODUCT_ATI_MACH64_GP,
+ 0,
+ "ATI Technologies",
+ "Mach64 GP",
+ },
+ {
+ PCI_VENDOR_ATI, PCI_PRODUCT_ATI_MACH64_GQ,
+ 0,
+ "ATI Technologies",
+ "Mach64 GQ",
+ },
+ {
+ PCI_VENDOR_ATI, PCI_PRODUCT_ATI_MACH64_GT,
+ 0,
+ "ATI Technologies",
+ "Mach64 GT",
+ },
+ {
+ PCI_VENDOR_ATI, PCI_PRODUCT_ATI_MACH64_GU,
+ 0,
+ "ATI Technologies",
+ "Mach64 GU",
+ },
+ {
+ PCI_VENDOR_ATI, PCI_PRODUCT_ATI_MACH64_GV,
+ 0,
+ "ATI Technologies",
+ "Mach64 GV",
+ },
+ {
+ PCI_VENDOR_ATI, PCI_PRODUCT_ATI_MACH64_GW,
+ 0,
+ "ATI Technologies",
+ "Mach64 GW",
+ },
+ {
+ PCI_VENDOR_ATI, PCI_PRODUCT_ATI_MACH64_GX,
+ 0,
+ "ATI Technologies",
+ "Mach64 GX",
+ },
+ {
+ PCI_VENDOR_ATI, PCI_PRODUCT_ATI_MACH64_GZ,
+ 0,
+ "ATI Technologies",
+ "Mach64 GZ",
+ },
+ {
+ PCI_VENDOR_ATI, PCI_PRODUCT_ATI_MACH64_LB,
+ 0,
+ "ATI Technologies",
+ "Mach64 LB",
+ },
+ {
+ PCI_VENDOR_ATI, PCI_PRODUCT_ATI_MACH64_LD,
+ 0,
+ "ATI Technologies",
+ "Mach64 LD",
+ },
+ {
+ PCI_VENDOR_ATI, PCI_PRODUCT_ATI_MACH64_LG,
+ 0,
+ "ATI Technologies",
+ "Mach64 LG",
+ },
+ {
+ PCI_VENDOR_ATI, PCI_PRODUCT_ATI_MACH64_LI,
+ 0,
+ "ATI Technologies",
+ "Mach64 LI",
+ },
+ {
+ PCI_VENDOR_ATI, PCI_PRODUCT_ATI_MACH64_LM,
+ 0,
+ "ATI Technologies",
+ "Mach64 LM",
+ },
+ {
+ PCI_VENDOR_ATI, PCI_PRODUCT_ATI_MACH64_LP,
+ 0,
+ "ATI Technologies",
+ "Mach64 LP",
+ },
+ {
+ PCI_VENDOR_ATI, PCI_PRODUCT_ATI_MACH64_LR,
+ 0,
+ "ATI Technologies",
+ "Mach64 LR",
+ },
+ {
+ PCI_VENDOR_AURAVISION, PCI_PRODUCT_AURAVISION_VXP524,
+ 0,
+ "Auravision",
+ "VxP524 PCI Video Processor",
+ },
+ {
+ PCI_VENDOR_AUREAL, PCI_PRODUCT_AUREAL_AU8820,
+ 0,
+ "Aureal Semiconductor",
+ "AU8820 Vortex Digital Audio Processor",
+ },
+ {
+ PCI_VENDOR_AMCIRCUITS, PCI_PRODUCT_AMCIRCUITS_S5933,
+ 0,
+ "Applied Micro Circuits",
+ "S5933 PCI Matchmaker",
+ },
+ {
+ PCI_VENDOR_AMCIRCUITS, PCI_PRODUCT_AMCIRCUITS_LANAI,
+ 0,
+ "Applied Micro Circuits",
+ "Myrinet LANai Interface",
+ },
+ {
+ PCI_VENDOR_AMCIRCUITS, PCI_PRODUCT_AMCIRCUITS_S5920,
+ 0,
+ "Applied Micro Circuits",
+ "S5920 PCI Target",
+ },
+ {
+ PCI_VENDOR_ATRONICS, PCI_PRODUCT_ATRONICS_IDE_2015PL,
+ 0,
+ "Atronics",
+ "IDE-2015PL",
+ },
+ {
+ PCI_VENDOR_AVANCE, PCI_PRODUCT_AVANCE_AVL2301,
+ 0,
+ "Avance Logic",
+ "AVL2301",
+ },
+ {
+ PCI_VENDOR_AVANCE, PCI_PRODUCT_AVANCE_AVG2302,
+ 0,
+ "Avance Logic",
+ "AVG2302",
+ },
+ {
+ PCI_VENDOR_AVANCE2, PCI_PRODUCT_AVANCE2_ALG2301,
+ 0,
+ "Avance Logic (2nd PCI Vendor ID)",
+ "ALG2301",
+ },
+ {
+ PCI_VENDOR_AVANCE2, PCI_PRODUCT_AVANCE2_ALG2302,
+ 0,
+ "Avance Logic (2nd PCI Vendor ID)",
+ "ALG2302",
+ },
+ {
+ PCI_VENDOR_CCUBE, PCI_PRODUCT_CCUBE_CINEMASTER,
+ 0,
+ "C-Cube Microsystems",
+ "Cinemaster C 3.0 DVD Decoder",
+ },
+ {
+ PCI_VENDOR_AVM, PCI_PRODUCT_AVM_FRITZ_CARD,
+ 0,
+ "AVM",
+ "Fritz! Card ISDN Interface",
+ },
+ {
+ PCI_VENDOR_BIT3, PCI_PRODUCT_BIT3_PCIVME617,
+ 0,
+ "Bit3 Computer Corp.",
+ "PCI-VME Interface Mod. 617",
+ },
+ {
+ PCI_VENDOR_BIT3, PCI_PRODUCT_BIT3_PCIVME618,
+ 0,
+ "Bit3 Computer Corp.",
+ "PCI-VME Interface Mod. 618",
+ },
+ {
+ PCI_VENDOR_BIT3, PCI_PRODUCT_BIT3_PCIVME2706,
+ 0,
+ "Bit3 Computer Corp.",
+ "PCI-VME Interface Mod. 2706",
+ },
+ {
+ PCI_VENDOR_BROADCOM, PCI_PRODUCT_BROADCOM_BCM4211,
+ 0,
+ "Broadcom",
+ "BCM4211 iLine10 Controller",
+ },
+ {
+ PCI_VENDOR_BROADCOM, PCI_PRODUCT_BROADCOM_BCM4212,
+ 0,
+ "Broadcom",
+ "BCM4212 V.90 Modem",
+ },
+ {
+ PCI_VENDOR_BROADCOM, PCI_PRODUCT_BROADCOM_BCM5700,
+ 0,
+ "Broadcom",
+ "BCM5700 10/100/1000 Ethernet",
+ },
+ {
+ PCI_VENDOR_BROADCOM, PCI_PRODUCT_BROADCOM_BCM5701,
+ 0,
+ "Broadcom",
+ "BCM5701 10/100/1000 Ethernet",
+ },
+ {
+ PCI_VENDOR_BROADCOM, PCI_PRODUCT_BROADCOM_BCM5702,
+ 0,
+ "Broadcom",
+ "BCM5702 10/100/1000 Ethernet",
+ },
+ {
+ PCI_VENDOR_BROADCOM, PCI_PRODUCT_BROADCOM_BCM5703,
+ 0,
+ "Broadcom",
+ "BCM5703 10/100/1000 Ethernet",
+ },
+ {
+ PCI_VENDOR_BROADCOM, PCI_PRODUCT_BROADCOM_BCM5705,
+ 0,
+ "Broadcom",
+ "BCM5705 10/100/1000 Ethernet",
+ },
+ {
+ PCI_VENDOR_BROADCOM, PCI_PRODUCT_BROADCOM_BCM5820,
+ 0,
+ "Broadcom",
+ "BCM5820 eCommerce Processor",
+ },
+ {
+ PCI_VENDOR_BROADCOM, PCI_PRODUCT_BROADCOM_BCM5821,
+ 0,
+ "Broadcom",
+ "BCM5821 Super-eCommerce Processor",
+ },
+ {
+ PCI_VENDOR_BROADCOM, PCI_PRODUCT_BROADCOM_BCM5850,
+ 0,
+ "Broadcom",
+ "BCM5850 SSL/TLS Protocol Processor",
+ },
+ {
+ PCI_VENDOR_BROOKTREE, PCI_PRODUCT_BROOKTREE_BT848,
+ 0,
+ "Brooktree",
+ "Bt848 Video Capture",
+ },
+ {
+ PCI_VENDOR_BROOKTREE, PCI_PRODUCT_BROOKTREE_BT849,
+ 0,
+ "Brooktree",
+ "Bt849 Video Capture",
+ },
+ {
+ PCI_VENDOR_BROOKTREE, PCI_PRODUCT_BROOKTREE_BT878,
+ 0,
+ "Brooktree",
+ "Bt878 Video Capture",
+ },
+ {
+ PCI_VENDOR_BROOKTREE, PCI_PRODUCT_BROOKTREE_BT879,
+ 0,
+ "Brooktree",
+ "Bt879 Video Capture",
+ },
+ {
+ PCI_VENDOR_BUSLOGIC, PCI_PRODUCT_BUSLOGIC_MULTIMASTER_NC,
+ 0,
+ "BusLogic",
+ "MultiMaster NC",
+ },
+ {
+ PCI_VENDOR_BUSLOGIC, PCI_PRODUCT_BUSLOGIC_MULTIMASTER,
+ 0,
+ "BusLogic",
+ "MultiMaster",
+ },
+ {
+ PCI_VENDOR_BUSLOGIC, PCI_PRODUCT_BUSLOGIC_FLASHPOINT,
+ 0,
+ "BusLogic",
+ "FlashPoint",
+ },
+ {
+ PCI_VENDOR_C4T, PCI_PRODUCT_C4T_GPPCI,
+ 0,
+ "c't Magazin",
+ "GPPCI",
+ },
+ {
+ PCI_VENDOR_CHIPS, PCI_PRODUCT_CHIPS_64310,
+ 0,
+ "Chips and Technologies",
+ "64310",
+ },
+ {
+ PCI_VENDOR_CHIPS, PCI_PRODUCT_CHIPS_65545,
+ 0,
+ "Chips and Technologies",
+ "65545",
+ },
+ {
+ PCI_VENDOR_CHIPS, PCI_PRODUCT_CHIPS_65548,
+ 0,
+ "Chips and Technologies",
+ "65548",
+ },
+ {
+ PCI_VENDOR_CHIPS, PCI_PRODUCT_CHIPS_65550,
+ 0,
+ "Chips and Technologies",
+ "65550",
+ },
+ {
+ PCI_VENDOR_CHIPS, PCI_PRODUCT_CHIPS_65554,
+ 0,
+ "Chips and Technologies",
+ "65554",
+ },
+ {
+ PCI_VENDOR_CIRRUS, PCI_PRODUCT_CIRRUS_CL_GD7548,
+ 0,
+ "Cirrus Logic",
+ "CL-GD7548",
+ },
+ {
+ PCI_VENDOR_CIRRUS, PCI_PRODUCT_CIRRUS_CL_GD5430,
+ 0,
+ "Cirrus Logic",
+ "CL-GD5430",
+ },
+ {
+ PCI_VENDOR_CIRRUS, PCI_PRODUCT_CIRRUS_CL_GD5434_4,
+ 0,
+ "Cirrus Logic",
+ "CL-GD5434-4",
+ },
+ {
+ PCI_VENDOR_CIRRUS, PCI_PRODUCT_CIRRUS_CL_GD5434_8,
+ 0,
+ "Cirrus Logic",
+ "CL-GD5434-8",
+ },
+ {
+ PCI_VENDOR_CIRRUS, PCI_PRODUCT_CIRRUS_CL_GD5436,
+ 0,
+ "Cirrus Logic",
+ "CL-GD5436",
+ },
+ {
+ PCI_VENDOR_CIRRUS, PCI_PRODUCT_CIRRUS_CL_GD5446,
+ 0,
+ "Cirrus Logic",
+ "CL-GD5446",
+ },
+ {
+ PCI_VENDOR_CIRRUS, PCI_PRODUCT_CIRRUS_CL_GD5480,
+ 0,
+ "Cirrus Logic",
+ "CL-GD5480",
+ },
+ {
+ PCI_VENDOR_CIRRUS, PCI_PRODUCT_CIRRUS_CL_PD6729,
+ 0,
+ "Cirrus Logic",
+ "CL-PD6729",
+ },
+ {
+ PCI_VENDOR_CIRRUS, PCI_PRODUCT_CIRRUS_CL_PD6832,
+ 0,
+ "Cirrus Logic",
+ "CL-PD6832 PCI-CardBus Bridge",
+ },
+ {
+ PCI_VENDOR_CIRRUS, PCI_PRODUCT_CIRRUS_CL_PD6833,
+ 0,
+ "Cirrus Logic",
+ "CL-PD6833 PCI-CardBus Bridge",
+ },
+ {
+ PCI_VENDOR_CIRRUS, PCI_PRODUCT_CIRRUS_CL_GD7542,
+ 0,
+ "Cirrus Logic",
+ "CL-GD7542",
+ },
+ {
+ PCI_VENDOR_CIRRUS, PCI_PRODUCT_CIRRUS_CL_GD7543,
+ 0,
+ "Cirrus Logic",
+ "CL-GD7543",
+ },
+ {
+ PCI_VENDOR_CIRRUS, PCI_PRODUCT_CIRRUS_CL_GD7541,
+ 0,
+ "Cirrus Logic",
+ "CL-GD7541",
+ },
+ {
+ PCI_VENDOR_CIRRUS, PCI_PRODUCT_CIRRUS_CL_CD4400,
+ 0,
+ "Cirrus Logic",
+ "CL-CD4400 Communications Controller",
+ },
+ {
+ PCI_VENDOR_CIRRUS, PCI_PRODUCT_CIRRUS_CS4610,
+ 0,
+ "Cirrus Logic",
+ "CS4610 SoundFusion Audio Accelerator",
+ },
+ {
+ PCI_VENDOR_CIRRUS, PCI_PRODUCT_CIRRUS_CS4280,
+ 0,
+ "Cirrus Logic",
+ "CS4280 CrystalClear Audio Interface",
+ },
+ {
+ PCI_VENDOR_CMDTECH, PCI_PRODUCT_CMDTECH_640,
+ 0,
+ "CMD Technology",
+ "PCI0640",
+ },
+ {
+ PCI_VENDOR_CMDTECH, PCI_PRODUCT_CMDTECH_642,
+ 0,
+ "CMD Technology",
+ "PCI0642",
+ },
+ {
+ PCI_VENDOR_CMDTECH, PCI_PRODUCT_CMDTECH_643,
+ 0,
+ "CMD Technology",
+ "PCI0643",
+ },
+ {
+ PCI_VENDOR_CMDTECH, PCI_PRODUCT_CMDTECH_646,
+ 0,
+ "CMD Technology",
+ "PCI0646",
+ },
+ {
+ PCI_VENDOR_CMDTECH, PCI_PRODUCT_CMDTECH_647,
+ 0,
+ "CMD Technology",
+ "PCI0647",
+ },
+ {
+ PCI_VENDOR_CMDTECH, PCI_PRODUCT_CMDTECH_648,
+ 0,
+ "CMD Technology",
+ "PCI0648",
+ },
+ {
+ PCI_VENDOR_CMDTECH, PCI_PRODUCT_CMDTECH_649,
+ 0,
+ "CMD Technology",
+ "PCI0649",
+ },
+ {
+ PCI_VENDOR_CMDTECH, PCI_PRODUCT_CMDTECH_650A,
+ 0,
+ "CMD Technology",
+ "PCI0650A",
+ },
+ {
+ PCI_VENDOR_CMDTECH, PCI_PRODUCT_CMDTECH_670,
+ 0,
+ "CMD Technology",
+ "USB0670",
+ },
+ {
+ PCI_VENDOR_CMDTECH, PCI_PRODUCT_CMDTECH_673,
+ 0,
+ "CMD Technology",
+ "USB0673",
+ },
+ {
+ PCI_VENDOR_CMEDIA, PCI_PRODUCT_CMEDIA_CMI8338A,
+ 0,
+ "C-Media Electronics Inc",
+ "CMI8338A PCI Audio Device",
+ },
+ {
+ PCI_VENDOR_CMEDIA, PCI_PRODUCT_CMEDIA_CMI8338B,
+ 0,
+ "C-Media Electronics Inc",
+ "CMI8338B PCI Audio Device",
+ },
+ {
+ PCI_VENDOR_CMEDIA, PCI_PRODUCT_CMEDIA_CMI8738,
+ 0,
+ "C-Media Electronics Inc",
+ "CMI8738/C3DX PCI Audio Device",
+ },
+ {
+ PCI_VENDOR_CMEDIA, PCI_PRODUCT_CMEDIA_HSP56,
+ 0,
+ "C-Media Electronics Inc",
+ "HSP56 Audiomodem Riser",
+ },
+ {
+ PCI_VENDOR_COGENT, PCI_PRODUCT_COGENT_EM110TX,
+ 0,
+ "Cogent Data Technologies",
+ "EX110TX PCI Fast Ethernet Adapter",
+ },
+ {
+ PCI_VENDOR_COMPAQ, PCI_PRODUCT_COMPAQ_PCI_EISA_BRIDGE,
+ 0,
+ "Compaq",
+ "PCI-EISA Bridge",
+ },
+ {
+ PCI_VENDOR_COMPAQ, PCI_PRODUCT_COMPAQ_PCI_ISA_BRIDGE,
+ 0,
+ "Compaq",
+ "PCI-ISA Bridge",
+ },
+ {
+ PCI_VENDOR_COMPAQ, PCI_PRODUCT_COMPAQ_TRIFLEX1,
+ 0,
+ "Compaq",
+ "Triflex Host-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_COMPAQ, PCI_PRODUCT_COMPAQ_TRIFLEX2,
+ 0,
+ "Compaq",
+ "Triflex Host-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_COMPAQ, PCI_PRODUCT_COMPAQ_QVISION_V0,
+ 0,
+ "Compaq",
+ "QVision",
+ },
+ {
+ PCI_VENDOR_COMPAQ, PCI_PRODUCT_COMPAQ_QVISION_1280P,
+ 0,
+ "Compaq",
+ "QVision 1280/p",
+ },
+ {
+ PCI_VENDOR_COMPAQ, PCI_PRODUCT_COMPAQ_QVISION_V2,
+ 0,
+ "Compaq",
+ "QVision",
+ },
+ {
+ PCI_VENDOR_COMPAQ, PCI_PRODUCT_COMPAQ_TRIFLEX4,
+ 0,
+ "Compaq",
+ "Triflex Host-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_COMPAQ, PCI_PRODUCT_COMPAQ_USB,
+ 0,
+ "Compaq",
+ "USB Controller",
+ },
+ {
+ PCI_VENDOR_COMPAQ, PCI_PRODUCT_COMPAQ_SMART2P,
+ 0,
+ "Compaq",
+ "SMART2P RAID",
+ },
+ {
+ PCI_VENDOR_COMPAQ, PCI_PRODUCT_COMPAQ_N100TX,
+ 0,
+ "Compaq",
+ "Netelligent 10/100 TX",
+ },
+ {
+ PCI_VENDOR_COMPAQ, PCI_PRODUCT_COMPAQ_N10T,
+ 0,
+ "Compaq",
+ "Netelligent 10 T",
+ },
+ {
+ PCI_VENDOR_COMPAQ, PCI_PRODUCT_COMPAQ_IntNF3P,
+ 0,
+ "Compaq",
+ "Integrated NetFlex 3/P",
+ },
+ {
+ PCI_VENDOR_COMPAQ, PCI_PRODUCT_COMPAQ_DPNet100TX,
+ 0,
+ "Compaq",
+ "Dual Port Netelligent 10/100 TX",
+ },
+ {
+ PCI_VENDOR_COMPAQ, PCI_PRODUCT_COMPAQ_IntPL100TX,
+ 0,
+ "Compaq",
+ "ProLiant Integrated Netelligent 10/100 TX",
+ },
+ {
+ PCI_VENDOR_COMPAQ, PCI_PRODUCT_COMPAQ_DP4000,
+ 0,
+ "Compaq",
+ "Deskpro 4000 5233MMX",
+ },
+ {
+ PCI_VENDOR_COMPAQ, PCI_PRODUCT_COMPAQ_NF3P_BNC,
+ 0,
+ "Compaq",
+ "NetFlex 3/P w/ BNC",
+ },
+ {
+ PCI_VENDOR_COMPAQ, PCI_PRODUCT_COMPAQ_NF3P,
+ 0,
+ "Compaq",
+ "NetFlex 3/P",
+ },
+ {
+ PCI_VENDOR_COMPEX, PCI_PRODUCT_COMPEX_NE2KETHER,
+ 0,
+ "Compex",
+ "Ethernet",
+ },
+ {
+ PCI_VENDOR_COMPEX, PCI_PRODUCT_COMPEX_RL100ATX,
+ 0,
+ "Compex",
+ "RL100-ATX 10/100 Ethernet",
+ },
+ {
+ PCI_VENDOR_COMPEX, PCI_PRODUCT_COMPEX_RL100TX,
+ 0,
+ "Compex",
+ "RL100-TX 10/100 Ethernet",
+ },
+ {
+ PCI_VENDOR_CONEXANT, PCI_PRODUCT_CONEXANT_SOFTK56,
+ 0,
+ "Conexant Systems",
+ "SoftK56 PCI Software Modem",
+ },
+ {
+ PCI_VENDOR_CONTAQ, PCI_PRODUCT_CONTAQ_82C599,
+ 0,
+ "Contaq Microsystems",
+ "82C599 PCI-VLB Bridge",
+ },
+ {
+ PCI_VENDOR_CONTAQ, PCI_PRODUCT_CONTAQ_82C693,
+ 0,
+ "Contaq Microsystems",
+ "82C693 PCI-ISA Bridge",
+ },
+ {
+ PCI_VENDOR_COROLLARY, PCI_PRODUCT_COROLLARY_CBUSII_PCIB,
+ 0,
+ "Corrollary",
+ "\"C-Bus II\"-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_CREATIVELABS, PCI_PRODUCT_CREATIVELABS_SBLIVE,
+ 0,
+ "Creative Labs",
+ "SBLive! EMU 10000",
+ },
+ {
+ PCI_VENDOR_CREATIVELABS, PCI_PRODUCT_CREATIVELABS_SBJOY,
+ 0,
+ "Creative Labs",
+ "PCI Gameport Joystick",
+ },
+ {
+ PCI_VENDOR_CREATIVELABS, PCI_PRODUCT_CREATIVELABS_EV1938,
+ 0,
+ "Creative Labs",
+ "Ectiva 1938",
+ },
+ {
+ PCI_VENDOR_CYCLADES, PCI_PRODUCT_CYCLADES_CYCLOMY_1,
+ 0,
+ "Cyclades",
+ "Cyclom-Y below 1M",
+ },
+ {
+ PCI_VENDOR_CYCLADES, PCI_PRODUCT_CYCLADES_CYCLOMY_2,
+ 0,
+ "Cyclades",
+ "Cyclom-Y above 1M",
+ },
+ {
+ PCI_VENDOR_CYCLADES, PCI_PRODUCT_CYCLADES_CYCLOM4Y_1,
+ 0,
+ "Cyclades",
+ "Cyclom-4Y below 1M",
+ },
+ {
+ PCI_VENDOR_CYCLADES, PCI_PRODUCT_CYCLADES_CYCLOM4Y_2,
+ 0,
+ "Cyclades",
+ "Cyclom-4Y above 1M",
+ },
+ {
+ PCI_VENDOR_CYCLADES, PCI_PRODUCT_CYCLADES_CYCLOM8Y_1,
+ 0,
+ "Cyclades",
+ "Cyclom-8Y below 1M",
+ },
+ {
+ PCI_VENDOR_CYCLADES, PCI_PRODUCT_CYCLADES_CYCLOM8Y_2,
+ 0,
+ "Cyclades",
+ "Cyclom-8Y above 1M",
+ },
+ {
+ PCI_VENDOR_CYCLADES, PCI_PRODUCT_CYCLADES_CYCLOMZ_1,
+ 0,
+ "Cyclades",
+ "Cyclom-Z below 1M",
+ },
+ {
+ PCI_VENDOR_CYCLADES, PCI_PRODUCT_CYCLADES_CYCLOMZ_2,
+ 0,
+ "Cyclades",
+ "Cyclom-Z above 1M",
+ },
+ {
+ PCI_VENDOR_DAVICOM, PCI_PRODUCT_DAVICOM_DM9102,
+ 0,
+ "Davicom Semiconductor",
+ "Davicom DM9102 10/100 Ethernet",
+ },
+ {
+ PCI_VENDOR_DEC, PCI_PRODUCT_DEC_21050,
+ 0,
+ "Digital Equipment",
+ "DECchip 21050 PCI-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_DEC, PCI_PRODUCT_DEC_21040,
+ 0,
+ "Digital Equipment",
+ "DECchip 21040 Ethernet",
+ },
+ {
+ PCI_VENDOR_DEC, PCI_PRODUCT_DEC_21030,
+ 0,
+ "Digital Equipment",
+ "DECchip 21030 (\"TGA\")",
+ },
+ {
+ PCI_VENDOR_DEC, PCI_PRODUCT_DEC_NVRAM,
+ 0,
+ "Digital Equipment",
+ "Zephyr NV-RAM",
+ },
+ {
+ PCI_VENDOR_DEC, PCI_PRODUCT_DEC_KZPSA,
+ 0,
+ "Digital Equipment",
+ "KZPSA",
+ },
+ {
+ PCI_VENDOR_DEC, PCI_PRODUCT_DEC_21140,
+ 0,
+ "Digital Equipment",
+ "DECchip 21140 10/100 Ethernet",
+ },
+ {
+ PCI_VENDOR_DEC, PCI_PRODUCT_DEC_PBXGB,
+ 0,
+ "Digital Equipment",
+ "TGA2",
+ },
+ {
+ PCI_VENDOR_DEC, PCI_PRODUCT_DEC_DEFPA,
+ 0,
+ "Digital Equipment",
+ "DEFPA",
+ },
+ {
+ PCI_VENDOR_DEC, PCI_PRODUCT_DEC_21041,
+ 0,
+ "Digital Equipment",
+ "DECchip 21041 Ethernet",
+ },
+ {
+ PCI_VENDOR_DEC, PCI_PRODUCT_DEC_DGLPB,
+ 0,
+ "Digital Equipment",
+ "DGLPB (\"OPPO\")",
+ },
+ {
+ PCI_VENDOR_DEC, PCI_PRODUCT_DEC_21142,
+ 0,
+ "Digital Equipment",
+ "DECchip 21142/21143 10/100 Ethernet",
+ },
+ {
+ PCI_VENDOR_DEC, PCI_PRODUCT_DEC_21052,
+ 0,
+ "Digital Equipment",
+ "DECchip 21052 PCI-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_DEC, PCI_PRODUCT_DEC_21150,
+ 0,
+ "Digital Equipment",
+ "DECchip 21150 PCI-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_DEC, PCI_PRODUCT_DEC_21152,
+ 0,
+ "Digital Equipment",
+ "DECchip 21152 PCI-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_DEC, PCI_PRODUCT_DEC_21153,
+ 0,
+ "Digital Equipment",
+ "DECchip 21153 PCI-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_DEC, PCI_PRODUCT_DEC_21154,
+ 0,
+ "Digital Equipment",
+ "DECchip 21154 PCI-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_DEC, PCI_PRODUCT_DEC_CPQ42XX,
+ 0,
+ "Digital Equipment",
+ "Compaq SMART RAID 42xx",
+ },
+ {
+ PCI_VENDOR_DELTA, PCI_PRODUCT_DELTA_8139,
+ 0,
+ "Delta Electronics",
+ "8139 Ethernet",
+ },
+ {
+ PCI_VENDOR_DIAMOND, PCI_PRODUCT_DIAMOND_VIPER,
+ 0,
+ "Diamond Computer Systems",
+ "Viper/PCI",
+ },
+ {
+ PCI_VENDOR_DLINK, PCI_PRODUCT_DLINK_DFE550TX,
+ 0,
+ "D-Link Systems",
+ "DFE-550TX 10/100 Ethernet",
+ },
+ {
+ PCI_VENDOR_DPT, PCI_PRODUCT_DPT_SC_RAID,
+ 0,
+ "Distributed Processing Technology",
+ "SmartCache/SmartRAID",
+ },
+ {
+ PCI_VENDOR_DPT, PCI_PRODUCT_DPT_RAID_I2O,
+ 0,
+ "Distributed Processing Technology",
+ "SmartRAID (I2O)",
+ },
+ {
+ PCI_VENDOR_DPT, PCI_PRODUCT_DPT_MEMCTLR,
+ 0,
+ "Distributed Processing Technology",
+ "Memory Controller",
+ },
+ {
+ PCI_VENDOR_DOLPHIN, PCI_PRODUCT_DOLPHIN_PCISCI,
+ 0,
+ "Dolphin Interconnect Solutions",
+ "PCI-SCI Bridge",
+ },
+ {
+ PCI_VENDOR_DOMEX, PCI_PRODUCT_DOMEX_PCISCSI,
+ 0,
+ "Domex",
+ "DMX-3191D",
+ },
+ {
+ PCI_VENDOR_ELSA, PCI_PRODUCT_ELSA_QS1PCI,
+ 0,
+ "Elsa",
+ "QuickStep 1000 ISDN card",
+ },
+ {
+ PCI_VENDOR_EMULEX, PCI_PRODUCT_EMULEX_LPPFC,
+ 0,
+ "Emulex",
+ "\"Light Pulse\" FibreChannel adapter",
+ },
+ {
+ PCI_VENDOR_ENSONIQ, PCI_PRODUCT_ENSONIQ_AUDIOPCI,
+ 0,
+ "Ensoniq",
+ "AudioPCI",
+ },
+ {
+ PCI_VENDOR_ENSONIQ, PCI_PRODUCT_ENSONIQ_AUDIOPCI97,
+ 0,
+ "Ensoniq",
+ "AudioPCI 97",
+ },
+ {
+ PCI_VENDOR_ENSONIQ, PCI_PRODUCT_ENSONIQ_CT5880,
+ 0,
+ "Ensoniq",
+ "CT5880",
+ },
+ {
+ PCI_VENDOR_EPIGRAM, PCI_PRODUCT_EPIGRAM_BCM4210,
+ 0,
+ "Epigram",
+ "BCM4210 iLine10 Controller",
+ },
+ {
+ PCI_VENDOR_ESSENTIAL, PCI_PRODUCT_ESSENTIAL_RR_HIPPI,
+ 0,
+ "Essential Communications",
+ "RoadRunner HIPPI Interface",
+ },
+ {
+ PCI_VENDOR_ESSENTIAL, PCI_PRODUCT_ESSENTIAL_RR_GIGE,
+ 0,
+ "Essential Communications",
+ "RoadRunner Gig-E Interface",
+ },
+ {
+ PCI_VENDOR_ESSTECH, PCI_PRODUCT_ESSTECH_MAESTRO1,
+ 0,
+ "ESS Technology Inc",
+ "Maestro 1 PCI Audio Accelerator",
+ },
+ {
+ PCI_VENDOR_ESSTECH, PCI_PRODUCT_ESSTECH_MAESTRO2,
+ 0,
+ "ESS Technology Inc",
+ "Maestro 2 PCI Audio Accelerator",
+ },
+ {
+ PCI_VENDOR_ESSTECH, PCI_PRODUCT_ESSTECH_SOLO1,
+ 0,
+ "ESS Technology Inc",
+ "Solo-1 PCI AudioDrive",
+ },
+ {
+ PCI_VENDOR_ESSTECH, PCI_PRODUCT_ESSTECH_MAESTRO2E,
+ 0,
+ "ESS Technology Inc",
+ "Maestro 2E PCI Audio Accelerator",
+ },
+ {
+ PCI_VENDOR_ESSTECH, PCI_PRODUCT_ESSTECH_MAESTRO3,
+ 0,
+ "ESS Technology Inc",
+ "Maestro 3 PCI Audio Accelerator",
+ },
+ {
+ PCI_VENDOR_ESSTECH, PCI_PRODUCT_ESSTECH_MAESTRO3MODEM,
+ 0,
+ "ESS Technology Inc",
+ "Maestro 3 Modem",
+ },
+ {
+ PCI_VENDOR_ESSTECH2, PCI_PRODUCT_ESSTECH2_MAESTRO1,
+ 0,
+ "ESS Technology Inc",
+ "Maestro 1 PCI Audio Accelerator",
+ },
+ {
+ PCI_VENDOR_O2MICRO, PCI_PRODUCT_O2MICRO_OZ6832,
+ 0,
+ "O2 Micro Inc",
+ "OZ6832 CardBus Controller",
+ },
+ {
+ PCI_VENDOR_ES, PCI_PRODUCT_ES_FREEDOM,
+ 0,
+ "Evans & Sutherland",
+ "Freedom PCI-GBus Interface",
+ },
+ {
+ PCI_VENDOR_FORE, PCI_PRODUCT_FORE_PCA200,
+ 0,
+ "FORE Systems",
+ "ATM PCA-200",
+ },
+ {
+ PCI_VENDOR_FORE, PCI_PRODUCT_FORE_PCA200E,
+ 0,
+ "FORE Systems",
+ "ATM PCA-200e",
+ },
+ {
+ PCI_VENDOR_FORTEMEDIA, PCI_PRODUCT_FORTEMEDIA_FM801,
+ 0,
+ "Forte Media",
+ "Forte Media 801 Sound",
+ },
+ {
+ PCI_VENDOR_FUTUREDOMAIN, PCI_PRODUCT_FUTUREDOMAIN_TMC_18C30,
+ 0,
+ "Future Domain",
+ "TMC-18C30 (36C70)",
+ },
+ {
+ PCI_VENDOR_EFFICIENTNETS, PCI_PRODUCT_EFFICIENTNETS_ENI155PF,
+ 0,
+ "Efficent Networks",
+ "155P-MF1 ATM (FPGA)",
+ },
+ {
+ PCI_VENDOR_EFFICIENTNETS, PCI_PRODUCT_EFFICIENTNETS_ENI155PA,
+ 0,
+ "Efficent Networks",
+ "155P-MF1 ATM (ASIC)",
+ },
+ {
+ PCI_VENDOR_EFFICIENTNETS, PCI_PRODUCT_EFFICIENTNETS_ENI25P,
+ 0,
+ "Efficent Networks",
+ "SpeedStream ENI-25p",
+ },
+ {
+ PCI_VENDOR_EFFICIENTNETS, PCI_PRODUCT_EFFICIENTNETS_SS3000,
+ 0,
+ "Efficent Networks",
+ "SpeedStream 3000",
+ },
+ {
+ PCI_VENDOR_GALILEO, PCI_PRODUCT_GALILEO_GT64010A,
+ 0,
+ "Galileo Technology",
+ "GT-64010A System Controller",
+ },
+ {
+ PCI_VENDOR_GALILEO, PCI_PRODUCT_GALILEO_GT64115,
+ 0,
+ "Galileo Technology",
+ "GT-64115 System Controller",
+ },
+ {
+ PCI_VENDOR_GALILEO, PCI_PRODUCT_GALILEO_GT64011,
+ 0,
+ "Galileo Technology",
+ "GT-64011 System Controller",
+ },
+ {
+ PCI_VENDOR_GALILEO, PCI_PRODUCT_GALILEO_GT64120,
+ 0,
+ "Galileo Technology",
+ "GT-64120 System Controller",
+ },
+ {
+ PCI_VENDOR_GALILEO, PCI_PRODUCT_GALILEO_GT64130,
+ 0,
+ "Galileo Technology",
+ "GT-64130 System Controller",
+ },
+ {
+ PCI_VENDOR_HP, PCI_PRODUCT_HP_J2585A,
+ 0,
+ "Hewlett-Packard",
+ "J2585A",
+ },
+ {
+ PCI_VENDOR_IBM, PCI_PRODUCT_IBM_MCABRIDGE,
+ 0,
+ "IBM",
+ "MCA Bridge",
+ },
+ {
+ PCI_VENDOR_IBM, PCI_PRODUCT_IBM_ALTALITE,
+ 0,
+ "IBM",
+ "CPU Bridge - Alta Lite",
+ },
+ {
+ PCI_VENDOR_IBM, PCI_PRODUCT_IBM_ALTAMP,
+ 0,
+ "IBM",
+ "CPU Bridge - Alta MP",
+ },
+ {
+ PCI_VENDOR_IBM, PCI_PRODUCT_IBM_ISABRIDGE,
+ 0,
+ "IBM",
+ "ISA Bridge w/PnP",
+ },
+ {
+ PCI_VENDOR_IBM, PCI_PRODUCT_IBM_CPUBRIDGE,
+ 0,
+ "IBM",
+ "CPU Bridge",
+ },
+ {
+ PCI_VENDOR_IBM, PCI_PRODUCT_IBM_LANSTREAMER,
+ 0,
+ "IBM",
+ "Auto LANStreamer",
+ },
+ {
+ PCI_VENDOR_IBM, PCI_PRODUCT_IBM_GXT150P,
+ 0,
+ "IBM",
+ "GXT-150P 2D Accelerator",
+ },
+ {
+ PCI_VENDOR_IBM, PCI_PRODUCT_IBM_MCABRIDGE2,
+ 0,
+ "IBM",
+ "MCA Bridge",
+ },
+ {
+ PCI_VENDOR_IBM, PCI_PRODUCT_IBM_82351,
+ 0,
+ "IBM",
+ "82351 PCI-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_IBM, PCI_PRODUCT_IBM_SERVERAID,
+ 0,
+ "IBM",
+ "ServeRAID",
+ },
+ {
+ PCI_VENDOR_IBM, PCI_PRODUCT_IBM_OLYMPIC,
+ 0,
+ "IBM",
+ "Token Ring",
+ },
+ {
+ PCI_VENDOR_IBM, PCI_PRODUCT_IBM_MIAMI,
+ 0,
+ "IBM",
+ "Miami/PCI",
+ },
+ {
+ PCI_VENDOR_IBM, PCI_PRODUCT_IBM_TURBOWAYS25,
+ 0,
+ "IBM",
+ "Turboways 25 ATM",
+ },
+ {
+ PCI_VENDOR_IBM, PCI_PRODUCT_IBM_MPIC2,
+ 0,
+ "IBM",
+ "MPIC-II",
+ },
+ {
+ PCI_VENDOR_IDT, PCI_PRODUCT_IDT_77201,
+ 0,
+ "IDT",
+ "77201/77211 ATM (\"NICStAR\")",
+ },
+ {
+ PCI_VENDOR_INITIO, PCI_PRODUCT_INITIO_I920,
+ 0,
+ "Initio",
+ "INIC-920 SCSI",
+ },
+ {
+ PCI_VENDOR_INITIO, PCI_PRODUCT_INITIO_I940,
+ 0,
+ "Initio",
+ "INIC-940 SCSI",
+ },
+ {
+ PCI_VENDOR_INITIO, PCI_PRODUCT_INITIO_I935,
+ 0,
+ "Initio",
+ "INIC-935 SCSI",
+ },
+ {
+ PCI_VENDOR_INITIO, PCI_PRODUCT_INITIO_I950,
+ 0,
+ "Initio",
+ "INIC-950 SCSI",
+ },
+ {
+ PCI_VENDOR_IMS, PCI_PRODUCT_IMS_8849,
+ 0,
+ "Integrated Micro Solutions",
+ "8849",
+ },
+ {
+ PCI_VENDOR_IMS, PCI_PRODUCT_IMS_TT128M,
+ 0,
+ "Integrated Micro Solutions",
+ "TwinTurbo 128M",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_PCEB,
+ 0,
+ "Intel",
+ "82375EB/SB PCI-EISA Bridge (PCEB)",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_CDC,
+ 0,
+ "Intel",
+ "82424ZX Cache and DRAM controller (CDC)",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_SIO,
+ 0,
+ "Intel",
+ "82378ZB System I/O (SIO)",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82426EX,
+ 0,
+ "Intel",
+ "82426EX PCI-to-ISA Bridge (PCIB)",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_PCMC,
+ 0,
+ "Intel",
+ "82434LX/NX PCI, Cache and Memory Controller (PCMC)",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_IN_BUSINESS,
+ 0,
+ "Intel",
+ "InBusiness Fast Ethernet LAN Controller",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82559ER,
+ 0,
+ "Intel",
+ "82559ER Fast Ethernet LAN Controller",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82092AA,
+ 0,
+ "Intel",
+ "82092AA IDE controller",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_SAA7116,
+ 0,
+ "Intel",
+ "SAA7116",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82596,
+ 0,
+ "Intel",
+ "82596 LAN Controller",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_EEPRO100,
+ 0,
+ "Intel",
+ "EE Pro 100 10/100 Fast Ethernet",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_EEPRO100S,
+ 0,
+ "Intel",
+ "EE Pro 100 Smart 10/100 Fast Ethernet",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82557,
+ 0,
+ "Intel",
+ "82557 Fast Ethernet LAN Controller",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82437FX,
+ 0,
+ "Intel",
+ "82437FX System Controller (TSC)",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82371FB_ISA,
+ 0,
+ "Intel",
+ "82371FB PCI-to-ISA Bridge (PIIX)",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82371FB_IDE,
+ 0,
+ "Intel",
+ "82371FB IDE controller (PIIX)",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82371MX,
+ 0,
+ "Intel",
+ "82371MX Mobile PCI I/O IDE Xcelerator (MPIIX)",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82437MX,
+ 0,
+ "Intel",
+ "82437MX Mobile System Controller (MTSC)",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82441FX,
+ 0,
+ "Intel",
+ "82441FX PCI and Memory Controller (PMC)",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82380AB,
+ 0,
+ "Intel",
+ "82380AB Mobile PCI-to-ISA Bridge (MISA)",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82380FB,
+ 0,
+ "Intel",
+ "82380FB Mobile PCI-to-PCI Bridge (MPCI2)",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82439HX,
+ 0,
+ "Intel",
+ "82439HX System Controller (TXC)",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82801AA_LPC,
+ 0,
+ "Intel",
+ "82801AA LPC Interface Bridge",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82801AA_IDE,
+ 0,
+ "Intel",
+ "82801AA IDE Controller",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82801AA_USB,
+ 0,
+ "Intel",
+ "82801AA USB Controller",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82801AA_SMB,
+ 0,
+ "Intel",
+ "82801AA SMBus Controller",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82801AA_ACA,
+ 0,
+ "Intel",
+ "82801AA AC-97 Audio Controller",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82801AA_ACM,
+ 0,
+ "Intel",
+ "82801AA AC-97 PCI Modem",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82801AA_HPB,
+ 0,
+ "Intel",
+ "82801AA Hub-to-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82801AB_LPC,
+ 0,
+ "Intel",
+ "82801AB LPC Interface Bridge",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82801AB_IDE,
+ 0,
+ "Intel",
+ "82801AB IDE Controller",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82801AB_USB,
+ 0,
+ "Intel",
+ "82801AB USB Controller",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82801AB_SMB,
+ 0,
+ "Intel",
+ "82801AB SMBus Controller",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82801AB_ACA,
+ 0,
+ "Intel",
+ "82801AB AC-97 Audio Controller",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82801AB_ACM,
+ 0,
+ "Intel",
+ "82801AB AC-97 PCI Modem",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82801AB_HPB,
+ 0,
+ "Intel",
+ "82801AB Hub-to-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82801BA_LPC,
+ 0,
+ "Intel",
+ "82801BA LPC Interface Bridge",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82801BA_USB1,
+ 0,
+ "Intel",
+ "82801BA USB Controller",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82801BA_SMB,
+ 0,
+ "Intel",
+ "82801BA SMBus Controller",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82801BA_USB2,
+ 0,
+ "Intel",
+ "82801BA USB Controller",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82801BA_ACA,
+ 0,
+ "Intel",
+ "82801BA AC-97 Audio Controller",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82801BA_ACM,
+ 0,
+ "Intel",
+ "82801BA AC-97 PCI Modem",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82801BA_LAN,
+ 0,
+ "Intel",
+ "82801BA LAN Controller",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82801BA_IDE,
+ 0,
+ "Intel",
+ "82801BA IDE Controller",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82801BA_HPB,
+ 0,
+ "Intel",
+ "82801BA Hub-to-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82371SB_ISA,
+ 0,
+ "Intel",
+ "82371SB PCI-to-ISA Bridge (PIIX3)",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82371SB_IDE,
+ 0,
+ "Intel",
+ "82371SB IDE Interface (PIIX3)",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82371SB_USB,
+ 0,
+ "Intel",
+ "82371SB USB Host Controller (PIIX3)",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82437VX,
+ 0,
+ "Intel",
+ "82437VX System Controller (TVX)",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82439TX,
+ 0,
+ "Intel",
+ "82439TX System Controller (MTXC)",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82371AB_ISA,
+ 0,
+ "Intel",
+ "82371AB PCI-to-ISA Bridge (PIIX4)",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82371AB_IDE,
+ 0,
+ "Intel",
+ "82371AB IDE controller (PIIX4)",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82371AB_USB,
+ 0,
+ "Intel",
+ "82371AB USB Host Controller (PIIX4)",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82371AB_PMC,
+ 0,
+ "Intel",
+ "82371AB Power Management Controller (PIIX4)",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82810_MCH,
+ 0,
+ "Intel",
+ "82810 Memory Controller Hub",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82810_GC,
+ 0,
+ "Intel",
+ "82810 Graphics Controller",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82810_DC100_MCH,
+ 0,
+ "Intel",
+ "82810-DC100 Memory Controller Hub",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82810_DC100_GC,
+ 0,
+ "Intel",
+ "82810-DC100 Graphics Controller",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82810E_MCH,
+ 0,
+ "Intel",
+ "82810E Memory Controller Hub",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82810E_GC,
+ 0,
+ "Intel",
+ "82810E Graphics Controller",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82443LX,
+ 0,
+ "Intel",
+ "82443LX PCI AGP Controller (PAC)",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82443LX_AGP,
+ 0,
+ "Intel",
+ "82443LX AGP Interface (PAC)",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82443BX,
+ 0,
+ "Intel",
+ "82443BX Host Bridge/Controller",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82443BX_AGP,
+ 0,
+ "Intel",
+ "82443BX AGP Interface",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82443BX_NOAGP,
+ 0,
+ "Intel",
+ "82443BX Host Bridge/Controller (AGP disabled)",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82440MX,
+ 0,
+ "Intel",
+ "82440MX Host Bridge/Controller",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82440MX_ACA,
+ 0,
+ "Intel",
+ "82440MX AC-97 Audio Controller",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82440MX_ISA,
+ 0,
+ "Intel",
+ "82440MX PCI-to-ISA Bridge",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82440MX_IDE,
+ 0,
+ "Intel",
+ "82440MX IDE Controller",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82440MX_USB,
+ 0,
+ "Intel",
+ "82440MX USB Host Controller",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82440MX_PMC,
+ 0,
+ "Intel",
+ "82440MX Power Management Controller",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_I740,
+ 0,
+ "Intel",
+ "i740 Graphics Accelerator",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_PCI450_PB,
+ 0,
+ "Intel",
+ "82454KX/GX PCI Bridge (PB)",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_PCI450_MC,
+ 0,
+ "Intel",
+ "82451KX/GX Memory Controller (MC)",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82451NX_MIOC,
+ 0,
+ "Intel",
+ "82451NX Memory & I/O Controller (MIOC)",
+ },
+ {
+ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_82451NX_PXB,
+ 0,
+ "Intel",
+ "82451NX PCI Expander Bridge (PXB)",
+ },
+ {
+ PCI_VENDOR_INTERGRAPH, PCI_PRODUCT_INTERGRAPH_4D50T,
+ 0,
+ "Intergraph",
+ "Powerstorm 4D50T",
+ },
+ {
+ PCI_VENDOR_ITT, PCI_PRODUCT_ITT_AGX016,
+ 0,
+ "I. T. T.",
+ "AGX016",
+ },
+ {
+ PCI_VENDOR_ITT, PCI_PRODUCT_ITT_ITT3204,
+ 0,
+ "I. T. T.",
+ "ITT3204 MPEG Decoder",
+ },
+ {
+ PCI_VENDOR_KTI, PCI_PRODUCT_KTI_NE2KETHER,
+ 0,
+ "KTI",
+ "Ethernet",
+ },
+ {
+ PCI_VENDOR_LMC, PCI_PRODUCT_LMC_HSSI,
+ 0,
+ "LAN Media Corporation",
+ "HSSI Interface",
+ },
+ {
+ PCI_VENDOR_LMC, PCI_PRODUCT_LMC_DS3,
+ 0,
+ "LAN Media Corporation",
+ "DS3 Interface",
+ },
+ {
+ PCI_VENDOR_LMC, PCI_PRODUCT_LMC_SSI,
+ 0,
+ "LAN Media Corporation",
+ "SSI",
+ },
+ {
+ PCI_VENDOR_LEADTEK, PCI_PRODUCT_LEADTEK_S3_805,
+ 0,
+ "LeadTek Research",
+ "S3 805",
+ },
+ {
+ PCI_VENDOR_LINEARSYS, PCI_PRODUCT_LINEARSYS_DVB_TX,
+ 0,
+ "Linear Systems",
+ "DVB Transmitter",
+ },
+ {
+ PCI_VENDOR_LINEARSYS, PCI_PRODUCT_LINEARSYS_DVB_RX,
+ 0,
+ "Linear Systems",
+ "DVB Receiver",
+ },
+ {
+ PCI_VENDOR_LITEON, PCI_PRODUCT_LITEON_82C168,
+ 0,
+ "Lite-On Communications",
+ "82C168/82C169 (PNIC) 10/100 Ethernet",
+ },
+ {
+ PCI_VENDOR_LITEON, PCI_PRODUCT_LITEON_82C115,
+ 0,
+ "Lite-On Communications",
+ "82C115 (PNIC II) 10/100 Ethernet",
+ },
+ {
+ PCI_VENDOR_LUCENT, PCI_PRODUCT_LUCENT_LTMODEM_0440,
+ 0,
+ "AT&T Microelectronics",
+ "K56flex DSVD LTMODEM",
+ },
+ {
+ PCI_VENDOR_LUCENT, PCI_PRODUCT_LUCENT_LTMODEM_0441,
+ 0,
+ "AT&T Microelectronics",
+ "LTMODEM",
+ },
+ {
+ PCI_VENDOR_LUCENT, PCI_PRODUCT_LUCENT_LTMODEM_0442,
+ 0,
+ "AT&T Microelectronics",
+ "LTMODEM",
+ },
+ {
+ PCI_VENDOR_LUCENT, PCI_PRODUCT_LUCENT_LTMODEM_0443,
+ 0,
+ "AT&T Microelectronics",
+ "LTMODEM",
+ },
+ {
+ PCI_VENDOR_LUCENT, PCI_PRODUCT_LUCENT_LTMODEM_0444,
+ 0,
+ "AT&T Microelectronics",
+ "LTMODEM",
+ },
+ {
+ PCI_VENDOR_LUCENT, PCI_PRODUCT_LUCENT_LTMODEM_0445,
+ 0,
+ "AT&T Microelectronics",
+ "LTMODEM",
+ },
+ {
+ PCI_VENDOR_LUCENT, PCI_PRODUCT_LUCENT_LTMODEM_0446,
+ 0,
+ "AT&T Microelectronics",
+ "LTMODEM",
+ },
+ {
+ PCI_VENDOR_LUCENT, PCI_PRODUCT_LUCENT_LTMODEM_0447,
+ 0,
+ "AT&T Microelectronics",
+ "LTMODEM",
+ },
+ {
+ PCI_VENDOR_LUCENT, PCI_PRODUCT_LUCENT_LTMODEM_0448,
+ 0,
+ "AT&T Microelectronics",
+ "LTMODEM",
+ },
+ {
+ PCI_VENDOR_LUCENT, PCI_PRODUCT_LUCENT_LTMODEM_0449,
+ 0,
+ "AT&T Microelectronics",
+ "LTMODEM",
+ },
+ {
+ PCI_VENDOR_LUCENT, PCI_PRODUCT_LUCENT_LTMODEM_044A,
+ 0,
+ "AT&T Microelectronics",
+ "LTMODEM",
+ },
+ {
+ PCI_VENDOR_LUCENT, PCI_PRODUCT_LUCENT_LTMODEM_044B,
+ 0,
+ "AT&T Microelectronics",
+ "LTMODEM",
+ },
+ {
+ PCI_VENDOR_LUCENT, PCI_PRODUCT_LUCENT_LTMODEM_044C,
+ 0,
+ "AT&T Microelectronics",
+ "LTMODEM",
+ },
+ {
+ PCI_VENDOR_LUCENT, PCI_PRODUCT_LUCENT_LTMODEM_044D,
+ 0,
+ "AT&T Microelectronics",
+ "LTMODEM",
+ },
+ {
+ PCI_VENDOR_LUCENT, PCI_PRODUCT_LUCENT_LTMODEM_044E,
+ 0,
+ "AT&T Microelectronics",
+ "LTMODEM",
+ },
+ {
+ PCI_VENDOR_LUCENT, PCI_PRODUCT_LUCENT_LTMODEM_0450,
+ 0,
+ "AT&T Microelectronics",
+ "LTMODEM",
+ },
+ {
+ PCI_VENDOR_LUCENT, PCI_PRODUCT_LUCENT_LTMODEM_0451,
+ 0,
+ "AT&T Microelectronics",
+ "LTMODEM",
+ },
+ {
+ PCI_VENDOR_LUCENT, PCI_PRODUCT_LUCENT_LTMODEM_0452,
+ 0,
+ "AT&T Microelectronics",
+ "LTMODEM",
+ },
+ {
+ PCI_VENDOR_LUCENT, PCI_PRODUCT_LUCENT_LTMODEM_0453,
+ 0,
+ "AT&T Microelectronics",
+ "LTMODEM",
+ },
+ {
+ PCI_VENDOR_LUCENT, PCI_PRODUCT_LUCENT_LTMODEM_0454,
+ 0,
+ "AT&T Microelectronics",
+ "LTMODEM",
+ },
+ {
+ PCI_VENDOR_LUCENT, PCI_PRODUCT_LUCENT_LTMODEM_0455,
+ 0,
+ "AT&T Microelectronics",
+ "LTMODEM",
+ },
+ {
+ PCI_VENDOR_LUCENT, PCI_PRODUCT_LUCENT_LTMODEM_0456,
+ 0,
+ "AT&T Microelectronics",
+ "LTMODEM",
+ },
+ {
+ PCI_VENDOR_LUCENT, PCI_PRODUCT_LUCENT_LTMODEM_0457,
+ 0,
+ "AT&T Microelectronics",
+ "LTMODEM",
+ },
+ {
+ PCI_VENDOR_LUCENT, PCI_PRODUCT_LUCENT_LTMODEM_0458,
+ 0,
+ "AT&T Microelectronics",
+ "LTMODEM",
+ },
+ {
+ PCI_VENDOR_LUCENT, PCI_PRODUCT_LUCENT_LTMODEM_0459,
+ 0,
+ "AT&T Microelectronics",
+ "LTMODEM",
+ },
+ {
+ PCI_VENDOR_LUCENT, PCI_PRODUCT_LUCENT_LTMODEM_045A,
+ 0,
+ "AT&T Microelectronics",
+ "LTMODEM",
+ },
+ {
+ PCI_VENDOR_LUCENT, PCI_PRODUCT_LUCENT_USBHC,
+ 0,
+ "AT&T Microelectronics",
+ "USB Host Controller",
+ },
+ {
+ PCI_VENDOR_MACRONIX, PCI_PRODUCT_MACRONIX_MX98713,
+ 0,
+ "Macronix",
+ "MX98713 (PMAC) 10/100 Ethernet",
+ },
+ {
+ PCI_VENDOR_MACRONIX, PCI_PRODUCT_MACRONIX_MX987x5,
+ 0,
+ "Macronix",
+ "MX987x5 (PMAC) 10/100 Ethernet",
+ },
+ {
+ PCI_VENDOR_MADGE, PCI_PRODUCT_MADGE_COLLAGE25,
+ 0,
+ "Madge Networks",
+ "Collage 25 ATM adapter",
+ },
+ {
+ PCI_VENDOR_MADGE, PCI_PRODUCT_MADGE_COLLAGE155,
+ 0,
+ "Madge Networks",
+ "Collage 155 ATM adapter",
+ },
+ {
+ PCI_VENDOR_MATROX, PCI_PRODUCT_MATROX_ATLAS,
+ 0,
+ "Matrox",
+ "MGA PX2085 (\"Atlas\")",
+ },
+ {
+ PCI_VENDOR_MATROX, PCI_PRODUCT_MATROX_MILLENNIUM,
+ 0,
+ "Matrox",
+ "MGA Millennium 2064W",
+ },
+ {
+ PCI_VENDOR_MATROX, PCI_PRODUCT_MATROX_MYSTIQUE,
+ 0,
+ "Matrox",
+ "MGA Mystique 1064SG",
+ },
+ {
+ PCI_VENDOR_MATROX, PCI_PRODUCT_MATROX_MILLENNIUM2,
+ 0,
+ "Matrox",
+ "MGA Millennium II 2164W",
+ },
+ {
+ PCI_VENDOR_MATROX, PCI_PRODUCT_MATROX_MILLENNIUM2_AGP,
+ 0,
+ "Matrox",
+ "MGA Millennium II 2164WA-B AG",
+ },
+ {
+ PCI_VENDOR_MATROX, PCI_PRODUCT_MATROX_G200_PCI,
+ 0,
+ "Matrox",
+ "MGA G200 PCI",
+ },
+ {
+ PCI_VENDOR_MATROX, PCI_PRODUCT_MATROX_G200_AGP,
+ 0,
+ "Matrox",
+ "MGA G200 AGP",
+ },
+ {
+ PCI_VENDOR_MATROX, PCI_PRODUCT_MATROX_G400_AGP,
+ 0,
+ "Matrox",
+ "MGA G400 AGP",
+ },
+ {
+ PCI_VENDOR_MATROX, PCI_PRODUCT_MATROX_IMPRESSION,
+ 0,
+ "Matrox",
+ "MGA Impression",
+ },
+ {
+ PCI_VENDOR_MATROX, PCI_PRODUCT_MATROX_G100_PCI,
+ 0,
+ "Matrox",
+ "MGA G100 PCI",
+ },
+ {
+ PCI_VENDOR_MATROX, PCI_PRODUCT_MATROX_G100_AGP,
+ 0,
+ "Matrox",
+ "MGA G100 AGP",
+ },
+ {
+ PCI_VENDOR_MOT, PCI_PRODUCT_MOT_MPC105,
+ 0,
+ "Motorola",
+ "MPC105 \"Eagle\" Host Bridge",
+ },
+ {
+ PCI_VENDOR_MOT, PCI_PRODUCT_MOT_MPC106,
+ 0,
+ "Motorola",
+ "MPC106 \"Grackle\" Host Bridge",
+ },
+ {
+ PCI_VENDOR_MYLEX, PCI_PRODUCT_MYLEX_960P,
+ 0,
+ "Mylex",
+ "DAC960P RAID controller",
+ },
+ {
+ PCI_VENDOR_MUTECH, PCI_PRODUCT_MUTECH_MV1000,
+ 0,
+ "Mutech",
+ "MV1000",
+ },
+ {
+ PCI_VENDOR_NETVIN, PCI_PRODUCT_NETVIN_5000,
+ 0,
+ "NetVin",
+ "5000 Ethernet",
+ },
+ {
+ PCI_VENDOR_NEWBRIDGE, PCI_PRODUCT_NEWBRIDGE_CA91CX42,
+ 0,
+ "Newbridge Microsystems / Tundra Semiconductor",
+ "Universe VME bridge",
+ },
+ {
+ PCI_VENDOR_NS, PCI_PRODUCT_NS_DP83810,
+ 0,
+ "National Semiconductor",
+ "DP83810 10/100 Ethernet",
+ },
+ {
+ PCI_VENDOR_NS, PCI_PRODUCT_NS_DP83815,
+ 0,
+ "National Semiconductor",
+ "DP83815 10/100 Ethernet",
+ },
+ {
+ PCI_VENDOR_NS, PCI_PRODUCT_NS_NS87410,
+ 0,
+ "National Semiconductor",
+ "NS87410",
+ },
+ {
+ PCI_VENDOR_SYMBIOS, PCI_PRODUCT_SYMBIOS_810,
+ 0,
+ "Symbios Logic",
+ "53c810",
+ },
+ {
+ PCI_VENDOR_SYMBIOS, PCI_PRODUCT_SYMBIOS_820,
+ 0,
+ "Symbios Logic",
+ "53c820",
+ },
+ {
+ PCI_VENDOR_SYMBIOS, PCI_PRODUCT_SYMBIOS_825,
+ 0,
+ "Symbios Logic",
+ "53c825",
+ },
+ {
+ PCI_VENDOR_SYMBIOS, PCI_PRODUCT_SYMBIOS_815,
+ 0,
+ "Symbios Logic",
+ "53c815",
+ },
+ {
+ PCI_VENDOR_SYMBIOS, PCI_PRODUCT_SYMBIOS_810AP,
+ 0,
+ "Symbios Logic",
+ "53c810AP",
+ },
+ {
+ PCI_VENDOR_SYMBIOS, PCI_PRODUCT_SYMBIOS_860,
+ 0,
+ "Symbios Logic",
+ "53c860",
+ },
+ {
+ PCI_VENDOR_SYMBIOS, PCI_PRODUCT_SYMBIOS_896,
+ 0,
+ "Symbios Logic",
+ "53c896",
+ },
+ {
+ PCI_VENDOR_SYMBIOS, PCI_PRODUCT_SYMBIOS_895,
+ 0,
+ "Symbios Logic",
+ "53c895",
+ },
+ {
+ PCI_VENDOR_SYMBIOS, PCI_PRODUCT_SYMBIOS_885,
+ 0,
+ "Symbios Logic",
+ "53c885",
+ },
+ {
+ PCI_VENDOR_SYMBIOS, PCI_PRODUCT_SYMBIOS_875,
+ 0,
+ "Symbios Logic",
+ "53c875",
+ },
+ {
+ PCI_VENDOR_SYMBIOS, PCI_PRODUCT_SYMBIOS_1510,
+ 0,
+ "Symbios Logic",
+ "53c1510",
+ },
+ {
+ PCI_VENDOR_SYMBIOS, PCI_PRODUCT_SYMBIOS_875J,
+ 0,
+ "Symbios Logic",
+ "53c875J",
+ },
+ {
+ PCI_VENDOR_SYMBIOS, PCI_PRODUCT_SYMBIOS_PE_GNIC,
+ 0,
+ "Symbios Logic",
+ "Packet Engines G-NIC Ethernet",
+ },
+ {
+ PCI_VENDOR_NEC, PCI_PRODUCT_NEC_USB,
+ 0,
+ "NEC",
+ "USB Host Controller",
+ },
+ {
+ PCI_VENDOR_NEC, PCI_PRODUCT_NEC_POWERVR2,
+ 0,
+ "NEC",
+ "PowerVR PCX2",
+ },
+ {
+ PCI_VENDOR_NEC, PCI_PRODUCT_NEC_PD72872,
+ 0,
+ "NEC",
+ "uPD72872 IEEE 1394 OHCI Host Controller",
+ },
+ {
+ PCI_VENDOR_NEC, PCI_PRODUCT_NEC_PD72870,
+ 0,
+ "NEC",
+ "uPD72870 IEEE 1394 OHCI Host Controller",
+ },
+ {
+ PCI_VENDOR_NEC, PCI_PRODUCT_NEC_PD72871,
+ 0,
+ "NEC",
+ "uPD72871 IEEE 1394 OHCI Host Controller",
+ },
+ {
+ PCI_VENDOR_NEOMAGIC, PCI_PRODUCT_NEOMAGIC_NMMG128ZV,
+ 0,
+ "Neomagic",
+ "MagicGraph 128ZV",
+ },
+ {
+ PCI_VENDOR_NEOMAGIC, PCI_PRODUCT_NEOMAGIC_NMMG2160,
+ 0,
+ "Neomagic",
+ "MagicGraph 128XD",
+ },
+ {
+ PCI_VENDOR_NEOMAGIC, PCI_PRODUCT_NEOMAGIC_NMMM256AV_VGA,
+ 0,
+ "Neomagic",
+ "MagicMedia 256AV VGA",
+ },
+ {
+ PCI_VENDOR_NEOMAGIC, PCI_PRODUCT_NEOMAGIC_NMMM256ZX_VGA,
+ 0,
+ "Neomagic",
+ "MagicMedia 256ZX VGA",
+ },
+ {
+ PCI_VENDOR_NEOMAGIC, PCI_PRODUCT_NEOMAGIC_NMMM256AV_AU,
+ 0,
+ "Neomagic",
+ "MagicMedia 256AV Audio",
+ },
+ {
+ PCI_VENDOR_NEOMAGIC, PCI_PRODUCT_NEOMAGIC_NMMM256ZX_AU,
+ 0,
+ "Neomagic",
+ "MagicMedia 256ZX Audio",
+ },
+ {
+ PCI_VENDOR_NETGEAR, PCI_PRODUCT_NETGEAR_GA620,
+ 0,
+ "Netgear",
+ "GA620 Gigabit Ethernet",
+ },
+ {
+ PCI_VENDOR_NEXGEN, PCI_PRODUCT_NEXGEN_NX82C501,
+ 0,
+ "NexGen Microsystems",
+ "NX82C501 Host-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_NKK, PCI_PRODUCT_NKK_NDR4600,
+ 0,
+ "NKK Corporation",
+ "NDR4600 Host-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_NUMBER9, PCI_PRODUCT_NUMBER9_I128,
+ 0,
+ "Number 9 Computer Company",
+ "Imagine-128",
+ },
+ {
+ PCI_VENDOR_NUMBER9, PCI_PRODUCT_NUMBER9_I128_2,
+ 0,
+ "Number 9 Computer Company",
+ "Imagine-128 II",
+ },
+ {
+ PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_RIVATNT,
+ 0,
+ "Nvidia Corporation",
+ "RIVA TNT",
+ },
+ {
+ PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_RIVATNT2,
+ 0,
+ "Nvidia Corporation",
+ "RIVA TNT2",
+ },
+ {
+ PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_RIVATNT2U,
+ 0,
+ "Nvidia Corporation",
+ "RIVA TNT2 Ultra",
+ },
+ {
+ PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_VANTA,
+ 0,
+ "Nvidia Corporation",
+ "Vanta",
+ },
+ {
+ PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_RIVATNT2M64,
+ 0,
+ "Nvidia Corporation",
+ "RIVA TNT2 Model 64",
+ },
+ {
+ PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_ALADDINTNT2,
+ 0,
+ "Nvidia Corporation",
+ "Aladdin TNT2",
+ },
+ {
+ PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_GEFORCE256,
+ 0,
+ "Nvidia Corporation",
+ "GeForce 256",
+ },
+ {
+ PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_GEFORCEDDR,
+ 0,
+ "Nvidia Corporation",
+ "GeForce DDR",
+ },
+ {
+ PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_QUADRO,
+ 0,
+ "Nvidia Corporation",
+ "Quadro",
+ },
+ {
+ PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_GEFORCE2,
+ 0,
+ "Nvidia Corporation",
+ "GeForce2 GTS",
+ },
+ {
+ PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_GEFORCE2DDR,
+ 0,
+ "Nvidia Corporation",
+ "GeForce2 GTS (DDR)",
+ },
+ {
+ PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_GEFORCE2BR,
+ 0,
+ "Nvidia Corporation",
+ "GeForce2 GTS",
+ },
+ {
+ PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_QUADRO2,
+ 0,
+ "Nvidia Corporation",
+ "Quadro2",
+ },
+ {
+ PCI_VENDOR_NVIDIA_SGS, PCI_PRODUCT_NVIDIA_SGS_RIVA128,
+ 0,
+ "Nvidia Corporation & SGS Thomson Microelectric",
+ "Riva 128",
+ },
+ {
+ PCI_VENDOR_OAKTECH, PCI_PRODUCT_OAKTECH_OTI1007,
+ 0,
+ "Oak Technology",
+ "OTI107",
+ },
+ {
+ PCI_VENDOR_OLICOM, PCI_PRODUCT_OLICOM_OC2183,
+ 0,
+ "Olicom",
+ "Olicom OC-2183/2185 Ethernet",
+ },
+ {
+ PCI_VENDOR_OLICOM, PCI_PRODUCT_OLICOM_OC2325,
+ 0,
+ "Olicom",
+ "Olicom OC-2325 Ethernet",
+ },
+ {
+ PCI_VENDOR_OLICOM, PCI_PRODUCT_OLICOM_OC2326,
+ 0,
+ "Olicom",
+ "Olicom OC-2326 10/100-TX Ethernet",
+ },
+ {
+ PCI_VENDOR_OPTI, PCI_PRODUCT_OPTI_82C557,
+ 0,
+ "Opti",
+ "82C557",
+ },
+ {
+ PCI_VENDOR_OPTI, PCI_PRODUCT_OPTI_82C558,
+ 0,
+ "Opti",
+ "82C558",
+ },
+ {
+ PCI_VENDOR_OPTI, PCI_PRODUCT_OPTI_82C568,
+ 0,
+ "Opti",
+ "82C568",
+ },
+ {
+ PCI_VENDOR_OPTI, PCI_PRODUCT_OPTI_82D568,
+ 0,
+ "Opti",
+ "82D568",
+ },
+ {
+ PCI_VENDOR_OPTI, PCI_PRODUCT_OPTI_82C621,
+ 0,
+ "Opti",
+ "82C621",
+ },
+ {
+ PCI_VENDOR_OPTI, PCI_PRODUCT_OPTI_82C822,
+ 0,
+ "Opti",
+ "82C822",
+ },
+ {
+ PCI_VENDOR_OPTI, PCI_PRODUCT_OPTI_RM861HA,
+ 0,
+ "Opti",
+ "RM861HA",
+ },
+ {
+ PCI_VENDOR_OPTI, PCI_PRODUCT_OPTI_82C700,
+ 0,
+ "Opti",
+ "82C700",
+ },
+ {
+ PCI_VENDOR_OPTI, PCI_PRODUCT_OPTI_82C701,
+ 0,
+ "Opti",
+ "82C701",
+ },
+ {
+ PCI_VENDOR_PCTECH, PCI_PRODUCT_PCTECH_RZ1000,
+ 0,
+ "PC Technology",
+ "RZ1000",
+ },
+ {
+ PCI_VENDOR_PLX, PCI_PRODUCT_PLX_9060ES,
+ 0,
+ "PLX Technology",
+ "9060ES PCI bus controller",
+ },
+ {
+ PCI_VENDOR_PROLAN, PCI_PRODUCT_PROLAN_NE2KETHER,
+ 0,
+ "ProLAN",
+ "Ethernet",
+ },
+ {
+ PCI_VENDOR_PROMISE, PCI_PRODUCT_PROMISE_DC5030,
+ 0,
+ "Promise Technology",
+ "DC5030",
+ },
+ {
+ PCI_VENDOR_PROMISE, PCI_PRODUCT_PROMISE_ULTRA33,
+ 0,
+ "Promise Technology",
+ "Ultra33/ATA Bus Master IDE Accelerator",
+ },
+ {
+ PCI_VENDOR_PROMISE, PCI_PRODUCT_PROMISE_ULTRA66,
+ 0,
+ "Promise Technology",
+ "Ultra66/ATA Bus Master IDE Accelerator",
+ },
+ {
+ PCI_VENDOR_PROMISE, PCI_PRODUCT_PROMISE_ULTRA100,
+ 0,
+ "Promise Technology",
+ "Ultra100/ATA Bus Master IDE Accelerator",
+ },
+ {
+ PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP1020,
+ 0,
+ "Q Logic",
+ "ISP1020",
+ },
+ {
+ PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP1022,
+ 0,
+ "Q Logic",
+ "ISP1022",
+ },
+ {
+ PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP1080,
+ 0,
+ "Q Logic",
+ "ISP1080",
+ },
+ {
+ PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP1240,
+ 0,
+ "Q Logic",
+ "ISP1240",
+ },
+ {
+ PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP2100,
+ 0,
+ "Q Logic",
+ "ISP2100",
+ },
+ {
+ PCI_VENDOR_QUANTUMDESIGNS, PCI_PRODUCT_QUANTUMDESIGNS_8500,
+ 0,
+ "Quantum Designs",
+ "8500",
+ },
+ {
+ PCI_VENDOR_QUANTUMDESIGNS, PCI_PRODUCT_QUANTUMDESIGNS_8580,
+ 0,
+ "Quantum Designs",
+ "8580",
+ },
+ {
+ PCI_VENDOR_REALTEK, PCI_PRODUCT_REALTEK_RT8029,
+ 0,
+ "Realtek Semiconductor",
+ "8029 Ethernet",
+ },
+ {
+ PCI_VENDOR_REALTEK, PCI_PRODUCT_REALTEK_RT8129,
+ 0,
+ "Realtek Semiconductor",
+ "8129 10/100 Ethernet",
+ },
+ {
+ PCI_VENDOR_REALTEK, PCI_PRODUCT_REALTEK_RT8139,
+ 0,
+ "Realtek Semiconductor",
+ "8139 10/100 Ethernet",
+ },
+ {
+ PCI_VENDOR_RICOH, PCI_PRODUCT_RICOH_Rx5C465,
+ 0,
+ "Ricoh",
+ "5C465 PCI-CardBus bridge",
+ },
+ {
+ PCI_VENDOR_RICOH, PCI_PRODUCT_RICOH_Rx5C466,
+ 0,
+ "Ricoh",
+ "5C466 PCI-CardBus bridge",
+ },
+ {
+ PCI_VENDOR_RICOH, PCI_PRODUCT_RICOH_Rx5C475,
+ 0,
+ "Ricoh",
+ "5C475 PCI-CardBus bridge",
+ },
+ {
+ PCI_VENDOR_RICOH, PCI_PRODUCT_RICOH_RL5C476,
+ 0,
+ "Ricoh",
+ "5C476 PCI-CardBus bridge",
+ },
+ {
+ PCI_VENDOR_RICOH, PCI_PRODUCT_RICOH_Rx5C477,
+ 0,
+ "Ricoh",
+ "5C477 PCI-CardBus bridge",
+ },
+ {
+ PCI_VENDOR_RICOH, PCI_PRODUCT_RICOH_Rx5C478,
+ 0,
+ "Ricoh",
+ "5C478 PCI-CardBus bridge",
+ },
+ {
+ PCI_VENDOR_RISCOM, PCI_PRODUCT_RISCOM_N2,
+ 0,
+ "RISCom",
+ "N2",
+ },
+ {
+ PCI_VENDOR_RNS, PCI_PRODUCT_RNS_FDDI,
+ 0,
+ "RNS",
+ "2200 FDDI",
+ },
+ {
+ PCI_VENDOR_S3, PCI_PRODUCT_S3_VIRGE,
+ 0,
+ "S3",
+ "ViRGE",
+ },
+ {
+ PCI_VENDOR_S3, PCI_PRODUCT_S3_TRIO32,
+ 0,
+ "S3",
+ "Trio32",
+ },
+ {
+ PCI_VENDOR_S3, PCI_PRODUCT_S3_TRIO64,
+ 0,
+ "S3",
+ "Trio32/64",
+ },
+ {
+ PCI_VENDOR_S3, PCI_PRODUCT_S3_AURORA64P,
+ 0,
+ "S3",
+ "Aurora64V+",
+ },
+ {
+ PCI_VENDOR_S3, PCI_PRODUCT_S3_TRIO64UVP,
+ 0,
+ "S3",
+ "Trio64UV+",
+ },
+ {
+ PCI_VENDOR_S3, PCI_PRODUCT_S3_VIRGE_VX,
+ 0,
+ "S3",
+ "ViRGE/VX",
+ },
+ {
+ PCI_VENDOR_S3, PCI_PRODUCT_S3_868,
+ 0,
+ "S3",
+ "868",
+ },
+ {
+ PCI_VENDOR_S3, PCI_PRODUCT_S3_928,
+ 0,
+ "S3",
+ "86C928",
+ },
+ {
+ PCI_VENDOR_S3, PCI_PRODUCT_S3_864_0,
+ 0,
+ "S3",
+ "86C864-0",
+ },
+ {
+ PCI_VENDOR_S3, PCI_PRODUCT_S3_864_1,
+ 0,
+ "S3",
+ "86C864-1",
+ },
+ {
+ PCI_VENDOR_S3, PCI_PRODUCT_S3_864_2,
+ 0,
+ "S3",
+ "86C864-2",
+ },
+ {
+ PCI_VENDOR_S3, PCI_PRODUCT_S3_864_3,
+ 0,
+ "S3",
+ "86C864-3",
+ },
+ {
+ PCI_VENDOR_S3, PCI_PRODUCT_S3_964_0,
+ 0,
+ "S3",
+ "86C964-0",
+ },
+ {
+ PCI_VENDOR_S3, PCI_PRODUCT_S3_964_1,
+ 0,
+ "S3",
+ "86C964-1",
+ },
+ {
+ PCI_VENDOR_S3, PCI_PRODUCT_S3_964_2,
+ 0,
+ "S3",
+ "86C964-2",
+ },
+ {
+ PCI_VENDOR_S3, PCI_PRODUCT_S3_964_3,
+ 0,
+ "S3",
+ "86C964-3",
+ },
+ {
+ PCI_VENDOR_S3, PCI_PRODUCT_S3_968_0,
+ 0,
+ "S3",
+ "86C968-0",
+ },
+ {
+ PCI_VENDOR_S3, PCI_PRODUCT_S3_968_1,
+ 0,
+ "S3",
+ "86C968-1",
+ },
+ {
+ PCI_VENDOR_S3, PCI_PRODUCT_S3_968_2,
+ 0,
+ "S3",
+ "86C968-2",
+ },
+ {
+ PCI_VENDOR_S3, PCI_PRODUCT_S3_968_3,
+ 0,
+ "S3",
+ "86C968-3",
+ },
+ {
+ PCI_VENDOR_S3, PCI_PRODUCT_S3_TRIO64V2_DX,
+ 0,
+ "S3",
+ "Trio64V2/DX",
+ },
+ {
+ PCI_VENDOR_S3, PCI_PRODUCT_S3_PLATO_PX,
+ 0,
+ "S3",
+ "Plato/PX",
+ },
+ {
+ PCI_VENDOR_S3, PCI_PRODUCT_S3_TRIO3D,
+ 0,
+ "S3",
+ "86C365 Trio3D",
+ },
+ {
+ PCI_VENDOR_S3, PCI_PRODUCT_S3_VIRGE_DX,
+ 0,
+ "S3",
+ "ViRGE/DX",
+ },
+ {
+ PCI_VENDOR_S3, PCI_PRODUCT_S3_VIRGE_GX2,
+ 0,
+ "S3",
+ "ViRGE/GX2",
+ },
+ {
+ PCI_VENDOR_S3, PCI_PRODUCT_S3_TRIO3D2X,
+ 0,
+ "S3",
+ "Trio3D/2X",
+ },
+ {
+ PCI_VENDOR_S3, PCI_PRODUCT_S3_SAVAGE3D,
+ 0,
+ "S3",
+ "Savage3D",
+ },
+ {
+ PCI_VENDOR_S3, PCI_PRODUCT_S3_SAVAGE3D_MV,
+ 0,
+ "S3",
+ "Savage3D+MV",
+ },
+ {
+ PCI_VENDOR_S3, PCI_PRODUCT_S3_SAVAGE4,
+ 0,
+ "S3",
+ "Savage4",
+ },
+ {
+ PCI_VENDOR_S3, PCI_PRODUCT_S3_VIRGE_MX,
+ 0,
+ "S3",
+ "ViRGE/MX",
+ },
+ {
+ PCI_VENDOR_S3, PCI_PRODUCT_S3_VIRGE_MXP,
+ 0,
+ "S3",
+ "ViRGE/MXP",
+ },
+ {
+ PCI_VENDOR_S3, PCI_PRODUCT_S3_SAVAGE_MX_MV,
+ 0,
+ "S3",
+ "Savage/MX+MV",
+ },
+ {
+ PCI_VENDOR_S3, PCI_PRODUCT_S3_SAVAGE_MX,
+ 0,
+ "S3",
+ "Savage/MX",
+ },
+ {
+ PCI_VENDOR_S3, PCI_PRODUCT_S3_SAVAGE_IX_MV,
+ 0,
+ "S3",
+ "Savage/IX+MV",
+ },
+ {
+ PCI_VENDOR_S3, PCI_PRODUCT_S3_SAVAGE_IX,
+ 0,
+ "S3",
+ "Savage/IX",
+ },
+ {
+ PCI_VENDOR_S3, PCI_PRODUCT_S3_SAVAGE2000,
+ 0,
+ "S3",
+ "Savage2000",
+ },
+ {
+ PCI_VENDOR_S3, PCI_PRODUCT_S3_SONICVIBES,
+ 0,
+ "S3",
+ "SonicVibes",
+ },
+ {
+ PCI_VENDOR_SAMSUNGSEMI, PCI_PRODUCT_SAMSUNGSEMI_KS8920,
+ 0,
+ "Samsung Semiconductors",
+ "KS8920 10/100 Ethernet",
+ },
+ {
+ PCI_VENDOR_SGI, PCI_PRODUCT_SGI_IOC3,
+ 0,
+ "Silicon Graphics",
+ "IOC3",
+ },
+ {
+ PCI_VENDOR_SGI, PCI_PRODUCT_SGI_RAD1,
+ 0,
+ "Silicon Graphics",
+ "PsiTech RAD1",
+ },
+ {
+ PCI_VENDOR_SGI, PCI_PRODUCT_SGI_TIGON,
+ 0,
+ "Silicon Graphics",
+ "Tigon Gigabit Ethernet",
+ },
+ {
+ PCI_VENDOR_SGSTHOMSON, PCI_PRODUCT_SGSTHOMSON_2000,
+ 0,
+ "SGS Thomson Microelectric",
+ "STG 2000X",
+ },
+ {
+ PCI_VENDOR_SGSTHOMSON, PCI_PRODUCT_SGSTHOMSON_1764,
+ 0,
+ "SGS Thomson Microelectric",
+ "STG 1764X",
+ },
+ {
+ PCI_VENDOR_SIBYTE, PCI_PRODUCT_SIBYTE_SB1250_PCI,
+ 0,
+ "SiByte, Inc.",
+ "BCM1250 PCI Host Bridge",
+ },
+ {
+ PCI_VENDOR_SIBYTE, PCI_PRODUCT_SIBYTE_SB1250_LDT,
+ 0,
+ "SiByte, Inc.",
+ "BCM1250 HyperTransport Host Bridge",
+ },
+ {
+ PCI_VENDOR_SIGMA, PCI_PRODUCT_SIGMA_HOLLYWOODPLUS,
+ 0,
+ "Sigma Designs",
+ "REALmagic Hollywood-Plus MPEG-2 Decoder",
+ },
+ {
+ PCI_VENDOR_SIS, PCI_PRODUCT_SIS_86C201,
+ 0,
+ "Silicon Integrated System",
+ "86C201",
+ },
+ {
+ PCI_VENDOR_SIS, PCI_PRODUCT_SIS_86C202,
+ 0,
+ "Silicon Integrated System",
+ "86C202",
+ },
+ {
+ PCI_VENDOR_SIS, PCI_PRODUCT_SIS_86C205,
+ 0,
+ "Silicon Integrated System",
+ "86C205",
+ },
+ {
+ PCI_VENDOR_SIS, PCI_PRODUCT_SIS_85C503,
+ 0,
+ "Silicon Integrated System",
+ "85C503 or 5597/5598 ISA bridge",
+ },
+ {
+ PCI_VENDOR_SIS, PCI_PRODUCT_SIS_600PMC,
+ 0,
+ "Silicon Integrated System",
+ "600 Power Mngmt Controller",
+ },
+ {
+ PCI_VENDOR_SIS, PCI_PRODUCT_SIS_5597_VGA,
+ 0,
+ "Silicon Integrated System",
+ "5597/5598 integrated VGA",
+ },
+ {
+ PCI_VENDOR_SIS, PCI_PRODUCT_SIS_85C501,
+ 0,
+ "Silicon Integrated System",
+ "85C501",
+ },
+ {
+ PCI_VENDOR_SIS, PCI_PRODUCT_SIS_85C496,
+ 0,
+ "Silicon Integrated System",
+ "85C496",
+ },
+ {
+ PCI_VENDOR_SIS, PCI_PRODUCT_SIS_530HB,
+ 0,
+ "Silicon Integrated System",
+ "530 Host to PCI Bridge",
+ },
+ {
+ PCI_VENDOR_SIS, PCI_PRODUCT_SIS_85C601,
+ 0,
+ "Silicon Integrated System",
+ "85C601",
+ },
+ {
+ PCI_VENDOR_SIS, PCI_PRODUCT_SIS_900,
+ 0,
+ "Silicon Integrated System",
+ "SiS 900 10/100 Ethernet",
+ },
+ {
+ PCI_VENDOR_SIS, PCI_PRODUCT_SIS_5597_IDE,
+ 0,
+ "Silicon Integrated System",
+ "5597/5598 IDE controller",
+ },
+ {
+ PCI_VENDOR_SIS, PCI_PRODUCT_SIS_5597_HB,
+ 0,
+ "Silicon Integrated System",
+ "5597/5598 host bridge",
+ },
+ {
+ PCI_VENDOR_SIS, PCI_PRODUCT_SIS_530VGA,
+ 0,
+ "Silicon Integrated System",
+ "530 GUI Accelerator+3D",
+ },
+ {
+ PCI_VENDOR_SIS, PCI_PRODUCT_SIS_6326,
+ 0,
+ "Silicon Integrated System",
+ "6326 AGP VGA",
+ },
+ {
+ PCI_VENDOR_SIS, PCI_PRODUCT_SIS_5597_USB,
+ 0,
+ "Silicon Integrated System",
+ "5597/5598 USB host controller",
+ },
+ {
+ PCI_VENDOR_SIS, PCI_PRODUCT_SIS_7016,
+ 0,
+ "Silicon Integrated System",
+ "SiS 7016 10/100 Ethernet",
+ },
+ {
+ PCI_VENDOR_SILMOTION, PCI_PRODUCT_SILMOTION_LYNX_E,
+ 0,
+ "Silicon Motion",
+ "Lynx E",
+ },
+ {
+ PCI_VENDOR_SMC, PCI_PRODUCT_SMC_37C665,
+ 0,
+ "Standard Microsystems",
+ "FDC 37C665",
+ },
+ {
+ PCI_VENDOR_SMC, PCI_PRODUCT_SMC_37C922,
+ 0,
+ "Standard Microsystems",
+ "FDC 37C922",
+ },
+ {
+ PCI_VENDOR_SMC, PCI_PRODUCT_SMC_83C170,
+ 0,
+ "Standard Microsystems",
+ "83C170 (\"EPIC/100\") Fast Ethernet",
+ },
+ {
+ PCI_VENDOR_SMC, PCI_PRODUCT_SMC_83C175,
+ 0,
+ "Standard Microsystems",
+ "83C175 (\"EPIC/100\") Fast Ethernet",
+ },
+ {
+ PCI_VENDOR_SOLIDUM, PCI_PRODUCT_SOLIDUM_AMD971,
+ 0,
+ "Solidum Systems Corp.",
+ "SNP8023: AMD 971",
+ },
+ {
+ PCI_VENDOR_SOLIDUM, PCI_PRODUCT_SOLIDUM_CLASS802,
+ 0,
+ "Solidum Systems Corp.",
+ "SNP8023: Classifier Engine",
+ },
+ {
+ PCI_VENDOR_SONY, PCI_PRODUCT_SONY_CXD1947A,
+ 0,
+ "Sony",
+ "CXD1947A IEEE 1394 Host Controller",
+ },
+ {
+ PCI_VENDOR_SONY, PCI_PRODUCT_SONY_CXD32222,
+ 0,
+ "Sony",
+ "CXD3222 OHCI IEEE 1394 Host Controller",
+ },
+ {
+ PCI_VENDOR_SONY, PCI_PRODUCT_SONY_MEMSTICK,
+ 0,
+ "Sony",
+ "Memory Stick I/F Controller",
+ },
+ {
+ PCI_VENDOR_SUN, PCI_PRODUCT_SUN_EBUS,
+ 0,
+ "Sun Microsystems",
+ "PCIO Ebus2",
+ },
+ {
+ PCI_VENDOR_SUN, PCI_PRODUCT_SUN_HMENETWORK,
+ 0,
+ "Sun Microsystems",
+ "PCIO Happy Meal Ethernet",
+ },
+ {
+ PCI_VENDOR_SUN, PCI_PRODUCT_SUN_SIMBA,
+ 0,
+ "Sun Microsystems",
+ "Simba PCI bridge",
+ },
+ {
+ PCI_VENDOR_SUN, PCI_PRODUCT_SUN_MS_IIep,
+ 0,
+ "Sun Microsystems",
+ "microSPARC IIep PCI",
+ },
+ {
+ PCI_VENDOR_SUN, PCI_PRODUCT_SUN_US_IIi,
+ 0,
+ "Sun Microsystems",
+ "UltraSPARC IIi PCI",
+ },
+ {
+ PCI_VENDOR_SUNDANCETI, PCI_PRODUCT_SUNDANCETI_ST201,
+ 0,
+ "Sundance Technology",
+ "ST201 10/100 Ethernet",
+ },
+ {
+ PCI_VENDOR_SURECOM, PCI_PRODUCT_SURECOM_NE34,
+ 0,
+ "Surecom Technology",
+ "NE-34 Ethernet",
+ },
+ {
+ PCI_VENDOR_SYMPHONY, PCI_PRODUCT_SYMPHONY_82C101,
+ 0,
+ "Symphony Labs",
+ "82C101",
+ },
+ {
+ PCI_VENDOR_SYMPHONY, PCI_PRODUCT_SYMPHONY_82C103,
+ 0,
+ "Symphony Labs",
+ "82C103",
+ },
+ {
+ PCI_VENDOR_SYMPHONY, PCI_PRODUCT_SYMPHONY_82C105,
+ 0,
+ "Symphony Labs",
+ "82C105",
+ },
+ {
+ PCI_VENDOR_SYMPHONY2, PCI_PRODUCT_SYMPHONY2_82C101,
+ 0,
+ "Symphony Labs (2nd PCI Vendor ID)",
+ "82C101",
+ },
+ {
+ PCI_VENDOR_SYMPHONY, PCI_PRODUCT_SYMPHONY_83C553,
+ 0,
+ "Symphony Labs",
+ "83C553 PCI-ISA Bridge",
+ },
+ {
+ PCI_VENDOR_SCHNEIDERKOCH, PCI_PRODUCT_SCHNEIDERKOCH_SKNET_FDDI,
+ 0,
+ "Schneider & Koch",
+ "SK-NET FDDI-xP",
+ },
+ {
+ PCI_VENDOR_TEKRAM, PCI_PRODUCT_TEKRAM_DC290,
+ 0,
+ "Tekram Technology (1st PCI Vendor ID)",
+ "DC-290(M)",
+ },
+ {
+ PCI_VENDOR_TEKRAM2, PCI_PRODUCT_TEKRAM2_DC690C,
+ 0,
+ "Tekram Technology (2nd PCI Vendor ID)",
+ "DC-690C",
+ },
+ {
+ PCI_VENDOR_TI, PCI_PRODUCT_TI_TLAN,
+ 0,
+ "Texas Instruments",
+ "TLAN",
+ },
+ {
+ PCI_VENDOR_TI, PCI_PRODUCT_TI_TVP4020,
+ 0,
+ "Texas Instruments",
+ "TVP4020 Permedia 2",
+ },
+ {
+ PCI_VENDOR_TI, PCI_PRODUCT_TI_TSB12LV21,
+ 0,
+ "Texas Instruments",
+ "TSB12LV21 IEEE 1394 Host Controller",
+ },
+ {
+ PCI_VENDOR_TI, PCI_PRODUCT_TI_TSB12LV22,
+ 0,
+ "Texas Instruments",
+ "TSB12LV22 OHCI IEEE 1394 Host Controller",
+ },
+ {
+ PCI_VENDOR_TI, PCI_PRODUCT_TI_TSB12LV23,
+ 0,
+ "Texas Instruments",
+ "TSB12LV23 OHCI IEEE 1394 Host Controller",
+ },
+ {
+ PCI_VENDOR_TI, PCI_PRODUCT_TI_TSB12LV26,
+ 0,
+ "Texas Instruments",
+ "TSB12LV26 OHCI IEEE 1394 Host Controller",
+ },
+ {
+ PCI_VENDOR_TI, PCI_PRODUCT_TI_PCI1130,
+ 0,
+ "Texas Instruments",
+ "PCI1130 PCI-CardBus Bridge",
+ },
+ {
+ PCI_VENDOR_TI, PCI_PRODUCT_TI_PCI1031,
+ 0,
+ "Texas Instruments",
+ "PCI1031 PCI-PCMCIA Bridge",
+ },
+ {
+ PCI_VENDOR_TI, PCI_PRODUCT_TI_PCI1131,
+ 0,
+ "Texas Instruments",
+ "PCI1131 PCI-CardBus Bridge",
+ },
+ {
+ PCI_VENDOR_TI, PCI_PRODUCT_TI_PCI1250,
+ 0,
+ "Texas Instruments",
+ "PCI1250 PCI-CardBus Bridge",
+ },
+ {
+ PCI_VENDOR_TI, PCI_PRODUCT_TI_PCI1220,
+ 0,
+ "Texas Instruments",
+ "PCI1220 PCI-CardBus Bridge",
+ },
+ {
+ PCI_VENDOR_TI, PCI_PRODUCT_TI_PCI1221,
+ 0,
+ "Texas Instruments",
+ "PCI1221 PCI-CardBus Bridge",
+ },
+ {
+ PCI_VENDOR_TI, PCI_PRODUCT_TI_PCI1450,
+ 0,
+ "Texas Instruments",
+ "PCI1450 PCI-CardBus Bridge",
+ },
+ {
+ PCI_VENDOR_TI, PCI_PRODUCT_TI_PCI1225,
+ 0,
+ "Texas Instruments",
+ "PCI1225 PCI-CardBus Bridge",
+ },
+ {
+ PCI_VENDOR_TI, PCI_PRODUCT_TI_PCI1251,
+ 0,
+ "Texas Instruments",
+ "PCI1251 PCI-CardBus Bridge",
+ },
+ {
+ PCI_VENDOR_TI, PCI_PRODUCT_TI_PCI1211,
+ 0,
+ "Texas Instruments",
+ "PCI1211 PCI-CardBus Bridge",
+ },
+ {
+ PCI_VENDOR_TI, PCI_PRODUCT_TI_PCI1251B,
+ 0,
+ "Texas Instruments",
+ "PCI1251B PCI-CardBus Bridge",
+ },
+ {
+ PCI_VENDOR_TI, PCI_PRODUCT_TI_PCI2030,
+ 0,
+ "Texas Instruments",
+ "PCI2030 PCI-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_TI, PCI_PRODUCT_TI_PCI1420,
+ 0,
+ "Texas Instruments",
+ "PCI1420 PCI-CardBus Bridge",
+ },
+ {
+ PCI_VENDOR_TI, PCI_PRODUCT_TI_PCI1451,
+ 0,
+ "Texas Instruments",
+ "PCI1451 PCI-CardBus Bridge",
+ },
+ {
+ PCI_VENDOR_TOSHIBA, PCI_PRODUCT_TOSHIBA_R4X00,
+ 0,
+ "Toshiba America",
+ "R4x00 Host-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_TOSHIBA, PCI_PRODUCT_TOSHIBA_TC35856F,
+ 0,
+ "Toshiba America",
+ "TC35856F ATM (\"Meteor\")",
+ },
+ {
+ PCI_VENDOR_TOSHIBA2, PCI_PRODUCT_TOSHIBA2_HOST,
+ 0,
+ "Toshiba America Info Systems",
+ "Host Bridge/Controller",
+ },
+ {
+ PCI_VENDOR_TOSHIBA2, PCI_PRODUCT_TOSHIBA2_ISA,
+ 0,
+ "Toshiba America Info Systems",
+ "ISA Bridge",
+ },
+ {
+ PCI_VENDOR_TOSHIBA2, PCI_PRODUCT_TOSHIBA2_ToPIC95,
+ 0,
+ "Toshiba America Info Systems",
+ "ToPIC95 CardBus-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_TOSHIBA2, PCI_PRODUCT_TOSHIBA2_ToPIC95B,
+ 0,
+ "Toshiba America Info Systems",
+ "ToPIC95B CardBus-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_TOSHIBA2, PCI_PRODUCT_TOSHIBA2_ToPIC97,
+ 0,
+ "Toshiba America Info Systems",
+ "ToPIC97 CardBus-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_TOSHIBA2, PCI_PRODUCT_TOSHIBA2_ToPIC100,
+ 0,
+ "Toshiba America Info Systems",
+ "ToPIC100 CardBus-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_TOSHIBA2, PCI_PRODUCT_TOSHIBA2_FIRO,
+ 0,
+ "Toshiba America Info Systems",
+ "Fast Infrared Type O",
+ },
+ {
+ PCI_VENDOR_TRIDENT, PCI_PRODUCT_TRIDENT_CYBERBLADE_I7,
+ 0,
+ "Trident Microsystems",
+ "CyberBlade i7",
+ },
+ {
+ PCI_VENDOR_TRIDENT, PCI_PRODUCT_TRIDENT_TGUI_9320,
+ 0,
+ "Trident Microsystems",
+ "TGUI 9320",
+ },
+ {
+ PCI_VENDOR_TRIDENT, PCI_PRODUCT_TRIDENT_TGUI_9350,
+ 0,
+ "Trident Microsystems",
+ "TGUI 9350",
+ },
+ {
+ PCI_VENDOR_TRIDENT, PCI_PRODUCT_TRIDENT_TGUI_9360,
+ 0,
+ "Trident Microsystems",
+ "TGUI 9360",
+ },
+ {
+ PCI_VENDOR_TRIDENT, PCI_PRODUCT_TRIDENT_CYBER_9397,
+ 0,
+ "Trident Microsystems",
+ "CYBER 9397",
+ },
+ {
+ PCI_VENDOR_TRIDENT, PCI_PRODUCT_TRIDENT_CYBER_9397DVD,
+ 0,
+ "Trident Microsystems",
+ "CYBER 9397DVD",
+ },
+ {
+ PCI_VENDOR_TRIDENT, PCI_PRODUCT_TRIDENT_CYBER_9525,
+ 0,
+ "Trident Microsystems",
+ "CYBER 9525",
+ },
+ {
+ PCI_VENDOR_TRIDENT, PCI_PRODUCT_TRIDENT_TGUI_9420,
+ 0,
+ "Trident Microsystems",
+ "TGUI 9420",
+ },
+ {
+ PCI_VENDOR_TRIDENT, PCI_PRODUCT_TRIDENT_TGUI_9440,
+ 0,
+ "Trident Microsystems",
+ "TGUI 9440",
+ },
+ {
+ PCI_VENDOR_TRIDENT, PCI_PRODUCT_TRIDENT_TGUI_9660,
+ 0,
+ "Trident Microsystems",
+ "TGUI 9660",
+ },
+ {
+ PCI_VENDOR_TRIDENT, PCI_PRODUCT_TRIDENT_TGUI_9680,
+ 0,
+ "Trident Microsystems",
+ "TGUI 9680",
+ },
+ {
+ PCI_VENDOR_TRIDENT, PCI_PRODUCT_TRIDENT_TGUI_9682,
+ 0,
+ "Trident Microsystems",
+ "TGUI 9682",
+ },
+ {
+ PCI_VENDOR_TRIONES, PCI_PRODUCT_TRIONES_HPT366,
+ 0,
+ "Triones Technologies",
+ "HPT366/370 IDE Controller",
+ },
+ {
+ PCI_VENDOR_TRITECH, PCI_PRODUCT_TRITECH_TR25202,
+ 0,
+ "TriTech Microelectronics",
+ "Pyramid3D TR25202",
+ },
+ {
+ PCI_VENDOR_TSENG, PCI_PRODUCT_TSENG_ET4000_W32P_A,
+ 0,
+ "Tseng Labs",
+ "ET4000w32p rev A",
+ },
+ {
+ PCI_VENDOR_TSENG, PCI_PRODUCT_TSENG_ET4000_W32P_B,
+ 0,
+ "Tseng Labs",
+ "ET4000w32p rev B",
+ },
+ {
+ PCI_VENDOR_TSENG, PCI_PRODUCT_TSENG_ET4000_W32P_C,
+ 0,
+ "Tseng Labs",
+ "ET4000w32p rev C",
+ },
+ {
+ PCI_VENDOR_TSENG, PCI_PRODUCT_TSENG_ET4000_W32P_D,
+ 0,
+ "Tseng Labs",
+ "ET4000w32p rev D",
+ },
+ {
+ PCI_VENDOR_TSENG, PCI_PRODUCT_TSENG_ET6000,
+ 0,
+ "Tseng Labs",
+ "ET6000",
+ },
+ {
+ PCI_VENDOR_UMC, PCI_PRODUCT_UMC_UM82C881,
+ 0,
+ "United Microelectronics",
+ "UM82C881 486 Chipset",
+ },
+ {
+ PCI_VENDOR_UMC, PCI_PRODUCT_UMC_UM82C886,
+ 0,
+ "United Microelectronics",
+ "UM82C886 ISA Bridge",
+ },
+ {
+ PCI_VENDOR_UMC, PCI_PRODUCT_UMC_UM8673F,
+ 0,
+ "United Microelectronics",
+ "UM8673F EIDE Controller",
+ },
+ {
+ PCI_VENDOR_UMC, PCI_PRODUCT_UMC_UM8881,
+ 0,
+ "United Microelectronics",
+ "UM8881 HB4 486 PCI Chipset",
+ },
+ {
+ PCI_VENDOR_UMC, PCI_PRODUCT_UMC_UM82C891,
+ 0,
+ "United Microelectronics",
+ "UM82C891",
+ },
+ {
+ PCI_VENDOR_UMC, PCI_PRODUCT_UMC_UM886A,
+ 0,
+ "United Microelectronics",
+ "UM886A",
+ },
+ {
+ PCI_VENDOR_UMC, PCI_PRODUCT_UMC_UM8886BF,
+ 0,
+ "United Microelectronics",
+ "UM8886BF",
+ },
+ {
+ PCI_VENDOR_UMC, PCI_PRODUCT_UMC_UM8710,
+ 0,
+ "United Microelectronics",
+ "UM8710",
+ },
+ {
+ PCI_VENDOR_UMC, PCI_PRODUCT_UMC_UM8886,
+ 0,
+ "United Microelectronics",
+ "UM8886",
+ },
+ {
+ PCI_VENDOR_UMC, PCI_PRODUCT_UMC_UM8881F,
+ 0,
+ "United Microelectronics",
+ "UM8881F PCI-Host bridge",
+ },
+ {
+ PCI_VENDOR_UMC, PCI_PRODUCT_UMC_UM8886F,
+ 0,
+ "United Microelectronics",
+ "UM8886F PCI-ISA bridge",
+ },
+ {
+ PCI_VENDOR_UMC, PCI_PRODUCT_UMC_UM8886A,
+ 0,
+ "United Microelectronics",
+ "UM8886A",
+ },
+ {
+ PCI_VENDOR_UMC, PCI_PRODUCT_UMC_UM8891A,
+ 0,
+ "United Microelectronics",
+ "UM8891A",
+ },
+ {
+ PCI_VENDOR_UMC, PCI_PRODUCT_UMC_UM9017F,
+ 0,
+ "United Microelectronics",
+ "UM9017F",
+ },
+ {
+ PCI_VENDOR_UMC, PCI_PRODUCT_UMC_UM8886N,
+ 0,
+ "United Microelectronics",
+ "UM8886N",
+ },
+ {
+ PCI_VENDOR_UMC, PCI_PRODUCT_UMC_UM8891N,
+ 0,
+ "United Microelectronics",
+ "UM8891N",
+ },
+ {
+ PCI_VENDOR_ULSI, PCI_PRODUCT_ULSI_US201,
+ 0,
+ "ULSI Systems",
+ "US201",
+ },
+ {
+ PCI_VENDOR_USR, PCI_PRODUCT_USR_3CP5609,
+ 0,
+ "US Robotics (3Com)",
+ "3CP5609 PCI 16550 Modem",
+ },
+ {
+ PCI_VENDOR_V3, PCI_PRODUCT_V3_V292PBC,
+ 0,
+ "V3 Semiconductor",
+ "V292PBC AMD290x0 Host-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_V3, PCI_PRODUCT_V3_V960PBC,
+ 0,
+ "V3 Semiconductor",
+ "V960PBC i960 Host-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_V3, PCI_PRODUCT_V3_V96DPC,
+ 0,
+ "V3 Semiconductor",
+ "V96DPC i960 (Dual) Host-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_VIATECH, PCI_PRODUCT_VIATECH_VT8371_HB,
+ 0,
+ "VIA Technologies",
+ "VT8371 (Apollo KX133) Host Bridge",
+ },
+ {
+ PCI_VENDOR_VIATECH, PCI_PRODUCT_VIATECH_VT8501_MVP4,
+ 0,
+ "VIA Technologies",
+ "VT8501 MVP4 System Controller",
+ },
+ {
+ PCI_VENDOR_VIATECH, PCI_PRODUCT_VIATECH_VT82C505,
+ 0,
+ "VIA Technologies",
+ "VT82C505 (Pluto)",
+ },
+ {
+ PCI_VENDOR_VIATECH, PCI_PRODUCT_VIATECH_VT82C561,
+ 0,
+ "VIA Technologies",
+ "VT82C561",
+ },
+ {
+ PCI_VENDOR_VIATECH, PCI_PRODUCT_VIATECH_VT82C586A_IDE,
+ 0,
+ "VIA Technologies",
+ "VT82C586A IDE Controller",
+ },
+ {
+ PCI_VENDOR_VIATECH, PCI_PRODUCT_VIATECH_VT82C576,
+ 0,
+ "VIA Technologies",
+ "VT82C576 3V",
+ },
+ {
+ PCI_VENDOR_VIATECH, PCI_PRODUCT_VIATECH_VT82C580VP,
+ 0,
+ "VIA Technologies",
+ "VT82C580 (Apollo VP) Host-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_VIATECH, PCI_PRODUCT_VIATECH_VT82C586_ISA,
+ 0,
+ "VIA Technologies",
+ "VT82C586 (Apollo VP) PCI-ISA Bridge",
+ },
+ {
+ PCI_VENDOR_VIATECH, PCI_PRODUCT_VIATECH_VT82C595,
+ 0,
+ "VIA Technologies",
+ "VT82C595 (Apollo VP2) Host-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_VIATECH, PCI_PRODUCT_VIATECH_VT82C596A,
+ 0,
+ "VIA Technologies",
+ "VT82C596A (Apollo Pro) PCI-ISA Bridge",
+ },
+ {
+ PCI_VENDOR_VIATECH, PCI_PRODUCT_VIATECH_VT82C597,
+ 0,
+ "VIA Technologies",
+ "VT82C597 (Apollo VP3) Host-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_VIATECH, PCI_PRODUCT_VIATECH_VT82C598PCI,
+ 0,
+ "VIA Technologies",
+ "VT82C598 (Apollo MVP3) Host-PCI",
+ },
+ {
+ PCI_VENDOR_VIATECH, PCI_PRODUCT_VIATECH_VT82C686A_ISA,
+ 0,
+ "VIA Technologies",
+ "VT82C686A (Apollo KX133) PCI-ISA Bridge",
+ },
+ {
+ PCI_VENDOR_VIATECH, PCI_PRODUCT_VIATECH_VT82C691,
+ 0,
+ "VIA Technologies",
+ "VT82C691 (Apollo Pro) Host-PCI",
+ },
+ {
+ PCI_VENDOR_VIATECH, PCI_PRODUCT_VIATECH_VT82C693,
+ 0,
+ "VIA Technologies",
+ "VT82C693 (Apollo Pro Plus) Host-PCI",
+ },
+ {
+ PCI_VENDOR_VIATECH, PCI_PRODUCT_VIATECH_VT86C926,
+ 0,
+ "VIA Technologies",
+ "VT86C926 Amazon PCI-Ethernet Controller",
+ },
+ {
+ PCI_VENDOR_VIATECH, PCI_PRODUCT_VIATECH_VT82C570M,
+ 0,
+ "VIA Technologies",
+ "VT82C570M (Apollo) Host-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_VIATECH, PCI_PRODUCT_VIATECH_VT82C570MV,
+ 0,
+ "VIA Technologies",
+ "VT82C570M (Apollo) PCI-ISA Bridge",
+ },
+ {
+ PCI_VENDOR_VIATECH, PCI_PRODUCT_VIATECH_VT82C586_IDE,
+ 0,
+ "VIA Technologies",
+ "VT82C586 (Apollo VP) IDE Controller",
+ },
+ {
+ PCI_VENDOR_VIATECH, PCI_PRODUCT_VIATECH_VT82C595_2,
+ 0,
+ "VIA Technologies",
+ "VT82C595 (Apollo VP2) Host-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_VIATECH, PCI_PRODUCT_VIATECH_VT83C572,
+ 0,
+ "VIA Technologies",
+ "VT83C572 USB Controller",
+ },
+ {
+ PCI_VENDOR_VIATECH, PCI_PRODUCT_VIATECH_VT82C586_PWR,
+ 0,
+ "VIA Technologies",
+ "VT82C586 (Apollo VP) Power Management Controller",
+ },
+ {
+ PCI_VENDOR_VIATECH, PCI_PRODUCT_VIATECH_VT3043,
+ 0,
+ "VIA Technologies",
+ "VT3043 (Rhine) 10/100 Ethernet",
+ },
+ {
+ PCI_VENDOR_VIATECH, PCI_PRODUCT_VIATECH_VT82C686A_SMB,
+ 0,
+ "VIA Technologies",
+ "VT82C686A SMBus Controller",
+ },
+ {
+ PCI_VENDOR_VIATECH, PCI_PRODUCT_VIATECH_VT82C686A_AC97,
+ 0,
+ "VIA Technologies",
+ "VT82C686A AC-97 Audio Controller",
+ },
+ {
+ PCI_VENDOR_VIATECH, PCI_PRODUCT_VIATECH_VT82C686A_MC97,
+ 0,
+ "VIA Technologies",
+ "VT82C686A MC-97 Modem Controller",
+ },
+ {
+ PCI_VENDOR_VIATECH, PCI_PRODUCT_VIATECH_VT86C100A,
+ 0,
+ "VIA Technologies",
+ "VT86C100A (Rhine-II) 10/100 Ethernet",
+ },
+ {
+ PCI_VENDOR_VIATECH, PCI_PRODUCT_VIATECH_VT8371_PPB,
+ 0,
+ "VIA Technologies",
+ "VT8371 (Apollo KX133) PCI-PCI Bridge",
+ },
+ {
+ PCI_VENDOR_VIATECH, PCI_PRODUCT_VIATECH_VT8501AGP,
+ 0,
+ "VIA Technologies",
+ "VT8501 PCI-AGP",
+ },
+ {
+ PCI_VENDOR_VIATECH, PCI_PRODUCT_VIATECH_VT82C597AGP,
+ 0,
+ "VIA Technologies",
+ "VT82C597 (Apollo VP3) PCI-AGP",
+ },
+ {
+ PCI_VENDOR_VIATECH, PCI_PRODUCT_VIATECH_VT82C598AGP,
+ 0,
+ "VIA Technologies",
+ "VT82C598 (Apollo MVP3) PCI-AGP",
+ },
+ {
+ PCI_VENDOR_VORTEX, PCI_PRODUCT_VORTEX_GDT_60x0,
+ 0,
+ "Vortex Computer Systems",
+ "GDT6000/6020/6050",
+ },
+ {
+ PCI_VENDOR_VORTEX, PCI_PRODUCT_VORTEX_GDT_6000B,
+ 0,
+ "Vortex Computer Systems",
+ "GDT6000B/6010",
+ },
+ {
+ PCI_VENDOR_VORTEX, PCI_PRODUCT_VORTEX_GDT_6x10,
+ 0,
+ "Vortex Computer Systems",
+ "GDT6110/6510",
+ },
+ {
+ PCI_VENDOR_VORTEX, PCI_PRODUCT_VORTEX_GDT_6x20,
+ 0,
+ "Vortex Computer Systems",
+ "GDT6120/6520",
+ },
+ {
+ PCI_VENDOR_VORTEX, PCI_PRODUCT_VORTEX_GDT_6530,
+ 0,
+ "Vortex Computer Systems",
+ "GDT6530",
+ },
+ {
+ PCI_VENDOR_VORTEX, PCI_PRODUCT_VORTEX_GDT_6550,
+ 0,
+ "Vortex Computer Systems",
+ "GDT6550",
+ },
+ {
+ PCI_VENDOR_VORTEX, PCI_PRODUCT_VORTEX_GDT_6x17,
+ 0,
+ "Vortex Computer Systems",
+ "GDT6117/6517",
+ },
+ {
+ PCI_VENDOR_VORTEX, PCI_PRODUCT_VORTEX_GDT_6x27,
+ 0,
+ "Vortex Computer Systems",
+ "GDT6127/6527",
+ },
+ {
+ PCI_VENDOR_VORTEX, PCI_PRODUCT_VORTEX_GDT_6537,
+ 0,
+ "Vortex Computer Systems",
+ "GDT6537",
+ },
+ {
+ PCI_VENDOR_VORTEX, PCI_PRODUCT_VORTEX_GDT_6557,
+ 0,
+ "Vortex Computer Systems",
+ "GDT6557/6557-ECC",
+ },
+ {
+ PCI_VENDOR_VORTEX, PCI_PRODUCT_VORTEX_GDT_6x15,
+ 0,
+ "Vortex Computer Systems",
+ "GDT6115/6515",
+ },
+ {
+ PCI_VENDOR_VORTEX, PCI_PRODUCT_VORTEX_GDT_6x25,
+ 0,
+ "Vortex Computer Systems",
+ "GDT6125/6525",
+ },
+ {
+ PCI_VENDOR_VORTEX, PCI_PRODUCT_VORTEX_GDT_6535,
+ 0,
+ "Vortex Computer Systems",
+ "GDT6535",
+ },
+ {
+ PCI_VENDOR_VORTEX, PCI_PRODUCT_VORTEX_GDT_6555,
+ 0,
+ "Vortex Computer Systems",
+ "GDT6555/6555-ECC",
+ },
+ {
+ PCI_VENDOR_VORTEX, PCI_PRODUCT_VORTEX_GDT_6x17RP,
+ 0,
+ "Vortex Computer Systems",
+ "GDT6117RP/GDT6517RP",
+ },
+ {
+ PCI_VENDOR_VORTEX, PCI_PRODUCT_VORTEX_GDT_6x27RP,
+ 0,
+ "Vortex Computer Systems",
+ "GDT6127RP/GDT6527RP",
+ },
+ {
+ PCI_VENDOR_VORTEX, PCI_PRODUCT_VORTEX_GDT_6537RP,
+ 0,
+ "Vortex Computer Systems",
+ "GDT6537RP",
+ },
+ {
+ PCI_VENDOR_VORTEX, PCI_PRODUCT_VORTEX_GDT_6557RP,
+ 0,
+ "Vortex Computer Systems",
+ "GDT6557RP",
+ },
+ {
+ PCI_VENDOR_VORTEX, PCI_PRODUCT_VORTEX_GDT_6x11RP,
+ 0,
+ "Vortex Computer Systems",
+ "GDT6111RP/GDT6511RP",
+ },
+ {
+ PCI_VENDOR_VORTEX, PCI_PRODUCT_VORTEX_GDT_6x21RP,
+ 0,
+ "Vortex Computer Systems",
+ "GDT6121RP/GDT6521RP",
+ },
+ {
+ PCI_VENDOR_VORTEX, PCI_PRODUCT_VORTEX_GDT_6x17RD,
+ 0,
+ "Vortex Computer Systems",
+ "GDT6117RD/GDT6517RD",
+ },
+ {
+ PCI_VENDOR_VORTEX, PCI_PRODUCT_VORTEX_GDT_6x27RD,
+ 0,
+ "Vortex Computer Systems",
+ "GDT6127RD/GDT6527RD",
+ },
+ {
+ PCI_VENDOR_VORTEX, PCI_PRODUCT_VORTEX_GDT_6537RD,
+ 0,
+ "Vortex Computer Systems",
+ "GDT6537RD",
+ },
+ {
+ PCI_VENDOR_VORTEX, PCI_PRODUCT_VORTEX_GDT_6557RD,
+ 0,
+ "Vortex Computer Systems",
+ "GDT6557RD",
+ },
+ {
+ PCI_VENDOR_VORTEX, PCI_PRODUCT_VORTEX_GDT_6x11RD,
+ 0,
+ "Vortex Computer Systems",
+ "GDT6111RD/GDT6511RD",
+ },
+ {
+ PCI_VENDOR_VORTEX, PCI_PRODUCT_VORTEX_GDT_6x21RD,
+ 0,
+ "Vortex Computer Systems",
+ "GDT6121RD/GDT6521RD",
+ },
+ {
+ PCI_VENDOR_VORTEX, PCI_PRODUCT_VORTEX_GDT_6x18RD,
+ 0,
+ "Vortex Computer Systems",
+ "GDT6118RD/GDT6518RD/GDT6618RD",
+ },
+ {
+ PCI_VENDOR_VORTEX, PCI_PRODUCT_VORTEX_GDT_6x28RD,
+ 0,
+ "Vortex Computer Systems",
+ "GDT6128RD/GDT6528RD/GDT6628RD",
+ },
+ {
+ PCI_VENDOR_VORTEX, PCI_PRODUCT_VORTEX_GDT_6x38RD,
+ 0,
+ "Vortex Computer Systems",
+ "GDT6538RD/GDT6638RD",
+ },
+ {
+ PCI_VENDOR_VORTEX, PCI_PRODUCT_VORTEX_GDT_6x58RD,
+ 0,
+ "Vortex Computer Systems",
+ "GDT6558RD/GDT6658RD",
+ },
+ {
+ PCI_VENDOR_VORTEX, PCI_PRODUCT_VORTEX_GDT_7x18RN,
+ 0,
+ "Vortex Computer Systems",
+ "GDT7118RN/GDT7518RN/GDT7618RN",
+ },
+ {
+ PCI_VENDOR_VORTEX, PCI_PRODUCT_VORTEX_GDT_7x28RN,
+ 0,
+ "Vortex Computer Systems",
+ "GDT7128RN/GDT7528RN/GDT7628RN",
+ },
+ {
+ PCI_VENDOR_VORTEX, PCI_PRODUCT_VORTEX_GDT_7x38RN,
+ 0,
+ "Vortex Computer Systems",
+ "GDT7538RN/GDT7638RN",
+ },
+ {
+ PCI_VENDOR_VORTEX, PCI_PRODUCT_VORTEX_GDT_7x58RN,
+ 0,
+ "Vortex Computer Systems",
+ "GDT7558RN/GDT7658RN",
+ },
+ {
+ PCI_VENDOR_VORTEX, PCI_PRODUCT_VORTEX_GDT_6x19RD,
+ 0,
+ "Vortex Computer Systems",
+ "GDT6519RD/GDT6619RD",
+ },
+ {
+ PCI_VENDOR_VORTEX, PCI_PRODUCT_VORTEX_GDT_6x29RD,
+ 0,
+ "Vortex Computer Systems",
+ "GDT6529RD/GDT6629RD",
+ },
+ {
+ PCI_VENDOR_VORTEX, PCI_PRODUCT_VORTEX_GDT_7x19RN,
+ 0,
+ "Vortex Computer Systems",
+ "GDT7519RN/GDT7619RN",
+ },
+ {
+ PCI_VENDOR_VORTEX, PCI_PRODUCT_VORTEX_GDT_7x29RN,
+ 0,
+ "Vortex Computer Systems",
+ "GDT7529RN/GDT7629RN",
+ },
+ {
+ PCI_VENDOR_VLSI, PCI_PRODUCT_VLSI_82C592,
+ 0,
+ "VLSI Technology",
+ "82C592 CPU Bridge",
+ },
+ {
+ PCI_VENDOR_VLSI, PCI_PRODUCT_VLSI_82C593,
+ 0,
+ "VLSI Technology",
+ "82C593 ISA Bridge",
+ },
+ {
+ PCI_VENDOR_VLSI, PCI_PRODUCT_VLSI_82C594,
+ 0,
+ "VLSI Technology",
+ "82C594 Wildcat System Controller",
+ },
+ {
+ PCI_VENDOR_VLSI, PCI_PRODUCT_VLSI_82C596597,
+ 0,
+ "VLSI Technology",
+ "82C596/597 Wildcat ISA Bridge",
+ },
+ {
+ PCI_VENDOR_VLSI, PCI_PRODUCT_VLSI_82C541,
+ 0,
+ "VLSI Technology",
+ "82C541",
+ },
+ {
+ PCI_VENDOR_VLSI, PCI_PRODUCT_VLSI_82C543,
+ 0,
+ "VLSI Technology",
+ "82C543",
+ },
+ {
+ PCI_VENDOR_VLSI, PCI_PRODUCT_VLSI_82C532,
+ 0,
+ "VLSI Technology",
+ "82C532",
+ },
+ {
+ PCI_VENDOR_VLSI, PCI_PRODUCT_VLSI_82C534,
+ 0,
+ "VLSI Technology",
+ "82C534",
+ },
+ {
+ PCI_VENDOR_VLSI, PCI_PRODUCT_VLSI_82C535,
+ 0,
+ "VLSI Technology",
+ "82C535",
+ },
+ {
+ PCI_VENDOR_VLSI, PCI_PRODUCT_VLSI_82C147,
+ 0,
+ "VLSI Technology",
+ "82C147",
+ },
+ {
+ PCI_VENDOR_VLSI, PCI_PRODUCT_VLSI_82C975,
+ 0,
+ "VLSI Technology",
+ "82C975",
+ },
+ {
+ PCI_VENDOR_VLSI, PCI_PRODUCT_VLSI_82C925,
+ 0,
+ "VLSI Technology",
+ "82C925",
+ },
+ {
+ PCI_VENDOR_WEITEK, PCI_PRODUCT_WEITEK_P9000,
+ 0,
+ "Weitek",
+ "P9000",
+ },
+ {
+ PCI_VENDOR_WEITEK, PCI_PRODUCT_WEITEK_P9100,
+ 0,
+ "Weitek",
+ "P9100",
+ },
+ {
+ PCI_VENDOR_WD, PCI_PRODUCT_WD_WD33C193A,
+ 0,
+ "Western Digital",
+ "WD33C193A",
+ },
+ {
+ PCI_VENDOR_WD, PCI_PRODUCT_WD_WD33C196A,
+ 0,
+ "Western Digital",
+ "WD33C196A",
+ },
+ {
+ PCI_VENDOR_WD, PCI_PRODUCT_WD_WD33C197A,
+ 0,
+ "Western Digital",
+ "WD33C197A",
+ },
+ {
+ PCI_VENDOR_WD, PCI_PRODUCT_WD_WD7193,
+ 0,
+ "Western Digital",
+ "WD7193",
+ },
+ {
+ PCI_VENDOR_WD, PCI_PRODUCT_WD_WD7197,
+ 0,
+ "Western Digital",
+ "WD7197",
+ },
+ {
+ PCI_VENDOR_WD, PCI_PRODUCT_WD_WD33C296A,
+ 0,
+ "Western Digital",
+ "WD33C296A",
+ },
+ {
+ PCI_VENDOR_WD, PCI_PRODUCT_WD_WD34C296,
+ 0,
+ "Western Digital",
+ "WD34C296",
+ },
+ {
+ PCI_VENDOR_WD, PCI_PRODUCT_WD_90C,
+ 0,
+ "Western Digital",
+ "90C",
+ },
+ {
+ PCI_VENDOR_WINBOND, PCI_PRODUCT_WINBOND_W83769F,
+ 0,
+ "Winbond Electronics",
+ "W83769F",
+ },
+ {
+ PCI_VENDOR_WINBOND, PCI_PRODUCT_WINBOND_W89C840F,
+ 0,
+ "Winbond Electronics",
+ "W89C840F 10/100 Ethernet",
+ },
+ {
+ PCI_VENDOR_WINBOND, PCI_PRODUCT_WINBOND_W89C940F,
+ 0,
+ "Winbond Electronics",
+ "W89C940F Ethernet",
+ },
+ {
+ PCI_VENDOR_WINBOND, PCI_PRODUCT_WINBOND_W89C940F_1,
+ 0,
+ "Winbond Electronics",
+ "W89C940F Ethernet",
+ },
+ {
+ PCI_VENDOR_XIRCOM, PCI_PRODUCT_XIRCOM_X3201_3,
+ 0,
+ "Xircom",
+ "X3201-3 Fast Ethernet Controller",
+ },
+ {
+ PCI_VENDOR_XIRCOM, PCI_PRODUCT_XIRCOM_X3201_3_21143,
+ 0,
+ "Xircom",
+ "X3201-3 Fast Ethernet Controller (21143)",
+ },
+ {
+ PCI_VENDOR_YAMAHA, PCI_PRODUCT_YAMAHA_YMF724,
+ 0,
+ "Yamaha",
+ "724 Audio",
+ },
+ {
+ PCI_VENDOR_YAMAHA, PCI_PRODUCT_YAMAHA_YMF740,
+ 0,
+ "Yamaha",
+ "740 Audio",
+ },
+ {
+ PCI_VENDOR_YAMAHA, PCI_PRODUCT_YAMAHA_YMF740C,
+ 0,
+ "Yamaha",
+ "740C (DS-1) Audio",
+ },
+ {
+ PCI_VENDOR_YAMAHA, PCI_PRODUCT_YAMAHA_YMF724F,
+ 0,
+ "Yamaha",
+ "724F (DS-1) Audio",
+ },
+ {
+ PCI_VENDOR_YAMAHA, PCI_PRODUCT_YAMAHA_YMF744B,
+ 0,
+ "Yamaha",
+ "744 (DS-1S) Audio",
+ },
+ {
+ PCI_VENDOR_YAMAHA, PCI_PRODUCT_YAMAHA_YMF754,
+ 0,
+ "Yamaha",
+ "754 (DS-1E) Audio",
+ },
+ {
+ PCI_VENDOR_ZEINET, PCI_PRODUCT_ZEINET_1221,
+ 0,
+ "Zeinet",
+ "1221",
+ },
+ {
+ PCI_VENDOR_ZIATECH, PCI_PRODUCT_ZIATECH_ZT8905,
+ 0,
+ "Ziatech",
+ "PCI-ST32 Bridge",
+ },
+ {
+ PCI_VENDOR_ZORAN, PCI_PRODUCT_ZORAN_ZR36120,
+ 0,
+ "Zoran Corporation",
+ "Video Controller",
+ },
+ {
+ PCI_VENDOR_COMPAQ, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Compaq",
+ NULL,
+ },
+ {
+ PCI_VENDOR_SYMBIOS, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Symbios Logic",
+ NULL,
+ },
+ {
+ PCI_VENDOR_ATI, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "ATI Technologies",
+ NULL,
+ },
+ {
+ PCI_VENDOR_ULSI, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "ULSI Systems",
+ NULL,
+ },
+ {
+ PCI_VENDOR_VLSI, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "VLSI Technology",
+ NULL,
+ },
+ {
+ PCI_VENDOR_AVANCE, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Avance Logic",
+ NULL,
+ },
+ {
+ PCI_VENDOR_NS, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "National Semiconductor",
+ NULL,
+ },
+ {
+ PCI_VENDOR_TSENG, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Tseng Labs",
+ NULL,
+ },
+ {
+ PCI_VENDOR_WEITEK, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Weitek",
+ NULL,
+ },
+ {
+ PCI_VENDOR_DEC, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Digital Equipment",
+ NULL,
+ },
+ {
+ PCI_VENDOR_CIRRUS, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Cirrus Logic",
+ NULL,
+ },
+ {
+ PCI_VENDOR_IBM, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "IBM",
+ NULL,
+ },
+ {
+ PCI_VENDOR_WD, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Western Digital",
+ NULL,
+ },
+ {
+ PCI_VENDOR_AMD, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Advanced Micro Devices",
+ NULL,
+ },
+ {
+ PCI_VENDOR_TRIDENT, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Trident Microsystems",
+ NULL,
+ },
+ {
+ PCI_VENDOR_ACER, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Acer",
+ NULL,
+ },
+ {
+ PCI_VENDOR_MATROX, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Matrox",
+ NULL,
+ },
+ {
+ PCI_VENDOR_CHIPS, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Chips and Technologies",
+ NULL,
+ },
+ {
+ PCI_VENDOR_TOSHIBA, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Toshiba America",
+ NULL,
+ },
+ {
+ PCI_VENDOR_NEC, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "NEC",
+ NULL,
+ },
+ {
+ PCI_VENDOR_FUTUREDOMAIN, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Future Domain",
+ NULL,
+ },
+ {
+ PCI_VENDOR_SIS, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Silicon Integrated System",
+ NULL,
+ },
+ {
+ PCI_VENDOR_HP, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Hewlett-Packard",
+ NULL,
+ },
+ {
+ PCI_VENDOR_PCTECH, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "PC Technology",
+ NULL,
+ },
+ {
+ PCI_VENDOR_DPT, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Distributed Processing Technology",
+ NULL,
+ },
+ {
+ PCI_VENDOR_OPTI, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Opti",
+ NULL,
+ },
+ {
+ PCI_VENDOR_ELSA, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Elsa",
+ NULL,
+ },
+ {
+ PCI_VENDOR_SGSTHOMSON, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "SGS Thomson Microelectric",
+ NULL,
+ },
+ {
+ PCI_VENDOR_BUSLOGIC, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "BusLogic",
+ NULL,
+ },
+ {
+ PCI_VENDOR_TI, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Texas Instruments",
+ NULL,
+ },
+ {
+ PCI_VENDOR_SONY, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Sony",
+ NULL,
+ },
+ {
+ PCI_VENDOR_OAKTECH, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Oak Technology",
+ NULL,
+ },
+ {
+ PCI_VENDOR_WINBOND, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Winbond Electronics",
+ NULL,
+ },
+ {
+ PCI_VENDOR_MOT, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Motorola",
+ NULL,
+ },
+ {
+ PCI_VENDOR_PROMISE, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Promise Technology",
+ NULL,
+ },
+ {
+ PCI_VENDOR_NUMBER9, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Number 9 Computer Company",
+ NULL,
+ },
+ {
+ PCI_VENDOR_UMC, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "United Microelectronics",
+ NULL,
+ },
+ {
+ PCI_VENDOR_ITT, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "I. T. T.",
+ NULL,
+ },
+ {
+ PCI_VENDOR_MYLEX, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Mylex",
+ NULL,
+ },
+ {
+ PCI_VENDOR_APPLE, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Apple Computer",
+ NULL,
+ },
+ {
+ PCI_VENDOR_YAMAHA, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Yamaha",
+ NULL,
+ },
+ {
+ PCI_VENDOR_NEXGEN, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "NexGen Microsystems",
+ NULL,
+ },
+ {
+ PCI_VENDOR_QLOGIC, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Q Logic",
+ NULL,
+ },
+ {
+ PCI_VENDOR_LEADTEK, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "LeadTek Research",
+ NULL,
+ },
+ {
+ PCI_VENDOR_CONTAQ, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Contaq Microsystems",
+ NULL,
+ },
+ {
+ PCI_VENDOR_BIT3, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Bit3 Computer Corp.",
+ NULL,
+ },
+ {
+ PCI_VENDOR_OLICOM, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Olicom",
+ NULL,
+ },
+ {
+ PCI_VENDOR_SUN, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Sun Microsystems",
+ NULL,
+ },
+ {
+ PCI_VENDOR_INTERGRAPH, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Intergraph",
+ NULL,
+ },
+ {
+ PCI_VENDOR_DIAMOND, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Diamond Computer Systems",
+ NULL,
+ },
+ {
+ PCI_VENDOR_CMDTECH, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "CMD Technology",
+ NULL,
+ },
+ {
+ PCI_VENDOR_QUANTUMDESIGNS, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Quantum Designs",
+ NULL,
+ },
+ {
+ PCI_VENDOR_BROOKTREE, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Brooktree",
+ NULL,
+ },
+ {
+ PCI_VENDOR_SGI, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Silicon Graphics",
+ NULL,
+ },
+ {
+ PCI_VENDOR_ACC, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "ACC Microelectronics",
+ NULL,
+ },
+ {
+ PCI_VENDOR_SYMPHONY, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Symphony Labs",
+ NULL,
+ },
+ {
+ PCI_VENDOR_PLX, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "PLX Technology",
+ NULL,
+ },
+ {
+ PCI_VENDOR_MADGE, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Madge Networks",
+ NULL,
+ },
+ {
+ PCI_VENDOR_3COM, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "3Com",
+ NULL,
+ },
+ {
+ PCI_VENDOR_SMC, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Standard Microsystems",
+ NULL,
+ },
+ {
+ PCI_VENDOR_ALI, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Acer Labs",
+ NULL,
+ },
+ {
+ PCI_VENDOR_SURECOM, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Surecom Technology",
+ NULL,
+ },
+ {
+ PCI_VENDOR_SAMSUNGSEMI, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Samsung Semiconductors",
+ NULL,
+ },
+ {
+ PCI_VENDOR_NEOMAGIC, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Neomagic",
+ NULL,
+ },
+ {
+ PCI_VENDOR_ADVSYS, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Advanced System Products",
+ NULL,
+ },
+ {
+ PCI_VENDOR_MACRONIX, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Macronix",
+ NULL,
+ },
+ {
+ PCI_VENDOR_ES, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Evans & Sutherland",
+ NULL,
+ },
+ {
+ PCI_VENDOR_NVIDIA, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Nvidia Corporation",
+ NULL,
+ },
+ {
+ PCI_VENDOR_EMULEX, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Emulex",
+ NULL,
+ },
+ {
+ PCI_VENDOR_IMS, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Integrated Micro Solutions",
+ NULL,
+ },
+ {
+ PCI_VENDOR_TEKRAM, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Tekram Technology (1st PCI Vendor ID)",
+ NULL,
+ },
+ {
+ PCI_VENDOR_NEWBRIDGE, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Newbridge Microsystems / Tundra Semiconductor",
+ NULL,
+ },
+ {
+ PCI_VENDOR_AMCIRCUITS, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Applied Micro Circuits",
+ NULL,
+ },
+ {
+ PCI_VENDOR_REALTEK, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Realtek Semiconductor",
+ NULL,
+ },
+ {
+ PCI_VENDOR_NKK, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "NKK Corporation",
+ NULL,
+ },
+ {
+ PCI_VENDOR_INITIO, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Initio",
+ NULL,
+ },
+ {
+ PCI_VENDOR_CREATIVELABS, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Creative Labs",
+ NULL,
+ },
+ {
+ PCI_VENDOR_TRIONES, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Triones Technologies",
+ NULL,
+ },
+ {
+ PCI_VENDOR_SIGMA, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Sigma Designs",
+ NULL,
+ },
+ {
+ PCI_VENDOR_VIATECH, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "VIA Technologies",
+ NULL,
+ },
+ {
+ PCI_VENDOR_COGENT, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Cogent Data Technologies",
+ NULL,
+ },
+ {
+ PCI_VENDOR_RNS, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "RNS",
+ NULL,
+ },
+ {
+ PCI_VENDOR_ACCTON, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Accton Technology",
+ NULL,
+ },
+ {
+ PCI_VENDOR_VORTEX, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Vortex Computer Systems",
+ NULL,
+ },
+ {
+ PCI_VENDOR_EFFICIENTNETS, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Efficent Networks",
+ NULL,
+ },
+ {
+ PCI_VENDOR_IDT, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "IDT",
+ NULL,
+ },
+ {
+ PCI_VENDOR_FORE, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "FORE Systems",
+ NULL,
+ },
+ {
+ PCI_VENDOR_ZIATECH, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Ziatech",
+ NULL,
+ },
+ {
+ PCI_VENDOR_ALLIANCE, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Alliance Semiconductor",
+ NULL,
+ },
+ {
+ PCI_VENDOR_SCHNEIDERKOCH, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Schneider & Koch",
+ NULL,
+ },
+ {
+ PCI_VENDOR_MUTECH, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Mutech",
+ NULL,
+ },
+ {
+ PCI_VENDOR_XIRCOM, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Xircom",
+ NULL,
+ },
+ {
+ PCI_VENDOR_ALTERA, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Altera Corporation",
+ NULL,
+ },
+ {
+ PCI_VENDOR_TOSHIBA2, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Toshiba America Info Systems",
+ NULL,
+ },
+ {
+ PCI_VENDOR_RICOH, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Ricoh",
+ NULL,
+ },
+ {
+ PCI_VENDOR_DLINK, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "D-Link Systems",
+ NULL,
+ },
+ {
+ PCI_VENDOR_COROLLARY, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Corrollary",
+ NULL,
+ },
+ {
+ PCI_VENDOR_ACARD, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Acard",
+ NULL,
+ },
+ {
+ PCI_VENDOR_ZEINET, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Zeinet",
+ NULL,
+ },
+ {
+ PCI_VENDOR_GALILEO, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Galileo Technology",
+ NULL,
+ },
+ {
+ PCI_VENDOR_LITEON, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Lite-On Communications",
+ NULL,
+ },
+ {
+ PCI_VENDOR_V3, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "V3 Semiconductor",
+ NULL,
+ },
+ {
+ PCI_VENDOR_LUCENT, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "AT&T Microelectronics",
+ NULL,
+ },
+ {
+ PCI_VENDOR_DOLPHIN, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Dolphin Interconnect Solutions",
+ NULL,
+ },
+ {
+ PCI_VENDOR_AURAVISION, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Auravision",
+ NULL,
+ },
+ {
+ PCI_VENDOR_ZORAN, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Zoran Corporation",
+ NULL,
+ },
+ {
+ PCI_VENDOR_COMPEX, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Compex",
+ NULL,
+ },
+ {
+ PCI_VENDOR_PMCSIERRA, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "PMC-Sierra",
+ NULL,
+ },
+ {
+ PCI_VENDOR_CYCLADES, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Cyclades",
+ NULL,
+ },
+ {
+ PCI_VENDOR_ESSENTIAL, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Essential Communications",
+ NULL,
+ },
+ {
+ PCI_VENDOR_O2MICRO, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "O2 Micro Inc",
+ NULL,
+ },
+ {
+ PCI_VENDOR_3DFX, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "3Dfx Interactive",
+ NULL,
+ },
+ {
+ PCI_VENDOR_CCUBE, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "C-Cube Microsystems",
+ NULL,
+ },
+ {
+ PCI_VENDOR_AVM, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "AVM",
+ NULL,
+ },
+ {
+ PCI_VENDOR_LINEARSYS, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Linear Systems",
+ NULL,
+ },
+ {
+ PCI_VENDOR_ASIX, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "ASIX Electronics",
+ NULL,
+ },
+ {
+ PCI_VENDOR_ESSTECH, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "ESS Technology Inc",
+ NULL,
+ },
+ {
+ PCI_VENDOR_SILMOTION, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Silicon Motion",
+ NULL,
+ },
+ {
+ PCI_VENDOR_ENSONIQ, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Ensoniq",
+ NULL,
+ },
+ {
+ PCI_VENDOR_DAVICOM, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Davicom Semiconductor",
+ NULL,
+ },
+ {
+ PCI_VENDOR_ESSTECH2, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "ESS Technology Inc",
+ NULL,
+ },
+ {
+ PCI_VENDOR_TRITECH, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "TriTech Microelectronics",
+ NULL,
+ },
+ {
+ PCI_VENDOR_ALTEON, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Alteon",
+ NULL,
+ },
+ {
+ PCI_VENDOR_RISCOM, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "RISCom",
+ NULL,
+ },
+ {
+ PCI_VENDOR_USR, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "US Robotics (3Com)",
+ NULL,
+ },
+ {
+ PCI_VENDOR_NVIDIA_SGS, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Nvidia Corporation & SGS Thomson Microelectric",
+ NULL,
+ },
+ {
+ PCI_VENDOR_AUREAL, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Aureal Semiconductor",
+ NULL,
+ },
+ {
+ PCI_VENDOR_ADMTEK, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "ADMtek",
+ NULL,
+ },
+ {
+ PCI_VENDOR_FORTEMEDIA, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Forte Media",
+ NULL,
+ },
+ {
+ PCI_VENDOR_DOMEX, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Domex",
+ NULL,
+ },
+ {
+ PCI_VENDOR_LMC, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "LAN Media Corporation",
+ NULL,
+ },
+ {
+ PCI_VENDOR_API, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "API Networks",
+ NULL,
+ },
+ {
+ PCI_VENDOR_CONEXANT, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Conexant Systems",
+ NULL,
+ },
+ {
+ PCI_VENDOR_NETGEAR, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Netgear",
+ NULL,
+ },
+ {
+ PCI_VENDOR_3WARE, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "3ware",
+ NULL,
+ },
+ {
+ PCI_VENDOR_SUNDANCETI, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Sundance Technology",
+ NULL,
+ },
+ {
+ PCI_VENDOR_CMEDIA, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "C-Media Electronics Inc",
+ NULL,
+ },
+ {
+ PCI_VENDOR_DELTA, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Delta Electronics",
+ NULL,
+ },
+ {
+ PCI_VENDOR_SOLIDUM, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Solidum Systems Corp.",
+ NULL,
+ },
+ {
+ PCI_VENDOR_SIBYTE, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "SiByte, Inc.",
+ NULL,
+ },
+ {
+ PCI_VENDOR_SYMPHONY2, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Symphony Labs (2nd PCI Vendor ID)",
+ NULL,
+ },
+ {
+ PCI_VENDOR_TEKRAM2, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Tekram Technology (2nd PCI Vendor ID)",
+ NULL,
+ },
+ {
+ PCI_VENDOR_BROADCOM, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Broadcom",
+ NULL,
+ },
+ {
+ PCI_VENDOR_3DLABS, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "3D Labs",
+ NULL,
+ },
+ {
+ PCI_VENDOR_AVANCE2, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Avance Logic (2nd PCI Vendor ID)",
+ NULL,
+ },
+ {
+ PCI_VENDOR_ADDTRON, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Addtron Technology",
+ NULL,
+ },
+ {
+ PCI_VENDOR_NETVIN, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "NetVin",
+ NULL,
+ },
+ {
+ PCI_VENDOR_S3, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "S3",
+ NULL,
+ },
+ {
+ PCI_VENDOR_C4T, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "c't Magazin",
+ NULL,
+ },
+ {
+ PCI_VENDOR_INTEL, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Intel",
+ NULL,
+ },
+ {
+ PCI_VENDOR_PROLAN, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "ProLAN",
+ NULL,
+ },
+ {
+ PCI_VENDOR_KTI, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "KTI",
+ NULL,
+ },
+ {
+ PCI_VENDOR_ADP, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Adaptec",
+ NULL,
+ },
+ {
+ PCI_VENDOR_ADP2, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Adaptec (2nd PCI Vendor ID)",
+ NULL,
+ },
+ {
+ PCI_VENDOR_ATRONICS, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Atronics",
+ NULL,
+ },
+ {
+ PCI_VENDOR_ARC, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "ARC Logic",
+ NULL,
+ },
+ {
+ PCI_VENDOR_EPIGRAM, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "Epigram",
+ NULL,
+ },
+ {
+ PCI_VENDOR_INVALID, 0,
+ PCI_KNOWNDEV_NOPROD,
+ "INVALID VENDOR ID",
+ NULL,
+ },
+ { 0, 0, 0, NULL, NULL, }
+};
diff --git a/cfe/cfe/pci/pcireg.h b/cfe/cfe/pci/pcireg.h
new file mode 100644
index 0000000..932fc7d
--- /dev/null
+++ b/cfe/cfe/pci/pcireg.h
@@ -0,0 +1,615 @@
+/*
+ * Copyright (c) 1995, 1996, 1999
+ * Christopher G. Demetriou. All rights reserved.
+ * Copyright (c) 1994, 1996 Charles M. Hannum. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Charles M. Hannum.
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _DEV_PCI_PCIREG_H_
+#define _DEV_PCI_PCIREG_H_
+
+/*
+ * Standardized PCI configuration register definitions and macros.
+ * Derived from information found in the ``PCI Local Bus Specification,
+ * Revision 2.2, December 18, 1998.''
+ *
+ * Note: Register and field definitions assume 32-bit register accesses.
+ */
+
+#if !defined(__ASSEMBLER__)
+typedef uint16_t pci_vendor_id_t;
+typedef uint16_t pci_product_id_t;
+
+typedef uint8_t pci_class_t;
+typedef uint8_t pci_subclass_t;
+typedef uint8_t pci_interface_t;
+typedef uint8_t pci_revision_t;
+
+typedef uint8_t pci_intr_latency_t;
+typedef uint8_t pci_intr_grant_t;
+typedef uint8_t pci_intr_pin_t;
+typedef uint8_t pci_intr_line_t;
+#endif
+
+/* some PCI bus constants */
+
+#define PCI_BUSMAX 255
+#define PCI_DEVMAX 31
+#define PCI_FUNCMAX 7
+#define PCI_REGMAX 255
+
+/*
+ * Common PCI header
+ */
+
+/*
+ * Device identification register; contains a vendor ID and a device ID.
+ */
+#define PCI_ID_REG 0x00
+
+#define PCI_VENDOR_SHIFT 0
+#define PCI_VENDOR_MASK 0xffff
+#define PCI_VENDOR(id) \
+ (((id) >> PCI_VENDOR_SHIFT) & PCI_VENDOR_MASK)
+
+#define PCI_PRODUCT_SHIFT 16
+#define PCI_PRODUCT_MASK 0xffff
+#define PCI_PRODUCT(id) \
+ (((id) >> PCI_PRODUCT_SHIFT) & PCI_PRODUCT_MASK)
+
+/*
+ * Command and status register.
+ */
+#define PCI_COMMAND_STATUS_REG 0x04
+
+#define PCI_COMMAND_SHIFT 0
+#define PCI_COMMAND_MASK 0xffff
+#define PCI_COMMAND(csr) \
+ (((csr) >> PCI_COMMAND_SHIFT) & PCI_COMMAND_MASK)
+
+#define PCI_STATUS_SHIFT 16
+#define PCI_STATUS_MASK 0xffff
+#define PCI_STATUS(csr) \
+ (((csr) >> PCI_STATUS_SHIFT) & PCI_STATUS_MASK)
+
+#define PCI_COMMAND_IO_ENABLE 0x00000001
+#define PCI_COMMAND_MEM_ENABLE 0x00000002
+#define PCI_COMMAND_MASTER_ENABLE 0x00000004
+#define PCI_COMMAND_SPECIAL_ENABLE 0x00000008
+#define PCI_COMMAND_INVALIDATE_ENABLE 0x00000010
+#define PCI_COMMAND_PALETTE_ENABLE 0x00000020
+#define PCI_COMMAND_PARITY_ENABLE 0x00000040
+#define PCI_COMMAND_STEPPING_ENABLE 0x00000080
+#define PCI_COMMAND_SERR_ENABLE 0x00000100
+#define PCI_COMMAND_BACKTOBACK_ENABLE 0x00000200
+
+#define PCI_STATUS_CAPLIST_SUPPORT 0x00100000
+#define PCI_STATUS_66MHZ_SUPPORT 0x00200000
+#define PCI_STATUS_UDF_SUPPORT 0x00400000
+#define PCI_STATUS_BACKTOBACK_SUPPORT 0x00800000
+#define PCI_STATUS_PARITY_ERROR 0x01000000
+#define PCI_STATUS_DEVSEL_FAST 0x00000000
+#define PCI_STATUS_DEVSEL_MEDIUM 0x02000000
+#define PCI_STATUS_DEVSEL_SLOW 0x04000000
+#define PCI_STATUS_DEVSEL_MASK 0x06000000
+#define PCI_STATUS_DEVSEL_SHIFT 25
+#define PCI_STATUS_DEVSEL(scr) \
+ (((scr) & PCI_STATUS_DEVSEL_MASK) >> PCI_STATUS_DEVSEL_SHIFT)
+#define PCI_STATUS_TARGET_TARGET_ABORT 0x08000000
+#define PCI_STATUS_MASTER_TARGET_ABORT 0x10000000
+#define PCI_STATUS_MASTER_ABORT 0x20000000
+#define PCI_STATUS_SYSTEM_ERROR 0x40000000
+#define PCI_STATUS_PARITY_DETECT 0x80000000
+
+/*
+ * PCI Class and Revision Register; defines type and revision of device.
+ */
+#define PCI_CLASS_REG 0x08
+
+#define PCI_CLASS_SHIFT 24
+#define PCI_CLASS_MASK 0xff
+#define PCI_CLASS(cr) \
+ (((cr) >> PCI_CLASS_SHIFT) & PCI_CLASS_MASK)
+
+#define PCI_SUBCLASS_SHIFT 16
+#define PCI_SUBCLASS_MASK 0xff
+#define PCI_SUBCLASS(cr) \
+ (((cr) >> PCI_SUBCLASS_SHIFT) & PCI_SUBCLASS_MASK)
+
+#define PCI_INTERFACE_SHIFT 8
+#define PCI_INTERFACE_MASK 0xff
+#define PCI_INTERFACE(cr) \
+ (((cr) >> PCI_INTERFACE_SHIFT) & PCI_INTERFACE_MASK)
+
+#define PCI_REVISION_SHIFT 0
+#define PCI_REVISION_MASK 0xff
+#define PCI_REVISION(cr) \
+ (((cr) >> PCI_REVISION_SHIFT) & PCI_REVISION_MASK)
+
+#define PCI_CLASS_CODE(class, subclass, interface) \
+ ((((class) & PCI_CLASS_MASK) << PCI_CLASS_SHIFT) | \
+ (((subclass) & PCI_SUBCLASS_MASK) << PCI_SUBCLASS_SHIFT) | \
+ (((interface) & PCI_INTERFACE_MASK) << PCI_INTERFACE_SHIFT))
+
+/* base classes */
+#define PCI_CLASS_PREHISTORIC 0x00
+#define PCI_CLASS_MASS_STORAGE 0x01
+#define PCI_CLASS_NETWORK 0x02
+#define PCI_CLASS_DISPLAY 0x03
+#define PCI_CLASS_MULTIMEDIA 0x04
+#define PCI_CLASS_MEMORY 0x05
+#define PCI_CLASS_BRIDGE 0x06
+#define PCI_CLASS_COMMUNICATIONS 0x07
+#define PCI_CLASS_SYSTEM 0x08
+#define PCI_CLASS_INPUT 0x09
+#define PCI_CLASS_DOCK 0x0a
+#define PCI_CLASS_PROCESSOR 0x0b
+#define PCI_CLASS_SERIALBUS 0x0c
+#define PCI_CLASS_WIRELESS 0x0d
+#define PCI_CLASS_I2O 0x0e
+#define PCI_CLASS_SATCOM 0x0f
+#define PCI_CLASS_CRYPTO 0x10
+#define PCI_CLASS_DASP 0x11
+#define PCI_CLASS_UNDEFINED 0xff
+
+/* 0x00 prehistoric subclasses */
+#define PCI_SUBCLASS_PREHISTORIC_MISC 0x00
+#define PCI_SUBCLASS_PREHISTORIC_VGA 0x01
+
+/* 0x01 mass storage subclasses */
+#define PCI_SUBCLASS_MASS_STORAGE_SCSI 0x00
+#define PCI_SUBCLASS_MASS_STORAGE_IDE 0x01
+#define PCI_SUBCLASS_MASS_STORAGE_FLOPPY 0x02
+#define PCI_SUBCLASS_MASS_STORAGE_IPI 0x03
+#define PCI_SUBCLASS_MASS_STORAGE_RAID 0x04
+#define PCI_SUBCLASS_MASS_STORAGE_MISC 0x80
+
+/* 0x02 network subclasses */
+#define PCI_SUBCLASS_NETWORK_ETHERNET 0x00
+#define PCI_SUBCLASS_NETWORK_TOKENRING 0x01
+#define PCI_SUBCLASS_NETWORK_FDDI 0x02
+#define PCI_SUBCLASS_NETWORK_ATM 0x03
+#define PCI_SUBCLASS_NETWORK_ISDN 0x04
+#define PCI_SUBCLASS_NETWORK_WORLDFIP 0x05
+#define PCI_SUBCLASS_NETWORK_PCIMGMULTICOMP 0x06
+#define PCI_SUBCLASS_NETWORK_MISC 0x80
+
+/* 0x03 display subclasses */
+#define PCI_SUBCLASS_DISPLAY_VGA 0x00
+#define PCI_SUBCLASS_DISPLAY_XGA 0x01
+#define PCI_SUBCLASS_DISPLAY_3D 0x02
+#define PCI_SUBCLASS_DISPLAY_MISC 0x80
+
+/* 0x04 multimedia subclasses */
+#define PCI_SUBCLASS_MULTIMEDIA_VIDEO 0x00
+#define PCI_SUBCLASS_MULTIMEDIA_AUDIO 0x01
+#define PCI_SUBCLASS_MULTIMEDIA_TELEPHONY 0x02
+#define PCI_SUBCLASS_MULTIMEDIA_MISC 0x80
+
+/* 0x05 memory subclasses */
+#define PCI_SUBCLASS_MEMORY_RAM 0x00
+#define PCI_SUBCLASS_MEMORY_FLASH 0x01
+#define PCI_SUBCLASS_MEMORY_MISC 0x80
+
+/* 0x06 bridge subclasses */
+#define PCI_SUBCLASS_BRIDGE_HOST 0x00
+#define PCI_SUBCLASS_BRIDGE_ISA 0x01
+#define PCI_SUBCLASS_BRIDGE_EISA 0x02
+#define PCI_SUBCLASS_BRIDGE_MCA 0x03
+#define PCI_SUBCLASS_BRIDGE_PCI 0x04
+#define PCI_SUBCLASS_BRIDGE_PCMCIA 0x05
+#define PCI_SUBCLASS_BRIDGE_NUBUS 0x06
+#define PCI_SUBCLASS_BRIDGE_CARDBUS 0x07
+#define PCI_SUBCLASS_BRIDGE_RACEWAY 0x08
+#define PCI_SUBCLASS_BRIDGE_STPCI 0x09
+#define PCI_SUBCLASS_BRIDGE_INFINIBAND 0x0a
+#define PCI_SUBCLASS_BRIDGE_MISC 0x80
+
+/* 0x07 communications subclasses */
+#define PCI_SUBCLASS_COMMUNICATIONS_SERIAL 0x00
+#define PCI_SUBCLASS_COMMUNICATIONS_PARALLEL 0x01
+#define PCI_SUBCLASS_COMMUNICATIONS_MPSERIAL 0x02
+#define PCI_SUBCLASS_COMMUNICATIONS_MODEM 0x03
+#define PCI_SUBCLASS_COMMUNICATIONS_MISC 0x80
+
+/* 0x08 system subclasses */
+#define PCI_SUBCLASS_SYSTEM_PIC 0x00
+#define PCI_SUBCLASS_SYSTEM_DMA 0x01
+#define PCI_SUBCLASS_SYSTEM_TIMER 0x02
+#define PCI_SUBCLASS_SYSTEM_RTC 0x03
+#define PCI_SUBCLASS_SYSTEM_PCIHOTPLUG 0x04
+#define PCI_SUBCLASS_SYSTEM_MISC 0x80
+
+/* 0x09 input subclasses */
+#define PCI_SUBCLASS_INPUT_KEYBOARD 0x00
+#define PCI_SUBCLASS_INPUT_DIGITIZER 0x01
+#define PCI_SUBCLASS_INPUT_MOUSE 0x02
+#define PCI_SUBCLASS_INPUT_SCANNER 0x03
+#define PCI_SUBCLASS_INPUT_GAMEPORT 0x04
+#define PCI_SUBCLASS_INPUT_MISC 0x80
+
+/* 0x0a dock subclasses */
+#define PCI_SUBCLASS_DOCK_GENERIC 0x00
+#define PCI_SUBCLASS_DOCK_MISC 0x80
+
+/* 0x0b processor subclasses */
+#define PCI_SUBCLASS_PROCESSOR_386 0x00
+#define PCI_SUBCLASS_PROCESSOR_486 0x01
+#define PCI_SUBCLASS_PROCESSOR_PENTIUM 0x02
+#define PCI_SUBCLASS_PROCESSOR_ALPHA 0x10
+#define PCI_SUBCLASS_PROCESSOR_POWERPC 0x20
+#define PCI_SUBCLASS_PROCESSOR_MIPS 0x30
+#define PCI_SUBCLASS_PROCESSOR_COPROC 0x40
+
+/* 0x0c serial bus subclasses */
+#define PCI_SUBCLASS_SERIALBUS_FIREWIRE 0x00
+#define PCI_SUBCLASS_SERIALBUS_ACCESS 0x01
+#define PCI_SUBCLASS_SERIALBUS_SSA 0x02
+#define PCI_SUBCLASS_SERIALBUS_USB 0x03
+#define PCI_SUBCLASS_SERIALBUS_FIBER 0x04 /* XXX _FIBRECHANNEL */
+#define PCI_SUBCLASS_SERIALBUS_SMBUS 0x05
+#define PCI_SUBCLASS_SERIALBUS_INFINIBAND 0x06
+#define PCI_SUBCLASS_SERIALBUS_IPMI 0x07
+#define PCI_SUBCLASS_SERIALBUS_SERCOS 0x08
+#define PCI_SUBCLASS_SERIALBUS_CANBUS 0x09
+
+/* 0x0d wireless subclasses */
+#define PCI_SUBCLASS_WIRELESS_IRDA 0x00
+#define PCI_SUBCLASS_WIRELESS_CONSUMERIR 0x01
+#define PCI_SUBCLASS_WIRELESS_RF 0x10
+#define PCI_SUBCLASS_WIRELESS_MISC 0x80
+
+/* 0x0e I2O (Intelligent I/O) subclasses */
+#define PCI_SUBCLASS_I2O_STANDARD 0x00
+
+/* 0x0f satellite communication subclasses */
+/* PCI_SUBCLASS_SATCOM_??? 0x00 / * XXX ??? */
+#define PCI_SUBCLASS_SATCOM_TV 0x01
+#define PCI_SUBCLASS_SATCOM_AUDIO 0x02
+#define PCI_SUBCLASS_SATCOM_VOICE 0x03
+#define PCI_SUBCLASS_SATCOM_DATA 0x04
+
+/* 0x10 encryption/decryption subclasses */
+#define PCI_SUBCLASS_CRYPTO_NETCOMP 0x00
+#define PCI_SUBCLASS_CRYPTO_ENTERTAINMENT 0x10
+#define PCI_SUBCLASS_CRYPTO_MISC 0x80
+
+/* 0x11 data acquisition and signal processing subclasses */
+#define PCI_SUBCLASS_DASP_DPIO 0x00
+#define PCI_SUBCLASS_DASP_TIMERFREQ 0x01
+#define PCI_SUBCLASS_DASP_MISC 0x80
+
+/*
+ * PCI BIST/Header Type/Latency Timer/Cache Line Size Register.
+ */
+#define PCI_BHLC_REG 0x0c
+
+#define PCI_BIST_SHIFT 24
+#define PCI_BIST_MASK 0xff
+#define PCI_BIST(bhlcr) \
+ (((bhlcr) >> PCI_BIST_SHIFT) & PCI_BIST_MASK)
+
+#define PCI_HDRTYPE_SHIFT 16
+#define PCI_HDRTYPE_MASK 0xff
+#define PCI_HDRTYPE(bhlcr) \
+ (((bhlcr) >> PCI_HDRTYPE_SHIFT) & PCI_HDRTYPE_MASK)
+
+#define PCI_HDRTYPE_TYPE(bhlcr) \
+ (PCI_HDRTYPE(bhlcr) & 0x7f)
+#define PCI_HDRTYPE_MULTIFN(bhlcr) \
+ ((PCI_HDRTYPE(bhlcr) & 0x80) != 0)
+
+#define PCI_LATTIMER_SHIFT 8
+#define PCI_LATTIMER_MASK 0xff
+#define PCI_LATTIMER(bhlcr) \
+ (((bhlcr) >> PCI_LATTIMER_SHIFT) & PCI_LATTIMER_MASK)
+#define PCI_LATTIMER_SET(bhlcr,v) \
+ (bhlcr) = ((bhlcr) & ~(PCI_LATTIMER_MASK << PCI_LATTIMER_SHIFT)) | \
+ ((v) << PCI_LATTIMER_SHIFT)
+
+#define PCI_CACHELINE_SHIFT 0
+#define PCI_CACHELINE_MASK 0xff
+#define PCI_CACHELINE(bhlcr) \
+ (((bhlcr) >> PCI_CACHELINE_SHIFT) & PCI_CACHELINE_MASK)
+#define PCI_CACHELINE_SET(bhlcr,v) \
+ (bhlcr) = ((bhlcr) & ~(PCI_CACHELINE_MASK << PCI_CACHELINE_SHIFT)) | \
+ ((v) << PCI_CACHELINE_SHIFT)
+
+/*
+ * The currently defined header types are
+ * 00h prefix PCI_ below
+ * 01h prefix PPB_ below (PCI-to-PCI bridges)
+ * 02h prefix PCB_ below (Cardbus bridges)
+ */
+
+/*
+ * Type 00h Configuration Space extensions.
+ */
+
+/*
+ * Mapping registers
+ */
+#define PCI_MAPREG_START 0x10
+#define PCI_MAPREG_END 0x28
+
+#define PCI_MAPREG_PPB_END 0x18
+#define PCI_MAPREG_PPB_ROM 0x38
+#define PCI_MAPREG_PCB_END 0x14
+#define PCI_MAPREG_NONE 0x00
+
+#define PCI_MAPREG_TYPE(mr) \
+ ((mr) & PCI_MAPREG_TYPE_MASK)
+#define PCI_MAPREG_TYPE_MASK 0x00000001
+
+#define PCI_MAPREG_TYPE_MEM 0x00000000
+#define PCI_MAPREG_TYPE_IO 0x00000001
+
+#define PCI_MAPREG_MEM_TYPE(mr) \
+ ((mr) & PCI_MAPREG_MEM_TYPE_MASK)
+#define PCI_MAPREG_MEM_TYPE_MASK 0x00000006
+
+#define PCI_MAPREG_MEM_TYPE_32BIT 0x00000000
+#define PCI_MAPREG_MEM_TYPE_32BIT_1M 0x00000002
+#define PCI_MAPREG_MEM_TYPE_64BIT 0x00000004
+
+#define PCI_MAPREG_MEM_PREFETCHABLE(mr) \
+ (((mr) & PCI_MAPREG_MEM_PREFETCHABLE_MASK) != 0)
+#define PCI_MAPREG_MEM_PREFETCHABLE_MASK 0x00000008
+
+#define PCI_MAPREG_MEM_ADDR(mr) \
+ ((mr) & PCI_MAPREG_MEM_ADDR_MASK)
+#define PCI_MAPREG_MEM_SIZE(mr) \
+ (PCI_MAPREG_MEM_ADDR(mr) & -PCI_MAPREG_MEM_ADDR(mr))
+#define PCI_MAPREG_MEM_ADDR_MASK 0xfffffff0
+
+#define PCI_MAPREG_MEM64_ADDR(mr) \
+ ((mr) & PCI_MAPREG_MEM64_ADDR_MASK)
+#define PCI_MAPREG_MEM64_SIZE(mr) \
+ (PCI_MAPREG_MEM64_ADDR(mr) & -PCI_MAPREG_MEM64_ADDR(mr))
+#define PCI_MAPREG_MEM64_ADDR_MASK 0xfffffffffffffff0ULL
+
+#define PCI_MAPREG_IO_ADDR(mr) \
+ ((mr) & PCI_MAPREG_IO_ADDR_MASK)
+#define PCI_MAPREG_IO_SIZE(mr) \
+ (PCI_MAPREG_IO_ADDR(mr) & -PCI_MAPREG_IO_ADDR(mr))
+#define PCI_MAPREG_IO_ADDR_MASK 0xfffffffc
+
+#define PCI_MAPREG_SIZE_TO_MASK(size) \
+ (-(size))
+
+#define PCI_MAPREG(num) (PCI_MAPREG_START + 4*(num))
+#define PCI_MAPREG_NUM(offset) \
+ (((unsigned)(offset)-PCI_MAPREG_START)/4)
+
+/*
+ * Cardbus CIS pointer (PCI rev. 2.1)
+ */
+#define PCI_CARDBUS_CIS_REG 0x28
+
+/*
+ * Subsystem identification register; contains a vendor ID and a device ID.
+ * Types/macros for PCI_ID_REG apply.
+ * (PCI rev. 2.1)
+ */
+#define PCI_SUBSYS_ID_REG 0x2c
+
+/*
+ * Expansion ROM base address register; contains an address and enable bit.
+ */
+#define PCI_MAPREG_ROM 0x30
+#define PCI_MAPREG_ROM_ADDR(mr) \
+ ((mr) & PCI_MAPREG_ROM_ADDR_MASK)
+#define PCI_MAPREG_ROM_ADDR_MASK 0xfffff800
+#define PCI_MAPREG_ROM_ENABLE 0x00000001
+
+/*
+ * capabilities link list (PCI rev. 2.2)
+ */
+#define PCI_CAPLISTPTR_REG 0x34 /* header type 0 */
+#define PCI_CARDBUS_CAPLISTPTR_REG 0x14 /* header type 2 */
+#define PCI_CAPLIST_PTR(cpr) ((cpr) & 0xff)
+#define PCI_CAPLIST_NEXT(cr) (((cr) >> 8) & 0xff)
+#define PCI_CAPLIST_CAP(cr) ((cr) & 0xff)
+
+#define PCI_CAP_RESERVED0 0x00
+#define PCI_CAP_PWRMGMT 0x01
+#define PCI_CAP_AGP 0x02
+#define PCI_CAP_VPD 0x03
+#define PCI_CAP_SLOTID 0x04
+#define PCI_CAP_MBI 0x05
+#define PCI_CAP_CPCI_HOTSWAP 0x06
+#define PCI_CAP_PCIX 0x07
+#define PCI_CAP_LDT 0x08
+#define PCI_CAP_VENDSPEC 0x09
+#define PCI_CAP_DEBUGPORT 0x0a
+#define PCI_CAP_CPCI_RSRCCTL 0x0b
+#define PCI_CAP_HOTPLUG 0x0c
+
+/*
+ * Power Management Control Status Register; access via capability pointer.
+ */
+#define PCI_PMCSR_STATE_MASK 0x03
+#define PCI_PMCSR_STATE_D0 0x00
+#define PCI_PMCSR_STATE_D1 0x01
+#define PCI_PMCSR_STATE_D2 0x02
+#define PCI_PMCSR_STATE_D3 0x03
+
+/*
+ * Bus Parameter and Interrupt Configuration Register;
+ * contains interrupt pin and line.
+ */
+#define PCI_BPARAM_INTERRUPT_REG 0x3c
+
+#define PCI_BPARAM_LATENCY_SHIFT 24
+#define PCI_BPARAM_LATENCY_MASK 0xff
+#define PCI_BPARAM_LATENCY(bpir) \
+ (((bpir) >> PCI_BPARAM_LATENCY_SHIFT) & PCI_BPARAM_LATENCY_MASK)
+
+#define PCI_BPARAM_GRANT_SHIFT 16
+#define PCI_BPARAM_GRANT_MASK 0xff
+#define PCI_BPARAM_GRANT(bpir) \
+ (((bpir) >> PCI_BPARAM_GRANT_SHIFT) & PCI_BPARAM_GRANT_MASK)
+
+#define PCI_INTERRUPT_PIN_SHIFT 8
+#define PCI_INTERRUPT_PIN_MASK 0xff
+#define PCI_INTERRUPT_PIN(bpir) \
+ (((bpir) >> PCI_INTERRUPT_PIN_SHIFT) & PCI_INTERRUPT_PIN_MASK)
+
+#define PCI_INTERRUPT_LINE_SHIFT 0
+#define PCI_INTERRUPT_LINE_MASK 0xff
+#define PCI_INTERRUPT_LINE(bpir) \
+ (((bpir) >> PCI_INTERRUPT_LINE_SHIFT) & PCI_INTERRUPT_LINE_MASK)
+
+#define PCI_INTERRUPT_PIN_NONE 0x00
+#define PCI_INTERRUPT_PIN_A 0x01
+#define PCI_INTERRUPT_PIN_B 0x02
+#define PCI_INTERRUPT_PIN_C 0x03
+#define PCI_INTERRUPT_PIN_D 0x04
+#define PCI_INTERRUPT_PIN_MAX 0x04
+
+
+/*
+ * Type 01h Configuration Space extension:
+ * PCI to PCI Bridge registers (cf ppbreg.h)
+ * Derived from information found in the ``PCI to PCI Bridge
+ * Architecture Specification, Revision 1.1, December 18, 1998.''
+ */
+
+#define PPB_MAPREG_START 0x10
+#define PPB_MAPREG_END 0x18
+
+/*
+ * Bus Information Register; contains bus hierarchy and secondary latency.
+ */
+#define PPB_BUSINFO_REG 0x18
+
+#define PPB_BUSINFO_LATENCY_SHIFT 24
+#define PPB_BUSINFO_LATENCY_MASK 0xff
+#define PPB_BUSINFO_LATENCY(br) \
+ (((br) >> PPB_BUSINFO_LATENCY_SHIFT) & PPB_BUSINFO_LATENCY_MASK)
+
+#define PPB_BUSINFO_SUBORD_SHIFT 16
+#define PPB_BUSINFO_SUBORD_MASK 0xff
+#define PPB_BUSINFO_SUBORD(br) \
+ (((br) >> PPB_BUSINFO_SUBORD_SHIFT) & PPB_BUSINFO_SUBORD_MASK)
+
+#define PPB_BUSINFO_SECONDARY_SHIFT 8
+#define PPB_BUSINFO_SECONDARY_MASK 0xff
+#define PPB_BUSINFO_SECONDARY(br) \
+ (((br) >> PPB_BUSINFO_SECONDARY_SHIFT) & PPB_BUSINFO_SECONDARY_MASK)
+
+#define PPB_BUSINFO_PRIMARY_SHIFT 0
+#define PPB_BUSINFO_PRIMARY_MASK 0xff
+#define PPB_BUSINFO_PRIMARY(br) \
+ (((br) >> PPB_BUSINFO_PRIMARY_SHIFT) & PPB_BUSINFO_PRIMARY_MASK)
+
+/*
+ * IO Status Register; contains I/O base + limit and secondary status.
+ * Masks/macros for PCI_STATUS apply to Secondary Status.
+ */
+#define PPB_IO_STATUS_REG 0x1C
+
+#define PPB_IO_BASE_MASK 0x000000ff
+#define PPB_IO_LIMIT_MASK 0x0000ff00
+#define PPB_IO_ADDR_CAP_MASK 0x00000f0f
+#define PPB_IO_ADDR_CAP_16 0x00000000
+#define PPB_IO_ADDR_CAP_32 0x00000101
+#define PPB_IO_BASE(iosr) \
+ (((iosr) >> 0) & 0xff)
+#define PPB_IO_LIMIT(iosr) \
+ (((iosr) >> 8) & 0xff)
+
+#define PPB_SECSTATUS_SHIFT 16
+#define PPB_SECSTATUS_MASK 0xffff
+#define PPB_SECSTATUS(iosr) \
+ (((iosr) >> PPB_SECSTATUS_SHIFT) & PPB_SECSTATUS_MASK)
+
+/*
+ * Base and limit values for address ranges have common packing.
+ */
+#define PPB_BASE_SHIFT 0
+#define PPB_BASE_MASK 0xffff
+#define PPB_BASE(blr) \
+ (((blr) >> PPB_BASE_SHIFT) & PPB_BASE_MASK)
+
+#define PPB_LIMIT_SHIFT 16
+#define PPB_LIMIT_MASK 0xffff
+#define PPB_LIMIT(blr) \
+ (((blr) >> PPB_LIMIT_SHIFT) & PPB_LIMIT_MASK)
+
+/*
+ * Memory Registers; contains memory base + limit.
+ */
+#define PPB_MEM_REG 0x20
+#define PPB_PREFMEM_REG 0x24
+
+#define PPB_MEM_BASE_MASK 0x0000ffff
+#define PPB_MEM_LIMIT_MASK 0xffff0000
+
+/*
+ * Prefetchable Memory Upper Registers; contain high bits
+ */
+#define PPB_PREFMEM_BASE_UPPER_REG 0x28
+#define PPB_PREFMEM_LIMIT_UPPER_REG 0x2c
+
+/*
+ * IO Upper Register; contains I/O base + limit high bits
+ */
+#define PPB_IO_UPPER_REG 0x30
+
+#define PPB_IO_UPPER_BASE_MASK 0x0000ffff
+#define PPB_IO_UPPER_LIMIT_MASK 0xffff0000
+
+/*
+ * Expansion ROM Base Address Register.
+ */
+#define PPB_MAPREG_ROM 0x38
+
+/*
+ * Bridge Control and Interrupt Register
+ * Masks/macros for PCI_INTERRUPT apply to Interrupt
+ */
+#define PPB_BRCTL_INTERRUPT_REG 0x3C
+
+#define PPB_BRCTL_SHIFT 16
+#define PPB_BRCTL_MASK 0xffff
+#define PPB_BRCTL(bcir) \
+ (((bcir) >> PPB_BRCTL_SHIFT) & PPB_BRCTL_MASK)
+
+#define PPB_BRCTL_PARITY_ENABLE 0x00010000
+#define PPB_BRCTL_SERR_ENABLE 0x00020000
+#define PPB_BRCTL_ISA_ENABLE 0x00040000
+#define PPB_BRCTL_VGA_ENABLE 0x00080000
+#define PPB_BRCTL_MASTER_ABORT_MODE 0x00200000
+#define PPB_BRCTL_SECONDARY_RESET 0x00400000
+#define PPB_BRCTL_BACKTOBACK_ENABLE 0x00800000
+#define PPB_BRCTL_PRIMARY_DISCARD_TIMER 0x01000000
+#define PPB_BRCTL_SECONDARY_DISCARD_TIMER 0x02000000
+#define PPB_BRCTL_DISCARD_TIMER_STATUS 0x04000000
+#define PPB_BRCTL_DISCARD_SERR_ENABLE 0x08000000
+
+#endif /* _DEV_PCI_PCIREG_H_ */
diff --git a/cfe/cfe/pci/pcivar.h b/cfe/cfe/pci/pcivar.h
new file mode 100644
index 0000000..51f0b40
--- /dev/null
+++ b/cfe/cfe/pci/pcivar.h
@@ -0,0 +1,216 @@
+/*
+ * Copyright (c) 1994 Charles Hannum. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Charles Hannum.
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _PCIVAR_H_
+#define _PCIVAR_H_
+
+/*
+ * Definitions for PCI autoconfiguration.
+ *
+ * The initial segment of this file describes types and functions
+ * that are exported for PCI configuration and address mapping. */
+
+#include "pci_machdep.h"
+
+/* From <cpu>_pci_machdep.c */
+
+pcitag_t pci_make_tag(int, int, int);
+pcireg_t pci_conf_read(pcitag_t, int);
+void pci_conf_write(pcitag_t, int, pcireg_t);
+
+typedef enum {
+ PCI_MATCH_BYTES = 0,
+ PCI_MATCH_BITS = 1
+} pci_endian_t;
+
+int pci_map_io(pcitag_t, int, pci_endian_t, phys_addr_t *);
+int pci_map_mem(pcitag_t, int, pci_endian_t, phys_addr_t *);
+
+uint8_t inb(unsigned int port);
+uint16_t inw(unsigned int port);
+uint32_t inl(unsigned int port);
+void outb(unsigned int port, uint8_t val);
+void outw(unsigned int port, uint16_t val);
+void outl(unsigned int port, uint32_t val);
+
+int pci_map_window(phys_addr_t pa,
+ unsigned int offset, unsigned int len,
+ int l2ca, int endian);
+int pci_unmap_window(unsigned int offset, unsigned int len);
+
+/* From pciconf.c */
+
+/* Flags controlling PCI/LDT configuration options */
+
+typedef unsigned int pci_flags_t;
+
+#define PCI_FLG_NORMAL 0x00000001
+#define PCI_FLG_VERBOSE 0x00000003
+#define PCI_FLG_LDT_PREFETCH 0x00000004
+#define PCI_FLG_LDT_REV_017 0x00000008
+
+void pci_configure(pci_flags_t flags);
+void pci_show_configuration(void);
+int pci_foreachdev(int (*fn)(pcitag_t tag));
+int pci_cacheline_log2 (void);
+int pci_maxburst_log2 (void);
+
+int pci_find_device(uint32_t vid, uint32_t did, int enumidx, pcitag_t *tag);
+int pci_find_class(uint32_t class, int enumidx, pcitag_t *tag);
+
+/* From pci_subr.c */
+
+void pci_devinfo(pcireg_t, pcireg_t, int, char *);
+void pci_conf_print(pcitag_t tag);
+
+void pci_tagprintf (pcitag_t tag, const char *fmt, ...)
+#ifdef __long64
+ __attribute__((__format__(__printf__,2,3)))
+#endif
+ ;
+
+
+/*
+ * Definitions for PCI autoconfiguration.
+ *
+ * The remainder of this file describes types and functions
+ * that are used only for communication among the PCI modules
+ * implementing autoconfiguration.
+ * XXX This should be split into a separate file. */
+
+/* Build options. Debug levels >1 are for helping to bring up new
+ LDT hardware and will be annoyingly verbose otherwise. */
+
+/* PCI_DEBUG enables general checking and tracing. */
+#ifndef PCI_DEBUG
+#define PCI_DEBUG 0
+#endif
+
+/* LDT_DEBUG enables progress/error reports for LDT fabric initialization. */
+#ifndef LDT_DEBUG
+#define LDT_DEBUG 0
+#endif
+
+
+struct pci_attach_args {
+ pcitag_t pa_tag;
+ pcireg_t pa_id;
+ pcireg_t pa_class;
+};
+
+struct pci_match {
+ pcireg_t class, classmask;
+ pcireg_t id, idmask;
+};
+
+/* From <cpu>_pci_machdep.c */
+
+int pci_hwinit(pci_flags_t flags);
+void pci_hwreinit(pci_flags_t flags);
+int pci_device_preset (pcitag_t tag);
+void pci_device_setup(pcitag_t tag);
+void pci_bridge_setup(pcitag_t tag, pci_flags_t flags);
+void pci_flush(void);
+
+void pci_break_tag(pcitag_t, int *, int *, int *);
+
+int pci_canscan(pcitag_t);
+int pci_probe_tag(pcitag_t tag);
+
+pcireg_t pci_conf_read8(pcitag_t, int);
+void pci_conf_write8(pcitag_t, int, pcireg_t);
+pcireg_t pci_conf_read16(pcitag_t, int);
+void pci_conf_write16(pcitag_t, int, pcireg_t);
+pcireg_t pci_conf_read(pcitag_t, int);
+void pci_conf_write(pcitag_t, int, pcireg_t);
+#define pci_conf_read32 pci_conf_read
+#define pci_conf_write32 pci_conf_write
+int pci_conf_write_acked(pcitag_t, int, pcireg_t);
+
+uint8_t pci_int_line(uint8_t);
+
+
+/* From <board>_pci.c */
+
+uint8_t pci_int_shift_0(pcitag_t);
+uint8_t pci_int_map_0(pcitag_t);
+
+
+/* From ldtinit.c */
+
+#define LDT_PRIMARY 0
+#define LDT_SECONDARY 1
+unsigned pci_find_ldt_cap (pcitag_t tag, int secondary);
+
+void ldt_link_reset (pcitag_t tag, int delay);
+int ldt_chain_init (pcitag_t tag, int bus, pci_flags_t flags);
+
+
+/* From pci_subr.c */
+
+void pci_bdfprintf(int bus, int device, int function, const char *fmt, ...)
+#ifdef __long64
+ __attribute__((__format__(__printf__,4,5)))
+#endif
+ ;
+
+
+/* PCI bus parameters */
+struct pci_bus {
+ unsigned char min_gnt; /* largest min grant */
+ unsigned char max_lat; /* smallest max latency */
+ unsigned char devsel; /* slowest devsel */
+ char fast_b2b; /* support fast b2b */
+ char prefetch; /* support prefetch */
+ char freq66; /* support 66MHz */
+ char width64; /* 64 bit bus */
+ int bandwidth; /* # of .25us ticks/sec @ 33MHz */
+ unsigned char ndev; /* # devices (functions) on bus */
+ unsigned char def_ltim; /* default ltim counter */
+ unsigned char max_ltim; /* maximum ltim counter */
+ uint8_t primary; /* primary bus number */
+ pcitag_t tag; /* tag for this bus */
+ uint32_t min_io_addr; /* min I/O address allocated to bus */
+ uint32_t max_io_addr; /* max I/O address allocated to bus */
+ uint32_t min_mem_addr; /* min mem address allocated to bus */
+ uint32_t max_mem_addr; /* max mem address allocated to bus */
+ uint8_t inta_shift; /* base rotation of interrupt pins */
+ char no_probe; /* skip businit and query probes */
+};
+
+extern pcireg_t minpcimemaddr;
+extern pcireg_t maxpcimemaddr;
+extern pcireg_t minpciioaddr;
+extern pcireg_t maxpciioaddr;
+
+extern struct pci_bus _pci_bus[];
+extern int _pci_nbus;
+extern const int _pci_maxbus;
+
+#endif /* _PCIVAR_H_ */