diff options
author | root <root@lamia.panaceas.james.local> | 2015-12-19 13:13:57 +0000 |
---|---|---|
committer | root <root@lamia.panaceas.james.local> | 2015-12-19 14:18:03 +0000 |
commit | 1a2238d1bddc823df06f67312d96ccf9de2893cc (patch) | |
tree | c58a3944d674a667f133ea5a730f5037e57d3d2e /cfe/cfe/pci | |
download | bootloader-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.h | 52 | ||||
-rw-r--r-- | cfe/cfe/pci/devlist2h.awk | 220 | ||||
-rw-r--r-- | cfe/cfe/pci/ldtinit.c | 641 | ||||
-rw-r--r-- | cfe/cfe/pci/ldtreg.h | 184 | ||||
-rw-r--r-- | cfe/cfe/pci/pci_machdep.h | 35 | ||||
-rw-r--r-- | cfe/cfe/pci/pci_subr.c | 710 | ||||
-rw-r--r-- | cfe/cfe/pci/pciconf.c | 1296 | ||||
-rw-r--r-- | cfe/cfe/pci/pcidevs | 1355 | ||||
-rw-r--r-- | cfe/cfe/pci/pcidevs.h | 1360 | ||||
-rw-r--r-- | cfe/cfe/pci/pcidevs_data.h | 5873 | ||||
-rw-r--r-- | cfe/cfe/pci/pcireg.h | 615 | ||||
-rw-r--r-- | cfe/cfe/pci/pcivar.h | 216 |
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_ */ |