Git init
authorKibum Kim <kb0929.kim@samsung.com>
Fri, 6 Jan 2012 15:50:25 +0000 (00:50 +0900)
committerKibum Kim <kb0929.kim@samsung.com>
Fri, 6 Jan 2012 15:50:25 +0000 (00:50 +0900)
82 files changed:
COPYING [new file with mode: 0644]
ChangeLog [new file with mode: 0644]
Makefile [new file with mode: 0644]
README [new file with mode: 0644]
README.Windows [new file with mode: 0644]
TODO [new file with mode: 0644]
common.c [new file with mode: 0644]
compat/README [new file with mode: 0644]
compat/getopt.c [new file with mode: 0644]
compat/getopt.h [new file with mode: 0644]
debian/TODO [new file with mode: 0644]
debian/changelog [new file with mode: 0644]
debian/compat [new file with mode: 0644]
debian/control [new file with mode: 0644]
debian/copyright [new file with mode: 0644]
debian/dirs [new file with mode: 0644]
debian/docs [new file with mode: 0644]
debian/libpci-dev.dirs [new file with mode: 0644]
debian/libpci3.dirs [new file with mode: 0644]
debian/pciutils-udeb.dirs [new file with mode: 0644]
debian/postinst [new file with mode: 0644]
debian/postrm [new file with mode: 0644]
debian/preinst [new file with mode: 0644]
debian/rules [new file with mode: 0755]
debian/watch [new file with mode: 0644]
example.c [new file with mode: 0644]
lib/.gitignore [new file with mode: 0644]
lib/Makefile [new file with mode: 0644]
lib/access.c [new file with mode: 0644]
lib/aix-device.c [new file with mode: 0644]
lib/configure [new file with mode: 0755]
lib/dump.c [new file with mode: 0644]
lib/fbsd-device.c [new file with mode: 0644]
lib/filter.c [new file with mode: 0644]
lib/generic.c [new file with mode: 0644]
lib/header.h [new file with mode: 0644]
lib/i386-io-hurd.h [new file with mode: 0644]
lib/i386-io-linux.h [new file with mode: 0644]
lib/i386-io-sunos.h [new file with mode: 0644]
lib/i386-io-windows.h [new file with mode: 0644]
lib/i386-ports.c [new file with mode: 0644]
lib/init.c [new file with mode: 0644]
lib/internal.h [new file with mode: 0644]
lib/libpci.pc.in [new file with mode: 0644]
lib/libpci.ver [new file with mode: 0644]
lib/names-cache.c [new file with mode: 0644]
lib/names-hash.c [new file with mode: 0644]
lib/names-net.c [new file with mode: 0644]
lib/names-parse.c [new file with mode: 0644]
lib/names.c [new file with mode: 0644]
lib/names.h [new file with mode: 0644]
lib/nbsd-libpci.c [new file with mode: 0644]
lib/obsd-device.c [new file with mode: 0644]
lib/params.c [new file with mode: 0644]
lib/pci.h [new file with mode: 0644]
lib/pread.h [new file with mode: 0644]
lib/proc.c [new file with mode: 0644]
lib/sysdep.h [new file with mode: 0644]
lib/sysfs.c [new file with mode: 0644]
lib/types.h [new file with mode: 0644]
lspci.c [new file with mode: 0644]
lspci.man [new file with mode: 0644]
maint/gen-zone [new file with mode: 0755]
maint/release [new file with mode: 0755]
maint/release.pm [new file with mode: 0644]
packaging/pciutils.spec [new file with mode: 0644]
pci.ids [new file with mode: 0644]
pcilib.man [new file with mode: 0644]
pcimodules.c [new file with mode: 0644]
pcimodules.man [new file with mode: 0644]
pciutils.h [new file with mode: 0644]
pciutils.lsm [new file with mode: 0644]
pciutils.spec [new file with mode: 0644]
setpci.c [new file with mode: 0644]
setpci.man [new file with mode: 0644]
tests/PCI-X-bridges-and-domains [new file with mode: 0644]
tests/cap-MSI-mapping [new file with mode: 0644]
tests/cap-debug-port [new file with mode: 0644]
update-pciids.man [new file with mode: 0644]
update-pciids.sh [new file with mode: 0755]
win32/config.h [new file with mode: 0644]
win32/config.mk [new file with mode: 0644]

diff --git a/COPYING b/COPYING
new file mode 100644 (file)
index 0000000..d60c31a
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,340 @@
+                   GNU GENERAL PUBLIC LICENSE
+                      Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                           Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+\f
+                   GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+\f
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+\f
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+\f
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                           NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                    END OF TERMS AND CONDITIONS
+\f
+           How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/ChangeLog b/ChangeLog
new file mode 100644 (file)
index 0000000..848f6de
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,1695 @@
+2008-04-10  Martin Mares <mj@ucw.cz>
+
+       * Released as 3.0.0.
+
+       * Updated API and ABI version.
+
+2008-02-20  Martin Mares <mj@ucw.cz>
+
+       * Released as 2.99.1-alpha2.
+
+       * Changed the default domain for the DNS resolver.
+
+2008-02-18  Martin Mares <mj@ucw.cz>
+
+       * Released as 2.99.1-alpha1.
+
+       * The makefile system has been reworked. All configuration settings
+       are now passed to the configure script in environment variables,
+       allowing for easy tweaking in the top-level Makefile. All control
+       knobs are now described in the README.
+
+       * The libpci can be built as a shared library with properly restricted
+       symbol exports. Use `make SHARED=yes' to enable that or `make SHARED=local'
+       for a local testing build (with hardwired paths to the library, so that
+       it does not need installation).
+
+       * The example program has been moved from lib/example.c to the top-level
+       directory, because it should be built exactly as the other utilities
+       are. It has been also improved slightly to educate better.
+
+       * The i386-ports method is enabled on Linux/x86_64 as well.
+
+2008-02-13  Martin Mares <mj@ucw.cz>
+
+       * Released as 2.2.10-net2.
+
+       * Support for resolving of PCI ID's using DNS together with a local
+       cache of resolved entries has been added. See the `-q' and `-Q' options
+       of lspci.
+
+       * The library now has a generic system of settable parameters, which
+       also include settings of the DNS resolver and cache. An `-O' option
+       has been added to lspci and setpci to allow setting of these options.
+
+       * Configuration of the access methods are now specified by the new
+       parameter system, replacing the pci_access->method_params array.
+
+       * Access methods now also have sensible names and help texts and it
+       is possible to look up method ID by a name.
+
+       * An `-A' switch has been added to both lspci and setpci, allowing to
+       select an arbitrary access method. The `-P' switch (configure proc
+       backend) has been removed as it is no longer needed and I do not know
+       any its user.
+
+       * Several source files have been split for better maintainability
+       (most notably the resolving of ID's).
+
+       * Man pages and help texts have been updated. A new man page `pcilib(7)'
+       has been added and description of library options has been moved there.
+
+       * When an unknown device ID is encountered, we print `Device <id>'
+       instead of `Unknown device <id>'. It uses less space and it also
+       should reduce the number of inexperienced users complaining that
+       the device is not supported by the OS. To lookup up OS drivers,
+       use the `-k' option.
+
+       * PCI_LIB_VERSION has been bumped to 0x020299.
+
+       * Makefile: stripping of the binaries during installation can be
+       overridden by the STRIP variable.
+       
+       * lib/types.h: We use the integer types from <stdint.h> if the
+       compiler claims C99 support.
+
+2008-02-11  Martin Mares <mj@ucw.cz>
+
+       * Released as 2.2.10.
+
+       * lspci.c, setpci.c: Cleaned up the list of options.
+
+       * lib/names.c: Fix displaying of errors reported by zlib.
+       Previously, the buffer containing the error message had
+       been deallocated by gzclose() before the message was printed.
+
+2008-01-07  Martin Mares <mj@ucw.cz>
+
+       * update-pciids.sh: Added quiet mode (-q). Clean up uncompressed
+       files left by previous versions of the pciutils. Patch by Mike
+       Frysinger.
+
+       * update-pciids.man: Mention the -q switch.
+
+2007-11-29  Martin Mares <mj@ucw.cz>
+
+       * lib/dump.c: Squashed compiler warnings about code with
+       no effect (there really were surplus *'s).
+
+2007-11-06  Martin Mares <mj@ucw.cz>
+
+       * Released as 2.2.9.
+
+       * lspci.c: Added a new switch `-k' which requests printing
+       of information on kernel drivers attached to each device
+       and on kernel modules reporting the ability to handle the
+       device. So far, this is supported only on Linux with the
+       sysfs back-end, so it is implemented internally in the lspci
+       instead of the libpci. Thanks to Anicka <anicka@anicka.net>
+       for help.
+
+2007-10-19  Martin Mares <mj@ucw.cz>
+
+       * Makefile, lib/Makefile: Moved -lz from LDFLAGS to LDLIBS.
+       Also added an explicit pattern rule for linking to make sure
+       that LDLIBS is used on all platforms. Thanks to Dan Nicholson
+       for the suggestion.
+
+2007-10-19  Martin Mares <mj@ucw.cz>
+
+       * Released as 2.2.8.
+
+       * pci.ids: Revised class codes to match Conventional PCI 3.0 specs.
+       Added a couple of new ones, renumbered `ADMA continuous operation'
+       prog-if to 0x30 (even the old SATA Class Code ECN doesn't mention
+       0x40) and renumbered the satellite communication controllers.
+
+       * lib/header.h: Include `PCI hot-plug' and `Secure device'
+       capabilities from PCI 3.0 specs. Also added `SATA HBA' and
+       `Advanced features' caps from various ECN's.
+
+       * lspci.c: All known capabilities have at least their name displayed
+       now. When we are unable to decode them completely, we signalize it
+       with a `<?>' mark.
+
+       * lspci.man: Document `<?>' and also mention that extended config
+       space is currently available only with the linux_sysfs back-end.
+
+       * lspci.c: Decode the Debug port capability (per EHCI 0.96 spec).
+
+       * lspci.c: Big code cleanup: re-arranged functions in the code,
+       renamed everything related to capabilities to cap_* and
+       all options except verbose to opt_*.
+
+2007-10-14  Martin Mares <mj@ucw.cz>
+
+       * lib/[fno]bsd-*: Removed extraneous braces.
+
+2007-10-12  Martin Mares <mj@ucw.cz>
+
+       * Capability loop detection introduced 2.2.7 did not work
+         properly with extended capabilities. Fixed.
+
+2007-10-05  Martin Mares <mj@ucw.cz>
+
+       * Released as 2.2.7.
+
+       * lspci.c (show_caps, show_ext_caps): Detect and report loops in
+       capability lists.
+
+       * lspci.c, lib/header.h: Finished decoding of the PCI Express
+       capability. The extended capabilities remain undecoded for now,
+       but at least the list of them has been updated to reflect the
+       current PCI Express 2.0 spec.
+
+       * lspci.c, lib/header.h: Decode new bits of traditional registers
+       as defined by PCIE / PCI-X. This includes discard timers in the bridge
+       control register and INTx enable/status in device control/status
+       registers.
+
+       * lib/fbsd-device.c: Support domains on new FreeBSD's. Contributed
+       by Marius Strobl.
+
+2007-09-12  Hasso Tepper <hasso@estpak.ee>
+
+       * Extended the fbsd-device backend to run on Dragonfly BSD.
+
+       * lspci.c: alloca() is declared in <stdlib.h> on BSD's, not <alloca.h>.
+
+2007-09-03  Martin Mares <mj@ucw.cz>
+
+       * Resurrected the Windows port, including cross-compilation by MinGW.
+       Patch by Samuel Bronson <naesten@gmail.com>.
+
+2007-08-31  Martin Mares <mj@ucw.cz>
+
+       * Makefile, lib/Makefile: `ar' and `ranlib' can be overriden to allow
+       cross-compilation.
+
+2007-08-27  Martin Mares  <mj@ucw.cz>
+
+       * lib/names.c (pci_open): When calling gzopen(), use "rb" file mode
+       instead of "r". This is needed on DOS systems, where this function
+       somewhat illogically uses the binary flag for the compressed file
+       instead of the decompressed stream inside, where binariness really
+       matters.
+
+2007-08-14  Martin Mares  <mj@ucw.cz>
+
+       * lspci.c (show_ht): Added decoding of Hypertransport MSI mapping capability,
+       based on a patch by Jason Gunthorpe.
+
+       * tests/cap-MSI-mapping: Added a test case. I plan to add test cases
+       (which are dumps of config space) for all new features.
+
+2007-06-20  Martin Mares  <mj@ucw.cz>
+
+       * Released as 2.2.6.
+
+       * Makefile: Added an "install-lib" target. Thanks to Dan Nicholson
+       for a patch.
+
+       * Makefile, lib/Makefile: Generate and install pkg-config file
+       for libpci. Again by Dan Nicholson.
+
+2007-06-20  Thomas Schwinge  <tschwinge@gnu.org>
+
+       * lib/i386-io-hurd.h: Rewritten for new Hurd kernels.
+
+2007-05-04  Martin Mares  <mj@ucw.cz>
+
+       * Released as 2.2.5.
+
+       * pci.ids: Updated to the current snapshot of the database.
+
+2007-02-14  Martin Mares  <mj@ucw.cz>
+
+       * lspci.c (show_express): Added PCI/PCI-X to PCI-Express Bridge type.
+       Patch by Mark Glines.
+
+2007-02-09  Martin Mares  <mj@ucw.cz>
+
+       * pci.ids: Updated to the current snapshot of the database.
+
+2007-02-06  Martin Mares  <mj@ucw.cz>
+
+       * Replaced bzero() by memset() everywhere, it's better to lose a tiny
+       bit of readability than maintain hacks to make it work on various systems.
+
+       * lib/configure: tr on Solaris is a bit weird and it requires `[A-Z]'
+       instead of `A-Z'. Fortunately, the extra brackets don't hurt otherwise.
+
+       * lib/types.h, lib/configure: Solaris should use <stdint.h> to get precise
+       integer types.
+
+2007-02-04  Martin Mares  <mj@ucw.cz>
+
+       * lspci.c: alloca() needs <alloca.h>.
+
+2006-09-17  Martin Mares  <mj@ucw.cz>
+
+       * lib/dump.c: Fixed a couple of bugs in the dump backend which caused
+       devices with domains or with extended config space to be read incorrectly.
+       Also, dumps with partial lines are allowed now.
+
+2006-09-10  Martin Mares  <mj@ucw.cz>
+
+       * pci.ids: Updated to the current database snapshot.
+
+       * lspci.c (scan_device): If an error occurs when reading the standard config
+       header of a device, report it and ignore the device and return with exit
+       code 2 at the end.
+
+2006-09-09  Martin Mares  <mj@ucw.cz>
+
+       * Released as 2.2.4.
+
+       * maint/release: Remind the maintainer about the current PCI_LIB_VERSION.
+
+       * lib/pci.h: Updated PCI_LIB_VERSION.
+
+       * lspci.c (show_machine): In the `-m' mode, do proper shell escaping
+       if the fields printed contain quotes or backslashes.
+
+       * lspci.c (show_machine): Added a `-vmm' mode, which removes the misuse
+       of the `Device' tag for two different purposes.
+
+       * Makefile: Moved all system-dependent decisions to lib/configure,
+       since config.mk is included in the top-level Makefile anyway.
+
+       * lib/configure: When configuring for Linux, ignore the kernel version
+       and always build all access methods.
+
+       * Makefile (CFLAGS): Removed -Winline, it's not needed and triggers
+       at many non-interesting places with gcc 3.4.
+
+       * Whitespace cleanup of all source files.
+
+       * The pci.ids file can be stored compressed if zlib is available.
+       Added transparent decompression to lib/names.c, modified update-pciids.sh
+       to keep the file compressed if applicable, updated Makefiles.
+       Based on a patch by Matthew Wilcox, but all the bugs are mine.
+
+       * Makefile, README: Allow installation to be done to a different directory
+       from the one we will eventually be placed in by setting DESTDIR.
+       Patch by Matthew Wilcox.
+
+       * Added .gitignore files.
+
+       * Makefile (clean): Clean *.orig, too.
+
+       * Cleaned up usage of `char' and `byte'.
+
+       * lib/header.h: PCI_CLASS_DOCKING_OTHER should be 0x0a80, not 0x0a01.
+
+       * lib/header.h: Added PCI_CLASS_xxx constants for all classes currently
+       defined in the pci.ids file.
+
+2006-08-01  Martin Mares  <mj@ucw.cz>
+
+       * lib/i386-io-hurd.h: Fixed a silly typo.
+
+2006-07-30  Martin Mares  <mj@ucw.cz>
+
+       * lib/Makefile: Added a missing rule for obsd-device.o.
+
+       * lspci.c, lib/header.h: Added support for MSI per-vector masking.
+       Contributed by Petr Vandrovec.
+
+       * lspci.c, lib/header.h: Added support for the `bridge subsystem ID'
+       capability. Contributed by Petr Vandrovec.
+
+       * lspci.c (show_htype1): Fixed bug in printing of 64-bit prefetchable
+       memory windows. Fix by Petr Vandrovec.
+
+       * maint/release.pm: Exclude .git directory from releases.
+
+       * lib/i386-ports.c, lib/i386-io-*: Report failures during port access
+       initialization by a->warn() instead of calling printf() or perror()
+       directly.
+
+       * lib/i386-ports.c, lib/i386-io-*: Moved the logic which keeps track of
+       the port access state to generic code.
+
+       * lib/i386-io-hurd.h: Ask the kernel for I/O port access appropriately.
+       Contributed by Thomas Schwinge and Samuel Thibault.
+
+       * lib/i386-ports.c: Define _GNU_SOURCE, it's needed by the Hurd module.
+
+       * lib/header.h: Whitespace cleanups.
+
+       * lib/i386-io-windows.h: Fixed indentation and spelling.
+
+       * README.Windows: Mention that WinIO.dll is needed and where to get it.
+
+2006-06-27  Martin Mares  <mj@ucw.cz>
+
+       * lib/Makefile, Makefile: Added rules for building and cleaning the example.
+
+       * lib/example.c: Show how to use PCI_FILL_CLASS and used another register
+       for demonstrating the config space accesses. The example is still very
+       incomplete, though.
+
+       * lib/pci.h, lib/generic.c: Added PCI_FILL_CLASS.
+
+       * lib/sysfs.c: Fetch device ID and class from sysfs, because they can
+       be modified by kernel fixups.
+
+       * lspci.c: Use PCI_FILL_CLASS. Thanks to Matthew Willcox for the patch.
+
+2006-06-03  Martin Mares  <mj@ucw.cz>
+
+       * lspci.c: Introduced the -nn switch. Thanks to David N. Welton
+       for the idea.
+
+       * lib/names.c (pci_lookup_name): Introduced PCI_LOOKUP_MIXED and
+       cleaned up the name selection code.
+
+       * lib/names.c (pci_lookup_name): If PCI_LOOKUP_NO_NUMBERS is given,
+       pci_access->numeric_ids is ignored.
+
+       * lib/names.c (pci_lookup_name): When class is identified and
+       subclass isn't, display class name and subclass number.
+
+2006-05-31  Martin Mares  <mj@ucw.cz>
+
+       * setpci.c (main): Don't crash when an invalid width is specified.
+
+       * lspci.c, setpci.c, common.c: die() now uses the right program
+       name when printing an error message.
+
+2006-05-19  Martin Mares  <mj@ucw.cz>
+
+       * README: Mention the public GIT tree.
+
+       * README: Updated the list of ports.
+
+2006-05-10  Martin Mares  <mj@ucw.cz>
+
+       * lib/configure, lib/fbsd-device.c: Added support for GNU/kFreeBSD.
+       Thanks to Petr Salinger for the patch.
+
+2006-05-05  Martin Mares  <mj@ucw.cz>
+
+       * Released as 2.2.3.
+
+       * lspci.c (scan_device): The -D switch didn't work as intended
+       in -m mode.
+
+2006-05-05  Martin Mares  <mj@ucw.cz>
+
+       * Released as 2.2.2.
+
+       * pci.ids: Updated to the current database snapshot.
+
+       * lib/obsd-device.c (and other files in lib/*): Added OpenBSD
+       interface by Matthieu Herrb <matthieu.herrb@laas.fr>, based on
+       the existing FreeBSD interface.
+
+       * Moved pciutils to a GIT repository, which now contains merged
+       history from both CVS and Arch. Good bye, TLA!
+
+2006-03-21  Martin Mares  <mj@ucw.cz>
+
+       * lspci.c (show_slot_name): Avoid the previous changes in default
+       display of domain name when in machine-readable mode. However, `-D'
+       forces domain display even there.
+
+       * lspci.man: Added a warning on -m being the only format, which is
+       guaranteed to be stable between lspci versions.
+
+2006-03-13  Martin Mares  <mj@ucw.cz>
+
+       * lspci.man: Documented the -D switch.
+
+       * lspci.c (show_slot_name, scan_device): If there are multiple PCI
+       domains or if the `-D' switch is used, show the domain number for
+       all devices.
+
+       * lspci.c (show_verbose): Report cache line size in bytes.
+
+       * update-pciids.sh: Use curl if available. Patch by Matthew Wilcox.
+
+2006-01-04  Martin Mares  <mj@ucw.cz>
+
+       * lspci.c (show_express_link): Fixed decoding of link status register.
+       Thanks to Roland Dreier for his report.
+
+2005-12-12  Martin Mares  <mj@ucw.cz>
+
+       * lib/nbsd-libpci.c: If libpci is used by an ordinary user, allow
+       at least read-only access. Patch by Pavel Celeda <celeda@liberouter.org>.
+
+       * Makefile: Corrected library path on NetBSD.
+
+2005-11-26  Martin Mares  <mj@ucw.cz>
+
+       * Released as 2.2.1.
+
+       * lspci.c (show_machine): Subsystem vendors were printed incorrectly
+       in machine-readable modes. Thanks to Pavel Celeda for a bug report.
+
+2005-10-11  Martin Mares  <mj@ucw.cz>
+
+       * lspci.c (new_bus): Fixed a memory leak. Thanks to Paul Sangree for reporting it.
+
+2005-09-21  Martin Mares  <mj@ucw.cz>
+
+       * Released as 2.2.0.
+
+       * pci.ids: Updated copyright header.
+
+       * lib/sysfs.c (sysfs_get_resources): Removed warning about unsupported
+       64-bit addresses, they are now always supported.
+
+       * lspci.c (show_bases): Corrected printing of 64-bit addresses
+       in bus-centric mode.
+
+       * lib/configure: Enable 64-bit addresses on all Linux systems.
+
+       * lib/types.h: Don't pad 64-bit addresses to 16 xigits, only to 8 if they
+       are shorter.
+
+2005-09-11  Martin Mares  <mj@ucw.cz>
+
+       * Released as 2.1.99-test11.
+
+       * lspci.c: Removed unnecessary trailing zeros in pci_lookup_name() calls.
+
+2005-09-10  Martin Mares  <mj@ucw.cz>
+
+       * Released as 2.1.99-test10.
+
+       * pci.ids: Synchronized with the current database snapshot.
+
+       * update-pciids.sh: Changed the default URL for downloading pci.ids
+       to http://pciids.sourceforge.net/v2.2/pci.ids.
+
+       * lib/pci.h (PCI_LIB_VERSION): Added version identifier.
+
+       * lib/names.c: Rewritten the name database module almost from scratch.
+       Everything is much cleaner and there are hopefully no more memory leaks;
+       pci_lookup_name() now uses varargs in a backward compatible fashion.
+       Introduced PCI_LOOKUP_NO_NUMBERS.
+
+       The new code supports subsystem entries not tied to a specific device.
+       I had to extend the format of pci.ids in order to support it, so I have
+       extended the idea of the "C" (class) blocks and introduced "S" blocks
+       for subsystems. To avoid doing more incompatible changes in the future,
+       the parser skips unknown single-letter blocks without reporting errors.
+
+2005-08-23  Martin Mares  <mj@ucw.cz>
+
+       * Released as 2.1.99-test9.
+
+       * Makefile (OPT): Removed -fomit-frame-pointer, it's default in recent
+       gcc versions when optimizing anyway.
+
+       * Made the path to pci.ids customizable and independent on the SHAREDIR.
+       Just override IDSDIR in the top-level Makefile.
+
+       * pci.ids: Synchronized with the current database snapshot.
+
+       * lspci.man, setpci.man: Improved the man pages. Documented all access
+       methods and which operations are privileged.
+
+       * lspci.c: Another rewrite of config register caching, now also including
+       lots of internal checks. It should be now perfectly able to cope with
+       portions of the configuration space being inaccessible, for example
+       due to insufficient access rights.
+
+       * lspci.c (show_pcix_nobridge, show_pcix_bridge): Cleaned up dumping of PCI-X
+       capabilities. Includes partial support for PCI-X 2.0 (probably incomplete
+       as I haven't seen the spec).
+
+       * lspci.c: Quell warnings about unused parameters.
+
+       * lspci.c: Removed C++ comments.
+
+       * lib/header.h: Merged definitions of extended capabilities and some new
+       PCI-X capability bits from linux-2.6.11/include/pci.h.
+
+       * lspci.c (show_caps): Try to scan extended capabilities only if the
+       device has either PCI-X or PCI Express capability in its normal capability
+       list.
+
+       * lib/dump.c (dump_init): Reading of dumps works again. The dump reader
+       now also remembers how much data it has read and refuses attempts to
+       access more than that.
+
+       * setpci.man, lspci.c, README: prefer spelling "buses" over "busses".
+
+       * lspci.c: If alloca() is not available, use xmalloc(), not malloc().
+
+       * lib/configure: Added x86_64 on Linux.
+
+2005-08-22  Martin Mares  <mj@ucw.cz>
+
+       * lib/filter.c (pci_filter_parse_slot): Fixed parsing of domain filters.
+       Thanks to Matthew Wilcox for bug report.
+
+       * lspci.c: Corrected spelling of "Hz" (it was "hz" at several places).
+       Thanks to Krzysztof Oledzki for pointing that out.
+
+2004-08-19  Martin Mares  <mj@ucw.cz>
+
+       * pciutils.spec (%attr): Setting attributes for /sbin/* is an anachronism,
+       because pciutils by default install to /usr/sbin. Update.
+
+2004-08-13  Martin Mares  <mj@ucw.cz>
+
+       * Released as 2.1.99-test8.
+
+       * lib/types.h, lib/pci.h, lib/sysdep.h: `byte' and `word' are
+       no longer exported to the outside world.
+
+       * README.Windows: Updated.
+
+       * maint/release: Substitute version number in win32/config.h.
+
+       * win32/config.h: Added.
+
+       * lib/sysdep.h (bzero, strcasecmp): are macros on Windows.
+
+       * compat/getopt.[ch]: Added copies of getopt.[ch] from the GNU
+       C library for use on systems where the default libraries lack
+       proper getopt. Currently used by the Windows port.
+
+       * lib/sysdep.h, lib/types.h: Updates of the Windows port from
+       Alexander Stock.
+
+       * lib/types.h: If PCI_HAVE_Uxx_TYPES is defined, libpci doesn't define
+       its own u8, u16, u32, byte and word types and uses what the user
+       has supplied instead. With this change, all namespace clashes should
+       be gone.
+
+       * Makefile, lib/Makefile: Updated dependencies.
+
+       * pciutils.h: Include lib/sysdep.h and move NONRET et al. there.
+
+       * lib/sysdep.h: No need to include <sys/types.h> on FreeBSD, because
+       it is included unconditionally in lib/types.h.
+
+       * Moved system-dependent stuff from lib/internal.h to lib/sysdep.h,
+       which is also used by the utilities. Also moved type declarations
+       from lib/pci.h to lib/types.h.
+
+       * All files: Prepend a "PCI_" prefix in front of all configuration
+       defines to avoid namespace clashes. CAVEAT: If there is any libpci
+       application using the (undocumented) defines, it has to be updated.
+
+       * lib/Makefile: Killed HAVE_OWN_HEADER_H, since we stopped sharing
+       headers with the kernel a couple of years ago.
+
+       * lib/sysfs.c (sysfs_get_resources): We have 7 resources, not 6.
+
+       * lspci.c (show_rom): Use the same logic for printing disabled
+       or unassigned ROM's as we do in show_bases() for the other BAR's.
+
+       * lib/generic.c (pci_generic_fill_info): Better reaction to
+       invalid 64-bit addresses. Also d->hdrtype should not include
+       bit 7, which caused mysterious errors on multi-function devices.
+
+       * lib/generic.c (pci_generic_fill_info): Fill in base addresses
+       even if the regions are known to be disabled. It is the client's
+       job to interpret them. (And it is not a trivial job if you want
+       to do it correctly, since you need to check I/O and memory enables
+       on all upstream bridges, too.) However, it could be interesting to
+       introduce functions for interpreting the addresses and even for
+       mapping the regions and doing I/O on them.
+
+2004-07-30  Martin Mares  <mj@ucw.cz>
+
+       * lspci.c: HyperTransport improvements from Maciej.
+
+2004-07-11  Martin Mares  <mj@ucw.cz>
+
+       * lib/sysfs.c (sysfs_get_resources): Arguments now correspond
+       to the format string. [Patch by Bill Nottingham]
+
+2004-07-05  Martin Mares  <mj@ucw.cz>
+
+       * Released as 2.1.99-test7.
+
+       * lspci.c (config_fetch): Wanted to merge Matthew's bug fix, but
+       ended up with rewriting the fetching mechanism to be fully dynamic,
+       but avoid reading config space registers not explicitly requested.
+
+2004-06-29  Matthew Wilcox <willy@debian.org>
+
+       * lspci.c: More work on PCI Express dumping.
+
+       * lib/header.h: Updated PCI Express capability definitions.
+
+       * lib/proc.c (proc_read): Removed bogus warning.
+
+       * common.c (xrealloc): Introduced.
+
+       * lspci.man: Added -xxxx.
+
+2004-06-27  Martin Mares  <mj@ucw.cz>
+
+       * Released as 2.1.99-test6.
+
+       * lspci.c (show_msix), lib/header.h: Added dumping of MSI-X cap.
+       Patch by Roland Dreier <roland@topspin.com>, cleaned up by me.
+
+       * lspci.c (show_pcix_nobridge, show_pcix_bridge): Handle config_fetch()
+       failures.
+
+       * lib/header.h: Added PCI Express extended capabilities. Again by Matthew.
+
+       * lspci.c (show_express): Added dumping of PCI Express cap.
+       Patch by Matthew Wilcox.
+
+       * lib/header.h: Added a list of PCI 3.0 capabilities and also details
+       on PCI Express caps. Patch by Matthew Wilcox <willy@debian.org>.
+
+       * lspci.c (check_root): Gone. No explicit checks for root are needed,
+       report correct errors reported by the libpci instead.
+
+       * lspci.c: Added dumping of the extended config space on "-xxxx".
+       Better caching of config registers.
+
+       * setpci.c (main): Allow access to whole 4096 bytes of the config space.
+
+       * lib/sysfs.c, lib/proc.c: Don't print error messages on short reads,
+       just return the appropriate error code.
+
+       * lib: Added support for extended (4096-byte) configuration space,
+       currently implemented only in Linux proc and sysfs access methods
+       and of course in the dump reader.
+
+2004-05-29  Martin Mares  <mj@ucw.cz>
+
+       * Released as 2.1.99-test5.
+
+       * lib/pci.h: Windows don't have the standard u_int* types.
+
+       * lib/internal.h: <sys/param.h> required on Windows for endianity
+       macros.
+
+       * lib/i386-ports.c: Connected i386-io-windows.h.
+
+       * lspci.c (check_root): geteuid() is not available on Windows.
+
+       * lib/i386-io-windows.h: Added Windows port contributed by Alexander
+       Stock <stock.alexander@gmx.de>.
+
+       * lib/configure: Hopefully fixed SunOS port broken by various
+       changes to the configure script.
+
+       * Makefile, lib/configure: Cross-compilation support, patch by Maciej.
+
+2004-05-28  Martin Mares  <mj@ucw.cz>
+
+       * Released as 2.1.99-test4.
+
+       * lspci.c (show_verbose): Header type 1 is probably legal for all
+       types of bridges, not only for PCI-to-PCI bridges.
+
+       * lspci.c (format_agp_rate): Write "x16", not "x@".
+       (show_agp): rate[] could overflow.
+       Bugs reported by Jakub Bogusz <qboosh@pld-linux.org>.
+
+       * lspci.c (show_ht_*): Show HyperTransport capability with all its
+       details. Once again code by Maciej simplified (i.e., possibly broken)
+       by me.
+
+       * lib/header.h: Added declarations of HyperTransport capability.
+       Again thanks to Maciej.
+
+       * lspci.c: Decode all bits of the secondary status word in type 1 headers.
+       Thanks to Maciej W. Rozycki <macro@ds2.pg.gda.pl> for the patch.
+
+2003-12-27  Martin Mares  <mj@ucw.cz>
+
+       * Released as 2.1.99-test3.
+
+       * lspci.man, setpci.man: Document domains and correct spelling.
+
+       * lib/dump.c (dump_init): Added ability to read domain numbers.
+
+       * lspci.c: Devices in domains different from 0 have their slot number
+       printed as "<domain>:<bus>:<slot>.<func>". Tree view supports domains
+       as well.
+
+       * lib/filter.c: Slot filters understand domains.
+
+       * lib/generic.c: Mention the domain in slot numbers in all error messages.
+
+       * lib/internal.h: The #ifdef for Linux <asm/byteorder.h> was wrong.
+
+       * lib/access.c (pci_get_dev): Added support for domains.
+
+       * lib/sysfs.c (sysfs_scan): Read vendor and device ID from the config
+       registers (or to be precise, leave it for the generic parts of the pcilib
+       to do so) instead of reading them from the sysfs. It's faster this way.
+
+       * lspci.c (show_pcix): Don't touch pci_dev->hdrtype, it's an internal
+       variable. Better read it from the config registers (it's cached anyway).
+
+       * lib/sysfs.c (sysfs_scan), lib/proc.c (proc_scan): Don't read the hdrtype.
+         lib/generic.c (pci_generic_fill_info): If hdrtype is -1 (unset), read it.
+         Saves lots of unnecessary file accesses.
+
+       * lib/pci.h (PCIADDR_PORT_FMT): Use %llx instead of %Lx, because the latter
+       is not supported by all C libraries.
+
+       * Makefile: Always enter the lib directory (remember that we don't have
+       full dependecies for the library in the top-level Makefile; hmmm, another
+       thing to rewrite some day).
+
+       * lib/sysfs.c: Added Linux sysfs access method based on the patch
+       written by Matthew Wilcox <willy@fc.hp.com>.
+
+       * lib/proc.c: Renamed the access method name from "/proc/bus/pci" to "Linux-proc".
+
+       * lib/pread.h: The hacks to support pread on various versions
+       of Linux libc moved there.
+
+       * lib/proc.c (proc_setup): The return value of snprintf() varies
+       between glibc versions, so we need to check both for a negative
+       values and for too large values.
+
+       * Removed last few references to the "Linux PCI Utilities", the
+       package is pretty cross-platform now :)
+
+2003-12-27  Martin Mares  <mj@ucw.cz>
+
+       * Released as 2.1.99-test2.
+
+       * README, pciutils.lsm, pciutils.spec: Use @VERSION@ to make the
+       release scripts insert the current version. "make release" is gone.
+
+       * maint/release, maint/release.pm: Added a new system of scripts for
+       making releases including inter-version diffs etc.
+
+       * Makefile: Cleaned up.
+
+       * lib/fbsd-device.c: I patched another copy of this file by mistake,
+       this time the version checks should be right.
+
+2003-12-27  Martin Mares  <mj@ucw.cz>
+
+       * Released as 2.1.99-test1.
+
+       * pciutils.h, common.c, lspci.man, setpci.man, lib/internal.h:
+       Remove shadows of the syscall access method which was never
+       implemented.
+
+       * update-pciids.sh: Try to preserve permissions of the old file
+       if chmod supports --reference. Should close Debian Bug #223740.
+
+       * lib/proc.c (proc_setup): Increased path name length limit to 1024.
+       Thanks for Redhat and Mandrake for inspiration.
+
+       * lib/configure: Recognize ppc and ppc64, both have 64-bit addresses.
+       Grabbed from Redhat (Fedora) patches.
+
+2003-12-27  Martin Mares  <mj@ucw.cz>
+
+       Merged bug fixes from Debian patches:
+
+       * lspci.c (show_verbose): "Cache Line Size" should be capitalized.
+
+       * lspci.c (show_pcix_nobridge): Added a missing newline.
+
+       * lib/proc.c (proc_scan): When reading the header type, don't
+       forget to clear the topmost bit indicating that the device has
+       multiple functions.
+
+2003-12-27  Martin Mares  <mj@ucw.cz>
+
+       Updated the FreeBSD port. Thanks to Samy Al Bahra <samy@kerneled.com>
+       for the patches:
+
+       * lib/Makefile: Add ${FREEBSD_SYS} to the include path if it's defined.
+       * lib/fbsd-device.c: Select the right set of system includes according
+       to __FreeBSD_version.
+
+2003-12-27  Martin Mares  <mj@ucw.cz>
+
+       Merged support for Solaris on i386 by Bill Moore <billm@eng.sun.com>
+       and cleaned up:
+
+       * lib/configure: Recognize SunOS.
+       * lib/internal.h: Learn how to recognize byte order on SunOS.
+       * lib/i386-ports.c: Split OS-dependent I/O port access from i386-ports.c.
+       * lib/i386-io-linux.h: Linux specific part.
+       * lib/i386-io-hurd.h: GNU/Hurd specific part.
+       * lib/i386-io-sunos.h: SunOS specific part.
+
+2003-12-26  Martin Mares  <mj@ucw.cz>
+
+       * lib/header.h (PCI_*_MASK): Cast to pciaddr_t explicitly.
+
+       * lib/pci.h: Types declared in <sys/types.h> should be usable on all
+       platforms we currently support, so kill the forest of #ifdef's and
+       use them in all cases.
+
+       * lib/pci.h: Use ULONG_MASK to decide whether we should use long
+       or long long to represent a 64-bit address. Killed HAVE_LONG_ADDRESS.
+       Define format strings for addresses, port numbers and IRQ numbers
+       directly in pci.h.
+
+       * lib/proc.c (proc_scan): Use PCIADDR_T_FMT for scanf'ing addresses.
+
+2003-12-26  Marco Gerards  <metgerards@student.han.nl>
+
+       Added support for the GNU Hurd (cleaned up by Martin Mares):
+
+       * lib/configure [GNU]: Use the i386 ports for configuration access.
+       * lib/i386-ports.c: Don't call iopl() on the Hurd.
+       * lib/pci.h [OS_GNU]: Include <sys/types.h> and use it for defining
+       u8 to u32.
+
+2003-12-26  Martin Mares  <mj@ucw.cz>
+
+       * lspci.c (show_pcix_bridge, show_pcix_nobridge): Don't forget to call
+       config_fetch() to ensure that the registers have been read. Thanks to
+       Bill Wood <bill.wood@hp.com> for the patch.
+
+       * lspci.c: Ensure that failure of config_fetch() is handled correctly
+       at all places.
+
+       * lspci.man: There was one more explicit reference to /usr/share/pci.ids.
+       Changed to @SHAREDIR@. Patch from Maciej W. Rozycki <macro@ds2.pg.gda.pl>.
+
+       * setpci.c (main): Better error messages.
+
+       * setpci.c (ex_op): The demo mode should disable only writing, not reading.
+
+       * setpci.man: The documentation was inconsistent on what should -D do.
+       Document the new behaviour.
+
+       * pciutils.h, common.c, setpci.c: Introduced a NONRET macro encapsulating
+       the GCC specific __attribute__((noreturn)) and killed the hack with
+       redefining __attribute__ on non-GCC compilers.
+
+       * Makefile: Added missing dependencies. Parallel builds work now.
+       Problem reported by Andreas Haumer <andreas@xss.co.at>, but I chose
+       a different fix.
+
+       * Makefile (MANDIR): Use `:=' instead of `=' to avoid executing the shell
+       command every time $(MANDIR) is referenced.
+
+       * lspci.c (main): The error message for `lspci -s' incorrectly mentioned
+       a `-f' switch. Reported by Steve Finney <Steve.Finney@SpirentCom.COM>.
+
+       * lib/generic.c: Removed memory leak in pci_generic_bus_scan().
+       Reported by Gary Parnes <gary_parnes@terago.com>.
+
+       * Replaced obsolete syntax of __attribute__((unused)) in the middle of
+       parameter declarations (which is no longer supported by GCC 3.1) by the
+       current syntax (attribute at the end). Thanks to pixel@mandrakesoft.com
+       for reporting this problem.
+
+       * Removed CVS $Id$ tags from all files.
+
+       * Makefile: Added some more warnings.
+
+       * setpci.c: Cleaned up mask/value code.
+
+2003-12-08 Thayne Harbaugh <tharbaugh@lnxi.com>
+
+       * setpci.c: Individual bits to be set can be specified as <value>:<mask>.
+
+2003-11-29  Martin Mares  <mj@ucw.cz>
+
+       * Imported the pciutils sources to my Arch repository. Good-bye, CVS.
+
+2003-01-04  Martin Mares  <mj@ucw.cz>
+
+       * Released as 2.1.11.
+
+       * Makefile: Changed configuration of installation directories --
+       all paths are now set at the top of the Makefile instead of being
+       scattered between the installation rules. The default installation
+       now goes always to /usr/local regardless of the OS as most distributions
+       already contain some version of pciutils and we don't want custom
+       installations to interfere with the default ones.
+
+       * Makefile: Removed a couple of ancient install hacks: we no longer
+       try to avoid overwriting a newer pci.ids file (users are now expected
+       to use update-ids) and we don't try to remove /etc/pci.ids (a long time
+       has passed since the last version which used it).
+
+       * Makefile: Paths to pci.ids in man pages automatically get the right path.
+
+       * Added the update-ids utility.
+
+       * lib: Removed partially implemented "syscall" access method which will
+       probably never be needed.
+
+2002-12-27  Martin Mares  <mj@ucw.cz>
+
+       * lib/nbsd-libpci.c: Cleaned up and hopefully made it endian safe.
+
+       * lib/generic.c (pci_generic_scan_bus): Added work-around for devices with
+       discontiguous numbering of functions. This is already present in the Linux
+       kernel for several years, but I forgot to update pciutils as well.
+
+2002-12-26  Martin Mares  <mj@ucw.cz>
+
+       * lib/header.h, lspci.c: Dump AGP3 flags and speeds.
+
+       * lib/pci.h, Makefile: Removed HAVE_OWN_HEADER_H. Always use our own header,
+       there is no reason to prefer the kernel version.
+
+       * lib/proc.c (proc_scan): Don't forget to initialize hdrtype.
+
+       * Added preliminary version of NetBSD support by Quentin Garnier
+       <netbsd@quatriemek.com>.
+
+2002-04-06  Martin Mares  <mj@ucw.cz>
+
+       * lspci.c: Mention "-xxx" in the help.
+
+2002-03-30  Martin Mares  <mj@ucw.cz>
+
+       * Released as 2.1.10.
+
+       * Removed pci.ids from the CVS as they are now maintained separately.
+       They are still included in the tarball, but if you are building pciutils
+       from CVS sources or you want to get a newer ID file than the one distributed,
+       just use "make update-ids" to download the most recent snapshot from
+       pciids.sf.net.
+
+       * Makefile, README: Updated accordingly.
+
+       * Makefile: Added a couple of maintenance targets.
+
+       * maint/*: Maintainer's utilities now reside here (present only in CVS,
+       not in the tarball).
+
+       * lib/names.c (parse_name_list): End-of-line comments are no longer
+       supported. Hashes are now perfectly valid in all names and they start
+       a comment only at the start of the line.
+
+2002-03-26  Martin Mares  <mj@ucw.cz>
+
+       * README: Rewritten.
+
+       * Makefile: When the currently installed pci.ids file is newer than
+       the version to be installed, don't overwrite it. Suggested by
+       Jean Delvare <khali@linux-fr.org>.
+
+2002-03-24  Martin Mares  <mj@ucw.cz>
+
+       * lspci.c (show_pcix_bridge): Added PCI-X capability display.
+       Contributed by Jeff Garzik <jgarzik@mandrakesoft.com>.
+
+       * lib/header.h: Added PCI-X stuff. Again by Jeff.
+
+       * Makefile (CFLAGS): -Werror is gone.
+
+       * lspci.c (format_agp_rate): Fixed AGP rate reporting.
+
+       * lib/filter.c (pci_filter_parse_slot): Allow bus 0xff, slot 0x1f and
+       function 7.
+
+       * lib/names.c (pci_lookup_name): When printing unknown subsystem vendor
+       or device hexadecimally, don't confuse it with chip vendor/device ID.
+       First reported by Marc Boucher <marc@mbsi.ca>.
+
+2001-11-04  Martin Mares  <mj@ucw.cz>
+
+       * Released as 2.1.9.
+
+       * pci.ids: Synced with the PCI ID Repository at SourceForge
+       (http://pciids.sourceforge.net/).
+
+2000-08-25  Martin Mares  <mj@albireo.ucw.cz>
+
+       * pci.ids: Updated ID's, synced with kernel 2.4.0-test7.
+
+2000-06-13  Martin Mares  <mj@albireo.ucw.cz>
+
+       * Makefile (uninstall): Fixed.
+
+       * pci.ids: ID updates.
+
+2000-05-20  Martin Mares  <mj@albireo.ucw.cz>
+
+       * Released as 2.1.8.
+
+       * pci.ids: ID updates.
+
+       * lspci.c (show_verbose): Min/max latency is now printed in nanoseconds.
+
+2000-05-04  Martin Mares  <mj@albireo.ucw.cz>
+
+       * lspci.c (show_verbose): If the header type doesn't match device
+       class, just print a warning and still use the header type, assuming
+       bogus class info.
+
+2000-05-01  Martin Mares  <mj@albireo.ucw.cz>
+
+       * lspci.c (show_pm): Updated according to PCI PM specs 1.1.
+
+       * pci.ids: Updated Contemporary Control ARCnet card entries.
+
+       * pci.ids: Synchronized class list with latest PCI SIG documents.
+
+2000-04-29  Martin Mares  <mj@albireo.ucw.cz>
+
+       * lib/names.c (pci_lookup_name): Fixed the cheat.
+
+       * lib/internal.h: Moved UNUSED/inline hacks above all other declarations.
+
+       * pci.ids: Various ID updates.
+
+2000-04-21  Martin Mares  <mj@albireo.ucw.cz>
+
+       * Released as 2.1.7.
+
+       * pciutils.spec: Added German description.
+
+       * lib/names.c (pci_lookup_name): Added a cheat for case that subsystem ID's
+       are the same as device ID and just output subsystem name according to
+       device name.
+
+       * lib/proc.c: Use UNUSED instead of __attribute__((unused)).
+
+       * lib/pci.h: Added the correct typedefs for AIX.
+
+       * lib/generic.c (pci_generic_scan_bus): Export.
+
+       * lib/configure: Detect AIX. Use "echo '...\c'" instead of
+       "echo -n" if the shell isn't bash.
+
+       * lspci.c: Avoid using alloca() if not compiled by GCC.
+       (insert_dev): Avoid returning a void value.
+
+       * Makefile: Choose which install utility to use according to
+       OS type. Also use `-o' instead of `-or' in find arguments.
+       Part of the AIX port.
+
+       * lib/aix-device.c: Added AIX low-level interface. Contributed
+       by Dave Johnson <ddj@brown.edu>, thanks a lot!
+
+       * pci.ids: Few new ID's.
+
+       * pciutils.h, lib/internal.h: Redefine __attribute__ and inline
+       when not compiled by GCC.
+
+2000-04-17  Martin Mares  <mj@albireo.ucw.cz>
+
+       * Released as 2.1.6.
+
+       * pci.ids: Added a large batch of ID's contributed by Gunther
+       Mayer <gunther.mayer@braunschweig.netsurf.de> and synced the
+       list with the 2.3.99pre6 kernel.
+
+Thu Mar  9 13:11:39 2000  Martin Mares  <mj@albireo.ucw.cz>
+
+       * lib/example.c: Added a simple example of how to use
+       the library.
+
+       * lspci.man, setpci.man: Revealed --version. Well spotted
+       by Adam Sulmicki.
+
+       * pci.ids: Added lots of new ID's and synced with 2.3.50.
+
+Tue Feb 15 00:16:21 2000  Martin Mares  <mj@albireo.ucw.cz>
+
+       * Released as 2.1.5.
+
+       * pciutils.spec: Updated spec file from Andreas Jaeger. Now using
+       %{_mandir} to find the right location to install manual pages to.
+
+       * pci.ids: New ID's.
+
+       * setpci.c (main): Don't crash when `-s' or `-d' is given with
+       no argument.
+
+Mon Jan 24 20:04:11 2000  Andreas Jaeger  <aj@suse.de>
+
+       * lib/i386-ports.c: Include <asm/io.h> only on systems without
+       glibc.
+
+Mon Jan 24 11:24:43 2000  Martin Mares  <mj@albireo.ucw.cz>
+
+       * Makefile: Modified to work with the Linux FHS brain-damaged idea
+       of putting man pages to /usr/share/man. Now we choose either /usr/man
+       or /usr/share/man depending on which one exists.
+
+Sun Jan 23 10:52:34 2000  Martin Mares  <mj@albireo.ucw.cz>
+
+       * pci.ids: Synced with Linux 2.3.40.
+
+       * Released as version 2.1.4.
+
+Thu Jan 20 11:08:32 2000  Martin Mares  <mj@albireo.ucw.cz>
+
+       * lspci.c (scan_device): Fixed bug in reading of cardbus extensions.
+
+       * lib/proc.c: pread/pwrite fixed again, this time on libc5 :(
+
+       * lspci.c (format_agp_rate): Better formatting of AGP rates.
+
+       * pci.ids: New ID's.
+
+       * lib/configure: Added configuration for ia64 (the same as for Alpha).
+       Patch from Stephane Eranian <eranian@cello.hpl.hp.com>.
+
+Thu Jan 13 23:01:52 2000  Martin Mares  <mj@albireo.ucw.cz>
+
+       * Released as version 2.1.3.
+
+       * pci.ids: New ID's.
+
+       * lspci.c: Alpha IO_FORMAT fix by Andrea Arcangeli.
+
+       * lib/access.c: Corrected order of access methods -- it's wonderful how
+       long could such a bug remain unspotted. Thanks go to Andreas Schockenhoff.
+
+Sat Dec 11 23:34:48 1999  Martin Mares  <mj@albireo.ucw.cz>
+
+       * Released as version 2.1.2.
+
+       * lib/names.c (pci_lookup_name): Fixed printing of unknown subsystem ID's.
+
+Sat Dec  4 13:11:03 1999  Martin Mares  <mj@albireo.ucw.cz>
+
+       * Released as version 2.1.1.
+
+       * pci.ids: Several new ID's.
+
+       * setpci.c (exec_op): Don't forget to increment address after writing
+       single value, so that `30.b=12,34,56,78' works as expected. Reported
+       by Petr Soucek <petr@ryston.cz>.
+
+Wed Nov  3 10:24:38 1999  Martin Mares  <mj@albireo.ucw.cz>
+
+       * lspci.c (show_terse): If prog-if is zero, but it's present in the
+       ID list, show it.
+
+Sat Oct 30 11:06:35 1999  Martin Mares  <mj@albireo.ucw.cz>
+
+       * Released as version 2.1.
+
+       * pci.ids: Synced to devlist.h in 2.3.24 kernel. Merged in
+       lots of contributed entries.
+
+Thu Oct 14 10:40:12 1999  Dave Jones    <dave@powertweak.com>
+
+       * pci.ids: Added lots of subsystem definitions.
+
+Sat Oct  9 14:32:28 1999  Martin Mares  <mj@albireo.ucw.cz>
+
+       * setpci.man: Better example.
+
+       * lspci.c: Resolve prog-if names.
+
+       * lib/names.c: Adapted to new pci.ids syntax.
+
+       * pci.ids: Reorganized the pci.ids file. Subsystems are listed
+       under devices, classes can optionally contain prog-if information.
+       New ID's, as usually.
+
+Wed Sep 22 09:45:24 1999  Martin Mares  <mj@albireo.ucw.cz>
+
+       * pci.ids: New ID's. As usually.
+
+       * lspci.c (show_htype1, show_htype2): Don't show `closed' bridge windows
+       unless we're vvvery verbose.
+
+Mon Sep 20 11:22:54 1999  Martin Mares  <mj@albireo.ucw.cz>
+
+       * lspci.c (show_htype2): Don't forget a TAB before the "I/O window" line.
+
+Tue Sep 14 09:31:01 1999  Martin Mares  <mj@albireo.ucw.cz>
+
+       * pci.ids: New ID's. Again.
+
+Thu Aug  5 17:45:42 1999  Martin Mares  <mj@albireo.ucw.cz>
+
+       * lspci.c (show_size): Don't show size if it's zero (usually
+       due to bus-centric mode being enabled).
+
+Tue Jul 20 13:25:09 1999  Martin Mares  <mj@albireo.ucw.cz>
+
+       * lib/pci.h: Types are OS dependent.
+
+       * lib/internal.h: Byte order hacks are OS dependent.
+
+       * lib/configure: Recognize FreeBSD. Also set OS_XXX according to the OS.
+
+       * lib/Makefile, lib/access.c: Added fbsd-device target.
+
+       * pci.ids: Added an entry for PLX 9080 bridges with subsystem ID
+       incorrectly set to device ID.
+
+       * README: Added a note that we support FreeBSD.
+
+       * Makefile (PREFIX, ROOT): Set it depending on the OS.
+       (%.8): Grrr, BSD date is not able to convert date formats the same way
+       as GNU date does. Use sed instead.
+       (install): Use `-c' when calling install.
+
+       * lib/fbsd-device.c: Added FreeBSD /dev/pci access module contributed
+       by Jari Kirma <kirma@cs.hut.fi>.
+
+       * lib/proc.c: Rewrote the pread/pwrite things once again. Use pread
+       and pwrite only when we are certain it's safe (i.e., glibc 2.1
+       on all architectures or any libc on a i386 where we really know
+       how to use syscalls directly). In all other cases, emulate it
+       with lseek/read/write.
+
+       * pci.ids: Some more IDs.
+
+Mon Jul 19 14:10:36 1999  Martin Mares  <mj@albireo.ucw.cz>
+
+       * pci.ids: Added IDs of parallel port controller cards as sent
+       by Tim Waugh <tim@cyberelk.demon.co.uk>.
+
+Wed Jul  7 00:55:48 1999  Martin Mares  <mj@albireo.ucw.cz>
+
+       * lib/proc.c (proc_scan): HAVE_LONG_ADDRESS instead of HAVE_64BIT_ADDRESS.
+
+       * lspci.c: ADDR_FORMAT now depends on both HAVE_64BIT_ADDRESS and
+       HAVE_LONG_ADDRESS.
+
+       * lib/configure: HAVE_64BIT_ADDRESS now doesn't imply that the addresses
+       are represented as long long. Introduced a new flag HAVE_LONG_ADDRESS
+       to indicate this. Both Sparc architectures now use both 64BIT_ADDRESS
+       and LONG_ADDRESS since they have 32-bit userland, but don't set LONG_ADDRESS
+       on Alpha.
+
+       * lspci.c (show_msi): Added dumping of the MSI capability.
+       (show_slotid): The same for SlotID capability.
+       (show_caps): Seperated capability dumping, because it should
+       be used for both htype0 and htype1. Even PCI 2.2 doesn't mention
+       layout of htype2, so I'm a bit unsure about it wrt capabilities
+       -- they at least have to live somewhere else since address 0x34
+       is already defined differently in htype2.
+
+       * lib/header.h (PCI_STATUS_UDF): Marked as obsolete (PCI 2.2).
+       (PCI_BASE_ADDRESS_MEM_TYPE_1M): Ditto.
+       (PCI_CAP_ID_*): Added some new capabilities defined in PCI 2.2.
+
+       * lspci.c (show_htype0): Mask out lowest 2 bits from all capability pointers
+       (required by the PCI 2.2 specs).
+
+Mon Jul  5 12:45:19 1999  Martin Mares  <mj@albireo.ucw.cz>
+
+       * lspci.c (show_size): Added new function for dumping of region sizes.
+       (show_rom): Added. Now correctly dumps unassigned ROM addresses, disabled
+       ROMs et cetera.
+
+       * lib/pci.h (struct pci_dev): known_fields moved to the public part
+       of the structure.
+
+       * Added support for region sizes. Needs support in the kernel, because
+       sizes have to be scanned before drivers initialize yourself. pci_fill_info()
+       now returns a bitmask of what fields were really read.
+
+Mon Jun 28 18:37:51 1999  Dave Jones    <dave@powertweak.com>
+
+       * Makefile:
+         Added `uninstall' target - removes all traces of pciutils.
+       * pci.ids:
+         - Lots of cleanups in the ATI, S3, Adaptec vendors.
+         - Changed Compaq QVision 1280/p definitions, as it's not possible
+           to determine the revision from the device ID.
+         - Same for the Tseng ET4000.
+           The id's said I had a rev C, when it was actually a rev B.
+         - Removed some unnecessary strings
+           `PCI'. Unless it's an AGP card, it should be obvious that it's PCI.
+           `Ethernet card'. This should be determined from config space.
+         - Lots of other new vendors & devices
+         - Other additional small cleanups.
+
+Mon Jun 21 22:11:10 1999  Martin Mares  <mj@albireo.ucw.cz>
+
+       * lib/names.c (pci_lookup_name): When device ID lookup
+       fails, return hexadecimal device ID instead of vendor ID.
+       Well spotted by Axel Bodemann <Axel.Bodemann@ruhr-uni-bochum.de>,
+       I've just extended the fix to subsystem ID's.
+
+Thu Jun 17 19:48:21 1999  Martin Mares  <mj@albireo.ucw.cz>
+
+       * lspci.c (show_agp): Bug fix from Petr Vandrovec
+       <vandrove@vc.cvut.cz>. The command register was displayed
+       incorrectly.
+
+Wed Jun  2 22:42:44 1999  Martin Mares  <mj@albireo.ucw.cz>
+
+       * lib/proc.c (SYS_pread, SYS_pwrite): Use hard-coded
+       numbers if not supplied by the libc.
+
+Wed May 19 13:24:39 1999  Martin Mares  <mj@albireo.ucw.cz>
+
+       * Released the whole package as version 2.0.
+
+Fri May 14 22:42:02 1999  Martin Mares  <mj@albireo.ucw.cz>
+
+       * pci.ids: Added several new ID's contributed by people
+       on the linux-pci list.
+
+Mon Apr 19 15:21:08 1999  Jakub Jelinek  <jj@ultra.linux.cz>
+
+       * lspci.c: Display I/O addresses correctly on sparc64.
+       * lib/header.h: Ditto.
+
+       * lib/configure: On sparc set HAVE_64BIT* as well, we want
+       a binary which works on both 32bit and 64bit SPARCs.
+
+Sun Apr 18 21:14:58 1999  Martin Mares  <mj@albireo.ucw.cz>
+
+       * lspci.c, lib/proc.c: Alpha compilation fixes from Matthew Jacob
+       <mjacob@feral.com>.
+
+       * pci.ids: A lot of updates from Adam J. Richter <adam@yggdrasil.com>.
+
+Sun Feb 28 22:26:21 1999  Martin Mares  <mj@albireo.ucw.cz>
+
+       * lspci.c (do_map_bus): Don't dump functions 1--7 if not flagged
+       as a multi-function device, because several single-function devices
+       don't decode the function bits at all.
+
+Sun Feb 14 23:48:22 1999  Martin Mares  <mj@albireo.ucw.cz>
+
+       * Makefile (install): Don't use "-o root -g root" for installation
+       since it breaks on machines where programs are not installed by root.
+       Reported by Richard Gooch <rgooch@atnf.csiro.au>
+
+Tue Feb  9 15:54:39 1999  Martin Mares  <mj@albireo.ucw.cz>
+
+       * lspci.c (show_bases): Use new address masking macros and pciaddr_t.
+
+       * lib/pci.h: Using pciaddr_t for bus addresses, which are 32-bit
+       or 64-bit depending on CPU.
+
+       * lib/pci.h (PCI_ADDR_MEM_MASK): Added macros for address masks
+       according to bus address width.
+
+Thu Jan 28 20:54:16 1999  Martin Mares  <mj@albireo.ucw.cz>
+
+       * Released as 1.99.4.
+
+       * lspci.c: Capability list parser now recognizes both AGP
+       registers and PCI Power Management registers (the latter
+       is mainly guesswork based on DEC/Intel 21153 bridge specs
+       since I don't have the PCI Power Management document).
+
+       * lspci.c: Replaced numerous occurences of (x & flag) ? '+' : '-'
+       by FLAG macro.
+
+       * lspci.c: Added bridge checks to bus mapping code.
+
+Wed Jan 27 14:59:16 1999  Martin Mares  <mj@albireo.ucw.cz>
+
+       * lspci.c: Implemented bus mapping mode (-M).
+
+       * lspci.c (scan_devices): Split to scan_devices() and scan_device().
+       (show): Split to show() and show_device().
+
+       * lib/access.c (pci_init): When a->method == PCI_ACCESS_AUTO,
+       set it to the real access method afterwards.
+
+Mon Jan 25 23:46:13 1999  Martin Mares  <mj@albireo.ucw.cz>
+
+       * lib/generic.c (pci_generic_fill_info): If in buscentric mode,
+       don't check PCI_COMMAND for I/O and memory enables.
+
+Mon Jan 25 21:28:49 1999  Martin Mares  <mj@albireo.ucw.cz>
+
+       * Makefile: Added target `release' which substitutes new version
+       number to .spec, .lsm and README. Also rewrote target `dist'.
+
+       * Released as 1.99.3.
+
+Sun Jan 24 22:10:36 1999  Martin Mares  <mj@albireo.ucw.cz>
+
+       * lib/header.h: Until kernel adopts new layout of PCI
+       includes (i.e., separate declaration of header structure,
+       functions and device IDs), which is not going to happen
+       before 2.3, we'll use our own definiton of the header.
+
+       * lspci.c (show_verbose): Display `Cap' flag in device status.
+
+       * lspci.c (show_htype0): Display capability lists whereever
+       available. The only capability name we recognize now is `AGP'.
+       Unfortunately, capabilities are stored in device-dependent
+       portion of the configuration space and are thus available
+       only to root unless you read a dump.
+
+       * lspci.c (scan_devices): Use cache instead of buffering.
+
+       * lib/buffer.c: Removed (obsoleted by the cache).
+
+       * lib/access.c: Added general caching mechanism.
+
+Sat Jan 23 21:30:54 1999  Martin Mares  <mj@albireo.ucw.cz>
+
+       * pci.ids: Added few devices.
+
+Fri Jan 22 19:29:31 1999  Martin Mares  <mj@albireo.ucw.cz>
+
+       * Version string is now defined in top-level Makefile, exported
+       to the configure script and also substituted to man pages.
+
+       * lspci.c (show_bases): Rewrote displaying of 64-bit addresses.
+       (show_verbose): Rewrote interrupt display logic.
+
+       * lib/i386-ports.c: Include sys/io.h only on glibc systems.
+
+       * lib/configure: Rewrote detection of Linux versions. Now it
+       works on 2.0 kernels (only with direct/dump access, of course).
+
+       * lib/internal.h: New bytesex macros using <asm/byteorder.h>
+       whenever available.
+
+       * lib/proc.c (proc_read, proc_write): Distinguish between short
+       read/write and real errors.
+
+       * lspci.c (show_htype{0,1}): Always use d->dev->rom_base_addr since
+       libpci respects buscentric mode automatically.
+
+       * lspci.c (show_hex_dump): For CardBus bridges, print out 128
+       bytes of header (the whole standard part).
+
+       * common.c: pcilib options are now all uppercase. Also moved
+       PCI access debugging option here.
+
+       * Released as 1.99.2.
+
+Wed Jan 20 22:50:35 1999  Martin Mares  <mj@albireo.ucw.cz>
+
+       * Wrote configure script and rewrote Makefiles.
+
+       * Removed few unused variables.
+
+Wed Jan 20 12:21:56 1999  Martin Mares  <mj@albireo.ucw.cz>
+
+       * common.c: Moved several functions used in both setpci and lspci
+       here. This includes parsing of libpci-related options.
+
+       * More library tweaks.
+
+       * filter.c, names.c: Moved to library.
+
+       * setpci: Rewritten to use the library.
+
+       * Released as 1.99.1.
+
+Tue Jan 19 23:00:12 1999  Martin Mares  <mj@albireo.ucw.cz>
+
+       * lspci.c (scan_devices): For cardbus bridges, read first 128
+       bytes of config space to get full standard header.
+
+       * Makefile (CFLAGS): Removed "-Wno-unused".
+
+       * Started the "New Generation" branch and introduced the
+       PCI library.
+
+       * lspci: Rewritten to use the library.
+
+Tue Jan 19 22:24:08 1999  Martin Mares  <mj@albireo.ucw.cz>
+
+       * Released as version 1.10.
+
+Mon Jan 18 08:51:17 1999  Martin Mares  <mj@albireo.ucw.cz>
+
+       * lspci.8, setpci.8: Miscellaneous fixes as suggested by
+       Dag Wieers <dag@digibel.be>.
+
+Sun Nov 29 20:05:56 1998  Martin Mares  <mj@albireo.ucw.cz>
+
+       * pciutils.spec (Name): Update from Krzysztof G. Baranowski.
+
+Sun Nov 22 10:49:56 1998  Martin Mares  <mj@albireo.ucw.cz>
+
+       * Makefile, pciutils.h: Moved pci.ids to /usr/share.
+
+       * Released as version 1.09.
+
+Wed Nov 18 15:47:05 1998  Martin Mares  <mj@albireo.ucw.cz>
+
+       * lspci.c (show_htype1): Fixed displaying of prefetchable memory behind
+       bridge. Thanks to Petr Vandrovec <vandrove@vc.cvut.cz> for bug report.
+
+Fri Oct 23 18:59:19 1998  Martin Mares  <mj@albireo.ucw.cz>
+
+       * setpci.c: Don't include <syscall-list.h> with glibc >= 2.1.
+
+Mon Oct 19 21:53:30 1998  Martin Mares  <mj@albireo.ucw.cz>
+
+       * Released as version 1.08.
+
+       * setpci.c: glibc 2.1.x already defines pread() and pwrite().
+
+       * lspci.8: Changed warning about lspci -xxx.
+
+       * lspci.c: Require "-xxx" for full configuration space dump, so that
+       it's impossible to crash the machine by single typo.
+
+       * specs: Added (courtesy of Krzysztof G. Baranowski <kgb@knm.org.pl>).
+
+Wed Sep  9 12:03:24 1998  Martin Mares  <mj@albireo.ucw.cz>
+
+       * lspci.c (show_bases): Better displaying of unassigned and
+       disabled bases. Thanks to Gabriel Paubert <paubert@iram.es>
+       for an idea.
+
+Wed Sep  2 10:58:01 1998  Martin Mares  <mj@albireo.ucw.cz>
+
+       * setpci.c (pread): Recognize glibc 1.99 numbered as 2.0 on the PPC.
+       (thanks to Geert Uytterhoeven for finding this out)
+
+Fri Jul 17 10:43:30 1998  Martin Mares  <mj@albireo.ucw.cz>
+
+       * lspci.c (show_verbose): Print subsystem ID using the new resolver.
+       (show_machine): Print subsystem ID.
+
+       * names.c: New name resolution engine supporting subsystem IDs.
+
+       * Released as version 1.07.
+
+Wed Jul 15 15:37:21 1998  Martin Mares  <mj@albireo.ucw.cz>
+
+       * lspci.c (show_htype2 etc.): Displaying of CardBus headers.
+       (show_bases): Honor the `cnt' argument.
+       (grow_tree): Parse CardBus headers in tree mode as well.
+
+       * pci.h: Updated CardBus header field description. I still don't
+       have the CardBus standard available, but OZ6832 specs contain
+       full description of all header fields supported by the chip.
+
+Tue Jun  9 22:53:59 1998  Martin Mares  <mj@albireo.ucw.cz>
+
+       * Released as 1.06.
+
+       * names.c (parse_name_list): Killed an unused variable.
+
+       * setpci.c (pread, pwrite): Define SYS_(pread|pwrite) as __NR_\1
+       if they are not defined by glibc (needed for glibc built on older
+       kernels). Ugly.
+
+       * setpci.c (exec_op): Fixed error messages. Thanks, Steve!
+
+Mon Jun  8 10:59:22 1998  Martin Mares  <mj@albireo.ucw.cz>
+
+       * Released as 1.05.
+
+       * setpci.c: Problems with pread()/pwrite() with glibc on Alpha
+       should be gone. Again thanks to Steve for bug report.
+
+       * filter.c (filter_parse_slot): Fixed ":x" type filters.
+
+       * pci.ids: Killed duplicate entry. Thanks to Stephen Williams
+       <steve@icarus.com> for reporting this.
+
+Sun Jun  7 19:27:51 1998  Martin Mares  <mj@albireo.ucw.cz>
+
+       * lspci.c (main), setpci.c (main): Implemented "--version".
+
+       * Released as 1.04.
+
+       * pciutils.h (PCIUTILS_VERSION): Added version string.
+
+       * filter.c, names.c: Extraneous #include <linux/pci.h> removed.
+       Thanks to Geert Uytterhoeven <Geert.Uytterhoeven@cs.kuleuven.ac.be>
+       for bug report.
+
+Thu May 28 14:45:58 1998  Martin Mares  <mj@lomikel.karlin.mff.cuni.cz>
+
+       * pci.ids: More updates from Jens Maurer.
+
+Wed Apr 22 10:00:39 1998  Martin Mares  <mj@albireo.ucw.cz>
+
+       * pci.ids: Updates from Jens Maurer.
+
+Sun Apr 19 11:14:25 1998  Martin Mares  <mj@albireo.ucw.cz>
+
+       * Released as 1.03.
+
+       * setpci.8: Written.
+
+       * setpci.c: Finished.
+
+       * lspci.c: Now able to fetch expansion ROM base from kernel device list
+       and print it if not in buscentric mode.
+
+Tue Mar 31 23:11:57 1998  Martin Mares  <mj@albireo.ucw.cz>
+
+       * setpci.c: Added.
+
+Sun Mar 22 15:39:08 1998  Martin Mares  <mj@albireo.ucw.cz>
+
+       * lspci.8: Updated the documentation.
+
+       * lspci.c: Modified to use the new filtering mechanism (options -f and -d).
+
+       * filter.c: Introduced new generic device filter.
+
+Thu Mar 19 17:03:48 1998  Martin Mares  <mj@lomikel.karlin.mff.cuni.cz>
+
+       * lspci.c (grow_tree, show_tree_dev, print_it): Fixed displaying
+       of PCI-to-PCI bridges in the tree format.
+
+Sun Feb 15 10:12:25 1998  Martin Mares  <mj@albireo.ucw.cz>
+
+       * lspci.c (show_machine): Added non-verbose mode of machine-readable
+       dump.
+
+       * pci.ids: Updates from Jens Maurer.
+
+       * Released as version 1.02.
+
+Thu Feb 12 16:53:28 1998  Martin Mares  <mj@lomikel.karlin.mff.cuni.cz>
+
+       * lspci.c: Added a "-m" switch for dumping machine-readable
+       configuration data (requested by Bjoern Kriews <bkr@cut.de>).
+
+Mon Feb  9 13:17:43 1998  Martin Mares  <mj@albireo.ucw.cz>
+
+       * Makefile, pciutils.h: Include local pci.h instead of <linux/pci.h>
+       if available. This should avoid all problems with official kernel
+       not synchronized to newer PCI code in CVS -- standard distribution
+       of pciutils now contains pci.h from current CVS kernel, pciutils
+       in CVS contain no pci.h and use the correct kernel include.
+
+       * Makefile: Fixed installation path for man pages.
+
+Sat Feb  7 15:15:46 1998  Martin Mares  <mj@albireo.ucw.cz>
+
+       * README: Updated.
+
+       * lspci.8: Created a man page.
+
+       * Releasing as version 1.0.
+
+Tue Feb  3 20:56:00 1998  Martin Mares  <mj@albireo.ucw.cz>
+
+       * Makefile: Recognize architecture by calling uname and pass it as ARCH_xxx
+       to all the C sources. This should eliminate problems with 32-bit compilers
+       on sparc64.
+
+       * lspci.c (show_verbose): Recognize CardBus bridge header type.
+       (show_htype2): Stub routine.
+       (scan_config): Write sensible error message if the kernel denies reading of
+       upper part of the PCI config space.
diff --git a/Makefile b/Makefile
new file mode 100644 (file)
index 0000000..77ac06b
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,138 @@
+# Makefile for The PCI Utilities
+# (c) 1998--2008 Martin Mares <mj@ucw.cz>
+
+OPT=-O2 -g
+CFLAGS=$(OPT) -Wall -W -Wno-parentheses -Wstrict-prototypes -Wmissing-prototypes
+
+VERSION=3.0.0
+DATE=2008-04-10
+
+# Host OS and release (override if you are cross-compiling)
+HOST=
+RELEASE=
+
+# Support for compressed pci.ids (yes/no, default: detect)
+ZLIB=
+
+# Support for resolving ID's by DNS (yes/no, default: detect)
+DNS=
+
+# Build libpci as a shared library (yes/no; or local for testing; requires GCC)
+SHARED=no
+
+# ABI version suffix in the name of the shared library
+ABI_VERSION=.3
+
+# Installation directories
+PREFIX=/usr/local
+SBINDIR=$(PREFIX)/sbin
+SHAREDIR=$(PREFIX)/share
+IDSDIR=$(SHAREDIR)
+MANDIR:=$(shell if [ -d $(PREFIX)/share/man ] ; then echo $(PREFIX)/share/man ; else echo $(PREFIX)/man ; fi)
+INCDIR=$(PREFIX)/include
+LIBDIR=$(PREFIX)/lib
+PKGCFDIR=$(LIBDIR)/pkgconfig
+
+# Commands
+INSTALL=install
+DIRINSTALL=install -d
+STRIP=-s
+AR=ar
+RANLIB=ranlib
+
+# Base name of the library (overriden on NetBSD, which has its own libpci)
+LIBNAME=libpci
+
+-include lib/config.mk
+
+PCIINC=lib/config.h lib/header.h lib/pci.h lib/types.h lib/sysdep.h
+PCIINC_INS=lib/config.h lib/header.h lib/pci.h lib/types.h
+
+export
+
+pcimod-$(PCI_OS_LINUX) := pcimodules
+pcimod8-$(PCI_OS_LINUX) := pcimodules.8
+all: lib/$(PCILIB) lspci lspci-udeb setpci example lspci.8 setpci.8 pcilib.7 update-pciids update-pciids.8 $(PCI_IDS) $(pcimod-1) $(pcimod8-1)
+
+lib/$(PCILIB): $(PCIINC) force
+       $(MAKE) -C lib all
+
+force:
+
+lib/config.h lib/config.mk:
+       cd lib && ./configure
+
+lspci: lspci.o common.o lib/$(PCILIB)
+lspci-udeb: lspci.o common.o lib/libpci.a
+setpci: setpci.o common.o lib/$(PCILIB)
+pcimodules: pcimodules.o common.o lib/$(PCILIB)
+
+lspci.o: lspci.c pciutils.h $(PCIINC)
+setpci.o: setpci.c pciutils.h $(PCIINC)
+pcimodules.o: pcimodules.c pciutils.h $(PCIINC)
+common.o: common.c pciutils.h $(PCIINC)
+
+update-pciids: update-pciids.sh
+       sed <$< >$@ "s@^FILE=.*@FILE=$(IDSDIR)/pci.ids@"
+       chmod +x $@
+
+# The example of use of libpci
+example: example.o lib/$(PCILIB)
+example.o: example.c $(PCIINC)
+
+%: %.o
+       $(CC) $(LDFLAGS) $(TARGET_ARCH) $^ $(LDLIBS) -o $@
+
+lspci-udeb: lspci.o
+       $(CC) $(LDFLAGS) $(TARGET_ARCH) $^ $(LDLIBS) -lz -lresolv -o $@
+
+%.8 %.7: %.man
+       M=`echo $(DATE) | sed 's/-01-/-January-/;s/-02-/-February-/;s/-03-/-March-/;s/-04-/-April-/;s/-05-/-May-/;s/-06-/-June-/;s/-07-/-July-/;s/-08-/-August-/;s/-09-/-September-/;s/-10-/-October-/;s/-11-/-November-/;s/-12-/-December-/;s/\(.*\)-\(.*\)-\(.*\)/\3 \2 \1/'` ; sed <$< >$@ "s/@TODAY@/$$M/;s/@VERSION@/pciutils-$(VERSION)/;s#@IDSDIR@#$(IDSDIR)#"
+
+clean:
+       rm -f `find . -name "*~" -o -name "*.[oa]" -o -name "\#*\#" -o -name TAGS -o -name core -o -name "*.orig"`
+       rm -f update-pciids lspci setpci example lib/config.* *.[78] pci.ids.* lib/*.pc lib/*.so lib/*.so.*
+       rm -f pcimodules
+       rm -rf maint/dist
+
+distclean: clean
+
+install: all
+# -c is ignored on Linux, but required on FreeBSD
+       $(DIRINSTALL) -m 755 $(DESTDIR)$(SBINDIR) $(DESTDIR)$(IDSDIR) $(DESTDIR)$(MANDIR)/man8 $(DESTDIR)$(MANDIR)/man7
+       $(INSTALL) -c -m 755 $(STRIP) lspci setpci $(pcimod-1) $(DESTDIR)$(SBINDIR)
+       #$(INSTALL) -c -m 755 $(STRIP) lspci-udeb $(DESTDIR)-udeb$(SBINDIR)/lspci
+       $(INSTALL) -c -m 755 update-pciids $(DESTDIR)$(SBINDIR)
+       $(INSTALL) -c -m 644 $(PCI_IDS) $(DESTDIR)$(IDSDIR)
+       $(INSTALL) -c -m 644 lspci.8 setpci.8 update-pciids.8 $(pcimod8-1) $(DESTDIR)$(MANDIR)/man8
+       $(INSTALL) -c -m 644 pcilib.7 $(DESTDIR)$(MANDIR)/man7
+ifeq ($(SHARED),yes)
+       $(DIRINSTALL) -m 755 $(DESTDIR)$(LIBDIR)
+       $(INSTALL) -c -m 644 lib/$(PCILIB) $(DESTDIR)$(LIBDIR)
+       ln -sf $(PCILIB) $(DESTDIR)$(LIBDIR)/$(LIBNAME).so$(ABI_VERSION)
+endif
+
+install-lib: $(PCIINC_INS) lib/$(PCILIB) lib/$(PCILIBPC)
+       $(DIRINSTALL) -m 755 $(DESTDIR)$(INCDIR)/pci $(DESTDIR)$(LIBDIR) $(DESTDIR)$(PKGCFDIR)
+       $(INSTALL) -c -m 644 $(PCIINC_INS) $(DESTDIR)$(INCDIR)/pci
+       $(INSTALL) -c -m 644 lib/$(PCILIB) $(DESTDIR)$(LIBDIR)
+       $(INSTALL) -c -m 644 lib/$(PCILIBPC) $(DESTDIR)$(PKGCFDIR)
+ifeq ($(SHARED),yes)
+       ln -sf $(LIBNAME).so$(ABI_VERSION) $(DESTDIR)$(LIBDIR)/$(LIBNAME).so
+endif
+
+uninstall: all
+       rm -f $(DESTDIR)$(SBINDIR)/lspci $(DESTDIR)$(SBINDIR)/setpci $(DESTDIR)$(SBINDIR)/update-pciids
+       rm -f $(DESTDIR)-udeb$(SBINDIR)/lspci
+       rm -f $(DESTDIR)$(IDSDIR)/$(PCI_IDS)
+       rm -f $(DESTDIR)$(MANDIR)/man8/lspci.8 $(DESTDIR)$(MANDIR)/man8/setpci.8 $(DESTDIR)$(MANDIR)/man8/update-pciids.8
+       rm -f $(DESTDIR)$(SBINDIR)/pcimodules $(DESTDIR)$(MANDIR)/man8/pcimodules.8
+       rm -f $(DESTDIR)$(MANDIR)/man7/pcilib.7
+ifeq ($(SHARED),yes)
+       rm -f $(DESTDIR)$(LIBDIR)/$(PCILIB) $(DESTDIR)$(LIBDIR)/$(LIBNAME).so$(ABI_VERSION)
+endif
+
+pci.ids.gz: pci.ids
+       gzip -9 <$< >$@
+
+.PHONY: all clean distclean install install-lib uninstall force
diff --git a/README b/README
new file mode 100644 (file)
index 0000000..da2171a
--- /dev/null
+++ b/README
@@ -0,0 +1,147 @@
+This package contains the PCI Utilities, version 3.0.0.
+
+Copyright (c) 1997--2008 Martin Mares <mj@ucw.cz>
+
+All files in this package can be freely distributed and used according
+to the terms of the GNU General Public License, either version 2 or
+(at your opinion) any newer version. See http://www.gnu.org/ for details.
+
+
+1. What's that?
+~~~~~~~~~~~~~~~
+The PCI Utilities package contains a library for portable access to PCI bus
+configuration registers and several utilities based on this library.
+
+In runs on the following systems:
+
+       Linux           (via /sys/bus/pci, /proc/bus/pci or i386 ports)
+       FreeBSD         (via /dev/pci)
+       NetBSD          (via libpci)
+       OpenBSD         (via /dev/pci)
+       GNU/kFreeBSD    (via /dev/pci)
+       Solaris/i386    (direct port access)
+       Aix             (via /dev/pci and odmget)
+       GNU Hurd        (direct port access)
+       Windows         (direct port access)
+
+It should be very easy to add support for other systems as well (volunteers
+wanted; if you want to try that, I'll be very glad to see the patches and
+include them in the next version).
+
+The utilities include:  (See manual pages for more details)
+
+  - lspci: displays detailed information about all PCI buses and devices.
+
+  - setpci: allows to read from and write to PCI device configuration
+    registers. For example, you can adjust the latency timers with it.
+    CAUTION: There is a couple of dangerous points and caveats, please read
+    the manual page first!
+
+  - update-pciids: download the current version of the pci.ids file.
+
+
+2. Compiling and (un)installing
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Just run "make" to compile the package and then "make install" to install it.
+Please note that GNU make is needed on most platforms.
+
+If you want to change the default installation location, please override
+the PREFIX variable specified in the Makefile -- e.g., you can use
+"make PREFIX=/opt/pciutils install" to create a separate installation
+not interfering with the rest of your system.  Setting the DESTDIR variable
+will allow you to install to a different directory from the one you intend
+to eventually run it from.  This is useful for people who are packaging
+pciutils to install on other computers.
+
+There are several options which can be set in the Makefile or overridden
+when running make:
+
+  ZLIB=yes/no  Enable support for compressed pci.ids (requires zlib).
+               If it is enabled, pciutils will use pci.ids.gz in preference to
+               pci.ids, even if the pci.ids file is newer.  If the pci.ids.gz
+               file is missing, it will use pci.ids instead.  If you do not
+               specify this option, the configure script will try to guess
+               automatically based on the presence of zlib.
+
+  DNS=yes/no   Enable support for querying the central database of PCI ID's
+               using DNS.  Requires libresolv (which is available on most
+               systems as a part of the standard libraries) and tries to
+               autodetect its presence if the option is not specified.
+
+  SHARED=yes/  Build libpci as a shared library.  Requires GCC 4.0 or newer.
+  no/local     The ABI of the shared library is intended to remain backward
+               compatible for a long time (we use symbol versioning to achieve
+               that, like GNU libc does).  The value `local' includes the
+               right directory name in the binaries, so the utilities can be
+               run without installation.  This is not recommended for any
+               production builds.
+
+"make install-lib" installs the library together with its header files
+for use by other programs.
+
+When you are bored of dumping PCI registers, just use "make uninstall".
+
+
+3. Getting new ID's
+~~~~~~~~~~~~~~~~~~~
+The database of PCI ID's (the pci.ids file) gets out of date much faster
+than I release new versions of this package.
+
+If you are missing names for any of your devices or you just want to stay
+on the bleeding edge, download the most recent pci.ids file from
+http://pciids.sf.net/ (e.g., by running the update-ids utility).
+
+Alternatively, you can use `lspci -q' to query the central database
+for new entries via network.
+
+If your devices still appear as unknown, please send us their ID's and
+names, the detailed instructions for submissions are listed on the
+sf.net web page.
+
+
+4. Getting new versions
+~~~~~~~~~~~~~~~~~~~~~~~
+New versions of pciutils are available at the following places:
+
+       ftp://atrey.karlin.mff.cuni.cz/pub/linux/pci/
+       ftp://ftp.kernel.org/pub/software/utils/pciutils/ (expect a couple of hours delay)
+       ftp://metalab.unc.edu/pub/Linux/hardware/ (expect a couple of days delay)
+
+There is also a public GIT tree at:
+
+       git://git.kernel.org/pub/scm/utils/pciutils/pciutils.git
+
+
+5. Using the library
+~~~~~~~~~~~~~~~~~~~~
+So far, there is only a little documentation for the library except for the
+general introduction in the pcilib(7) man page. If you want to use the
+library in your programs, please follow the comments in lib/pci.h and in
+the example program example.c.
+
+
+6. Feedback
+~~~~~~~~~~~
+If you have any bug reports or suggestions, send them to the author.
+
+If you have any new ID's, I'll be very glad to add them to the database, but
+please take a look at http://pciids.sf.net/ first and follow the instructions.
+
+If you want, subscribe to linux-pci@atrey.karlin.mff.cuni.cz (send
+"subscribe linux-pci" to majordomo@atrey.karlin.mff.cuni.cz).
+Release notes about new versions will be send to the list and problems with
+the Linux PCI support will be probably discussed there, too.
+
+
+7. Miscellanea
+~~~~~~~~~~~~~~
+You also might want to look at the pciutils web page containing release
+notes and other news: http://mj.ucw.cz/pciutils.shtml .
+
+There also exists a utility called PowerTweak which is able to fine tune
+parameters of many chipsets much better than the Bridge Optimization code
+in Linux kernel (already removed in 2.3.x). See http://powertweak.sf.net/
+for more information.
+
+                                       Have fun
+                                                       Martin
diff --git a/README.Windows b/README.Windows
new file mode 100644 (file)
index 0000000..7a85fda
--- /dev/null
@@ -0,0 +1,11 @@
+Since 2.1.99-test5, pciutils should also be compilable on Windows. Thanks
+to Alexander Stock for contributing the port.
+
+Updated after version 2.2.6 to compile again, and with MinGW, even (only?)
+cross-compiling. (Hopefully it works with MSVC too.)
+
+To use this port, you need to install WinIO.dll first. You can get it
+from http://www.internals.com/.
+
+However, you need to use win32/config.{h,mk} instead of the automatically
+generated lib/config.{h,mk} as lib/configure does not run on Windows.
diff --git a/TODO b/TODO
new file mode 100644 (file)
index 0000000..f9370ae
--- /dev/null
+++ b/TODO
@@ -0,0 +1,24 @@
+- review class names
+
+Capabilities with partial decoding:
+- PCIe 2nd set of control/status registers (have spec)
+- HyperTransport caps (have spec)
+
+Capabilities with no decoding:
+- VPD (have spec)
+- CompactPCI hot-swap
+- CompactPCI central resource control
+- AGP3
+- Secure device
+- SATA HBA (have spec)
+- Advanced features (have spec)
+- Advanced Error Reporting (ext'd)
+- Virtual Channel (ext'd)
+- Power Budgeting (ext'd)
+- Root Complex * (ext'd)
+- Multi-Function Virtual Channel (ext'd)
+- Root Bridge Control Block (ext'd)
+- Access Controls (ext'd)
+
+PCIIDS:
+- delete old DB at SF
diff --git a/common.c b/common.c
new file mode 100644 (file)
index 0000000..ed39b87
--- /dev/null
+++ b/common.c
@@ -0,0 +1,126 @@
+/*
+ *     The PCI Utilities -- Common Functions
+ *
+ *     Copyright (c) 1997--2008 Martin Mares <mj@ucw.cz>
+ *
+ *     Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <unistd.h>
+
+#include "pciutils.h"
+
+void NONRET
+die(char *msg, ...)
+{
+  va_list args;
+
+  va_start(args, msg);
+  fprintf(stderr, "%s: ", program_name);
+  vfprintf(stderr, msg, args);
+  fputc('\n', stderr);
+  exit(1);
+}
+
+void *
+xmalloc(unsigned int howmuch)
+{
+  void *p = malloc(howmuch);
+  if (!p)
+    die("Unable to allocate %d bytes of memory", howmuch);
+  return p;
+}
+
+void *
+xrealloc(void *ptr, unsigned int howmuch)
+{
+  void *p = realloc(ptr, howmuch);
+  if (!p)
+    die("Unable to allocate %d bytes of memory", howmuch);
+  return p;
+}
+
+static void
+set_pci_method(struct pci_access *pacc, char *arg)
+{
+  char *name;
+  int i;
+
+  if (!strcmp(arg, "help"))
+    {
+      printf("Known PCI access methods:\n\n");
+      for (i=0; name = pci_get_method_name(i); i++)
+       if (name[0])
+         printf("%s\n", name);
+      exit(0);
+    }
+  else
+    {
+      i = pci_lookup_method(arg);
+      if (i < 0)
+       die("No such PCI access method: %s (see `-A help' for a list)", arg);
+      pacc->method = i;
+    }
+}
+
+static void
+set_pci_option(struct pci_access *pacc, char *arg)
+{
+  if (!strcmp(arg, "help"))
+    {
+      struct pci_param *p;
+      printf("Known PCI access parameters:\n\n");
+      for (p=NULL; p=pci_walk_params(pacc, p);)
+       printf("%-20s %s (%s)\n", p->param, p->help, p->value);
+      exit(0);
+    }
+  else
+    {
+      char *sep = strchr(arg, '=');
+      if (!sep)
+       die("Invalid PCI access parameter syntax: %s", arg);
+      *sep++ = 0;
+      if (pci_set_param(pacc, arg, sep) < 0)
+       die("Unrecognized PCI access parameter: %s (see `-O help' for a list)", arg);
+    }
+}
+
+int
+parse_generic_option(int i, struct pci_access *pacc, char *optarg)
+{
+  switch (i)
+    {
+#ifdef PCI_HAVE_PM_INTEL_CONF
+    case 'H':
+      if (!strcmp(optarg, "1"))
+       pacc->method = PCI_ACCESS_I386_TYPE1;
+      else if (!strcmp(optarg, "2"))
+       pacc->method = PCI_ACCESS_I386_TYPE2;
+      else
+       die("Unknown hardware configuration type %s", optarg);
+      break;
+#endif
+#ifdef PCI_HAVE_PM_DUMP
+    case 'F':
+      pci_set_param(pacc, "dump.name", optarg);
+      pacc->method = PCI_ACCESS_DUMP;
+      break;
+#endif
+    case 'A':
+      set_pci_method(pacc, optarg);
+      break;
+    case 'G':
+      pacc->debugging++;
+      break;
+    case 'O':
+      set_pci_option(pacc, optarg);
+      break;
+    default:
+      return 0;
+    }
+  return 1;
+}
diff --git a/compat/README b/compat/README
new file mode 100644 (file)
index 0000000..6660945
--- /dev/null
@@ -0,0 +1,2 @@
+This directory contains implementations of standard library functions
+for systems where the default C libraries lack them.
diff --git a/compat/getopt.c b/compat/getopt.c
new file mode 100644 (file)
index 0000000..6a53fa9
--- /dev/null
@@ -0,0 +1,693 @@
+/* Getopt for GNU.
+   NOTE: getopt is now part of the C library, so if you don't know what
+   "Keep this file name-space clean" means, talk to roland@gnu.ai.mit.edu
+   before changing it!
+
+   Copyright (C) 1987, 88, 89, 90, 91, 92, 1993
+       Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published by the
+   Free Software Foundation; either version 2, or (at your option) any
+   later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef __STDC__
+#  ifndef const
+#    define const
+#  endif
+#endif
+
+/* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>.  */
+#ifndef _NO_PROTO
+#define _NO_PROTO
+#endif
+
+#include <stdio.h>
+#include <string.h>
+
+/* Comment out all this code if we are using the GNU C Library, and are not
+   actually compiling the library itself.  This code is part of the GNU C
+   Library, but also included in many other GNU distributions.  Compiling
+   and linking in this code is a waste when using the GNU C library
+   (especially if it is a shared library).  Rather than having every GNU
+   program understand `configure --with-gnu-libc' and omit the object files,
+   it is simpler to just do this in the source for each such file.  */
+
+#if defined (_LIBC) || !defined (__GNU_LIBRARY__)
+
+
+/* This needs to come after some library #include
+   to get __GNU_LIBRARY__ defined.  */
+#ifdef __GNU_LIBRARY__
+/* Don't include stdlib.h for non-GNU C libraries because some of them
+   contain conflicting prototypes for getopt.  */
+#include <stdlib.h>
+#endif                         /* GNU C library.  */
+
+/* If GETOPT_COMPAT is defined, `+' as well as `--' can introduce a
+   long-named option.  Because this is not POSIX.2 compliant, it is
+   being phased out.  */
+/* #define GETOPT_COMPAT */
+
+/* This version of `getopt' appears to the caller like standard Unix `getopt'
+   but it behaves differently for the user, since it allows the user
+   to intersperse the options with the other arguments.
+
+   As `getopt' works, it permutes the elements of ARGV so that,
+   when it is done, all the options precede everything else.  Thus
+   all application programs are extended to handle flexible argument order.
+
+   Setting the environment variable POSIXLY_CORRECT disables permutation.
+   Then the behavior is completely standard.
+
+   GNU application programs can use a third alternative mode in which
+   they can distinguish the relative order of options and other arguments.  */
+
+#include "getopt.h"
+
+/* For communication from `getopt' to the caller.
+   When `getopt' finds an option that takes an argument,
+   the argument value is returned here.
+   Also, when `ordering' is RETURN_IN_ORDER,
+   each non-option ARGV-element is returned here.  */
+
+char *optarg = 0;
+
+/* Index in ARGV of the next element to be scanned.
+   This is used for communication to and from the caller
+   and for communication between successive calls to `getopt'.
+
+   On entry to `getopt', zero means this is the first call; initialize.
+
+   When `getopt' returns EOF, this is the index of the first of the
+   non-option elements that the caller should itself scan.
+
+   Otherwise, `optind' communicates from one call to the next
+   how much of ARGV has been scanned so far.  */
+
+/* XXX 1003.2 says this must be 1 before any call.  */
+int optind = 0;
+
+/* The next char to be scanned in the option-element
+   in which the last option character we returned was found.
+   This allows us to pick up the scan where we left off.
+
+   If this is zero, or a null string, it means resume the scan
+   by advancing to the next ARGV-element.  */
+
+static char *nextchar;
+
+/* Callers store zero here to inhibit the error message
+   for unrecognized options.  */
+
+int opterr = 1;
+
+/* Set to an option character which was unrecognized.
+   This must be initialized on some systems to avoid linking in the
+   system's own getopt implementation.  */
+
+#define BAD_OPTION '\0'
+int optopt = BAD_OPTION;
+
+/* Describe how to deal with options that follow non-option ARGV-elements.
+
+   If the caller did not specify anything,
+   the default is REQUIRE_ORDER if the environment variable
+   POSIXLY_CORRECT is defined, PERMUTE otherwise.
+
+   REQUIRE_ORDER means don't recognize them as options;
+   stop option processing when the first non-option is seen.
+   This is what Unix does.
+   This mode of operation is selected by either setting the environment
+   variable POSIXLY_CORRECT, or using `+' as the first character
+   of the list of option characters.
+
+   PERMUTE is the default.  We permute the contents of ARGV as we scan,
+   so that eventually all the non-options are at the end.  This allows options
+   to be given in any order, even with programs that were not written to
+   expect this.
+
+   RETURN_IN_ORDER is an option available to programs that were written
+   to expect options and other ARGV-elements in any order and that care about
+   the ordering of the two.  We describe each non-option ARGV-element
+   as if it were the argument of an option with character code 1.
+   Using `-' as the first character of the list of option characters
+   selects this mode of operation.
+
+   The special argument `--' forces an end of option-scanning regardless
+   of the value of `ordering'.  In the case of RETURN_IN_ORDER, only
+   `--' can cause `getopt' to return EOF with `optind' != ARGC.  */
+
+static enum {
+       REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
+} ordering;
+\f
+#ifdef __GNU_LIBRARY__
+/* We want to avoid inclusion of string.h with non-GNU libraries
+   because there are many ways it can cause trouble.
+   On some systems, it contains special magic macros that don't work
+   in GCC.  */
+#include <string.h>
+#define        my_index        strchr
+#define        my_strlen       strlen
+#else
+
+/* Avoid depending on library functions or files
+   whose names are inconsistent.  */
+
+#if __STDC__ || defined(PROTO)
+extern char *getenv(const char *name);
+extern int strcmp(const char *s1, const char *s2);
+extern int strncmp(const char *s1, const char *s2, int n);
+
+static int my_strlen(const char *s);
+static char *my_index(const char *str, int chr);
+#else
+extern char *getenv();
+#endif
+
+static int my_strlen(const char *str)
+{
+       int n = 0;
+       while (*str++)
+               n++;
+       return n;
+}
+
+static char *my_index(const char *str, int chr)
+{
+       while (*str) {
+               if (*str == chr)
+                       return (char *) str;
+               str++;
+       }
+       return 0;
+}
+
+#endif                         /* GNU C library.  */
+\f
+/* Handle permutation of arguments.  */
+
+/* Describe the part of ARGV that contains non-options that have
+   been skipped.  `first_nonopt' is the index in ARGV of the first of them;
+   `last_nonopt' is the index after the last of them.  */
+
+static int first_nonopt;
+static int last_nonopt;
+
+/* Exchange two adjacent subsequences of ARGV.
+   One subsequence is elements [first_nonopt,last_nonopt)
+   which contains all the non-options that have been skipped so far.
+   The other is elements [last_nonopt,optind), which contains all
+   the options processed since those non-options were skipped.
+
+   `first_nonopt' and `last_nonopt' are relocated so that they describe
+   the new indices of the non-options in ARGV after they are moved.
+
+   To perform the swap, we first reverse the order of all elements. So
+   all options now come before all non options, but they are in the
+   wrong order. So we put back the options and non options in original
+   order by reversing them again. For example:
+       original input:      a b c -x -y
+       reverse all:         -y -x c b a
+       reverse options:     -x -y c b a
+       reverse non options: -x -y a b c
+*/
+
+#if __STDC__ || defined(PROTO)
+static void exchange(char **argv);
+#endif
+
+static void exchange(char **argv)
+{
+       char *temp, **first, **last;
+
+       /* Reverse all the elements [first_nonopt, optind) */
+       first = &argv[first_nonopt];
+       last = &argv[optind - 1];
+       while (first < last) {
+               temp = *first;
+               *first = *last;
+               *last = temp;
+               first++;
+               last--;
+       }
+       /* Put back the options in order */
+       first = &argv[first_nonopt];
+       first_nonopt += (optind - last_nonopt);
+       last = &argv[first_nonopt - 1];
+       while (first < last) {
+               temp = *first;
+               *first = *last;
+               *last = temp;
+               first++;
+               last--;
+       }
+
+       /* Put back the non options in order */
+       first = &argv[first_nonopt];
+       last_nonopt = optind;
+       last = &argv[last_nonopt - 1];
+       while (first < last) {
+               temp = *first;
+               *first = *last;
+               *last = temp;
+               first++;
+               last--;
+       }
+}
+\f
+/* Scan elements of ARGV (whose length is ARGC) for option characters
+   given in OPTSTRING.
+
+   If an element of ARGV starts with '-', and is not exactly "-" or "--",
+   then it is an option element.  The characters of this element
+   (aside from the initial '-') are option characters.  If `getopt'
+   is called repeatedly, it returns successively each of the option characters
+   from each of the option elements.
+
+   If `getopt' finds another option character, it returns that character,
+   updating `optind' and `nextchar' so that the next call to `getopt' can
+   resume the scan with the following option character or ARGV-element.
+
+   If there are no more option characters, `getopt' returns `EOF'.
+   Then `optind' is the index in ARGV of the first ARGV-element
+   that is not an option.  (The ARGV-elements have been permuted
+   so that those that are not options now come last.)
+
+   OPTSTRING is a string containing the legitimate option characters.
+   If an option character is seen that is not listed in OPTSTRING,
+   return BAD_OPTION after printing an error message.  If you set `opterr' to
+   zero, the error message is suppressed but we still return BAD_OPTION.
+
+   If a char in OPTSTRING is followed by a colon, that means it wants an arg,
+   so the following text in the same ARGV-element, or the text of the following
+   ARGV-element, is returned in `optarg'.  Two colons mean an option that
+   wants an optional arg; if there is text in the current ARGV-element,
+   it is returned in `optarg', otherwise `optarg' is set to zero.
+
+   If OPTSTRING starts with `-' or `+', it requests different methods of
+   handling the non-option ARGV-elements.
+   See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above.
+
+   Long-named options begin with `--' instead of `-'.
+   Their names may be abbreviated as long as the abbreviation is unique
+   or is an exact match for some defined option.  If they have an
+   argument, it follows the option name in the same ARGV-element, separated
+   from the option name by a `=', or else the in next ARGV-element.
+   When `getopt' finds a long-named option, it returns 0 if that option's
+   `flag' field is nonzero, the value of the option's `val' field
+   if the `flag' field is zero.
+
+   The elements of ARGV aren't really const, because we permute them.
+   But we pretend they're const in the prototype to be compatible
+   with other systems.
+
+   LONGOPTS is a vector of `struct option' terminated by an
+   element containing a name which is zero.
+
+   LONGIND returns the index in LONGOPT of the long-named option found.
+   It is only valid when a long-named option has been found by the most
+   recent call.
+
+   If LONG_ONLY is nonzero, '-' as well as '--' can introduce
+   long-named options.  */
+
+int _getopt_internal(int argc, char *const *argv, const char *optstring,
+                    const struct option *longopts, int *longind, int long_only)
+{
+       int option_index;
+
+       optarg = 0;
+
+       /* Initialize the internal data when the first call is made.
+          Start processing options with ARGV-element 1 (since ARGV-element 0
+          is the program name); the sequence of previously skipped
+          non-option ARGV-elements is empty.  */
+
+       if (optind == 0) {
+               first_nonopt = last_nonopt = optind = 1;
+
+               nextchar = NULL;
+
+               /* Determine how to handle the ordering of options and nonoptions.  */
+
+               if (optstring[0] == '-') {
+                       ordering = RETURN_IN_ORDER;
+                       ++optstring;
+               } else if (optstring[0] == '+') {
+                       ordering = REQUIRE_ORDER;
+                       ++optstring;
+               } else if (getenv("POSIXLY_CORRECT") != NULL)
+                       ordering = REQUIRE_ORDER;
+               else
+                       ordering = PERMUTE;
+       }
+
+       if (nextchar == NULL || *nextchar == '\0') {
+               if (ordering == PERMUTE) {
+                       /* If we have just processed some options following some non-options,
+                          exchange them so that the options come first.  */
+
+                       if (first_nonopt != last_nonopt && last_nonopt != optind)
+                               exchange((char **) argv);
+                       else if (last_nonopt != optind)
+                               first_nonopt = optind;
+
+                       /* Now skip any additional non-options
+                          and extend the range of non-options previously skipped.  */
+
+                       while (optind < argc && (argv[optind][0] != '-' || argv[optind][1] == '\0')
+#ifdef GETOPT_COMPAT
+                              && (longopts == NULL
+                                  || argv[optind][0] != '+' || argv[optind][1] == '\0')
+#endif                         /* GETOPT_COMPAT */
+                           )
+                               optind++;
+                       last_nonopt = optind;
+               }
+
+               /* Special ARGV-element `--' means premature end of options.
+                  Skip it like a null option,
+                  then exchange with previous non-options as if it were an option,
+                  then skip everything else like a non-option.  */
+
+               if (optind != argc && !strcmp(argv[optind], "--")) {
+                       optind++;
+
+                       if (first_nonopt != last_nonopt && last_nonopt != optind)
+                               exchange((char **) argv);
+                       else if (first_nonopt == last_nonopt)
+                               first_nonopt = optind;
+                       last_nonopt = argc;
+
+                       optind = argc;
+               }
+
+               /* If we have done all the ARGV-elements, stop the scan
+                  and back over any non-options that we skipped and permuted.  */
+
+               if (optind == argc) {
+                       /* Set the next-arg-index to point at the non-options
+                          that we previously skipped, so the caller will digest them.  */
+                       if (first_nonopt != last_nonopt)
+                               optind = first_nonopt;
+                       return EOF;
+               }
+
+               /* If we have come to a non-option and did not permute it,
+                  either stop the scan or describe it to the caller and pass it by.  */
+
+               if ((argv[optind][0] != '-' || argv[optind][1] == '\0')
+#ifdef GETOPT_COMPAT
+                   && (longopts == NULL || argv[optind][0] != '+' || argv[optind][1] == '\0')
+#endif                         /* GETOPT_COMPAT */
+                   ) {
+                       if (ordering == REQUIRE_ORDER)
+                               return EOF;
+                       optarg = argv[optind++];
+                       return 1;
+               }
+
+               /* We have found another option-ARGV-element.
+                  Start decoding its characters.  */
+
+               nextchar = (argv[optind] + 1 + (longopts != NULL && argv[optind][1] == '-'));
+       }
+
+       if (longopts != NULL && ((argv[optind][0] == '-' && (argv[optind][1] == '-' || long_only))
+#ifdef GETOPT_COMPAT
+                                || argv[optind][0] == '+'
+#endif                         /* GETOPT_COMPAT */
+           )) {
+               const struct option *p;
+               char *s = nextchar;
+               int exact = 0;
+               int ambig = 0;
+               const struct option *pfound = NULL;
+               int indfound = 0;
+
+               while (*s && *s != '=')
+                       s++;
+
+               /* Test all options for either exact match or abbreviated matches.  */
+               for (p = longopts, option_index = 0; p->name; p++, option_index++)
+                       if (!strncmp(p->name, nextchar, s - nextchar)) {
+                               if (s - nextchar == my_strlen(p->name)) {
+                                       /* Exact match found.  */
+                                       pfound = p;
+                                       indfound = option_index;
+                                       exact = 1;
+                                       break;
+                               } else if (pfound == NULL) {
+                                       /* First nonexact match found.  */
+                                       pfound = p;
+                                       indfound = option_index;
+                               } else
+                                       /* Second nonexact match found.  */
+                                       ambig = 1;
+                       }
+
+               if (ambig && !exact) {
+                       if (opterr)
+                               fprintf(stderr, "%s: option `%s' is ambiguous\n",
+                                       argv[0], argv[optind]);
+                       nextchar += my_strlen(nextchar);
+                       optind++;
+                       return BAD_OPTION;
+               }
+
+               if (pfound != NULL) {
+                       option_index = indfound;
+                       optind++;
+                       if (*s) {
+                               /* Don't test has_arg with >, because some C compilers don't
+                                  allow it to be used on enums.  */
+                               if (pfound->has_arg)
+                                       optarg = s + 1;
+                               else {
+                                       if (opterr) {
+                                               if (argv[optind - 1][1] == '-')
+                                                       /* --option */
+                                                       fprintf(stderr,
+                                                               "%s: option `--%s' doesn't allow an argument\n",
+                                                               argv[0], pfound->name);
+                                               else
+                                                       /* +option or -option */
+                                                       fprintf(stderr,
+                                                               "%s: option `%c%s' doesn't allow an argument\n",
+                                                               argv[0], argv[optind - 1][0],
+                                                               pfound->name);
+                                       }
+                                       nextchar += my_strlen(nextchar);
+                                       return BAD_OPTION;
+                               }
+                       } else if (pfound->has_arg == 1) {
+                               if (optind < argc)
+                                       optarg = argv[optind++];
+                               else {
+                                       if (opterr)
+                                               fprintf(stderr,
+                                                       "%s: option `%s' requires an argument\n",
+                                                       argv[0], argv[optind - 1]);
+                                       nextchar += my_strlen(nextchar);
+                                       return optstring[0] == ':' ? ':' : BAD_OPTION;
+                               }
+                       }
+                       nextchar += my_strlen(nextchar);
+                       if (longind != NULL)
+                               *longind = option_index;
+                       if (pfound->flag) {
+                               *(pfound->flag) = pfound->val;
+                               return 0;
+                       }
+                       return pfound->val;
+               }
+               /* Can't find it as a long option.  If this is not getopt_long_only,
+                  or the option starts with '--' or is not a valid short
+                  option, then it's an error.
+                  Otherwise interpret it as a short option.  */
+               if (!long_only || argv[optind][1] == '-'
+#ifdef GETOPT_COMPAT
+                   || argv[optind][0] == '+'
+#endif                         /* GETOPT_COMPAT */
+                   || my_index(optstring, *nextchar) == NULL) {
+                       if (opterr) {
+                               if (argv[optind][1] == '-')
+                                       /* --option */
+                                       fprintf(stderr, "%s: unrecognized option `--%s'\n",
+                                               argv[0], nextchar);
+                               else
+                                       /* +option or -option */
+                                       fprintf(stderr, "%s: unrecognized option `%c%s'\n",
+                                               argv[0], argv[optind][0], nextchar);
+                       }
+                       nextchar = (char *) "";
+                       optind++;
+                       return BAD_OPTION;
+               }
+       }
+
+       /* Look at and handle the next option-character.  */
+
+       {
+               char c = *nextchar++;
+               char *temp = my_index(optstring, c);
+
+               /* Increment `optind' when we start to process its last character.  */
+               if (*nextchar == '\0')
+                       ++optind;
+
+               if (temp == NULL || c == ':') {
+                       if (opterr) {
+#if 0
+                               if (c < 040 || c >= 0177)
+                                       fprintf(stderr,
+                                               "%s: unrecognized option, character code 0%o\n",
+                                               argv[0], c);
+                               else
+                                       fprintf(stderr, "%s: unrecognized option `-%c'\n", argv[0],
+                                               c);
+#else
+                               /* 1003.2 specifies the format of this message.  */
+                               fprintf(stderr, "%s: illegal option -- %c\n", argv[0], c);
+#endif
+                       }
+                       optopt = c;
+                       return BAD_OPTION;
+               }
+               if (temp[1] == ':') {
+                       if (temp[2] == ':') {
+                               /* This is an option that accepts an argument optionally.  */
+                               if (*nextchar != '\0') {
+                                       optarg = nextchar;
+                                       optind++;
+                               } else
+                                       optarg = 0;
+                               nextchar = NULL;
+                       } else {
+                               /* This is an option that requires an argument.  */
+                               if (*nextchar != '\0') {
+                                       optarg = nextchar;
+                                       /* If we end this ARGV-element by taking the rest as an arg,
+                                          we must advance to the next element now.  */
+                                       optind++;
+                               } else if (optind == argc) {
+                                       if (opterr) {
+#if 0
+                                               fprintf(stderr,
+                                                       "%s: option `-%c' requires an argument\n",
+                                                       argv[0], c);
+#else
+                                               /* 1003.2 specifies the format of this message.  */
+                                               fprintf(stderr,
+                                                       "%s: option requires an argument -- %c\n",
+                                                       argv[0], c);
+#endif
+                                       }
+                                       optopt = c;
+                                       if (optstring[0] == ':')
+                                               c = ':';
+                                       else
+                                               c = BAD_OPTION;
+                               } else
+                                       /* We already incremented `optind' once;
+                                          increment it again when taking next ARGV-elt as argument.  */
+                                       optarg = argv[optind++];
+                               nextchar = NULL;
+                       }
+               }
+               return c;
+       }
+}
+
+int getopt(int argc, char *const *argv, const char *optstring)
+{
+       return _getopt_internal(argc, argv, optstring, (const struct option *) 0, (int *) 0, 0);
+}
+
+int getopt_long(int argc, char *const *argv, const char *options, const struct option long_options, int *opt_index)
+{
+       return _getopt_internal(argc, argv, options, long_options, opt_index, 0);
+}
+
+#endif                         /* _LIBC or not __GNU_LIBRARY__.  */
+\f
+#ifdef TEST
+
+/* Compile with -DTEST to make an executable for use in testing
+   the above definition of `getopt'.  */
+
+int main(int argc, char **argv)
+{
+       int c;
+       int digit_optind = 0;
+
+       while (1) {
+               int this_option_optind = optind ? optind : 1;
+
+               c = getopt(argc, argv, "abc:d:0123456789");
+               if (c == EOF)
+                       break;
+
+               switch (c) {
+               case '0':
+               case '1':
+               case '2':
+               case '3':
+               case '4':
+               case '5':
+               case '6':
+               case '7':
+               case '8':
+               case '9':
+                       if (digit_optind != 0 && digit_optind != this_option_optind)
+                               printf("digits occur in two different argv-elements.\n");
+                       digit_optind = this_option_optind;
+                       printf("option %c\n", c);
+                       break;
+
+               case 'a':
+                       printf("option a\n");
+                       break;
+
+               case 'b':
+                       printf("option b\n");
+                       break;
+
+               case 'c':
+                       printf("option c with value `%s'\n", optarg);
+                       break;
+
+               case BAD_OPTION:
+                       break;
+
+               default:
+                       printf("?? getopt returned character code 0%o ??\n", c);
+               }
+       }
+
+       if (optind < argc) {
+               printf("non-option ARGV-elements: ");
+               while (optind < argc)
+                       printf("%s ", argv[optind++]);
+               printf("\n");
+       }
+
+       exit(0);
+}
+
+#endif                         /* TEST */
diff --git a/compat/getopt.h b/compat/getopt.h
new file mode 100644 (file)
index 0000000..0abce6e
--- /dev/null
@@ -0,0 +1,127 @@
+/* Declarations for getopt.
+   Copyright (C) 1989, 1990, 1991, 1992, 1993 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published by the
+   Free Software Foundation; either version 2, or (at your option) any
+   later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+
+#ifndef _GETOPT_H
+#define _GETOPT_H 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* For communication from `getopt' to the caller.
+   When `getopt' finds an option that takes an argument,
+   the argument value is returned here.
+   Also, when `ordering' is RETURN_IN_ORDER,
+   each non-option ARGV-element is returned here.  */
+
+extern char *optarg;
+
+/* Index in ARGV of the next element to be scanned.
+   This is used for communication to and from the caller
+   and for communication between successive calls to `getopt'.
+
+   On entry to `getopt', zero means this is the first call; initialize.
+
+   When `getopt' returns EOF, this is the index of the first of the
+   non-option elements that the caller should itself scan.
+
+   Otherwise, `optind' communicates from one call to the next
+   how much of ARGV has been scanned so far.  */
+
+extern int optind;
+
+/* Callers store zero here to inhibit the error message `getopt' prints
+   for unrecognized options.  */
+
+extern int opterr;
+
+/* Set to an option character which was unrecognized.  */
+
+extern int optopt;
+
+/* Describe the long-named options requested by the application.
+   The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
+   of `struct option' terminated by an element containing a name which is
+   zero.
+
+   The field `has_arg' is:
+   no_argument         (or 0) if the option does not take an argument,
+   required_argument   (or 1) if the option requires an argument,
+   optional_argument   (or 2) if the option takes an optional argument.
+
+   If the field `flag' is not NULL, it points to a variable that is set
+   to the value given in the field `val' when the option is found, but
+   left unchanged if the option is not found.
+
+   To have a long-named option do something other than set an `int' to
+   a compiled-in constant, such as set a value from `optarg', set the
+   option's `flag' field to zero and its `val' field to a nonzero
+   value (the equivalent single-letter option character, if there is
+   one).  For long options that have a zero `flag' field, `getopt'
+   returns the contents of the `val' field.  */
+
+struct option
+{
+#if    __STDC__
+  const char *name;
+#else
+  char *name;
+#endif
+  /* has_arg can't be an enum because some compilers complain about
+     type mismatches in all the code that assumes it is an int.  */
+  int has_arg;
+  int *flag;
+  int val;
+};
+
+/* Names for the values of the `has_arg' field of `struct option'.  */
+
+#define        no_argument             0
+#define required_argument      1
+#define optional_argument      2
+
+#if __STDC__ || defined(PROTO)
+#if defined(__GNU_LIBRARY__)
+/* Many other libraries have conflicting prototypes for getopt, with
+   differences in the consts, in stdlib.h.  To avoid compilation
+   errors, only prototype getopt for the GNU C library.  */
+extern int getopt (int argc, char *const *argv, const char *shortopts);
+#endif /* not __GNU_LIBRARY__ */
+extern int getopt_long (int argc, char *const *argv, const char *shortopts,
+                       const struct option *longopts, int *longind);
+extern int getopt_long_only (int argc, char *const *argv,
+                            const char *shortopts,
+                            const struct option *longopts, int *longind);
+
+/* Internal only.  Users should not call this directly.  */
+extern int _getopt_internal (int argc, char *const *argv,
+                            const char *shortopts,
+                            const struct option *longopts, int *longind,
+                            int long_only);
+#else /* not __STDC__ */
+extern int getopt ();
+extern int getopt_long ();
+extern int getopt_long_only ();
+
+extern int _getopt_internal ();
+#endif /* not __STDC__ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GETOPT_H */
diff --git a/debian/TODO b/debian/TODO
new file mode 100644 (file)
index 0000000..f53e9a0
--- /dev/null
@@ -0,0 +1,5 @@
+ - Handle short reads (eg symbios 875, IBM Citrine)
+
+After etch:
+ - Remove dependency on libpci2
+ - Remove pcimodules
diff --git a/debian/changelog b/debian/changelog
new file mode 100644 (file)
index 0000000..6e55174
--- /dev/null
@@ -0,0 +1,650 @@
+pciutils (1:3.0.0-9slp2) unstable; urgency=low
+
+  * Add COPYING file (GPLv2 License)
+  * Git: 165.213.180.234:slp/pkgs/xorg/miscs/pciutils
+  * Tag: pciutils_3.0.0-9slp2
+
+ -- Sung-Jin Park <sj76.park@samsung.com>  Fri, 19 Aug 2011 10:55:10 +0900
+
+pciutils (1:3.0.0-8slp2) unstable; urgency=low
+
+  * Reupload by the request from SDK team
+  * Git: 165.213.180.234:/git/slp/pkgs/xorg/miscs/pciutils
+  * Tag: pciutils_3.0.0-8slp2
+
+ -- Sung-Jin Park <sj76.park@samsung.com>  Thu, 25 Nov 2010 12:52:20 +0900
+
+pciutils (1:3.0.0-7slp2) unstable; urgency=low
+
+  * Import Debian Package
+
+ -- Sung-Jin Park <sj76.park@samsung.com>  Mon, 17 May 2010 11:28:29 +0900
+
+pciutils (1:3.0.0-6) unstable; urgency=low
+
+  * New pci.ids header format; closes: #501612
+  * Update pci.ids with snapshot dated 2008-10-07 11:49:28 
+
+ -- Anibal Monsalve Salazar <anibal@debian.org>  Thu, 09 Oct 2008 22:00:53 +1100
+
+pciutils (1:3.0.0-5) unstable; urgency=low
+
+  * Do not strip pci.ids in the pciutils binary package; closes: #496655
+  * Fix libpci3 long description; closes: #481313
+  * Update pci.ids with snapshot dated Wed 2008-10-01 01:05:01
+    - Fix typo in pci.ids; patch by Antony Gelberg; closes: #497861
+  * Standards-Version is 3.8.0
+
+ -- Anibal Monsalve Salazar <anibal@debian.org>  Wed, 01 Oct 2008 12:42:52 +1000
+
+pciutils (1:3.0.0-4) unstable; urgency=low
+
+  * Uncompress pci.ids.gz in debian/rules. Closes: #479766
+  * Don't compress pci.ids in update-pciids.sh. Closes: #454453
+  * pci.ids: updated with daily snapshot dated Sun 2008-05-11 01:05:02
+
+ -- Anibal Monsalve Salazar <anibal@debian.org>  Mon, 12 May 2008 09:54:02 +1000
+
+pciutils (1:3.0.0-3) unstable; urgency=low
+
+  * libpci-dev conflicts with pciutils-dev. Closes: #478290
+
+ -- Anibal Monsalve Salazar <anibal@debian.org>  Tue, 29 Apr 2008 16:23:38 +1000
+
+pciutils (1:3.0.0-2) unstable; urgency=low
+
+  * libpci-dev is priority standard
+  * Compile the udeb lspci with libpci.a
+  * Don't uncompress pci.ids.gz
+  * update-pciids works as expected. Closes: #411314, #452008
+  * pci.ids: updated with daily snapshot dated 2008-04-27 01:05:01
+
+ -- Anibal Monsalve Salazar <anibal@debian.org>  Fri, 25 Apr 2008 09:50:37 +1000
+
+pciutils (1:3.0.0-1) experimental; urgency=low
+
+  * New upstream version
+  * pci.ids: updated with daily snapshot dated Sat 2008-04-12 01:05:01
+
+ -- Anibal Monsalve Salazar <anibal@debian.org>  Sat, 12 Apr 2008 21:19:53 +1000
+
+pciutils (1:2.2.10-2) unstable; urgency=low
+
+  * pci.ids: updated with daily snapshot dated Sat 2008-04-12 01:05:01
+
+ -- Anibal Monsalve Salazar <anibal@debian.org>  Sat, 12 Apr 2008 20:35:57 +1000
+
+pciutils (1:2.2.10-1) unstable; urgency=low
+
+  * New upstream version
+  * Install the pkgconfig file in the pciutils-dev package.
+    Patch by Nicolas Boullis <nboullis@debian.org>.
+    Closes: #403181
+  * pci.ids: updated with daily snapshot dated Wed 2008-02-20 02:05:01
+
+ -- Anibal Monsalve Salazar <anibal@debian.org>  Wed, 20 Feb 2008 19:29:55 +1100
+
+pciutils (1:2.2.9-2) unstable; urgency=low
+
+  * pciutils-udeb is priority standard. Closes: #420227
+
+ -- Anibal Monsalve Salazar <anibal@debian.org>  Wed, 23 Jan 2008 22:16:47 +1100
+
+pciutils (1:2.2.9-1) unstable; urgency=medium
+
+  * New upstream version
+  * Acknowledged NMU. Closes: #425639
+  * pci.ids: updated with daily snapshot dated Wed 2008-01-23 02:05:02
+    Closes: #422713
+  * pciutils and pciutils-udeb depend on ${misc:Depends}
+  * pciutils-dev depends on zlib1g-dev. Closes: 396640, #413462
+  * pciutils-dev depends on pciutils (= ${binary:Version})
+  * Bumped debhelper compat to 5
+  * Bumped Standards-Version to 3.7.3
+  * Put myself as maintainer
+  * Set homepage control header
+  * pciutils is priority standard
+  * Removed empty lib directory from pciutils-udeb
+  * Replaced "-$(MAKE)" with "[ ! -f Makefile ] || $(MAKE)" in debian/rules
+
+ -- Anibal Monsalve Salazar <anibal@debian.org>  Wed, 23 Jan 2008 17:36:12 +1100
+
+pciutils (1:2.2.4-1.1) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * Removed obsolete dependency libpci2. Closes: #425639
+
+ -- Arnaud Hocevar <arnaud@hocevar.net>  Sat, 29 Sep 2007 21:25:06 +0000
+
+pciutils (1:2.2.4-1) unstable; urgency=low
+
+  [ Matthew Wilcox ]
+  * New upstream version.
+  * Get rid of build-* rules in debian/rules, don't call build from
+    binary-indep and don't touch build-* files.
+  * gzip the udeb's stripped pci.ids, but gunzip the deb's pci.ids so
+    that programs linked against earlier versions of libpci continue
+    to work.  Also modify update-pciids so that it'll install an
+    uncompressed version of pci.ids.
+  * Change Makefile to not build pcimodules for HURD.  Closes: #380032
+  * Improve the error message if we can't read the standard header
+  * Remove myself as an Uploader
+  [ Matt Taggart ]
+  * update pci.ids to 2006-10-27 01:05:01
+
+ -- Matt Taggart <taggart@debian.org>  Fri, 27 Oct 2006 02:55:47 -0700
+
+pciutils (1:2.2.4~pre4-1) unstable; urgency=low
+
+  [ Matthew Wilcox ]
+  * New upstream version
+    - Adds -nn option.  Closes: #268031
+    - Adds deviceclass field.  Closes: #335665
+    - Fixes I/O port access on Hurd.  Closes: #379407
+
+ -- Matthew Wilcox <willy@debian.org>  Fri, 11 Aug 2006 07:34:06 -0400
+
+pciutils (1:2.2.1-2) unstable; urgency=low
+
+  * Fix Maintainer email address
+
+ -- Matthew Wilcox <willy@debian.org>  Wed, 07 Jun 2006 11:09:11 -0400
+
+pciutils (1:2.2.1-1) unstable; urgency=low
+
+  [ Matthew Wilcox ]
+  * New upstream version.  Closes: #329370
+    - Builds on HURD.  Closes: #349239
+    - Debian GNU/kFreeBSD should now build.  Closes: #292324
+    - Uses correct header type for PCI-X.  Closes: #265745
+    - u64 is now defined in include/pci/types.h.  Closes: #265771
+    - Subsystem vendors now printed correctly.  Closes: #304576
+    - Error message corrected.  Closes: #347872
+    - nv40 replaced with NV40.  Closes: #343222
+    - Memory window size now reported correctly.  Closes: #256607
+    - The manpage now explains why capabilties are available only to root.
+      Closes: #173274
+    - Domains are properly supported.  Closes: #369751
+  * New debian maintainers.  Thanks to Remco for his years of service.
+  * Added option to use curl (instead of wget or lynx) to retrieve pci.ids
+  * Revert patch to change -m format from #250737.  Closes: #347877
+  * Move /var/lib/pciutils/pci.ids back to /usr/share/misc/pci.ids.
+    Closes: #336331
+  * Fix typos in pcimodules manpages.  Closes: #356129, #302142
+  * Remove libpci.so.2; depend on libpci2 to provide this for compatibility
+    with sarge.
+  * Build libpci.a with -fPIC for packages which need to build shared
+    libraries.
+  * Remove -X option as upstream has vetoed it.  It wasn't actually being
+    used anyway.
+  * Add -D option (which will be in the next upstream release) to always
+    show domains.
+  * Stop installing the pciutils.lsm file.
+
+  [ Matt Taggart ]
+  * update debian/copyright date and author email address
+  * Make the pci.ids update a separate debian/rules target that's not
+    invoked in a default build
+  * minor cleanups in debian/rules
+  * get rid of README.debian, it's redundant with upstream info
+
+ -- Matthew Wilcox <willy@debian.org>  Thu, 20 Apr 2006 21:01:24 -0400
+
+pciutils (1:2.1.11-16) unstable; urgency=low
+
+  * New maintainer, closes: #359915.
+  * ACK NMUs, closes: #261536, #271226, #278479, #281411, #281413,
+    #284110, #326274.
+  * Set Standards-Version to 3.6.2. 
+  * Added homepage to package descriptions.
+  * Added debian watch file.
+
+ -- Anibal Monsalve Salazar <anibal@debian.org>  Thu, 30 Mar 2006 08:06:49 +1100
+
+pciutils (1:2.1.11-15.3) unstable; urgency=low
+
+  [ Christian Perrier ]
+  * Non-maintainer upload to add a udeb providing lspci for d-i purposes
+    Closes: #284110
+
+  [ Colin Watson ]
+  * Changes merged from Ubuntu patches:
+    - Add pciutils-udeb, for use in the installer. Contains only lspci,
+      libpci.so.2, and pci.ids.
+    - Reduce pciutils-udeb's copy of pci.ids by over 100KB by removing
+      subsystem ids, which I don't think we need in the installer, and
+      comments.
+    - Move pciutils-udeb's copy of libpci.so.2 to /lib; it seems to confuse
+      mklibs less that way.
+
+ -- Christian Perrier <bubulle@debian.org>  Sat,  3 Dec 2005 08:16:54 +0100
+
+pciutils (1:2.1.11-15.1) unstable; urgency=low
+
+  * NMU durring BSP
+  * remove unneeded wget build-dependancy
+  * Store pci.ids under /var for better FHS complicance (closes: #278479)
+    patch by Sam Morris
+  * Remove pci.ids.old etc when purging the package (closes: #281413)
+    patch by Sam Morris
+  * fix lspci -F for new or old lspci -x format (closes: #261536)
+    based on patch by Ben Pfaff
+  * update pci.ids (closes: #281411, hopefully closes: #326274)
+       
+ -- Blars Blarson <blarson@blars.org>  Sat,  3 Sep 2005 22:07:20 +0000
+
+pciutils (1:2.1.11-15) unstable; urgency=low
+
+  * Updated pci.ids
+  * Closes: #259990: pciutils{, -dev}: package description shouldn't
+    contain "(for 2.*.* kernels)"
+  * Install example.c in package (closes: #228660)
+
+ -- Remco van de Meent <remco@debian.org>  Sun, 18 Jul 2004 10:16:57 +0200
+
+pciutils (1:2.1.11-14) unstable; urgency=medium
+
+  * Added Conflicts with older alsa-utils version (closes: #259661)
+  * Updated pci.ids
+
+ -- Remco van de Meent <remco@debian.org>  Fri, 16 Jul 2004 18:38:05 +0200
+
+pciutils (1:2.1.11-13) unstable; urgency=low
+
+  * Updated pci.ids
+  * Add pcimodules utility (closes: #253020)
+  * Add -X option for output suitable for use in XFree86Config (closes:
+    #251828)
+  * Fix problem with lspci displaying wrong bar size (closes: #256352)
+  * Make machine-readable output better machine-readable (closes:
+    #250737)
+
+ -- Remco van de Meent <remco@debian.org>  Fri,  9 Jul 2004 16:13:52 +0200
+
+pciutils (1:2.1.11-12) unstable; urgency=low
+
+  * Oops now with correct replaces versioning
+
+ -- Remco van de Meent <remco@debian.org>  Tue, 20 Apr 2004 23:53:16 +0200
+
+pciutils (1:2.1.11-11) unstable; urgency=low
+
+  * Revert to just the pciutils and pciutils-dev packages (no changes to
+    base system allowed currently), hence replaces: libpci2 (closes:
+    #244583, #241360, #225512)
+  * Fix warning on lack of sysfs support on 2.4 kernels (closes: #242239,
+    #244249, #242892)
+  * Conflicts on packages that need the old output of lspci, or the old
+    libpci.so.1, namely hardinfo, kudzu and sndconfig.
+  * Updated pci.ids
+
+ -- Remco van de Meent <remco@debian.org>  Tue, 20 Apr 2004 11:31:10 +0200
+
+pciutils (1:2.1.11-10) unstable; urgency=low
+
+  * Sysfs support enabled again. libpci1 -> libpci2.
+  * Old shared lib in separate (source) package: libpci1
+  * Temporary dependency on libpci1 package, for transition purposes.
+
+ -- Remco van de Meent <remco@debian.org>  Thu,  8 Apr 2004 21:07:51 +0200
+
+pciutils (1:2.1.11-9) unstable; urgency=low
+
+  * Revert sysfs patch, so that ABI is back in original state. Shared
+    library split off from main package (libpci1). Later version will
+    include sysfs patch again.
+  * Update pci.ids
+
+ -- Remco van de Meent <remco@debian.org>  Thu,  8 Apr 2004 19:30:15 +0200
+
+pciutils (1:2.1.11-8) unstable; urgency=low
+
+  * Updated pci.ids file
+  * Applied sysfs patch from
+    http://ftp.linux.org.uk/pub/linux/willy/patches/pciutils-sysfs.diff.
+    pciutils now can make use of /sys if available (linux 2.6), and also
+    works under 2.4 on sparc64 (closes: #225027, #227547)
+  * update-pciids.sh now preserves permission of pci.ids (closes:
+    #223740)
+  * Changed wrong acronym Mhz into MHz in lspci.c (closes: #230594)
+
+ -- Remco van de Meent <remco@debian.org>  Sun, 28 Mar 2004 15:17:30 +0200
+
+pciutils (1:2.1.11-7) unstable; urgency=low
+
+  * Tiny change to lib/configure
+  * Updated pci.ids
+  * Removed build-depends on libc6-dev (closes: #225345)
+
+ -- Remco van de Meent <remco@debian.org>  Mon, 29 Dec 2003 19:07:55 +0100
+
+pciutils (1:2.1.11-6) unstable; urgency=low
+
+  * Updated pci.ids
+  * Slighly updated description in debian/control
+
+ -- Remco van de Meent <remco@debian.org>  Mon,  8 Dec 2003 20:38:49 +0100
+
+pciutils (1:2.1.11-5) unstable; urgency=low
+
+  * Introduce versioning in shared library: libpci.so -> libpci.so.1
+    (closes: #215181)
+  * Provide libpci.so -> libpci.so.1 symlink to prevent other packages
+    breaking
+
+ -- Remco van de Meent <remco@debian.org>  Sat, 11 Oct 2003 12:44:19 +0200
+
+pciutils (1:2.1.11-4) unstable; urgency=low
+
+  * Provide symlink /bin/lspci -> /usr/bin/lspci, and similar for
+    setpci. /usr/bin is the new location of these binaries as they are
+    no longer essential, but other packages may currently rely on these
+    binaries to be in /bin. (closes: #215002)
+  * Fix Makefile so that setpci is built correctly (closes: #214785)
+
+ -- Remco van de Meent <remco@debian.org>  Fri, 10 Oct 2003 09:46:17 +0200
+
+pciutils (1:2.1.11-3) unstable; urgency=low
+
+  * Upgraded to Standards-Version: 3.6.1
+  * Applied patch from Iustin Pop to have pciutils provide a shared
+    library (closes: #212246)
+  * Formatting problem for PCI-X capabilities fixed, thanks to Matthew
+    Wilcox (closes: #191468)
+  * Formatting problem for cache line size fixed, thanks to Grant
+    Grundler (closes: #207446, #207450)
+  * Applied patch from Matthieu Lochegnies to fix PCI configuration read
+    (closes: #200340)
+  * Applied patch from Matthew Wilcox to fix PCI-X capability reporting
+    (closes: #191573)
+  * Put lspci and setpci in /usr/bin
+  * Updated pci.ids file
+
+ -- Remco van de Meent <remco@debian.org>  Tue,  7 Oct 2003 13:29:12 +0200
+
+pciutils (1:2.1.11-2) unstable; urgency=low
+
+  * Upgrade standards-version
+  * Upgrade pci.ids
+
+ -- Remco van de Meent <remco@debian.org>  Mon,  3 Mar 2003 15:31:58 +0100
+
+pciutils (1:2.1.11-1) unstable; urgency=low
+
+  * New upstream release
+  * pci.ids retrieved at built time from official place (closes: #112878)
+
+ -- Remco van de Meent <remco@debian.org>  Sat, 22 Feb 2003 19:27:09 +0100
+
+pciutils (1:2.1.10-4) unstable; urgency=low
+
+  * Change README: no requirement for specific kernel versions anymore
+  * Update pci.ids file (closes: #172190, #101706)
+  * Provide directions for updating pci.ids file by hand
+
+ -- Remco van de Meent <remco@debian.org>  Thu,  2 Jan 2003 12:21:25 +0000
+
+pciutils (1:2.1.10-3) unstable; urgency=low
+
+  * Removed auto-update of pci.ids feature
+
+ -- Remco van de Meent <remco@debian.org>  Sat, 25 May 2002 11:48:33 +0200
+
+pciutils (1:2.1.10-2) unstable; urgency=low
+
+  * Make update-ids target failsafe in case of networking problems
+    (closes: #147996)
+
+ -- Remco van de Meent <remco@debian.org>  Fri, 24 May 2002 11:23:36 +0200
+
+pciutils (1:2.1.10-1) unstable; urgency=low
+
+  * New upstream release (closes: #147221)
+  * Mention 2.5 kernels in package description
+  * Automatically update pci.ids file during build. Add wget and bzip2
+    build depends (closes: #147220)
+  * Upstream location is now at ftp.kernel.org. Changed copyright file.
+    (closes: #147219)
+
+ -- Remco van de Meent <remco@debian.org>  Fri, 17 May 2002 13:11:50 +0200
+
+pciutils (1:2.1.9-4) unstable; urgency=low
+
+  * Change sbin/lspci from hardlink to symlink, closes: #137779
+
+ -- Remco van de Meent <remco@debian.org>  Mon, 11 Mar 2002 13:26:04 +0100
+
+pciutils (1:2.1.9-3) unstable; urgency=low
+
+  * Move lspci to /bin, closes: #134814
+
+ -- Remco van de Meent <remco@debian.org>  Wed,  6 Mar 2002 14:26:15 +0100
+
+pciutils (1:2.1.9-2) unstable; urgency=low
+
+  * priority changed to optional
+  * Fixed build depends, closes: #88388
+  * Upgraded standards-version to 3.5.6
+  * Use upstream provided pci.ids again
+  * Linksys Network Everywhere Fast Ethernet 10/100 card is in the
+    database now, closes: #88213
+  * Netgear FA311 ethernet card is in the database now, closes: #83415
+  * debian/rules cleanup
+
+ -- Remco van de Meent <remco@debian.org>  Mon,  5 Nov 2001 10:20:31 +0100
+
+pciutils (1:2.1.9-1) unstable; urgency=low
+
+  * New upstream release
+
+ -- Remco van de Meent <remco@debian.org>  Sun,  4 Nov 2001 20:04:35 +0100
+
+pciutils (1:2.1.8-4.1) unstable; urgency=low
+
+  * Reupload to circumvent problems with a corrupt .orig.tar.gz file
+    (closes: #88388, #83415, #88213)
+
+ -- Remco van de Meent <remco@debian.org>  Mon,  2 Apr 2001 16:10:06 +0200
+
+pciutils (1:2.1.8-4) unstable; urgency=low
+
+  * Added Build-Depends for debhelper (closes: #88388)
+  * Added information for a Netgear FA311 ethernet card (closes: #83415)
+  * Added information for a Compex FreedomLine ethernet card
+  * Added information for a Linksys Network Everywhere FE 10/100 ethernet
+    card (closes: #88213)
+
+ -- Remco van de Meent <remco@debian.org>  Sun, 11 Mar 2001 18:46:43 +0100
+
+pciutils (1:2.1.8-3) unstable; urgency=low
+
+  * Added some new entries to pci.ids
+  * Some packaging cleanup
+  * Put linux kernel version 2.4 in package description
+
+ -- Remco van de Meent <remco@debian.org>  Fri,  5 Jan 2001 15:28:20 +0100
+
+pciutils (1:2.1.8-2) unstable; urgency=low
+
+  * Updated to pci.ids 1.62 from kernel 2.4.0-test8
+  * Included information about Voodoo5 cards, closes: Bug#70929
+
+ -- Remco van de Meent <remco@debian.org>  Sat,  7 Oct 2000 15:37:33 +0200
+
+pciutils (1:2.1.8-1) unstable; urgency=low
+
+  * New upstream release
+
+ -- Remco van de Meent <remco@debian.org>  Sun, 21 May 2000 15:09:37 +0200
+
+pciutils (1:2.1.7-1) unstable; urgency=low
+
+  * New upstream release
+
+ -- Remco van de Meent <remco@debian.org>  Sat,  29 Apr 2000 20:01:05 +0100
+
+pciutils (1:2.1.6-1) unstable; urgency=low
+
+  * New upstream release (never released as Debian package)
+
+ -- Remco van de Meent <remco@debian.org>  Sat,  29 Apr 2000 19:59:01 +0100
+
+pciutils (1:2.1.5-1) unstable; urgency=low
+
+  * New upstream release
+
+ -- Remco van de Meent <remco@debian.org>  Mon,  6 Mar 2000 12:20:01 +0100
+
+pciutils (1:2.1.4-1) unstable; urgency=low
+
+  * New upstream release
+
+ -- Remco van de Meent <remco@debian.org>  Tue, 25 Jan 2000 00:20:47 +0100
+
+pciutils (1:2.1.2-2) unstable; urgency=low
+
+  * Changed priority to standard. It's called during system startup.
+  * Recompile on 2.2.14 kernel
+
+ -- Remco van de Meent <remco@debian.org>  Fri,  7 Jan 2000 13:20:07 +0100
+
+pciutils (1:2.1.2-1) unstable; urgency=low
+
+  * New upstream release
+
+ -- Remco van de Meent <remco@debian.org>  Thu, 30 Dec 1999 14:02:03 +0100
+
+pciutils (1:2.1.1-1) unstable; urgency=low
+
+  * New upstream release
+  * Updated to Standards-Version: 3.1.1
+
+ -- Remco van de Meent <remco@debian.org>  Sat,  4 Dec 1999 15:16:05 +0100
+
+pciutils (1:2.1-3) unstable; urgency=low
+
+  * No more -Werror on the gcc option line, this should fix building on
+    alpha architecture, closes: Bug#49315
+  * Upgraded to Standards-Version: 3.1.0
+
+ -- Remco van de Meent <remco@debian.org>  Mon,  8 Nov 1999 16:39:39 +0100
+
+pciutils (1:2.1-2) unstable; urgency=low
+
+  * Oops, error in lspci, it now looks for pci.ids in /usr/share/misc again,
+    closes: Bug#48967
+  * Fixed Standards-Version
+
+ -- Remco van de Meent <remco@debian.org>  Tue,  2 Nov 1999 08:28:53 +0100
+
+pciutils (1:2.1-1) unstable; urgency=low
+
+  * New upstream release
+  * Cleanups
+
+ -- Remco van de Meent <remco@debian.org>  Mon,  1 Nov 1999 10:57:02 +0100
+
+pciutils (2.0999-2.1pre8-1) unstable; urgency=low
+
+  * New upstream release
+
+ -- Remco van de Meent <remco@debian.org>  Wed, 27 Oct 1999 19:22:37 +0200
+
+pciutils (2.0-5) unstable; urgency=low
+
+  * Cosmetic cleanups.
+
+ -- Remco van de Meent <remco@debian.org>  Tue, 26 Oct 1999 20:13:12 +0200
+
+pciutils (2.0-4) unstable; urgency=low
+
+  * Updated pci.ids file with upstream pci.ids from pciutils-2.1pre8
+  * Upgraded to Standards-Version: 3.0.1.1
+  * Added a new pciutils-dev package, closes: Bug#47002
+
+ -- Remco van de Meent <remco@debian.org>  Tue, 26 Oct 1999 18:22:35 +0200
+
+pciutils (2.0-3) unstable; urgency=low
+
+  * Updated pci.ids file with upstream pci.ids from pciutils-2.1pre5
+  * Minor fixes
+
+ -- Remco van de Meent <remco@debian.org>  Fri,  3 Sep 1999 13:41:51 +0200
+
+pciutils (2.0-2) unstable; urgency=low
+
+  * Updated pci.ids file with upstream pci.ids from pciutils-2.1pre4
+  * Updated Standards-Version: 2.5.0.0
+
+ -- Remco van de Meent <remco@debian.org>  Sun, 18 Jul 1999 17:06:10 +0200
+
+pciutils (2.0-1) unstable; urgency=low
+
+  * New upstream release
+  * Renamed package to pciutils
+
+ -- Remco van de Meent <remco@debian.org>  Sun, 18 Jul 1999 17:04:57 +0200
+
+pciutils-experimental (1.99.5-1) experimental; urgency=low
+
+  * New upstream release
+  * Fixed locatation of pci.ids
+  * Added new information to pci.ids
+
+ -- Remco van de Meent <remco@debian.org>  Mon, 19 Apr 1999 14:30:52 +0200
+
+pciutils-experimental (1.99.4-2) experimental; urgency=low
+
+  * Removed the 2nd instance of the changelog in /usr/doc/pciutils-
+    experimental/
+
+ -- Remco van de Meent <remco@debian.org>  Sat,  6 Feb 1999 20:21:01 +0100
+
+pciutils-experimental (1.99.4-1) experimental; urgency=low
+
+  * Initial Release. This is an experimental package, of the not yet
+    released pciutils-2.x.x upstream version, and should be used with care.
+
+ -- Remco van de Meent <remco@debian.org>  Sat,  6 Feb 1999 15:10:15 +0100
+
+pciutils (1.10-1) frozen unstable; urgency=low
+
+  * New upstream bugfix release.
+
+ -- Joel Klecker <espy@debian.org>  Tue, 19 Jan 1999 21:11:51 -0800
+
+pciutils (1.09-1) frozen unstable; urgency=low
+
+  * New upstream bugfix release.
+
+ -- Joel Klecker <espy@debian.org>  Sun, 22 Nov 1998 18:58:26 -0800
+
+pciutils (1.08-1) frozen unstable; urgency=low
+
+  * New upstream bugfix release.
+
+ -- Joel Klecker <espy@debian.org>  Tue, 20 Oct 1998 07:54:04 -0700
+
+pciutils (1.02-1) unstable; urgency=low
+
+  * New upstream release
+
+ -- Christoph Lameter <clameter@debian.org>  Sun, 15 Feb 1998 13:22:50 -0800
+
+pciutils (1.01-1) unstable; urgency=low
+
+  * New upstream release
+
+ -- Christoph Lameter <clameter@debian.org>  Mon,  9 Feb 1998 18:52:02 -0800
+
+pciutils (1.0-1) unstable; urgency=low
+
+  * New upstream release adds manpage and upstream changelog
+
+ -- Christoph Lameter <clameter@debian.org>  Sun,  8 Feb 1998 07:43:35 -0800
+
+pciutils (0.91-1) unstable; urgency=low
+
+  * Initial Release.
+
+ -- Christoph Lameter <clameter@debian.org>  Tue, 27 Jan 1998 20:37:16 -0800
diff --git a/debian/compat b/debian/compat
new file mode 100644 (file)
index 0000000..7ed6ff8
--- /dev/null
@@ -0,0 +1 @@
+5
diff --git a/debian/control b/debian/control
new file mode 100644 (file)
index 0000000..b584cf2
--- /dev/null
@@ -0,0 +1,52 @@
+Source: pciutils
+Section: admin
+Priority: optional
+Maintainer: Sung-Jin Park <sj76.park@samsung.com>, Anibal Monsalve Salazar <anibal@debian.org>
+Uploaders: Sung-Jin Park <sj76.park@samsung.com>, Matt Taggart <taggart@debian.org>
+Build-Depends: debhelper (>= 5), zlib1g-dev
+Standards-Version: 3.8.0
+Homepage: http://atrey.karlin.mff.cuni.cz/~mj/pciutils.shtml
+
+Package: pciutils
+Architecture: any
+Priority: standard
+Depends: ${shlibs:Depends}, ${misc:Depends}, libpci3 (= ${binary:Version})
+Suggests: bzip2, wget | curl | lynx
+Description: Linux PCI Utilities
+ This package contains various utilities for inspecting and setting of
+ devices connected to the PCI bus. 
+
+Package: libpci-dev
+Section: libdevel
+Priority: standard
+Architecture: any
+Depends: zlib1g-dev, libpci3 (= ${binary:Version})
+Conflicts: pciutils-dev
+Provides: pciutils-dev
+Replaces: pciutils-dev
+Description: Linux PCI Utilities (development files)
+ This package contains the <pci/pci.h>, <pci/config.h> and <pci/header.h>
+ header files, as well as the /usr/lib/libpci.a library.
+
+Package: libpci3
+Section: libs
+Priority: optional
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Conflicts: libpci2
+Provides: libpci2
+Replaces: libpci2
+Description: Linux PCI Utilities (shared library)
+ This package contains the libpci shared library files.
+
+#Package: pciutils-udeb
+#XC-Package-Type: udeb
+#Section: debian-installer
+#Architecture: any
+#Priority: standard
+#Depends: ${shlibs:Depends}, ${misc:Depends}
+#Description: Linux PCI Utilities (udeb)
+# This package contains various utilities for inspecting and setting of
+# devices connected to the PCI bus. 
+# .
+# This is a minimal version for use in debian-installer.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644 (file)
index 0000000..4b95a9c
--- /dev/null
@@ -0,0 +1,26 @@
+This package was debianized by Remco van de Meent remco@debian.org on
+Sat, 6 Feb 1999 15:10:15 +0100.  Earlier versions were debianized by
+Christoph Lameter clameter@debian.org on Tue, 27 Jan 1998 20:37:16 -0800
+and Joel Klecker jk@espy.org took over the package on Thu, 26 Mar 1998.
+Blars Blarson, Colin Watson and Christian Perrier contributed to NMUs
+in 2005 and the package is currently team maintained by Anibal Monsalve
+Salazar, Matt Taggart and Matthew Wilcox.
+
+The package was downloaded from
+ftp://ftp.kernel.org/pub/software/utils/pciutils/
+
+Upstream Author: Martin Mares <mj@ucw.cz>
+
+Copyright:
+
+Copyright (c) 1997--2006 Martin Mares <mj@ucw.cz>
+
+All files in this package can be freely distributed and used according
+to the terms of the GNU General Public License, either version 2 or
+(at your opinion) any newer version. This is the same distribution
+policy as for the Linux kernel itself -- see /usr/src/linux/COPYING
+for details.
+
+
+A full copy of the GNU GPL can be found in /usr/share/common-licenses on
+Debian systems.
diff --git a/debian/dirs b/debian/dirs
new file mode 100644 (file)
index 0000000..77bad8d
--- /dev/null
@@ -0,0 +1,3 @@
+usr/share/misc
+usr/share/man
+usr/bin
diff --git a/debian/docs b/debian/docs
new file mode 100644 (file)
index 0000000..e845566
--- /dev/null
@@ -0,0 +1 @@
+README
diff --git a/debian/libpci-dev.dirs b/debian/libpci-dev.dirs
new file mode 100644 (file)
index 0000000..9fb451d
--- /dev/null
@@ -0,0 +1,4 @@
+usr/include/pci
+usr/lib
+usr/lib/pkgconfig
+usr/share/doc
diff --git a/debian/libpci3.dirs b/debian/libpci3.dirs
new file mode 100644 (file)
index 0000000..6845771
--- /dev/null
@@ -0,0 +1 @@
+usr/lib
diff --git a/debian/pciutils-udeb.dirs b/debian/pciutils-udeb.dirs
new file mode 100644 (file)
index 0000000..e449727
--- /dev/null
@@ -0,0 +1,2 @@
+usr/share/misc
+usr/bin
diff --git a/debian/postinst b/debian/postinst
new file mode 100644 (file)
index 0000000..2026fe5
--- /dev/null
@@ -0,0 +1,23 @@
+#! /bin/sh
+# postinst script for pciutils
+
+set -e
+
+case "$1" in
+configure)
+       for ext in new neww old
+       do
+               rm -f /usr/share/misc/pci.ids.$ext
+       done
+       ;;
+abort-upgrade|abort-remove|abort-deconfigure)
+       ;;
+*)
+       echo "postinst called with unknown argument \`$1'" >&2
+       exit 1
+       ;;
+esac
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/postrm b/debian/postrm
new file mode 100644 (file)
index 0000000..37c0f7a
--- /dev/null
@@ -0,0 +1,23 @@
+#! /bin/sh
+# postrm script for pciutils
+
+set -e
+
+case "$1" in
+purge)
+       for ext in new neww old
+       do
+               rm -f /usr/share/misc/pci.ids.$ext
+       done
+       ;;
+remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+       ;;
+*)
+       echo "postrm called with unknown argument \`$1'" >&2
+       exit 1
+       ;;
+esac
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/preinst b/debian/preinst
new file mode 100644 (file)
index 0000000..4350aed
--- /dev/null
@@ -0,0 +1,23 @@
+#! /bin/sh
+# preinst script for pciutils
+
+set -e
+
+case "$1" in
+install|upgrade)
+       for ext in new neww old
+       do
+               rm -f /var/lib/pciutils/pci.ids.$ext
+       done
+       ;;
+abort-upgrade)
+       ;;
+*)
+       echo "preinst called with unknown argument \`$1'" >&2
+       exit 1
+       ;;
+esac
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/rules b/debian/rules
new file mode 100755 (executable)
index 0000000..0fac50d
--- /dev/null
@@ -0,0 +1,75 @@
+#!/usr/bin/make -f
+
+export DH_VERBOSE=1
+
+PATHS := PREFIX=/usr SBINDIR=/usr/bin IDSDIR=/usr/share/misc
+
+update-ids:
+       # get a new version of pci.ids, this should only be run by the
+       # maintainer, since we don't want different builds of the same
+       # source to end up with different versions
+       ./update-pciids.sh
+       rm -f pci.ids.old
+       #gunzip pci.ids.gz
+
+build:
+       dh_testdir
+       $(MAKE) $(PATHS) SHARED=yes
+
+clean:
+       dh_testdir
+       dh_testroot
+       [ ! -f Makefile ] || $(MAKE) $(PATHS) clean
+       dh_clean
+
+# Build architecture-independent files here.
+binary-indep:
+
+# Build architecture-dependent files here.
+binary-arch: build 
+       dh_testdir
+       dh_testroot
+       dh_clean -k
+       dh_installdirs -a
+
+       $(MAKE) $(PATHS) install DESTDIR=debian/pciutils
+
+       # pciutils
+       gunzip debian/pciutils/usr/share/misc/pci.ids.gz
+
+       # libpci-dev
+       install -m 644 lib/libpci.a debian/libpci-dev/usr/lib/
+       install -m 644 lib/pci.h lib/header.h lib/config.h lib/types.h \
+                       debian/libpci-dev/usr/include/pci/
+       install -m 644 lib/libpci.pc debian/libpci-dev/usr/lib/pkgconfig/
+       ln -s libpci.so.3.0.0 debian/libpci-dev/usr/lib/libpci.so
+
+       # libpci3
+       install -m 644 lib/libpci.so* debian/libpci3/usr/lib/
+       ln -s libpci.so.3.0.0 debian/libpci3/usr/lib/libpci.so.3
+
+       # pciutils-udeb
+       # Reduce by removing subsystem ids and comments.
+       #perl -ne 'print unless /^(\s*#|\s*$|\t\t)/' < pci.ids |gzip -9 > debian/pciutils-udeb/usr/share/misc/pci.ids.gz
+       #chmod 644 debian/pciutils-udeb/usr/share/misc/pci.ids.gz
+
+       dh_installdocs
+       dh_installexamples example.c
+       dh_installmenu
+       dh_installman -ppciutils
+       dh_installchangelogs -a ChangeLog
+       dh_strip -a
+       dh_compress -a
+       dh_fixperms -a
+       dh_makeshlibs -a
+       dh_installdeb -a
+       dh_shlibdeps -a
+       dh_gencontrol -a
+       dh_md5sums -a
+       dh_builddeb -a
+
+source diff:                                                                  
+       @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false
+
+binary: binary-indep binary-arch
+.PHONY: update-ids build clean binary-indep binary-arch binary source diff
diff --git a/debian/watch b/debian/watch
new file mode 100644 (file)
index 0000000..35fbdf3
--- /dev/null
@@ -0,0 +1,2 @@
+version=2
+ftp://ftp.kernel.org/pub/software/utils/pciutils/pciutils-([\d\.]+).tar.bz2 debian uupdate
diff --git a/example.c b/example.c
new file mode 100644 (file)
index 0000000..9b24951
--- /dev/null
+++ b/example.c
@@ -0,0 +1,37 @@
+/*
+ *     The PCI Library -- Example of use (simplistic lister of PCI devices)
+ *
+ *     Written by Martin Mares and put to public domain. You can do
+ *     with it anything you want, but I don't give you any warranty.
+ */
+
+#include <stdio.h>
+
+#include "lib/pci.h"
+
+int main(void)
+{
+  struct pci_access *pacc;
+  struct pci_dev *dev;
+  unsigned int c;
+  char namebuf[1024], *name;
+
+  pacc = pci_alloc();          /* Get the pci_access structure */
+  /* Set all options you want -- here we stick with the defaults */
+  pci_init(pacc);              /* Initialize the PCI library */
+  pci_scan_bus(pacc);          /* We want to get the list of devices */
+  for(dev=pacc->devices; dev; dev=dev->next)   /* Iterate over all devices */
+    {
+      pci_fill_info(dev, PCI_FILL_IDENT | PCI_FILL_BASES | PCI_FILL_CLASS);    /* Fill in header info we need */
+      c = pci_read_byte(dev, PCI_INTERRUPT_PIN);                               /* Read config register directly */
+      printf("%04x:%02x:%02x.%d vendor=%04x device=%04x class=%04x irq=%d (pin %d) base0=%lx",
+            dev->domain, dev->bus, dev->dev, dev->func, dev->vendor_id, dev->device_id,
+            dev->device_class, dev->irq, c, (long) dev->base_addr[0]);
+
+      /* Look up and print the full name of the device */
+      name = pci_lookup_name(pacc, namebuf, sizeof(namebuf), PCI_LOOKUP_DEVICE, dev->vendor_id, dev->device_id);
+      printf(" (%s)\n", name);
+    }
+  pci_cleanup(pacc);           /* Close everything */
+  return 0;
+}
diff --git a/lib/.gitignore b/lib/.gitignore
new file mode 100644 (file)
index 0000000..9bed745
--- /dev/null
@@ -0,0 +1,3 @@
+config.h
+config.mk
+libpci.pc
diff --git a/lib/Makefile b/lib/Makefile
new file mode 100644 (file)
index 0000000..9d5d1af
--- /dev/null
@@ -0,0 +1,86 @@
+# Makefile for The PCI Library
+# (c) 1999--2008 Martin Mares <mj@ucw.cz>
+
+# Expects to be invoked from the top-level Makefile and uses lots of its variables.
+
+OBJS=init access generic dump names filter names-hash names-parse names-net names-cache params
+INCL=internal.h pci.h config.h header.h sysdep.h types.h
+
+ifdef PCI_HAVE_PM_LINUX_SYSFS
+OBJS += sysfs
+endif
+
+ifdef PCI_HAVE_PM_LINUX_PROC
+OBJS += proc
+endif
+
+ifdef PCI_HAVE_PM_INTEL_CONF
+OBJS += i386-ports
+endif
+
+ifdef PCI_HAVE_PM_DUMP
+OBJS += dump
+endif
+
+ifdef PCI_HAVE_PM_FBSD_DEVICE
+OBJS += fbsd-device
+CFLAGS += -I/usr/src/sys
+ifdef FREEBSD_SYS
+CFLAGS += -I${FREEBSD_SYS}
+endif
+endif
+
+ifdef PCI_HAVE_PM_OBSD_DEVICE
+OBJS += obsd-device
+endif
+
+ifdef PCI_HAVE_PM_AIX_DEVICE
+OBJS += aix-device
+endif
+
+ifdef PCI_HAVE_PM_NBSD_LIBPCI
+OBJS += nbsd-libpci
+endif
+
+PCILIBA=libpci.a
+
+all: $(PCILIB) $(PCILIBA) $(PCILIBPC)
+
+# ifeq ($(SHARED),no)
+$(PCILIBA): $(addsuffix .o,$(OBJS))
+       rm -f $@
+       $(AR) rcs $@ $^
+       $(RANLIB) $@
+# else
+CFLAGS += -fPIC -fvisibility=hidden
+$(PCILIB): $(addsuffix .o,$(OBJS))
+       $(CC) -shared $(SONAME) -Wl,--version-script=libpci.ver -o $@ $^ $(LIB_LDLIBS)
+# endif
+
+$(PCILIBPC): libpci.pc.in
+       sed <$< >$@ -e 's,@PREFIX@,$(PREFIX),' \
+               -e 's,@INCDIR@,$(INCDIR),' \
+               -e 's,@LIBDIR@,$(LIBDIR),' \
+               -e 's,@IDSDIR@,$(IDSDIR),' \
+               -e 's,@VERSION@,$(VERSION),' \
+               -e 's,@LDLIBS@,$(LDLIBS),'
+
+init.o: init.c $(INCL)
+access.o: access.c $(INCL)
+params.o: params.c $(INCL)
+i386-ports.o: i386-ports.c $(INCL) i386-io-hurd.h i386-io-linux.h i386-io-sunos.h i386-io-windows.h
+proc.o: proc.c $(INCL) pread.h
+sysfs.o: sysfs.c $(INCL) pread.h
+generic.o: generic.c $(INCL)
+syscalls.o: syscalls.c $(INCL)
+obsd-device.o: obsd-device.c $(INCL)
+fbsd-device.o: fbsd-device.c $(INCL)
+aix-device.o: aix-device.c $(INCL)
+dump.o: dump.c $(INCL)
+names.o: names.c $(INCL) names.h
+names-cache.o: names-cache.c $(INCL) names.h
+names-hash.o: names-hash.c $(INCL) names.h
+names-net.o: names-net.c $(INCL) names.h
+names-parse.o: names-parse.c $(INCL) names.h
+filter.o: filter.c $(INCL)
+nbsd-libpci.o: nbsd-libpci.c $(INCL)
diff --git a/lib/access.c b/lib/access.c
new file mode 100644 (file)
index 0000000..d9032a7
--- /dev/null
@@ -0,0 +1,164 @@
+/*
+ *     The PCI Library -- User Access
+ *
+ *     Copyright (c) 1997--2008 Martin Mares <mj@ucw.cz>
+ *
+ *     Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+
+#include "internal.h"
+
+void
+pci_scan_bus(struct pci_access *a)
+{
+  a->methods->scan(a);
+}
+
+struct pci_dev *
+pci_alloc_dev(struct pci_access *a)
+{
+  struct pci_dev *d = pci_malloc(a, sizeof(struct pci_dev));
+
+  memset(d, 0, sizeof(*d));
+  d->access = a;
+  d->methods = a->methods;
+  d->hdrtype = -1;
+  if (d->methods->init_dev)
+    d->methods->init_dev(d);
+  return d;
+}
+
+int
+pci_link_dev(struct pci_access *a, struct pci_dev *d)
+{
+  d->next = a->devices;
+  a->devices = d;
+
+  return 1;
+}
+
+struct pci_dev *
+pci_get_dev(struct pci_access *a, int domain, int bus, int dev, int func)
+{
+  struct pci_dev *d = pci_alloc_dev(a);
+
+  d->domain = domain;
+  d->bus = bus;
+  d->dev = dev;
+  d->func = func;
+  return d;
+}
+
+void pci_free_dev(struct pci_dev *d)
+{
+  if (d->methods->cleanup_dev)
+    d->methods->cleanup_dev(d);
+  pci_mfree(d);
+}
+
+static inline void
+pci_read_data(struct pci_dev *d, void *buf, int pos, int len)
+{
+  if (pos & (len-1))
+    d->access->error("Unaligned read: pos=%02x, len=%d", pos, len);
+  if (pos + len <= d->cache_len)
+    memcpy(buf, d->cache + pos, len);
+  else if (!d->methods->read(d, pos, buf, len))
+    memset(buf, 0xff, len);
+}
+
+byte
+pci_read_byte(struct pci_dev *d, int pos)
+{
+  byte buf;
+  pci_read_data(d, &buf, pos, 1);
+  return buf;
+}
+
+word
+pci_read_word(struct pci_dev *d, int pos)
+{
+  word buf;
+  pci_read_data(d, &buf, pos, 2);
+  return le16_to_cpu(buf);
+}
+
+u32
+pci_read_long(struct pci_dev *d, int pos)
+{
+  u32 buf;
+  pci_read_data(d, &buf, pos, 4);
+  return le32_to_cpu(buf);
+}
+
+int
+pci_read_block(struct pci_dev *d, int pos, byte *buf, int len)
+{
+  return d->methods->read(d, pos, buf, len);
+}
+
+static inline int
+pci_write_data(struct pci_dev *d, void *buf, int pos, int len)
+{
+  if (pos & (len-1))
+    d->access->error("Unaligned write: pos=%02x,len=%d", pos, len);
+  if (pos + len <= d->cache_len)
+    memcpy(d->cache + pos, buf, len);
+  return d->methods->write(d, pos, buf, len);
+}
+
+int
+pci_write_byte(struct pci_dev *d, int pos, byte data)
+{
+  return pci_write_data(d, &data, pos, 1);
+}
+
+int
+pci_write_word(struct pci_dev *d, int pos, word data)
+{
+  word buf = cpu_to_le16(data);
+  return pci_write_data(d, &buf, pos, 2);
+}
+
+int
+pci_write_long(struct pci_dev *d, int pos, u32 data)
+{
+  u32 buf = cpu_to_le32(data);
+  return pci_write_data(d, &buf, pos, 4);
+}
+
+int
+pci_write_block(struct pci_dev *d, int pos, byte *buf, int len)
+{
+  if (pos < d->cache_len)
+    {
+      int l = (pos + len >= d->cache_len) ? (d->cache_len - pos) : len;
+      memcpy(d->cache + pos, buf, l);
+    }
+  return d->methods->write(d, pos, buf, len);
+}
+
+int
+pci_fill_info(struct pci_dev *d, int flags)
+{
+  if (flags & PCI_FILL_RESCAN)
+    {
+      flags &= ~PCI_FILL_RESCAN;
+      d->known_fields = 0;
+    }
+  if (flags & ~d->known_fields)
+    d->known_fields |= d->methods->fill_info(d, flags & ~d->known_fields);
+  return d->known_fields;
+}
+
+void
+pci_setup_cache(struct pci_dev *d, byte *cache, int len)
+{
+  d->cache = cache;
+  d->cache_len = len;
+}
diff --git a/lib/aix-device.c b/lib/aix-device.c
new file mode 100644 (file)
index 0000000..cb0a974
--- /dev/null
@@ -0,0 +1,274 @@
+/*
+ *     The PCI Library -- AIX /dev/pci[0-n] access
+ *
+ *     Copyright (c) 1999 Jari Kirma <kirma@cs.hut.fi>
+ *
+ *     Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+/*
+ *      Read functionality of this driver is briefly tested, and seems
+ *      to supply basic information correctly, but I promise no more.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <fcntl.h>
+
+#include <sys/types.h>
+#include <sys/mdio.h>
+
+#include "internal.h"
+
+#define AIX_LSDEV_CMD "/usr/sbin/lsdev -C -c bus -t pci\\* -S available -F name"
+#define AIX_ODMGET_CMD \
+  "/usr/bin/odmget -q 'name=%s and attribute=bus_number' CuAt | \
+   /usr/bin/awk '$1 == \"value\" { print $3 }'"
+
+
+/* AIX PCI bus device information */
+
+typedef struct aix_pci_bus {
+    char *bus_name;
+    int   bus_number;
+    int   bus_fd;
+} aix_pci_bus;
+
+#define PCI_BUS_MAX 16         /* arbitrary choice */
+static aix_pci_bus pci_buses[PCI_BUS_MAX];
+static int pci_bus_count = 0;
+
+
+/* Utility Routines */
+
+static aix_pci_bus *
+aix_find_bus(struct pci_access *a, int bus_number)
+{
+  int i;
+
+  for (i = 0; i < pci_bus_count; i++)
+    {
+      if (pci_buses[i].bus_number == bus_number)
+        {
+          return &pci_buses[i];
+        }
+    }
+
+  a->error("aix_find_bus: bus number %d not found", bus_number);
+}
+
+static int
+aix_bus_open(struct pci_access *a, int bus_number)
+{
+  aix_pci_bus *bp = aix_find_bus(a, bus_number);
+
+  if (bp->bus_fd < 0)
+    {
+      char devbuf[256];
+      int mode = a->writeable ? O_RDWR : O_RDONLY;
+
+      snprintf(devbuf, sizeof (devbuf), "/dev/%s", bp->bus_name);
+      bp->bus_fd = open(devbuf, mode, 0);
+      if (bp->bus_fd < 0)
+        {
+          a->error("aix_open_bus: %s open failed", devbuf);
+        }
+    }
+
+  return bp->bus_fd;
+}
+
+static int
+aix_bus_number(char *name)
+{
+  int bus_number;
+  FILE *odmget_pipe;
+  char command[256];
+  char buf[256];
+  char *bp;
+  char *ep;
+
+  snprintf(command, sizeof (command), AIX_ODMGET_CMD, name);
+  odmget_pipe = popen(command, "r");
+  if (odmget_pipe == NULL)
+    {
+      /* popen failed */
+      return -1;
+    }
+
+  if (fgets(buf, sizeof (buf) - 1, odmget_pipe) != NULL)
+    {
+      bp = buf + 1;    /* skip leading double quote */
+      bus_number = strtol(bp, &ep, 0);
+      if (bp == ep)
+        {
+          /* strtol failed */
+          bus_number = -1;
+        }
+    }
+  else
+    {
+      /* first PCI bus_number is not recorded in ODM CuAt; default to 0 */
+      bus_number = 0;
+    }
+
+  (void) pclose(odmget_pipe);
+
+  return bus_number;
+}
+
+
+/* Method entries */
+
+static int
+aix_detect(struct pci_access *a)
+{
+  int len;
+  int mode = a->writeable ? W_OK : R_OK;
+  char *command = AIX_LSDEV_CMD;
+  FILE *lsdev_pipe;
+  char buf[256];
+  char *name;
+
+  lsdev_pipe = popen(command, "r");
+  if (lsdev_pipe == NULL)
+    {
+      a->error("aix_config: popen(\"%s\") failed", command);
+    }
+
+  while (fgets(buf, sizeof (buf) - 1, lsdev_pipe) != NULL)
+    {
+      len = strlen(buf);
+      while (buf[len-1] == '\n' || buf[len-1] == '\r')
+          len--;
+      buf[len] = '\0';                         /* clobber the newline */
+
+      name = (char *) pci_malloc(a, len + 1);
+      strcpy(name, buf);
+      pci_buses[pci_bus_count].bus_name = name;
+      pci_buses[pci_bus_count].bus_number = 0;
+      pci_buses[pci_bus_count].bus_fd = -1;
+      if (!pci_bus_count)
+          a->debug("...using %s", name);
+      else
+          a->debug(", %s", name);
+      pci_bus_count++;
+      if (pci_bus_count >= PCI_BUS_MAX)
+          break;
+    }
+
+  (void) pclose(lsdev_pipe);
+
+  return pci_bus_count;
+}
+
+static void
+aix_init(struct pci_access *a)
+{
+  char *name;
+  int i;
+
+  for (i = 0; i < pci_bus_count; i++)
+    {
+      name = pci_buses[i].bus_name;
+      pci_buses[i].bus_number = aix_bus_number(name);
+    }
+}
+
+static void
+aix_cleanup(struct pci_access *a)
+{
+  aix_pci_bus *bp;
+
+  while (pci_bus_count-- > 0)
+    {
+      bp = &pci_buses[pci_bus_count];
+      (void) free(bp->bus_name);
+      if (bp->bus_fd >= 0)
+        {
+          (void) close(bp->bus_fd);
+          bp->bus_fd = -1;
+        }
+    }
+}
+
+void
+aix_scan(struct pci_access *a)
+{
+  int i;
+  int bus_number;
+  byte busmap[256];
+
+  memset(busmap, 0, sizeof(busmap));
+  for (i = 0; i < pci_bus_count; i++)
+    {
+      bus_number = pci_buses[i].bus_number;
+      if (!busmap[bus_number])
+        {
+          pci_generic_scan_bus(a, busmap, bus_number);
+        }
+    }
+}
+
+static int
+aix_read(struct pci_dev *d, int pos, byte *buf, int len)
+{
+  struct mdio mdio;
+  int fd;
+
+  if (pos + len > 256)
+    return 0;
+
+  fd = aix_bus_open(d->access, d->bus);
+  mdio.md_addr = (ulong) pos;
+  mdio.md_size = len;
+  mdio.md_incr = MV_BYTE;
+  mdio.md_data = (char *) buf;
+  mdio.md_sla = PCI_DEVFN(d->dev, d->func);
+
+  if (ioctl(fd, MIOPCFGET, &mdio) < 0)
+    d->access->error("aix_read: ioctl(MIOPCFGET) failed");
+
+  return 1;
+}
+
+static int
+aix_write(struct pci_dev *d, int pos, byte *buf, int len)
+{
+  struct mdio mdio;
+  int fd;
+
+  if (pos + len > 256)
+    return 0;
+
+  fd = aix_bus_open(d->access, d->bus);
+  mdio.md_addr = (ulong) pos;
+  mdio.md_size = len;
+  mdio.md_incr = MV_BYTE;
+  mdio.md_data = (char *) buf;
+  mdio.md_sla = PCI_DEVFN(d->dev, d->func);
+
+  if (ioctl(fd, MIOPCFPUT, &mdio) < 0)
+    {
+      d->access->error("aix_write: ioctl(MIOPCFPUT) failed");
+    }
+
+  return 1;
+}
+
+struct pci_methods pm_aix_device = {
+  "aix-device",
+  "AIX /dev/pci[0-n]",
+  NULL,
+  aix_detect,
+  aix_init,
+  aix_cleanup,
+  aix_scan,
+  pci_generic_fill_info,
+  aix_read,
+  aix_write,
+  NULL,                                 /* dev_init */
+  NULL                                  /* dev_cleanup */
+};
diff --git a/lib/configure b/lib/configure
new file mode 100755 (executable)
index 0000000..d855a3c
--- /dev/null
@@ -0,0 +1,171 @@
+#!/bin/sh
+# Configuration script for the PCI library
+# (c) 1998--2008 Martin Mares <mj@ucw.cz>
+
+echo_n() {
+       if [ -n "$BASH" ]
+       then
+               echo -n "$*"
+       else
+               echo "$*\c"
+       fi
+}
+
+if [ -z "$VERSION" -o -z "$IDSDIR" ] ; then
+       echo >&2 "Please run the configure script from the top-level Makefile"
+       exit 1
+fi
+
+echo_n "Configuring libpci for your system..."
+if [ -z "$HOST" ] ; then
+       sys=`uname -s`
+       rel=`uname -r`
+       if [ "$sys" = "AIX" -a -x /usr/bin/oslevel -a -x /usr/sbin/lsattr ]
+       then
+               rel=`/usr/bin/oslevel`
+               proc=`/usr/sbin/lsdev -C -c processor -S available -F name | head -1`
+               cpu=`/usr/sbin/lsattr -F value -l $proc -a type | sed 's/_.*//'`
+       else
+               cpu=`uname -m | sed 's/^i.86$/i386/;s/^sun4u$/sparc64/;s/^i86pc$/i386/'`
+       fi
+       if [ "$sys" = "GNU/kFreeBSD" -o "$sys" = "DragonFly" ]
+       then
+               sys=freebsd
+       fi
+       HOST=${3:-$cpu-$sys}
+fi
+# CAVEAT: tr on Solaris is a bit weird and the extra [] is otherwise harmless.
+host=`echo $HOST | sed 's/^\([^-]*\)-\([^-]*\)$/\1--\2/' | tr '[A-Z]' '[a-z]'`
+cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+sys=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+echo " $host $rel"
+
+c=config.h
+m=config.mk
+echo >$c "#define PCI_ARCH_`echo $cpu | tr '[a-z]' '[A-Z]'`"
+echo >>$c "#define PCI_OS_`echo $sys | tr '[a-z]' '[A-Z]'`"
+echo >$m 'WITH_LIBS='
+
+echo_n "Looking for access methods..."
+
+case $sys in
+       linux*)
+               echo_n " sysfs proc"
+               echo >>$c '#define PCI_HAVE_PM_LINUX_SYSFS'
+               echo >>$c '#define PCI_HAVE_PM_LINUX_PROC'
+               echo >>$c '#define PCI_HAVE_LINUX_BYTEORDER_H'
+               echo >>$c '#define PCI_PATH_PROC_BUS_PCI "/proc/bus/pci"'
+               echo >>$c '#define PCI_PATH_SYS_BUS_PCI "/sys/bus/pci"'
+               case $cpu in
+                               i386|x86_64)    echo_n " i386-ports"
+                                               echo >>$c '#define PCI_HAVE_PM_INTEL_CONF'
+                                               ;;
+               esac
+               echo >>$c '#define PCI_HAVE_64BIT_ADDRESS'
+               echo >>$c '#define PCI_USE_DNS'
+               ;;
+       sunos)
+               case $cpu in
+                               i386)           echo_n " i386-ports"
+                                               echo >>$c "#define PCI_HAVE_PM_INTEL_CONF"
+                                               ;;
+                               *)
+                                               echo " The PCI library does not support Solaris for this architecture: $cpu"
+                                               exit 1
+                                               ;;
+               esac
+               echo >>$c '#define PCI_HAVE_STDINT_H'
+               ;;
+       freebsd)
+               echo_n " fbsd-device"
+               echo >>$c '#define PCI_HAVE_PM_FBSD_DEVICE'
+               echo >>$c '#define PCI_PATH_FBSD_DEVICE "/dev/pci"'
+               ;;
+        openbsd)
+               echo_n " obsd-device"
+               echo >>$c '#define PCI_HAVE_PM_OBSD_DEVICE'
+               echo >>$c '#define PCI_PATH_OBSD_DEVICE "/dev/pci"'
+               ;;
+       aix)
+               echo_n " aix-device"
+               echo >>$c '#define PCI_HAVE_PM_AIX_DEVICE'
+               echo >>$m 'CFLAGS=-g'
+               echo >>$m 'INSTALL=installbsd'
+               echo >>$m 'DIRINSTALL=mkdir -p'
+               ;;
+       netbsd)
+               echo_n " nbsd-libpci"
+               echo >>$c '#define PCI_HAVE_PM_NBSD_LIBPCI'
+               echo >>$c '#define PCI_PATH_NBSD_DEVICE "/dev/pci0"'
+               echo >>$m 'LIBNAME=libpciutils'
+               echo >>$m 'WITH_LIBS+=-lpci'
+               ;;
+       gnu)
+               echo_n " i386-ports"
+               echo >>$c '#define PCI_HAVE_PM_INTEL_CONF'
+               ;;
+        *)
+               echo " Unfortunately, your OS is not supported by the PCI Library"
+               exit 1
+               ;;
+esac
+
+echo >>$c '#define PCI_HAVE_PM_DUMP'
+echo " dump"
+
+echo_n "Checking for zlib support... "
+if [ "$ZLIB" = yes -o "$ZLIB" = no ] ; then
+       echo "$ZLIB (set manually)"
+else
+       if [ -f /usr/include/zlib.h -o -f /usr/local/include/zlib.h ] ; then
+               ZLIB=yes
+       else
+               ZLIB=no
+       fi
+       echo "$ZLIB (auto-detected)"
+fi
+if [ "$ZLIB" = yes ] ; then
+       echo >>$c '#define PCI_COMPRESSED_IDS'
+       echo >>$c '#define PCI_IDS "pci.ids.gz"'
+       echo >>$m 'LIBZ=-lz'
+       echo >>$m 'WITH_LIBS+=$(LIBZ)'
+else
+       echo >>$c '#define PCI_IDS "pci.ids"'
+fi
+echo >>$c "#define PCI_PATH_IDS_DIR \"$IDSDIR\""
+
+echo_n "Checking for DNS support... "
+if [ "$DNS" = yes -o "$DNS" = no ] ; then
+       echo "$DNS (set manually)"
+else
+       if [ -f /usr/include/resolv.h ] ; then
+               DNS=yes
+       else
+               DNS=no
+       fi
+       echo "$DNS (auto-detected)"
+fi
+if [ "$DNS" = yes ] ; then
+       echo >>$c "#define PCI_USE_DNS"
+       echo >>$c "#define PCI_ID_DOMAIN \"pci.id.ucw.cz\""
+       echo >>$m 'WITH_LIBS+=-lresolv'
+fi
+
+echo "Checking whether to build a shared library... $SHARED (set manually)"
+if [ "$SHARED" = no ] ; then
+       echo >>$m 'PCILIB=$(LIBNAME).a'
+       echo >>$m 'LDLIBS=$(WITH_LIBS)'
+       echo >>$m 'LIB_LDLIBS='
+else
+       echo >>$m 'PCILIB=$(LIBNAME).so.$(VERSION)'
+       # We link the dependencies _to_ the library, so we do not need explicit deps in .pc
+       echo >>$m 'LDLIBS='
+       echo >>$m 'LIB_LDLIBS=$(WITH_LIBS)'
+       if [ "$SHARED" = yes ] ; then
+               echo >>$m 'SONAME=-Wl,-soname,$(LIBNAME).so$(ABI_VERSION)'
+       fi
+fi
+echo >>$m 'PCILIBPC=$(LIBNAME).pc'
+
+echo >>$c "#define PCILIB_VERSION \"$VERSION\""
+sed '/"/{s/^#define \([^ ]*\) "\(.*\)"$/\1=\2/;p;d;};s/^#define \(.*\)/\1=1/' <$c >>$m
diff --git a/lib/dump.c b/lib/dump.c
new file mode 100644 (file)
index 0000000..69a99c8
--- /dev/null
@@ -0,0 +1,178 @@
+/*
+ *     The PCI Library -- Reading of Bus Dumps
+ *
+ *     Copyright (c) 1997--2008 Martin Mares <mj@ucw.cz>
+ *
+ *     Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+#include <errno.h>
+
+#include "internal.h"
+
+struct dump_data {
+  int len, allocated;
+  byte data[1];
+};
+
+static void
+dump_config(struct pci_access *a)
+{
+  pci_define_param(a, "dump.name", "", "Name of the bus dump file to read from");
+}
+
+static int
+dump_detect(struct pci_access *a)
+{
+  char *name = pci_get_param(a, "dump.name");
+  return name && name[0];
+}
+
+static void
+dump_alloc_data(struct pci_dev *dev, int len)
+{
+  struct dump_data *dd = pci_malloc(dev->access, sizeof(struct dump_data) + len - 1);
+  dd->allocated = len;
+  dd->len = 0;
+  memset(dd->data, 0xff, len);
+  dev->aux = dd;
+}
+
+static int
+dump_validate(char *s, char *fmt)
+{
+  while (*fmt)
+    {
+      if (*fmt == '#' ? !isxdigit(*s) : *fmt != *s)
+       return 0;
+      fmt++, s++;
+    }
+  return 1;
+}
+
+static void
+dump_init(struct pci_access *a)
+{
+  char *name = pci_get_param(a, "dump.name");
+  FILE *f;
+  char buf[256];
+  struct pci_dev *dev = NULL;
+  int len, mn, bn, dn, fn, i, j;
+
+  if (!a)
+    a->error("dump: File name not given.");
+  if (!(f = fopen(name, "r")))
+    a->error("dump: Cannot open %s: %s", name, strerror(errno));
+  while (fgets(buf, sizeof(buf)-1, f))
+    {
+      char *z = strchr(buf, '\n');
+      if (!z)
+       a->error("dump: line too long or unterminated");
+      *z-- = 0;
+      if (z >= buf && *z == '\r')
+       *z-- = 0;
+      len = z - buf + 1;
+      mn = 0;
+      if (dump_validate(buf, "##:##.# ") && sscanf(buf, "%x:%x.%d", &bn, &dn, &fn) == 3 ||
+         dump_validate(buf, "####:##:##.# ") && sscanf(buf, "%x:%x:%x.%d", &mn, &bn, &dn, &fn) == 4)
+       {
+         dev = pci_get_dev(a, mn, bn, dn, fn);
+         dump_alloc_data(dev, 256);
+         pci_link_dev(a, dev);
+       }
+      else if (!len)
+       dev = NULL;
+      else if (dev &&
+              (dump_validate(buf, "##: ") || dump_validate(buf, "###: ")) &&
+              sscanf(buf, "%x: ", &i) == 1)
+       {
+         struct dump_data *dd = dev->aux;
+         z = strchr(buf, ' ') + 1;
+         while (isxdigit(z[0]) && isxdigit(z[1]) && (!z[2] || z[2] == ' ') &&
+                sscanf(z, "%x", &j) == 1 && j < 256)
+           {
+             if (i >= 4096)
+               a->error("dump: At most 4096 bytes of config space are supported");
+             if (i >= dd->allocated)   /* Need to re-allocate the buffer */
+               {
+                 dump_alloc_data(dev, 4096);
+                 memcpy(((struct dump_data *) dev->aux)->data, dd->data, 256);
+                 pci_mfree(dd);
+                 dd = dev->aux;
+               }
+             dd->data[i++] = j;
+             if (i > dd->len)
+               dd->len = i;
+             z += 2;
+             if (*z)
+               z++;
+           }
+         if (*z)
+           a->error("dump: Malformed line");
+       }
+    }
+}
+
+static void
+dump_cleanup(struct pci_access *a UNUSED)
+{
+}
+
+static void
+dump_scan(struct pci_access *a UNUSED)
+{
+}
+
+static int
+dump_read(struct pci_dev *d, int pos, byte *buf, int len)
+{
+  struct dump_data *dd;
+  if (!(dd = d->aux))
+    {
+      struct pci_dev *e = d->access->devices;
+      while (e && (e->domain != d->domain || e->bus != d->bus || e->dev != d->dev || e->func != d->func))
+       e = e->next;
+      if (!e)
+       return 0;
+      dd = e->aux;
+    }
+  if (pos + len > dd->len)
+    return 0;
+  memcpy(buf, dd->data + pos, len);
+  return 1;
+}
+
+static int
+dump_write(struct pci_dev *d UNUSED, int pos UNUSED, byte *buf UNUSED, int len UNUSED)
+{
+  d->access->error("Writing to dump files is not supported.");
+  return 0;
+}
+
+static void
+dump_cleanup_dev(struct pci_dev *d)
+{
+  if (d->aux)
+    {
+      pci_mfree(d->aux);
+      d->aux = NULL;
+    }
+}
+
+struct pci_methods pm_dump = {
+  "dump",
+  "Reading of register dumps (set the `dump.name' parameter)",
+  dump_config,
+  dump_detect,
+  dump_init,
+  dump_cleanup,
+  dump_scan,
+  pci_generic_fill_info,
+  dump_read,
+  dump_write,
+  NULL,                                        /* init_dev */
+  dump_cleanup_dev
+};
diff --git a/lib/fbsd-device.c b/lib/fbsd-device.c
new file mode 100644 (file)
index 0000000..742c641
--- /dev/null
@@ -0,0 +1,169 @@
+/*
+ *     The PCI Library -- FreeBSD /dev/pci access
+ *
+ *     Copyright (c) 1999 Jari Kirma <kirma@cs.hut.fi>
+ *     Updated in 2003 by Samy Al Bahra <samy@kerneled.com>
+ *
+ *     Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <osreldate.h>
+#include <stdint.h>
+
+#ifdef __FreeBSD_kernel_version
+#  ifndef __FreeBSD_version
+#    define __FreeBSD_version __FreeBSD_kernel_version
+#  endif
+#endif
+
+#if __FreeBSD_version < 430000 && !defined(__DragonFly__)
+#  include <pci/pcivar.h>
+#  include <pci/pci_ioctl.h>
+#else
+#  include <sys/pciio.h>
+#endif
+
+#include "internal.h"
+
+static void
+fbsd_config(struct pci_access *a)
+{
+  pci_define_param(a, "fbsd.path", PCI_PATH_FBSD_DEVICE, "Path to the FreeBSD PCI device");
+}
+
+static int
+fbsd_detect(struct pci_access *a)
+{
+  char *name = pci_get_param(a, "fbsd.path");
+
+  if (access(name, R_OK))
+    {
+      a->warning("Cannot open %s", name);
+      return 0;
+    }
+  a->debug("...using %s", name);
+  return 1;
+}
+
+static void
+fbsd_init(struct pci_access *a)
+{
+  char *name = pci_get_param(a, "fbsd.path");
+
+  a->fd = open(name, O_RDWR, 0);
+  if (a->fd < 0)
+    a->error("fbsd_init: %s open failed", name);
+}
+
+static void
+fbsd_cleanup(struct pci_access *a)
+{
+  close(a->fd);
+}
+
+static int
+fbsd_read(struct pci_dev *d, int pos, byte *buf, int len)
+{
+  struct pci_io pi;
+
+  if (!(len == 1 || len == 2 || len == 4))
+    return pci_generic_block_read(d, pos, buf, len);
+
+  if (pos >= 256)
+    return 0;
+
+#if __FreeBSD_version >= 700053
+  pi.pi_sel.pc_domain = d->domain;
+#endif
+  pi.pi_sel.pc_bus = d->bus;
+  pi.pi_sel.pc_dev = d->dev;
+  pi.pi_sel.pc_func = d->func;
+
+  pi.pi_reg = pos;
+  pi.pi_width = len;
+
+  if (ioctl(d->access->fd, PCIOCREAD, &pi) < 0)
+    {
+      if (errno == ENODEV)
+       return 0;
+      d->access->error("fbsd_read: ioctl(PCIOCREAD) failed: %s", strerror(errno));
+    }
+
+  switch (len)
+    {
+    case 1:
+      buf[0] = (u8) pi.pi_data;
+      break;
+    case 2:
+      ((u16 *) buf)[0] = cpu_to_le16((u16) pi.pi_data);
+      break;
+    case 4:
+      ((u32 *) buf)[0] = cpu_to_le32((u32) pi.pi_data);
+      break;
+    }
+  return 1;
+}
+
+static int
+fbsd_write(struct pci_dev *d, int pos, byte *buf, int len)
+{
+  struct pci_io pi;
+
+  if (!(len == 1 || len == 2 || len == 4))
+    return pci_generic_block_write(d, pos, buf, len);
+
+  if (pos >= 256)
+    return 0;
+
+#if __FreeBSD_version >= 700053
+  pi.pi_sel.pc_domain = d->domain;
+#endif
+  pi.pi_sel.pc_bus = d->bus;
+  pi.pi_sel.pc_dev = d->dev;
+  pi.pi_sel.pc_func = d->func;
+
+  pi.pi_reg = pos;
+  pi.pi_width = len;
+
+  switch (len)
+    {
+    case 1:
+      pi.pi_data = buf[0];
+      break;
+    case 2:
+      pi.pi_data = le16_to_cpu(((u16 *) buf)[0]);
+      break;
+    case 4:
+      pi.pi_data = le32_to_cpu(((u32 *) buf)[0]);
+      break;
+    }
+
+  if (ioctl(d->access->fd, PCIOCWRITE, &pi) < 0)
+    {
+      if (errno == ENODEV)
+       return 0;
+      d->access->error("fbsd_write: ioctl(PCIOCWRITE) failed: %s", strerror(errno));
+    }
+
+  return 1;
+}
+
+struct pci_methods pm_fbsd_device = {
+  "fbsd-device",
+  "FreeBSD /dev/pci device",
+  fbsd_config,
+  fbsd_detect,
+  fbsd_init,
+  fbsd_cleanup,
+  pci_generic_scan,
+  pci_generic_fill_info,
+  fbsd_read,
+  fbsd_write,
+  NULL,                                 /* dev_init */
+  NULL                                  /* dev_cleanup */
+};
diff --git a/lib/filter.c b/lib/filter.c
new file mode 100644 (file)
index 0000000..eb375c4
--- /dev/null
@@ -0,0 +1,123 @@
+/*
+ *     The PCI Library -- Device Filtering
+ *
+ *     Copyright (c) 1998--2003 Martin Mares <mj@ucw.cz>
+ *
+ *     Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "internal.h"
+
+void
+pci_filter_init(struct pci_access *a UNUSED, struct pci_filter *f)
+{
+  f->domain = f->bus = f->slot = f->func = -1;
+  f->vendor = f->device = -1;
+}
+
+/* Slot filter syntax: [[[domain]:][bus]:][slot][.[func]] */
+
+char *
+pci_filter_parse_slot(struct pci_filter *f, char *str)
+{
+  char *colon = strrchr(str, ':');
+  char *dot = strchr((colon ? colon + 1 : str), '.');
+  char *mid = str;
+  char *e, *bus, *colon2;
+
+  if (colon)
+    {
+      *colon++ = 0;
+      mid = colon;
+      colon2 = strchr(str, ':');
+      if (colon2)
+       {
+         *colon2++ = 0;
+         bus = colon2;
+         if (str[0] && strcmp(str, "*"))
+           {
+             long int x = strtol(str, &e, 16);
+             if ((e && *e) || (x < 0 || x > 0xffff))
+               return "Invalid domain number";
+             f->domain = x;
+           }
+       }
+      else
+       bus = str;
+      if (bus[0] && strcmp(bus, "*"))
+       {
+         long int x = strtol(bus, &e, 16);
+         if ((e && *e) || (x < 0 || x > 0xff))
+           return "Invalid bus number";
+         f->bus = x;
+       }
+    }
+  if (dot)
+    *dot++ = 0;
+  if (mid[0] && strcmp(mid, "*"))
+    {
+      long int x = strtol(mid, &e, 16);
+      if ((e && *e) || (x < 0 || x > 0x1f))
+       return "Invalid slot number";
+      f->slot = x;
+    }
+  if (dot && dot[0] && strcmp(dot, "*"))
+    {
+      long int x = strtol(dot, &e, 16);
+      if ((e && *e) || (x < 0 || x > 7))
+       return "Invalid function number";
+      f->func = x;
+    }
+  return NULL;
+}
+
+/* ID filter syntax: [vendor]:[device] */
+
+char *
+pci_filter_parse_id(struct pci_filter *f, char *str)
+{
+  char *s, *e;
+
+  if (!*str)
+    return NULL;
+  s = strchr(str, ':');
+  if (!s)
+    return "':' expected";
+  *s++ = 0;
+  if (str[0] && strcmp(str, "*"))
+    {
+      long int x = strtol(str, &e, 16);
+      if ((e && *e) || (x < 0 || x >= 0xffff))
+       return "Invalid vendor ID";
+      f->vendor = x;
+    }
+  if (s[0] && strcmp(s, "*"))
+    {
+      long int x = strtol(s, &e, 16);
+      if ((e && *e) || (x < 0 || x >= 0xffff))
+       return "Invalid device ID";
+      f->device = x;
+    }
+  return NULL;
+}
+
+int
+pci_filter_match(struct pci_filter *f, struct pci_dev *d)
+{
+  if ((f->domain >= 0 && f->domain != d->domain) ||
+      (f->bus >= 0 && f->bus != d->bus) ||
+      (f->slot >= 0 && f->slot != d->dev) ||
+      (f->func >= 0 && f->func != d->func))
+    return 0;
+  if (f->device >= 0 || f->vendor >= 0)
+    {
+      pci_fill_info(d, PCI_FILL_IDENT);
+      if ((f->device >= 0 && f->device != d->device_id) ||
+         (f->vendor >= 0 && f->vendor != d->vendor_id))
+       return 0;
+    }
+  return 1;
+}
diff --git a/lib/generic.c b/lib/generic.c
new file mode 100644 (file)
index 0000000..617c5fe
--- /dev/null
@@ -0,0 +1,206 @@
+/*
+ *     The PCI Library -- Generic Direct Access Functions
+ *
+ *     Copyright (c) 1997--2000 Martin Mares <mj@ucw.cz>
+ *
+ *     Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#include <string.h>
+
+#include "internal.h"
+
+void
+pci_generic_scan_bus(struct pci_access *a, byte *busmap, int bus)
+{
+  int dev, multi, ht;
+  struct pci_dev *t;
+
+  a->debug("Scanning bus %02x for devices...\n", bus);
+  if (busmap[bus])
+    {
+      a->warning("Bus %02x seen twice (firmware bug). Ignored.", bus);
+      return;
+    }
+  busmap[bus] = 1;
+  t = pci_alloc_dev(a);
+  t->bus = bus;
+  for(dev=0; dev<32; dev++)
+    {
+      t->dev = dev;
+      multi = 0;
+      for(t->func=0; !t->func || multi && t->func<8; t->func++)
+       {
+         u32 vd = pci_read_long(t, PCI_VENDOR_ID);
+         struct pci_dev *d;
+
+         if (!vd || vd == 0xffffffff)
+           continue;
+         ht = pci_read_byte(t, PCI_HEADER_TYPE);
+         if (!t->func)
+           multi = ht & 0x80;
+         ht &= 0x7f;
+         d = pci_alloc_dev(a);
+         d->bus = t->bus;
+         d->dev = t->dev;
+         d->func = t->func;
+         d->vendor_id = vd & 0xffff;
+         d->device_id = vd >> 16U;
+         d->known_fields = PCI_FILL_IDENT;
+         d->hdrtype = ht;
+         pci_link_dev(a, d);
+         switch (ht)
+           {
+           case PCI_HEADER_TYPE_NORMAL:
+             break;
+           case PCI_HEADER_TYPE_BRIDGE:
+           case PCI_HEADER_TYPE_CARDBUS:
+             pci_generic_scan_bus(a, busmap, pci_read_byte(t, PCI_SECONDARY_BUS));
+             break;
+           default:
+             a->debug("Device %04x:%02x:%02x.%d has unknown header type %02x.\n", d->domain, d->bus, d->dev, d->func, ht);
+           }
+       }
+    }
+  pci_free_dev(t);
+}
+
+void
+pci_generic_scan(struct pci_access *a)
+{
+  byte busmap[256];
+
+  memset(busmap, 0, sizeof(busmap));
+  pci_generic_scan_bus(a, busmap, 0);
+}
+
+int
+pci_generic_fill_info(struct pci_dev *d, int flags)
+{
+  struct pci_access *a = d->access;
+
+  if ((flags & (PCI_FILL_BASES | PCI_FILL_ROM_BASE)) && d->hdrtype < 0)
+    d->hdrtype = pci_read_byte(d, PCI_HEADER_TYPE) & 0x7f;
+  if (flags & PCI_FILL_IDENT)
+    {
+      d->vendor_id = pci_read_word(d, PCI_VENDOR_ID);
+      d->device_id = pci_read_word(d, PCI_DEVICE_ID);
+    }
+  if (flags & PCI_FILL_CLASS)
+      d->device_class = pci_read_word(d, PCI_CLASS_DEVICE);
+  if (flags & PCI_FILL_IRQ)
+    d->irq = pci_read_byte(d, PCI_INTERRUPT_LINE);
+  if (flags & PCI_FILL_BASES)
+    {
+      int cnt = 0, i;
+      memset(d->base_addr, 0, sizeof(d->base_addr));
+      switch (d->hdrtype)
+       {
+       case PCI_HEADER_TYPE_NORMAL:
+         cnt = 6;
+         break;
+       case PCI_HEADER_TYPE_BRIDGE:
+         cnt = 2;
+         break;
+       case PCI_HEADER_TYPE_CARDBUS:
+         cnt = 1;
+         break;
+       }
+      if (cnt)
+       {
+         for(i=0; i<cnt; i++)
+           {
+             u32 x = pci_read_long(d, PCI_BASE_ADDRESS_0 + i*4);
+             if (!x || x == (u32) ~0)
+               continue;
+             if ((x & PCI_BASE_ADDRESS_SPACE) == PCI_BASE_ADDRESS_SPACE_IO)
+               d->base_addr[i] = x;
+             else
+               {
+                 if ((x & PCI_BASE_ADDRESS_MEM_TYPE_MASK) != PCI_BASE_ADDRESS_MEM_TYPE_64)
+                   d->base_addr[i] = x;
+                 else if (i >= cnt-1)
+                   a->warning("%04x:%02x:%02x.%d: Invalid 64-bit address seen for BAR %d.", d->domain, d->bus, d->dev, d->func, i);
+                 else
+                   {
+                     u32 y = pci_read_long(d, PCI_BASE_ADDRESS_0 + (++i)*4);
+#ifdef PCI_HAVE_64BIT_ADDRESS
+                     d->base_addr[i-1] = x | (((pciaddr_t) y) << 32);
+#else
+                     if (y)
+                       a->warning("%04x:%02x:%02x.%d 64-bit device address ignored.", d->domain, d->bus, d->dev, d->func);
+                     else
+                       d->base_addr[i-1] = x;
+#endif
+                   }
+               }
+           }
+       }
+    }
+  if (flags & PCI_FILL_ROM_BASE)
+    {
+      int reg = 0;
+      d->rom_base_addr = 0;
+      switch (d->hdrtype)
+       {
+       case PCI_HEADER_TYPE_NORMAL:
+         reg = PCI_ROM_ADDRESS;
+         break;
+       case PCI_HEADER_TYPE_BRIDGE:
+         reg = PCI_ROM_ADDRESS1;
+         break;
+       }
+      if (reg)
+       {
+         u32 u = pci_read_long(d, reg);
+         if (u != 0xffffffff)
+           d->rom_base_addr = u;
+       }
+    }
+  return flags & ~PCI_FILL_SIZES;
+}
+
+static int
+pci_generic_block_op(struct pci_dev *d, int pos, byte *buf, int len,
+                int (*r)(struct pci_dev *d, int pos, byte *buf, int len))
+{
+  if ((pos & 1) && len >= 1)
+    {
+      if (!r(d, pos, buf, 1))
+       return 0;
+      pos++; buf++; len--;
+    }
+  if ((pos & 3) && len >= 2)
+    {
+      if (!r(d, pos, buf, 2))
+       return 0;
+      pos += 2; buf += 2; len -= 2;
+    }
+  while (len >= 4)
+    {
+      if (!r(d, pos, buf, 4))
+       return 0;
+      pos += 4; buf += 4; len -= 4;
+    }
+  if (len >= 2)
+    {
+      if (!r(d, pos, buf, 2))
+       return 0;
+      pos += 2; buf += 2; len -= 2;
+    }
+  if (len && !r(d, pos, buf, 1))
+    return 0;
+  return 1;
+}
+
+int
+pci_generic_block_read(struct pci_dev *d, int pos, byte *buf, int len)
+{
+  return pci_generic_block_op(d, pos, buf, len, d->access->methods->read);
+}
+
+int
+pci_generic_block_write(struct pci_dev *d, int pos, byte *buf, int len)
+{
+  return pci_generic_block_op(d, pos, buf, len, d->access->methods->write);
+}
diff --git a/lib/header.h b/lib/header.h
new file mode 100644 (file)
index 0000000..a53eccc
--- /dev/null
@@ -0,0 +1,1043 @@
+/*
+ *     The PCI Library -- PCI Header Structure (based on <linux/pci.h>)
+ *
+ *     Copyright (c) 1997--2007 Martin Mares <mj@ucw.cz>
+ *
+ *     Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+/*
+ * Under PCI, each device has 256 bytes of configuration address space,
+ * of which the first 64 bytes are standardized as follows:
+ */
+#define PCI_VENDOR_ID          0x00    /* 16 bits */
+#define PCI_DEVICE_ID          0x02    /* 16 bits */
+#define PCI_COMMAND            0x04    /* 16 bits */
+#define  PCI_COMMAND_IO                0x1     /* Enable response in I/O space */
+#define  PCI_COMMAND_MEMORY    0x2     /* Enable response in Memory space */
+#define  PCI_COMMAND_MASTER    0x4     /* Enable bus mastering */
+#define  PCI_COMMAND_SPECIAL   0x8     /* Enable response to special cycles */
+#define  PCI_COMMAND_INVALIDATE        0x10    /* Use memory write and invalidate */
+#define  PCI_COMMAND_VGA_PALETTE 0x20  /* Enable palette snooping */
+#define  PCI_COMMAND_PARITY    0x40    /* Enable parity checking */
+#define  PCI_COMMAND_WAIT      0x80    /* Enable address/data stepping */
+#define  PCI_COMMAND_SERR      0x100   /* Enable SERR */
+#define  PCI_COMMAND_FAST_BACK 0x200   /* Enable back-to-back writes */
+#define  PCI_COMMAND_DISABLE_INTx      0x400   /* PCIE: Disable INTx interrupts */
+
+#define PCI_STATUS             0x06    /* 16 bits */
+#define  PCI_STATUS_INTx       0x08    /* PCIE: INTx interrupt pending */
+#define  PCI_STATUS_CAP_LIST   0x10    /* Support Capability List */
+#define  PCI_STATUS_66MHZ      0x20    /* Support 66 Mhz PCI 2.1 bus */
+#define  PCI_STATUS_UDF                0x40    /* Support User Definable Features [obsolete] */
+#define  PCI_STATUS_FAST_BACK  0x80    /* Accept fast-back to back */
+#define  PCI_STATUS_PARITY     0x100   /* Detected parity error */
+#define  PCI_STATUS_DEVSEL_MASK        0x600   /* DEVSEL timing */
+#define  PCI_STATUS_DEVSEL_FAST        0x000
+#define  PCI_STATUS_DEVSEL_MEDIUM 0x200
+#define  PCI_STATUS_DEVSEL_SLOW 0x400
+#define  PCI_STATUS_SIG_TARGET_ABORT 0x800 /* Set on target abort */
+#define  PCI_STATUS_REC_TARGET_ABORT 0x1000 /* Master ack of " */
+#define  PCI_STATUS_REC_MASTER_ABORT 0x2000 /* Set on master abort */
+#define  PCI_STATUS_SIG_SYSTEM_ERROR 0x4000 /* Set when we drive SERR */
+#define  PCI_STATUS_DETECTED_PARITY 0x8000 /* Set on parity error */
+
+#define PCI_CLASS_REVISION     0x08    /* High 24 bits are class, low 8
+                                          revision */
+#define PCI_REVISION_ID         0x08    /* Revision ID */
+#define PCI_CLASS_PROG          0x09    /* Reg. Level Programming Interface */
+#define PCI_CLASS_DEVICE        0x0a    /* Device class */
+
+#define PCI_CACHE_LINE_SIZE    0x0c    /* 8 bits */
+#define PCI_LATENCY_TIMER      0x0d    /* 8 bits */
+#define PCI_HEADER_TYPE                0x0e    /* 8 bits */
+#define  PCI_HEADER_TYPE_NORMAL        0
+#define  PCI_HEADER_TYPE_BRIDGE 1
+#define  PCI_HEADER_TYPE_CARDBUS 2
+
+#define PCI_BIST               0x0f    /* 8 bits */
+#define PCI_BIST_CODE_MASK     0x0f    /* Return result */
+#define PCI_BIST_START         0x40    /* 1 to start BIST, 2 secs or less */
+#define PCI_BIST_CAPABLE       0x80    /* 1 if BIST capable */
+
+/*
+ * Base addresses specify locations in memory or I/O space.
+ * Decoded size can be determined by writing a value of
+ * 0xffffffff to the register, and reading it back.  Only
+ * 1 bits are decoded.
+ */
+#define PCI_BASE_ADDRESS_0     0x10    /* 32 bits */
+#define PCI_BASE_ADDRESS_1     0x14    /* 32 bits [htype 0,1 only] */
+#define PCI_BASE_ADDRESS_2     0x18    /* 32 bits [htype 0 only] */
+#define PCI_BASE_ADDRESS_3     0x1c    /* 32 bits */
+#define PCI_BASE_ADDRESS_4     0x20    /* 32 bits */
+#define PCI_BASE_ADDRESS_5     0x24    /* 32 bits */
+#define  PCI_BASE_ADDRESS_SPACE        0x01    /* 0 = memory, 1 = I/O */
+#define  PCI_BASE_ADDRESS_SPACE_IO 0x01
+#define  PCI_BASE_ADDRESS_SPACE_MEMORY 0x00
+#define  PCI_BASE_ADDRESS_MEM_TYPE_MASK 0x06
+#define  PCI_BASE_ADDRESS_MEM_TYPE_32  0x00    /* 32 bit address */
+#define  PCI_BASE_ADDRESS_MEM_TYPE_1M  0x02    /* Below 1M [obsolete] */
+#define  PCI_BASE_ADDRESS_MEM_TYPE_64  0x04    /* 64 bit address */
+#define  PCI_BASE_ADDRESS_MEM_PREFETCH 0x08    /* prefetchable? */
+#define  PCI_BASE_ADDRESS_MEM_MASK     (~(pciaddr_t)0x0f)
+#define  PCI_BASE_ADDRESS_IO_MASK      (~(pciaddr_t)0x03)
+/* bit 1 is reserved if address_space = 1 */
+
+/* Header type 0 (normal devices) */
+#define PCI_CARDBUS_CIS                0x28
+#define PCI_SUBSYSTEM_VENDOR_ID        0x2c
+#define PCI_SUBSYSTEM_ID       0x2e
+#define PCI_ROM_ADDRESS                0x30    /* Bits 31..11 are address, 10..1 reserved */
+#define  PCI_ROM_ADDRESS_ENABLE        0x01
+#define PCI_ROM_ADDRESS_MASK   (~(pciaddr_t)0x7ff)
+
+#define PCI_CAPABILITY_LIST    0x34    /* Offset of first capability list entry */
+
+/* 0x35-0x3b are reserved */
+#define PCI_INTERRUPT_LINE     0x3c    /* 8 bits */
+#define PCI_INTERRUPT_PIN      0x3d    /* 8 bits */
+#define PCI_MIN_GNT            0x3e    /* 8 bits */
+#define PCI_MAX_LAT            0x3f    /* 8 bits */
+
+/* Header type 1 (PCI-to-PCI bridges) */
+#define PCI_PRIMARY_BUS                0x18    /* Primary bus number */
+#define PCI_SECONDARY_BUS      0x19    /* Secondary bus number */
+#define PCI_SUBORDINATE_BUS    0x1a    /* Highest bus number behind the bridge */
+#define PCI_SEC_LATENCY_TIMER  0x1b    /* Latency timer for secondary interface */
+#define PCI_IO_BASE            0x1c    /* I/O range behind the bridge */
+#define PCI_IO_LIMIT           0x1d
+#define  PCI_IO_RANGE_TYPE_MASK        0x0f    /* I/O bridging type */
+#define  PCI_IO_RANGE_TYPE_16  0x00
+#define  PCI_IO_RANGE_TYPE_32  0x01
+#define  PCI_IO_RANGE_MASK     ~0x0f
+#define PCI_SEC_STATUS         0x1e    /* Secondary status register */
+#define PCI_MEMORY_BASE                0x20    /* Memory range behind */
+#define PCI_MEMORY_LIMIT       0x22
+#define  PCI_MEMORY_RANGE_TYPE_MASK 0x0f
+#define  PCI_MEMORY_RANGE_MASK ~0x0f
+#define PCI_PREF_MEMORY_BASE   0x24    /* Prefetchable memory range behind */
+#define PCI_PREF_MEMORY_LIMIT  0x26
+#define  PCI_PREF_RANGE_TYPE_MASK 0x0f
+#define  PCI_PREF_RANGE_TYPE_32        0x00
+#define  PCI_PREF_RANGE_TYPE_64        0x01
+#define  PCI_PREF_RANGE_MASK   ~0x0f
+#define PCI_PREF_BASE_UPPER32  0x28    /* Upper half of prefetchable memory range */
+#define PCI_PREF_LIMIT_UPPER32 0x2c
+#define PCI_IO_BASE_UPPER16    0x30    /* Upper half of I/O addresses */
+#define PCI_IO_LIMIT_UPPER16   0x32
+/* 0x34 same as for htype 0 */
+/* 0x35-0x3b is reserved */
+#define PCI_ROM_ADDRESS1       0x38    /* Same as PCI_ROM_ADDRESS, but for htype 1 */
+/* 0x3c-0x3d are same as for htype 0 */
+#define PCI_BRIDGE_CONTROL     0x3e
+#define  PCI_BRIDGE_CTL_PARITY 0x01    /* Enable parity detection on secondary interface */
+#define  PCI_BRIDGE_CTL_SERR   0x02    /* The same for SERR forwarding */
+#define  PCI_BRIDGE_CTL_NO_ISA 0x04    /* Disable bridging of ISA ports */
+#define  PCI_BRIDGE_CTL_VGA    0x08    /* Forward VGA addresses */
+#define  PCI_BRIDGE_CTL_MASTER_ABORT 0x20  /* Report master aborts */
+#define  PCI_BRIDGE_CTL_BUS_RESET 0x40 /* Secondary bus reset */
+#define  PCI_BRIDGE_CTL_FAST_BACK 0x80 /* Fast Back2Back enabled on secondary interface */
+#define  PCI_BRIDGE_CTL_PRI_DISCARD_TIMER 0x100                /* PCI-X? */
+#define  PCI_BRIDGE_CTL_SEC_DISCARD_TIMER 0x200                /* PCI-X? */
+#define  PCI_BRIDGE_CTL_DISCARD_TIMER_STATUS 0x400     /* PCI-X? */
+#define  PCI_BRIDGE_CTL_DISCARD_TIMER_SERR_EN 0x800    /* PCI-X? */
+
+/* Header type 2 (CardBus bridges) */
+/* 0x14-0x15 reserved */
+#define PCI_CB_SEC_STATUS      0x16    /* Secondary status */
+#define PCI_CB_PRIMARY_BUS     0x18    /* PCI bus number */
+#define PCI_CB_CARD_BUS                0x19    /* CardBus bus number */
+#define PCI_CB_SUBORDINATE_BUS 0x1a    /* Subordinate bus number */
+#define PCI_CB_LATENCY_TIMER   0x1b    /* CardBus latency timer */
+#define PCI_CB_MEMORY_BASE_0   0x1c
+#define PCI_CB_MEMORY_LIMIT_0  0x20
+#define PCI_CB_MEMORY_BASE_1   0x24
+#define PCI_CB_MEMORY_LIMIT_1  0x28
+#define PCI_CB_IO_BASE_0       0x2c
+#define PCI_CB_IO_BASE_0_HI    0x2e
+#define PCI_CB_IO_LIMIT_0      0x30
+#define PCI_CB_IO_LIMIT_0_HI   0x32
+#define PCI_CB_IO_BASE_1       0x34
+#define PCI_CB_IO_BASE_1_HI    0x36
+#define PCI_CB_IO_LIMIT_1      0x38
+#define PCI_CB_IO_LIMIT_1_HI   0x3a
+#define  PCI_CB_IO_RANGE_MASK  ~0x03
+/* 0x3c-0x3d are same as for htype 0 */
+#define PCI_CB_BRIDGE_CONTROL  0x3e
+#define  PCI_CB_BRIDGE_CTL_PARITY      0x01    /* Similar to standard bridge control register */
+#define  PCI_CB_BRIDGE_CTL_SERR                0x02
+#define  PCI_CB_BRIDGE_CTL_ISA         0x04
+#define  PCI_CB_BRIDGE_CTL_VGA         0x08
+#define  PCI_CB_BRIDGE_CTL_MASTER_ABORT        0x20
+#define  PCI_CB_BRIDGE_CTL_CB_RESET    0x40    /* CardBus reset */
+#define  PCI_CB_BRIDGE_CTL_16BIT_INT   0x80    /* Enable interrupt for 16-bit cards */
+#define  PCI_CB_BRIDGE_CTL_PREFETCH_MEM0 0x100 /* Prefetch enable for both memory regions */
+#define  PCI_CB_BRIDGE_CTL_PREFETCH_MEM1 0x200
+#define  PCI_CB_BRIDGE_CTL_POST_WRITES 0x400
+#define PCI_CB_SUBSYSTEM_VENDOR_ID 0x40
+#define PCI_CB_SUBSYSTEM_ID    0x42
+#define PCI_CB_LEGACY_MODE_BASE        0x44    /* 16-bit PC Card legacy mode base address (ExCa) */
+/* 0x48-0x7f reserved */
+
+/* Capability lists */
+
+#define PCI_CAP_LIST_ID                0       /* Capability ID */
+#define  PCI_CAP_ID_PM         0x01    /* Power Management */
+#define  PCI_CAP_ID_AGP                0x02    /* Accelerated Graphics Port */
+#define  PCI_CAP_ID_VPD                0x03    /* Vital Product Data */
+#define  PCI_CAP_ID_SLOTID     0x04    /* Slot Identification */
+#define  PCI_CAP_ID_MSI                0x05    /* Message Signalled Interrupts */
+#define  PCI_CAP_ID_CHSWP      0x06    /* CompactPCI HotSwap */
+#define  PCI_CAP_ID_PCIX        0x07    /* PCI-X */
+#define  PCI_CAP_ID_HT          0x08    /* HyperTransport */
+#define  PCI_CAP_ID_VNDR       0x09    /* Vendor specific */
+#define  PCI_CAP_ID_DBG                0x0A    /* Debug port */
+#define  PCI_CAP_ID_CCRC       0x0B    /* CompactPCI Central Resource Control */
+#define  PCI_CAP_ID_HOTPLUG    0x0C    /* PCI hot-plug */
+#define  PCI_CAP_ID_SSVID      0x0D    /* Bridge subsystem vendor/device ID */
+#define  PCI_CAP_ID_AGP3       0x0E    /* AGP 8x */
+#define  PCI_CAP_ID_SECURE     0x0F    /* Secure device (?) */
+#define  PCI_CAP_ID_EXP                0x10    /* PCI Express */
+#define  PCI_CAP_ID_MSIX       0x11    /* MSI-X */
+#define  PCI_CAP_ID_SATA       0x12    /* Serial-ATA HBA */
+#define  PCI_CAP_ID_AF         0x13    /* Advanced features of PCI devices integrated in PCIe root cplx */
+#define PCI_CAP_LIST_NEXT      1       /* Next capability in the list */
+#define PCI_CAP_FLAGS          2       /* Capability defined flags (16 bits) */
+#define PCI_CAP_SIZEOF         4
+
+/* Capabilities residing in the PCI Express extended configuration space */
+
+#define PCI_EXT_CAP_ID_AER     0x01    /* Advanced Error Reporting */
+#define PCI_EXT_CAP_ID_VC      0x02    /* Virtual Channel */
+#define PCI_EXT_CAP_ID_DSN     0x03    /* Device Serial Number */
+#define PCI_EXT_CAP_ID_PB      0x04    /* Power Budgeting */
+#define PCI_EXT_CAP_ID_RCLINK  0x05    /* Root Complex Link Declaration */
+#define PCI_EXT_CAP_ID_RCILINK 0x06    /* Root Complex Internal Link Declaration */
+#define PCI_EXT_CAP_ID_RCECOLL 0x07    /* Root Complex Event Collector */
+#define PCI_EXT_CAP_ID_MFVC    0x08    /* Multi-Function Virtual Channel */
+#define PCI_EXT_CAP_ID_RBCB    0x0a    /* Root Bridge Control Block */
+#define PCI_EXT_CAP_ID_VNDR    0x0b    /* Vendor specific */
+#define PCI_EXT_CAP_ID_ACS     0x0d    /* Access Controls */
+
+/* Power Management Registers */
+
+#define  PCI_PM_CAP_VER_MASK   0x0007  /* Version (2=PM1.1) */
+#define  PCI_PM_CAP_PME_CLOCK  0x0008  /* Clock required for PME generation */
+#define  PCI_PM_CAP_DSI                0x0020  /* Device specific initialization required */
+#define  PCI_PM_CAP_AUX_C_MASK 0x01c0  /* Maximum aux current required in D3cold */
+#define  PCI_PM_CAP_D1         0x0200  /* D1 power state support */
+#define  PCI_PM_CAP_D2         0x0400  /* D2 power state support */
+#define  PCI_PM_CAP_PME_D0     0x0800  /* PME can be asserted from D0 */
+#define  PCI_PM_CAP_PME_D1     0x1000  /* PME can be asserted from D1 */
+#define  PCI_PM_CAP_PME_D2     0x2000  /* PME can be asserted from D2 */
+#define  PCI_PM_CAP_PME_D3_HOT 0x4000  /* PME can be asserted from D3hot */
+#define  PCI_PM_CAP_PME_D3_COLD        0x8000  /* PME can be asserted from D3cold */
+#define PCI_PM_CTRL            4       /* PM control and status register */
+#define  PCI_PM_CTRL_STATE_MASK        0x0003  /* Current power state (D0 to D3) */
+#define  PCI_PM_CTRL_PME_ENABLE        0x0100  /* PME pin enable */
+#define  PCI_PM_CTRL_DATA_SEL_MASK     0x1e00  /* PM table data index */
+#define  PCI_PM_CTRL_DATA_SCALE_MASK   0x6000  /* PM table data scaling factor */
+#define  PCI_PM_CTRL_PME_STATUS        0x8000  /* PME pin status */
+#define PCI_PM_PPB_EXTENSIONS  6       /* PPB support extensions */
+#define  PCI_PM_PPB_B2_B3      0x40    /* If bridge enters D3hot, bus enters: 0=B3, 1=B2 */
+#define  PCI_PM_BPCC_ENABLE    0x80    /* Secondary bus is power managed */
+#define PCI_PM_DATA_REGISTER   7       /* PM table contents read here */
+#define PCI_PM_SIZEOF          8
+
+/* AGP registers */
+
+#define PCI_AGP_VERSION                2       /* BCD version number */
+#define PCI_AGP_RFU            3       /* Rest of capability flags */
+#define PCI_AGP_STATUS         4       /* Status register */
+#define  PCI_AGP_STATUS_RQ_MASK        0xff000000      /* Maximum number of requests - 1 */
+#define  PCI_AGP_STATUS_ISOCH  0x10000 /* Isochronous transactions supported */
+#define  PCI_AGP_STATUS_ARQSZ_MASK     0xe000  /* log2(optimum async req size in bytes) - 4 */
+#define  PCI_AGP_STATUS_CAL_MASK       0x1c00  /* Calibration cycle timing */
+#define  PCI_AGP_STATUS_SBA    0x0200  /* Sideband addressing supported */
+#define  PCI_AGP_STATUS_ITA_COH        0x0100  /* In-aperture accesses always coherent */
+#define  PCI_AGP_STATUS_GART64 0x0080  /* 64-bit GART entries supported */
+#define  PCI_AGP_STATUS_HTRANS 0x0040  /* If 0, core logic can xlate host CPU accesses thru aperture */
+#define  PCI_AGP_STATUS_64BIT  0x0020  /* 64-bit addressing cycles supported */
+#define  PCI_AGP_STATUS_FW     0x0010  /* Fast write transfers supported */
+#define  PCI_AGP_STATUS_AGP3   0x0008  /* AGP3 mode supported */
+#define  PCI_AGP_STATUS_RATE4  0x0004  /* 4x transfer rate supported (RFU in AGP3 mode) */
+#define  PCI_AGP_STATUS_RATE2  0x0002  /* 2x transfer rate supported (8x in AGP3 mode) */
+#define  PCI_AGP_STATUS_RATE1  0x0001  /* 1x transfer rate supported (4x in AGP3 mode) */
+#define PCI_AGP_COMMAND                8       /* Control register */
+#define  PCI_AGP_COMMAND_RQ_MASK 0xff000000  /* Master: Maximum number of requests */
+#define  PCI_AGP_COMMAND_ARQSZ_MASK    0xe000  /* log2(optimum async req size in bytes) - 4 */
+#define  PCI_AGP_COMMAND_CAL_MASK      0x1c00  /* Calibration cycle timing */
+#define  PCI_AGP_COMMAND_SBA   0x0200  /* Sideband addressing enabled */
+#define  PCI_AGP_COMMAND_AGP   0x0100  /* Allow processing of AGP transactions */
+#define  PCI_AGP_COMMAND_GART64        0x0080  /* 64-bit GART entries enabled */
+#define  PCI_AGP_COMMAND_64BIT 0x0020  /* Allow generation of 64-bit addr cycles */
+#define  PCI_AGP_COMMAND_FW    0x0010  /* Enable FW transfers */
+#define  PCI_AGP_COMMAND_RATE4 0x0004  /* Use 4x rate (RFU in AGP3 mode) */
+#define  PCI_AGP_COMMAND_RATE2 0x0002  /* Use 2x rate (8x in AGP3 mode) */
+#define  PCI_AGP_COMMAND_RATE1 0x0001  /* Use 1x rate (4x in AGP3 mode) */
+#define PCI_AGP_SIZEOF         12
+
+/* Slot Identification */
+
+#define PCI_SID_ESR            2       /* Expansion Slot Register */
+#define  PCI_SID_ESR_NSLOTS    0x1f    /* Number of expansion slots available */
+#define  PCI_SID_ESR_FIC       0x20    /* First In Chassis Flag */
+#define PCI_SID_CHASSIS_NR     3       /* Chassis Number */
+
+/* Message Signalled Interrupts registers */
+
+#define PCI_MSI_FLAGS          2       /* Various flags */
+#define  PCI_MSI_FLAGS_MASK_BIT        0x100   /* interrupt masking & reporting supported */
+#define  PCI_MSI_FLAGS_64BIT   0x080   /* 64-bit addresses allowed */
+#define  PCI_MSI_FLAGS_QSIZE   0x070   /* Message queue size configured */
+#define  PCI_MSI_FLAGS_QMASK   0x00e   /* Maximum queue size available */
+#define  PCI_MSI_FLAGS_ENABLE  0x001   /* MSI feature enabled */
+#define PCI_MSI_RFU            3       /* Rest of capability flags */
+#define PCI_MSI_ADDRESS_LO     4       /* Lower 32 bits */
+#define PCI_MSI_ADDRESS_HI     8       /* Upper 32 bits (if PCI_MSI_FLAGS_64BIT set) */
+#define PCI_MSI_DATA_32                8       /* 16 bits of data for 32-bit devices */
+#define PCI_MSI_DATA_64                12      /* 16 bits of data for 64-bit devices */
+#define PCI_MSI_MASK_BIT_32    12      /* per-vector masking for 32-bit devices */
+#define PCI_MSI_MASK_BIT_64    16      /* per-vector masking for 64-bit devices */
+#define PCI_MSI_PENDING_32     16      /* per-vector interrupt pending for 32-bit devices */
+#define PCI_MSI_PENDING_64     20      /* per-vector interrupt pending for 64-bit devices */
+
+/* PCI-X */
+#define PCI_PCIX_COMMAND                                                2 /* Command register offset */
+#define PCI_PCIX_COMMAND_DPERE                                     0x0001 /* Data Parity Error Recover Enable */
+#define PCI_PCIX_COMMAND_ERO                                       0x0002 /* Enable Relaxed Ordering */
+#define PCI_PCIX_COMMAND_MAX_MEM_READ_BYTE_COUNT                   0x000c /* Maximum Memory Read Byte Count */
+#define PCI_PCIX_COMMAND_MAX_OUTSTANDING_SPLIT_TRANS               0x0070
+#define PCI_PCIX_COMMAND_RESERVED                                   0xf80
+#define PCI_PCIX_STATUS                                                 4 /* Status register offset */
+#define PCI_PCIX_STATUS_FUNCTION                               0x00000007
+#define PCI_PCIX_STATUS_DEVICE                                 0x000000f8
+#define PCI_PCIX_STATUS_BUS                                    0x0000ff00
+#define PCI_PCIX_STATUS_64BIT                                  0x00010000
+#define PCI_PCIX_STATUS_133MHZ                                 0x00020000
+#define PCI_PCIX_STATUS_SC_DISCARDED                           0x00040000 /* Split Completion Discarded */
+#define PCI_PCIX_STATUS_UNEXPECTED_SC                          0x00080000 /* Unexpected Split Completion */
+#define PCI_PCIX_STATUS_DEVICE_COMPLEXITY                      0x00100000 /* 0 = simple device, 1 = bridge device */
+#define PCI_PCIX_STATUS_DESIGNED_MAX_MEM_READ_BYTE_COUNT       0x00600000 /* 0 = 512 bytes, 1 = 1024, 2 = 2048, 3 = 4096 */
+#define PCI_PCIX_STATUS_DESIGNED_MAX_OUTSTANDING_SPLIT_TRANS   0x03800000
+#define PCI_PCIX_STATUS_DESIGNED_MAX_CUMULATIVE_READ_SIZE      0x1c000000
+#define PCI_PCIX_STATUS_RCVD_SC_ERR_MESS                       0x20000000 /* Received Split Completion Error Message */
+#define PCI_PCIX_STATUS_266MHZ                                0x40000000 /* 266 MHz capable */
+#define PCI_PCIX_STATUS_533MHZ                                0x80000000 /* 533 MHz capable */
+#define PCI_PCIX_SIZEOF                4
+
+/* PCI-X Bridges */
+#define PCI_PCIX_BRIDGE_SEC_STATUS                                      2 /* Secondary bus status register offset */
+#define PCI_PCIX_BRIDGE_SEC_STATUS_64BIT                           0x0001
+#define PCI_PCIX_BRIDGE_SEC_STATUS_133MHZ                          0x0002
+#define PCI_PCIX_BRIDGE_SEC_STATUS_SC_DISCARDED                    0x0004 /* Split Completion Discarded on secondary bus */
+#define PCI_PCIX_BRIDGE_SEC_STATUS_UNEXPECTED_SC                   0x0008 /* Unexpected Split Completion on secondary bus */
+#define PCI_PCIX_BRIDGE_SEC_STATUS_SC_OVERRUN                      0x0010 /* Split Completion Overrun on secondary bus */
+#define PCI_PCIX_BRIDGE_SEC_STATUS_SPLIT_REQUEST_DELAYED           0x0020
+#define PCI_PCIX_BRIDGE_SEC_STATUS_CLOCK_FREQ                      0x01c0
+#define PCI_PCIX_BRIDGE_SEC_STATUS_RESERVED                        0xfe00
+#define PCI_PCIX_BRIDGE_STATUS                                          4 /* Primary bus status register offset */
+#define PCI_PCIX_BRIDGE_STATUS_FUNCTION                        0x00000007
+#define PCI_PCIX_BRIDGE_STATUS_DEVICE                          0x000000f8
+#define PCI_PCIX_BRIDGE_STATUS_BUS                             0x0000ff00
+#define PCI_PCIX_BRIDGE_STATUS_64BIT                           0x00010000
+#define PCI_PCIX_BRIDGE_STATUS_133MHZ                          0x00020000
+#define PCI_PCIX_BRIDGE_STATUS_SC_DISCARDED                    0x00040000 /* Split Completion Discarded */
+#define PCI_PCIX_BRIDGE_STATUS_UNEXPECTED_SC                   0x00080000 /* Unexpected Split Completion */
+#define PCI_PCIX_BRIDGE_STATUS_SC_OVERRUN                      0x00100000 /* Split Completion Overrun */
+#define PCI_PCIX_BRIDGE_STATUS_SPLIT_REQUEST_DELAYED           0x00200000
+#define PCI_PCIX_BRIDGE_STATUS_RESERVED                        0xffc00000
+#define PCI_PCIX_BRIDGE_UPSTREAM_SPLIT_TRANS_CTRL                       8 /* Upstream Split Transaction Register offset */
+#define PCI_PCIX_BRIDGE_DOWNSTREAM_SPLIT_TRANS_CTRL                    12 /* Downstream Split Transaction Register offset */
+#define PCI_PCIX_BRIDGE_STR_CAPACITY                           0x0000ffff
+#define PCI_PCIX_BRIDGE_STR_COMMITMENT_LIMIT                   0xffff0000
+#define PCI_PCIX_BRIDGE_SIZEOF 12
+
+/* HyperTransport (as of spec rev. 2.00) */
+#define PCI_HT_CMD             2       /* Command Register */
+#define  PCI_HT_CMD_TYP_HI     0xe000  /* Capability Type high part */
+#define  PCI_HT_CMD_TYP_HI_PRI 0x0000  /* Slave or Primary Interface */
+#define  PCI_HT_CMD_TYP_HI_SEC 0x2000  /* Host or Secondary Interface */
+#define  PCI_HT_CMD_TYP                0xf800  /* Capability Type */
+#define  PCI_HT_CMD_TYP_SW     0x4000  /* Switch */
+#define  PCI_HT_CMD_TYP_IDC    0x8000  /* Interrupt Discovery and Configuration */
+#define  PCI_HT_CMD_TYP_RID    0x8800  /* Revision ID */
+#define  PCI_HT_CMD_TYP_UIDC   0x9000  /* UnitID Clumping */
+#define  PCI_HT_CMD_TYP_ECSA   0x9800  /* Extended Configuration Space Access */
+#define  PCI_HT_CMD_TYP_AM     0xa000  /* Address Mapping */
+#define  PCI_HT_CMD_TYP_MSIM   0xa800  /* MSI Mapping */
+#define  PCI_HT_CMD_TYP_DR     0xb000  /* DirectRoute */
+#define  PCI_HT_CMD_TYP_VCS    0xb800  /* VCSet */
+#define  PCI_HT_CMD_TYP_RM     0xc000  /* Retry Mode */
+#define  PCI_HT_CMD_TYP_X86    0xc800  /* X86 (reserved) */
+
+                                       /* Link Control Register */
+#define  PCI_HT_LCTR_CFLE      0x0002  /* CRC Flood Enable */
+#define  PCI_HT_LCTR_CST       0x0004  /* CRC Start Test */
+#define  PCI_HT_LCTR_CFE       0x0008  /* CRC Force Error */
+#define  PCI_HT_LCTR_LKFAIL    0x0010  /* Link Failure */
+#define  PCI_HT_LCTR_INIT      0x0020  /* Initialization Complete */
+#define  PCI_HT_LCTR_EOC       0x0040  /* End of Chain */
+#define  PCI_HT_LCTR_TXO       0x0080  /* Transmitter Off */
+#define  PCI_HT_LCTR_CRCERR    0x0f00  /* CRC Error */
+#define  PCI_HT_LCTR_ISOCEN    0x1000  /* Isochronous Flow Control Enable */
+#define  PCI_HT_LCTR_LSEN      0x2000  /* LDTSTOP# Tristate Enable */
+#define  PCI_HT_LCTR_EXTCTL    0x4000  /* Extended CTL Time */
+#define  PCI_HT_LCTR_64B       0x8000  /* 64-bit Addressing Enable */
+
+                                       /* Link Configuration Register */
+#define  PCI_HT_LCNF_MLWI      0x0007  /* Max Link Width In */
+#define  PCI_HT_LCNF_LW_8B     0x0     /* Link Width 8 bits */
+#define  PCI_HT_LCNF_LW_16B    0x1     /* Link Width 16 bits */
+#define  PCI_HT_LCNF_LW_32B    0x3     /* Link Width 32 bits */
+#define  PCI_HT_LCNF_LW_2B     0x4     /* Link Width 2 bits */
+#define  PCI_HT_LCNF_LW_4B     0x5     /* Link Width 4 bits */
+#define  PCI_HT_LCNF_LW_NC     0x7     /* Link physically not connected */
+#define  PCI_HT_LCNF_DFI       0x0008  /* Doubleword Flow Control In */
+#define  PCI_HT_LCNF_MLWO      0x0070  /* Max Link Width Out */
+#define  PCI_HT_LCNF_DFO       0x0080  /* Doubleword Flow Control Out */
+#define  PCI_HT_LCNF_LWI       0x0700  /* Link Width In */
+#define  PCI_HT_LCNF_DFIE      0x0800  /* Doubleword Flow Control In Enable */
+#define  PCI_HT_LCNF_LWO       0x7000  /* Link Width Out */
+#define  PCI_HT_LCNF_DFOE      0x8000  /* Doubleword Flow Control Out Enable */
+
+                                       /* Revision ID Register */
+#define  PCI_HT_RID_MIN                0x1f    /* Minor Revision */
+#define  PCI_HT_RID_MAJ                0xe0    /* Major Revision */
+
+                                       /* Link Frequency/Error Register */
+#define  PCI_HT_LFRER_FREQ     0x0f    /* Transmitter Clock Frequency */
+#define  PCI_HT_LFRER_200      0x00    /* 200MHz */
+#define  PCI_HT_LFRER_300      0x01    /* 300MHz */
+#define  PCI_HT_LFRER_400      0x02    /* 400MHz */
+#define  PCI_HT_LFRER_500      0x03    /* 500MHz */
+#define  PCI_HT_LFRER_600      0x04    /* 600MHz */
+#define  PCI_HT_LFRER_800      0x05    /* 800MHz */
+#define  PCI_HT_LFRER_1000     0x06    /* 1.0GHz */
+#define  PCI_HT_LFRER_1200     0x07    /* 1.2GHz */
+#define  PCI_HT_LFRER_1400     0x08    /* 1.4GHz */
+#define  PCI_HT_LFRER_1600     0x09    /* 1.6GHz */
+#define  PCI_HT_LFRER_VEND     0x0f    /* Vendor-Specific */
+#define  PCI_HT_LFRER_ERR      0xf0    /* Link Error */
+#define  PCI_HT_LFRER_PROT     0x10    /* Protocol Error */
+#define  PCI_HT_LFRER_OV       0x20    /* Overflow Error */
+#define  PCI_HT_LFRER_EOC      0x40    /* End of Chain Error */
+#define  PCI_HT_LFRER_CTLT     0x80    /* CTL Timeout */
+
+                                       /* Link Frequency Capability Register */
+#define  PCI_HT_LFCAP_200      0x0001  /* 200MHz */
+#define  PCI_HT_LFCAP_300      0x0002  /* 300MHz */
+#define  PCI_HT_LFCAP_400      0x0004  /* 400MHz */
+#define  PCI_HT_LFCAP_500      0x0008  /* 500MHz */
+#define  PCI_HT_LFCAP_600      0x0010  /* 600MHz */
+#define  PCI_HT_LFCAP_800      0x0020  /* 800MHz */
+#define  PCI_HT_LFCAP_1000     0x0040  /* 1.0GHz */
+#define  PCI_HT_LFCAP_1200     0x0080  /* 1.2GHz */
+#define  PCI_HT_LFCAP_1400     0x0100  /* 1.4GHz */
+#define  PCI_HT_LFCAP_1600     0x0200  /* 1.6GHz */
+#define  PCI_HT_LFCAP_VEND     0x8000  /* Vendor-Specific */
+
+                                       /* Feature Register */
+#define  PCI_HT_FTR_ISOCFC     0x0001  /* Isochronous Flow Control Mode */
+#define  PCI_HT_FTR_LDTSTOP    0x0002  /* LDTSTOP# Supported */
+#define  PCI_HT_FTR_CRCTM      0x0004  /* CRC Test Mode */
+#define  PCI_HT_FTR_ECTLT      0x0008  /* Extended CTL Time Required */
+#define  PCI_HT_FTR_64BA       0x0010  /* 64-bit Addressing */
+#define  PCI_HT_FTR_UIDRD      0x0020  /* UnitID Reorder Disable */
+
+                                       /* Error Handling Register */
+#define  PCI_HT_EH_PFLE                0x0001  /* Protocol Error Flood Enable */
+#define  PCI_HT_EH_OFLE                0x0002  /* Overflow Error Flood Enable */
+#define  PCI_HT_EH_PFE         0x0004  /* Protocol Error Fatal Enable */
+#define  PCI_HT_EH_OFE         0x0008  /* Overflow Error Fatal Enable */
+#define  PCI_HT_EH_EOCFE       0x0010  /* End of Chain Error Fatal Enable */
+#define  PCI_HT_EH_RFE         0x0020  /* Response Error Fatal Enable */
+#define  PCI_HT_EH_CRCFE       0x0040  /* CRC Error Fatal Enable */
+#define  PCI_HT_EH_SERRFE      0x0080  /* System Error Fatal Enable (B */
+#define  PCI_HT_EH_CF          0x0100  /* Chain Fail */
+#define  PCI_HT_EH_RE          0x0200  /* Response Error */
+#define  PCI_HT_EH_PNFE                0x0400  /* Protocol Error Nonfatal Enable */
+#define  PCI_HT_EH_ONFE                0x0800  /* Overflow Error Nonfatal Enable */
+#define  PCI_HT_EH_EOCNFE      0x1000  /* End of Chain Error Nonfatal Enable */
+#define  PCI_HT_EH_RNFE                0x2000  /* Response Error Nonfatal Enable */
+#define  PCI_HT_EH_CRCNFE      0x4000  /* CRC Error Nonfatal Enable */
+#define  PCI_HT_EH_SERRNFE     0x8000  /* System Error Nonfatal Enable */
+
+/* HyperTransport: Slave or Primary Interface */
+#define PCI_HT_PRI_CMD         2       /* Command Register */
+#define  PCI_HT_PRI_CMD_BUID   0x001f  /* Base UnitID */
+#define  PCI_HT_PRI_CMD_UC     0x03e0  /* Unit Count */
+#define  PCI_HT_PRI_CMD_MH     0x0400  /* Master Host */
+#define  PCI_HT_PRI_CMD_DD     0x0800  /* Default Direction */
+#define  PCI_HT_PRI_CMD_DUL    0x1000  /* Drop on Uninitialized Link */
+
+#define PCI_HT_PRI_LCTR0       4       /* Link Control 0 Register */
+#define PCI_HT_PRI_LCNF0       6       /* Link Config 0 Register */
+#define PCI_HT_PRI_LCTR1       8       /* Link Control 1 Register */
+#define PCI_HT_PRI_LCNF1       10      /* Link Config 1 Register */
+#define PCI_HT_PRI_RID         12      /* Revision ID Register */
+#define PCI_HT_PRI_LFRER0      13      /* Link Frequency/Error 0 Register */
+#define PCI_HT_PRI_LFCAP0      14      /* Link Frequency Capability 0 Register */
+#define PCI_HT_PRI_FTR         16      /* Feature Register */
+#define PCI_HT_PRI_LFRER1      17      /* Link Frequency/Error 1 Register */
+#define PCI_HT_PRI_LFCAP1      18      /* Link Frequency Capability 1 Register */
+#define PCI_HT_PRI_ES          20      /* Enumeration Scratchpad Register */
+#define PCI_HT_PRI_EH          22      /* Error Handling Register */
+#define PCI_HT_PRI_MBU         24      /* Memory Base Upper Register */
+#define PCI_HT_PRI_MLU         25      /* Memory Limit Upper Register */
+#define PCI_HT_PRI_BN          26      /* Bus Number Register */
+#define PCI_HT_PRI_SIZEOF      28
+
+/* HyperTransport: Host or Secondary Interface */
+#define PCI_HT_SEC_CMD         2       /* Command Register */
+#define  PCI_HT_SEC_CMD_WR     0x0001  /* Warm Reset */
+#define  PCI_HT_SEC_CMD_DE     0x0002  /* Double-Ended */
+#define  PCI_HT_SEC_CMD_DN     0x0076  /* Device Number */
+#define  PCI_HT_SEC_CMD_CS     0x0080  /* Chain Side */
+#define  PCI_HT_SEC_CMD_HH     0x0100  /* Host Hide */
+#define  PCI_HT_SEC_CMD_AS     0x0400  /* Act as Slave */
+#define  PCI_HT_SEC_CMD_HIECE  0x0800  /* Host Inbound End of Chain Error */
+#define  PCI_HT_SEC_CMD_DUL    0x1000  /* Drop on Uninitialized Link */
+
+#define PCI_HT_SEC_LCTR                4       /* Link Control Register */
+#define PCI_HT_SEC_LCNF                6       /* Link Config Register */
+#define PCI_HT_SEC_RID         8       /* Revision ID Register */
+#define PCI_HT_SEC_LFRER       9       /* Link Frequency/Error Register */
+#define PCI_HT_SEC_LFCAP       10      /* Link Frequency Capability Register */
+#define PCI_HT_SEC_FTR         12      /* Feature Register */
+#define  PCI_HT_SEC_FTR_EXTRS  0x0100  /* Extended Register Set */
+#define  PCI_HT_SEC_FTR_UCNFE  0x0200  /* Upstream Configuration Enable */
+#define PCI_HT_SEC_ES          16      /* Enumeration Scratchpad Register */
+#define PCI_HT_SEC_EH          18      /* Error Handling Register */
+#define PCI_HT_SEC_MBU         20      /* Memory Base Upper Register */
+#define PCI_HT_SEC_MLU         21      /* Memory Limit Upper Register */
+#define PCI_HT_SEC_SIZEOF      24
+
+/* HyperTransport: Switch */
+#define PCI_HT_SW_CMD          2       /* Switch Command Register */
+#define  PCI_HT_SW_CMD_VIBERR  0x0080  /* VIB Error */
+#define  PCI_HT_SW_CMD_VIBFL   0x0100  /* VIB Flood */
+#define  PCI_HT_SW_CMD_VIBFT   0x0200  /* VIB Fatal */
+#define  PCI_HT_SW_CMD_VIBNFT  0x0400  /* VIB Nonfatal */
+#define PCI_HT_SW_PMASK                4       /* Partition Mask Register */
+#define PCI_HT_SW_SWINF                8       /* Switch Info Register */
+#define  PCI_HT_SW_SWINF_DP    0x0000001f /* Default Port */
+#define  PCI_HT_SW_SWINF_EN    0x00000020 /* Enable Decode */
+#define  PCI_HT_SW_SWINF_CR    0x00000040 /* Cold Reset */
+#define  PCI_HT_SW_SWINF_PCIDX 0x00000f00 /* Performance Counter Index */
+#define  PCI_HT_SW_SWINF_BLRIDX        0x0003f000 /* Base/Limit Range Index */
+#define  PCI_HT_SW_SWINF_SBIDX 0x00002000 /* Secondary Base Range Index */
+#define  PCI_HT_SW_SWINF_HP    0x00040000 /* Hot Plug */
+#define  PCI_HT_SW_SWINF_HIDE  0x00080000 /* Hide Port */
+#define PCI_HT_SW_PCD          12      /* Performance Counter Data Register */
+#define PCI_HT_SW_BLRD         16      /* Base/Limit Range Data Register */
+#define PCI_HT_SW_SBD          20      /* Secondary Base Data Register */
+#define PCI_HT_SW_SIZEOF       24
+
+                                       /* Counter indices */
+#define  PCI_HT_SW_PC_PCR      0x0     /* Posted Command Receive */
+#define  PCI_HT_SW_PC_NPCR     0x1     /* Nonposted Command Receive */
+#define  PCI_HT_SW_PC_RCR      0x2     /* Response Command Receive */
+#define  PCI_HT_SW_PC_PDWR     0x3     /* Posted DW Receive */
+#define  PCI_HT_SW_PC_NPDWR    0x4     /* Nonposted DW Receive */
+#define  PCI_HT_SW_PC_RDWR     0x5     /* Response DW Receive */
+#define  PCI_HT_SW_PC_PCT      0x6     /* Posted Command Transmit */
+#define  PCI_HT_SW_PC_NPCT     0x7     /* Nonposted Command Transmit */
+#define  PCI_HT_SW_PC_RCT      0x8     /* Response Command Transmit */
+#define  PCI_HT_SW_PC_PDWT     0x9     /* Posted DW Transmit */
+#define  PCI_HT_SW_PC_NPDWT    0xa     /* Nonposted DW Transmit */
+#define  PCI_HT_SW_PC_RDWT     0xb     /* Response DW Transmit */
+
+                                       /* Base/Limit Range indices */
+#define  PCI_HT_SW_BLR_BASE0_LO        0x0     /* Base 0[31:1], Enable */
+#define  PCI_HT_SW_BLR_BASE0_HI        0x1     /* Base 0 Upper */
+#define  PCI_HT_SW_BLR_LIM0_LO 0x2     /* Limit 0 Lower */
+#define  PCI_HT_SW_BLR_LIM0_HI 0x3     /* Limit 0 Upper */
+
+                                       /* Secondary Base indices */
+#define  PCI_HT_SW_SB_LO       0x0     /* Secondary Base[31:1], Enable */
+#define  PCI_HT_SW_S0_HI       0x1     /* Secondary Base Upper */
+
+/* HyperTransport: Interrupt Discovery and Configuration */
+#define PCI_HT_IDC_IDX         2       /* Index Register */
+#define PCI_HT_IDC_DATA                4       /* Data Register */
+#define PCI_HT_IDC_SIZEOF      8
+
+                                       /* Register indices */
+#define  PCI_HT_IDC_IDX_LINT   0x01    /* Last Interrupt Register */
+#define   PCI_HT_IDC_LINT      0x00ff0000 /* Last interrupt definition */
+#define  PCI_HT_IDC_IDX_IDR    0x10    /* Interrupt Definition Registers */
+                                       /* Low part (at index) */
+#define   PCI_HT_IDC_IDR_MASK  0x10000001 /* Mask */
+#define   PCI_HT_IDC_IDR_POL   0x10000002 /* Polarity */
+#define   PCI_HT_IDC_IDR_II_2  0x1000001c /* IntrInfo[4:2]: Message Type */
+#define   PCI_HT_IDC_IDR_II_5  0x10000020 /* IntrInfo[5]: Request EOI */
+#define   PCI_HT_IDC_IDR_II_6  0x00ffffc0 /* IntrInfo[23:6] */
+#define   PCI_HT_IDC_IDR_II_24 0xff000000 /* IntrInfo[31:24] */
+                                       /* High part (at index + 1) */
+#define   PCI_HT_IDC_IDR_II_32 0x00ffffff /* IntrInfo[55:32] */
+#define   PCI_HT_IDC_IDR_PASSPW        0x40000000 /* PassPW setting for messages */
+#define   PCI_HT_IDC_IDR_WEOI  0x80000000 /* Waiting for EOI */
+
+/* HyperTransport: Revision ID */
+#define PCI_HT_RID_RID         2       /* Revision Register */
+#define PCI_HT_RID_SIZEOF      4
+
+/* HyperTransport: UnitID Clumping */
+#define PCI_HT_UIDC_CS         4       /* Clumping Support Register */
+#define PCI_HT_UIDC_CE         8       /* Clumping Enable Register */
+#define PCI_HT_UIDC_SIZEOF     12
+
+/* HyperTransport: Extended Configuration Space Access */
+#define PCI_HT_ECSA_ADDR       4       /* Configuration Address Register */
+#define  PCI_HT_ECSA_ADDR_REG  0x00000ffc /* Register */
+#define  PCI_HT_ECSA_ADDR_FUN  0x00007000 /* Function */
+#define  PCI_HT_ECSA_ADDR_DEV  0x000f1000 /* Device */
+#define  PCI_HT_ECSA_ADDR_BUS  0x0ff00000 /* Bus Number */
+#define  PCI_HT_ECSA_ADDR_TYPE 0x10000000 /* Access Type */
+#define PCI_HT_ECSA_DATA       8       /* Configuration Data Register */
+#define PCI_HT_ECSA_SIZEOF     12
+
+/* HyperTransport: Address Mapping */
+#define PCI_HT_AM_CMD          2       /* Command Register */
+#define  PCI_HT_AM_CMD_NDMA    0x000f  /* Number of DMA Mappings */
+#define  PCI_HT_AM_CMD_IOSIZ   0x01f0  /* I/O Size */
+#define  PCI_HT_AM_CMD_MT      0x0600  /* Map Type */
+#define  PCI_HT_AM_CMD_MT_40B  0x0000  /* 40-bit */
+#define  PCI_HT_AM_CMD_MT_64B  0x0200  /* 64-bit */
+
+                                       /* Window Control Register bits */
+#define  PCI_HT_AM_SBW_CTR_COMP        0x1     /* Compat */
+#define  PCI_HT_AM_SBW_CTR_NCOH        0x2     /* NonCoherent */
+#define  PCI_HT_AM_SBW_CTR_ISOC        0x4     /* Isochronous */
+#define  PCI_HT_AM_SBW_CTR_EN  0x8     /* Enable */
+
+/* HyperTransport: 40-bit Address Mapping */
+#define PCI_HT_AM40_SBNPW      4       /* Secondary Bus Non-Prefetchable Window Register */
+#define  PCI_HT_AM40_SBW_BASE  0x000fffff /* Window Base */
+#define  PCI_HT_AM40_SBW_CTR   0xf0000000 /* Window Control */
+#define PCI_HT_AM40_SBPW       8       /* Secondary Bus Prefetchable Window Register */
+#define PCI_HT_AM40_DMA_PBASE0 12      /* DMA Window Primary Base 0 Register */
+#define PCI_HT_AM40_DMA_CTR0   15      /* DMA Window Control 0 Register */
+#define  PCI_HT_AM40_DMA_CTR_CTR 0xf0  /* Window Control */
+#define PCI_HT_AM40_DMA_SLIM0  16      /* DMA Window Secondary Limit 0 Register */
+#define PCI_HT_AM40_DMA_SBASE0 18      /* DMA Window Secondary Base 0 Register */
+#define PCI_HT_AM40_SIZEOF     12      /* size is variable: 12 + 8 * NDMA */
+
+/* HyperTransport: 64-bit Address Mapping */
+#define PCI_HT_AM64_IDX                4       /* Index Register */
+#define PCI_HT_AM64_DATA_LO    8       /* Data Lower Register */
+#define PCI_HT_AM64_DATA_HI    12      /* Data Upper Register */
+#define PCI_HT_AM64_SIZEOF     16
+
+                                       /* Register indices */
+#define  PCI_HT_AM64_IDX_SBNPW 0x00    /* Secondary Bus Non-Prefetchable Window Register */
+#define   PCI_HT_AM64_W_BASE_LO        0xfff00000 /* Window Base Lower */
+#define   PCI_HT_AM64_W_CTR    0x0000000f /* Window Control */
+#define  PCI_HT_AM64_IDX_SBPW  0x01    /* Secondary Bus Prefetchable Window Register */
+#define   PCI_HT_AM64_IDX_PBNPW        0x02    /* Primary Bus Non-Prefetchable Window Register */
+#define   PCI_HT_AM64_IDX_DMAPB0 0x04  /* DMA Window Primary Base 0 Register */
+#define   PCI_HT_AM64_IDX_DMASB0 0x05  /* DMA Window Secondary Base 0 Register */
+#define   PCI_HT_AM64_IDX_DMASL0 0x06  /* DMA Window Secondary Limit 0 Register */
+
+/* HyperTransport: MSI Mapping */
+#define PCI_HT_MSIM_CMD                2       /* Command Register */
+#define  PCI_HT_MSIM_CMD_EN    0x0001  /* Mapping Active */
+#define  PCI_HT_MSIM_CMD_FIXD  0x0002  /* MSI Mapping Address Fixed */
+#define PCI_HT_MSIM_ADDR_LO    4       /* MSI Mapping Address Lower Register */
+#define PCI_HT_MSIM_ADDR_HI    8       /* MSI Mapping Address Upper Register */
+#define PCI_HT_MSIM_SIZEOF     12
+
+/* HyperTransport: DirectRoute */
+#define PCI_HT_DR_CMD          2       /* Command Register */
+#define  PCI_HT_DR_CMD_NDRS    0x000f  /* Number of DirectRoute Spaces */
+#define  PCI_HT_DR_CMD_IDX     0x01f0  /* Index */
+#define PCI_HT_DR_EN           4       /* Enable Vector Register */
+#define PCI_HT_DR_DATA         8       /* Data Register */
+#define PCI_HT_DR_SIZEOF       12
+
+                                       /* Register indices */
+#define  PCI_HT_DR_IDX_BASE_LO 0x00    /* DirectRoute Base Lower Register */
+#define   PCI_HT_DR_OTNRD      0x00000001 /* Opposite to Normal Request Direction */
+#define   PCI_HT_DR_BL_LO      0xffffff00 /* Base/Limit Lower */
+#define  PCI_HT_DR_IDX_BASE_HI 0x01    /* DirectRoute Base Upper Register */
+#define  PCI_HT_DR_IDX_LIMIT_LO        0x02    /* DirectRoute Limit Lower Register */
+#define  PCI_HT_DR_IDX_LIMIT_HI        0x03    /* DirectRoute Limit Upper Register */
+
+/* HyperTransport: VCSet */
+#define PCI_HT_VCS_SUP         4       /* VCSets Supported Register */
+#define PCI_HT_VCS_L1EN                5       /* Link 1 VCSets Enabled Register */
+#define PCI_HT_VCS_L0EN                6       /* Link 0 VCSets Enabled Register */
+#define PCI_HT_VCS_SBD         8       /* Stream Bucket Depth Register */
+#define PCI_HT_VCS_SINT                9       /* Stream Interval Register */
+#define PCI_HT_VCS_SSUP                10      /* Number of Streaming VCs Supported Register */
+#define  PCI_HT_VCS_SSUP_0     0x00    /* Streaming VC 0 */
+#define  PCI_HT_VCS_SSUP_3     0x01    /* Streaming VCs 0-3 */
+#define  PCI_HT_VCS_SSUP_15    0x02    /* Streaming VCs 0-15 */
+#define PCI_HT_VCS_NFCBD       12      /* Non-FC Bucket Depth Register */
+#define PCI_HT_VCS_NFCINT      13      /* Non-FC Bucket Interval Register */
+#define PCI_HT_VCS_SIZEOF      16
+
+/* HyperTransport: Retry Mode */
+#define PCI_HT_RM_CTR0         4       /* Control 0 Register */
+#define  PCI_HT_RM_CTR_LRETEN  0x01    /* Link Retry Enable */
+#define  PCI_HT_RM_CTR_FSER    0x02    /* Force Single Error */
+#define  PCI_HT_RM_CTR_ROLNEN  0x04    /* Rollover Nonfatal Enable */
+#define  PCI_HT_RM_CTR_FSS     0x08    /* Force Single Stomp */
+#define  PCI_HT_RM_CTR_RETNEN  0x10    /* Retry Nonfatal Enable */
+#define  PCI_HT_RM_CTR_RETFEN  0x20    /* Retry Fatal Enable */
+#define  PCI_HT_RM_CTR_AA      0xc0    /* Allowed Attempts */
+#define PCI_HT_RM_STS0         5       /* Status 0 Register */
+#define  PCI_HT_RM_STS_RETSNT  0x01    /* Retry Sent */
+#define  PCI_HT_RM_STS_CNTROL  0x02    /* Count Rollover */
+#define  PCI_HT_RM_STS_SRCV    0x04    /* Stomp Received */
+#define PCI_HT_RM_CTR1         6       /* Control 1 Register */
+#define PCI_HT_RM_STS1         7       /* Status 1 Register */
+#define PCI_HT_RM_CNT0         8       /* Retry Count 0 Register */
+#define PCI_HT_RM_CNT1         10      /* Retry Count 1 Register */
+#define PCI_HT_RM_SIZEOF       12
+
+/* PCI Express */
+#define PCI_EXP_FLAGS          0x2     /* Capabilities register */
+#define PCI_EXP_FLAGS_VERS     0x000f  /* Capability version */
+#define PCI_EXP_FLAGS_TYPE     0x00f0  /* Device/Port type */
+#define  PCI_EXP_TYPE_ENDPOINT 0x0     /* Express Endpoint */
+#define  PCI_EXP_TYPE_LEG_END  0x1     /* Legacy Endpoint */
+#define  PCI_EXP_TYPE_ROOT_PORT 0x4    /* Root Port */
+#define  PCI_EXP_TYPE_UPSTREAM 0x5     /* Upstream Port */
+#define  PCI_EXP_TYPE_DOWNSTREAM 0x6   /* Downstream Port */
+#define  PCI_EXP_TYPE_PCI_BRIDGE 0x7   /* PCI/PCI-X Bridge */
+#define  PCI_EXP_TYPE_PCIE_BRIDGE 0x8  /* PCI/PCI-X to PCIE Bridge */
+#define  PCI_EXP_TYPE_ROOT_INT_EP 0x9  /* Root Complex Integrated Endpoint */
+#define  PCI_EXP_TYPE_ROOT_EC 0xa      /* Root Complex Event Collector */
+#define PCI_EXP_FLAGS_SLOT     0x0100  /* Slot implemented */
+#define PCI_EXP_FLAGS_IRQ      0x3e00  /* Interrupt message number */
+#define PCI_EXP_DEVCAP         0x4     /* Device capabilities */
+#define  PCI_EXP_DEVCAP_PAYLOAD        0x07    /* Max_Payload_Size */
+#define  PCI_EXP_DEVCAP_PHANTOM        0x18    /* Phantom functions */
+#define  PCI_EXP_DEVCAP_EXT_TAG        0x20    /* Extended tags */
+#define  PCI_EXP_DEVCAP_L0S    0x1c0   /* L0s Acceptable Latency */
+#define  PCI_EXP_DEVCAP_L1     0xe00   /* L1 Acceptable Latency */
+#define  PCI_EXP_DEVCAP_ATN_BUT        0x1000  /* Attention Button Present */
+#define  PCI_EXP_DEVCAP_ATN_IND        0x2000  /* Attention Indicator Present */
+#define  PCI_EXP_DEVCAP_PWR_IND        0x4000  /* Power Indicator Present */
+#define  PCI_EXP_DEVCAP_RBE    0x8000  /* Role-Based Error Reporting */
+#define  PCI_EXP_DEVCAP_PWR_VAL        0x3fc0000 /* Slot Power Limit Value */
+#define  PCI_EXP_DEVCAP_PWR_SCL        0xc000000 /* Slot Power Limit Scale */
+#define  PCI_EXP_DEVCAP_FLRESET        0x10000000 /* Function-Level Reset */
+#define PCI_EXP_DEVCTL         0x8     /* Device Control */
+#define  PCI_EXP_DEVCTL_CERE   0x0001  /* Correctable Error Reporting En. */
+#define  PCI_EXP_DEVCTL_NFERE  0x0002  /* Non-Fatal Error Reporting Enable */
+#define  PCI_EXP_DEVCTL_FERE   0x0004  /* Fatal Error Reporting Enable */
+#define  PCI_EXP_DEVCTL_URRE   0x0008  /* Unsupported Request Reporting En. */
+#define  PCI_EXP_DEVCTL_RELAXED        0x0010  /* Enable Relaxed Ordering */
+#define  PCI_EXP_DEVCTL_PAYLOAD        0x00e0  /* Max_Payload_Size */
+#define  PCI_EXP_DEVCTL_EXT_TAG        0x0100  /* Extended Tag Field Enable */
+#define  PCI_EXP_DEVCTL_PHANTOM        0x0200  /* Phantom Functions Enable */
+#define  PCI_EXP_DEVCTL_AUX_PME        0x0400  /* Auxiliary Power PM Enable */
+#define  PCI_EXP_DEVCTL_NOSNOOP        0x0800  /* Enable No Snoop */
+#define  PCI_EXP_DEVCTL_READRQ 0x7000  /* Max_Read_Request_Size */
+#define  PCI_EXP_DEVCTL_BCRE   0x8000  /* Bridge Configuration Retry Enable */
+#define  PCI_EXP_DEVCTL_FLRESET        0x8000  /* Function-Level Reset [bit shared with BCRE] */
+#define PCI_EXP_DEVSTA         0xa     /* Device Status */
+#define  PCI_EXP_DEVSTA_CED    0x01    /* Correctable Error Detected */
+#define  PCI_EXP_DEVSTA_NFED   0x02    /* Non-Fatal Error Detected */
+#define  PCI_EXP_DEVSTA_FED    0x04    /* Fatal Error Detected */
+#define  PCI_EXP_DEVSTA_URD    0x08    /* Unsupported Request Detected */
+#define  PCI_EXP_DEVSTA_AUXPD  0x10    /* AUX Power Detected */
+#define  PCI_EXP_DEVSTA_TRPND  0x20    /* Transactions Pending */
+#define PCI_EXP_LNKCAP         0xc     /* Link Capabilities */
+#define  PCI_EXP_LNKCAP_SPEED  0x0000f /* Maximum Link Speed */
+#define  PCI_EXP_LNKCAP_WIDTH  0x003f0 /* Maximum Link Width */
+#define  PCI_EXP_LNKCAP_ASPM   0x00c00 /* Active State Power Management */
+#define  PCI_EXP_LNKCAP_L0S    0x07000 /* L0s Acceptable Latency */
+#define  PCI_EXP_LNKCAP_L1     0x38000 /* L1 Acceptable Latency */
+#define  PCI_EXP_LNKCAP_CLOCKPM        0x40000 /* Clock Power Management */
+#define  PCI_EXP_LNKCAP_SURPRISE 0x80000 /* Surprise Down Error Reporting */
+#define  PCI_EXP_LNKCAP_DLLA   0x100000 /* Data Link Layer Active Reporting */
+#define  PCI_EXP_LNKCAP_LBNC   0x200000 /* Link Bandwidth Notification Capability */
+#define  PCI_EXP_LNKCAP_PORT   0xff000000 /* Port Number */
+#define PCI_EXP_LNKCTL         0x10    /* Link Control */
+#define  PCI_EXP_LNKCTL_ASPM   0x0003  /* ASPM Control */
+#define  PCI_EXP_LNKCTL_RCB    0x0008  /* Read Completion Boundary */
+#define  PCI_EXP_LNKCTL_DISABLE        0x0010  /* Link Disable */
+#define  PCI_EXP_LNKCTL_RETRAIN        0x0020  /* Retrain Link */
+#define  PCI_EXP_LNKCTL_CLOCK  0x0040  /* Common Clock Configuration */
+#define  PCI_EXP_LNKCTL_XSYNCH 0x0080  /* Extended Synch */
+#define  PCI_EXP_LNKCTL_CLOCKPM        0x0100  /* Clock Power Management */
+#define  PCI_EXP_LNKCTL_HWAUTWD        0x0200  /* Hardware Autonomous Width Disable */
+#define  PCI_EXP_LNKCTL_BWMIE  0x0400  /* Bandwidth Mgmt Interrupt Enable */
+#define  PCI_EXP_LNKCTL_AUTBWIE        0x0800  /* Autonomous Bandwidth Mgmt Interrupt Enable */
+#define PCI_EXP_LNKSTA         0x12    /* Link Status */
+#define  PCI_EXP_LNKSTA_SPEED  0x000f  /* Negotiated Link Speed */
+#define  PCI_EXP_LNKSTA_WIDTH  0x03f0  /* Negotiated Link Width */
+#define  PCI_EXP_LNKSTA_TR_ERR 0x0400  /* Training Error (obsolete) */
+#define  PCI_EXP_LNKSTA_TRAIN  0x0800  /* Link Training */
+#define  PCI_EXP_LNKSTA_SL_CLK 0x1000  /* Slot Clock Configuration */
+#define  PCI_EXP_LNKSTA_DL_ACT 0x2000  /* Data Link Layer in DL_Active State */
+#define  PCI_EXP_LNKSTA_BWMGMT 0x4000  /* Bandwidth Mgmt Status */
+#define  PCI_EXP_LNKSTA_AUTBW  0x8000  /* Autonomous Bandwidth Mgmt Status */
+#define PCI_EXP_SLTCAP         0x14    /* Slot Capabilities */
+#define  PCI_EXP_SLTCAP_ATNB   0x0001  /* Attention Button Present */
+#define  PCI_EXP_SLTCAP_PWRC   0x0002  /* Power Controller Present */
+#define  PCI_EXP_SLTCAP_MRL    0x0004  /* MRL Sensor Present */
+#define  PCI_EXP_SLTCAP_ATNI   0x0008  /* Attention Indicator Present */
+#define  PCI_EXP_SLTCAP_PWRI   0x0010  /* Power Indicator Present */
+#define  PCI_EXP_SLTCAP_HPS    0x0020  /* Hot-Plug Surprise */
+#define  PCI_EXP_SLTCAP_HPC    0x0040  /* Hot-Plug Capable */
+#define  PCI_EXP_SLTCAP_PWR_VAL        0x00007f80 /* Slot Power Limit Value */
+#define  PCI_EXP_SLTCAP_PWR_SCL        0x00018000 /* Slot Power Limit Scale */
+#define  PCI_EXP_SLTCAP_INTERLOCK 0x020000 /* Electromechanical Interlock Present */
+#define  PCI_EXP_SLTCAP_NOCMDCOMP 0x040000 /* No Command Completed Support */
+#define  PCI_EXP_SLTCAP_PSN    0xfff80000 /* Physical Slot Number */
+#define PCI_EXP_SLTCTL         0x18    /* Slot Control */
+#define  PCI_EXP_SLTCTL_ATNB   0x0001  /* Attention Button Pressed Enable */
+#define  PCI_EXP_SLTCTL_PWRF   0x0002  /* Power Fault Detected Enable */
+#define  PCI_EXP_SLTCTL_MRLS   0x0004  /* MRL Sensor Changed Enable */
+#define  PCI_EXP_SLTCTL_PRSD   0x0008  /* Presence Detect Changed Enable */
+#define  PCI_EXP_SLTCTL_CMDC   0x0010  /* Command Completed Interrupt Enable */
+#define  PCI_EXP_SLTCTL_HPIE   0x0020  /* Hot-Plug Interrupt Enable */
+#define  PCI_EXP_SLTCTL_ATNI   0x00c0  /* Attention Indicator Control */
+#define  PCI_EXP_SLTCTL_PWRI   0x0300  /* Power Indicator Control */
+#define  PCI_EXP_SLTCTL_PWRC   0x0400  /* Power Controller Control */
+#define  PCI_EXP_SLTCTL_INTERLOCK 0x0800 /* Electromechanical Interlock Control */
+#define  PCI_EXP_SLTCTL_LLCHG  0x1000  /* Data Link Layer State Changed Enable */
+#define PCI_EXP_SLTSTA         0x1a    /* Slot Status */
+#define  PCI_EXP_SLTSTA_ATNB   0x0001  /* Attention Button Pressed */
+#define  PCI_EXP_SLTSTA_PWRF   0x0002  /* Power Fault Detected */
+#define  PCI_EXP_SLTSTA_MRLS   0x0004  /* MRL Sensor Changed */
+#define  PCI_EXP_SLTSTA_PRSD   0x0008  /* Presence Detect Changed */
+#define  PCI_EXP_SLTSTA_CMDC   0x0010  /* Command Completed */
+#define  PCI_EXP_SLTSTA_MRL_ST 0x0020  /* MRL Sensor State */
+#define  PCI_EXP_SLTSTA_PRES   0x0040  /* Presence Detect State */
+#define  PCI_EXP_SLTSTA_INTERLOCK 0x0080 /* Electromechanical Interlock Status */
+#define  PCI_EXP_SLTSTA_LLCHG  0x0100  /* Data Link Layer State Changed */
+#define PCI_EXP_RTCTL          0x1c    /* Root Control */
+#define  PCI_EXP_RTCTL_SECEE   0x0001  /* System Error on Correctable Error */
+#define  PCI_EXP_RTCTL_SENFEE  0x0002  /* System Error on Non-Fatal Error */
+#define  PCI_EXP_RTCTL_SEFEE   0x0004  /* System Error on Fatal Error */
+#define  PCI_EXP_RTCTL_PMEIE   0x0008  /* PME Interrupt Enable */
+#define  PCI_EXP_RTCTL_CRSVIS  0x0010  /* Configuration Request Retry Status Visible to SW */
+#define PCI_EXP_RTCAP          0x1e    /* Root Capabilities */
+#define  PCI_EXP_RTCAP_CRSVIS  0x0010  /* Configuration Request Retry Status Visible to SW */
+#define PCI_EXP_RTSTA          0x20    /* Root Status */
+#define  PCI_EXP_RTSTA_PME_REQID   0x0000ffff /* PME Requester ID */
+#define  PCI_EXP_RTSTA_PME_STATUS  0x00010000 /* PME Status */
+#define  PCI_EXP_RTSTA_PME_PENDING 0x00020000 /* PME is Pending */
+
+/* MSI-X */
+#define  PCI_MSIX_ENABLE       0x8000
+#define  PCI_MSIX_MASK         0x4000
+#define  PCI_MSIX_TABSIZE      0x03ff
+#define PCI_MSIX_TABLE         4
+#define PCI_MSIX_PBA           8
+#define  PCI_MSIX_BIR          0x7
+
+/* Subsystem vendor/device ID for PCI bridges */
+#define PCI_SSVID_VENDOR       4
+#define PCI_SSVID_DEVICE       6
+
+/* Advanced Error Reporting */
+#define PCI_ERR_UNCOR_STATUS   4       /* Uncorrectable Error Status */
+#define  PCI_ERR_UNC_TRAIN     0x00000001      /* Training */
+#define  PCI_ERR_UNC_DLP       0x00000010      /* Data Link Protocol */
+#define  PCI_ERR_UNC_POISON_TLP        0x00001000      /* Poisoned TLP */
+#define  PCI_ERR_UNC_FCP       0x00002000      /* Flow Control Protocol */
+#define  PCI_ERR_UNC_COMP_TIME 0x00004000      /* Completion Timeout */
+#define  PCI_ERR_UNC_COMP_ABORT        0x00008000      /* Completer Abort */
+#define  PCI_ERR_UNC_UNX_COMP  0x00010000      /* Unexpected Completion */
+#define  PCI_ERR_UNC_RX_OVER   0x00020000      /* Receiver Overflow */
+#define  PCI_ERR_UNC_MALF_TLP  0x00040000      /* Malformed TLP */
+#define  PCI_ERR_UNC_ECRC      0x00080000      /* ECRC Error Status */
+#define  PCI_ERR_UNC_UNSUP     0x00100000      /* Unsupported Request */
+#define PCI_ERR_UNCOR_MASK     8       /* Uncorrectable Error Mask */
+       /* Same bits as above */
+#define PCI_ERR_UNCOR_SEVER    12      /* Uncorrectable Error Severity */
+       /* Same bits as above */
+#define PCI_ERR_COR_STATUS     16      /* Correctable Error Status */
+#define  PCI_ERR_COR_RCVR      0x00000001      /* Receiver Error Status */
+#define  PCI_ERR_COR_BAD_TLP   0x00000040      /* Bad TLP Status */
+#define  PCI_ERR_COR_BAD_DLLP  0x00000080      /* Bad DLLP Status */
+#define  PCI_ERR_COR_REP_ROLL  0x00000100      /* REPLAY_NUM Rollover */
+#define  PCI_ERR_COR_REP_TIMER 0x00001000      /* Replay Timer Timeout */
+#define PCI_ERR_COR_MASK       20      /* Correctable Error Mask */
+       /* Same bits as above */
+#define PCI_ERR_CAP            24      /* Advanced Error Capabilities */
+#define  PCI_ERR_CAP_FEP(x)    ((x) & 31)      /* First Error Pointer */
+#define  PCI_ERR_CAP_ECRC_GENC 0x00000020      /* ECRC Generation Capable */
+#define  PCI_ERR_CAP_ECRC_GENE 0x00000040      /* ECRC Generation Enable */
+#define  PCI_ERR_CAP_ECRC_CHKC 0x00000080      /* ECRC Check Capable */
+#define  PCI_ERR_CAP_ECRC_CHKE 0x00000100      /* ECRC Check Enable */
+#define PCI_ERR_HEADER_LOG     28      /* Header Log Register (16 bytes) */
+#define PCI_ERR_ROOT_COMMAND   44      /* Root Error Command */
+#define PCI_ERR_ROOT_STATUS    48
+#define PCI_ERR_ROOT_COR_SRC   52
+#define PCI_ERR_ROOT_SRC       54
+
+/* Virtual Channel */
+#define PCI_VC_PORT_REG1       4
+#define PCI_VC_PORT_REG2       8
+#define PCI_VC_PORT_CTRL       12
+#define PCI_VC_PORT_STATUS     14
+#define PCI_VC_RES_CAP         16
+#define PCI_VC_RES_CTRL                20
+#define PCI_VC_RES_STATUS      26
+
+/* Power Budgeting */
+#define PCI_PWR_DSR            4       /* Data Select Register */
+#define PCI_PWR_DATA           8       /* Data Register */
+#define  PCI_PWR_DATA_BASE(x)  ((x) & 0xff)        /* Base Power */
+#define  PCI_PWR_DATA_SCALE(x) (((x) >> 8) & 3)    /* Data Scale */
+#define  PCI_PWR_DATA_PM_SUB(x)        (((x) >> 10) & 7)   /* PM Sub State */
+#define  PCI_PWR_DATA_PM_STATE(x) (((x) >> 13) & 3) /* PM State */
+#define  PCI_PWR_DATA_TYPE(x)  (((x) >> 15) & 7)   /* Type */
+#define  PCI_PWR_DATA_RAIL(x)  (((x) >> 18) & 7)   /* Power Rail */
+#define PCI_PWR_CAP            12      /* Capability */
+#define  PCI_PWR_CAP_BUDGET(x) ((x) & 1)       /* Included in system budget */
+
+/*
+ * The PCI interface treats multi-function devices as independent
+ * devices.  The slot/function address of each device is encoded
+ * in a single byte as follows:
+ *
+ *     7:3 = slot
+ *     2:0 = function
+ */
+#define PCI_DEVFN(slot,func)   ((((slot) & 0x1f) << 3) | ((func) & 0x07))
+#define PCI_SLOT(devfn)                (((devfn) >> 3) & 0x1f)
+#define PCI_FUNC(devfn)                ((devfn) & 0x07)
+
+/* Device classes and subclasses */
+
+#define PCI_CLASS_NOT_DEFINED          0x0000
+#define PCI_CLASS_NOT_DEFINED_VGA      0x0001
+
+#define PCI_BASE_CLASS_STORAGE         0x01
+#define PCI_CLASS_STORAGE_SCSI         0x0100
+#define PCI_CLASS_STORAGE_IDE          0x0101
+#define PCI_CLASS_STORAGE_FLOPPY       0x0102
+#define PCI_CLASS_STORAGE_IPI          0x0103
+#define PCI_CLASS_STORAGE_RAID         0x0104
+#define PCI_CLASS_STORAGE_ATA          0x0105
+#define PCI_CLASS_STORAGE_SATA         0x0106
+#define PCI_CLASS_STORAGE_SAS          0x0107
+#define PCI_CLASS_STORAGE_OTHER                0x0180
+
+#define PCI_BASE_CLASS_NETWORK         0x02
+#define PCI_CLASS_NETWORK_ETHERNET     0x0200
+#define PCI_CLASS_NETWORK_TOKEN_RING   0x0201
+#define PCI_CLASS_NETWORK_FDDI         0x0202
+#define PCI_CLASS_NETWORK_ATM          0x0203
+#define PCI_CLASS_NETWORK_ISDN         0x0204
+#define PCI_CLASS_NETWORK_OTHER                0x0280
+
+#define PCI_BASE_CLASS_DISPLAY         0x03
+#define PCI_CLASS_DISPLAY_VGA          0x0300
+#define PCI_CLASS_DISPLAY_XGA          0x0301
+#define PCI_CLASS_DISPLAY_3D           0x0302
+#define PCI_CLASS_DISPLAY_OTHER                0x0380
+
+#define PCI_BASE_CLASS_MULTIMEDIA      0x04
+#define PCI_CLASS_MULTIMEDIA_VIDEO     0x0400
+#define PCI_CLASS_MULTIMEDIA_AUDIO     0x0401
+#define PCI_CLASS_MULTIMEDIA_PHONE     0x0402
+#define PCI_CLASS_MULTIMEDIA_AUDIO_DEV 0x0403
+#define PCI_CLASS_MULTIMEDIA_OTHER     0x0480
+
+#define PCI_BASE_CLASS_MEMORY          0x05
+#define  PCI_CLASS_MEMORY_RAM          0x0500
+#define  PCI_CLASS_MEMORY_FLASH                0x0501
+#define  PCI_CLASS_MEMORY_OTHER                0x0580
+
+#define PCI_BASE_CLASS_BRIDGE          0x06
+#define  PCI_CLASS_BRIDGE_HOST         0x0600
+#define  PCI_CLASS_BRIDGE_ISA          0x0601
+#define  PCI_CLASS_BRIDGE_EISA         0x0602
+#define  PCI_CLASS_BRIDGE_MC           0x0603
+#define  PCI_CLASS_BRIDGE_PCI          0x0604
+#define  PCI_CLASS_BRIDGE_PCMCIA       0x0605
+#define  PCI_CLASS_BRIDGE_NUBUS                0x0606
+#define  PCI_CLASS_BRIDGE_CARDBUS      0x0607
+#define  PCI_CLASS_BRIDGE_RACEWAY      0x0608
+#define  PCI_CLASS_BRIDGE_PCI_SEMI     0x0609
+#define  PCI_CLASS_BRIDGE_IB_TO_PCI    0x060a
+#define  PCI_CLASS_BRIDGE_OTHER                0x0680
+
+#define PCI_BASE_CLASS_COMMUNICATION   0x07
+#define PCI_CLASS_COMMUNICATION_SERIAL 0x0700
+#define PCI_CLASS_COMMUNICATION_PARALLEL 0x0701
+#define PCI_CLASS_COMMUNICATION_MSERIAL        0x0702
+#define PCI_CLASS_COMMUNICATION_MODEM  0x0703
+#define PCI_CLASS_COMMUNICATION_OTHER  0x0780
+
+#define PCI_BASE_CLASS_SYSTEM          0x08
+#define PCI_CLASS_SYSTEM_PIC           0x0800
+#define PCI_CLASS_SYSTEM_DMA           0x0801
+#define PCI_CLASS_SYSTEM_TIMER         0x0802
+#define PCI_CLASS_SYSTEM_RTC           0x0803
+#define PCI_CLASS_SYSTEM_PCI_HOTPLUG   0x0804
+#define PCI_CLASS_SYSTEM_OTHER         0x0880
+
+#define PCI_BASE_CLASS_INPUT           0x09
+#define PCI_CLASS_INPUT_KEYBOARD       0x0900
+#define PCI_CLASS_INPUT_PEN            0x0901
+#define PCI_CLASS_INPUT_MOUSE          0x0902
+#define PCI_CLASS_INPUT_SCANNER                0x0903
+#define PCI_CLASS_INPUT_GAMEPORT       0x0904
+#define PCI_CLASS_INPUT_OTHER          0x0980
+
+#define PCI_BASE_CLASS_DOCKING         0x0a
+#define PCI_CLASS_DOCKING_GENERIC      0x0a00
+#define PCI_CLASS_DOCKING_OTHER                0x0a80
+
+#define PCI_BASE_CLASS_PROCESSOR       0x0b
+#define PCI_CLASS_PROCESSOR_386                0x0b00
+#define PCI_CLASS_PROCESSOR_486                0x0b01
+#define PCI_CLASS_PROCESSOR_PENTIUM    0x0b02
+#define PCI_CLASS_PROCESSOR_ALPHA      0x0b10
+#define PCI_CLASS_PROCESSOR_POWERPC    0x0b20
+#define PCI_CLASS_PROCESSOR_MIPS       0x0b30
+#define PCI_CLASS_PROCESSOR_CO         0x0b40
+
+#define PCI_BASE_CLASS_SERIAL          0x0c
+#define PCI_CLASS_SERIAL_FIREWIRE      0x0c00
+#define PCI_CLASS_SERIAL_ACCESS                0x0c01
+#define PCI_CLASS_SERIAL_SSA           0x0c02
+#define PCI_CLASS_SERIAL_USB           0x0c03
+#define PCI_CLASS_SERIAL_FIBER         0x0c04
+#define PCI_CLASS_SERIAL_SMBUS         0x0c05
+#define PCI_CLASS_SERIAL_INFINIBAND    0x0c06
+
+#define PCI_BASE_CLASS_WIRELESS                0x0d
+#define PCI_CLASS_WIRELESS_IRDA                0x0d00
+#define PCI_CLASS_WIRELESS_CONSUMER_IR 0x0d01
+#define PCI_CLASS_WIRELESS_RF          0x0d10
+#define PCI_CLASS_WIRELESS_OTHER       0x0d80
+
+#define PCI_BASE_CLASS_INTELLIGENT     0x0e
+#define PCI_CLASS_INTELLIGENT_I2O      0x0e00
+
+#define PCI_BASE_CLASS_SATELLITE       0x0f
+#define PCI_CLASS_SATELLITE_TV         0x0f00
+#define PCI_CLASS_SATELLITE_AUDIO      0x0f01
+#define PCI_CLASS_SATELLITE_VOICE      0x0f03
+#define PCI_CLASS_SATELLITE_DATA       0x0f04
+
+#define PCI_BASE_CLASS_CRYPT           0x10
+#define PCI_CLASS_CRYPT_NETWORK                0x1000
+#define PCI_CLASS_CRYPT_ENTERTAINMENT  0x1010
+#define PCI_CLASS_CRYPT_OTHER          0x1080
+
+#define PCI_BASE_CLASS_SIGNAL          0x11
+#define PCI_CLASS_SIGNAL_DPIO          0x1100
+#define PCI_CLASS_SIGNAL_PERF_CTR      0x1101
+#define PCI_CLASS_SIGNAL_SYNCHRONIZER  0x1110
+#define PCI_CLASS_SIGNAL_OTHER         0x1180
+
+#define PCI_CLASS_OTHERS               0xff
+
+/* Several ID's we need in the library */
+
+#define PCI_VENDOR_ID_INTEL            0x8086
+#define PCI_VENDOR_ID_COMPAQ           0x0e11
diff --git a/lib/i386-io-hurd.h b/lib/i386-io-hurd.h
new file mode 100644 (file)
index 0000000..b61d656
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+ *     The PCI Library -- Access to i386 I/O ports on GNU Hurd
+ *
+ *     Copyright (c) 2003 Marco Gerards <metgerards@student.han.nl>
+ *     Copyright (c) 2003 Martin Mares <mj@ucw.cz>
+ *     Copyright (c) 2006 Samuel Thibault <samuel.thibault@ens-lyon.org> and
+ *                        Thomas Schwinge <tschwinge@gnu.org>
+ *     Copyright (c) 2007 Thomas Schwinge <tschwinge@gnu.org>
+ *
+ *     Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#include <sys/io.h>
+
+static inline int
+intel_setup_io(struct pci_access *a UNUSED)
+{
+  return (ioperm (0, 65535, 1) == -1) ? 0 : 1;
+}
+
+static inline int
+intel_cleanup_io(struct pci_access *a UNUSED)
+{
+  ioperm (0, 65535, 0);
+
+  return -1;
+}
diff --git a/lib/i386-io-linux.h b/lib/i386-io-linux.h
new file mode 100644 (file)
index 0000000..672897f
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ *     The PCI Library -- Access to i386 I/O ports on Linux
+ *
+ *     Copyright (c) 1997--2006 Martin Mares <mj@ucw.cz>
+ *
+ *     Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#ifdef __GLIBC__
+#include <sys/io.h>
+#else
+#include <asm/io.h>
+#endif
+
+static int
+intel_setup_io(struct pci_access *a UNUSED)
+{
+  return (iopl(3) < 0) ? 0 : 1;
+}
+
+static inline int
+intel_cleanup_io(struct pci_access *a UNUSED)
+{
+  iopl(3);
+  return -1;
+}
diff --git a/lib/i386-io-sunos.h b/lib/i386-io-sunos.h
new file mode 100644 (file)
index 0000000..3e08e73
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ *     The PCI Library -- Access to i386 I/O ports on Solaris
+ *
+ *     Copyright (c) 2003 Bill Moore <billm@eng.sun.com>
+ *     Copyright (c) 2003--2006 Martin Mares <mj@ucw.cz>
+ *
+ *     Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#include <sys/sysi86.h>
+#include <sys/psw.h>
+
+static int
+intel_setup_io(struct pci_access *a UNUSED)
+{
+  return (sysi86(SI86V86, V86SC_IOPL, PS_IOPL) < 0) ? 0 : 1;
+}
+
+static inline int
+intel_cleanup_io(struct pci_access *a UNUSED)
+{
+  /* FIXME: How to switch off I/O port access? */
+  return 1;
+}
+
+static inline u8
+inb (u16 port)
+{
+  u8 v;
+  __asm__ __volatile__ ("inb (%w1)":"=a" (v):"Nd" (port));
+  return v;
+}
+
+static inline u16
+inw (u16 port)
+{
+  u16 v;
+  __asm__ __volatile__ ("inw (%w1)":"=a" (v):"Nd" (port));
+  return v;
+}
+
+static inline u32
+inl (u16 port)
+{
+  u32 v;
+  __asm__ __volatile__ ("inl (%w1)":"=a" (v):"Nd" (port));
+  return v;
+}
+
+static inline void
+outb (u8 value, u16 port)
+{
+  __asm__ __volatile__ ("outb (%w1)": :"a" (value), "Nd" (port));
+}
+
+static inline void
+outw (u16 value, u16 port)
+{
+  __asm__ __volatile__ ("outw (%w1)": :"a" (value), "Nd" (port));
+}
+
+static inline void
+outl (u32 value, u16 port)
+{
+  __asm__ __volatile__ ("outl (%w1)": :"a" (value), "Nd" (port));
+}
diff --git a/lib/i386-io-windows.h b/lib/i386-io-windows.h
new file mode 100644 (file)
index 0000000..6e3dec0
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ *     The PCI Library -- Access to i386 I/O ports on Windows
+ *
+ *     Copyright (c) 2004 Alexander Stock <stock.alexander@gmx.de>
+ *     Copyright (c) 2006 Martin Mares <mj@ucw.cz>
+ *
+ *     Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#include <io.h>
+#include <windows.h>
+
+#ifndef __GNUC__
+#include <conio.h>
+#else
+int _outp(unsigned short port, int databyte);
+unsigned short _outpw(unsigned short port, unsigned short dataword);
+unsigned long _outpd(unsigned short port, unsigned long dataword);
+int _inp(unsigned short port);
+unsigned short _inpw(unsigned short port);
+unsigned long _inpd(unsigned short port);
+#endif
+
+#define outb(x,y) _outp(y,x)
+#define outw(x,y) _outpw(y,x)
+#define outl(x,y) _outpd(y,x)
+
+#define inb(x) _inp(x)
+#define inw(x) _inpw(x)
+#define inl(x) _inpd(x)
+
+static int
+intel_setup_io(struct pci_access *a)
+{
+  typedef int (*MYPROC)(void);
+  MYPROC InitializeWinIo;
+  HMODULE lib;
+
+  lib = LoadLibrary("WinIo.dll");
+  if (!lib)
+    {
+      a->warning("i386-io-windows: Couldn't load WinIo.dll.");
+      return 0;
+    }
+  /* XXX: Is this really needed? --mj */
+  GetProcAddress(lib, "InitializeWinIo");
+
+  InitializeWinIo = (MYPROC) GetProcAddress(lib, "InitializeWinIo");
+  if (!InitializeWinIo)
+    {
+      a->warning("i386-io-windows: Couldn't find InitializeWinIo function.");
+      return 0;
+    }
+
+  if (!InitializeWinIo())
+    {
+      a->warning("i386-io-windows: InitializeWinIo() failed.");
+      return 0;
+    }
+
+  return 1;
+}
+
+static inline int
+intel_cleanup_io(struct pci_access *a UNUSED)
+{
+  //TODO: DeInitializeWinIo!
+  return 1;
+}
diff --git a/lib/i386-ports.c b/lib/i386-ports.c
new file mode 100644 (file)
index 0000000..041e47f
--- /dev/null
@@ -0,0 +1,283 @@
+/*
+ *     The PCI Library -- Direct Configuration access via i386 Ports
+ *
+ *     Copyright (c) 1997--2006 Martin Mares <mj@ucw.cz>
+ *
+ *     Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#define _GNU_SOURCE
+
+#include "internal.h"
+
+#include <unistd.h>
+
+#if defined(PCI_OS_LINUX)
+#include "i386-io-linux.h"
+#elif defined(PCI_OS_GNU)
+#include "i386-io-hurd.h"
+#elif defined(PCI_OS_SUNOS)
+#include "i386-io-sunos.h"
+#elif defined(PCI_OS_WINDOWS)
+#include "i386-io-windows.h"
+#else
+#error Do not know how to access I/O ports on this OS.
+#endif
+
+static int conf12_io_enabled = -1;             /* -1=haven't tried, 0=failed, 1=succeeded */
+
+static int
+conf12_setup_io(struct pci_access *a)
+{
+  if (conf12_io_enabled < 0)
+    conf12_io_enabled = intel_setup_io(a);
+  return conf12_io_enabled;
+}
+
+static void
+conf12_init(struct pci_access *a)
+{
+  if (!conf12_setup_io(a))
+    a->error("No permission to access I/O ports (you probably have to be root).");
+}
+
+static void
+conf12_cleanup(struct pci_access *a UNUSED)
+{
+  if (conf12_io_enabled > 0)
+    conf12_io_enabled = intel_cleanup_io(a);
+}
+
+/*
+ * Before we decide to use direct hardware access mechanisms, we try to do some
+ * trivial checks to ensure it at least _seems_ to be working -- we just test
+ * whether bus 00 contains a host bridge (this is similar to checking
+ * techniques used in XFree86, but ours should be more reliable since we
+ * attempt to make use of direct access hints provided by the PCI BIOS).
+ *
+ * This should be close to trivial, but it isn't, because there are buggy
+ * chipsets (yes, you guessed it, by Intel and Compaq) that have no class ID.
+ */
+
+static int
+intel_sanity_check(struct pci_access *a, struct pci_methods *m)
+{
+  struct pci_dev d;
+
+  a->debug("...sanity check");
+  d.bus = 0;
+  d.func = 0;
+  for(d.dev = 0; d.dev < 32; d.dev++)
+    {
+      u16 class, vendor;
+      if (m->read(&d, PCI_CLASS_DEVICE, (byte *) &class, sizeof(class)) &&
+         (class == cpu_to_le16(PCI_CLASS_BRIDGE_HOST) || class == cpu_to_le16(PCI_CLASS_DISPLAY_VGA)) ||
+         m->read(&d, PCI_VENDOR_ID, (byte *) &vendor, sizeof(vendor)) &&
+         (vendor == cpu_to_le16(PCI_VENDOR_ID_INTEL) || vendor == cpu_to_le16(PCI_VENDOR_ID_COMPAQ)))
+       {
+         a->debug("...outside the Asylum at 0/%02x/0", d.dev);
+         return 1;
+       }
+    }
+  a->debug("...insane");
+  return 0;
+}
+
+/*
+ *     Configuration type 1
+ */
+
+#define CONFIG_CMD(bus, device_fn, where)   (0x80000000 | (bus << 16) | (device_fn << 8) | (where & ~3))
+
+static int
+conf1_detect(struct pci_access *a)
+{
+  unsigned int tmp;
+  int res = 0;
+
+  if (!conf12_setup_io(a))
+    {
+      a->debug("...no I/O permission");
+      return 0;
+    }
+  outb (0x01, 0xCFB);
+  tmp = inl (0xCF8);
+  outl (0x80000000, 0xCF8);
+  if (inl (0xCF8) == 0x80000000)
+    res = 1;
+  outl (tmp, 0xCF8);
+  if (res)
+    res = intel_sanity_check(a, &pm_intel_conf1);
+  return res;
+}
+
+static int
+conf1_read(struct pci_dev *d, int pos, byte *buf, int len)
+{
+  int addr = 0xcfc + (pos&3);
+
+  if (pos >= 256)
+    return 0;
+
+  outl(0x80000000 | ((d->bus & 0xff) << 16) | (PCI_DEVFN(d->dev, d->func) << 8) | (pos&~3), 0xcf8);
+
+  switch (len)
+    {
+    case 1:
+      buf[0] = inb(addr);
+      break;
+    case 2:
+      ((u16 *) buf)[0] = cpu_to_le16(inw(addr));
+      break;
+    case 4:
+      ((u32 *) buf)[0] = cpu_to_le32(inl(addr));
+      break;
+    default:
+      return pci_generic_block_read(d, pos, buf, len);
+    }
+  return 1;
+}
+
+static int
+conf1_write(struct pci_dev *d, int pos, byte *buf, int len)
+{
+  int addr = 0xcfc + (pos&3);
+
+  if (pos >= 256)
+    return 0;
+
+  outl(0x80000000 | ((d->bus & 0xff) << 16) | (PCI_DEVFN(d->dev, d->func) << 8) | (pos&~3), 0xcf8);
+
+  switch (len)
+    {
+    case 1:
+      outb(buf[0], addr);
+      break;
+    case 2:
+      outw(le16_to_cpu(((u16 *) buf)[0]), addr);
+      break;
+    case 4:
+      outl(le32_to_cpu(((u32 *) buf)[0]), addr);
+      break;
+    default:
+      return pci_generic_block_write(d, pos, buf, len);
+    }
+  return 1;
+}
+
+/*
+ *     Configuration type 2. Obsolete and brain-damaged, but existing.
+ */
+
+static int
+conf2_detect(struct pci_access *a)
+{
+  if (!conf12_setup_io(a))
+    {
+      a->debug("...no I/O permission");
+      return 0;
+    }
+
+  /* This is ugly and tends to produce false positives. Beware. */
+
+  outb(0x00, 0xCFB);
+  outb(0x00, 0xCF8);
+  outb(0x00, 0xCFA);
+  if (inb(0xCF8) == 0x00 && inb(0xCFA) == 0x00)
+    return intel_sanity_check(a, &pm_intel_conf2);
+  else
+    return 0;
+}
+
+static int
+conf2_read(struct pci_dev *d, int pos, byte *buf, int len)
+{
+  int addr = 0xc000 | (d->dev << 8) | pos;
+
+  if (pos >= 256)
+    return 0;
+
+  if (d->dev >= 16)
+    /* conf2 supports only 16 devices per bus */
+    return 0;
+  outb((d->func << 1) | 0xf0, 0xcf8);
+  outb(d->bus, 0xcfa);
+  switch (len)
+    {
+    case 1:
+      buf[0] = inb(addr);
+      break;
+    case 2:
+      ((u16 *) buf)[0] = cpu_to_le16(inw(addr));
+      break;
+    case 4:
+      ((u32 *) buf)[0] = cpu_to_le32(inl(addr));
+      break;
+    default:
+      outb(0, 0xcf8);
+      return pci_generic_block_read(d, pos, buf, len);
+    }
+  outb(0, 0xcf8);
+  return 1;
+}
+
+static int
+conf2_write(struct pci_dev *d, int pos, byte *buf, int len)
+{
+  int addr = 0xc000 | (d->dev << 8) | pos;
+
+  if (pos >= 256)
+    return 0;
+
+  if (d->dev >= 16)
+    d->access->error("conf2_write: only first 16 devices exist.");
+  outb((d->func << 1) | 0xf0, 0xcf8);
+  outb(d->bus, 0xcfa);
+  switch (len)
+    {
+    case 1:
+      outb(buf[0], addr);
+      break;
+    case 2:
+      outw(le16_to_cpu(* (u16 *) buf), addr);
+      break;
+    case 4:
+      outl(le32_to_cpu(* (u32 *) buf), addr);
+      break;
+    default:
+      outb(0, 0xcf8);
+      return pci_generic_block_write(d, pos, buf, len);
+    }
+  outb(0, 0xcf8);
+  return 1;
+}
+
+struct pci_methods pm_intel_conf1 = {
+  "intel-conf1",
+  "Raw I/O port access using Intel conf1 interface",
+  NULL,                                        /* config */
+  conf1_detect,
+  conf12_init,
+  conf12_cleanup,
+  pci_generic_scan,
+  pci_generic_fill_info,
+  conf1_read,
+  conf1_write,
+  NULL,                                        /* init_dev */
+  NULL                                 /* cleanup_dev */
+};
+
+struct pci_methods pm_intel_conf2 = {
+  "intel-conf2",
+  "Raw I/O port access using Intel conf2 interface",
+  NULL,                                        /* config */
+  conf2_detect,
+  conf12_init,
+  conf12_cleanup,
+  pci_generic_scan,
+  pci_generic_fill_info,
+  conf2_read,
+  conf2_write,
+  NULL,                                        /* init_dev */
+  NULL                                 /* cleanup_dev */
+};
diff --git a/lib/init.c b/lib/init.c
new file mode 100644 (file)
index 0000000..be45f81
--- /dev/null
@@ -0,0 +1,224 @@
+/*
+ *     The PCI Library -- Initialization and related things
+ *
+ *     Copyright (c) 1997--2008 Martin Mares <mj@ucw.cz>
+ *
+ *     Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+
+#include "internal.h"
+
+static struct pci_methods *pci_methods[PCI_ACCESS_MAX] = {
+  NULL,
+#ifdef PCI_HAVE_PM_LINUX_SYSFS
+  &pm_linux_sysfs,
+#else
+  NULL,
+#endif
+#ifdef PCI_HAVE_PM_LINUX_PROC
+  &pm_linux_proc,
+#else
+  NULL,
+#endif
+#ifdef PCI_HAVE_PM_INTEL_CONF
+  &pm_intel_conf1,
+  &pm_intel_conf2,
+#else
+  NULL,
+  NULL,
+#endif
+#ifdef PCI_HAVE_PM_FBSD_DEVICE
+  &pm_fbsd_device,
+#else
+  NULL,
+#endif
+#ifdef PCI_HAVE_PM_AIX_DEVICE
+  &pm_aix_device,
+#else
+  NULL,
+#endif
+#ifdef PCI_HAVE_PM_NBSD_LIBPCI
+  &pm_nbsd_libpci,
+#else
+  NULL,
+#endif
+#ifdef PCI_HAVE_PM_OBSD_DEVICE
+  &pm_obsd_device,
+#else
+  NULL,
+#endif
+#ifdef PCI_HAVE_PM_DUMP
+  &pm_dump,
+#else
+  NULL,
+#endif
+};
+
+void *
+pci_malloc(struct pci_access *a, int size)
+{
+  void *x = malloc(size);
+
+  if (!x)
+    a->error("Out of memory (allocation of %d bytes failed)", size);
+  return x;
+}
+
+void
+pci_mfree(void *x)
+{
+  if (x)
+    free(x);
+}
+
+char *
+pci_strdup(struct pci_access *a, char *s)
+{
+  int len = strlen(s) + 1;
+  char *t = pci_malloc(a, len);
+  memcpy(t, s, len);
+  return t;
+}
+
+static void
+pci_generic_error(char *msg, ...)
+{
+  va_list args;
+
+  va_start(args, msg);
+  fputs("pcilib: ", stderr);
+  vfprintf(stderr, msg, args);
+  fputc('\n', stderr);
+  exit(1);
+}
+
+static void
+pci_generic_warn(char *msg, ...)
+{
+  va_list args;
+
+  va_start(args, msg);
+  fputs("pcilib: ", stderr);
+  vfprintf(stderr, msg, args);
+  fputc('\n', stderr);
+}
+
+static void
+pci_generic_debug(char *msg, ...)
+{
+  va_list args;
+
+  va_start(args, msg);
+  vfprintf(stdout, msg, args);
+  va_end(args);
+}
+
+static void
+pci_null_debug(char *msg UNUSED, ...)
+{
+}
+
+int
+pci_lookup_method(char *name)
+{
+  int i;
+
+  for (i=0; i<PCI_ACCESS_MAX; i++)
+    if (pci_methods[i] && !strcmp(pci_methods[i]->name, name))
+      return i;
+  return -1;
+}
+
+char *
+pci_get_method_name(int index)
+{
+  if (index < 0 || index >= PCI_ACCESS_MAX)
+    return NULL;
+  else if (!pci_methods[index])
+    return "";
+  else
+    return pci_methods[index]->name;
+}
+
+struct pci_access *
+pci_alloc(void)
+{
+  struct pci_access *a = malloc(sizeof(struct pci_access));
+  int i;
+
+  memset(a, 0, sizeof(*a));
+  pci_set_name_list_path(a, PCI_PATH_IDS_DIR "/" PCI_IDS, 0);
+#ifdef PCI_USE_DNS
+  pci_define_param(a, "net.domain", PCI_ID_DOMAIN, "DNS domain used for resolving of ID's");
+  pci_define_param(a, "net.cache_name", "~/.pciids-cache", "Name of the ID cache file");
+  a->id_lookup_mode = PCI_LOOKUP_CACHE;
+#endif
+  for(i=0; i<PCI_ACCESS_MAX; i++)
+    if (pci_methods[i] && pci_methods[i]->config)
+      pci_methods[i]->config(a);
+  return a;
+}
+
+void
+pci_init(struct pci_access *a)
+{
+  if (!a->error)
+    a->error = pci_generic_error;
+  if (!a->warning)
+    a->warning = pci_generic_warn;
+  if (!a->debug)
+    a->debug = pci_generic_debug;
+  if (!a->debugging)
+    a->debug = pci_null_debug;
+
+  if (a->method)
+    {
+      if (a->method >= PCI_ACCESS_MAX || !pci_methods[a->method])
+       a->error("This access method is not supported.");
+      a->methods = pci_methods[a->method];
+    }
+  else
+    {
+      unsigned int i;
+      for(i=0; i<PCI_ACCESS_MAX; i++)
+       if (pci_methods[i])
+         {
+           a->debug("Trying method %d...", i);
+           if (pci_methods[i]->detect(a))
+             {
+               a->debug("...OK\n");
+               a->methods = pci_methods[i];
+               a->method = i;
+               break;
+             }
+           a->debug("...No.\n");
+         }
+      if (!a->methods)
+       a->error("Cannot find any working access method.");
+    }
+  a->debug("Decided to use %s\n", a->methods->name);
+  a->methods->init(a);
+}
+
+void
+pci_cleanup(struct pci_access *a)
+{
+  struct pci_dev *d, *e;
+
+  for(d=a->devices; d; d=e)
+    {
+      e = d->next;
+      pci_free_dev(d);
+    }
+  if (a->methods)
+    a->methods->cleanup(a);
+  pci_free_name_list(a);
+  pci_free_params(a);
+  pci_set_name_list_path(a, NULL, 0);
+  pci_mfree(a);
+}
diff --git a/lib/internal.h b/lib/internal.h
new file mode 100644 (file)
index 0000000..81b2b83
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ *     The PCI Library -- Internal Stuff
+ *
+ *     Copyright (c) 1997--2008 Martin Mares <mj@ucw.cz>
+ *
+ *     Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#ifdef __GNUC__
+#define PCI_ABI __attribute__((visibility("default")))
+#endif
+
+#include "pci.h"
+#include "sysdep.h"
+
+struct pci_methods {
+  char *name;
+  char *help;
+  void (*config)(struct pci_access *);
+  int (*detect)(struct pci_access *);
+  void (*init)(struct pci_access *);
+  void (*cleanup)(struct pci_access *);
+  void (*scan)(struct pci_access *);
+  int (*fill_info)(struct pci_dev *, int flags);
+  int (*read)(struct pci_dev *, int pos, byte *buf, int len);
+  int (*write)(struct pci_dev *, int pos, byte *buf, int len);
+  void (*init_dev)(struct pci_dev *);
+  void (*cleanup_dev)(struct pci_dev *);
+};
+
+void pci_generic_scan_bus(struct pci_access *, byte *busmap, int bus);
+void pci_generic_scan(struct pci_access *);
+int pci_generic_fill_info(struct pci_dev *, int flags);
+int pci_generic_block_read(struct pci_dev *, int pos, byte *buf, int len);
+int pci_generic_block_write(struct pci_dev *, int pos, byte *buf, int len);
+
+void *pci_malloc(struct pci_access *, int);
+void pci_mfree(void *);
+char *pci_strdup(struct pci_access *a, char *s);
+
+struct pci_dev *pci_alloc_dev(struct pci_access *);
+int pci_link_dev(struct pci_access *, struct pci_dev *);
+
+void pci_define_param(struct pci_access *acc, char *param, char *val, char *help);
+int pci_set_param_internal(struct pci_access *acc, char *param, char *val, int copy);
+void pci_free_params(struct pci_access *acc);
+
+extern struct pci_methods pm_intel_conf1, pm_intel_conf2, pm_linux_proc,
+       pm_fbsd_device, pm_aix_device, pm_nbsd_libpci, pm_obsd_device,
+       pm_dump, pm_linux_sysfs;
diff --git a/lib/libpci.pc.in b/lib/libpci.pc.in
new file mode 100644 (file)
index 0000000..f43f498
--- /dev/null
@@ -0,0 +1,10 @@
+prefix=@PREFIX@
+includedir=@INCDIR@
+libdir=@LIBDIR@
+idsdir=@IDSDIR@
+
+Name: libpci
+Description: libpci
+Version: @VERSION@
+Libs: -L${libdir} -lpci @LDLIBS@
+Cflags: -I${includedir}
diff --git a/lib/libpci.ver b/lib/libpci.ver
new file mode 100644 (file)
index 0000000..a1b7252
--- /dev/null
@@ -0,0 +1,12 @@
+/* Version script for the libpci */
+
+/*
+ *  Visibility declarations in the source take precedence over this script,
+ *  so we can boldly declare pci_* as public and still keep the internal
+ *  functions properly hidden.
+ */
+
+LIBPCI_3.0 {
+       global: pci_*;
+       local: *;
+};
diff --git a/lib/names-cache.c b/lib/names-cache.c
new file mode 100644 (file)
index 0000000..059311a
--- /dev/null
@@ -0,0 +1,203 @@
+/*
+ *     The PCI Library -- ID to Name Cache
+ *
+ *     Copyright (c) 2008 Martin Mares <mj@ucw.cz>
+ *
+ *     Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <sys/types.h>
+#include <pwd.h>
+#include <unistd.h>
+
+#include "internal.h"
+#include "names.h"
+
+#ifdef PCI_USE_DNS
+
+static const char cache_version[] = "#PCI-CACHE-1.0";
+
+static char *get_cache_name(struct pci_access *a)
+{
+  char *name, *buf;
+
+  name = pci_get_param(a, "net.cache_name");
+  if (!name || !name[0])
+    return NULL;
+  if (strncmp(name, "~/", 2))
+    return name;
+
+  uid_t uid = getuid();
+  struct passwd *pw = getpwuid(uid);
+  if (!pw)
+    return name;
+
+  buf = pci_malloc(a, strlen(pw->pw_dir) + strlen(name+1) + 1);
+  sprintf(buf, "%s%s", pw->pw_dir, name+1);
+  pci_set_param_internal(a, "net.cache_name", buf, 0);
+  return buf;
+}
+
+int
+pci_id_cache_load(struct pci_access *a, int flags)
+{
+  char *name;
+  char line[MAX_LINE];
+  FILE *f;
+  int lino;
+
+  a->id_cache_status = 1;
+  name = get_cache_name(a);
+  if (!name)
+    return 0;
+  a->debug("Using cache %s\n", name);
+  if (flags & PCI_LOOKUP_REFRESH_CACHE)
+    {
+      a->debug("Not loading cache, will refresh everything\n");
+      a->id_cache_status = 2;
+      return 0;
+    }
+
+  f = fopen(name, "rb");
+  if (!f)
+    {
+      a->debug("Cache file does not exist\n");
+      return 0;
+    }
+  /* FIXME: Compare timestamp with the pci.ids file? */
+
+  lino = 0;
+  while (fgets(line, sizeof(line), f))
+    {
+      char *p = strchr(line, '\n');
+      lino++;
+      if (p)
+        {
+         *p = 0;
+         if (lino == 1)
+           {
+             if (strcmp(line, cache_version))
+               {
+                 a->debug("Unrecognized cache version %s, ignoring\n", line);
+                 break;
+               }
+             continue;
+           }
+         else
+           {
+             int cat, id1, id2, id3, id4, cnt;
+             if (sscanf(line, "%d%x%x%x%x%n", &cat, &id1, &id2, &id3, &id4, &cnt) >= 5)
+               {
+                 p = line + cnt;
+                 while (*p && *p == ' ')
+                   p++;
+                 pci_id_insert(a, cat, id1, id2, id3, id4, p, SRC_CACHE);
+                 continue;
+               }
+           }
+       }
+      a->warning("Malformed cache file %s (line %d), ignoring", name, lino);
+      break;
+    }
+
+  if (ferror(f))
+    a->warning("Error while reading %s", name);
+  fclose(f);
+  return 1;
+}
+
+void
+pci_id_cache_flush(struct pci_access *a)
+{
+  int orig_status = a->id_cache_status;
+  FILE *f;
+  unsigned int h;
+  struct id_entry *e, *e2;
+  char hostname[256], *tmpname, *name;
+  int this_pid;
+
+  a->id_cache_status = 0;
+  if (orig_status < 2)
+    return;
+  name = get_cache_name(a);
+  if (!name)
+    return;
+
+  this_pid = getpid();
+  if (gethostname(hostname, sizeof(hostname)) < 0)
+    hostname[0] = 0;
+  else
+    hostname[sizeof(hostname)-1] = 0;
+  tmpname = pci_malloc(a, strlen(name) + strlen(hostname) + 64);
+  sprintf(tmpname, "%s.tmp-%s-%d", name, hostname, this_pid);
+
+  f = fopen(tmpname, "wb");
+  if (!f)
+    {
+      a->warning("Cannot write to %s: %s", name, strerror(errno));
+      pci_mfree(tmpname);
+      return;
+    }
+  a->debug("Writing cache to %s\n", name);
+  fprintf(f, "%s\n", cache_version);
+
+  for (h=0; h<HASH_SIZE; h++)
+    for (e=a->id_hash[h]; e; e=e->next)
+      if (e->src == SRC_CACHE || e->src == SRC_NET)
+       {
+         /* Negative entries are not written */
+         if (!e->name[0])
+           continue;
+
+         /* Verify that every entry is written at most once */
+         for (e2=a->id_hash[h]; e2 != e; e2=e2->next)
+           if ((e2->src == SRC_CACHE || e2->src == SRC_NET) &&
+               e2->cat == e->cat &&
+               e2->id12 == e->id12 && e2->id34 == e->id34)
+           break;
+         if (e2 == e)
+           fprintf(f, "%d %x %x %x %x %s\n",
+                   e->cat,
+                   pair_first(e->id12), pair_second(e->id12),
+                   pair_first(e->id34), pair_second(e->id34),
+                   e->name);
+       }
+
+  fflush(f);
+  if (ferror(f))
+    a->warning("Error writing %s", name);
+  fclose(f);
+
+  if (rename(tmpname, name) < 0)
+    {
+      a->warning("Cannot rename %s to %s: %s", tmpname, name, strerror(errno));
+      unlink(tmpname);
+    }
+  pci_mfree(tmpname);
+}
+
+#else
+
+int pci_id_cache_load(struct pci_access *a UNUSED, int flags UNUSED)
+{
+  a->id_cache_status = 1;
+  return 0;
+}
+
+void pci_id_cache_flush(struct pci_access *a)
+{
+  a->id_cache_status = 0;
+}
+
+#endif
+
+void
+pci_id_cache_dirty(struct pci_access *a)
+{
+  if (a->id_cache_status >= 1)
+    a->id_cache_status = 2;
+}
diff --git a/lib/names-hash.c b/lib/names-hash.c
new file mode 100644 (file)
index 0000000..33f3c11
--- /dev/null
@@ -0,0 +1,126 @@
+/*
+ *     The PCI Library -- ID to Name Hash
+ *
+ *     Copyright (c) 1997--2008 Martin Mares <mj@ucw.cz>
+ *
+ *     Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#include <string.h>
+
+#include "internal.h"
+#include "names.h"
+
+struct id_bucket {
+  struct id_bucket *next;
+  unsigned int full;
+};
+
+#ifdef __GNUC__
+#define BUCKET_ALIGNMENT __alignof__(struct id_bucket)
+#else
+union id_align {
+  struct id_bucket *next;
+  unsigned int full;
+};
+#define BUCKET_ALIGNMENT sizeof(union id_align)
+#endif
+#define BUCKET_ALIGN(n) ((n)+BUCKET_ALIGNMENT-(n)%BUCKET_ALIGNMENT)
+
+static void *id_alloc(struct pci_access *a, unsigned int size)
+{
+  struct id_bucket *buck = a->current_id_bucket;
+  unsigned int pos;
+
+  if (!a->id_hash)
+    {
+      a->id_hash = pci_malloc(a, sizeof(struct id_entry *) * HASH_SIZE);
+      memset(a->id_hash, 0, sizeof(struct id_entry *) * HASH_SIZE);
+    }
+
+  if (!buck || buck->full + size > BUCKET_SIZE)
+    {
+      buck = pci_malloc(a, BUCKET_SIZE);
+      buck->next = a->current_id_bucket;
+      a->current_id_bucket = buck;
+      buck->full = BUCKET_ALIGN(sizeof(struct id_bucket));
+    }
+  pos = buck->full;
+  buck->full = BUCKET_ALIGN(buck->full + size);
+  return (byte *)buck + pos;
+}
+
+static inline unsigned int id_hash(int cat, u32 id12, u32 id34)
+{
+  unsigned int h;
+
+  h = id12 ^ (id34 << 3) ^ (cat << 5);
+  return h % HASH_SIZE;
+}
+
+int
+pci_id_insert(struct pci_access *a, int cat, int id1, int id2, int id3, int id4, char *text, enum id_entry_src src)
+{
+  u32 id12 = id_pair(id1, id2);
+  u32 id34 = id_pair(id3, id4);
+  unsigned int h = id_hash(cat, id12, id34);
+  struct id_entry *n = a->id_hash ? a->id_hash[h] : NULL;
+  int len = strlen(text);
+
+  while (n && (n->id12 != id12 || n->id34 != id34 || n->cat != cat))
+    n = n->next;
+  if (n)
+    return 1;
+  n = id_alloc(a, sizeof(struct id_entry) + len);
+  n->id12 = id12;
+  n->id34 = id34;
+  n->cat = cat;
+  n->src = src;
+  memcpy(n->name, text, len+1);
+  n->next = a->id_hash[h];
+  a->id_hash[h] = n;
+  return 0;
+}
+
+char
+*pci_id_lookup(struct pci_access *a, int flags, int cat, int id1, int id2, int id3, int id4)
+{
+  struct id_entry *n, *best;
+  u32 id12 = id_pair(id1, id2);
+  u32 id34 = id_pair(id3, id4);
+
+  if (a->id_hash)
+    {
+      n = a->id_hash[id_hash(cat, id12, id34)];
+      best = NULL;
+      for (; n; n=n->next)
+        {
+         if (n->id12 != id12 || n->id34 != id34 || n->cat != cat)
+           continue;
+         if (n->src == SRC_LOCAL && (flags & PCI_LOOKUP_SKIP_LOCAL))
+           continue;
+         if (n->src == SRC_NET && !(flags & PCI_LOOKUP_NETWORK))
+           continue;
+         if (n->src == SRC_CACHE && !(flags & PCI_LOOKUP_CACHE))
+           continue;
+         if (!best || best->src < n->src)
+           best = n;
+       }
+      if (best)
+       return best->name;
+    }
+  return NULL;
+}
+
+void
+pci_id_hash_free(struct pci_access *a)
+{
+  pci_mfree(a->id_hash);
+  a->id_hash = NULL;
+  while (a->current_id_bucket)
+    {
+      struct id_bucket *buck = a->current_id_bucket;
+      a->current_id_bucket = buck->next;
+      pci_mfree(buck);
+    }
+}
diff --git a/lib/names-net.c b/lib/names-net.c
new file mode 100644 (file)
index 0000000..d149491
--- /dev/null
@@ -0,0 +1,239 @@
+/*
+ *     The PCI Library -- Resolving ID's via DNS
+ *
+ *     Copyright (c) 2007--2008 Martin Mares <mj@ucw.cz>
+ *
+ *     Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#include <string.h>
+#include <stdlib.h>
+
+#include "internal.h"
+#include "names.h"
+
+#ifdef PCI_USE_DNS
+
+#include <netinet/in.h>
+#include <arpa/nameser.h>
+#include <resolv.h>
+
+/*
+ * Unfortunately, there are no portable functions for DNS RR parsing,
+ * so we will do the bit shuffling with our own bare hands.
+ */
+
+#define GET16(x) do { if (p+2 > end) goto err; x = (p[0] << 8) | p[1]; p += 2; } while (0)
+#define GET32(x) do { if (p+4 > end) goto err; x = (p[0] << 24) | (p[1] << 16) | (p[2] << 8) | p[3]; p += 4; } while (0)
+
+enum dns_section {
+  DNS_SEC_QUESTION,
+  DNS_SEC_ANSWER,
+  DNS_SEC_AUTHORITY,
+  DNS_SEC_ADDITIONAL,
+  DNS_NUM_SECTIONS
+};
+
+struct dns_state {
+  u16 counts[DNS_NUM_SECTIONS];
+  byte *sections[DNS_NUM_SECTIONS+1];
+  byte *sec_ptr, *sec_end;
+
+  /* Result of dns_parse_rr(): */
+  u16 rr_type;
+  u16 rr_class;
+  u32 rr_ttl;
+  u16 rr_len;
+  byte *rr_data;
+};
+
+static byte *
+dns_skip_name(byte *p, byte *end)
+{
+  while (p < end)
+    {
+      unsigned int x = *p++;
+      if (!x)
+       return p;
+      switch (x & 0xc0)
+       {
+       case 0:         /* Uncompressed: x = length */
+         p += x;
+         break;
+       case 0xc0:      /* Indirection: 1 byte more for offset */
+         p++;
+         return (p < end) ? p : NULL;
+       default:        /* RFU */
+         return NULL;
+       }
+    }
+  return NULL;
+}
+
+static int
+dns_parse_packet(struct dns_state *s, byte *p, unsigned int plen)
+{
+  byte *end = p + plen;
+  unsigned int i, j, x, len;
+
+#if 0
+  /* Dump the packet */
+  for (i=0; i<plen; i++)
+    {
+      if (!(i%16)) printf("%04x:", i);
+      printf(" %02x", p[i]);
+      if ((i%16)==15 || i==plen-1) putchar('\n');
+    }
+#endif
+
+  GET32(x);                            /* ID and flags are ignored */
+  for (i=0; i<DNS_NUM_SECTIONS; i++)
+    GET16(s->counts[i]);
+  for (i=0; i<DNS_NUM_SECTIONS; i++)
+    {
+      s->sections[i] = p;
+      for (j=0; j < s->counts[i]; j++)
+       {
+         p = dns_skip_name(p, end);    /* Name */
+         if (!p)
+           goto err;
+         GET32(x);                     /* Type and class */
+         if (i != DNS_SEC_QUESTION)
+           {
+             GET32(x);                 /* TTL */
+             GET16(len);               /* Length of data */
+             p += len;
+             if (p > end)
+               goto err;
+           }
+       }
+    }
+  s->sections[i] = p;
+  return 0;
+
+err:
+  return -1;
+}
+
+static void
+dns_init_section(struct dns_state *s, int i)
+{
+  s->sec_ptr = s->sections[i];
+  s->sec_end = s->sections[i+1];
+}
+
+static int
+dns_parse_rr(struct dns_state *s)
+{
+  byte *p = s->sec_ptr;
+  byte *end = s->sec_end;
+
+  if (p == end)
+    return 0;
+  p = dns_skip_name(p, end);
+  if (!p)
+    goto err;
+  GET16(s->rr_type);
+  GET16(s->rr_class);
+  GET32(s->rr_ttl);
+  GET16(s->rr_len);
+  s->rr_data = p;
+  s->sec_ptr = p + s->rr_len;
+  return 1;
+
+err:
+  return -1;
+}
+
+char
+*pci_id_net_lookup(struct pci_access *a, int cat, int id1, int id2, int id3, int id4)
+{
+  static int resolver_inited;
+  char name[256], dnsname[256], txt[256], *domain;
+  byte answer[4096];
+  const byte *data;
+  int res, j, dlen;
+  struct dns_state ds;
+
+  domain = pci_get_param(a, "net.domain");
+  if (!domain || !domain[0])
+    return NULL;
+
+  switch (cat)
+    {
+    case ID_VENDOR:
+      sprintf(name, "%04x", id1);
+      break;
+    case ID_DEVICE:
+      sprintf(name, "%04x.%04x", id2, id1);
+      break;
+    case ID_SUBSYSTEM:
+      sprintf(name, "%04x.%04x.%04x.%04x", id4, id3, id2, id1);
+      break;
+    case ID_GEN_SUBSYSTEM:
+      sprintf(name, "%04x.%04x.s", id2, id1);
+      break;
+    case ID_CLASS:
+      sprintf(name, "%02x.c", id1);
+      break;
+    case ID_SUBCLASS:
+      sprintf(name, "%02x.%02x.c", id2, id1);
+      break;
+    case ID_PROGIF:
+      sprintf(name, "%02x.%02x.%02x.c", id3, id2, id1);
+      break;
+    default:
+      return NULL;
+    }
+  sprintf(dnsname, "%s.%s", name, domain);
+
+  a->debug("Resolving %s\n", dnsname);
+  if (!resolver_inited)
+    {
+      resolver_inited = 1;
+      res_init();
+    }
+  res = res_query(dnsname, ns_c_in, ns_t_txt, answer, sizeof(answer));
+  if (res < 0)
+    {
+      a->debug("\tfailed, h_errno=%d\n", _res.res_h_errno);
+      return NULL;
+    }
+  if (dns_parse_packet(&ds, answer, res) < 0)
+    {
+      a->debug("\tMalformed DNS packet received\n");
+      return NULL;
+    }
+  dns_init_section(&ds, DNS_SEC_ANSWER);
+  while (dns_parse_rr(&ds) > 0)
+    {
+      if (ds.rr_class != ns_c_in || ds.rr_type != ns_t_txt)
+       {
+         a->debug("\tUnexpected RR in answer: class %d, type %d\n", ds.rr_class, ds.rr_type);
+         continue;
+       }
+      data = ds.rr_data;
+      dlen = ds.rr_len;
+      j = 0;
+      while (j < dlen && j+1+data[j] <= dlen)
+       {
+         memcpy(txt, &data[j+1], data[j]);
+         txt[data[j]] = 0;
+         j += 1+data[j];
+         a->debug("\t\"%s\"\n", txt);
+         if (txt[0] == 'i' && txt[1] == '=')
+           return strdup(txt+2);
+       }
+    }
+
+  return NULL;
+}
+
+#else
+
+char *pci_id_net_lookup(struct pci_access *a UNUSED, int cat UNUSED, int id1 UNUSED, int id2 UNUSED, int id3 UNUSED, int id4 UNUSED)
+{
+  return NULL;
+}
+
+#endif
diff --git a/lib/names-parse.c b/lib/names-parse.c
new file mode 100644 (file)
index 0000000..58ab578
--- /dev/null
@@ -0,0 +1,251 @@
+/*
+ *     The PCI Library -- Parsing of the ID list
+ *
+ *     Copyright (c) 1997--2008 Martin Mares <mj@ucw.cz>
+ *
+ *     Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+
+#include "internal.h"
+#include "names.h"
+
+#ifdef PCI_COMPRESSED_IDS
+#include <zlib.h>
+typedef gzFile pci_file;
+#define pci_gets(f, l, s)      gzgets(f, l, s)
+#define pci_eof(f)             gzeof(f)
+
+static pci_file pci_open(struct pci_access *a)
+{
+  pci_file result;
+  size_t len;
+  char *new_name;
+
+  result = gzopen(a->id_file_name, "rb");
+  if (result)
+    return result;
+  len = strlen(a->id_file_name);
+  if (len >= 3 && memcmp(a->id_file_name + len - 3, ".gz", 3) != 0)
+    return result;
+  new_name = malloc(len - 2);
+  memcpy(new_name, a->id_file_name, len - 3);
+  new_name[len - 3] = 0;
+  pci_set_name_list_path(a, new_name, 1);
+  return gzopen(a->id_file_name, "rb");
+}
+
+#define pci_close(f)           gzclose(f)
+#define PCI_ERROR(f, err)                                              \
+       if (!err) {                                                     \
+               int errnum;                                             \
+               gzerror(f, &errnum);                                    \
+               if (errnum >= 0) err = NULL;                            \
+               else if (errnum == Z_ERRNO) err = "I/O error";          \
+               else err = zError(errnum);                              \
+       }
+#else
+typedef FILE * pci_file;
+#define pci_gets(f, l, s)      fgets(l, s, f)
+#define pci_eof(f)             feof(f)
+#define pci_open(a)            fopen(a->id_file_name, "r")
+#define pci_close(f)           fclose(f)
+#define PCI_ERROR(f, err)      if (!err && ferror(f))  err = "I/O error";
+#endif
+
+static int id_hex(char *p, int cnt)
+{
+  int x = 0;
+  while (cnt--)
+    {
+      x <<= 4;
+      if (*p >= '0' && *p <= '9')
+       x += (*p - '0');
+      else if (*p >= 'a' && *p <= 'f')
+       x += (*p - 'a' + 10);
+      else if (*p >= 'A' && *p <= 'F')
+       x += (*p - 'A' + 10);
+      else
+       return -1;
+      p++;
+    }
+  return x;
+}
+
+static inline int id_white_p(int c)
+{
+  return (c == ' ') || (c == '\t');
+}
+
+
+static const char *id_parse_list(struct pci_access *a, pci_file f, int *lino)
+{
+  char line[MAX_LINE];
+  char *p;
+  int id1=0, id2=0, id3=0, id4=0;
+  int cat = -1;
+  int nest;
+  static const char parse_error[] = "Parse error";
+
+  *lino = 0;
+  while (pci_gets(f, line, sizeof(line)))
+    {
+      (*lino)++;
+      p = line;
+      while (*p && *p != '\n' && *p != '\r')
+       p++;
+      if (!*p && !pci_eof(f))
+       return "Line too long";
+      *p = 0;
+      if (p > line && (p[-1] == ' ' || p[-1] == '\t'))
+       *--p = 0;
+
+      p = line;
+      while (id_white_p(*p))
+       p++;
+      if (!*p || *p == '#')
+       continue;
+
+      p = line;
+      while (*p == '\t')
+       p++;
+      nest = p - line;
+
+      if (!nest)                                       /* Top-level entries */
+       {
+         if (p[0] == 'C' && p[1] == ' ')               /* Class block */
+           {
+             if ((id1 = id_hex(p+2, 2)) < 0 || !id_white_p(p[4]))
+               return parse_error;
+             cat = ID_CLASS;
+             p += 5;
+           }
+         else if (p[0] == 'S' && p[1] == ' ')
+           {                                           /* Generic subsystem block */
+             if ((id1 = id_hex(p+2, 4)) < 0 || p[6])
+               return parse_error;
+             if (!pci_id_lookup(a, 0, ID_VENDOR, id1, 0, 0, 0))
+               return "Vendor does not exist";
+             cat = ID_GEN_SUBSYSTEM;
+             continue;
+           }
+         else if (p[0] >= 'A' && p[0] <= 'Z' && p[1] == ' ')
+           {                                           /* Unrecognized block (RFU) */
+             cat = ID_UNKNOWN;
+             continue;
+           }
+         else                                          /* Vendor ID */
+           {
+             if ((id1 = id_hex(p, 4)) < 0 || !id_white_p(p[4]))
+               return parse_error;
+             cat = ID_VENDOR;
+             p += 5;
+           }
+         id2 = id3 = id4 = 0;
+       }
+      else if (cat == ID_UNKNOWN)                      /* Nested entries in RFU blocks are skipped */
+       continue;
+      else if (nest == 1)                              /* Nesting level 1 */
+       switch (cat)
+         {
+         case ID_VENDOR:
+         case ID_DEVICE:
+         case ID_SUBSYSTEM:
+           if ((id2 = id_hex(p, 4)) < 0 || !id_white_p(p[4]))
+             return parse_error;
+           p += 5;
+           cat = ID_DEVICE;
+           id3 = id4 = 0;
+           break;
+         case ID_GEN_SUBSYSTEM:
+           if ((id2 = id_hex(p, 4)) < 0 || !id_white_p(p[4]))
+             return parse_error;
+           p += 5;
+           id3 = id4 = 0;
+           break;
+         case ID_CLASS:
+         case ID_SUBCLASS:
+         case ID_PROGIF:
+           if ((id2 = id_hex(p, 2)) < 0 || !id_white_p(p[2]))
+             return parse_error;
+           p += 3;
+           cat = ID_SUBCLASS;
+           id3 = id4 = 0;
+           break;
+         default:
+           return parse_error;
+         }
+      else if (nest == 2)                              /* Nesting level 2 */
+       switch (cat)
+         {
+         case ID_DEVICE:
+         case ID_SUBSYSTEM:
+           if ((id3 = id_hex(p, 4)) < 0 || !id_white_p(p[4]) || (id4 = id_hex(p+5, 4)) < 0 || !id_white_p(p[9]))
+             return parse_error;
+           p += 10;
+           cat = ID_SUBSYSTEM;
+           break;
+         case ID_CLASS:
+         case ID_SUBCLASS:
+         case ID_PROGIF:
+           if ((id3 = id_hex(p, 2)) < 0 || !id_white_p(p[2]))
+             return parse_error;
+           p += 3;
+           cat = ID_PROGIF;
+           id4 = 0;
+           break;
+         default:
+           return parse_error;
+         }
+      else                                             /* Nesting level 3 or more */
+       return parse_error;
+      while (id_white_p(*p))
+       p++;
+      if (!*p)
+       return parse_error;
+      if (pci_id_insert(a, cat, id1, id2, id3, id4, p, SRC_LOCAL))
+       return "Duplicate entry";
+    }
+  return NULL;
+}
+
+int
+pci_load_name_list(struct pci_access *a)
+{
+  pci_file f;
+  int lino;
+  const char *err;
+
+  pci_free_name_list(a);
+  a->id_load_failed = 1;
+  if (!(f = pci_open(a)))
+    return 0;
+  err = id_parse_list(a, f, &lino);
+  PCI_ERROR(f, err);
+  pci_close(f);
+  if (err)
+    a->error("%s at %s, line %d\n", err, a->id_file_name, lino);
+  a->id_load_failed = 0;
+  return 1;
+}
+
+void
+pci_free_name_list(struct pci_access *a)
+{
+  pci_id_cache_flush(a);
+  pci_id_hash_free(a);
+  a->id_load_failed = 0;
+}
+
+void
+pci_set_name_list_path(struct pci_access *a, char *name, int to_be_freed)
+{
+  if (a->free_id_name)
+    free(a->id_file_name);
+  a->id_file_name = name;
+  a->free_id_name = to_be_freed;
+}
diff --git a/lib/names.c b/lib/names.c
new file mode 100644 (file)
index 0000000..26de128
--- /dev/null
@@ -0,0 +1,205 @@
+/*
+ *     The PCI Library -- ID to Name Translation
+ *
+ *     Copyright (c) 1997--2008 Martin Mares <mj@ucw.cz>
+ *
+ *     Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#include <stdio.h>
+#include <stdarg.h>
+#include <string.h>
+
+#include "internal.h"
+#include "names.h"
+
+static char *id_lookup(struct pci_access *a, int flags, int cat, int id1, int id2, int id3, int id4)
+{
+  char *name;
+
+  while (!(name = pci_id_lookup(a, flags, cat, id1, id2, id3, id4)))
+    {
+      if ((flags & PCI_LOOKUP_CACHE) && !a->id_cache_status)
+       {
+         if (pci_id_cache_load(a, flags))
+           continue;
+       }
+      if (flags & PCI_LOOKUP_NETWORK)
+        {
+         if (name = pci_id_net_lookup(a, cat, id1, id2, id3, id4))
+           {
+             pci_id_insert(a, cat, id1, id2, id3, id4, name, SRC_NET);
+             pci_mfree(name);
+             pci_id_cache_dirty(a);
+           }
+         else
+           pci_id_insert(a, cat, id1, id2, id3, id4, "", SRC_NET);
+         /* We want to iterate the lookup to get the allocated ID entry from the hash */
+         continue;
+       }
+      return NULL;
+    }
+  return (name[0] ? name : NULL);
+}
+
+static char *
+id_lookup_subsys(struct pci_access *a, int flags, int iv, int id, int isv, int isd)
+{
+  char *d = NULL;
+  if (iv > 0 && id > 0)                                                /* Per-device lookup */
+    d = id_lookup(a, flags, ID_SUBSYSTEM, iv, id, isv, isd);
+  if (!d)                                                      /* Generic lookup */
+    d = id_lookup(a, flags, ID_GEN_SUBSYSTEM, isv, isd, 0, 0);
+  if (!d && iv == isv && id == isd)                            /* Check for subsystem == device */
+    d = id_lookup(a, flags, ID_DEVICE, iv, id, 0, 0);
+  return d;
+}
+
+static char *
+format_name(char *buf, int size, int flags, char *name, char *num, char *unknown)
+{
+  int res;
+  if ((flags & PCI_LOOKUP_NO_NUMBERS) && !name)
+    return NULL;
+  else if (flags & PCI_LOOKUP_NUMERIC)
+    res = snprintf(buf, size, "%s", num);
+  else if (!name)
+    res = snprintf(buf, size, ((flags & PCI_LOOKUP_MIXED) ? "%s [%s]" : "%s %s"), unknown, num);
+  else if (!(flags & PCI_LOOKUP_MIXED))
+    res = snprintf(buf, size, "%s", name);
+  else
+    res = snprintf(buf, size, "%s [%s]", name, num);
+  if (res < 0 || res >= size)
+    return "<pci_lookup_name: buffer too small>";
+  else
+    return buf;
+}
+
+static char *
+format_name_pair(char *buf, int size, int flags, char *v, char *d, char *num)
+{
+  int res;
+  if ((flags & PCI_LOOKUP_NO_NUMBERS) && (!v || !d))
+    return NULL;
+  if (flags & PCI_LOOKUP_NUMERIC)
+    res = snprintf(buf, size, "%s", num);
+  else if (flags & PCI_LOOKUP_MIXED)
+    {
+      if (v && d)
+       res = snprintf(buf, size, "%s %s [%s]", v, d, num);
+      else if (!v)
+       res = snprintf(buf, size, "Device [%s]", num);
+      else /* v && !d */
+       res = snprintf(buf, size, "%s Device [%s]", v, num);
+    }
+  else
+    {
+      if (v && d)
+       res = snprintf(buf, size, "%s %s", v, d);
+      else if (!v)
+       res = snprintf(buf, size, "Device %s", num);
+      else /* v && !d */
+       res = snprintf(buf, size, "%s Device %s", v, num+5);
+    }
+  if (res < 0 || res >= size)
+    return "<pci_lookup_name: buffer too small>";
+  else
+    return buf;
+}
+
+char *
+pci_lookup_name(struct pci_access *a, char *buf, int size, int flags, ...)
+{
+  va_list args;
+  char *v, *d, *cls, *pif;
+  int iv, id, isv, isd, icls, ipif;
+  char numbuf[16], pifbuf[32];
+
+  va_start(args, flags);
+
+  flags |= a->id_lookup_mode;
+  if (!(flags & PCI_LOOKUP_NO_NUMBERS))
+    {
+      if (a->numeric_ids > 1)
+       flags |= PCI_LOOKUP_MIXED;
+      else if (a->numeric_ids)
+       flags |= PCI_LOOKUP_NUMERIC;
+    }
+  if (flags & PCI_LOOKUP_MIXED)
+    flags &= ~PCI_LOOKUP_NUMERIC;
+
+  if (!a->id_hash && !(flags & (PCI_LOOKUP_NUMERIC | PCI_LOOKUP_SKIP_LOCAL)) && !a->id_load_failed)
+    pci_load_name_list(a);
+
+  switch (flags & 0xffff)
+    {
+    case PCI_LOOKUP_VENDOR:
+      iv = va_arg(args, int);
+      sprintf(numbuf, "%04x", iv);
+      return format_name(buf, size, flags, id_lookup(a, flags, ID_VENDOR, iv, 0, 0, 0), numbuf, "Vendor");
+    case PCI_LOOKUP_DEVICE:
+      iv = va_arg(args, int);
+      id = va_arg(args, int);
+      sprintf(numbuf, "%04x", id);
+      return format_name(buf, size, flags, id_lookup(a, flags, ID_DEVICE, iv, id, 0, 0), numbuf, "Device");
+    case PCI_LOOKUP_VENDOR | PCI_LOOKUP_DEVICE:
+      iv = va_arg(args, int);
+      id = va_arg(args, int);
+      sprintf(numbuf, "%04x:%04x", iv, id);
+      v = id_lookup(a, flags, ID_VENDOR, iv, 0, 0, 0);
+      d = id_lookup(a, flags, ID_DEVICE, iv, id, 0, 0);
+      return format_name_pair(buf, size, flags, v, d, numbuf);
+    case PCI_LOOKUP_SUBSYSTEM | PCI_LOOKUP_VENDOR:
+      isv = va_arg(args, int);
+      sprintf(numbuf, "%04x", isv);
+      v = id_lookup(a, flags, ID_VENDOR, isv, 0, 0, 0);
+      return format_name(buf, size, flags, v, numbuf, "Unknown vendor");
+    case PCI_LOOKUP_SUBSYSTEM | PCI_LOOKUP_DEVICE:
+      iv = va_arg(args, int);
+      id = va_arg(args, int);
+      isv = va_arg(args, int);
+      isd = va_arg(args, int);
+      sprintf(numbuf, "%04x", isd);
+      return format_name(buf, size, flags, id_lookup_subsys(a, flags, iv, id, isv, isd), numbuf, "Device");
+    case PCI_LOOKUP_VENDOR | PCI_LOOKUP_DEVICE | PCI_LOOKUP_SUBSYSTEM:
+      iv = va_arg(args, int);
+      id = va_arg(args, int);
+      isv = va_arg(args, int);
+      isd = va_arg(args, int);
+      v = id_lookup(a, flags, ID_VENDOR, isv, 0, 0, 0);
+      d = id_lookup_subsys(a, flags, iv, id, isv, isd);
+      sprintf(numbuf, "%04x:%04x", isv, isd);
+      return format_name_pair(buf, size, flags, v, d, numbuf);
+    case PCI_LOOKUP_CLASS:
+      icls = va_arg(args, int);
+      sprintf(numbuf, "%04x", icls);
+      cls = id_lookup(a, flags, ID_SUBCLASS, icls >> 8, icls & 0xff, 0, 0);
+      if (!cls && (cls = id_lookup(a, flags, ID_CLASS, icls >> 8, 0, 0, 0)))
+       {
+         if (!(flags & PCI_LOOKUP_NUMERIC)) /* Include full class number */
+           flags |= PCI_LOOKUP_MIXED;
+       }
+      return format_name(buf, size, flags, cls, numbuf, "Class");
+    case PCI_LOOKUP_PROGIF:
+      icls = va_arg(args, int);
+      ipif = va_arg(args, int);
+      sprintf(numbuf, "%02x", ipif);
+      pif = id_lookup(a, flags, ID_PROGIF, icls >> 8, icls & 0xff, ipif, 0);
+      if (!pif && icls == 0x0101 && !(ipif & 0x70))
+       {
+         /* IDE controllers have complex prog-if semantics */
+         sprintf(pifbuf, "%s%s%s%s%s",
+                 (ipif & 0x80) ? " Master" : "",
+                 (ipif & 0x08) ? " SecP" : "",
+                 (ipif & 0x04) ? " SecO" : "",
+                 (ipif & 0x02) ? " PriP" : "",
+                 (ipif & 0x01) ? " PriO" : "");
+         pif = pifbuf;
+         if (*pif)
+           pif++;
+       }
+      return format_name(buf, size, flags, pif, numbuf, "ProgIf");
+    default:
+      return "<pci_lookup_name: invalid request>";
+    }
+}
diff --git a/lib/names.h b/lib/names.h
new file mode 100644 (file)
index 0000000..81c373f
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ *     The PCI Library -- ID to Name Translation
+ *
+ *     Copyright (c) 1997--2008 Martin Mares <mj@ucw.cz>
+ *
+ *     Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#define MAX_LINE 1024
+
+/* names-hash.c */
+
+struct id_entry {
+  struct id_entry *next;
+  u32 id12, id34;
+  byte cat;
+  byte src;
+  char name[1];
+};
+
+enum id_entry_type {
+  ID_UNKNOWN,
+  ID_VENDOR,
+  ID_DEVICE,
+  ID_SUBSYSTEM,
+  ID_GEN_SUBSYSTEM,
+  ID_CLASS,
+  ID_SUBCLASS,
+  ID_PROGIF
+};
+
+enum id_entry_src {
+  SRC_UNKNOWN,
+  SRC_CACHE,
+  SRC_NET,
+  SRC_LOCAL,
+};
+
+#define BUCKET_SIZE 8192
+#define HASH_SIZE 4099
+
+static inline u32 id_pair(unsigned int x, unsigned int y)
+{
+  return ((x << 16) | y);
+}
+
+static inline unsigned int pair_first(unsigned int x)
+{
+  return (x >> 16) & 0xffff;
+}
+
+static inline unsigned int pair_second(unsigned int x)
+{
+  return x & 0xffff;
+}
+
+int pci_id_insert(struct pci_access *a, int cat, int id1, int id2, int id3, int id4, char *text, enum id_entry_src src);
+char *pci_id_lookup(struct pci_access *a, int flags, int cat, int id1, int id2, int id3, int id4);
+
+/* names-cache.c */
+
+int pci_id_cache_load(struct pci_access *a, int flags);
+void pci_id_cache_dirty(struct pci_access *a);
+void pci_id_cache_flush(struct pci_access *a);
+void pci_id_hash_free(struct pci_access *a);
+
+/* names-dns.c */
+
+char *pci_id_net_lookup(struct pci_access *a, int cat, int id1, int id2, int id3, int id4);
diff --git a/lib/nbsd-libpci.c b/lib/nbsd-libpci.c
new file mode 100644 (file)
index 0000000..2d24c4c
--- /dev/null
@@ -0,0 +1,156 @@
+/*
+ *     The PCI Library -- NetBSD libpci access
+ *         (based on FreeBSD /dev/pci access)
+ *
+ *     Copyright (c) 1999 Jari Kirma <kirma@cs.hut.fi>
+ *      Copyright (c) 2002 Quentin Garnier <cube@cubidou.net>
+ *     Copyright (c) 2002 Martin Mares <mj@ucw.cz>
+ *
+ *     Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+/*
+ *      Read functionality of this driver is briefly tested, and seems
+ *      to supply basic information correctly, but I promise no more.
+ */
+
+#include <fcntl.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <pci.h>
+
+#include "internal.h"
+
+static void
+nbsd_config(struct pci_access *a)
+{
+  pci_define_param(a, "nbsd.path", PCI_PATH_NBSD_DEVICE, "Path to the NetBSD PCI device");
+}
+
+static int
+nbsd_detect(struct pci_access *a)
+{
+  char *name = pci_get_param(a, "nbsd.path");
+
+  if (access(name, R_OK))
+    {
+      a->warning("Cannot open %s", name);
+      return 0;
+    }
+
+  if (!access(name, W_OK))
+    a->writeable = O_RDWR;
+  a->debug("...using %s", name);
+  return 1;
+}
+
+static void
+nbsd_init(struct pci_access *a)
+{
+  char *name = pci_get_param(a, "nbsd.path");
+  int mode = a->writeable ? O_RDWR : O_RDONLY;
+
+  a->fd = open(name, mode, 0);
+  if (a->fd < 0)
+    a->error("nbsd_init: %s open failed", name);
+}
+
+static void
+nbsd_cleanup(struct pci_access *a)
+{
+  close(a->fd);
+}
+
+static int
+nbsd_read(struct pci_dev *d, int pos, byte *buf, int len)
+{
+  pcireg_t val;
+  int shift;
+
+  if (!(len == 1 || len == 2 || len == 4))
+    return pci_generic_block_read(d, pos, buf, len);
+
+  if (pos >= 256)
+    return 0;
+
+  shift = 8*(pos % 4);
+  pos &= ~3;
+
+  if (pcibus_conf_read(d->access->fd, d->bus, d->dev, d->func, pos, &val) < 0)
+    d->access->error("nbsd_read: pci_bus_conf_read() failed");
+
+  switch (len)
+    {
+    case 1:
+      *buf = val >> shift;
+      break;
+    case 2:
+      *(u16*)buf = cpu_to_le16(val >> shift);
+      break;
+    case 4:
+      *(u32*)buf = cpu_to_le32(val);
+      break;
+    }
+  return 1;
+}
+
+static int
+nbsd_write(struct pci_dev *d, int pos, byte *buf, int len)
+{
+  pcireg_t val = 0;
+  int shift;
+
+  if (!(len == 1 || len == 2 || len == 4))
+    return pci_generic_block_write(d, pos, buf, len);
+
+  if (pos >= 256)
+    return 0;
+
+  /*
+   *  BEWARE: NetBSD seems to support only 32-bit access, so we have
+   *  to emulate byte and word writes by read-modify-write, possibly
+   *  causing troubles.
+   */
+
+  shift = 8*(pos % 4);
+  pos &= ~3;
+  if (len != 4)
+    {
+      if (pcibus_conf_read(d->access->fd, d->bus, d->dev, d->func, pos, &val) < 0)
+       d->access->error("nbsd_write: pci_bus_conf_read() failed");
+    }
+
+  switch (len)
+    {
+    case 1:
+      val = (val & ~(0xff << shift)) | (buf[0] << shift);
+      break;
+    case 2:
+      val = (val & ~(0xffff << shift)) | (le16_to_cpu(*(u16*)buf) << shift);
+      break;
+    case 4:
+      val = le32_to_cpu(*(u32*)buf);
+      break;
+    }
+
+  if (pcibus_conf_write(d->access->fd, d->bus, d->dev, d->func, pos, val) < 0)
+    d->access->error("nbsd_write: pci_bus_conf_write() failed");
+
+  return 1;
+}
+
+struct pci_methods pm_nbsd_libpci = {
+  "nbsd-libpci",
+  "NetBSD libpci",
+  nbsd_config,
+  nbsd_detect,
+  nbsd_init,
+  nbsd_cleanup,
+  pci_generic_scan,
+  pci_generic_fill_info,
+  nbsd_read,
+  nbsd_write,
+  NULL,                                 /* dev_init */
+  NULL                                  /* dev_cleanup */
+};
diff --git a/lib/obsd-device.c b/lib/obsd-device.c
new file mode 100644 (file)
index 0000000..62395b3
--- /dev/null
@@ -0,0 +1,151 @@
+/*
+ *     The PCI Library -- OpenBSD /dev/pci access
+ *
+ *     Adapted from fbsd-device.c by Matthieu Herrb <matthieu.herrb@laas.fr>, 2006
+ *
+ *     Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#include <fcntl.h>
+#include <string.h>
+#include <unistd.h>
+#include <errno.h>
+#include <sys/endian.h>
+#include <sys/types.h>
+#include <sys/ioctl.h>
+#include <sys/pciio.h>
+#include "internal.h"
+
+static void
+obsd_config(struct pci_access *a)
+{
+  pci_define_param(a, "obsd.path", PCI_PATH_OBSD_DEVICE, "Path to the OpenBSD PCI device");
+}
+
+static int
+obsd_detect(struct pci_access *a)
+{
+  char *name = pci_get_param(a, "obsd.path");
+
+  if (access(name, R_OK))
+    {
+      a->warning("Cannot open %s", name);
+      return 0;
+    }
+  a->debug("...using %s", name);
+  return 1;
+}
+
+static void
+obsd_init(struct pci_access *a)
+{
+  char *name = pci_get_param(a, "obsd.path");
+
+  a->fd = open(name, O_RDWR, 0);
+  if (a->fd < 0)
+    a->error("obsd_init: %s open failed", name);
+}
+
+static void
+obsd_cleanup(struct pci_access *a)
+{
+  close(a->fd);
+}
+
+static int
+obsd_read(struct pci_dev *d, int pos, byte *buf, int len)
+{
+  struct pci_io pi;
+  union {
+         u_int32_t u32;
+         u_int16_t u16[2];
+         u_int8_t u8[4];
+  } u;
+
+  if (!(len == 1 || len == 2 || len == 4))
+    return pci_generic_block_read(d, pos, buf, len);
+
+  if (pos >= 256)
+    return 0;
+
+  pi.pi_sel.pc_bus = d->bus;
+  pi.pi_sel.pc_dev = d->dev;
+  pi.pi_sel.pc_func = d->func;
+
+  pi.pi_reg = pos - (pos % 4);
+  pi.pi_width = 4;
+
+  if (ioctl(d->access->fd, PCIOCREAD, &pi) < 0) {
+         if (errno == ENXIO)
+                 pi.pi_data = 0xffffffff;
+         else
+                 d->access->error("obsd_read: ioctl(PCIOCREAD) failed");
+  }
+  u.u32 = pi.pi_data;
+
+  switch (len)
+    {
+    case 1:
+      buf[0] = (u8) u.u8[pos % 4];
+      break;
+    case 2:
+      ((u16 *) buf)[0] = letoh16(u.u16[(pos % 4) / 2]);
+      break;
+    case 4:
+      ((u32 *) buf)[0] = (u32) letoh32(pi.pi_data);
+      break;
+    }
+  return 1;
+}
+
+static int
+obsd_write(struct pci_dev *d, int pos, byte *buf, int len)
+{
+  struct pci_io pi;
+
+  if (!(len == 1 || len == 2 || len == 4))
+    return pci_generic_block_write(d, pos, buf, len);
+
+  if (pos >= 256)
+    return 0;
+
+  pi.pi_sel.pc_bus = d->bus;
+  pi.pi_sel.pc_dev = d->dev;
+  pi.pi_sel.pc_func = d->func;
+
+  pi.pi_reg = pos;
+  pi.pi_width = len;
+
+  switch (len)
+    {
+    case 1:
+      pi.pi_data = buf[0];
+      break;
+    case 2:
+      pi.pi_data = ((u16 *) buf)[0];
+      break;
+    case 4:
+      pi.pi_data = ((u32 *) buf)[0];
+      break;
+    }
+
+  if (ioctl(d->access->fd, PCIOCWRITE, &pi) < 0)
+    d->access->error("obsd_write: ioctl(PCIOCWRITE) failed");
+
+  return 1;
+}
+
+struct pci_methods pm_obsd_device = {
+  "obsd-device",
+  "/dev/pci on OpenBSD",
+  obsd_config,
+  obsd_detect,
+  obsd_init,
+  obsd_cleanup,
+  pci_generic_scan,
+  pci_generic_fill_info,
+  obsd_read,
+  obsd_write,
+  NULL,                                 /* dev_init */
+  NULL                                  /* dev_cleanup */
+};
diff --git a/lib/params.c b/lib/params.c
new file mode 100644 (file)
index 0000000..0e6edbb
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ *     The PCI Library -- Parameters
+ *
+ *     Copyright (c) 2008 Martin Mares <mj@ucw.cz>
+ *
+ *     Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "internal.h"
+
+char *
+pci_get_param(struct pci_access *acc, char *param)
+{
+  struct pci_param *p;
+
+  for (p=acc->params; p; p=p->next)
+    if (!strcmp(p->param, param))
+      return p->value;
+  return NULL;
+}
+
+void
+pci_define_param(struct pci_access *acc, char *param, char *value, char *help)
+{
+  struct pci_param *p = pci_malloc(acc, sizeof(*p));
+
+  p->next = acc->params;
+  acc->params = p;
+  p->param = param;
+  p->value = value;
+  p->value_malloced = 0;
+  p->help = help;
+}
+
+int
+pci_set_param_internal(struct pci_access *acc, char *param, char *value, int copy)
+{
+  struct pci_param *p;
+
+  for (p=acc->params; p; p=p->next)
+    if (!strcmp(p->param, param))
+      {
+       if (p->value_malloced)
+         pci_mfree(p->value);
+       p->value_malloced = copy;
+       if (copy)
+         p->value = pci_strdup(acc, value);
+       else
+         p->value = value;
+       return 0;
+      }
+  return -1;
+}
+
+int
+pci_set_param(struct pci_access *acc, char *param, char *value)
+{
+  return pci_set_param_internal(acc, param, value, 1);
+}
+
+void
+pci_free_params(struct pci_access *acc)
+{
+  struct pci_param *p;
+
+  while (p = acc->params)
+    {
+      acc->params = p->next;
+      if (p->value_malloced)
+       pci_mfree(p->value);
+      pci_mfree(p);
+    }
+}
+
+struct pci_param *
+pci_walk_params(struct pci_access *acc, struct pci_param *prev)
+{
+  /* So far, the params form a simple linked list, but this can change in the future */
+  if (!prev)
+    return acc->params;
+  else
+    return prev->next;
+}
+
diff --git a/lib/pci.h b/lib/pci.h
new file mode 100644 (file)
index 0000000..747b762
--- /dev/null
+++ b/lib/pci.h
@@ -0,0 +1,213 @@
+/*
+ *     The PCI Library
+ *
+ *     Copyright (c) 1997--2008 Martin Mares <mj@ucw.cz>
+ *
+ *     Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#ifndef _PCI_LIB_H
+#define _PCI_LIB_H
+
+#include "config.h"
+#include "header.h"
+#include "types.h"
+
+#define PCI_LIB_VERSION 0x030000
+
+#ifndef PCI_ABI
+#define PCI_ABI
+#endif
+
+/*
+ *     PCI Access Structure
+ */
+
+struct pci_methods;
+
+enum pci_access_type {
+  /* Known access methods, remember to update access.c as well */
+  PCI_ACCESS_AUTO,                     /* Autodetection */
+  PCI_ACCESS_SYS_BUS_PCI,              /* Linux /sys/bus/pci */
+  PCI_ACCESS_PROC_BUS_PCI,             /* Linux /proc/bus/pci */
+  PCI_ACCESS_I386_TYPE1,               /* i386 ports, type 1 */
+  PCI_ACCESS_I386_TYPE2,               /* i386 ports, type 2 */
+  PCI_ACCESS_FBSD_DEVICE,              /* FreeBSD /dev/pci */
+  PCI_ACCESS_AIX_DEVICE,               /* /dev/pci0, /dev/bus0, etc. */
+  PCI_ACCESS_NBSD_LIBPCI,              /* NetBSD libpci */
+  PCI_ACCESS_OBSD_DEVICE,              /* OpenBSD /dev/pci */
+  PCI_ACCESS_DUMP,                     /* Dump file */
+  PCI_ACCESS_MAX
+};
+
+struct pci_access {
+  /* Options you can change: */
+  unsigned int method;                 /* Access method */
+  int writeable;                       /* Open in read/write mode */
+  int buscentric;                      /* Bus-centric view of the world */
+
+  char *id_file_name;                  /* Name of ID list file (use pci_set_name_list_path()) */
+  int free_id_name;                    /* Set if id_file_name is malloced */
+  int numeric_ids;                     /* Enforce PCI_LOOKUP_NUMERIC (>1 => PCI_LOOKUP_MIXED) */
+
+  unsigned int id_lookup_mode;         /* pci_lookup_mode flags which are set automatically */
+                                       /* Default: PCI_LOOKUP_CACHE */
+
+  int debugging;                       /* Turn on debugging messages */
+
+  /* Functions you can override: */
+  void (*error)(char *msg, ...) PCI_PRINTF(1,2);       /* Write error message and quit */
+  void (*warning)(char *msg, ...) PCI_PRINTF(1,2);     /* Write a warning message */
+  void (*debug)(char *msg, ...) PCI_PRINTF(1,2);       /* Write a debugging message */
+
+  struct pci_dev *devices;             /* Devices found on this bus */
+
+  /* Fields used internally: */
+  struct pci_methods *methods;
+  struct pci_param *params;
+  struct id_entry **id_hash;           /* names.c */
+  struct id_bucket *current_id_bucket;
+  int id_load_failed;
+  int id_cache_status;                 /* 0=not read, 1=read, 2=dirty */
+  int fd;                              /* proc: fd */
+  int fd_rw;                           /* proc: fd opened read-write */
+  struct pci_dev *cached_dev;          /* proc: device the fd is for */
+  int fd_pos;                          /* proc: current position */
+};
+
+/* Initialize PCI access */
+struct pci_access *pci_alloc(void) PCI_ABI;
+void pci_init(struct pci_access *) PCI_ABI;
+void pci_cleanup(struct pci_access *) PCI_ABI;
+
+/* Scanning of devices */
+void pci_scan_bus(struct pci_access *acc) PCI_ABI;
+struct pci_dev *pci_get_dev(struct pci_access *acc, int domain, int bus, int dev, int func) PCI_ABI; /* Raw access to specified device */
+void pci_free_dev(struct pci_dev *) PCI_ABI;
+
+/* Names of access methods */
+int pci_lookup_method(char *name) PCI_ABI;     /* Returns -1 if not found */
+char *pci_get_method_name(int index) PCI_ABI;  /* Returns "" if unavailable, NULL if index out of range */
+
+/*
+ *     Named parameters
+ */
+
+struct pci_param {
+  struct pci_param *next;              /* Please use pci_walk_params() for traversing the list */
+  char *param;                         /* Name of the parameter */
+  char *value;                         /* Value of the parameter */
+  int value_malloced;                  /* used internally */
+  char *help;                          /* Explanation of the parameter */
+};
+
+char *pci_get_param(struct pci_access *acc, char *param) PCI_ABI;
+int pci_set_param(struct pci_access *acc, char *param, char *value) PCI_ABI;   /* 0 on success, -1 if no such parameter */
+/* To traverse the list, call pci_walk_params repeatedly, first with prev=NULL, and do not modify the parameters during traversal. */
+struct pci_param *pci_walk_params(struct pci_access *acc, struct pci_param *prev) PCI_ABI;
+
+/*
+ *     Devices
+ */
+
+struct pci_dev {
+  struct pci_dev *next;                        /* Next device in the chain */
+  u16 domain;                          /* PCI domain (host bridge) */
+  u8 bus, dev, func;                   /* Bus inside domain, device and function */
+
+  /* These fields are set by pci_fill_info() */
+  int known_fields;                    /* Set of info fields already known */
+  u16 vendor_id, device_id;            /* Identity of the device */
+  u16 device_class;                    /* PCI device class */
+  int irq;                             /* IRQ number */
+  pciaddr_t base_addr[6];              /* Base addresses */
+  pciaddr_t size[6];                   /* Region sizes */
+  pciaddr_t rom_base_addr;             /* Expansion ROM base address */
+  pciaddr_t rom_size;                  /* Expansion ROM size */
+
+  /* Fields used internally: */
+  struct pci_access *access;
+  struct pci_methods *methods;
+  u8 *cache;                           /* Cached config registers */
+  int cache_len;
+  int hdrtype;                         /* Cached low 7 bits of header type, -1 if unknown */
+  void *aux;                           /* Auxillary data */
+};
+
+#define PCI_ADDR_IO_MASK (~(pciaddr_t) 0x3)
+#define PCI_ADDR_MEM_MASK (~(pciaddr_t) 0xf)
+
+u8 pci_read_byte(struct pci_dev *, int pos) PCI_ABI; /* Access to configuration space */
+u16 pci_read_word(struct pci_dev *, int pos) PCI_ABI;
+u32 pci_read_long(struct pci_dev *, int pos) PCI_ABI;
+int pci_read_block(struct pci_dev *, int pos, u8 *buf, int len) PCI_ABI;
+int pci_write_byte(struct pci_dev *, int pos, u8 data) PCI_ABI;
+int pci_write_word(struct pci_dev *, int pos, u16 data) PCI_ABI;
+int pci_write_long(struct pci_dev *, int pos, u32 data) PCI_ABI;
+int pci_write_block(struct pci_dev *, int pos, u8 *buf, int len) PCI_ABI;
+
+int pci_fill_info(struct pci_dev *, int flags) PCI_ABI; /* Fill in device information */
+
+#define PCI_FILL_IDENT         1
+#define PCI_FILL_IRQ           2
+#define PCI_FILL_BASES         4
+#define PCI_FILL_ROM_BASE      8
+#define PCI_FILL_SIZES         16
+#define PCI_FILL_CLASS         32
+#define PCI_FILL_RESCAN                0x10000
+
+void pci_setup_cache(struct pci_dev *, u8 *cache, int len) PCI_ABI;
+
+/*
+ *     Filters
+ */
+
+struct pci_filter {
+  int domain, bus, slot, func;                 /* -1 = ANY */
+  int vendor, device;
+};
+
+void pci_filter_init(struct pci_access *, struct pci_filter *) PCI_ABI;
+char *pci_filter_parse_slot(struct pci_filter *, char *) PCI_ABI;
+char *pci_filter_parse_id(struct pci_filter *, char *) PCI_ABI;
+int pci_filter_match(struct pci_filter *, struct pci_dev *) PCI_ABI;
+
+/*
+ *     Conversion of PCI ID's to names (according to the pci.ids file)
+ *
+ *     Call pci_lookup_name() to identify different types of ID's:
+ *
+ *     VENDOR                          (vendorID) -> vendor
+ *     DEVICE                          (vendorID, deviceID) -> device
+ *     VENDOR | DEVICE                 (vendorID, deviceID) -> combined vendor and device
+ *     SUBSYSTEM | VENDOR              (subvendorID) -> subsystem vendor
+ *     SUBSYSTEM | DEVICE              (vendorID, deviceID, subvendorID, subdevID) -> subsystem device
+ *     SUBSYSTEM | VENDOR | DEVICE     (vendorID, deviceID, subvendorID, subdevID) -> combined subsystem v+d
+ *     SUBSYSTEM | ...                 (-1, -1, subvendorID, subdevID) -> generic subsystem
+ *     CLASS                           (classID) -> class
+ *     PROGIF                          (classID, progif) -> programming interface
+ */
+
+char *pci_lookup_name(struct pci_access *a, char *buf, int size, int flags, ...) PCI_ABI;
+
+int pci_load_name_list(struct pci_access *a) PCI_ABI;  /* Called automatically by pci_lookup_*() when needed; returns success */
+void pci_free_name_list(struct pci_access *a) PCI_ABI; /* Called automatically by pci_cleanup() */
+void pci_set_name_list_path(struct pci_access *a, char *name, int to_be_freed) PCI_ABI;
+void pci_id_cache_flush(struct pci_access *a) PCI_ABI;
+
+enum pci_lookup_mode {
+  PCI_LOOKUP_VENDOR = 1,               /* Vendor name (args: vendorID) */
+  PCI_LOOKUP_DEVICE = 2,               /* Device name (args: vendorID, deviceID) */
+  PCI_LOOKUP_CLASS = 4,                        /* Device class (args: classID) */
+  PCI_LOOKUP_SUBSYSTEM = 8,
+  PCI_LOOKUP_PROGIF = 16,              /* Programming interface (args: classID, prog_if) */
+  PCI_LOOKUP_NUMERIC = 0x10000,                /* Want only formatted numbers; default if access->numeric_ids is set */
+  PCI_LOOKUP_NO_NUMBERS = 0x20000,     /* Return NULL if not found in the database; default is to print numerically */
+  PCI_LOOKUP_MIXED = 0x40000,          /* Include both numbers and names */
+  PCI_LOOKUP_NETWORK = 0x80000,                /* Try to resolve unknown ID's by DNS */
+  PCI_LOOKUP_SKIP_LOCAL = 0x100000,    /* Do not consult local database */
+  PCI_LOOKUP_CACHE = 0x200000,         /* Consult the local cache before using DNS */
+  PCI_LOOKUP_REFRESH_CACHE = 0x400000, /* Forget all previously cached entries, but still allow updating the cache */
+};
+
+#endif
diff --git a/lib/pread.h b/lib/pread.h
new file mode 100644 (file)
index 0000000..0e64326
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ *     The PCI Library -- Portable interface to pread() and pwrite()
+ *
+ *     Copyright (c) 1997--2003 Martin Mares <mj@ucw.cz>
+ *
+ *     Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+/*
+ *  We'd like to use pread/pwrite for configuration space accesses, but
+ *  unfortunately it isn't simple at all since all libc's until glibc 2.1
+ *  don't define it.
+ */
+
+#if defined(__GLIBC__) && __GLIBC__ == 2 && __GLIBC_MINOR__ > 0
+/* glibc 2.1 or newer -> pread/pwrite supported automatically */
+
+#elif defined(i386) && defined(__GLIBC__)
+/* glibc 2.0 on i386 -> call syscalls directly */
+#include <asm/unistd.h>
+#include <syscall-list.h>
+#ifndef SYS_pread
+#define SYS_pread 180
+#endif
+static int pread(unsigned int fd, void *buf, size_t size, loff_t where)
+{ return syscall(SYS_pread, fd, buf, size, where); }
+#ifndef SYS_pwrite
+#define SYS_pwrite 181
+#endif
+static int pwrite(unsigned int fd, void *buf, size_t size, loff_t where)
+{ return syscall(SYS_pwrite, fd, buf, size, where); }
+
+#elif defined(i386)
+/* old libc on i386 -> call syscalls directly the old way */
+#include <asm/unistd.h>
+static _syscall5(int, pread, unsigned int, fd, void *, buf, size_t, size, u32, where_lo, u32, where_hi);
+static _syscall5(int, pwrite, unsigned int, fd, void *, buf, size_t, size, u32, where_lo, u32, where_hi);
+static int do_read(struct pci_dev *d UNUSED, int fd, void *buf, size_t size, int where) { return pread(fd, buf, size, where, 0); }
+static int do_write(struct pci_dev *d UNUSED, int fd, void *buf, size_t size, int where) { return pwrite(fd, buf, size, where, 0); }
+#define PCI_HAVE_DO_READ
+
+#else
+/* In all other cases we use lseek/read/write instead to be safe */
+#define make_rw_glue(op) \
+       static int do_##op(struct pci_dev *d, int fd, void *buf, size_t size, int where)        \
+       {                                                                                       \
+         struct pci_access *a = d->access;                                                     \
+         int r;                                                                                \
+         if (a->fd_pos != where && lseek(fd, where, SEEK_SET) < 0)                             \
+           return -1;                                                                          \
+         r = op(fd, buf, size);                                                                \
+         if (r < 0)                                                                            \
+           a->fd_pos = -1;                                                                     \
+         else                                                                                  \
+           a->fd_pos = where + r;                                                              \
+         return r;                                                                             \
+       }
+make_rw_glue(read)
+make_rw_glue(write)
+#define PCI_HAVE_DO_READ
+#endif
+
+#ifndef PCI_HAVE_DO_READ
+#define do_read(d,f,b,l,p) pread(f,b,l,p)
+#define do_write(d,f,b,l,p) pwrite(f,b,l,p)
+#endif
diff --git a/lib/proc.c b/lib/proc.c
new file mode 100644 (file)
index 0000000..1b44b4e
--- /dev/null
@@ -0,0 +1,202 @@
+/*
+ *     The PCI Library -- Configuration Access via /proc/bus/pci
+ *
+ *     Copyright (c) 1997--2003 Martin Mares <mj@ucw.cz>
+ *
+ *     Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#define _GNU_SOURCE
+
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/types.h>
+
+#include "internal.h"
+#include "pread.h"
+
+static void
+proc_config(struct pci_access *a)
+{
+  pci_define_param(a, "proc.path", PCI_PATH_PROC_BUS_PCI, "Path to the procfs bus tree");
+}
+
+static int
+proc_detect(struct pci_access *a)
+{
+  char *name = pci_get_param(a, "proc.path");
+
+  if (access(name, R_OK))
+    {
+      a->warning("Cannot open %s", name);
+      return 0;
+    }
+  a->debug("...using %s", name);
+  return 1;
+}
+
+static void
+proc_init(struct pci_access *a)
+{
+  a->fd = -1;
+}
+
+static void
+proc_cleanup(struct pci_access *a)
+{
+  if (a->fd >= 0)
+    {
+      close(a->fd);
+      a->fd = -1;
+    }
+}
+
+static void
+proc_scan(struct pci_access *a)
+{
+  FILE *f;
+  char buf[512];
+
+  if (snprintf(buf, sizeof(buf), "%s/devices", pci_get_param(a, "proc.path")) == sizeof(buf))
+    a->error("File name too long");
+  f = fopen(buf, "r");
+  if (!f)
+    a->error("Cannot open %s", buf);
+  while (fgets(buf, sizeof(buf)-1, f))
+    {
+      struct pci_dev *d = pci_alloc_dev(a);
+      unsigned int dfn, vend, cnt, known;
+
+#define F " " PCIADDR_T_FMT
+      cnt = sscanf(buf, "%x %x %x" F F F F F F F F F F F F F F,
+            &dfn,
+            &vend,
+            &d->irq,
+            &d->base_addr[0],
+            &d->base_addr[1],
+            &d->base_addr[2],
+            &d->base_addr[3],
+            &d->base_addr[4],
+            &d->base_addr[5],
+            &d->rom_base_addr,
+            &d->size[0],
+            &d->size[1],
+            &d->size[2],
+            &d->size[3],
+            &d->size[4],
+            &d->size[5],
+            &d->rom_size);
+#undef F
+      if (cnt != 9 && cnt != 10 && cnt != 17)
+       a->error("proc: parse error (read only %d items)", cnt);
+      d->bus = dfn >> 8U;
+      d->dev = PCI_SLOT(dfn & 0xff);
+      d->func = PCI_FUNC(dfn & 0xff);
+      d->vendor_id = vend >> 16U;
+      d->device_id = vend & 0xffff;
+      known = PCI_FILL_IDENT;
+      if (!a->buscentric)
+       {
+         known |= PCI_FILL_IRQ | PCI_FILL_BASES;
+         if (cnt >= 10)
+           known |= PCI_FILL_ROM_BASE;
+         if (cnt >= 17)
+           known |= PCI_FILL_SIZES;
+       }
+      d->known_fields = known;
+      pci_link_dev(a, d);
+    }
+  fclose(f);
+}
+
+static int
+proc_setup(struct pci_dev *d, int rw)
+{
+  struct pci_access *a = d->access;
+
+  if (a->cached_dev != d || a->fd_rw < rw)
+    {
+      char buf[1024];
+      int e;
+      if (a->fd >= 0)
+       close(a->fd);
+      e = snprintf(buf, sizeof(buf), "%s/%02x/%02x.%d",
+                  pci_get_param(a, "proc.path"),
+                  d->bus, d->dev, d->func);
+      if (e < 0 || e >= (int) sizeof(buf))
+       a->error("File name too long");
+      a->fd_rw = a->writeable || rw;
+      a->fd = open(buf, a->fd_rw ? O_RDWR : O_RDONLY);
+      if (a->fd < 0)
+       a->warning("Cannot open %s", buf);
+      a->cached_dev = d;
+      a->fd_pos = 0;
+    }
+  return a->fd;
+}
+
+static int
+proc_read(struct pci_dev *d, int pos, byte *buf, int len)
+{
+  int fd = proc_setup(d, 0);
+  int res;
+
+  if (fd < 0)
+    return 0;
+  res = do_read(d, fd, buf, len, pos);
+  if (res < 0)
+    {
+      d->access->warning("proc_read: read failed: %s", strerror(errno));
+      return 0;
+    }
+  else if (res != len)
+    return 0;
+  return 1;
+}
+
+static int
+proc_write(struct pci_dev *d, int pos, byte *buf, int len)
+{
+  int fd = proc_setup(d, 1);
+  int res;
+
+  if (fd < 0)
+    return 0;
+  res = do_write(d, fd, buf, len, pos);
+  if (res < 0)
+    {
+      d->access->warning("proc_write: write failed: %s", strerror(errno));
+      return 0;
+    }
+  else if (res != len)
+    {
+      d->access->warning("proc_write: tried to write %d bytes at %d, but only %d succeeded", len, pos, res);
+      return 0;
+    }
+  return 1;
+}
+
+static void
+proc_cleanup_dev(struct pci_dev *d)
+{
+  if (d->access->cached_dev == d)
+    d->access->cached_dev = NULL;
+}
+
+struct pci_methods pm_linux_proc = {
+  "linux-proc",
+  "The proc file system on Linux",
+  proc_config,
+  proc_detect,
+  proc_init,
+  proc_cleanup,
+  proc_scan,
+  pci_generic_fill_info,
+  proc_read,
+  proc_write,
+  NULL,                                        /* init_dev */
+  proc_cleanup_dev
+};
diff --git a/lib/sysdep.h b/lib/sysdep.h
new file mode 100644 (file)
index 0000000..2a25c93
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ *     The PCI Library -- System-Dependent Stuff
+ *
+ *     Copyright (c) 1997--2004 Martin Mares <mj@ucw.cz>
+ *
+ *     Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#ifdef __GNUC__
+#define UNUSED __attribute__((unused))
+#define NONRET __attribute__((noreturn))
+#else
+#define UNUSED
+#define NONRET
+#define inline
+#endif
+
+typedef u8 byte;
+typedef u16 word;
+
+#ifdef PCI_OS_WINDOWS
+#define strcasecmp strcmpi
+#endif
+
+#ifdef PCI_HAVE_LINUX_BYTEORDER_H
+
+#include <asm/byteorder.h>
+#define cpu_to_le16 __cpu_to_le16
+#define cpu_to_le32 __cpu_to_le32
+#define le16_to_cpu __le16_to_cpu
+#define le32_to_cpu __le32_to_cpu
+
+#else
+
+#ifdef PCI_OS_LINUX
+#include <endian.h>
+#define BYTE_ORDER __BYTE_ORDER
+#define BIG_ENDIAN __BIG_ENDIAN
+#endif
+
+#ifdef PCI_OS_SUNOS
+#include <sys/byteorder.h>
+#define BIG_ENDIAN 4321
+#ifdef _LITTLE_ENDIAN
+#define BYTE_ORDER 1234
+#else
+#define BYTE_ORDER 4321
+#endif
+#endif
+
+#ifdef PCI_OS_WINDOWS
+#ifdef __MINGW32__
+  #include <sys/param.h>
+#else
+  #include <io.h>
+  #define BIG_ENDIAN 4321
+  #define LITTLE_ENDIAN        1234
+  #define BYTE_ORDER LITTLE_ENDIAN
+  #define snprintf _snprintf
+#endif
+#endif
+
+#if BYTE_ORDER == BIG_ENDIAN
+#define cpu_to_le16 swab16
+#define cpu_to_le32 swab32
+#define le16_to_cpu swab16
+#define le32_to_cpu swab32
+
+static inline word swab16(word w)
+{
+  return (w << 8) | ((w >> 8) & 0xff);
+}
+
+static inline u32 swab32(u32 w)
+{
+  return ((w & 0xff000000) >> 24) |
+         ((w & 0x00ff0000) >> 8) |
+         ((w & 0x0000ff00) << 8)  |
+         ((w & 0x000000ff) << 24);
+}
+#else
+#define cpu_to_le16(x) (x)
+#define cpu_to_le32(x) (x)
+#define le16_to_cpu(x) (x)
+#define le32_to_cpu(x) (x)
+#endif
+
+#endif
diff --git a/lib/sysfs.c b/lib/sysfs.c
new file mode 100644 (file)
index 0000000..ea386fa
--- /dev/null
@@ -0,0 +1,265 @@
+/*
+ *     The PCI Library -- Configuration Access via /sys/bus/pci
+ *
+ *     Copyright (c) 2003 Matthew Wilcox <willy@fc.hp.com>
+ *     Copyright (c) 1997--2008 Martin Mares <mj@ucw.cz>
+ *
+ *     Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#define _GNU_SOURCE
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include <unistd.h>
+#include <errno.h>
+#include <dirent.h>
+#include <fcntl.h>
+#include <sys/types.h>
+
+#include "internal.h"
+#include "pread.h"
+
+static void
+sysfs_config(struct pci_access *a)
+{
+  pci_define_param(a, "sysfs.path", PCI_PATH_SYS_BUS_PCI, "Path to the sysfs device tree");
+}
+
+static inline char *
+sysfs_name(struct pci_access *a)
+{
+  return pci_get_param(a, "sysfs.path");
+}
+
+static int
+sysfs_detect(struct pci_access *a)
+{
+  if (access(sysfs_name(a), R_OK))
+    {
+      a->debug("...cannot open %s", sysfs_name(a));
+      return 0;
+    }
+  a->debug("...using %s", sysfs_name(a));
+  return 1;
+}
+
+static void
+sysfs_init(struct pci_access *a)
+{
+  a->fd = -1;
+}
+
+static void
+sysfs_cleanup(struct pci_access *a)
+{
+  if (a->fd >= 0)
+    {
+      close(a->fd);
+      a->fd = -1;
+    }
+}
+
+#define OBJNAMELEN 1024
+static void
+sysfs_obj_name(struct pci_dev *d, char *object, char *buf)
+{
+  int n = snprintf(buf, OBJNAMELEN, "%s/devices/%04x:%02x:%02x.%d/%s",
+                  sysfs_name(d->access), d->domain, d->bus, d->dev, d->func, object);
+  if (n < 0 || n >= OBJNAMELEN)
+    d->access->error("File name too long");
+}
+
+static int
+sysfs_get_value(struct pci_dev *d, char *object)
+{
+  struct pci_access *a = d->access;
+  int fd, n;
+  char namebuf[OBJNAMELEN], buf[256];
+
+  sysfs_obj_name(d, object, namebuf);
+  fd = open(namebuf, O_RDONLY);
+  if (fd < 0)
+    a->error("Cannot open %s: %s", namebuf, strerror(errno));
+  n = read(fd, buf, sizeof(buf));
+  close(fd);
+  if (n < 0)
+    a->error("Error reading %s: %s", namebuf, strerror(errno));
+  if (n >= (int) sizeof(buf))
+    a->error("Value in %s too long", namebuf);
+  buf[n] = 0;
+  return strtol(buf, NULL, 0);
+}
+
+static void
+sysfs_get_resources(struct pci_dev *d)
+{
+  struct pci_access *a = d->access;
+  char namebuf[OBJNAMELEN], buf[256];
+  FILE *file;
+  int i;
+
+  sysfs_obj_name(d, "resource", namebuf);
+  file = fopen(namebuf, "r");
+  if (!file)
+    a->error("Cannot open %s: %s", namebuf, strerror(errno));
+  for (i = 0; i < 7; i++)
+    {
+      unsigned long long start, end, size;
+      if (!fgets(buf, sizeof(buf), file))
+       break;
+      if (sscanf(buf, "%llx %llx", &start, &end) != 2)
+       a->error("Syntax error in %s", namebuf);
+      if (start)
+       size = end - start + 1;
+      else
+       size = 0;
+      if (i < 6)
+       {
+         d->base_addr[i] = start;
+         d->size[i] = size;
+       }
+      else
+       {
+         d->rom_base_addr = start;
+         d->rom_size = size;
+       }
+    }
+  fclose(file);
+}
+
+static void sysfs_scan(struct pci_access *a)
+{
+  char dirname[1024];
+  DIR *dir;
+  struct dirent *entry;
+  int n;
+
+  n = snprintf(dirname, sizeof(dirname), "%s/devices", sysfs_name(a));
+  if (n < 0 || n >= (int) sizeof(dirname))
+    a->error("Directory name too long");
+  dir = opendir(dirname);
+  if (!dir)
+    a->error("Cannot open %s", dirname);
+  while ((entry = readdir(dir)))
+    {
+      struct pci_dev *d;
+      unsigned int dom, bus, dev, func;
+
+      /* ".", ".." or a special non-device perhaps */
+      if (entry->d_name[0] == '.')
+       continue;
+
+      d = pci_alloc_dev(a);
+      if (sscanf(entry->d_name, "%x:%x:%x.%d", &dom, &bus, &dev, &func) < 4)
+       a->error("sysfs_scan: Couldn't parse entry name %s", entry->d_name);
+      d->domain = dom;
+      d->bus = bus;
+      d->dev = dev;
+      d->func = func;
+      if (!a->buscentric)
+       {
+         sysfs_get_resources(d);
+         d->irq = sysfs_get_value(d, "irq");
+         /*
+          *  We could read these faster from the config registers, but we want to give
+          *  the kernel a chance to fix up ID's and especially classes of broken devices.
+          */
+         d->vendor_id = sysfs_get_value(d, "vendor");
+         d->device_id = sysfs_get_value(d, "device");
+         d->device_class = sysfs_get_value(d, "class") >> 8;
+         d->known_fields = PCI_FILL_IDENT | PCI_FILL_CLASS | PCI_FILL_IRQ | PCI_FILL_BASES | PCI_FILL_ROM_BASE | PCI_FILL_SIZES;
+       }
+      pci_link_dev(a, d);
+    }
+  closedir(dir);
+}
+
+static int
+sysfs_setup(struct pci_dev *d, int rw)
+{
+  struct pci_access *a = d->access;
+
+  if (a->cached_dev != d || a->fd_rw < rw)
+    {
+      char namebuf[OBJNAMELEN];
+      if (a->fd >= 0)
+       close(a->fd);
+      sysfs_obj_name(d, "config", namebuf);
+      a->fd_rw = a->writeable || rw;
+      a->fd = open(namebuf, a->fd_rw ? O_RDWR : O_RDONLY);
+      if (a->fd < 0)
+       a->warning("Cannot open %s", namebuf);
+      a->cached_dev = d;
+      a->fd_pos = 0;
+    }
+  return a->fd;
+}
+
+static int sysfs_read(struct pci_dev *d, int pos, byte *buf, int len)
+{
+  int fd = sysfs_setup(d, 0);
+  int res;
+
+  if (fd < 0)
+    return 0;
+  res = do_read(d, fd, buf, len, pos);
+  if (res < 0)
+    {
+      d->access->warning("sysfs_read: read failed: %s", strerror(errno));
+      return 0;
+    }
+  else if (res != len)
+    return 0;
+  return 1;
+}
+
+static int sysfs_write(struct pci_dev *d, int pos, byte *buf, int len)
+{
+  int fd = sysfs_setup(d, 1);
+  int res;
+
+  if (fd < 0)
+    return 0;
+  res = do_write(d, fd, buf, len, pos);
+  if (res < 0)
+    {
+      d->access->warning("sysfs_write: write failed: %s", strerror(errno));
+      return 0;
+    }
+  else if (res != len)
+    {
+      d->access->warning("sysfs_write: tried to write %d bytes at %d, but only %d succeeded", len, pos, res);
+      return 0;
+    }
+  return 1;
+}
+
+static void sysfs_cleanup_dev(struct pci_dev *d)
+{
+  struct pci_access *a = d->access;
+
+  if (a->cached_dev == d)
+    {
+      a->cached_dev = NULL;
+      close(a->fd);
+      a->fd = -1;
+    }
+}
+
+struct pci_methods pm_linux_sysfs = {
+  "linux-sysfs",
+  "The sys filesystem on Linux",
+  sysfs_config,
+  sysfs_detect,
+  sysfs_init,
+  sysfs_cleanup,
+  sysfs_scan,
+  pci_generic_fill_info,
+  sysfs_read,
+  sysfs_write,
+  NULL,                                        /* init_dev */
+  sysfs_cleanup_dev
+};
diff --git a/lib/types.h b/lib/types.h
new file mode 100644 (file)
index 0000000..3e0e5c3
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ *     The PCI Library -- Types and Format Strings
+ *
+ *     Copyright (c) 1997--2008 Martin Mares <mj@ucw.cz>
+ *
+ *     Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#include <sys/types.h>
+
+#ifndef PCI_HAVE_Uxx_TYPES
+
+#ifdef PCI_OS_WINDOWS
+#include <windef.h>
+typedef BYTE u8;
+typedef WORD u16;
+typedef DWORD u32;
+#elif defined(PCI_HAVE_STDINT_H) || (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L)
+#include <stdint.h>
+typedef uint8_t u8;
+typedef uint16_t u16;
+typedef uint32_t u32;
+#else
+typedef u_int8_t u8;
+typedef u_int16_t u16;
+typedef u_int32_t u32;
+#endif
+
+#ifdef PCI_HAVE_64BIT_ADDRESS
+#include <limits.h>
+#if ULONG_MAX > 0xffffffff
+typedef unsigned long u64;
+#define PCI_U64_FMT "l"
+#else
+typedef unsigned long long u64;
+#define PCI_U64_FMT "ll"
+#endif
+#endif
+
+#endif /* PCI_HAVE_Uxx_TYPES */
+
+#ifdef PCI_HAVE_64BIT_ADDRESS
+typedef u64 pciaddr_t;
+#define PCIADDR_T_FMT "%08" PCI_U64_FMT "x"
+#define PCIADDR_PORT_FMT "%04" PCI_U64_FMT "x"
+#else
+typedef u32 pciaddr_t;
+#define PCIADDR_T_FMT "%08x"
+#define PCIADDR_PORT_FMT "%04x"
+#endif
+
+#ifdef PCI_ARCH_SPARC64
+/* On sparc64 Linux the kernel reports remapped port addresses and IRQ numbers */
+#undef PCIADDR_PORT_FMT
+#define PCIADDR_PORT_FMT PCIADDR_T_FMT
+#define PCIIRQ_FMT "%08x"
+#else
+#define PCIIRQ_FMT "%d"
+#endif
+
+#ifdef __GNUC__
+#define PCI_PRINTF(x,y) __attribute__((format(printf, x, y)))
+#else
+#define PCI_PRINTF(x,y)
+#endif
diff --git a/lspci.c b/lspci.c
new file mode 100644 (file)
index 0000000..0515fcd
--- /dev/null
+++ b/lspci.c
@@ -0,0 +1,2801 @@
+/*
+ *     The PCI Utilities -- List All PCI Devices
+ *
+ *     Copyright (c) 1997--2008 Martin Mares <mj@ucw.cz>
+ *
+ *     Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <unistd.h>
+
+#define PCIUTILS_LSPCI
+#include "pciutils.h"
+
+/* Options */
+
+static int verbose;                    /* Show detailed information */
+static int opt_buscentric;             /* Show bus addresses/IRQ's instead of CPU-visible ones */
+static int opt_hex;                    /* Show contents of config space as hexadecimal numbers */
+static struct pci_filter filter;       /* Device filter */
+static int opt_tree;                   /* Show bus tree */
+static int opt_machine;                        /* Generate machine-readable output */
+static int opt_map_mode;               /* Bus mapping mode enabled */
+static int opt_domains;                        /* Show domain numbers (0=disabled, 1=auto-detected, 2=requested) */
+static int opt_kernel;                 /* Show kernel drivers */
+static int opt_query_dns;              /* Query the DNS (0=disabled, 1=enabled, 2=refresh cache) */
+static int opt_query_all;              /* Query the DNS for all entries */
+static char *opt_pcimap;               /* Override path to Linux modules.pcimap */
+
+const char program_name[] = "lspci";
+
+static char options[] = "nvbxs:d:ti:mgp:qkMDQ" GENERIC_OPTIONS ;
+
+static char help_msg[] =
+"Usage: lspci [<switches>]\n"
+"\n"
+"Basic display modes:\n"
+"-mm\t\tProduce machine-readable output (single -m for an obsolete format)\n"
+"-t\t\tShow bus tree\n"
+"\n"
+"Display options:\n"
+"-v\t\tBe verbose (-vv for very verbose)\n"
+#ifdef PCI_OS_LINUX
+"-k\t\tShow kernel drivers handling each device\n"
+#endif
+"-x\t\tShow hex-dump of the standard part of the config space\n"
+"-xxx\t\tShow hex-dump of the whole config space (dangerous; root only)\n"
+"-xxxx\t\tShow hex-dump of the 4096-byte extended config space (root only)\n"
+"-b\t\tBus-centric view (addresses and IRQ's as seen by the bus)\n"
+"-D\t\tAlways show domain numbers\n"
+"\n"
+"Resolving of device ID's to names:\n"
+"-n\t\tShow numeric ID's\n"
+"-nn\t\tShow both textual and numeric ID's (names & numbers)\n"
+#ifdef PCI_USE_DNS
+"-q\t\tQuery the PCI ID database for unknown ID's via DNS\n"
+"-qq\t\tAs above, but re-query locally cached entries\n"
+"-Q\t\tQuery the PCI ID database for all ID's via DNS\n"
+#endif
+"\n"
+"Selection of devices:\n"
+"-s [[[[<domain>]:]<bus>]:][<slot>][.[<func>]]\tShow only devices in selected slots\n"
+"-d [<vendor>]:[<device>]\t\t\tShow only devices with specified ID's\n"
+"\n"
+"Other options:\n"
+"-i <file>\tUse specified ID database instead of %s\n"
+#ifdef PCI_OS_LINUX
+"-p <file>\tLook up kernel modules in a given file instead of default modules.pcimap\n"
+#endif
+"-M\t\tEnable `bus mapping' mode (dangerous; root only)\n"
+"\n"
+"PCI access options:\n"
+GENERIC_HELP
+;
+
+/*** Communication with libpci ***/
+
+static struct pci_access *pacc;
+
+/*
+ *  If we aren't being compiled by GCC, use xmalloc() instead of alloca().
+ *  This increases our memory footprint, but only slightly since we don't
+ *  use alloca() much.
+ */
+#if defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__DragonFly__)
+/* alloca() is defined in stdlib.h */
+#elif defined(__GNUC__) && !defined(PCI_OS_WINDOWS)
+#include <alloca.h>
+#else
+#undef alloca
+#define alloca xmalloc
+#endif
+
+/*** Our view of the PCI bus ***/
+
+struct device {
+  struct device *next;
+  struct pci_dev *dev;
+  unsigned int config_cached, config_bufsize;
+  byte *config;                                /* Cached configuration space data */
+  byte *present;                       /* Maps which configuration bytes are present */
+};
+
+static struct device *first_dev;
+static int seen_errors;
+
+static int
+config_fetch(struct device *d, unsigned int pos, unsigned int len)
+{
+  unsigned int end = pos+len;
+  int result;
+
+  while (pos < d->config_bufsize && len && d->present[pos])
+    pos++, len--;
+  while (pos+len <= d->config_bufsize && len && d->present[pos+len-1])
+    len--;
+  if (!len)
+    return 1;
+
+  if (end > d->config_bufsize)
+    {
+      int orig_size = d->config_bufsize;
+      while (end > d->config_bufsize)
+       d->config_bufsize *= 2;
+      d->config = xrealloc(d->config, d->config_bufsize);
+      d->present = xrealloc(d->present, d->config_bufsize);
+      memset(d->present + orig_size, 0, d->config_bufsize - orig_size);
+    }
+  result = pci_read_block(d->dev, pos, d->config + pos, len);
+  if (result)
+    memset(d->present + pos, 1, len);
+  return result;
+}
+
+static struct device *
+scan_device(struct pci_dev *p)
+{
+  struct device *d;
+
+  if (p->domain && !opt_domains)
+    opt_domains = 1;
+  if (!pci_filter_match(&filter, p))
+    return NULL;
+  d = xmalloc(sizeof(struct device));
+  memset(d, 0, sizeof(*d));
+  d->dev = p;
+  d->config_cached = d->config_bufsize = 64;
+  d->config = xmalloc(64);
+  d->present = xmalloc(64);
+  memset(d->present, 1, 64);
+  if (!pci_read_block(p, 0, d->config, 64))
+    {
+      fprintf(stderr, "lspci: Unable to read the standard configuration space header of device %04x:%02x:%02x.%d\n",
+             p->domain, p->bus, p->dev, p->func);
+      seen_errors++;
+      return NULL;
+    }
+  if ((d->config[PCI_HEADER_TYPE] & 0x7f) == PCI_HEADER_TYPE_CARDBUS)
+    {
+      /* For cardbus bridges, we need to fetch 64 bytes more to get the
+       * full standard header... */
+      if (config_fetch(d, 64, 64))
+       d->config_cached += 64;
+    }
+  pci_setup_cache(p, d->config, d->config_cached);
+  pci_fill_info(p, PCI_FILL_IDENT | PCI_FILL_CLASS | PCI_FILL_IRQ | PCI_FILL_BASES | PCI_FILL_ROM_BASE | PCI_FILL_SIZES);
+  return d;
+}
+
+static void
+scan_devices(void)
+{
+  struct device *d;
+  struct pci_dev *p;
+
+  pci_scan_bus(pacc);
+  for(p=pacc->devices; p; p=p->next)
+    if (d = scan_device(p))
+      {
+       d->next = first_dev;
+       first_dev = d;
+      }
+}
+
+/*** Config space accesses ***/
+
+static void
+check_conf_range(struct device *d, unsigned int pos, unsigned int len)
+{
+  while (len)
+    if (!d->present[pos])
+      die("Internal bug: Accessing non-read configuration byte at position %x", pos);
+    else
+      pos++, len--;
+}
+
+static inline byte
+get_conf_byte(struct device *d, unsigned int pos)
+{
+  check_conf_range(d, pos, 1);
+  return d->config[pos];
+}
+
+static word
+get_conf_word(struct device *d, unsigned int pos)
+{
+  check_conf_range(d, pos, 2);
+  return d->config[pos] | (d->config[pos+1] << 8);
+}
+
+static u32
+get_conf_long(struct device *d, unsigned int pos)
+{
+  check_conf_range(d, pos, 4);
+  return d->config[pos] |
+    (d->config[pos+1] << 8) |
+    (d->config[pos+2] << 16) |
+    (d->config[pos+3] << 24);
+}
+
+/*** Sorting ***/
+
+static int
+compare_them(const void *A, const void *B)
+{
+  const struct pci_dev *a = (*(const struct device **)A)->dev;
+  const struct pci_dev *b = (*(const struct device **)B)->dev;
+
+  if (a->domain < b->domain)
+    return -1;
+  if (a->domain > b->domain)
+    return 1;
+  if (a->bus < b->bus)
+    return -1;
+  if (a->bus > b->bus)
+    return 1;
+  if (a->dev < b->dev)
+    return -1;
+  if (a->dev > b->dev)
+    return 1;
+  if (a->func < b->func)
+    return -1;
+  if (a->func > b->func)
+    return 1;
+  return 0;
+}
+
+static void
+sort_them(void)
+{
+  struct device **index, **h, **last_dev;
+  int cnt;
+  struct device *d;
+
+  cnt = 0;
+  for(d=first_dev; d; d=d->next)
+    cnt++;
+  h = index = alloca(sizeof(struct device *) * cnt);
+  for(d=first_dev; d; d=d->next)
+    *h++ = d;
+  qsort(index, cnt, sizeof(struct device *), compare_them);
+  last_dev = &first_dev;
+  h = index;
+  while (cnt--)
+    {
+      *last_dev = *h;
+      last_dev = &(*h)->next;
+      h++;
+    }
+  *last_dev = NULL;
+}
+
+/*** Normal output ***/
+
+#define FLAG(x,y) ((x & y) ? '+' : '-')
+
+static void
+show_slot_name(struct device *d)
+{
+  struct pci_dev *p = d->dev;
+
+  if (!opt_machine ? opt_domains : (p->domain || opt_domains >= 2))
+    printf("%04x:", p->domain);
+  printf("%02x:%02x.%d", p->bus, p->dev, p->func);
+}
+
+static void
+show_terse(struct device *d)
+{
+  int c;
+  struct pci_dev *p = d->dev;
+  char classbuf[128], devbuf[128];
+
+  show_slot_name(d);
+  printf(" %s: %s",
+        pci_lookup_name(pacc, classbuf, sizeof(classbuf),
+                        PCI_LOOKUP_CLASS,
+                        p->device_class),
+        pci_lookup_name(pacc, devbuf, sizeof(devbuf),
+                        PCI_LOOKUP_VENDOR | PCI_LOOKUP_DEVICE,
+                        p->vendor_id, p->device_id));
+  if (c = get_conf_byte(d, PCI_REVISION_ID))
+    printf(" (rev %02x)", c);
+  if (verbose)
+    {
+      char *x;
+      c = get_conf_byte(d, PCI_CLASS_PROG);
+      x = pci_lookup_name(pacc, devbuf, sizeof(devbuf),
+                         PCI_LOOKUP_PROGIF | PCI_LOOKUP_NO_NUMBERS,
+                         p->device_class, c);
+      if (c || x)
+       {
+         printf(" (prog-if %02x", c);
+         if (x)
+           printf(" [%s]", x);
+         putchar(')');
+       }
+    }
+  putchar('\n');
+}
+
+static void
+get_subid(struct device *d, word *subvp, word *subdp)
+{
+  byte htype = get_conf_byte(d, PCI_HEADER_TYPE) & 0x7f;
+
+  if (htype == PCI_HEADER_TYPE_NORMAL)
+    {
+      *subvp = get_conf_word(d, PCI_SUBSYSTEM_VENDOR_ID);
+      *subdp = get_conf_word(d, PCI_SUBSYSTEM_ID);
+    }
+  else if (htype == PCI_HEADER_TYPE_CARDBUS && d->config_cached >= 128)
+    {
+      *subvp = get_conf_word(d, PCI_CB_SUBSYSTEM_VENDOR_ID);
+      *subdp = get_conf_word(d, PCI_CB_SUBSYSTEM_ID);
+    }
+  else
+    *subvp = *subdp = 0xffff;
+}
+
+/*** Capabilities ***/
+
+static void
+cap_pm(struct device *d, int where, int cap)
+{
+  int t, b;
+  static int pm_aux_current[8] = { 0, 55, 100, 160, 220, 270, 320, 375 };
+
+  printf("Power Management version %d\n", cap & PCI_PM_CAP_VER_MASK);
+  if (verbose < 2)
+    return;
+  printf("\t\tFlags: PMEClk%c DSI%c D1%c D2%c AuxCurrent=%dmA PME(D0%c,D1%c,D2%c,D3hot%c,D3cold%c)\n",
+        FLAG(cap, PCI_PM_CAP_PME_CLOCK),
+        FLAG(cap, PCI_PM_CAP_DSI),
+        FLAG(cap, PCI_PM_CAP_D1),
+        FLAG(cap, PCI_PM_CAP_D2),
+        pm_aux_current[(cap >> 6) & 7],
+        FLAG(cap, PCI_PM_CAP_PME_D0),
+        FLAG(cap, PCI_PM_CAP_PME_D1),
+        FLAG(cap, PCI_PM_CAP_PME_D2),
+        FLAG(cap, PCI_PM_CAP_PME_D3_HOT),
+        FLAG(cap, PCI_PM_CAP_PME_D3_COLD));
+  if (!config_fetch(d, where + PCI_PM_CTRL, PCI_PM_SIZEOF - PCI_PM_CTRL))
+    return;
+  t = get_conf_word(d, where + PCI_PM_CTRL);
+  printf("\t\tStatus: D%d PME-Enable%c DSel=%d DScale=%d PME%c\n",
+        t & PCI_PM_CTRL_STATE_MASK,
+        FLAG(t, PCI_PM_CTRL_PME_ENABLE),
+        (t & PCI_PM_CTRL_DATA_SEL_MASK) >> 9,
+        (t & PCI_PM_CTRL_DATA_SCALE_MASK) >> 13,
+        FLAG(t, PCI_PM_CTRL_PME_STATUS));
+  b = get_conf_byte(d, where + PCI_PM_PPB_EXTENSIONS);
+  if (b)
+    printf("\t\tBridge: PM%c B3%c\n",
+          FLAG(t, PCI_PM_BPCC_ENABLE),
+          FLAG(~t, PCI_PM_PPB_B2_B3));
+}
+
+static void
+format_agp_rate(int rate, char *buf, int agp3)
+{
+  char *c = buf;
+  int i;
+
+  for(i=0; i<=2; i++)
+    if (rate & (1 << i))
+      {
+       if (c != buf)
+         *c++ = ',';
+       c += sprintf(c, "x%d", 1 << (i + 2*agp3));
+      }
+  if (c != buf)
+    *c = 0;
+  else
+    strcpy(buf, "<none>");
+}
+
+static void
+cap_agp(struct device *d, int where, int cap)
+{
+  u32 t;
+  char rate[16];
+  int ver, rev;
+  int agp3 = 0;
+
+  ver = (cap >> 4) & 0x0f;
+  rev = cap & 0x0f;
+  printf("AGP version %x.%x\n", ver, rev);
+  if (verbose < 2)
+    return;
+  if (!config_fetch(d, where + PCI_AGP_STATUS, PCI_AGP_SIZEOF - PCI_AGP_STATUS))
+    return;
+  t = get_conf_long(d, where + PCI_AGP_STATUS);
+  if (ver >= 3 && (t & PCI_AGP_STATUS_AGP3))
+    agp3 = 1;
+  format_agp_rate(t & 7, rate, agp3);
+  printf("\t\tStatus: RQ=%d Iso%c ArqSz=%d Cal=%d SBA%c ITACoh%c GART64%c HTrans%c 64bit%c FW%c AGP3%c Rate=%s\n",
+        ((t & PCI_AGP_STATUS_RQ_MASK) >> 24U) + 1,
+        FLAG(t, PCI_AGP_STATUS_ISOCH),
+        ((t & PCI_AGP_STATUS_ARQSZ_MASK) >> 13),
+        ((t & PCI_AGP_STATUS_CAL_MASK) >> 10),
+        FLAG(t, PCI_AGP_STATUS_SBA),
+        FLAG(t, PCI_AGP_STATUS_ITA_COH),
+        FLAG(t, PCI_AGP_STATUS_GART64),
+        FLAG(t, PCI_AGP_STATUS_HTRANS),
+        FLAG(t, PCI_AGP_STATUS_64BIT),
+        FLAG(t, PCI_AGP_STATUS_FW),
+        FLAG(t, PCI_AGP_STATUS_AGP3),
+        rate);
+  t = get_conf_long(d, where + PCI_AGP_COMMAND);
+  format_agp_rate(t & 7, rate, agp3);
+  printf("\t\tCommand: RQ=%d ArqSz=%d Cal=%d SBA%c AGP%c GART64%c 64bit%c FW%c Rate=%s\n",
+        ((t & PCI_AGP_COMMAND_RQ_MASK) >> 24U) + 1,
+        ((t & PCI_AGP_COMMAND_ARQSZ_MASK) >> 13),
+        ((t & PCI_AGP_COMMAND_CAL_MASK) >> 10),
+        FLAG(t, PCI_AGP_COMMAND_SBA),
+        FLAG(t, PCI_AGP_COMMAND_AGP),
+        FLAG(t, PCI_AGP_COMMAND_GART64),
+        FLAG(t, PCI_AGP_COMMAND_64BIT),
+        FLAG(t, PCI_AGP_COMMAND_FW),
+        rate);
+}
+
+static void
+cap_pcix_nobridge(struct device *d, int where)
+{
+  u16 command;
+  u32 status;
+  static const byte max_outstanding[8] = { 1, 2, 3, 4, 8, 12, 16, 32 };
+
+  printf("PCI-X non-bridge device\n");
+
+  if (verbose < 2)
+    return;
+
+  if (!config_fetch(d, where + PCI_PCIX_STATUS, 4))
+    return;
+
+  command = get_conf_word(d, where + PCI_PCIX_COMMAND);
+  status = get_conf_long(d, where + PCI_PCIX_STATUS);
+  printf("\t\tCommand: DPERE%c ERO%c RBC=%d OST=%d\n",
+        FLAG(command, PCI_PCIX_COMMAND_DPERE),
+        FLAG(command, PCI_PCIX_COMMAND_ERO),
+        1 << (9 + ((command & PCI_PCIX_COMMAND_MAX_MEM_READ_BYTE_COUNT) >> 2U)),
+        max_outstanding[(command & PCI_PCIX_COMMAND_MAX_OUTSTANDING_SPLIT_TRANS) >> 4U]);
+  printf("\t\tStatus: Dev=%02x:%02x.%d 64bit%c 133MHz%c SCD%c USC%c DC=%s DMMRBC=%u DMOST=%u DMCRS=%u RSCEM%c 266MHz%c 533MHz%c\n",
+        ((status >> 8) & 0xff),
+        ((status >> 3) & 0x1f),
+        (status & PCI_PCIX_STATUS_FUNCTION),
+        FLAG(status, PCI_PCIX_STATUS_64BIT),
+        FLAG(status, PCI_PCIX_STATUS_133MHZ),
+        FLAG(status, PCI_PCIX_STATUS_SC_DISCARDED),
+        FLAG(status, PCI_PCIX_STATUS_UNEXPECTED_SC),
+        ((status & PCI_PCIX_STATUS_DEVICE_COMPLEXITY) ? "bridge" : "simple"),
+        1 << (9 + ((status >> 21) & 3U)),
+        max_outstanding[(status >> 23) & 7U],
+        1 << (3 + ((status >> 26) & 7U)),
+        FLAG(status, PCI_PCIX_STATUS_RCVD_SC_ERR_MESS),
+        FLAG(status, PCI_PCIX_STATUS_266MHZ),
+        FLAG(status, PCI_PCIX_STATUS_533MHZ));
+}
+
+static void
+cap_pcix_bridge(struct device *d, int where)
+{
+  static const char * const sec_clock_freq[8] = { "conv", "66MHz", "100MHz", "133MHz", "?4", "?5", "?6", "?7" };
+  u16 secstatus;
+  u32 status, upstcr, downstcr;
+
+  printf("PCI-X bridge device\n");
+
+  if (verbose < 2)
+    return;
+
+  if (!config_fetch(d, where + PCI_PCIX_BRIDGE_STATUS, 12))
+    return;
+
+  secstatus = get_conf_word(d, where + PCI_PCIX_BRIDGE_SEC_STATUS);
+  printf("\t\tSecondary Status: 64bit%c 133MHz%c SCD%c USC%c SCO%c SRD%c Freq=%s\n",
+        FLAG(secstatus, PCI_PCIX_BRIDGE_SEC_STATUS_64BIT),
+        FLAG(secstatus, PCI_PCIX_BRIDGE_SEC_STATUS_133MHZ),
+        FLAG(secstatus, PCI_PCIX_BRIDGE_SEC_STATUS_SC_DISCARDED),
+        FLAG(secstatus, PCI_PCIX_BRIDGE_SEC_STATUS_UNEXPECTED_SC),
+        FLAG(secstatus, PCI_PCIX_BRIDGE_SEC_STATUS_SC_OVERRUN),
+        FLAG(secstatus, PCI_PCIX_BRIDGE_SEC_STATUS_SPLIT_REQUEST_DELAYED),
+        sec_clock_freq[(secstatus >> 6) & 7]);
+  status = get_conf_long(d, where + PCI_PCIX_BRIDGE_STATUS);
+  printf("\t\tStatus: Dev=%02x:%02x.%d 64bit%c 133MHz%c SCD%c USC%c SCO%c SRD%c\n",
+        ((status >> 8) & 0xff),
+        ((status >> 3) & 0x1f),
+        (status & PCI_PCIX_BRIDGE_STATUS_FUNCTION),
+        FLAG(status, PCI_PCIX_BRIDGE_STATUS_64BIT),
+        FLAG(status, PCI_PCIX_BRIDGE_STATUS_133MHZ),
+        FLAG(status, PCI_PCIX_BRIDGE_STATUS_SC_DISCARDED),
+        FLAG(status, PCI_PCIX_BRIDGE_STATUS_UNEXPECTED_SC),
+        FLAG(status, PCI_PCIX_BRIDGE_STATUS_SC_OVERRUN),
+        FLAG(status, PCI_PCIX_BRIDGE_STATUS_SPLIT_REQUEST_DELAYED));
+  upstcr = get_conf_long(d, where + PCI_PCIX_BRIDGE_UPSTREAM_SPLIT_TRANS_CTRL);
+  printf("\t\tUpstream: Capacity=%u CommitmentLimit=%u\n",
+        (upstcr & PCI_PCIX_BRIDGE_STR_CAPACITY),
+        (upstcr >> 16) & 0xffff);
+  downstcr = get_conf_long(d, where + PCI_PCIX_BRIDGE_DOWNSTREAM_SPLIT_TRANS_CTRL);
+  printf("\t\tDownstream: Capacity=%u CommitmentLimit=%u\n",
+        (downstcr & PCI_PCIX_BRIDGE_STR_CAPACITY),
+        (downstcr >> 16) & 0xffff);
+}
+
+static void
+cap_pcix(struct device *d, int where)
+{
+  switch (get_conf_byte(d, PCI_HEADER_TYPE) & 0x7f)
+    {
+    case PCI_HEADER_TYPE_NORMAL:
+      cap_pcix_nobridge(d, where);
+      break;
+    case PCI_HEADER_TYPE_BRIDGE:
+      cap_pcix_bridge(d, where);
+      break;
+    }
+}
+
+static inline char *
+ht_link_width(unsigned width)
+{
+  static char * const widths[8] = { "8bit", "16bit", "[2]", "32bit", "2bit", "4bit", "[6]", "N/C" };
+  return widths[width];
+}
+
+static inline char *
+ht_link_freq(unsigned freq)
+{
+  static char * const freqs[16] = { "200MHz", "300MHz", "400MHz", "500MHz", "600MHz", "800MHz", "1.0GHz", "1.2GHz",
+                                   "1.4GHz", "1.6GHz", "[a]", "[b]", "[c]", "[d]", "[e]", "Vend" };
+  return freqs[freq];
+}
+
+static void
+cap_ht_pri(struct device *d, int where, int cmd)
+{
+  u16 lctr0, lcnf0, lctr1, lcnf1, eh;
+  u8 rid, lfrer0, lfcap0, ftr, lfrer1, lfcap1, mbu, mlu, bn;
+  char *fmt;
+
+  printf("HyperTransport: Slave or Primary Interface\n");
+  if (verbose < 2)
+    return;
+
+  if (!config_fetch(d, where + PCI_HT_PRI_LCTR0, PCI_HT_PRI_SIZEOF - PCI_HT_PRI_LCTR0))
+    return;
+  rid = get_conf_byte(d, where + PCI_HT_PRI_RID);
+  if (rid < 0x23 && rid > 0x11)
+    printf("\t\t!!! Possibly incomplete decoding\n");
+
+  if (rid >= 0x23)
+    fmt = "\t\tCommand: BaseUnitID=%u UnitCnt=%u MastHost%c DefDir%c DUL%c\n";
+  else
+    fmt = "\t\tCommand: BaseUnitID=%u UnitCnt=%u MastHost%c DefDir%c\n";
+  printf(fmt,
+        (cmd & PCI_HT_PRI_CMD_BUID),
+        (cmd & PCI_HT_PRI_CMD_UC) >> 5,
+        FLAG(cmd, PCI_HT_PRI_CMD_MH),
+        FLAG(cmd, PCI_HT_PRI_CMD_DD),
+        FLAG(cmd, PCI_HT_PRI_CMD_DUL));
+  lctr0 = get_conf_word(d, where + PCI_HT_PRI_LCTR0);
+  if (rid >= 0x23)
+    fmt = "\t\tLink Control 0: CFlE%c CST%c CFE%c <LkFail%c Init%c EOC%c TXO%c <CRCErr=%x IsocEn%c LSEn%c ExtCTL%c 64b%c\n";
+  else
+    fmt = "\t\tLink Control 0: CFlE%c CST%c CFE%c <LkFail%c Init%c EOC%c TXO%c <CRCErr=%x\n";
+  printf(fmt,
+        FLAG(lctr0, PCI_HT_LCTR_CFLE),
+        FLAG(lctr0, PCI_HT_LCTR_CST),
+        FLAG(lctr0, PCI_HT_LCTR_CFE),
+        FLAG(lctr0, PCI_HT_LCTR_LKFAIL),
+        FLAG(lctr0, PCI_HT_LCTR_INIT),
+        FLAG(lctr0, PCI_HT_LCTR_EOC),
+        FLAG(lctr0, PCI_HT_LCTR_TXO),
+        (lctr0 & PCI_HT_LCTR_CRCERR) >> 8,
+        FLAG(lctr0, PCI_HT_LCTR_ISOCEN),
+        FLAG(lctr0, PCI_HT_LCTR_LSEN),
+        FLAG(lctr0, PCI_HT_LCTR_EXTCTL),
+        FLAG(lctr0, PCI_HT_LCTR_64B));
+  lcnf0 = get_conf_word(d, where + PCI_HT_PRI_LCNF0);
+  if (rid >= 0x23)
+    fmt = "\t\tLink Config 0: MLWI=%1$s DwFcIn%5$c MLWO=%2$s DwFcOut%6$c LWI=%3$s DwFcInEn%7$c LWO=%4$s DwFcOutEn%8$c\n";
+  else
+    fmt = "\t\tLink Config 0: MLWI=%s MLWO=%s LWI=%s LWO=%s\n";
+  printf(fmt,
+        ht_link_width(lcnf0 & PCI_HT_LCNF_MLWI),
+        ht_link_width((lcnf0 & PCI_HT_LCNF_MLWO) >> 4),
+        ht_link_width((lcnf0 & PCI_HT_LCNF_LWI) >> 8),
+        ht_link_width((lcnf0 & PCI_HT_LCNF_LWO) >> 12),
+        FLAG(lcnf0, PCI_HT_LCNF_DFI),
+        FLAG(lcnf0, PCI_HT_LCNF_DFO),
+        FLAG(lcnf0, PCI_HT_LCNF_DFIE),
+        FLAG(lcnf0, PCI_HT_LCNF_DFOE));
+  lctr1 = get_conf_word(d, where + PCI_HT_PRI_LCTR1);
+  if (rid >= 0x23)
+    fmt = "\t\tLink Control 1: CFlE%c CST%c CFE%c <LkFail%c Init%c EOC%c TXO%c <CRCErr=%x IsocEn%c LSEn%c ExtCTL%c 64b%c\n";
+  else
+    fmt = "\t\tLink Control 1: CFlE%c CST%c CFE%c <LkFail%c Init%c EOC%c TXO%c <CRCErr=%x\n";
+  printf(fmt,
+        FLAG(lctr1, PCI_HT_LCTR_CFLE),
+        FLAG(lctr1, PCI_HT_LCTR_CST),
+        FLAG(lctr1, PCI_HT_LCTR_CFE),
+        FLAG(lctr1, PCI_HT_LCTR_LKFAIL),
+        FLAG(lctr1, PCI_HT_LCTR_INIT),
+        FLAG(lctr1, PCI_HT_LCTR_EOC),
+        FLAG(lctr1, PCI_HT_LCTR_TXO),
+        (lctr1 & PCI_HT_LCTR_CRCERR) >> 8,
+        FLAG(lctr1, PCI_HT_LCTR_ISOCEN),
+        FLAG(lctr1, PCI_HT_LCTR_LSEN),
+        FLAG(lctr1, PCI_HT_LCTR_EXTCTL),
+        FLAG(lctr1, PCI_HT_LCTR_64B));
+  lcnf1 = get_conf_word(d, where + PCI_HT_PRI_LCNF1);
+  if (rid >= 0x23)
+    fmt = "\t\tLink Config 1: MLWI=%1$s DwFcIn%5$c MLWO=%2$s DwFcOut%6$c LWI=%3$s DwFcInEn%7$c LWO=%4$s DwFcOutEn%8$c\n";
+  else
+    fmt = "\t\tLink Config 1: MLWI=%s MLWO=%s LWI=%s LWO=%s\n";
+  printf(fmt,
+        ht_link_width(lcnf1 & PCI_HT_LCNF_MLWI),
+        ht_link_width((lcnf1 & PCI_HT_LCNF_MLWO) >> 4),
+        ht_link_width((lcnf1 & PCI_HT_LCNF_LWI) >> 8),
+        ht_link_width((lcnf1 & PCI_HT_LCNF_LWO) >> 12),
+        FLAG(lcnf1, PCI_HT_LCNF_DFI),
+        FLAG(lcnf1, PCI_HT_LCNF_DFO),
+        FLAG(lcnf1, PCI_HT_LCNF_DFIE),
+        FLAG(lcnf1, PCI_HT_LCNF_DFOE));
+  printf("\t\tRevision ID: %u.%02u\n",
+        (rid & PCI_HT_RID_MAJ) >> 5, (rid & PCI_HT_RID_MIN));
+  if (rid < 0x23)
+    return;
+  lfrer0 = get_conf_byte(d, where + PCI_HT_PRI_LFRER0);
+  printf("\t\tLink Frequency 0: %s\n", ht_link_freq(lfrer0 & PCI_HT_LFRER_FREQ));
+  printf("\t\tLink Error 0: <Prot%c <Ovfl%c <EOC%c CTLTm%c\n",
+        FLAG(lfrer0, PCI_HT_LFRER_PROT),
+        FLAG(lfrer0, PCI_HT_LFRER_OV),
+        FLAG(lfrer0, PCI_HT_LFRER_EOC),
+        FLAG(lfrer0, PCI_HT_LFRER_CTLT));
+  lfcap0 = get_conf_byte(d, where + PCI_HT_PRI_LFCAP0);
+  printf("\t\tLink Frequency Capability 0: 200MHz%c 300MHz%c 400MHz%c 500MHz%c 600MHz%c 800MHz%c 1.0GHz%c 1.2GHz%c 1.4GHz%c 1.6GHz%c Vend%c\n",
+        FLAG(lfcap0, PCI_HT_LFCAP_200),
+        FLAG(lfcap0, PCI_HT_LFCAP_300),
+        FLAG(lfcap0, PCI_HT_LFCAP_400),
+        FLAG(lfcap0, PCI_HT_LFCAP_500),
+        FLAG(lfcap0, PCI_HT_LFCAP_600),
+        FLAG(lfcap0, PCI_HT_LFCAP_800),
+        FLAG(lfcap0, PCI_HT_LFCAP_1000),
+        FLAG(lfcap0, PCI_HT_LFCAP_1200),
+        FLAG(lfcap0, PCI_HT_LFCAP_1400),
+        FLAG(lfcap0, PCI_HT_LFCAP_1600),
+        FLAG(lfcap0, PCI_HT_LFCAP_VEND));
+  ftr = get_conf_byte(d, where + PCI_HT_PRI_FTR);
+  printf("\t\tFeature Capability: IsocFC%c LDTSTOP%c CRCTM%c ECTLT%c 64bA%c UIDRD%c\n",
+        FLAG(ftr, PCI_HT_FTR_ISOCFC),
+        FLAG(ftr, PCI_HT_FTR_LDTSTOP),
+        FLAG(ftr, PCI_HT_FTR_CRCTM),
+        FLAG(ftr, PCI_HT_FTR_ECTLT),
+        FLAG(ftr, PCI_HT_FTR_64BA),
+        FLAG(ftr, PCI_HT_FTR_UIDRD));
+  lfrer1 = get_conf_byte(d, where + PCI_HT_PRI_LFRER1);
+  printf("\t\tLink Frequency 1: %s\n", ht_link_freq(lfrer1 & PCI_HT_LFRER_FREQ));
+  printf("\t\tLink Error 1: <Prot%c <Ovfl%c <EOC%c CTLTm%c\n",
+        FLAG(lfrer1, PCI_HT_LFRER_PROT),
+        FLAG(lfrer1, PCI_HT_LFRER_OV),
+        FLAG(lfrer1, PCI_HT_LFRER_EOC),
+        FLAG(lfrer1, PCI_HT_LFRER_CTLT));
+  lfcap1 = get_conf_byte(d, where + PCI_HT_PRI_LFCAP1);
+  printf("\t\tLink Frequency Capability 1: 200MHz%c 300MHz%c 400MHz%c 500MHz%c 600MHz%c 800MHz%c 1.0GHz%c 1.2GHz%c 1.4GHz%c 1.6GHz%c Vend%c\n",
+        FLAG(lfcap1, PCI_HT_LFCAP_200),
+        FLAG(lfcap1, PCI_HT_LFCAP_300),
+        FLAG(lfcap1, PCI_HT_LFCAP_400),
+        FLAG(lfcap1, PCI_HT_LFCAP_500),
+        FLAG(lfcap1, PCI_HT_LFCAP_600),
+        FLAG(lfcap1, PCI_HT_LFCAP_800),
+        FLAG(lfcap1, PCI_HT_LFCAP_1000),
+        FLAG(lfcap1, PCI_HT_LFCAP_1200),
+        FLAG(lfcap1, PCI_HT_LFCAP_1400),
+        FLAG(lfcap1, PCI_HT_LFCAP_1600),
+        FLAG(lfcap1, PCI_HT_LFCAP_VEND));
+  eh = get_conf_word(d, where + PCI_HT_PRI_EH);
+  printf("\t\tError Handling: PFlE%c OFlE%c PFE%c OFE%c EOCFE%c RFE%c CRCFE%c SERRFE%c CF%c RE%c PNFE%c ONFE%c EOCNFE%c RNFE%c CRCNFE%c SERRNFE%c\n",
+        FLAG(eh, PCI_HT_EH_PFLE),
+        FLAG(eh, PCI_HT_EH_OFLE),
+        FLAG(eh, PCI_HT_EH_PFE),
+        FLAG(eh, PCI_HT_EH_OFE),
+        FLAG(eh, PCI_HT_EH_EOCFE),
+        FLAG(eh, PCI_HT_EH_RFE),
+        FLAG(eh, PCI_HT_EH_CRCFE),
+        FLAG(eh, PCI_HT_EH_SERRFE),
+        FLAG(eh, PCI_HT_EH_CF),
+        FLAG(eh, PCI_HT_EH_RE),
+        FLAG(eh, PCI_HT_EH_PNFE),
+        FLAG(eh, PCI_HT_EH_ONFE),
+        FLAG(eh, PCI_HT_EH_EOCNFE),
+        FLAG(eh, PCI_HT_EH_RNFE),
+        FLAG(eh, PCI_HT_EH_CRCNFE),
+        FLAG(eh, PCI_HT_EH_SERRNFE));
+  mbu = get_conf_byte(d, where + PCI_HT_PRI_MBU);
+  mlu = get_conf_byte(d, where + PCI_HT_PRI_MLU);
+  printf("\t\tPrefetchable memory behind bridge Upper: %02x-%02x\n", mbu, mlu);
+  bn = get_conf_byte(d, where + PCI_HT_PRI_BN);
+  printf("\t\tBus Number: %02x\n", bn);
+}
+
+static void
+cap_ht_sec(struct device *d, int where, int cmd)
+{
+  u16 lctr, lcnf, ftr, eh;
+  u8 rid, lfrer, lfcap, mbu, mlu;
+  char *fmt;
+
+  printf("HyperTransport: Host or Secondary Interface\n");
+  if (verbose < 2)
+    return;
+
+  if (!config_fetch(d, where + PCI_HT_SEC_LCTR, PCI_HT_SEC_SIZEOF - PCI_HT_SEC_LCTR))
+    return;
+  rid = get_conf_byte(d, where + PCI_HT_SEC_RID);
+  if (rid < 0x23 && rid > 0x11)
+    printf("\t\t!!! Possibly incomplete decoding\n");
+
+  if (rid >= 0x23)
+    fmt = "\t\tCommand: WarmRst%c DblEnd%c DevNum=%u ChainSide%c HostHide%c Slave%c <EOCErr%c DUL%c\n";
+  else
+    fmt = "\t\tCommand: WarmRst%c DblEnd%c\n";
+  printf(fmt,
+        FLAG(cmd, PCI_HT_SEC_CMD_WR),
+        FLAG(cmd, PCI_HT_SEC_CMD_DE),
+        (cmd & PCI_HT_SEC_CMD_DN) >> 2,
+        FLAG(cmd, PCI_HT_SEC_CMD_CS),
+        FLAG(cmd, PCI_HT_SEC_CMD_HH),
+        FLAG(cmd, PCI_HT_SEC_CMD_AS),
+        FLAG(cmd, PCI_HT_SEC_CMD_HIECE),
+        FLAG(cmd, PCI_HT_SEC_CMD_DUL));
+  lctr = get_conf_word(d, where + PCI_HT_SEC_LCTR);
+  if (rid >= 0x23)
+    fmt = "\t\tLink Control: CFlE%c CST%c CFE%c <LkFail%c Init%c EOC%c TXO%c <CRCErr=%x IsocEn%c LSEn%c ExtCTL%c 64b%c\n";
+  else
+    fmt = "\t\tLink Control: CFlE%c CST%c CFE%c <LkFail%c Init%c EOC%c TXO%c <CRCErr=%x\n";
+  printf(fmt,
+        FLAG(lctr, PCI_HT_LCTR_CFLE),
+        FLAG(lctr, PCI_HT_LCTR_CST),
+        FLAG(lctr, PCI_HT_LCTR_CFE),
+        FLAG(lctr, PCI_HT_LCTR_LKFAIL),
+        FLAG(lctr, PCI_HT_LCTR_INIT),
+        FLAG(lctr, PCI_HT_LCTR_EOC),
+        FLAG(lctr, PCI_HT_LCTR_TXO),
+        (lctr & PCI_HT_LCTR_CRCERR) >> 8,
+        FLAG(lctr, PCI_HT_LCTR_ISOCEN),
+        FLAG(lctr, PCI_HT_LCTR_LSEN),
+        FLAG(lctr, PCI_HT_LCTR_EXTCTL),
+        FLAG(lctr, PCI_HT_LCTR_64B));
+  lcnf = get_conf_word(d, where + PCI_HT_SEC_LCNF);
+  if (rid >= 0x23)
+    fmt = "\t\tLink Config: MLWI=%1$s DwFcIn%5$c MLWO=%2$s DwFcOut%6$c LWI=%3$s DwFcInEn%7$c LWO=%4$s DwFcOutEn%8$c\n";
+  else
+    fmt = "\t\tLink Config: MLWI=%s MLWO=%s LWI=%s LWO=%s\n";
+  printf(fmt,
+        ht_link_width(lcnf & PCI_HT_LCNF_MLWI),
+        ht_link_width((lcnf & PCI_HT_LCNF_MLWO) >> 4),
+        ht_link_width((lcnf & PCI_HT_LCNF_LWI) >> 8),
+        ht_link_width((lcnf & PCI_HT_LCNF_LWO) >> 12),
+        FLAG(lcnf, PCI_HT_LCNF_DFI),
+        FLAG(lcnf, PCI_HT_LCNF_DFO),
+        FLAG(lcnf, PCI_HT_LCNF_DFIE),
+        FLAG(lcnf, PCI_HT_LCNF_DFOE));
+  printf("\t\tRevision ID: %u.%02u\n",
+        (rid & PCI_HT_RID_MAJ) >> 5, (rid & PCI_HT_RID_MIN));
+  if (rid < 0x23)
+    return;
+  lfrer = get_conf_byte(d, where + PCI_HT_SEC_LFRER);
+  printf("\t\tLink Frequency: %s\n", ht_link_freq(lfrer & PCI_HT_LFRER_FREQ));
+  printf("\t\tLink Error: <Prot%c <Ovfl%c <EOC%c CTLTm%c\n",
+        FLAG(lfrer, PCI_HT_LFRER_PROT),
+        FLAG(lfrer, PCI_HT_LFRER_OV),
+        FLAG(lfrer, PCI_HT_LFRER_EOC),
+        FLAG(lfrer, PCI_HT_LFRER_CTLT));
+  lfcap = get_conf_byte(d, where + PCI_HT_SEC_LFCAP);
+  printf("\t\tLink Frequency Capability: 200MHz%c 300MHz%c 400MHz%c 500MHz%c 600MHz%c 800MHz%c 1.0GHz%c 1.2GHz%c 1.4GHz%c 1.6GHz%c Vend%c\n",
+        FLAG(lfcap, PCI_HT_LFCAP_200),
+        FLAG(lfcap, PCI_HT_LFCAP_300),
+        FLAG(lfcap, PCI_HT_LFCAP_400),
+        FLAG(lfcap, PCI_HT_LFCAP_500),
+        FLAG(lfcap, PCI_HT_LFCAP_600),
+        FLAG(lfcap, PCI_HT_LFCAP_800),
+        FLAG(lfcap, PCI_HT_LFCAP_1000),
+        FLAG(lfcap, PCI_HT_LFCAP_1200),
+        FLAG(lfcap, PCI_HT_LFCAP_1400),
+        FLAG(lfcap, PCI_HT_LFCAP_1600),
+        FLAG(lfcap, PCI_HT_LFCAP_VEND));
+  ftr = get_conf_word(d, where + PCI_HT_SEC_FTR);
+  printf("\t\tFeature Capability: IsocFC%c LDTSTOP%c CRCTM%c ECTLT%c 64bA%c UIDRD%c ExtRS%c UCnfE%c\n",
+        FLAG(ftr, PCI_HT_FTR_ISOCFC),
+        FLAG(ftr, PCI_HT_FTR_LDTSTOP),
+        FLAG(ftr, PCI_HT_FTR_CRCTM),
+        FLAG(ftr, PCI_HT_FTR_ECTLT),
+        FLAG(ftr, PCI_HT_FTR_64BA),
+        FLAG(ftr, PCI_HT_FTR_UIDRD),
+        FLAG(ftr, PCI_HT_SEC_FTR_EXTRS),
+        FLAG(ftr, PCI_HT_SEC_FTR_UCNFE));
+  if (ftr & PCI_HT_SEC_FTR_EXTRS)
+    {
+      eh = get_conf_word(d, where + PCI_HT_SEC_EH);
+      printf("\t\tError Handling: PFlE%c OFlE%c PFE%c OFE%c EOCFE%c RFE%c CRCFE%c SERRFE%c CF%c RE%c PNFE%c ONFE%c EOCNFE%c RNFE%c CRCNFE%c SERRNFE%c\n",
+            FLAG(eh, PCI_HT_EH_PFLE),
+            FLAG(eh, PCI_HT_EH_OFLE),
+            FLAG(eh, PCI_HT_EH_PFE),
+            FLAG(eh, PCI_HT_EH_OFE),
+            FLAG(eh, PCI_HT_EH_EOCFE),
+            FLAG(eh, PCI_HT_EH_RFE),
+            FLAG(eh, PCI_HT_EH_CRCFE),
+            FLAG(eh, PCI_HT_EH_SERRFE),
+            FLAG(eh, PCI_HT_EH_CF),
+            FLAG(eh, PCI_HT_EH_RE),
+            FLAG(eh, PCI_HT_EH_PNFE),
+            FLAG(eh, PCI_HT_EH_ONFE),
+            FLAG(eh, PCI_HT_EH_EOCNFE),
+            FLAG(eh, PCI_HT_EH_RNFE),
+            FLAG(eh, PCI_HT_EH_CRCNFE),
+            FLAG(eh, PCI_HT_EH_SERRNFE));
+      mbu = get_conf_byte(d, where + PCI_HT_SEC_MBU);
+      mlu = get_conf_byte(d, where + PCI_HT_SEC_MLU);
+      printf("\t\tPrefetchable memory behind bridge Upper: %02x-%02x\n", mbu, mlu);
+    }
+}
+
+static void
+cap_ht(struct device *d, int where, int cmd)
+{
+  int type;
+
+  switch (cmd & PCI_HT_CMD_TYP_HI)
+    {
+    case PCI_HT_CMD_TYP_HI_PRI:
+      cap_ht_pri(d, where, cmd);
+      return;
+    case PCI_HT_CMD_TYP_HI_SEC:
+      cap_ht_sec(d, where, cmd);
+      return;
+    }
+
+  type = cmd & PCI_HT_CMD_TYP;
+  switch (type)
+    {
+    case PCI_HT_CMD_TYP_SW:
+      printf("HyperTransport: Switch\n");
+      break;
+    case PCI_HT_CMD_TYP_IDC:
+      printf("HyperTransport: Interrupt Discovery and Configuration\n");
+      break;
+    case PCI_HT_CMD_TYP_RID:
+      printf("HyperTransport: Revision ID: %u.%02u\n",
+            (cmd & PCI_HT_RID_MAJ) >> 5, (cmd & PCI_HT_RID_MIN));
+      break;
+    case PCI_HT_CMD_TYP_UIDC:
+      printf("HyperTransport: UnitID Clumping\n");
+      break;
+    case PCI_HT_CMD_TYP_ECSA:
+      printf("HyperTransport: Extended Configuration Space Access\n");
+      break;
+    case PCI_HT_CMD_TYP_AM:
+      printf("HyperTransport: Address Mapping\n");
+      break;
+    case PCI_HT_CMD_TYP_MSIM:
+      printf("HyperTransport: MSI Mapping Enable%c Fixed%c\n",
+            FLAG(cmd, PCI_HT_MSIM_CMD_EN),
+            FLAG(cmd, PCI_HT_MSIM_CMD_FIXD));
+      if (verbose >= 2 && !(cmd & PCI_HT_MSIM_CMD_FIXD))
+       {
+         u32 offl, offh;
+         if (!config_fetch(d, where + PCI_HT_MSIM_ADDR_LO, 8))
+           break;
+         offl = get_conf_long(d, where + PCI_HT_MSIM_ADDR_LO);
+         offh = get_conf_long(d, where + PCI_HT_MSIM_ADDR_HI);
+         printf("\t\tMapping Address Base: %016llx\n", ((unsigned long long)offh << 32) | (offl & ~0xfffff));
+       }
+      break;
+    case PCI_HT_CMD_TYP_DR:
+      printf("HyperTransport: DirectRoute\n");
+      break;
+    case PCI_HT_CMD_TYP_VCS:
+      printf("HyperTransport: VCSet\n");
+      break;
+    case PCI_HT_CMD_TYP_RM:
+      printf("HyperTransport: Retry Mode\n");
+      break;
+    case PCI_HT_CMD_TYP_X86:
+      printf("HyperTransport: X86 (reserved)\n");
+      break;
+    default:
+      printf("HyperTransport: #%02x\n", type >> 11);
+    }
+}
+
+static void
+cap_msi(struct device *d, int where, int cap)
+{
+  int is64;
+  u32 t;
+  u16 w;
+
+  printf("Message Signalled Interrupts: Mask%c 64bit%c Queue=%d/%d Enable%c\n",
+         FLAG(cap, PCI_MSI_FLAGS_MASK_BIT),
+        FLAG(cap, PCI_MSI_FLAGS_64BIT),
+        (cap & PCI_MSI_FLAGS_QSIZE) >> 4,
+        (cap & PCI_MSI_FLAGS_QMASK) >> 1,
+        FLAG(cap, PCI_MSI_FLAGS_ENABLE));
+  if (verbose < 2)
+    return;
+  is64 = cap & PCI_MSI_FLAGS_64BIT;
+  if (!config_fetch(d, where + PCI_MSI_ADDRESS_LO, (is64 ? PCI_MSI_DATA_64 : PCI_MSI_DATA_32) + 2 - PCI_MSI_ADDRESS_LO))
+    return;
+  printf("\t\tAddress: ");
+  if (is64)
+    {
+      t = get_conf_long(d, where + PCI_MSI_ADDRESS_HI);
+      w = get_conf_word(d, where + PCI_MSI_DATA_64);
+      printf("%08x", t);
+    }
+  else
+    w = get_conf_word(d, where + PCI_MSI_DATA_32);
+  t = get_conf_long(d, where + PCI_MSI_ADDRESS_LO);
+  printf("%08x  Data: %04x\n", t, w);
+  if (cap & PCI_MSI_FLAGS_MASK_BIT)
+    {
+      u32 mask, pending;
+
+      if (is64)
+       {
+         if (!config_fetch(d, where + PCI_MSI_MASK_BIT_64, 8))
+           return;
+         mask = get_conf_long(d, where + PCI_MSI_MASK_BIT_64);
+         pending = get_conf_long(d, where + PCI_MSI_PENDING_64);
+       }
+      else
+        {
+         if (!config_fetch(d, where + PCI_MSI_MASK_BIT_32, 8))
+           return;
+         mask = get_conf_long(d, where + PCI_MSI_MASK_BIT_32);
+         pending = get_conf_long(d, where + PCI_MSI_PENDING_32);
+       }
+      printf("\t\tMasking: %08x  Pending: %08x\n", mask, pending);
+    }
+}
+
+static float power_limit(int value, int scale)
+{
+  static const float scales[4] = { 1.0, 0.1, 0.01, 0.001 };
+  return value * scales[scale];
+}
+
+static const char *latency_l0s(int value)
+{
+  static const char *latencies[] = { "<64ns", "<128ns", "<256ns", "<512ns", "<1us", "<2us", "<4us", "unlimited" };
+  return latencies[value];
+}
+
+static const char *latency_l1(int value)
+{
+  static const char *latencies[] = { "<1us", "<2us", "<4us", "<8us", "<16us", "<32us", "<64us", "unlimited" };
+  return latencies[value];
+}
+
+static void cap_express_dev(struct device *d, int where, int type)
+{
+  u32 t;
+  u16 w;
+
+  t = get_conf_long(d, where + PCI_EXP_DEVCAP);
+  printf("\t\tDevCap:\tMaxPayload %d bytes, PhantFunc %d, Latency L0s %s, L1 %s\n",
+       128 << (t & PCI_EXP_DEVCAP_PAYLOAD),
+       (1 << ((t & PCI_EXP_DEVCAP_PHANTOM) >> 3)) - 1,
+       latency_l0s((t & PCI_EXP_DEVCAP_L0S) >> 6),
+       latency_l1((t & PCI_EXP_DEVCAP_L1) >> 9));
+  printf("\t\t\tExtTag%c", FLAG(t, PCI_EXP_DEVCAP_EXT_TAG));
+  if ((type == PCI_EXP_TYPE_ENDPOINT) || (type == PCI_EXP_TYPE_LEG_END) ||
+      (type == PCI_EXP_TYPE_UPSTREAM) || (type == PCI_EXP_TYPE_PCI_BRIDGE))
+    printf(" AttnBtn%c AttnInd%c PwrInd%c",
+       FLAG(t, PCI_EXP_DEVCAP_ATN_BUT),
+       FLAG(t, PCI_EXP_DEVCAP_ATN_IND), FLAG(t, PCI_EXP_DEVCAP_PWR_IND));
+  printf(" RBE%c FLReset%c",
+       FLAG(t, PCI_EXP_DEVCAP_RBE),
+       FLAG(t, PCI_EXP_DEVCAP_FLRESET));
+  if (type == PCI_EXP_TYPE_UPSTREAM)
+    printf("SlotPowerLimit %fW",
+       power_limit((t & PCI_EXP_DEVCAP_PWR_VAL) >> 18,
+                   (t & PCI_EXP_DEVCAP_PWR_SCL) >> 26));
+  printf("\n");
+
+  w = get_conf_word(d, where + PCI_EXP_DEVCTL);
+  printf("\t\tDevCtl:\tReport errors: Correctable%c Non-Fatal%c Fatal%c Unsupported%c\n",
+       FLAG(w, PCI_EXP_DEVCTL_CERE),
+       FLAG(w, PCI_EXP_DEVCTL_NFERE),
+       FLAG(w, PCI_EXP_DEVCTL_FERE),
+       FLAG(w, PCI_EXP_DEVCTL_URRE));
+  printf("\t\t\tRlxdOrd%c ExtTag%c PhantFunc%c AuxPwr%c NoSnoop%c",
+       FLAG(w, PCI_EXP_DEVCTL_RELAXED),
+       FLAG(w, PCI_EXP_DEVCTL_EXT_TAG),
+       FLAG(w, PCI_EXP_DEVCTL_PHANTOM),
+       FLAG(w, PCI_EXP_DEVCTL_AUX_PME),
+       FLAG(w, PCI_EXP_DEVCTL_NOSNOOP));
+  if (type == PCI_EXP_TYPE_PCI_BRIDGE || type == PCI_EXP_TYPE_PCIE_BRIDGE)
+    printf(" BrConfRtry%c", FLAG(w, PCI_EXP_DEVCTL_BCRE));
+  if (type == PCI_EXP_TYPE_ENDPOINT && (t & PCI_EXP_DEVCAP_FLRESET))
+    printf(" FLReset%c", FLAG(w, PCI_EXP_DEVCTL_FLRESET));
+  printf("\n\t\t\tMaxPayload %d bytes, MaxReadReq %d bytes\n",
+       128 << ((w & PCI_EXP_DEVCTL_PAYLOAD) >> 5),
+       128 << ((w & PCI_EXP_DEVCTL_READRQ) >> 12));
+
+  w = get_conf_word(d, where + PCI_EXP_DEVSTA);
+  printf("\t\tDevSta:\tCorrErr%c UncorrErr%c FatalErr%c UnsuppReq%c AuxPwr%c TransPend%c\n",
+       FLAG(w, PCI_EXP_DEVSTA_CED),
+       FLAG(w, PCI_EXP_DEVSTA_NFED),
+       FLAG(w, PCI_EXP_DEVSTA_FED),
+       FLAG(w, PCI_EXP_DEVSTA_URD),
+       FLAG(w, PCI_EXP_DEVSTA_AUXPD),
+       FLAG(w, PCI_EXP_DEVSTA_TRPND));
+
+  /* FIXME: Second set of control/status registers is not supported yet. */
+}
+
+static char *link_speed(int speed)
+{
+  switch (speed)
+    {
+      case 1:
+       return "2.5GT/s";
+      case 2:
+       return "5GT/s";
+      default:
+       return "unknown";
+    }
+}
+
+static char *aspm_support(int code)
+{
+  switch (code)
+    {
+      case 1:
+       return "L0s";
+      case 3:
+       return "L0s L1";
+      default:
+       return "unknown";
+    }
+}
+
+static const char *aspm_enabled(int code)
+{
+  static const char *desc[] = { "Disabled", "L0s Enabled", "L1 Enabled", "L0s L1 Enabled" };
+  return desc[code];
+}
+
+static void cap_express_link(struct device *d, int where, int type)
+{
+  u32 t;
+  u16 w;
+
+  t = get_conf_long(d, where + PCI_EXP_LNKCAP);
+  printf("\t\tLnkCap:\tPort #%d, Speed %s, Width x%d, ASPM %s, Latency L0 %s, L1 %s\n",
+       t >> 24,
+       link_speed(t & PCI_EXP_LNKCAP_SPEED), (t & PCI_EXP_LNKCAP_WIDTH) >> 4,
+       aspm_support((t & PCI_EXP_LNKCAP_ASPM) >> 10),
+       latency_l0s((t & PCI_EXP_LNKCAP_L0S) >> 12),
+       latency_l1((t & PCI_EXP_LNKCAP_L1) >> 15));
+  printf("\t\t\tClockPM%c Suprise%c LLActRep%c BwNot%c\n",
+       FLAG(t, PCI_EXP_LNKCAP_CLOCKPM),
+       FLAG(t, PCI_EXP_LNKCAP_SURPRISE),
+       FLAG(t, PCI_EXP_LNKCAP_DLLA),
+       FLAG(t, PCI_EXP_LNKCAP_LBNC));
+
+  w = get_conf_word(d, where + PCI_EXP_LNKCTL);
+  printf("\t\tLnkCtl:\tASPM %s;", aspm_enabled(w & PCI_EXP_LNKCTL_ASPM));
+  if ((type == PCI_EXP_TYPE_ROOT_PORT) || (type == PCI_EXP_TYPE_ENDPOINT) ||
+      (type == PCI_EXP_TYPE_LEG_END))
+    printf(" RCB %d bytes", w & PCI_EXP_LNKCTL_RCB ? 128 : 64);
+  printf(" Disabled%c Retrain%c CommClk%c\n\t\t\tExtSynch%c ClockPM%c AutWidDis%c BWInt%c AutBWInt%c\n",
+       FLAG(w, PCI_EXP_LNKCTL_DISABLE),
+       FLAG(w, PCI_EXP_LNKCTL_RETRAIN),
+       FLAG(w, PCI_EXP_LNKCTL_CLOCK),
+       FLAG(w, PCI_EXP_LNKCTL_XSYNCH),
+       FLAG(w, PCI_EXP_LNKCTL_CLOCKPM),
+       FLAG(w, PCI_EXP_LNKCTL_HWAUTWD),
+       FLAG(w, PCI_EXP_LNKCTL_BWMIE),
+       FLAG(w, PCI_EXP_LNKCTL_AUTBWIE));
+
+  w = get_conf_word(d, where + PCI_EXP_LNKSTA);
+  printf("\t\tLnkSta:\tSpeed %s, Width x%d, TrErr%c Train%c SlotClk%c DLActive%c BWMgmt%c ABWMgmt%c\n",
+       link_speed(w & PCI_EXP_LNKSTA_SPEED),
+       (w & PCI_EXP_LNKSTA_WIDTH) >> 4,
+       FLAG(w, PCI_EXP_LNKSTA_TR_ERR),
+       FLAG(w, PCI_EXP_LNKSTA_TRAIN),
+       FLAG(w, PCI_EXP_LNKSTA_SL_CLK),
+       FLAG(w, PCI_EXP_LNKSTA_DL_ACT),
+       FLAG(w, PCI_EXP_LNKSTA_BWMGMT),
+       FLAG(w, PCI_EXP_LNKSTA_AUTBW));
+}
+
+static const char *indicator(int code)
+{
+  static const char *names[] = { "Unknown", "On", "Blink", "Off" };
+  return names[code];
+}
+
+static void cap_express_slot(struct device *d, int where)
+{
+  u32 t;
+  u16 w;
+
+  t = get_conf_long(d, where + PCI_EXP_SLTCAP);
+  printf("\t\tSltCap:\tAttnBtn%c PwrCtrl%c MRL%c AttnInd%c PwrInd%c HotPlug%c Surpise%c\n",
+       FLAG(t, PCI_EXP_SLTCAP_ATNB),
+       FLAG(t, PCI_EXP_SLTCAP_PWRC),
+       FLAG(t, PCI_EXP_SLTCAP_MRL),
+       FLAG(t, PCI_EXP_SLTCAP_ATNI),
+       FLAG(t, PCI_EXP_SLTCAP_PWRI),
+       FLAG(t, PCI_EXP_SLTCAP_HPC),
+       FLAG(t, PCI_EXP_SLTCAP_HPS));
+  printf("\t\t\tSlot #%3x, PowerLimit %f; Interlock%c NoCompl%c\n",
+       t >> 19,
+       power_limit((t & PCI_EXP_SLTCAP_PWR_VAL) >> 7, (t & PCI_EXP_SLTCAP_PWR_SCL) >> 15),
+       FLAG(t, PCI_EXP_SLTCAP_INTERLOCK),
+       FLAG(t, PCI_EXP_SLTCAP_NOCMDCOMP));
+
+  w = get_conf_word(d, where + PCI_EXP_SLTCTL);
+  printf("\t\tSltCtl:\tEnable: AttnBtn%c PwrFlt%c MRL%c PresDet%c CmdCplt%c HPIrq%c LinkChg%c\n",
+       FLAG(w, PCI_EXP_SLTCTL_ATNB),
+       FLAG(w, PCI_EXP_SLTCTL_PWRF),
+       FLAG(w, PCI_EXP_SLTCTL_MRLS),
+       FLAG(w, PCI_EXP_SLTCTL_PRSD),
+       FLAG(w, PCI_EXP_SLTCTL_CMDC),
+       FLAG(w, PCI_EXP_SLTCTL_HPIE),
+       FLAG(w, PCI_EXP_SLTCTL_LLCHG));
+  printf("\t\t\tControl: AttnInd %s, PwrInd %s, Power%c Interlock%c\n",
+       indicator((w & PCI_EXP_SLTCTL_ATNI) >> 6),
+       indicator((w & PCI_EXP_SLTCTL_PWRI) >> 8),
+       FLAG(w, PCI_EXP_SLTCTL_PWRC),
+       FLAG(w, PCI_EXP_SLTCTL_INTERLOCK));
+
+  w = get_conf_word(d, where + PCI_EXP_SLTSTA);
+  printf("\t\tSltSta:\tStatus: AttnBtn%c PowerFlt%c MRL%c CmdCplt%c PresDet%c Interlock%c\n",
+       FLAG(w, PCI_EXP_SLTSTA_ATNB),
+       FLAG(w, PCI_EXP_SLTSTA_PWRF),
+       FLAG(w, PCI_EXP_SLTSTA_MRL_ST),
+       FLAG(w, PCI_EXP_SLTSTA_CMDC),
+       FLAG(w, PCI_EXP_SLTSTA_PRES),
+       FLAG(w, PCI_EXP_SLTSTA_INTERLOCK));
+  printf("\t\t\tChanged: MRL%c PresDet%c LinkState%c\n",
+       FLAG(w, PCI_EXP_SLTSTA_MRLS),
+       FLAG(w, PCI_EXP_SLTSTA_PRSD),
+       FLAG(w, PCI_EXP_SLTSTA_LLCHG));
+}
+
+static void cap_express_root(struct device *d, int where)
+{
+  u32 w = get_conf_word(d, where + PCI_EXP_RTCTL);
+  printf("\t\tRootCtl: ErrCorrectable%c ErrNon-Fatal%c ErrFatal%c PMEIntEna%c CRSVisible%c\n",
+       FLAG(w, PCI_EXP_RTCTL_SECEE),
+       FLAG(w, PCI_EXP_RTCTL_SENFEE),
+       FLAG(w, PCI_EXP_RTCTL_SEFEE),
+       FLAG(w, PCI_EXP_RTCTL_PMEIE),
+       FLAG(w, PCI_EXP_RTCTL_CRSVIS));
+
+  w = get_conf_word(d, where + PCI_EXP_RTCAP);
+  printf("\t\tRootCap: CRSVisible%c\n",
+       FLAG(w, PCI_EXP_RTCAP_CRSVIS));
+
+  w = get_conf_word(d, where + PCI_EXP_RTSTA);
+  printf("\t\tRootSta: PME ReqID %04x, PMEStatus%c PMEPending%c\n",
+       w & PCI_EXP_RTSTA_PME_REQID,
+       FLAG(w, PCI_EXP_RTSTA_PME_STATUS),
+       FLAG(w, PCI_EXP_RTSTA_PME_PENDING));
+}
+
+static void
+cap_express(struct device *d, int where, int cap)
+{
+  int type = (cap & PCI_EXP_FLAGS_TYPE) >> 4;
+  int size;
+  int slot = 0;
+
+  printf("Express ");
+  if (verbose >= 2)
+    printf("(v%d) ", cap & PCI_EXP_FLAGS_VERS);
+  switch (type)
+    {
+    case PCI_EXP_TYPE_ENDPOINT:
+      printf("Endpoint");
+      break;
+    case PCI_EXP_TYPE_LEG_END:
+      printf("Legacy Endpoint");
+      break;
+    case PCI_EXP_TYPE_ROOT_PORT:
+      slot = cap & PCI_EXP_FLAGS_SLOT;
+      printf("Root Port (Slot%c)", FLAG(cap, PCI_EXP_FLAGS_SLOT));
+      break;
+    case PCI_EXP_TYPE_UPSTREAM:
+      printf("Upstream Port");
+      break;
+    case PCI_EXP_TYPE_DOWNSTREAM:
+      slot = cap & PCI_EXP_FLAGS_SLOT;
+      printf("Downstream Port (Slot%c)", FLAG(cap, PCI_EXP_FLAGS_SLOT));
+      break;
+    case PCI_EXP_TYPE_PCI_BRIDGE:
+      printf("PCI/PCI-X Bridge");
+      break;
+    case PCI_EXP_TYPE_PCIE_BRIDGE:
+      printf("PCI/PCI-X to PCI-Express Bridge");
+      break;
+    case PCI_EXP_TYPE_ROOT_INT_EP:
+      printf("Root Complex Integrated Endpoint");
+      break;
+    case PCI_EXP_TYPE_ROOT_EC:
+      printf("Root Complex Event Collector");
+      break;
+    default:
+      printf("Unknown type %d", type);
+  }
+  printf(", MSI %02x\n", (cap & PCI_EXP_FLAGS_IRQ) >> 9);
+  if (verbose < 2)
+    return;
+
+  size = 16;
+  if (slot)
+    size = 24;
+  if (type == PCI_EXP_TYPE_ROOT_PORT)
+    size = 32;
+  if (!config_fetch(d, where + PCI_EXP_DEVCAP, size))
+    return;
+
+  cap_express_dev(d, where, type);
+  cap_express_link(d, where, type);
+  if (slot)
+    cap_express_slot(d, where);
+  if (type == PCI_EXP_TYPE_ROOT_PORT)
+    cap_express_root(d, where);
+}
+
+static void
+cap_msix(struct device *d, int where, int cap)
+{
+  u32 off;
+
+  printf("MSI-X: Enable%c Mask%c TabSize=%d\n",
+        FLAG(cap, PCI_MSIX_ENABLE),
+        FLAG(cap, PCI_MSIX_MASK),
+        (cap & PCI_MSIX_TABSIZE) + 1);
+  if (verbose < 2 || !config_fetch(d, where + PCI_MSIX_TABLE, 8))
+    return;
+
+  off = get_conf_long(d, where + PCI_MSIX_TABLE);
+  printf("\t\tVector table: BAR=%d offset=%08x\n",
+        off & PCI_MSIX_BIR, off & ~PCI_MSIX_BIR);
+  off = get_conf_long(d, where + PCI_MSIX_PBA);
+  printf("\t\tPBA: BAR=%d offset=%08x\n",
+        off & PCI_MSIX_BIR, off & ~PCI_MSIX_BIR);
+}
+
+static void
+cap_slotid(int cap)
+{
+  int esr = cap & 0xff;
+  int chs = cap >> 8;
+
+  printf("Slot ID: %d slots, First%c, chassis %02x\n",
+        esr & PCI_SID_ESR_NSLOTS,
+        FLAG(esr, PCI_SID_ESR_FIC),
+        chs);
+}
+
+static void
+cap_ssvid(struct device *d, int where)
+{
+  u16 subsys_v, subsys_d;
+  char ssnamebuf[256];
+
+  if (!config_fetch(d, where, 8))
+    return;
+  subsys_v = get_conf_word(d, where + PCI_SSVID_VENDOR);
+  subsys_d = get_conf_word(d, where + PCI_SSVID_DEVICE);
+  printf("Subsystem: %s\n",
+          pci_lookup_name(pacc, ssnamebuf, sizeof(ssnamebuf),
+                          PCI_LOOKUP_SUBSYSTEM | PCI_LOOKUP_VENDOR | PCI_LOOKUP_DEVICE,
+                          d->dev->vendor_id, d->dev->device_id, subsys_v, subsys_d));
+}
+
+static void
+cap_dsn(struct device *d, int where)
+{
+  u32 t1, t2;
+  if (!config_fetch(d, where + 4, 8))
+    return;
+  t1 = get_conf_long(d, where + 4);
+  t2 = get_conf_long(d, where + 8);
+  printf("Device Serial Number %02x-%02x-%02x-%02x-%02x-%02x-%02x-%02x\n",
+       t1 & 0xff, (t1 >> 8) & 0xff, (t1 >> 16) & 0xff, t1 >> 24,
+       t2 & 0xff, (t2 >> 8) & 0xff, (t2 >> 16) & 0xff, t2 >> 24);
+}
+
+static void
+cap_debug_port(int cap)
+{
+  int bar = cap >> 13;
+  int pos = cap & 0x1fff;
+  printf("Debug port: BAR=%d offset=%04x\n", bar, pos);
+}
+
+static void
+show_ext_caps(struct device *d)
+{
+  int where = 0x100;
+  char been_there[0x1000];
+  memset(been_there, 0, 0x1000);
+  do
+    {
+      u32 header;
+      int id;
+
+      if (!config_fetch(d, where, 4))
+       break;
+      header = get_conf_long(d, where);
+      if (!header)
+       break;
+      id = header & 0xffff;
+      printf("\tCapabilities: [%03x] ", where);
+      if (been_there[where]++)
+       {
+         printf("<chain looped>\n");
+         break;
+       }
+      switch (id)
+       {
+         case PCI_EXT_CAP_ID_AER:
+           printf("Advanced Error Reporting <?>\n");
+           break;
+         case PCI_EXT_CAP_ID_VC:
+           printf("Virtual Channel <?>\n");
+           break;
+         case PCI_EXT_CAP_ID_DSN:
+           cap_dsn(d, where);
+           break;
+         case PCI_EXT_CAP_ID_PB:
+           printf("Power Budgeting <?>\n");
+           break;
+         case PCI_EXT_CAP_ID_RCLINK:
+           printf("Root Complex Link <?>\n");
+           break;
+         case PCI_EXT_CAP_ID_RCILINK:
+           printf("Root Complex Internal Link <?>\n");
+           break;
+         case PCI_EXT_CAP_ID_RCECOLL:
+           printf("Root Complex Event Collector <?>\n");
+           break;
+         case PCI_EXT_CAP_ID_MFVC:
+           printf("Multi-Function Virtual Channel <?>\n");
+           break;
+         case PCI_EXT_CAP_ID_RBCB:
+           printf("Root Bridge Control Block <?>\n");
+           break;
+         case PCI_EXT_CAP_ID_VNDR:
+           printf("Vendor Specific Information <?>\n");
+           break;
+         case PCI_EXT_CAP_ID_ACS:
+           printf("Access Controls <?>\n");
+           break;
+         default:
+           printf("#%02x\n", id);
+           break;
+       }
+      where = header >> 20;
+    } while (where);
+}
+
+static void
+show_caps(struct device *d)
+{
+  int can_have_ext_caps = 0;
+
+  if (get_conf_word(d, PCI_STATUS) & PCI_STATUS_CAP_LIST)
+    {
+      int where = get_conf_byte(d, PCI_CAPABILITY_LIST) & ~3;
+      byte been_there[256];
+      memset(been_there, 0, 256);
+      while (where)
+       {
+         int id, next, cap;
+         printf("\tCapabilities: ");
+         if (!config_fetch(d, where, 4))
+           {
+             puts("<access denied>");
+             break;
+           }
+         id = get_conf_byte(d, where + PCI_CAP_LIST_ID);
+         next = get_conf_byte(d, where + PCI_CAP_LIST_NEXT) & ~3;
+         cap = get_conf_word(d, where + PCI_CAP_FLAGS);
+         printf("[%02x] ", where);
+         if (been_there[where]++)
+           {
+             printf("<chain looped>\n");
+             break;
+           }
+         if (id == 0xff)
+           {
+             printf("<chain broken>\n");
+             break;
+           }
+         switch (id)
+           {
+           case PCI_CAP_ID_PM:
+             cap_pm(d, where, cap);
+             break;
+           case PCI_CAP_ID_AGP:
+             cap_agp(d, where, cap);
+             break;
+           case PCI_CAP_ID_VPD:
+             printf("Vital Product Data <?>\n");
+             break;
+           case PCI_CAP_ID_SLOTID:
+             cap_slotid(cap);
+             break;
+           case PCI_CAP_ID_MSI:
+             cap_msi(d, where, cap);
+             break;
+           case PCI_CAP_ID_CHSWP:
+             printf("CompactPCI hot-swap <?>\n");
+             break;
+           case PCI_CAP_ID_PCIX:
+             cap_pcix(d, where);
+             can_have_ext_caps = 1;
+             break;
+           case PCI_CAP_ID_HT:
+             cap_ht(d, where, cap);
+             break;
+           case PCI_CAP_ID_VNDR:
+             printf("Vendor Specific Information <?>\n");
+             break;
+           case PCI_CAP_ID_DBG:
+             cap_debug_port(cap);
+             break;
+           case PCI_CAP_ID_CCRC:
+             printf("CompactPCI central resource control <?>\n");
+             break;
+           case PCI_CAP_ID_HOTPLUG:
+             printf("Hot-plug capable\n");
+             break;
+           case PCI_CAP_ID_SSVID:
+             cap_ssvid(d, where);
+             break;
+           case PCI_CAP_ID_AGP3:
+             printf("AGP3 <?>\n");
+             break;
+           case PCI_CAP_ID_SECURE:
+             printf("Secure device <?>\n");
+             break;
+           case PCI_CAP_ID_EXP:
+             cap_express(d, where, cap);
+             can_have_ext_caps = 1;
+             break;
+           case PCI_CAP_ID_MSIX:
+             cap_msix(d, where, cap);
+             break;
+           case PCI_CAP_ID_SATA:
+             printf("SATA HBA <?>\n");
+             break;
+           case PCI_CAP_ID_AF:
+             printf("PCIe advanced features <?>\n");
+             break;
+           default:
+             printf("#%02x [%04x]\n", id, cap);
+           }
+         where = next;
+       }
+    }
+  if (can_have_ext_caps)
+    show_ext_caps(d);
+}
+
+/*** Kernel drivers ***/
+
+#ifdef PCI_OS_LINUX
+
+#include <sys/utsname.h>
+
+struct pcimap_entry {
+  struct pcimap_entry *next;
+  unsigned int vendor, device;
+  unsigned int subvendor, subdevice;
+  unsigned int class, class_mask;
+  char module[1];
+};
+
+static struct pcimap_entry *pcimap_head;
+
+static void
+load_pcimap(void)
+{
+  static int tried_pcimap;
+  struct utsname uts;
+  char *name, line[1024];
+  FILE *f;
+
+  if (tried_pcimap)
+    return;
+  tried_pcimap = 1;
+
+  if (name = opt_pcimap)
+    {
+      f = fopen(name, "r");
+      if (!f)
+       die("Cannot open pcimap file %s: %m", name);
+    }
+  else
+    {
+      if (uname(&uts) < 0)
+       die("uname() failed: %m");
+      name = alloca(64 + strlen(uts.release));
+      sprintf(name, "/lib/modules/%s/modules.pcimap", uts.release);
+      f = fopen(name, "r");
+      if (!f)
+       return;
+    }
+
+  while (fgets(line, sizeof(line), f))
+    {
+      char *c = strchr(line, '\n');
+      struct pcimap_entry *e;
+
+      if (!c)
+       die("Unterminated or too long line in %s", name);
+      *c = 0;
+      if (!line[0] || line[0] == '#')
+       continue;
+
+      c = line;
+      while (*c && *c != ' ' && *c != '\t')
+       c++;
+      if (!*c)
+       continue;       /* FIXME: Emit warnings! */
+      *c++ = 0;
+
+      e = xmalloc(sizeof(*e) + strlen(line));
+      if (sscanf(c, "%i%i%i%i%i%i",
+                &e->vendor, &e->device,
+                &e->subvendor, &e->subdevice,
+                &e->class, &e->class_mask) != 6)
+       continue;
+      e->next = pcimap_head;
+      pcimap_head = e;
+      strcpy(e->module, line);
+    }
+  fclose(f);
+}
+
+static int
+match_pcimap(struct device *d, struct pcimap_entry *e)
+{
+  struct pci_dev *dev = d->dev;
+  unsigned int class = get_conf_long(d, PCI_REVISION_ID) >> 8;
+  word subv, subd;
+
+#define MATCH(x, y) ((y) > 0xffff || (x) == (y))
+  get_subid(d, &subv, &subd);
+  return
+    MATCH(dev->vendor_id, e->vendor) &&
+    MATCH(dev->device_id, e->device) &&
+    MATCH(subv, e->subvendor) &&
+    MATCH(subd, e->subdevice) &&
+    (class & e->class_mask) == e->class;
+#undef MATCH
+}
+
+#define DRIVER_BUF_SIZE 1024
+
+static char *
+find_driver(struct device *d, char *buf)
+{
+  struct pci_dev *dev = d->dev;
+  char name[1024], *drv, *base;
+  int n;
+
+  if (dev->access->method != PCI_ACCESS_SYS_BUS_PCI)
+    return NULL;
+
+  base = pci_get_param(dev->access, "sysfs.path");
+  if (!base || !base[0])
+    return NULL;
+
+  n = snprintf(name, sizeof(name), "%s/devices/%04x:%02x:%02x.%d/driver",
+              base, dev->domain, dev->bus, dev->dev, dev->func);
+  if (n < 0 || n >= (int)sizeof(name))
+    die("show_driver: sysfs device name too long, why?");
+
+  n = readlink(name, buf, DRIVER_BUF_SIZE);
+  if (n < 0)
+    return NULL;
+  if (n >= DRIVER_BUF_SIZE)
+    return "<name-too-long>";
+  buf[n] = 0;
+
+  if (drv = strrchr(buf, '/'))
+    return drv+1;
+  else
+    return buf;
+}
+
+static void
+show_kernel(struct device *d)
+{
+  char buf[DRIVER_BUF_SIZE];
+  char *driver;
+  struct pcimap_entry *e, *last = NULL;
+
+  if (driver = find_driver(d, buf))
+    printf("\tKernel driver in use: %s\n", driver);
+
+  load_pcimap();
+  for (e=pcimap_head; e; e=e->next)
+    if (match_pcimap(d, e) && (!last || strcmp(last->module, e->module)))
+      {
+       printf("%s %s", (last ? "," : "\tKernel modules:"), e->module);
+       last = e;
+      }
+  if (last)
+    putchar('\n');
+}
+
+static void
+show_kernel_machine(struct device *d)
+{
+  char buf[DRIVER_BUF_SIZE];
+  char *driver;
+  struct pcimap_entry *e, *last = NULL;
+
+  if (driver = find_driver(d, buf))
+    printf("Driver:\t%s\n", driver);
+
+  load_pcimap();
+  for (e=pcimap_head; e; e=e->next)
+    if (match_pcimap(d, e) && (!last || strcmp(last->module, e->module)))
+      {
+       printf("Module:\t%s\n", e->module);
+       last = e;
+      }
+}
+
+#else
+
+static void
+show_kernel(struct device *d UNUSED)
+{
+}
+
+static void
+show_kernel_machine(struct device *d UNUSED)
+{
+}
+
+#endif
+
+/*** Verbose output ***/
+
+static void
+show_size(pciaddr_t x)
+{
+  if (!x)
+    return;
+  printf(" [size=");
+  if (x < 1024)
+    printf("%d", (int) x);
+  else if (x < 1048576)
+    printf("%dK", (int)(x / 1024));
+  else if (x < 0x80000000)
+    printf("%dM", (int)(x / 1048576));
+  else
+    printf(PCIADDR_T_FMT, x);
+  putchar(']');
+}
+
+static void
+show_bases(struct device *d, int cnt)
+{
+  struct pci_dev *p = d->dev;
+  word cmd = get_conf_word(d, PCI_COMMAND);
+  int i;
+
+  for(i=0; i<cnt; i++)
+    {
+      pciaddr_t pos = p->base_addr[i];
+      pciaddr_t len = (p->known_fields & PCI_FILL_SIZES) ? p->size[i] : 0;
+      u32 flg = get_conf_long(d, PCI_BASE_ADDRESS_0 + 4*i);
+      if (flg == 0xffffffff)
+       flg = 0;
+      if (!pos && !flg && !len)
+       continue;
+      if (verbose > 1)
+       printf("\tRegion %d: ", i);
+      else
+       putchar('\t');
+      if (pos && !flg)                 /* Reported by the OS, but not by the device */
+       {
+         printf("[virtual] ");
+         flg = pos;
+       }
+      if (flg & PCI_BASE_ADDRESS_SPACE_IO)
+       {
+         pciaddr_t a = pos & PCI_BASE_ADDRESS_IO_MASK;
+         printf("I/O ports at ");
+         if (a)
+           printf(PCIADDR_PORT_FMT, a);
+         else if (flg & PCI_BASE_ADDRESS_IO_MASK)
+           printf("<ignored>");
+         else
+           printf("<unassigned>");
+         if (!(cmd & PCI_COMMAND_IO))
+           printf(" [disabled]");
+       }
+      else
+       {
+         int t = flg & PCI_BASE_ADDRESS_MEM_TYPE_MASK;
+         pciaddr_t a = pos & PCI_ADDR_MEM_MASK;
+         int done = 0;
+         u32 z = 0;
+
+         printf("Memory at ");
+         if (t == PCI_BASE_ADDRESS_MEM_TYPE_64)
+           {
+             if (i >= cnt - 1)
+               {
+                 printf("<invalid-64bit-slot>");
+                 done = 1;
+               }
+             else
+               {
+                 i++;
+                 z = get_conf_long(d, PCI_BASE_ADDRESS_0 + 4*i);
+                 if (opt_buscentric)
+                   {
+                     u32 y = a & 0xffffffff;
+                     if (a || z)
+                       printf("%08x%08x", z, y);
+                     else
+                       printf("<unassigned>");
+                     done = 1;
+                   }
+               }
+           }
+         if (!done)
+           {
+             if (a)
+               printf(PCIADDR_T_FMT, a);
+             else
+               printf(((flg & PCI_BASE_ADDRESS_MEM_MASK) || z) ? "<ignored>" : "<unassigned>");
+           }
+         printf(" (%s, %sprefetchable)",
+                (t == PCI_BASE_ADDRESS_MEM_TYPE_32) ? "32-bit" :
+                (t == PCI_BASE_ADDRESS_MEM_TYPE_64) ? "64-bit" :
+                (t == PCI_BASE_ADDRESS_MEM_TYPE_1M) ? "low-1M" : "type 3",
+                (flg & PCI_BASE_ADDRESS_MEM_PREFETCH) ? "" : "non-");
+         if (!(cmd & PCI_COMMAND_MEMORY))
+           printf(" [disabled]");
+       }
+      show_size(len);
+      putchar('\n');
+    }
+}
+
+static void
+show_rom(struct device *d, int reg)
+{
+  struct pci_dev *p = d->dev;
+  pciaddr_t rom = p->rom_base_addr;
+  pciaddr_t len = (p->known_fields & PCI_FILL_SIZES) ? p->rom_size : 0;
+  u32 flg = get_conf_long(d, reg);
+  word cmd = get_conf_word(d, PCI_COMMAND);
+
+  if (!rom && !flg && !len)
+    return;
+  putchar('\t');
+  if ((rom & PCI_ROM_ADDRESS_MASK) && !(flg & PCI_ROM_ADDRESS_MASK))
+    {
+      printf("[virtual] ");
+      flg = rom;
+    }
+  printf("Expansion ROM at ");
+  if (rom & PCI_ROM_ADDRESS_MASK)
+    printf(PCIADDR_T_FMT, rom & PCI_ROM_ADDRESS_MASK);
+  else if (flg & PCI_ROM_ADDRESS_MASK)
+    printf("<ignored>");
+  else
+    printf("<unassigned>");
+  if (!(flg & PCI_ROM_ADDRESS_ENABLE))
+    printf(" [disabled]");
+  else if (!(cmd & PCI_COMMAND_MEMORY))
+    printf(" [disabled by cmd]");
+  show_size(len);
+  putchar('\n');
+}
+
+static void
+show_htype0(struct device *d)
+{
+  show_bases(d, 6);
+  show_rom(d, PCI_ROM_ADDRESS);
+  show_caps(d);
+}
+
+static void
+show_htype1(struct device *d)
+{
+  u32 io_base = get_conf_byte(d, PCI_IO_BASE);
+  u32 io_limit = get_conf_byte(d, PCI_IO_LIMIT);
+  u32 io_type = io_base & PCI_IO_RANGE_TYPE_MASK;
+  u32 mem_base = get_conf_word(d, PCI_MEMORY_BASE);
+  u32 mem_limit = get_conf_word(d, PCI_MEMORY_LIMIT);
+  u32 mem_type = mem_base & PCI_MEMORY_RANGE_TYPE_MASK;
+  u32 pref_base = get_conf_word(d, PCI_PREF_MEMORY_BASE);
+  u32 pref_limit = get_conf_word(d, PCI_PREF_MEMORY_LIMIT);
+  u32 pref_type = pref_base & PCI_PREF_RANGE_TYPE_MASK;
+  word sec_stat = get_conf_word(d, PCI_SEC_STATUS);
+  word brc = get_conf_word(d, PCI_BRIDGE_CONTROL);
+  int verb = verbose > 2;
+
+  show_bases(d, 2);
+  printf("\tBus: primary=%02x, secondary=%02x, subordinate=%02x, sec-latency=%d\n",
+        get_conf_byte(d, PCI_PRIMARY_BUS),
+        get_conf_byte(d, PCI_SECONDARY_BUS),
+        get_conf_byte(d, PCI_SUBORDINATE_BUS),
+        get_conf_byte(d, PCI_SEC_LATENCY_TIMER));
+
+  if (io_type != (io_limit & PCI_IO_RANGE_TYPE_MASK) ||
+      (io_type != PCI_IO_RANGE_TYPE_16 && io_type != PCI_IO_RANGE_TYPE_32))
+    printf("\t!!! Unknown I/O range types %x/%x\n", io_base, io_limit);
+  else
+    {
+      io_base = (io_base & PCI_IO_RANGE_MASK) << 8;
+      io_limit = (io_limit & PCI_IO_RANGE_MASK) << 8;
+      if (io_type == PCI_IO_RANGE_TYPE_32)
+       {
+         io_base |= (get_conf_word(d, PCI_IO_BASE_UPPER16) << 16);
+         io_limit |= (get_conf_word(d, PCI_IO_LIMIT_UPPER16) << 16);
+       }
+      if (io_base <= io_limit || verb)
+       printf("\tI/O behind bridge: %08x-%08x\n", io_base, io_limit+0xfff);
+    }
+
+  if (mem_type != (mem_limit & PCI_MEMORY_RANGE_TYPE_MASK) ||
+      mem_type)
+    printf("\t!!! Unknown memory range types %x/%x\n", mem_base, mem_limit);
+  else
+    {
+      mem_base = (mem_base & PCI_MEMORY_RANGE_MASK) << 16;
+      mem_limit = (mem_limit & PCI_MEMORY_RANGE_MASK) << 16;
+      if (mem_base <= mem_limit || verb)
+       printf("\tMemory behind bridge: %08x-%08x\n", mem_base, mem_limit + 0xfffff);
+    }
+
+  if (pref_type != (pref_limit & PCI_PREF_RANGE_TYPE_MASK) ||
+      (pref_type != PCI_PREF_RANGE_TYPE_32 && pref_type != PCI_PREF_RANGE_TYPE_64))
+    printf("\t!!! Unknown prefetchable memory range types %x/%x\n", pref_base, pref_limit);
+  else
+    {
+      pref_base = (pref_base & PCI_PREF_RANGE_MASK) << 16;
+      pref_limit = (pref_limit & PCI_PREF_RANGE_MASK) << 16;
+      if (pref_base <= pref_limit || verb)
+       {
+         if (pref_type == PCI_PREF_RANGE_TYPE_32)
+           printf("\tPrefetchable memory behind bridge: %08x-%08x\n", pref_base, pref_limit + 0xfffff);
+         else
+           printf("\tPrefetchable memory behind bridge: %08x%08x-%08x%08x\n",
+                  get_conf_long(d, PCI_PREF_BASE_UPPER32),
+                  pref_base,
+                  get_conf_long(d, PCI_PREF_LIMIT_UPPER32),
+                  pref_limit + 0xfffff);
+       }
+    }
+
+  if (verbose > 1)
+    printf("\tSecondary status: 66MHz%c FastB2B%c ParErr%c DEVSEL=%s >TAbort%c <TAbort%c <MAbort%c <SERR%c <PERR%c\n",
+            FLAG(sec_stat, PCI_STATUS_66MHZ),
+            FLAG(sec_stat, PCI_STATUS_FAST_BACK),
+            FLAG(sec_stat, PCI_STATUS_PARITY),
+            ((sec_stat & PCI_STATUS_DEVSEL_MASK) == PCI_STATUS_DEVSEL_SLOW) ? "slow" :
+            ((sec_stat & PCI_STATUS_DEVSEL_MASK) == PCI_STATUS_DEVSEL_MEDIUM) ? "medium" :
+            ((sec_stat & PCI_STATUS_DEVSEL_MASK) == PCI_STATUS_DEVSEL_FAST) ? "fast" : "??",
+            FLAG(sec_stat, PCI_STATUS_SIG_TARGET_ABORT),
+            FLAG(sec_stat, PCI_STATUS_REC_TARGET_ABORT),
+            FLAG(sec_stat, PCI_STATUS_REC_MASTER_ABORT),
+            FLAG(sec_stat, PCI_STATUS_SIG_SYSTEM_ERROR),
+            FLAG(sec_stat, PCI_STATUS_DETECTED_PARITY));
+
+  show_rom(d, PCI_ROM_ADDRESS1);
+
+  if (verbose > 1)
+    {
+      printf("\tBridgeCtl: Parity%c SERR%c NoISA%c VGA%c MAbort%c >Reset%c FastB2B%c\n",
+       FLAG(brc, PCI_BRIDGE_CTL_PARITY),
+       FLAG(brc, PCI_BRIDGE_CTL_SERR),
+       FLAG(brc, PCI_BRIDGE_CTL_NO_ISA),
+       FLAG(brc, PCI_BRIDGE_CTL_VGA),
+       FLAG(brc, PCI_BRIDGE_CTL_MASTER_ABORT),
+       FLAG(brc, PCI_BRIDGE_CTL_BUS_RESET),
+       FLAG(brc, PCI_BRIDGE_CTL_FAST_BACK));
+      printf("\t\tPriDiscTmr%c SecDiscTmr%c DiscTmrStat%c DiscTmrSERREn%c\n",
+       FLAG(brc, PCI_BRIDGE_CTL_PRI_DISCARD_TIMER),
+       FLAG(brc, PCI_BRIDGE_CTL_SEC_DISCARD_TIMER),
+       FLAG(brc, PCI_BRIDGE_CTL_DISCARD_TIMER_STATUS),
+       FLAG(brc, PCI_BRIDGE_CTL_DISCARD_TIMER_SERR_EN));
+    }
+
+  show_caps(d);
+}
+
+static void
+show_htype2(struct device *d)
+{
+  int i;
+  word cmd = get_conf_word(d, PCI_COMMAND);
+  word brc = get_conf_word(d, PCI_CB_BRIDGE_CONTROL);
+  word exca;
+  int verb = verbose > 2;
+
+  show_bases(d, 1);
+  printf("\tBus: primary=%02x, secondary=%02x, subordinate=%02x, sec-latency=%d\n",
+        get_conf_byte(d, PCI_CB_PRIMARY_BUS),
+        get_conf_byte(d, PCI_CB_CARD_BUS),
+        get_conf_byte(d, PCI_CB_SUBORDINATE_BUS),
+        get_conf_byte(d, PCI_CB_LATENCY_TIMER));
+  for(i=0; i<2; i++)
+    {
+      int p = 8*i;
+      u32 base = get_conf_long(d, PCI_CB_MEMORY_BASE_0 + p);
+      u32 limit = get_conf_long(d, PCI_CB_MEMORY_LIMIT_0 + p);
+      if (limit > base || verb)
+       printf("\tMemory window %d: %08x-%08x%s%s\n", i, base, limit,
+              (cmd & PCI_COMMAND_MEMORY) ? "" : " [disabled]",
+              (brc & (PCI_CB_BRIDGE_CTL_PREFETCH_MEM0 << i)) ? " (prefetchable)" : "");
+    }
+  for(i=0; i<2; i++)
+    {
+      int p = 8*i;
+      u32 base = get_conf_long(d, PCI_CB_IO_BASE_0 + p);
+      u32 limit = get_conf_long(d, PCI_CB_IO_LIMIT_0 + p);
+      if (!(base & PCI_IO_RANGE_TYPE_32))
+       {
+         base &= 0xffff;
+         limit &= 0xffff;
+       }
+      base &= PCI_CB_IO_RANGE_MASK;
+      limit = (limit & PCI_CB_IO_RANGE_MASK) + 3;
+      if (base <= limit || verb)
+       printf("\tI/O window %d: %08x-%08x%s\n", i, base, limit,
+              (cmd & PCI_COMMAND_IO) ? "" : " [disabled]");
+    }
+
+  if (get_conf_word(d, PCI_CB_SEC_STATUS) & PCI_STATUS_SIG_SYSTEM_ERROR)
+    printf("\tSecondary status: SERR\n");
+  if (verbose > 1)
+    printf("\tBridgeCtl: Parity%c SERR%c ISA%c VGA%c MAbort%c >Reset%c 16bInt%c PostWrite%c\n",
+          FLAG(brc, PCI_CB_BRIDGE_CTL_PARITY),
+          FLAG(brc, PCI_CB_BRIDGE_CTL_SERR),
+          FLAG(brc, PCI_CB_BRIDGE_CTL_ISA),
+          FLAG(brc, PCI_CB_BRIDGE_CTL_VGA),
+          FLAG(brc, PCI_CB_BRIDGE_CTL_MASTER_ABORT),
+          FLAG(brc, PCI_CB_BRIDGE_CTL_CB_RESET),
+          FLAG(brc, PCI_CB_BRIDGE_CTL_16BIT_INT),
+          FLAG(brc, PCI_CB_BRIDGE_CTL_POST_WRITES));
+
+  if (d->config_cached < 128)
+    {
+      printf("\t<access denied to the rest>\n");
+      return;
+    }
+
+  exca = get_conf_word(d, PCI_CB_LEGACY_MODE_BASE);
+  if (exca)
+    printf("\t16-bit legacy interface ports at %04x\n", exca);
+}
+
+static void
+show_verbose(struct device *d)
+{
+  struct pci_dev *p = d->dev;
+  word status = get_conf_word(d, PCI_STATUS);
+  word cmd = get_conf_word(d, PCI_COMMAND);
+  word class = p->device_class;
+  byte bist = get_conf_byte(d, PCI_BIST);
+  byte htype = get_conf_byte(d, PCI_HEADER_TYPE) & 0x7f;
+  byte latency = get_conf_byte(d, PCI_LATENCY_TIMER);
+  byte cache_line = get_conf_byte(d, PCI_CACHE_LINE_SIZE);
+  byte max_lat, min_gnt;
+  byte int_pin = get_conf_byte(d, PCI_INTERRUPT_PIN);
+  unsigned int irq = p->irq;
+  word subsys_v, subsys_d;
+  char ssnamebuf[256];
+
+  show_terse(d);
+
+  switch (htype)
+    {
+    case PCI_HEADER_TYPE_NORMAL:
+      if (class == PCI_CLASS_BRIDGE_PCI)
+       printf("\t!!! Invalid class %04x for header type %02x\n", class, htype);
+      max_lat = get_conf_byte(d, PCI_MAX_LAT);
+      min_gnt = get_conf_byte(d, PCI_MIN_GNT);
+      break;
+    case PCI_HEADER_TYPE_BRIDGE:
+      if ((class >> 8) != PCI_BASE_CLASS_BRIDGE)
+       printf("\t!!! Invalid class %04x for header type %02x\n", class, htype);
+      irq = int_pin = min_gnt = max_lat = 0;
+      break;
+    case PCI_HEADER_TYPE_CARDBUS:
+      if ((class >> 8) != PCI_BASE_CLASS_BRIDGE)
+       printf("\t!!! Invalid class %04x for header type %02x\n", class, htype);
+      min_gnt = max_lat = 0;
+      break;
+    default:
+      printf("\t!!! Unknown header type %02x\n", htype);
+      return;
+    }
+
+  get_subid(d, &subsys_v, &subsys_d);
+  if (subsys_v && subsys_v != 0xffff)
+    printf("\tSubsystem: %s\n",
+          pci_lookup_name(pacc, ssnamebuf, sizeof(ssnamebuf),
+                          PCI_LOOKUP_SUBSYSTEM | PCI_LOOKUP_VENDOR | PCI_LOOKUP_DEVICE,
+                          p->vendor_id, p->device_id, subsys_v, subsys_d));
+
+  if (verbose > 1)
+    {
+      printf("\tControl: I/O%c Mem%c BusMaster%c SpecCycle%c MemWINV%c VGASnoop%c ParErr%c Stepping%c SERR%c FastB2B%c DisINTx%c\n",
+            FLAG(cmd, PCI_COMMAND_IO),
+            FLAG(cmd, PCI_COMMAND_MEMORY),
+            FLAG(cmd, PCI_COMMAND_MASTER),
+            FLAG(cmd, PCI_COMMAND_SPECIAL),
+            FLAG(cmd, PCI_COMMAND_INVALIDATE),
+            FLAG(cmd, PCI_COMMAND_VGA_PALETTE),
+            FLAG(cmd, PCI_COMMAND_PARITY),
+            FLAG(cmd, PCI_COMMAND_WAIT),
+            FLAG(cmd, PCI_COMMAND_SERR),
+            FLAG(cmd, PCI_COMMAND_FAST_BACK),
+            FLAG(cmd, PCI_COMMAND_DISABLE_INTx));
+      printf("\tStatus: Cap%c 66MHz%c UDF%c FastB2B%c ParErr%c DEVSEL=%s >TAbort%c <TAbort%c <MAbort%c >SERR%c <PERR%c INTx%c\n",
+            FLAG(status, PCI_STATUS_CAP_LIST),
+            FLAG(status, PCI_STATUS_66MHZ),
+            FLAG(status, PCI_STATUS_UDF),
+            FLAG(status, PCI_STATUS_FAST_BACK),
+            FLAG(status, PCI_STATUS_PARITY),
+            ((status & PCI_STATUS_DEVSEL_MASK) == PCI_STATUS_DEVSEL_SLOW) ? "slow" :
+            ((status & PCI_STATUS_DEVSEL_MASK) == PCI_STATUS_DEVSEL_MEDIUM) ? "medium" :
+            ((status & PCI_STATUS_DEVSEL_MASK) == PCI_STATUS_DEVSEL_FAST) ? "fast" : "??",
+            FLAG(status, PCI_STATUS_SIG_TARGET_ABORT),
+            FLAG(status, PCI_STATUS_REC_TARGET_ABORT),
+            FLAG(status, PCI_STATUS_REC_MASTER_ABORT),
+            FLAG(status, PCI_STATUS_SIG_SYSTEM_ERROR),
+            FLAG(status, PCI_STATUS_DETECTED_PARITY),
+            FLAG(status, PCI_STATUS_INTx));
+      if (cmd & PCI_COMMAND_MASTER)
+       {
+         printf("\tLatency: %d", latency);
+         if (min_gnt || max_lat)
+           {
+             printf(" (");
+             if (min_gnt)
+               printf("%dns min", min_gnt*250);
+             if (min_gnt && max_lat)
+               printf(", ");
+             if (max_lat)
+               printf("%dns max", max_lat*250);
+             putchar(')');
+           }
+         if (cache_line)
+           printf(", Cache Line Size: %d bytes", cache_line * 4);
+         putchar('\n');
+       }
+      if (int_pin || irq)
+       printf("\tInterrupt: pin %c routed to IRQ " PCIIRQ_FMT "\n",
+              (int_pin ? 'A' + int_pin - 1 : '?'), irq);
+    }
+  else
+    {
+      printf("\tFlags: ");
+      if (cmd & PCI_COMMAND_MASTER)
+       printf("bus master, ");
+      if (cmd & PCI_COMMAND_VGA_PALETTE)
+       printf("VGA palette snoop, ");
+      if (cmd & PCI_COMMAND_WAIT)
+       printf("stepping, ");
+      if (cmd & PCI_COMMAND_FAST_BACK)
+       printf("fast Back2Back, ");
+      if (status & PCI_STATUS_66MHZ)
+       printf("66MHz, ");
+      if (status & PCI_STATUS_UDF)
+       printf("user-definable features, ");
+      printf("%s devsel",
+            ((status & PCI_STATUS_DEVSEL_MASK) == PCI_STATUS_DEVSEL_SLOW) ? "slow" :
+            ((status & PCI_STATUS_DEVSEL_MASK) == PCI_STATUS_DEVSEL_MEDIUM) ? "medium" :
+            ((status & PCI_STATUS_DEVSEL_MASK) == PCI_STATUS_DEVSEL_FAST) ? "fast" : "??");
+      if (cmd & PCI_COMMAND_MASTER)
+       printf(", latency %d", latency);
+      if (irq)
+       printf(", IRQ " PCIIRQ_FMT, irq);
+      putchar('\n');
+    }
+
+  if (bist & PCI_BIST_CAPABLE)
+    {
+      if (bist & PCI_BIST_START)
+       printf("\tBIST is running\n");
+      else
+       printf("\tBIST result: %02x\n", bist & PCI_BIST_CODE_MASK);
+    }
+
+  switch (htype)
+    {
+    case PCI_HEADER_TYPE_NORMAL:
+      show_htype0(d);
+      break;
+    case PCI_HEADER_TYPE_BRIDGE:
+      show_htype1(d);
+      break;
+    case PCI_HEADER_TYPE_CARDBUS:
+      show_htype2(d);
+      break;
+    }
+}
+
+/*** Machine-readable dumps ***/
+
+static void
+show_hex_dump(struct device *d)
+{
+  unsigned int i, cnt;
+
+  cnt = d->config_cached;
+  if (opt_hex >= 3 && config_fetch(d, cnt, 256-cnt))
+    {
+      cnt = 256;
+      if (opt_hex >= 4 && config_fetch(d, 256, 4096-256))
+       cnt = 4096;
+    }
+
+  for(i=0; i<cnt; i++)
+    {
+      if (! (i & 15))
+       printf("%02x:", i);
+      printf(" %02x", get_conf_byte(d, i));
+      if ((i & 15) == 15)
+       putchar('\n');
+    }
+}
+
+static void
+print_shell_escaped(char *c)
+{
+  printf(" \"");
+  while (*c)
+    {
+      if (*c == '"' || *c == '\\')
+       putchar('\\');
+      putchar(*c++);
+    }
+  putchar('"');
+}
+
+static void
+show_machine(struct device *d)
+{
+  struct pci_dev *p = d->dev;
+  int c;
+  word sv_id, sd_id;
+  char classbuf[128], vendbuf[128], devbuf[128], svbuf[128], sdbuf[128];
+
+  get_subid(d, &sv_id, &sd_id);
+
+  if (verbose)
+    {
+      printf((opt_machine >= 2) ? "Slot:\t" : "Device:\t");
+      show_slot_name(d);
+      putchar('\n');
+      printf("Class:\t%s\n",
+            pci_lookup_name(pacc, classbuf, sizeof(classbuf), PCI_LOOKUP_CLASS, p->device_class));
+      printf("Vendor:\t%s\n",
+            pci_lookup_name(pacc, vendbuf, sizeof(vendbuf), PCI_LOOKUP_VENDOR, p->vendor_id, p->device_id));
+      printf("Device:\t%s\n",
+            pci_lookup_name(pacc, devbuf, sizeof(devbuf), PCI_LOOKUP_DEVICE, p->vendor_id, p->device_id));
+      if (sv_id && sv_id != 0xffff)
+       {
+         printf("SVendor:\t%s\n",
+                pci_lookup_name(pacc, svbuf, sizeof(svbuf), PCI_LOOKUP_SUBSYSTEM | PCI_LOOKUP_VENDOR, sv_id));
+         printf("SDevice:\t%s\n",
+                pci_lookup_name(pacc, sdbuf, sizeof(sdbuf), PCI_LOOKUP_SUBSYSTEM | PCI_LOOKUP_DEVICE, p->vendor_id, p->device_id, sv_id, sd_id));
+       }
+      if (c = get_conf_byte(d, PCI_REVISION_ID))
+       printf("Rev:\t%02x\n", c);
+      if (c = get_conf_byte(d, PCI_CLASS_PROG))
+       printf("ProgIf:\t%02x\n", c);
+      if (opt_kernel)
+       show_kernel_machine(d);
+    }
+  else
+    {
+      show_slot_name(d);
+      print_shell_escaped(pci_lookup_name(pacc, classbuf, sizeof(classbuf), PCI_LOOKUP_CLASS, p->device_class));
+      print_shell_escaped(pci_lookup_name(pacc, vendbuf, sizeof(vendbuf), PCI_LOOKUP_VENDOR, p->vendor_id, p->device_id));
+      print_shell_escaped(pci_lookup_name(pacc, devbuf, sizeof(devbuf), PCI_LOOKUP_DEVICE, p->vendor_id, p->device_id));
+      if (c = get_conf_byte(d, PCI_REVISION_ID))
+       printf(" -r%02x", c);
+      if (c = get_conf_byte(d, PCI_CLASS_PROG))
+       printf(" -p%02x", c);
+      if (sv_id && sv_id != 0xffff)
+       {
+         print_shell_escaped(pci_lookup_name(pacc, svbuf, sizeof(svbuf), PCI_LOOKUP_SUBSYSTEM | PCI_LOOKUP_VENDOR, sv_id));
+         print_shell_escaped(pci_lookup_name(pacc, sdbuf, sizeof(sdbuf), PCI_LOOKUP_SUBSYSTEM | PCI_LOOKUP_DEVICE, p->vendor_id, p->device_id, sv_id, sd_id));
+       }
+      else
+       printf(" \"\" \"\"");
+      putchar('\n');
+    }
+}
+
+/*** Main show function ***/
+
+static void
+show_device(struct device *d)
+{
+  if (opt_machine)
+    show_machine(d);
+  else
+    {
+      if (verbose)
+       show_verbose(d);
+      else
+       show_terse(d);
+      if (opt_kernel || verbose)
+       show_kernel(d);
+    }
+  if (opt_hex)
+    show_hex_dump(d);
+  if (verbose || opt_hex)
+    putchar('\n');
+}
+
+static void
+show(void)
+{
+  struct device *d;
+
+  for(d=first_dev; d; d=d->next)
+    show_device(d);
+}
+
+/*** Tree output ***/
+
+struct bridge {
+  struct bridge *chain;                        /* Single-linked list of bridges */
+  struct bridge *next, *child;         /* Tree of bridges */
+  struct bus *first_bus;               /* List of buses connected to this bridge */
+  unsigned int domain;
+  unsigned int primary, secondary, subordinate;        /* Bus numbers */
+  struct device *br_dev;
+};
+
+struct bus {
+  unsigned int domain;
+  unsigned int number;
+  struct bus *sibling;
+  struct device *first_dev, **last_dev;
+};
+
+static struct bridge host_bridge = { NULL, NULL, NULL, NULL, 0, ~0, 0, ~0, NULL };
+
+static struct bus *
+find_bus(struct bridge *b, unsigned int domain, unsigned int n)
+{
+  struct bus *bus;
+
+  for(bus=b->first_bus; bus; bus=bus->sibling)
+    if (bus->domain == domain && bus->number == n)
+      break;
+  return bus;
+}
+
+static struct bus *
+new_bus(struct bridge *b, unsigned int domain, unsigned int n)
+{
+  struct bus *bus = xmalloc(sizeof(struct bus));
+  bus->domain = domain;
+  bus->number = n;
+  bus->sibling = b->first_bus;
+  bus->first_dev = NULL;
+  bus->last_dev = &bus->first_dev;
+  b->first_bus = bus;
+  return bus;
+}
+
+static void
+insert_dev(struct device *d, struct bridge *b)
+{
+  struct pci_dev *p = d->dev;
+  struct bus *bus;
+
+  if (! (bus = find_bus(b, p->domain, p->bus)))
+    {
+      struct bridge *c;
+      for(c=b->child; c; c=c->next)
+       if (c->domain == p->domain && c->secondary <= p->bus && p->bus <= c->subordinate)
+          {
+            insert_dev(d, c);
+            return;
+          }
+      bus = new_bus(b, p->domain, p->bus);
+    }
+  /* Simple insertion at the end _does_ guarantee the correct order as the
+   * original device list was sorted by (domain, bus, devfn) lexicographically
+   * and all devices on the new list have the same bus number.
+   */
+  *bus->last_dev = d;
+  bus->last_dev = &d->next;
+  d->next = NULL;
+}
+
+static void
+grow_tree(void)
+{
+  struct device *d, *d2;
+  struct bridge **last_br, *b;
+
+  /* Build list of bridges */
+
+  last_br = &host_bridge.chain;
+  for(d=first_dev; d; d=d->next)
+    {
+      word class = d->dev->device_class;
+      byte ht = get_conf_byte(d, PCI_HEADER_TYPE) & 0x7f;
+      if (class == PCI_CLASS_BRIDGE_PCI &&
+         (ht == PCI_HEADER_TYPE_BRIDGE || ht == PCI_HEADER_TYPE_CARDBUS))
+       {
+         b = xmalloc(sizeof(struct bridge));
+         b->domain = d->dev->domain;
+         if (ht == PCI_HEADER_TYPE_BRIDGE)
+           {
+             b->primary = get_conf_byte(d, PCI_PRIMARY_BUS);
+             b->secondary = get_conf_byte(d, PCI_SECONDARY_BUS);
+             b->subordinate = get_conf_byte(d, PCI_SUBORDINATE_BUS);
+           }
+         else
+           {
+             b->primary = get_conf_byte(d, PCI_CB_PRIMARY_BUS);
+             b->secondary = get_conf_byte(d, PCI_CB_CARD_BUS);
+             b->subordinate = get_conf_byte(d, PCI_CB_SUBORDINATE_BUS);
+           }
+         *last_br = b;
+         last_br = &b->chain;
+         b->next = b->child = NULL;
+         b->first_bus = NULL;
+         b->br_dev = d;
+       }
+    }
+  *last_br = NULL;
+
+  /* Create a bridge tree */
+
+  for(b=&host_bridge; b; b=b->chain)
+    {
+      struct bridge *c, *best;
+      best = NULL;
+      for(c=&host_bridge; c; c=c->chain)
+       if (c != b && (c == &host_bridge || b->domain == c->domain) &&
+           b->primary >= c->secondary && b->primary <= c->subordinate &&
+           (!best || best->subordinate - best->primary > c->subordinate - c->primary))
+         best = c;
+      if (best)
+       {
+         b->next = best->child;
+         best->child = b;
+       }
+    }
+
+  /* Insert secondary bus for each bridge */
+
+  for(b=&host_bridge; b; b=b->chain)
+    if (!find_bus(b, b->domain, b->secondary))
+      new_bus(b, b->domain, b->secondary);
+
+  /* Create bus structs and link devices */
+
+  for(d=first_dev; d;)
+    {
+      d2 = d->next;
+      insert_dev(d, &host_bridge);
+      d = d2;
+    }
+}
+
+static void
+print_it(char *line, char *p)
+{
+  *p++ = '\n';
+  *p = 0;
+  fputs(line, stdout);
+  for(p=line; *p; p++)
+    if (*p == '+' || *p == '|')
+      *p = '|';
+    else
+      *p = ' ';
+}
+
+static void show_tree_bridge(struct bridge *, char *, char *);
+
+static void
+show_tree_dev(struct device *d, char *line, char *p)
+{
+  struct pci_dev *q = d->dev;
+  struct bridge *b;
+  char namebuf[256];
+
+  p += sprintf(p, "%02x.%x", q->dev, q->func);
+  for(b=&host_bridge; b; b=b->chain)
+    if (b->br_dev == d)
+      {
+       if (b->secondary == b->subordinate)
+         p += sprintf(p, "-[%04x:%02x]-", b->domain, b->secondary);
+       else
+         p += sprintf(p, "-[%04x:%02x-%02x]-", b->domain, b->secondary, b->subordinate);
+        show_tree_bridge(b, line, p);
+        return;
+      }
+  if (verbose)
+    p += sprintf(p, "  %s",
+                pci_lookup_name(pacc, namebuf, sizeof(namebuf),
+                                PCI_LOOKUP_VENDOR | PCI_LOOKUP_DEVICE,
+                                q->vendor_id, q->device_id));
+  print_it(line, p);
+}
+
+static void
+show_tree_bus(struct bus *b, char *line, char *p)
+{
+  if (!b->first_dev)
+    print_it(line, p);
+  else if (!b->first_dev->next)
+    {
+      *p++ = '-';
+      *p++ = '-';
+      show_tree_dev(b->first_dev, line, p);
+    }
+  else
+    {
+      struct device *d = b->first_dev;
+      while (d->next)
+       {
+         p[0] = '+';
+         p[1] = '-';
+         show_tree_dev(d, line, p+2);
+         d = d->next;
+       }
+      p[0] = '\\';
+      p[1] = '-';
+      show_tree_dev(d, line, p+2);
+    }
+}
+
+static void
+show_tree_bridge(struct bridge *b, char *line, char *p)
+{
+  *p++ = '-';
+  if (!b->first_bus->sibling)
+    {
+      if (b == &host_bridge)
+        p += sprintf(p, "[%04x:%02x]-", b->domain, b->first_bus->number);
+      show_tree_bus(b->first_bus, line, p);
+    }
+  else
+    {
+      struct bus *u = b->first_bus;
+      char *k;
+
+      while (u->sibling)
+        {
+          k = p + sprintf(p, "+-[%04x:%02x]-", u->domain, u->number);
+          show_tree_bus(u, line, k);
+          u = u->sibling;
+        }
+      k = p + sprintf(p, "\\-[%04x:%02x]-", u->domain, u->number);
+      show_tree_bus(u, line, k);
+    }
+}
+
+static void
+show_forest(void)
+{
+  char line[256];
+
+  grow_tree();
+  show_tree_bridge(&host_bridge, line, line);
+}
+
+/*** Bus mapping mode ***/
+
+struct bus_bridge {
+  struct bus_bridge *next;
+  byte this, dev, func, first, last, bug;
+};
+
+struct bus_info {
+  byte exists;
+  byte guestbook;
+  struct bus_bridge *bridges, *via;
+};
+
+static struct bus_info *bus_info;
+
+static void
+map_bridge(struct bus_info *bi, struct device *d, int np, int ns, int nl)
+{
+  struct bus_bridge *b = xmalloc(sizeof(struct bus_bridge));
+  struct pci_dev *p = d->dev;
+
+  b->next = bi->bridges;
+  bi->bridges = b;
+  b->this = get_conf_byte(d, np);
+  b->dev = p->dev;
+  b->func = p->func;
+  b->first = get_conf_byte(d, ns);
+  b->last = get_conf_byte(d, nl);
+  printf("## %02x.%02x:%d is a bridge from %02x to %02x-%02x\n",
+        p->bus, p->dev, p->func, b->this, b->first, b->last);
+  if (b->this != p->bus)
+    printf("!!! Bridge points to invalid primary bus.\n");
+  if (b->first > b->last)
+    {
+      printf("!!! Bridge points to invalid bus range.\n");
+      b->last = b->first;
+    }
+}
+
+static void
+do_map_bus(int bus)
+{
+  int dev, func;
+  int verbose = pacc->debugging;
+  struct bus_info *bi = bus_info + bus;
+  struct device *d;
+
+  if (verbose)
+    printf("Mapping bus %02x\n", bus);
+  for(dev = 0; dev < 32; dev++)
+    if (filter.slot < 0 || filter.slot == dev)
+      {
+       int func_limit = 1;
+       for(func = 0; func < func_limit; func++)
+         if (filter.func < 0 || filter.func == func)
+           {
+             /* XXX: Bus mapping supports only domain 0 */
+             struct pci_dev *p = pci_get_dev(pacc, 0, bus, dev, func);
+             u16 vendor = pci_read_word(p, PCI_VENDOR_ID);
+             if (vendor && vendor != 0xffff)
+               {
+                 if (!func && (pci_read_byte(p, PCI_HEADER_TYPE) & 0x80))
+                   func_limit = 8;
+                 if (verbose)
+                   printf("Discovered device %02x:%02x.%d\n", bus, dev, func);
+                 bi->exists = 1;
+                 if (d = scan_device(p))
+                   {
+                     show_device(d);
+                     switch (get_conf_byte(d, PCI_HEADER_TYPE) & 0x7f)
+                       {
+                       case PCI_HEADER_TYPE_BRIDGE:
+                         map_bridge(bi, d, PCI_PRIMARY_BUS, PCI_SECONDARY_BUS, PCI_SUBORDINATE_BUS);
+                         break;
+                       case PCI_HEADER_TYPE_CARDBUS:
+                         map_bridge(bi, d, PCI_CB_PRIMARY_BUS, PCI_CB_CARD_BUS, PCI_CB_SUBORDINATE_BUS);
+                         break;
+                       }
+                     free(d);
+                   }
+                 else if (verbose)
+                   printf("But it was filtered out.\n");
+               }
+             pci_free_dev(p);
+           }
+      }
+}
+
+static void
+do_map_bridges(int bus, int min, int max)
+{
+  struct bus_info *bi = bus_info + bus;
+  struct bus_bridge *b;
+
+  bi->guestbook = 1;
+  for(b=bi->bridges; b; b=b->next)
+    {
+      if (bus_info[b->first].guestbook)
+       b->bug = 1;
+      else if (b->first < min || b->last > max)
+       b->bug = 2;
+      else
+       {
+         bus_info[b->first].via = b;
+         do_map_bridges(b->first, b->first, b->last);
+       }
+    }
+}
+
+static void
+map_bridges(void)
+{
+  int i;
+
+  printf("\nSummary of buses:\n\n");
+  for(i=0; i<256; i++)
+    if (bus_info[i].exists && !bus_info[i].guestbook)
+      do_map_bridges(i, 0, 255);
+  for(i=0; i<256; i++)
+    {
+      struct bus_info *bi = bus_info + i;
+      struct bus_bridge *b = bi->via;
+
+      if (bi->exists)
+       {
+         printf("%02x: ", i);
+         if (b)
+           printf("Entered via %02x:%02x.%d\n", b->this, b->dev, b->func);
+         else if (!i)
+           printf("Primary host bus\n");
+         else
+           printf("Secondary host bus (?)\n");
+       }
+      for(b=bi->bridges; b; b=b->next)
+       {
+         printf("\t%02x.%d Bridge to %02x-%02x", b->dev, b->func, b->first, b->last);
+         switch (b->bug)
+           {
+           case 1:
+             printf(" <overlap bug>");
+             break;
+           case 2:
+             printf(" <crossing bug>");
+             break;
+           }
+         putchar('\n');
+       }
+    }
+}
+
+static void
+map_the_bus(void)
+{
+  if (pacc->method == PCI_ACCESS_PROC_BUS_PCI ||
+      pacc->method == PCI_ACCESS_DUMP)
+    printf("WARNING: Bus mapping can be reliable only with direct hardware access enabled.\n\n");
+  bus_info = xmalloc(sizeof(struct bus_info) * 256);
+  memset(bus_info, 0, sizeof(struct bus_info) * 256);
+  if (filter.bus >= 0)
+    do_map_bus(filter.bus);
+  else
+    {
+      int bus;
+      for(bus=0; bus<256; bus++)
+       do_map_bus(bus);
+    }
+  map_bridges();
+}
+
+/* Main */
+
+int
+main(int argc, char **argv)
+{
+  int i;
+  char *msg;
+
+  if (argc == 2 && !strcmp(argv[1], "--version"))
+    {
+      puts("lspci version " PCIUTILS_VERSION);
+      return 0;
+    }
+
+  pacc = pci_alloc();
+  pacc->error = die;
+  pci_filter_init(pacc, &filter);
+
+  while ((i = getopt(argc, argv, options)) != -1)
+    switch (i)
+      {
+      case 'n':
+       pacc->numeric_ids++;
+       break;
+      case 'v':
+       verbose++;
+       break;
+      case 'b':
+       pacc->buscentric = 1;
+       opt_buscentric = 1;
+       break;
+      case 's':
+       if (msg = pci_filter_parse_slot(&filter, optarg))
+         die("-s: %s", msg);
+       break;
+      case 'd':
+       if (msg = pci_filter_parse_id(&filter, optarg))
+         die("-d: %s", msg);
+       break;
+      case 'x':
+       opt_hex++;
+       break;
+      case 't':
+       opt_tree++;
+       break;
+      case 'i':
+        pci_set_name_list_path(pacc, optarg, 0);
+       break;
+      case 'm':
+       opt_machine++;
+       break;
+      case 'p':
+       opt_pcimap = optarg;
+       break;
+#ifdef PCI_OS_LINUX
+      case 'k':
+       opt_kernel++;
+       break;
+#endif
+      case 'M':
+       opt_map_mode++;
+       break;
+      case 'D':
+       opt_domains = 2;
+       break;
+#ifdef PCI_USE_DNS
+      case 'q':
+       opt_query_dns++;
+       break;
+      case 'Q':
+       opt_query_all = 1;
+       break;
+#else
+      case 'q':
+      case 'Q':
+       die("DNS queries are not available in this version");
+#endif
+      default:
+       if (parse_generic_option(i, pacc, optarg))
+         break;
+      bad:
+       fprintf(stderr, help_msg, pacc->id_file_name);
+       return 1;
+      }
+  if (optind < argc)
+    goto bad;
+
+  if (opt_query_dns)
+    {
+      pacc->id_lookup_mode |= PCI_LOOKUP_NETWORK;
+      if (opt_query_dns > 1)
+       pacc->id_lookup_mode |= PCI_LOOKUP_REFRESH_CACHE;
+    }
+  if (opt_query_all)
+    pacc->id_lookup_mode |= PCI_LOOKUP_NETWORK | PCI_LOOKUP_SKIP_LOCAL;
+
+  pci_init(pacc);
+  if (opt_map_mode)
+    map_the_bus();
+  else
+    {
+      scan_devices();
+      sort_them();
+      if (opt_tree)
+       show_forest();
+      else
+       show();
+    }
+  pci_cleanup(pacc);
+
+  return (seen_errors ? 2 : 0);
+}
diff --git a/lspci.man b/lspci.man
new file mode 100644 (file)
index 0000000..dfddacd
--- /dev/null
+++ b/lspci.man
@@ -0,0 +1,350 @@
+.TH lspci 8 "@TODAY@" "@VERSION@" "The PCI Utilities"
+.IX lspci
+.SH NAME
+lspci \- list all PCI devices
+.SH SYNOPSIS
+.B lspci
+.RB [ options ]
+.SH DESCRIPTION
+.B lspci
+is a utility for displaying information about PCI buses in the system and
+devices connected to them.
+
+By default, it shows a brief list of devices. Use the options described
+below to request either a more verbose output or output intended for
+parsing by other programs.
+
+If you are going to report bugs in PCI device drivers or in
+.I lspci
+itself, please include output of "lspci -vvx" or even better "lspci -vvxxx"
+(however, see below for possible caveats).
+
+Some parts of the output, especially in the highly verbose modes, are probably
+intelligible only to experienced PCI hackers. For exact definitions of
+the fields, please consult either the PCI specifications or the
+.B header.h
+and
+.B /usr/include/linux/pci.h
+include files.
+
+Access to some parts of the PCI configuration space is restricted to root
+on many operating systems, so the features of
+.I lspci
+available to normal users are limited. However,
+.I lspci
+tries its best to display as much as available and mark all other
+information with
+.I <access denied>
+text.
+
+.SH OPTIONS
+
+.SS Basic display modes
+.TP
+.B -m
+Dump PCI device data in a backward-compatible machine readable form.
+See below for details.
+.TP
+.B -mm
+Dump PCI device data in a machine readable form for easy parsing by scripts.
+See below for details.
+.TP
+.B -t
+Show a tree-like diagram containing all buses, bridges, devices and connections
+between them.
+
+.SS Display options
+.TP
+.B -v
+Be verbose and display detailed information about all devices.
+.TP
+.B -vv
+Be very verbose and display more details. This level includes everything deemed
+useful.
+.TP
+.B -vvv
+Be even more verbose and display everything we are able to parse,
+even if it doesn't look interesting at all (e.g., undefined memory regions).
+.TP
+.B -k
+Show kernel drivers handling each device and also kernel modules capable of handling it.
+Turned on by default when
+.B -v
+is given in the normal mode of output.
+(Currently works only on Linux with kernel 2.6 or newer.)
+.TP
+.B -x
+Show hexadecimal dump of the standard part of the configuration space (the first
+64 bytes or 128 bytes for CardBus bridges).
+.TP
+.B -xxx
+Show hexadecimal dump of the whole PCI configuration space. It is available only to root
+as several PCI devices
+.B crash
+when you try to read some parts of the config space (this behavior probably
+doesn't violate the PCI standard, but it's at least very stupid). However, such
+devices are rare, so you needn't worry much.
+.TP
+.B -xxxx
+Show hexadecimal dump of the extended (4096-byte) PCI configuration space available
+on PCI-X 2.0 and PCI Express buses.
+.TP
+.B -b
+Bus-centric view. Show all IRQ numbers and addresses as seen by the cards on the
+PCI bus instead of as seen by the kernel.
+.TP
+.B -D
+Always show PCI domain numbers. By default, lspci suppresses them on machines which
+have only domain 0.
+
+.SS Options to control resolving ID's to names
+.TP
+.B -n
+Show PCI vendor and device codes as numbers instead of looking them up in the
+PCI ID list.
+.TP
+.B -nn
+Show PCI vendor and device codes as both numbers and names.
+.TP
+.B -q
+Use DNS to query the central PCI ID database if a device is not found in the local
+.B pci.ids
+file. If the DNS query succeeds, the result is cached in
+.B ~/.pciids-cache
+and it is recognized in subsequent runs even if
+.B -q
+is not given any more. Please use this switch inside automated scripts only
+with caution to avoid overloading the database servers.
+.TP
+.B -qq
+Same as
+.BR -q ,
+but the local cache is reset.
+.TP
+.B -Q
+Query the central database even for entries which are recognized locally.
+Use this if you suspect that the displayed entry is wrong.
+
+.SS Options for selection of devices
+.TP
+.B -s [[[[<domain>]:]<bus>]:][<slot>][.[<func>]]
+Show only devices in the specified domain (in case your machine has several host bridges,
+they can either share a common bus number space or each of them can address a PCI domain
+of its own; domains are numbered from 0 to ffff), bus (0 to ff), slot (0 to 1f) and function (0 to 7).
+Each component of the device address can be omitted or set to "*", both meaning "any value". All numbers are
+hexadecimal.  E.g., "0:" means all devices on bus 0, "0" means all functions of device 0
+on any bus, "0.3" selects third function of device 0 on all buses and ".4" shows only
+the fourth function of each device.
+.TP
+.B -d [<vendor>]:[<device>]
+Show only devices with specified vendor and device ID. Both ID's are given in
+hexadecimal and may be omitted or given as "*", both meaning "any value".
+
+.SS Other options
+.TP
+.B -i <file>
+Use
+.B
+<file>
+as the PCI ID list instead of @IDSDIR@/pci.ids.
+.TP
+.B -p <file>
+Use
+.B
+<file>
+as the map of PCI ID's handled by kernel modules. By default, lspci uses
+.RI /lib/modules/ kernel_version /modules.pcimap.
+Applies only to Linux systems with recent enough module tools.
+.TP
+.B -M
+Invoke bus mapping mode which performs a thorough scan of all PCI devices, including
+those behind misconfigured bridges etc. This option is available only to root and it
+gives meaningful results only if combined with direct hardware access mode (otherwise
+the results are identical to normal listing modes, modulo bugs in lspci). Please note
+that the bus mapper doesn't support PCI domains and scans only domain 0.
+.TP
+.B --version
+Shows
+.I lspci
+version. This option should be used stand-alone.
+
+.SS PCI access options
+.PP
+The PCI utilities use the PCI library to talk to PCI devices (see
+\fBpcilib\fP(7) for details). You can use the following options to
+influence its behavior:
+.TP
+.B -A <method>
+The library supports a variety of methods to access the PCI hardware.
+By default, it uses the first access method available, but you can use
+this option to override this decision. See \fB-A help\fP for a list of
+available methods and their descriptions.
+.TP
+.B -O <param>=<value>
+The behavior of the library is controlled by several named parameters.
+This option allows to set the value of any of the parameters. Use \fB-O help\fP
+for a list of known parameters and their default values.
+.TP
+.B -H1
+Use direct hardware access via Intel configuration mechanism 1.
+(This is a shorthand for \fB-A intel-conf1\fP.)
+.TP
+.B -H2
+Use direct hardware access via Intel configuration mechanism 2.
+(This is a shorthand for \fB-A intel-conf2\fP.)
+.TP
+.B -F <file>
+Instead of accessing real hardware, read the list of devices and values of their
+configuration registers from the given file produced by an earlier run of lspci -x.
+This is very useful for analysis of user-supplied bug reports, because you can display
+the hardware configuration in any way you want without disturbing the user with
+requests for more dumps.
+.TP
+.B -G
+Increase debug level of the library.
+
+.SH MACHINE READABLE OUTPUT
+If you intend to process the output of lspci automatically, please use one of the
+machine-readable output formats
+.RB ( -m ,
+.BR -vm ,
+.BR -vmm )
+described in this section. All other formats are likely to change
+between versions of lspci.
+
+.P
+All numbers are always printed in hexadecimal. If you want to process numeric ID's instead of
+names, please add the
+.B -n
+switch.
+
+.SS Simple format (-m)
+
+In the simple format, each device is described on a single line, which is
+formatted as parameters suitable for passing to a shell script, i.e., values
+separated by whitespaces, quoted and escaped if necessary.
+Some of the arguments are positional: slot, class, vendor name, device name,
+subsystem vendor name and subsystem name (the last two are empty if
+the device has no subsystem); the remaining arguments are option-like:
+
+.TP
+.BI -r rev
+Revision number.
+
+.TP
+.BI -p progif
+Programming interface.
+
+.P
+The relative order of positional arguments and options is undefined.
+New options can be added in future versions, but they will always
+have a single argument not separated from the option by any spaces,
+so they can be easily ignored if not recognized.
+
+.SS Verbose format (-vmm)
+
+The verbose output is a sequence of records separated by blank lines.
+Each record describes a single device by a sequence of lines, each line
+containing a single
+.RI ` tag :
+.IR value '
+pair. The
+.I tag
+and the
+.I value
+are separated by a single tab character.
+Neither the records nor the lines within a record are in any particular order.
+Tags are case-sensitive.
+
+.P
+The following tags are defined:
+
+.TP
+.B Slot
+The name of the slot where the device resides
+.RI ([ domain :] bus : device . function ).
+This tag is always the first in a record.
+
+.TP
+.B Class
+Name of the class.
+
+.TP
+.B Vendor
+Name of the vendor.
+
+.TP
+.B Device
+Name of the device.
+
+.TP
+.B SVendor
+Name of the subsystem vendor (optional).
+
+.TP
+.B SDevice
+Name of the subsystem (optional).
+
+.TP
+.B Rev
+Revision number (optional).
+
+.TP
+.B ProgIf
+Programming interface (optional).
+
+.TP
+.B Driver
+Kernel driver currently handling the device (optional, Linux only).
+
+.TP
+.B Module
+Kernel module reporting that it is capable of handling the device
+(optional, Linux only).
+
+.P
+New tags can be added in future versions, so you should silently ignore any tags you don't recognize.
+
+.SS Backward-compatible verbose format (-vm)
+
+In this mode, lspci tries to be perfectly compatible with its old versions.
+It's almost the same as the regular verbose format, but the
+.B
+Device
+tag is used for both the slot and the device name, so it occurs twice
+in a single record. Please avoid using this format in any new code.
+
+.SH FILES
+.TP
+.B @IDSDIR@/pci.ids
+A list of all known PCI ID's (vendors, devices, classes and subclasses). Maintained
+at http://pciids.sourceforge.net/, use the
+.B update-pciids
+utility to download the most recent version.
+.TP
+.B @IDSDIR@/pci.ids.gz
+If lspci is compiled with support for compression, this file is tried before pci.ids.
+.TP
+.B ~/.pciids-cache
+All ID's found in the DNS query mode are cached in this file.
+
+.SH BUGS
+
+Sometimes, lspci is not able to decode the configuration registers completely.
+This usually happens when not enough documentation was available to the authors.
+In such cases, it at least prints the
+.B <?>
+mark to signal that there is potentially something more to say. If you know
+the details, patches will be of course welcome.
+
+Access to the extended configuration space is currently supported only by the
+.B linux_sysfs
+back-end.
+
+.SH SEE ALSO
+.BR setpci (8),
+.BR update-pciids (8),
+.BR pcilib (7)
+
+.SH AUTHOR
+The PCI Utilities are maintained by Martin Mares <mj@ucw.cz>.
diff --git a/maint/gen-zone b/maint/gen-zone
new file mode 100755 (executable)
index 0000000..b3591f8
--- /dev/null
@@ -0,0 +1,52 @@
+#!/usr/bin/perl -w
+# Create a DNS zone with PCI ID records
+
+use strict;
+
+my %ids = ();
+my %comments = ();
+foreach our $file (@ARGV) {
+       my $fn = ($file =~ /\.gz$/) ? "zcat $file |" : ($file =~ /\.bz2$/) ? "bzcat $file |" : $file;
+       open F, $fn or die "Unable to open $file: $!";
+       my @id = ();
+       my $comm = "";
+       sub err($) {
+               print STDERR "Error in $file, line $.: @_\n";
+               exit 1;
+       }
+       while (<F>) {
+               if (/^(#.*)/) {
+                       $comm .= $_;
+                       next;
+               }
+               chomp;
+               if (my ($indent, $id, $ignored, $name) = /^(\t*)(([0-9a-fA-Z]+ ?)*)((  |\t|$)\s*(.*))$/) {
+                       my $depth = length $indent;
+                       $depth <= @id or err "Mismatched indentation";
+                       @id = (@id[0..$depth-1], $id);
+                       my $i = join(":", @id);
+                       if ($i ne "") {
+                               !exists $ids{$i} or die "ID $i defined twice";
+                               $ids{$i} = $name;
+                               $comments{$i} = $comm if $comm;
+                       }
+               } elsif (!/^$/) {
+                       err "Parse error";
+               }
+               $comm = "";
+       }
+       close F;
+}
+
+sub esc($) {
+       my ($x) = @_;
+       $x =~ s/^\s+//;
+       $x =~ s/"/\\"/g;
+       return $x;
+}
+
+foreach my $i (keys %ids) {
+       my $j = join(".", reverse split(/[: ]/, $i));
+       print "$j.pci\tTXT \"i=", esc($ids{$i}), "\"\n";
+       # print "$j.pci\tTXT \"c=", esc($comments{$i}), "\"\n"
+}
diff --git a/maint/release b/maint/release
new file mode 100755 (executable)
index 0000000..7c4ac51
--- /dev/null
@@ -0,0 +1,50 @@
+#!/usr/bin/perl
+# A simple script for making releases of the pciutils
+# (c) 2003--2006 Martin Mares <mj@ucw.cz>
+
+use strict;
+use warnings;
+require "maint/release.pm";
+
+# Check API version
+my $apiver = "???";
+open X, "lib/pci.h" or die;
+while (<X>) {
+       /^#define PCI_LIB_VERSION 0x(.{6})$/ and $apiver = $1;
+}
+print "API version is $apiver ... <confirm> "; <STDIN>;
+
+print "Updating public GIT tree\n";
+`cg-push public`; die if $?;
+
+my $r = new UCW::Release("pciutils");
+my $ver = $r->GetVersionFromFile("Makefile", "VERSION=(.*)");
+$r->GetVersionsFromChangelog("ChangeLog", "Released as (.*)\.");
+push @{$r->{"rules"}}, '^win32/config.h' => 's';
+if ($ver =~ /-/) {
+       $r->{"ALPHADIR"} = "alpha/";
+       $r->{"conditions"}->{"ALPHA_VERSION"} = 1;
+} else {
+       $r->{"ALPHADIR"} = "";
+       $r->{"conditions"}->{"ALPHA_VERSION"} = -1;
+}
+push @{$r->{"uploads"}}, {
+       "url" => "scp://atrey.karlin.mff.cuni.cz/~ftp/pub/linux/pci/" . $r->{"ALPHADIR"}
+       },{
+       "url" => "scp://master.kernel.org/pub/software/utils/pciutils/" . $r->{"ALPHADIR"}
+       };
+push @{$r->{"uploads"}}, {
+       "url" => "ftp://metalab.unc.edu/incoming/linux/",
+       "filter" => '(\.tar\.gz|\.lsm)$'
+       } if $r->{"ALPHADIR"} eq "";
+$r->ParseOptions;
+$r->InitDist("maint/dist");
+my $reldir = $r->GenPackage;
+$r->GenFile("README");
+$r->GenFile("pciutils.lsm");
+$r->Dispatch;
+if ($r->{"do_upload"}) {
+       print "Uploading pci.ids to Jabberwock\n";
+       `scp -C pci.ids pciids\@jabberwock.ucw.cz:05-pciutils.new`; die if $?;
+       `ssh pciids\@jabberwock.ucw.cz mv 05-pciutils.new origs/05-pciutils`; die if $?;
+}
diff --git a/maint/release.pm b/maint/release.pm
new file mode 100644 (file)
index 0000000..b0fa46e
--- /dev/null
@@ -0,0 +1,317 @@
+#!/usr/bin/perl
+# A simple system for making software releases
+# (c) 2003--2006 Martin Mares <mj@ucw.cz>
+
+package UCW::Release;
+use strict;
+use warnings;
+use Getopt::Long;
+
+our $verbose = 0;
+
+sub new($$) {
+       my ($class,$basename) = @_;
+       my $s = {
+               "PACKAGE" => $basename,
+               "rules" => [
+                       # p=preprocess, s=subst, -=discard
+                       '(^|/)(CVS|\.arch-ids|{arch}|\.git|tmp)/' => '-',
+                       '\.(lsm|spec)$' => 'ps',
+                       '(^|/)README$' => 's'
+                       ],
+               "directories" => [
+                       ],
+               "conditions" => {
+                       },
+               "DATE" => `date '+%Y-%m-%d' | tr -d '\n'`,
+               "LSMDATE" => `date '+%y%m%d' | tr -d '\n'`,
+               "distfiles" => [
+                       ],
+               "archivedir" => "/home/mj/tmp/archives/$basename",
+               "uploads" => [
+                       ],
+               # Options
+               "do_test" => 1,
+               "do_patch" => 1,
+               "diff_against" => "",
+               "do_upload" => 1
+       };
+       bless $s;
+       return $s;
+}
+
+sub GetVersionFromFile($) {
+       my ($s,$file,$rx) = @_;
+       open F, $file or die "Unable to open $file for version autodetection";
+       while (<F>) {
+               chomp;
+               if (/$rx/) {
+                       $s->{"VERSION"} = $1;
+                       print "Detected version $1 from $file\n" if $verbose;
+                       last;
+               }
+       }
+       close F;
+       if (!defined $s->{"VERSION"}) { die "Failed to auto-detect version"; }
+       return $s->{"VERSION"};
+}
+
+sub GetVersionsFromChangelog($) {
+       my ($s,$file,$rx) = @_;
+       open F, $file or die "Unable to open $file for version autodetection";
+       while (<F>) {
+               chomp;
+               if (/$rx/) {
+                       if (!defined $s->{"VERSION"}) {
+                               $s->{"VERSION"} = $1;
+                               print "Detected version $1 from $file\n" if $verbose;
+                       } elsif ($s->{"VERSION"} eq $1) {
+                               # do nothing
+                       } else {
+                               $s->{"OLDVERSION"} = $1;
+                               print "Detected previous version $1 from $file\n" if $verbose;
+                               last;
+                       }
+               }
+       }
+       close F;
+       if (!defined $s->{"VERSION"}) { die "Failed to auto-detect version"; }
+       return $s->{"VERSION"};
+}
+
+sub InitDist($) {
+       my ($s,$dd) = @_;
+       $s->{"DISTDIR"} = $dd;
+       print "Initializing dist directory $dd\n" if $verbose;
+       `rm -rf $dd`; die if $?;
+       `mkdir -p $dd`; die if $?;
+}
+
+sub ExpandVar($$) {
+       my ($s,$v) = @_;
+       if (defined $s->{$v}) {
+               return $s->{$v};
+       } else {
+               die "Reference to unknown variable $v";
+       }
+}
+
+sub CopyFile($$$$) {
+       my ($s,$f,$dir,$action) = @_;
+
+       (my $d = $f) =~ s@(^|/)[^/]*$@@;
+       $d = "$dir/$d";
+       -d $d || `mkdir -p $d`; die if $?;
+
+       my $preprocess = ($action =~ /p/);
+       my $subst = ($action =~ /s/);
+       if ($preprocess || $subst) {
+               open I, "$f" or die "open($f): $?";
+               open O, ">$dir/$f" or die "open($dir/$f): $!";
+               my @ifs = ();   # stack of conditions, 1=satisfied
+               my $empty = 0;  # last line was empty
+               my $is_makefile = ($f =~ /(Makefile|.mk)$/);
+               while (<I>) {
+                       if ($subst) {
+                               s/@([0-9A-Za-z_]+)@/$s->ExpandVar($1)/ge;
+                       }
+                       if ($preprocess) {
+                               if (/^#/ || $is_makefile) {
+                                       if (/^#?ifdef\s+(\w+)/) {
+                                               if (defined ${$s->{"conditions"}}{$1}) {
+                                                       push @ifs, ${$s->{"conditions"}}{$1};
+                                                       next;
+                                               }
+                                               push @ifs, 0;
+                                       } elsif (/^#ifndef\s+(\w+)/) {
+                                               if (defined ${$s->{"conditions"}}{$1}) {
+                                                       push @ifs, -${$s->{"conditions"}}{$1};
+                                                       next;
+                                               }
+                                               push @ifs, 0;
+                                       } elsif (/^#if\s+/) {
+                                               push @ifs, 0;
+                                       } elsif (/^#?endif/) {
+                                               my $x = pop @ifs;
+                                               defined $x or die "Improper nesting of conditionals";
+                                               $x && next;
+                                       } elsif (/^#?else/) {
+                                               my $x = pop @ifs;
+                                               defined $x or die "Improper nesting of conditionals";
+                                               push @ifs, -$x;
+                                               $x && next;
+                                       }
+                               }
+                               @ifs && $ifs[$#ifs] < 0 && next;
+                               if (/^$/) {
+                                       $empty && next;
+                                       $empty = 1;
+                               } else { $empty = 0; }
+                       }
+                       print O;
+               }
+               close O;
+               close I;
+               ! -x $f or chmod(0755, "$dir/$f") or die "chmod($dir/$f): $!";
+       } else {
+               `cp -a "$f" "$dir/$f"`; die if $?;
+       }
+}
+
+sub GenPackage($) {
+       my ($s) = @_;
+       $s->{"PKG"} = $s->{"PACKAGE"} . "-" . $s->{"VERSION"};
+       my $dd = $s->{"DISTDIR"};
+       my $pkg = $s->{"PKG"};
+       my $dir = "$dd/$pkg";
+       print "Generating $dir\n";
+
+       FILES: foreach my $f (`find . -type f`) {
+               chomp $f;
+               $f =~ s/^\.\///;
+               my $action = "";
+               my @rules = @{$s->{"rules"}};
+               while (@rules) {
+                       my $rule = shift @rules;
+                       my $act = shift @rules;
+                       if ($f =~ $rule) {
+                               $action = $act;
+                               last;
+                       }
+               }
+               ($action =~ /-/) && next FILES;
+               print "$f ($action)\n" if $verbose;
+               $s->CopyFile($f, $dir, $action);
+       }
+
+       foreach my $d (@{$s->{"directories"}}) {
+               `mkdir -p $dir/$d`; die if $?;
+       }
+
+       if (-f "$dir/Makefile") {
+               print "Cleaning up\n";
+               `cd $dir && make distclean >&2`; die if $?;
+       }
+
+       print "Creating $dd/$pkg.tar.gz\n";
+       my $tarvv = $verbose ? "vv" : "";
+       `cd $dd && tar cz${tarvv}f $pkg.tar.gz $pkg >&2`; die if $?;
+       push @{$s->{"distfiles"}}, "$dd/$pkg.tar.gz";
+
+       my $adir = $s->{"archivedir"};
+       my $afile = "$adir/$pkg.tar.gz";
+       print "Archiving to $afile\n";
+       -d $adir or `mkdir -p $adir`;
+       `cp $dd/$pkg.tar.gz $afile`; die if $?;
+
+       return $dir;
+}
+
+sub GenFile($$) {
+       my ($s,$f) = @_;
+       my $sf = $s->{"DISTDIR"} . "/" . $s->{"PKG"} . "/$f";
+       my $df = $s->{"DISTDIR"} . "/$f";
+       print "Generating $df\n";
+       `cp $sf $df`; die if $?;
+       push @{$s->{"distfiles"}}, $df;
+}
+
+sub ParseOptions($) {
+       my ($s) = @_;
+       GetOptions(
+               "verbose!" => \$verbose,
+               "test!" => \$s->{"do_test"},
+               "patch!" => \$s->{"do_patch"},
+               "diff-against=s" => \$s->{"diff_against"},
+               "upload!" => \$s->{"do_upload"}
+       ) || die "Syntax: release [--verbose] [--test] [--nopatch] [--diff-against=<version>] [--noupload]";
+}
+
+sub Test($) {
+       my ($s) = @_;
+       my $dd = $s->{"DISTDIR"};
+       my $pkg = $s->{"PKG"};
+       my $log = "$dd/$pkg.log";
+       print "Doing a test compilation\n";
+       `( cd $dd/$pkg && make ) >$log 2>&1`;
+       die "There were errors. Please inspect $log" if $?;
+       `grep -q [Ww]arning $log`;
+       $? or print "There were warnings! Please inspect $log.\n";
+       print "Cleaning up\n";
+       `cd $dd/$pkg && make distclean`; die if $?;
+}
+
+sub MakePatch($) {
+       my ($s) = @_;
+       my $dd = $s->{"DISTDIR"};
+       my $pkg1 = $s->{"PKG"};
+       my $oldver;
+       if ($s->{"diff_against"} ne "") {
+               $oldver = $s->{"diff_against"};
+       } elsif (defined $s->{"OLDVERSION"}) {
+               $oldver = $s->{"OLDVERSION"};
+       } else {
+               print "WARNING: No previous version known. No patch generated.\n";
+               return;
+       }
+       my $pkg0 = $s->{"PACKAGE"} . "-" . $oldver;
+
+       my $oldarch = $s->{"archivedir"} . "/" . $pkg0 . ".tar.gz";
+       -f $oldarch or die "MakePatch: $oldarch not found";
+       print "Unpacking $pkg0 from $oldarch\n";
+       `cd $dd && tar xzf $oldarch`; die if $?;
+
+       my $diff = $s->{"PACKAGE"} . "-" . $oldver . "-" . $s->{"VERSION"} . ".diff.gz";
+       print "Creating a patch from $pkg0 to $pkg1: $diff\n";
+       `cd $dd && diff -ruN $pkg0 $pkg1 | gzip >$diff`; die if $?;
+       push @{$s->{"distfiles"}}, "$dd/$diff";
+}
+
+sub Upload($) {
+       my ($s) = @_;
+       foreach my $u (@{$s->{"uploads"}}) {
+               my $url = $u->{"url"};
+               print "Upload to $url :\n";
+               my @files = ();
+               my $filter = $u->{"filter"} || ".*";
+               foreach my $f (@{$s->{"distfiles"}}) {
+                       if ($f =~ $filter) {
+                               print "\t$f\n";
+                               push @files, $f;
+                       }
+               }
+               print "<confirm> "; <STDIN>;
+               if ($url =~ m@^scp://([^/]+)(.*)@) {
+                       $, = " ";
+                       my $host = $1;
+                       my $dir = $2;
+                       $dir =~ s@^/~@~@;
+                       $dir =~ s@^/\./@@;
+                       my $cmd = "scp @files $host:$dir\n";
+                       `$cmd`; die if $?;
+               } elsif ($url =~ m@ftp://([^/]+)(.*)@) {
+                       my $host = $1;
+                       my $dir = $2;
+                       open FTP, "|ftp -v $host" or die;
+                       print FTP "cd $dir\n";
+                       foreach my $f (@files) {
+                               (my $ff = $f) =~ s@.*\/([^/].*)@$1@;
+                               print FTP "put $f $ff\n";
+                       }
+                       print FTP "bye\n";
+                       close FTP;
+                       die if $?;
+               } else {
+                       die "Don't know how to handle this URL scheme";
+               }
+       }
+}
+
+sub Dispatch($) {
+       my ($s) = @_;
+       $s->Test if $s->{"do_test"};
+       $s->MakePatch if $s->{"do_patch"};
+       $s->Upload if $s->{"do_upload"};
+}
+
+1;
diff --git a/packaging/pciutils.spec b/packaging/pciutils.spec
new file mode 100644 (file)
index 0000000..ecaedf0
--- /dev/null
@@ -0,0 +1,91 @@
+Name:          pciutils
+Version:       3.0.0
+Release:       9
+Summary:        PCI bus related utilities
+Group:          Applications/System
+License:       GPLv2+
+URL:           http://atrey.karlin.mff.cuni.cz/~mj/pciutils.shtml
+Source:                ftp://atrey.karlin.mff.cuni.cz/pub/linux/pci/%{name}-%{version}.tar.gz
+BuildRequires: zlib-devel
+
+%description
+This package contains various utilities for inspecting and setting of
+devices connected to the PCI bus.
+
+%package -n libpci3
+Summary: Linux PCI development library
+Group: System/Libraries
+
+%description -n libpci3
+This package contains the libpci shared library files.
+
+%package -n libpci-devel
+Summary: Linux PCI development library (Developement)
+Group: Development/Libraries
+Requires: zlib-devel pkgconfig libpci3 = %{version}-%{release}
+
+%description -n libpci-devel
+This package contains the <pci/pci.h>, <pci/config.h> and <pci/header.h> header files.
+
+
+%prep
+%setup -q
+
+%build
+make SHARED=yes PREFIX=/usr SBINDIR=/usr/bin IDSDIR=/usr/share/misc 
+
+
+%install
+rm -rf $RPM_BUILD_ROOT
+make PREFIX=/usr SBINDIR=/usr/bin IDSDIR=/usr/share/misc install DESTDIR=$RPM_BUILD_ROOT
+
+# pciutils
+gunzip $RPM_BUILD_ROOT%{_datadir}/misc/pci.ids.gz
+
+# libpci-devel
+mkdir -p $RPM_BUILD_ROOT%{_includedir}/pci
+mkdir -p $RPM_BUILD_ROOT%{_libdir}/pkgconfig
+
+install -m 644 lib/pci.h lib/header.h lib/config.h lib/types.h $RPM_BUILD_ROOT%{_includedir}/pci
+install -m 644 lib/libpci.pc $RPM_BUILD_ROOT%{_libdir}/pkgconfig
+ln -s libpci.so.3.0.0 $RPM_BUILD_ROOT%{_libdir}/libpci.so
+
+# libpci
+install -m 644 lib/libpci.so.* $RPM_BUILD_ROOT%{_libdir}
+ln -s libpci.so.3.0.0 $RPM_BUILD_ROOT%{_libdir}/libpci.so.3
+
+
+%remove_docs
+
+%post 
+/sbin/ldconfig
+rm -f %{_datadir}/misc/pci.ids.new
+rm -f %{_datadir}/misc/pci.ids.neww
+rm -f %{_datadir}/misc/pci.ids.old
+
+%pre
+rm -f /var/lib/pciutils/pci.ids.new
+rm -f /var/lib/pciutils/pci.ids.neww
+rm -f /var/lib/pciutils/pci.ids.old
+
+
+%postun 
+/sbin/ldconfig
+rm -f %{_datadir}/misc/pci.ids.new
+rm -f %{_datadir}/misc/pci.ids.neww
+rm -f %{_datadir}/misc/pci.ids.old
+
+
+
+%files
+/usr/bin/*
+%{_datadir}/misc/pci.ids
+
+%files -n libpci3
+%{_libdir}/libpci.so.*
+
+%files -n libpci-devel
+%{_libdir}/libpci.so
+%{_libdir}/pkgconfig/libpci.pc
+%{_includedir}/pci/*.h
+
diff --git a/pci.ids b/pci.ids
new file mode 100644 (file)
index 0000000..6697e70
--- /dev/null
+++ b/pci.ids
@@ -0,0 +1,15918 @@
+#
+#      List of PCI ID's
+#
+#      Version: 2008.10.07
+#      Date:    2008-10-07 11:49:28
+#
+#      Maintained by Martin Mares <mj@ucw.cz> and other volunteers from the
+#      PCI ID Project at http://pciids.sf.net/.
+#
+#      New data are always welcome, especially if they are accurate. If you have
+#      anything to contribute, please follow the instructions at the web site.
+#
+#      This file can be distributed under either the GNU General Public License
+#      (version 2 or higher) or the 3-clause BSD License.
+#
+
+# Vendors, devices and subsystems. Please keep sorted.
+
+# Syntax:
+# vendor  vendor_name
+#      device  device_name                             <-- single tab
+#              subvendor subdevice  subsystem_name     <-- two tabs
+
+0000  Gammagraphx, Inc.
+0010  Allied Telesyn International
+# This is a relabelled RTL-8139
+       8139  AT-2500TX V3 Ethernet
+001a  Ascend Communications, Inc.
+001c  PEAK-System Technik GmbH
+       0001  PCAN-PCI CAN-Bus controller
+0033  Paradyne corp.
+003d  Lockheed Martin-Marietta Corp
+# Real TJN ID is e159, but they got it wrong several times --mj
+0059  Tiger Jet Network Inc. (Wrong ID)
+0070  Hauppauge computer works Inc.
+       0003  WinTV PVR-250
+       0009  WinTV PVR-150
+       0801  WinTV PVR-150
+       0807  WinTV PVR-150
+       4000  WinTV PVR-350
+       4001  WinTV PVR-250 (v1)
+       4009  WinTV PVR-250
+       4800  WinTV PVR-350
+       4801  WinTV PVR-250 MCE
+       4803  WinTV PVR-250
+       7444  WinTV HVR-1600
+       7801  WinTV HVR-1800 MCE
+       8003  WinTV PVR-150
+       8801  WinTV PVR-150
+       c801  WinTV PVR-150
+       e807  WinTV PVR-500 MCE (1st tuner)
+       e817  WinTV PVR-500 MCE (2nd tuner)
+0071  Nebula Electronics Ltd.
+0095  Silicon Image, Inc. (Wrong ID)
+       0680  Ultra ATA/133 IDE RAID CONTROLLER CARD
+# Wrong ID used in subsystem ID of the TELES.S0/PCI 2.x ISDN adapter
+00a7  Teles AG (Wrong ID)
+00f5  BFG Technologies, Inc.
+0100  Ncipher Corp Ltd
+0123  General Dynamics
+# 018a is not LevelOne but there is a board misprogrammed
+018a  LevelOne
+       0106  FPC-0106TX misprogrammed [RTL81xx]
+# 021b is not Compaq but there is a board misprogrammed
+021b  Compaq Computer Corporation
+       8139  HNE-300 (RealTek RTL8139c) [iPaq Networking]
+0270  Hauppauge computer works Inc. (Wrong ID)
+0291  Davicom Semiconductor, Inc.
+       8212  DM9102A(DM9102AE, SM9102AF) Ethernet 100/10 MBit(Rev 40)
+# SpeedStream is Efficient Networks, Inc, a Siemens Company
+02ac  SpeedStream
+       1012  1012 PCMCIA 10/100 Ethernet Card [RTL81xx]
+02e0  XFX Pine Group Inc
+0315  SK-Electronics Co., Ltd.
+0357  TTTech AG
+       000a  TTP-Monitoring Card V2.0
+036f  Trigem Computer Inc.
+0403  Future Technology Devices International Ltd
+0432  SCM Microsystems, Inc.
+       0001  Pluto2 DVB-T Receiver for PCMCIA [EasyWatch MobilSet]
+045e  Microsoft
+       006e  MN-510 802.11b wireless USB paddle
+       00c2  MN-710 wireless USB paddle
+0482  Kyocera
+04cf  Myson Century, Inc
+       8818  CS8818 USB2.0-to-ATAPI Bridge Controller with Embedded PHY
+050d  Belkin
+       001a  FSD7000 802.11g PCI Wireless card
+       700f  F5D7001 - Wireless G Plus Desktop Card
+       7050  F5D7050 802.11g Wireless USB Adapter
+       705c  F5D7050 v4
+058f  Alcor Micro Corporation
+05a9  OmniVision
+       8519  OV519 series
+05e3  CyberDoor
+       0701  CBD516
+066f  Sigmatel Inc.
+       3410  SMTP3410
+       3500  SMTP3500
+0675  Dynalink
+       1700  IS64PH ISDN Adapter
+       1702  IS64PH ISDN Adapter
+       1703  ISDN Adapter (PCI Bus, DV, W)
+       1704  ISDN Adapter (PCI Bus, D, C)
+069d  Hughes Network Systems (HNS)
+0721  Sapphire, Inc.
+0795  Wired Inc.
+       6663  Butane II (MPEG2 encoder board)
+       6666  MediaPress (MPEG2 encoder board)
+07ca  AVerMedia Technologies Inc.
+       a301  AVerTV 301
+       b808  AVerTV DVB-T Volar (USB 2.0)
+07e2  ELMEG Communication Systems GmbH
+0842  NPG, Personal Grand Technology
+08ff  AuthenTec
+       afe4  [Anchor] AF-S2 FingerLoc Sensor Module
+0925  First International Computer, Inc.
+       1234  VA-502 Mainboard
+093a  PixArt Imaging Inc.
+       010e  Innovage Mini Digital Camera
+       010f  SDC-300 Webcam
+       020f  Digital Photo Viewer
+       2468  CIF Single Chip
+       2600  PAC7311
+       2603  Philips Webcam SPC500NC
+       2608  Maxell MaxCam RotaWeb
+09c1  Arris
+       0704  CM 200E Cable Modem
+0a89  BREA Technologies Inc
+0ace  ZyDAS
+       1211  ZD1211 IEEE 802.11b+g USB Adapter
+0b0b  Rhino Equipment Corp.
+       0105  Rhino R1T1
+       0205  Rhino R4FXO
+       0206  RCB4FXO 4-channel FXO analog telphony card
+       0305  Rhino R4T1
+       0405  Rhino R8FXX
+       0406  RCB8FXX 8-channel modular analog telphony card
+       0505  Rhino R24FXX
+       0506  RCB24FXS 24-Channel FXS analog telphony card
+       0605  Rhino R2T1
+       0705  Rhino R24FXS
+       0706  RCB24FXO 24-Channel FXO analog telphony card
+       0905  R1T3 Single T3 Digital Telephony Card
+       0906  RCB24FXX 24-channel modular analog telphony card
+       0a06  RCB672FXX 672-channel modular analog telphony card
+0b3d  Brontes Technologies
+0b49  ASCII Corporation
+       064f  Trance Vibrator
+0ccd  TerraTec Electronic GmbH
+       0038  Cinergy T^2 DVB-T Receiver
+0e11  Compaq Computer Corporation
+       0001  PCI to EISA Bridge
+       0002  PCI to ISA Bridge
+       0046  Smart Array 64xx
+               0e11 4091  Smart Array 6i
+               0e11 409a  Smart Array 641
+               0e11 409b  Smart Array 642
+               0e11 409c  Smart Array 6400
+               0e11 409d  Smart Array 6400 EM
+       0049  NC7132 Gigabit Upgrade Module
+       004a  NC6136 Gigabit Server Adapter
+       005a  Remote Insight II board - Lights-Out
+       007c  NC7770 1000BaseTX
+       007d  NC6770 1000BaseTX
+       0085  NC7780 1000BaseTX
+       00b1  Remote Insight II board - PCI device
+       00bb  NC7760
+       00ca  NC7771
+       00cb  NC7781
+       00cf  NC7772
+       00d0  NC7782
+       00d1  NC7783
+       00e3  NC7761
+       0508  Netelligent 4/16 Token Ring
+       1000  Triflex/Pentium Bridge, Model 1000
+       2000  Triflex/Pentium Bridge, Model 2000
+       3032  QVision 1280/p
+       3033  QVision 1280/p
+       3034  QVision 1280/p
+       4000  4000 [Triflex]
+       4040  Integrated Array
+       4048  Compaq Raid LC2
+       4050  Smart Array 4200
+       4051  Smart Array 4250ES
+       4058  Smart Array 431
+       4070  Smart Array 5300
+       4080  Smart Array 5i
+       4082  Smart Array 532
+       4083  Smart Array 5312
+       4091  Smart Array 6i
+       409a  Smart Array 641
+       409b  Smart Array 642
+       409c  Smart Array 6400
+       409d  Smart Array 6400 EM
+       6010  HotPlug PCI Bridge 6010
+       7020  USB Controller
+       a0ec  Fibre Channel Host Controller
+       a0f0  Advanced System Management Controller
+       a0f3  Triflex PCI to ISA Bridge
+       a0f7  PCI Hotplug Controller
+               8086 002a  PCI Hotplug Controller A
+               8086 002b  PCI Hotplug Controller B
+       a0f8  ZFMicro Chipset USB
+       a0fc  FibreChannel HBA Tachyon
+       ae10  Smart-2/P RAID Controller
+               0e11 4030  Smart-2/P Array Controller
+               0e11 4031  Smart-2SL Array Controller
+               0e11 4032  Smart Array 3200 Controller
+               0e11 4033  Smart Array 3100ES Controller
+               0e11 4034  Smart Array 221 Controller
+       ae29  MIS-L
+       ae2a  MPC
+       ae2b  MIS-E
+       ae31  System Management Controller
+       ae32  Netelligent 10/100 TX PCI UTP
+       ae33  Triflex Dual EIDE Controller
+       ae34  Netelligent 10 T PCI UTP
+       ae35  Integrated NetFlex-3/P
+       ae40  Netelligent Dual 10/100 TX PCI UTP
+       ae43  Netelligent Integrated 10/100 TX UTP
+       ae69  CETUS-L
+       ae6c  Northstar
+       ae6d  NorthStar CPU to PCI Bridge
+       b011  Netelligent 10/100 TX Embedded UTP
+       b012  Netelligent 10 T/2 PCI UTP/Coax
+       b01e  NC3120 Fast Ethernet NIC
+       b01f  NC3122 Fast Ethernet NIC
+       b02f  NC1120 Ethernet NIC
+       b030  Netelligent 10/100 TX UTP
+       b04a  10/100 TX PCI Intel WOL UTP Controller
+       b060  Smart Array 5300 Controller
+       b0c6  NC3161 Fast Ethernet NIC
+       b0c7  NC3160 Fast Ethernet NIC
+       b0d7  NC3121 Fast Ethernet NIC
+       b0dd  NC3131 Fast Ethernet NIC
+       b0de  NC3132 Fast Ethernet Module
+       b0df  NC6132 Gigabit Module
+       b0e0  NC6133 Gigabit Module
+       b0e1  NC3133 Fast Ethernet Module
+       b123  NC6134 Gigabit NIC
+       b134  NC3163 Fast Ethernet NIC
+       b13c  NC3162 Fast Ethernet NIC
+       b144  NC3123 Fast Ethernet NIC
+       b163  NC3134 Fast Ethernet NIC
+       b164  NC3165 Fast Ethernet Upgrade Module
+       b178  Smart Array 5i/532
+               0e11 4080  Smart Array 5i
+               0e11 4082  Smart Array 532
+               0e11 4083  Smart Array 5312
+       b1a4  NC7131 Gigabit Server Adapter
+       b200  Memory Hot-Plug Controller
+       b203  Integrated Lights Out Controller
+       b204  Integrated Lights Out  Processor
+       c000  Remote Insight Lights-Out Edition
+       f130  NetFlex-3/P ThunderLAN 1.0
+       f150  NetFlex-3/P ThunderLAN 2.3
+0e21  Cowon Systems, Inc.
+0e55  HaSoTec GmbH
+0eac  SHF Communication Technologies AG
+       0008  Ethernet Powerlink Managing Node 01
+0f62  Acrox Technologies Co., Ltd.
+# Formerly NCR
+1000  LSI Logic / Symbios Logic
+       0001  53c810
+               1000 1000  LSI53C810AE PCI to SCSI I/O Processor
+       0002  53c820
+       0003  53c825
+               1000 1000  LSI53C825AE PCI to SCSI I/O Processor (Ultra Wide)
+       0004  53c815
+       0005  53c810AP
+       0006  53c860
+               1000 1000  LSI53C860E PCI to Ultra SCSI I/O Processor
+       000a  53c1510
+               0e11 b143  Integrated Dual Channel Wide Ultra2 SCSI Controller
+               1000 1000  LSI53C1510 PCI to Dual Channel Wide Ultra2 SCSI Controller (Nonintelligent mode)
+       000b  53C896/897
+               0e11 6004  EOB003 Series SCSI host adapter
+               1000 1000  LSI53C896/7 PCI to Dual Channel Ultra2 SCSI Multifunction Controller
+               1000 1010  LSI22910 PCI to Dual Channel Ultra2 SCSI host adapter
+               1000 1020  LSI21002 PCI to Dual Channel Ultra2 SCSI host adapter
+               13e9 1000  6221L-4U (Dual U2W SCSI, dual 10/100TX, graphics)
+       000c  53c895
+               1000 1010  LSI8951U PCI to Ultra2 SCSI host adapter
+               1000 1020  LSI8952U PCI to Ultra2 SCSI host adapter
+               1de1 3906  DC-390U2B SCSI adapter
+               1de1 3907  DC-390U2W
+       000d  53c885
+       000f  53c875
+               0e11 7004  Embedded Ultra Wide SCSI Controller
+               1000 1000  LSI53C876/E PCI to Dual Channel SCSI Controller
+               1000 1010  LSI22801 PCI to Dual Channel Ultra SCSI host adapter
+               1000 1020  LSI22802 PCI to Dual Channel Ultra SCSI host adapter
+               1092 8760  FirePort 40 Dual SCSI Controller
+               1775 10d0  V5D Single Board Computer Wide Ultra SCSI
+               1775 10d1  V5D Single Board Computer Ultra SCSI
+               1de1 3904  DC390F/U Ultra Wide SCSI Adapter
+               4c53 1000  CC7/CR7/CP7/VC7/VP7/VR7 mainboard
+               4c53 1050  CT7 mainboard
+       0010  53C1510
+               0e11 4040  Integrated Smart Array Controller
+               0e11 4048  RAID LC2 Controller
+               1000 1000  53C1510 PCI to Dual Channel Wide Ultra2 SCSI Controller (Intelligent mode)
+       0012  53c895a
+               1000 1000  LSI53C895A PCI to Ultra2 SCSI Controller
+       0013  53c875a
+               1000 1000  LSI53C875A PCI to Ultra SCSI Controller
+       0020  53c1010 Ultra3 SCSI Adapter
+               1000 1000  LSI53C1010-33 PCI to Dual Channel Ultra160 SCSI Controller
+               107b 1040  Server Onboard 53C1010-33
+               1de1 1020  DC-390U3W
+       0021  53c1010 66MHz  Ultra3 SCSI Adapter
+               1000 1000  LSI53C1000/1000R/1010R/1010-66 PCI to Ultra160 SCSI Controller
+               1000 1010  Asus TR-DLS onboard 53C1010-66
+               103c 1300  Ultra160 SCSI [AB306A]
+               103c 1310  Ultra160 SCSI [A9918A]
+               103c 1330  Ultra160 SCSI [A7059A]
+               103c 1340  Ultra160 SCSI [A7060A]
+               124b 1070  PMC-USCSI3
+               4c53 1080  CT8 mainboard
+               4c53 1300  P017 mezzanine (32-bit PMC)
+               4c53 1310  P017 mezzanine (64-bit PMC)
+       0030  53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI
+               0e11 00da  ProLiant ML 350
+               1028 0123  LSI Logic 1020/1030
+               1028 014a  LSI Logic 1020/1030
+               1028 016c  PowerEdge 1850 MPT Fusion SCSI/RAID (Perc 4)
+               1028 0183  LSI Logic 1020/1030
+               1028 018a  PERC 4/IM
+               1028 1010  LSI U320 SCSI Controller
+               103c 12c5  Ultra320 SCSI [A7173A]
+               124b 1170  PMC-USCSI320
+               1734 1052  PRIMERGY BX/RX/TX S2 series onboard SCSI(IME)
+       0031  53c1030ZC PCI-X Fusion-MPT Dual Ultra320 SCSI
+       0032  53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI
+               1000 1000  LSI53C1020/1030 PCI-X to Ultra320 SCSI Controller
+       0033  1030ZC_53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI
+       0040  53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI
+               1000 0033  MegaRAID SCSI 320-2XR
+               1000 0066  MegaRAID SCSI 320-2XRWS
+       0041  53C1035ZC PCI-X Fusion-MPT Dual Ultra320 SCSI
+       0050  SAS1064 PCI-X Fusion-MPT SAS
+               1028 1f04  SAS 5/E
+               1028 1f09  SAS 5i/R
+       0054  SAS1068 PCI-X Fusion-MPT SAS
+               1028 1f04  SAS 5/E Adapter Controller
+               1028 1f05  SAS 5/i Adapter Controller
+               1028 1f06  SAS 5/i Integrated Controller
+               1028 1f07  SAS 5/iR Integrated RAID Controller
+               1028 1f08  SAS 5/iR Integrated RAID Controller
+               1028 1f09  SAS 5/iR Adapter RAID Controller
+       0055  SAS1068 PCI-X Fusion-MPT SAS
+               1033 8336  SAS1068
+       0056  SAS1064ET PCI-Express Fusion-MPT SAS
+       0057  M1064E MegaRAID SAS
+               8086 346c  Embedded Software RAID Technology II (ESTRII)
+       0058  SAS1068E PCI-Express Fusion-MPT SAS
+               1028 021d  SAS 6/iR Integrated Workstations RAID Controller
+               1028 1f0e  SAS 6/iR Adapter RAID Controller
+               1028 1f0f  SAS 6/iR Integrated Blades RAID Controller
+               1028 1f10  SAS 6/iR Integrated RAID Controller
+       0059  MegaRAID SAS 8208ELP/8208ELP
+       005a  SAS1066E PCI-Express Fusion-MPT SAS
+       005c  SAS1064A PCI-X Fusion-MPT SAS
+       005e  SAS1066 PCI-X Fusion-MPT SAS
+       0060  MegaRAID SAS 1078
+               1000 1006  MegaRAID SAS 8888ELP
+               1000 100a  MegaRAID SAS 8708ELP
+               1000 100e  MegaRAID SAS 8884E
+               1000 100f  MegaRAID SAS 8708E
+               1000 1010  MegaRAID SATA 350-8ELP
+               1000 1011  MegaRAID SATA 350-4ELP
+               1000 1012  MegaRAID SAS 8704ELP
+               1000 1016  MegaRAID SAS 8880EM2
+               1014 0363  MegaRAID SAS PCI Express ROMB
+               1014 0364  SystemX MegaRAID SAS 8808E
+               1014 0365  SystemX MegaRAID SAS 8884E
+               1014 0379  SystemX MegaRAID SAS 8880EM2
+               1028 1f0a  PERC 6/E Adapter RAID Controller
+               1028 1f0b  PERC 6/i Adapter RAID Controller
+               1028 1f0c  PERC 6/i Integrated RAID Controller
+               1028 1f0d  PERC 6/i Integrated RAID Controller
+               1028 1f11  CERC 6/i Integrated RAID Controller
+               1033 835a  MegaRAID SAS PCI Express ROMB
+               1043 824d  MegaRAID SAS PCI Express ROMB
+               1170 002f  MegaRAID SAS PCI Express ROMB
+               1170 0036  MegaRAID SAS PCI Express ROMB
+               15d9 c080  MegaRAID SAS PCI Express ROMB
+               17aa 6b7c  MegaRAID SAS PCI Express ROMB
+               18a1 0003  LSI MegaRAID SAS PCI Express ROMB
+               8086 1006  RAID Controller SRCSAS28EP
+               8086 100a  RAID Controller SRCSAS28EV
+               8086 1010  RAID Controller SRCSATA28E
+               8086 34cc  Integrated RAID Controller SROMBSAS28E
+               8086 34cd  Integrated RAID Controller SROMBSAS28E
+       0062  SAS1078 PCI-Express Fusion-MPT SAS
+               1000 0062  SAS1078 PCI-Express Fusion-MPT SAS
+       007c  MegaRAID SAS 1078DE
+               1014 0395  ServeRAID-AR10is SAS/SATA Controller
+       008f  53c875J
+               1092 8000  FirePort 40 SCSI Controller
+               1092 8760  FirePort 40 Dual SCSI Host Adapter
+       0407  MegaRAID
+               1000 0530  MegaRAID 530 SCSI 320-0X RAID Controller
+               1000 0531  MegaRAID 531 SCSI 320-4X RAID Controller
+               1000 0532  MegaRAID 532 SCSI 320-2X RAID Controller
+               1028 0531  PowerEdge Expandable RAID Controller 4/QC
+               1028 0533  PowerEdge Expandable RAID Controller 4/QC
+               8086 0530  MegaRAID Intel RAID Controller SRCZCRX
+               8086 0532  MegaRAID Intel RAID Controller SRCU42X
+       0408  MegaRAID
+               1000 0001  MegaRAID SCSI 320-1E RAID Controller
+               1000 0002  MegaRAID SCSI 320-2E RAID Controller
+               1025 004d  MegaRAID ACER ROMB-2E RAID Controller
+               1028 0001  PowerEdge RAID Controller PERC4e/SC
+               1028 0002  PowerEdge RAID Controller PERC4e/DC
+               1028 0012  PowerEdge RAID Controller RAC4
+               1028 0015  PowerEdge RAID Controller PERC5
+               1028 1f03  PowerEdge RAID Controller PERC5
+               1734 1065  FSC MegaRAID PCI Express ROMB
+               8086 0002  MegaRAID Intel RAID Controller SRCU42E
+       0409  MegaRAID
+               1000 3004  MegaRAID SATA 300-4X RAID Controller
+               1000 3008  MegaRAID SATA 300-8X RAID Controller
+               8086 3008  MegaRAID RAID Controller SRCS28X
+               8086 3431  MegaRAID RAID Controller Alief SROMBU42E
+               8086 3499  MegaRAID RAID Controller Harwich SROMBU42E
+       0411  MegaRAID SAS
+               1000 1001  MegaRAID SAS 8408E
+               1000 1002  MegaRAID SAS 8480E
+               1000 1003  MegaRAID SAS 8344ELP
+               1000 1004  MegaRAID SAS 8308ELP
+               1000 1008  MegaRAID SAS 84016E
+               1000 100c  MegaRAID SATA 300-12E
+               1000 100d  MegaRAID SATA 300-16E
+               1000 2004  MegaRAID SATA 300-8ELP
+               1000 2005  MegaRAID SATA 300-4ELP
+               1033 8287  MegaRAID SAS PCI Express ROMB
+               1054 3016  MegaRAID SAS RoMB Server
+               1734 1081  MegaRAID SAS PCI Express ROMB
+               1734 10a3  MegaRAID SAS PCI Express ROMB
+               8086 1001  RAID Controller SRCSAS18E
+               8086 1003  RAID Controller SRCSAS144E
+               8086 3500  SROMBSAS18E RAID Controller
+               8086 3501  SROMBSAS18E RAID Controller
+               8086 3504  SROMBSAS18E RAID Controller
+       0413  MegaRAID SAS Verde ZCR
+               1000 1005  MegaRAID SAS 8300XLP
+       0621  FC909 Fibre Channel Adapter
+       0622  FC929 Fibre Channel Adapter
+               1000 1020  44929 O Dual Fibre Channel card
+       0623  FC929 LAN
+       0624  FC919 Fibre Channel Adapter
+       0625  FC919 LAN
+       0626  FC929X Fibre Channel Adapter
+               1000 1010  7202-XP-LC Dual Fibre Channel card
+       0627  FC929X LAN
+       0628  FC919X Fibre Channel Adapter
+       0629  FC919X LAN
+       0640  FC949X Fibre Channel Adapter
+       0642  FC939X Fibre Channel Adapter
+       0646  FC949ES Fibre Channel Adapter
+       0701  83C885 NT50 DigitalScape Fast Ethernet
+       0702  Yellowfin G-NIC gigabit ethernet
+               1318 0000  PEI100X
+       0804  SA2010
+       0805  SA2010ZC
+       0806  SA2020
+       0807  SA2020ZC
+       0901  61C102
+       1000  63C815
+       1960  MegaRAID
+               1000 0518  MegaRAID 518 SCSI 320-2 Controller
+               1000 0520  MegaRAID 520 SCSI 320-1 Controller
+               1000 0522  MegaRAID 522 i4 133 RAID Controller
+               1000 0523  MegaRAID SATA 150-6 RAID Controller
+               1000 4523  MegaRAID SATA 150-4 RAID Controller
+               1000 a520  MegaRAID ZCR SCSI 320-0 Controller
+               1028 0518  MegaRAID 518 DELL PERC 4/DC RAID Controller
+               1028 0520  MegaRAID 520 DELL PERC 4/SC RAID Controller
+               1028 0531  PowerEdge Expandable RAID Controller 4/QC
+               1028 0533  PowerEdge Expandable RAID Controller 4/QC
+               8086 0520  MegaRAIDRAID Controller SRCU41L
+               8086 0523  MegaRAID RAID Controller SRCS16
+1001  Kolter Electronic
+       0010  PCI 1616 Measurement card with 32 digital I/O lines
+       0011  OPTO-PCI Opto-Isolated digital I/O board
+       0012  PCI-AD/DA Analogue I/O board
+       0013  PCI-OPTO-RELAIS Digital I/O board with relay outputs
+       0014  PCI-Counter/Timer Counter Timer board
+       0015  PCI-DAC416 Analogue output board
+       0016  PCI-MFB Analogue I/O board
+       0017  PROTO-3 PCI Prototyping board
+       9100  INI-9100/9100W SCSI Host
+1002  ATI Technologies Inc
+       3150  M24 1P [Radeon Mobility X600]
+               103c 0934  nx8220
+       3151  M24 [FireMV 2400]
+       3152  M22 [Radeon Mobility X300]
+       3154  M24GL [Mobility FireGL V3200]
+       3171  M24 [FireMV 2400] (Secondary)
+       3e50  RV380 0x3e50 [Radeon X600]
+       3e54  RV380 0x3e54 [FireGL V3200]
+       3e70  RV380 [Radeon X600] (Secondary)
+       4136  Radeon IGP 320 M
+       4137  Radeon IGP330/340/350
+       4144  R300 AD [Radeon 9500 Pro]
+       4145  R300 AE [Radeon 9700 Pro]
+       4146  R300 AF [Radeon 9700 Pro]
+       4147  R300 AG [FireGL Z1/X1]
+       4148  R350 AH [Radeon 9800]
+       4149  R350 AI [Radeon 9800]
+       414a  R350 AJ [Radeon 9800]
+       414b  R350 AK [FireGL X2]
+       4150  RV350 AP [Radeon 9600]
+               1002 0002  R9600 Pro primary (Asus OEM for HP)
+               1002 0003  R9600 Pro secondary (Asus OEM for HP)
+               1002 4722  All-in-Wonder 2006 AGP Edition
+               1458 4024  Giga-Byte GV-R96128D (Primary)
+               148c 2064  PowerColor R96A-C3N
+               148c 2066  PowerColor R96A-C3N
+               174b 7c19  Sapphire Atlantis Radeon 9600 Pro
+               174b 7c29  GC-R9600PRO [Sapphire] (Primary)
+               17ee 2002  Radeon 9600 256Mb Primary
+               18bc 0101  GC-R9600PRO (Primary)
+       4151  RV350 AQ [Radeon 9600]
+               1043 c004  A9600SE
+       4152  RV350 AR [Radeon 9600]
+               1002 0002  Radeon 9600XT
+               1002 4772  All-in-Wonder 9600 XT
+               1043 c002  Radeon 9600 XT TVD
+               1043 c01a  A9600XT/TD
+               174b 7c29  Sapphire Radeon 9600XT
+               1787 4002  Radeon 9600 XT
+       4153  RV350 AS [Radeon 9550]
+               1043 010c  A9550GE/TD
+               1462 932c  RX9550SE-TD128 (MS-8932)
+       4154  RV350 AT [FireGL T2]
+       4155  RV350 AU [FireGL T2]
+       4156  RV350 AV [FireGL T2]
+       4157  RV350 AW [FireGL T2]
+       4158  68800AX [Mach32]
+       4164  R300 AD [Radeon 9500 Pro] (Secondary)
+       4165  R300 AE [Radeon 9700 Pro] (Secondary)
+       4166  R300 AF [Radeon 9700 Pro] (Secondary)
+       4168  Radeon R350 [Radeon 9800] (Secondary)
+       4170  RV350 AP [Radeon 9600] (Secondary)
+               1002 0003  R9600 Pro secondary (Asus OEM for HP)
+               1002 4723  All-in-Wonder 2006 AGP Edition (Secondary)
+               1458 4025  Giga-Byte GV-R96128D (Secondary)
+               148c 2067  PowerColor R96A-C3N (Secondary)
+               174b 7c28  GC-R9600PRO [Sapphire] (Secondary)
+               17ee 2003  Radeon 9600 256Mb (Secondary)
+               18bc 0100  GC-R9600PRO (Secondary)
+       4171  RV350 AQ [Radeon 9600] (Secondary)
+               1043 c005  A9600SE (Secondary)
+       4172  RV350 AR [Radeon 9600] (Secondary)
+               1002 0003  Radeon 9600XT (Secondary)
+               1002 4773  All-in-Wonder 9600 XT (Secondary)
+               1043 c003  A9600XT (Secondary)
+               1043 c01b  A9600XT/TD (Secondary)
+               174b 7c28  Sapphire Radeon 9600XT (Secondary)
+               1787 4003  Radeon 9600 XT (Secondary)
+       4173  RV350 AS [Radeon 9550] (Secondary)
+               1043 010d  A9550GE/TD (Secondary)
+       4237  Radeon 7000 IGP
+       4242  R200 BB [Radeon All in Wonder 8500DV]
+               1002 02aa  Radeon 8500 AIW DV Edition
+       4243  R200 BC [Radeon All in Wonder 8500]
+       4336  Radeon Mobility U1
+               1002 4336  Pavilion ze4300 ATI Radeon Mobility U1 (IGP 320 M)
+               103c 0024  Pavilion ze4400 builtin Video
+               161f 2029  eMachines M5312 builtin Video
+       4337  Radeon IGP 330M/340M/350M
+               1014 053a  ThinkPad R40e
+               103c 0850  Radeon IGP 345M
+       4341  IXP150 AC'97 Audio Controller
+       4342  IXP200 3COM 3C920B Ethernet Controller
+       4345  EHCI USB Controller
+       4347  OHCI USB Controller #1
+       4348  OHCI USB Controller #2
+       4349  Dual Channel Bus Master PCI IDE Controller
+       434d  IXP AC'97 Modem
+       4353  SMBus
+       4354  215CT [Mach64 CT]
+       4358  210888CX [Mach64 CX]
+       4361  IXP SB300 AC'97 Audio Controller
+       4363  SMBus
+       436e  436E Serial ATA Controller
+       4370  IXP SB400 AC'97 Audio Controller
+               1025 0079  Aspire 5024WLMMi
+               1025 0091  Aspire 5032WXMi
+               103c 308b  MX6125
+               105b 0c81  Realtek ALC 653
+               107b 0300  MX6421
+       4371  IXP SB400 PCI-PCI Bridge
+               103c 308b  MX6125
+               1462 7217  Aspire L250
+       4372  IXP SB400 SMBus Controller
+               1025 0080  Aspire 5024WLMMi
+               103c 308b  MX6125
+               1462 7217  Aspire L250
+       4373  IXP SB400 USB2 Host Controller
+               1025 0080  Aspire 5024WLMMi
+               103c 308b  MX6125
+               1462 7217  Aspire L250
+       4374  IXP SB400 USB Host Controller
+               103c 308b  MX6125
+               1462 7217  Aspire L250
+       4375  IXP SB400 USB Host Controller
+               1025 0080  Aspire 5024WLMMi
+               103c 308b  MX6125
+               1462 7217  Aspire L250
+       4376  IXP SB400 IDE Controller
+               1025 0080  Aspire 5024WLMMi
+               103c 308b  MX6125
+               1462 7217  Aspire L250
+       4377  IXP SB400 PCI-ISA Bridge
+               1025 0080  Aspire 5024WLMi
+               103c 308b  MX6125
+               1462 7217  Aspire L250
+       4378  SB400 AC'97 Modem Controller
+               1025 0080  Aspire 5024WLMMi
+               103c 308b  MX6125
+       4379  IXP SB400 Serial ATA Controller
+               1462 7141  Aspire L250
+       437a  IXP SB400 Serial ATA Controller
+               1002 4379  4379 Serial ATA Controller
+               1002 437a  437A Serial ATA Controller
+               1462 7141  Aspire L250
+               14f1 8800  Leadtek WinFast TV2000XP Expert
+       437b  IXP SB4x0 High Definition Audio Controller
+               1002 437b  IXP SB4x0 High Definition Audio Controller
+               10cf 1326  Fujitsu Lifebook A3040
+               1734 10b8  Realtek High Definition Audio
+       4380  SB600 Non-Raid-5 SATA
+               103c 2813  DC5750 Microtower
+               1462 7327  K9AG Neo2
+               17f2 5999  KI690-AM2 Motherboard
+       4381  SB600 Raid-5 SATA
+       4382  SB600 AC97 Audio
+       4383  SBx00 Azalia (Intel HDA)
+               103c 280a  DC5750 Microtower
+               17f2 5000  KI690-AM2 Motherboard
+       4384  SBx00 PCI to PCI Bridge
+       4385  SBx00 SMBus Controller
+               103c 280a  DC5750 Microtower
+               1462 7368  K9AG Neo2
+               17f2 5000  KI690-AM2 Motherboard
+       4386  SB600 USB Controller (EHCI)
+               103c 280a  DC5750 Microtower
+               1462 7368  K9AG Neo2
+               17f2 5000  KI690-AM2 Motherboard
+       4387  SB600 USB (OHCI0)
+               103c 280a  DC5750 Microtower
+               1462 7368  K9AG Neo2
+               17f2 5000  KI690-AM2 Motherboard
+       4388  SB600 USB (OHCI1)
+               103c 280a  DC5750 Microtower
+               1462 7368  K9AG Neo2
+               17f2 5000  KI690-AM2 Motherboard
+       4389  SB600 USB (OHCI2)
+               103c 280a  DC5750 Microtower
+               1462 7368  K9AG Neo2
+               17f2 5000  KI690-AM2 Motherboard
+       438a  SB600 USB (OHCI3)
+               103c 280a  DC5750 Microtower
+               1462 7368  K9AG Neo2
+               17f2 5000  KI690-AM2 Motherboard
+       438b  SB600 USB (OHCI4)
+               103c 280a  DC5750 Microtower
+               1462 7368  K9AG Neo2
+               17f2 5000  KI690-AM2 Motherboard
+       438c  SB600 IDE
+               103c 280a  DC5750 Microtower
+               1462 7368  K9AG Neo2
+               17f2 5000  KI690-AM2 Motherboard
+       438d  SB600 PCI to LPC Bridge
+               103c 280a  DC5750 Microtower
+               1462 7368  K9AG Neo2
+               17f2 5000  KI690-AM2 Motherboard
+       438e  SB600 AC97 Modem
+       4390  SB700/SB800 SATA Controller [IDE mode]
+       4391  SB700/SB800 SATA Controller [AHCI mode]
+       4392  SB700/SB800 SATA Controller [Non-RAID5 mode]
+       4393  SB700/SB800 SATA Controller [RAID5 mode]
+       4394  SB700/SB800 SATA Controller [SATA and FC Enabled]
+       4395  SB800 SATA Controller [Storage mode with HyperFlash-PCIE]
+       4396  SB700/SB800 USB EHCI Controller
+       4397  SB700/SB800 USB OHCI0 Controller
+       4398  SB700 USB OHCI1 Controller
+       4399  SB700/SB800 USB OHCI2 Controller
+       439c  SB700/SB800 IDE Controller
+       439d  SB700/SB800 LPC host controller
+       4437  Radeon Mobility 7000 IGP
+       4554  210888ET [Mach64 ET]
+       4654  Mach64 VT
+       4742  3D Rage Pro AGP 1X/2X
+               1002 0040  Rage Pro Turbo AGP 2X
+               1002 0044  Rage Pro Turbo AGP 2X
+               1002 0061  Rage Pro AIW AGP 2X
+               1002 0062  Rage Pro AIW AGP 2X
+               1002 0063  Rage Pro AIW AGP 2X
+               1002 0080  Rage Pro Turbo AGP 2X
+               1002 0084  Rage Pro Turbo AGP 2X
+               1002 4742  Rage Pro Turbo AGP 2X
+               1002 8001  Rage Pro Turbo AGP 2X
+               1028 0082  Rage Pro Turbo AGP 2X
+               1028 4082  Optiplex GX1 Onboard Display Adapter
+               1028 8082  Rage Pro Turbo AGP 2X
+               1028 c082  Rage Pro Turbo AGP 2X
+               8086 4152  Xpert 98D AGP 2X
+               8086 464a  Rage Pro Turbo AGP 2X
+       4744  3D Rage Pro AGP 1X
+               1002 4744  Rage Pro Turbo AGP
+       4747  3D Rage Pro
+       4749  3D Rage Pro
+               1002 0061  Rage Pro AIW
+               1002 0062  Rage Pro AIW
+       474c  Rage XC
+       474d  Rage XL AGP 2X
+               1002 0004  Xpert 98 RXL AGP 2X
+               1002 0008  Xpert 98 RXL AGP 2X
+               1002 0080  Rage XL AGP 2X
+               1002 0084  Xpert 98 AGP 2X
+               1002 474d  Rage XL AGP
+               1033 806a  Rage XL AGP
+       474e  Rage XC AGP
+               1002 474e  Rage XC AGP
+       474f  Rage XL
+               1002 0008  Rage XL
+               1002 474f  Rage XL
+       4750  3D Rage Pro 215GP
+               1002 0040  Rage Pro Turbo
+               1002 0044  Rage Pro Turbo
+               1002 0080  Rage Pro Turbo
+               1002 0084  Rage Pro Turbo
+               1002 4750  Rage Pro Turbo
+       4751  3D Rage Pro 215GQ
+       4752  Rage XL
+               0e11 001e  Proliant Rage XL
+               1002 0008  Rage XL
+               1002 4752  Proliant Rage XL
+               1002 8008  Rage XL
+               1028 00ce  PowerEdge 1400
+               1028 00d1  PowerEdge 2550
+               1028 00d9  PowerEdge 2500
+               1028 0134  PowerEdge 600SC
+               1028 014a  PowerEdge 1750
+               1028 0165  PowerEdge 750
+               103c 10e1  NetServer Rage XL
+               107b 6400  6400 Server
+               1734 007a  PRIMERGY RX/TX series onboard VGA
+               8086 3411  SDS2 Mainboard
+               8086 3427  S875WP1-E mainboard
+               8086 5744  S845WD1-E mainboard
+       4753  Rage XC
+               1002 4753  Rage XC
+       4754  3D Rage I/II 215GT [Mach64 GT]
+       4755  3D Rage II+ 215GTB [Mach64 GTB]
+       4756  3D Rage IIC 215IIC [Mach64 GT IIC]
+               1002 4756  Rage IIC
+       4757  3D Rage IIC AGP
+               1002 4757  Rage IIC AGP
+               1028 0089  Rage 3D IIC
+               1028 008e  PowerEdge 1300 onboard video
+               1028 4082  Rage 3D IIC
+               1028 8082  Rage 3D IIC
+               1028 c082  Rage 3D IIC
+       4758  210888GX [Mach64 GX]
+       4759  3D Rage IIC
+       475a  3D Rage IIC AGP
+               1002 0084  Rage 3D Pro AGP 2x XPERT 98
+               1002 0087  Rage 3D IIC
+               1002 475a  Rage IIC AGP
+       4964  Radeon RV250 Id [Radeon 9000]
+       4965  Radeon RV250 Ie [Radeon 9000]
+       4966  Radeon RV250 If [Radeon 9000]
+               10f1 0002  RV250 If [Tachyon G9000 PRO]
+               148c 2039  RV250 If [Radeon 9000 Pro "Evil Commando"]
+               1509 9a00  RV250 If [Radeon 9000 "AT009"]
+               1681 0040  RV250 If [3D prophet 9000]
+               174b 7176  RV250 If [Sapphire Radeon 9000 Pro]
+               174b 7192  RV250 If [Radeon 9000 "Atlantis"]
+               17af 2005  RV250 If [Excalibur Radeon 9000 Pro]
+               17af 2006  RV250 If [Excalibur Radeon 9000]
+       4967  Radeon RV250 Ig [Radeon 9000]
+       496e  Radeon RV250 [Radeon 9000] (Secondary)
+       4a48  R420 JH [Radeon X800]
+       4a49  R420 JI [Radeon X800PRO]
+       4a4a  R420 JJ [Radeon X800SE]
+       4a4b  R420 JK [Radeon X800]
+       4a4c  R420 JL [Radeon X800]
+       4a4d  R420 JM [FireGL X3]
+       4a4e  M18 JN [Radeon Mobility 9800]
+       4a4f  Radeon X800 SE (R420) (AGP)
+       4a50  R420 JP [Radeon X800XT]
+       4a54  R420 [Radeon X800 VE]
+       4a69  R420 [Radeon X800 PRO/GTO] (Secondary)
+       4a6a  R420 [Radeon X800] (Secondary)
+       4a6b  R420 [Radeon X800] (Secondary)
+       4a70  R420 [X800XT-PE] (Secondary)
+       4a74  R420 [Radeon X800 VE] (Secondary)
+       4b48  Radeon X850 Consumer (R481)
+       4b49  R480 [Radeon X850XT]
+       4b4a  Radeon X850 SE (R480) (AGP)
+       4b4b  R480 [Radeon X850Pro]
+       4b4c  R481 [Radeon X850XT-PE]
+       4b69  R480 [Radeon X850XT] (Secondary)
+       4b6b  R480 [Radeon X850Pro] (Secondary)
+       4b6c  R481 [Radeon X850XT-PE] (Secondary)
+       4c42  3D Rage LT Pro AGP-133
+               0e11 b0e7  Rage LT Pro (Compaq Presario 5240)
+               0e11 b0e8  Rage 3D LT Pro
+               0e11 b10e  3D Rage LT Pro (Compaq Armada 1750)
+               1002 0040  Rage LT Pro AGP 2X
+               1002 0044  Rage LT Pro AGP 2X
+               1002 4c42  Rage LT Pro AGP 2X
+               1002 8001  Rage LT Pro AGP 2X
+               1028 0085  Rage 3D LT Pro
+       4c44  3D Rage LT Pro AGP-66
+       4c45  Rage Mobility M3 AGP
+       4c46  Rage Mobility M3 AGP 2x
+               1002 0155  IBM Thinkpad A22p
+               1014 0155  IBM Thinkpad A22p
+               1028 00b1  Latitude C600
+       4c47  3D Rage LT-G 215LG
+       4c49  3D Rage LT Pro
+               1002 0004  Rage LT Pro
+               1002 0040  Rage LT Pro
+               1002 0044  Rage LT Pro
+               1002 4c49  Rage LT Pro
+       4c4d  Rage Mobility P/M AGP 2x
+               0e11 b111  Armada M700
+               0e11 b160  Armada E500
+               1002 0084  Xpert 98 AGP 2X (Mobility)
+               1014 0154  ThinkPad A20m/A21m
+               1028 00aa  Latitude CPt
+               1028 00bb  Latitude CPx
+               1179 ff00  Satellite 1715XCDS laptop
+               13bd 1019  PC-AR10
+       4c4e  Rage Mobility L AGP 2x
+       4c50  3D Rage LT Pro
+               1002 4c50  Rage LT Pro
+       4c51  3D Rage LT Pro
+       4c52  Rage Mobility P/M
+               1033 8112  Versa Note VXi
+       4c53  Rage Mobility L
+       4c54  264LT [Mach64 LT]
+       4c57  Radeon Mobility M7 LW [Radeon Mobility 7500]
+               1014 0517  ThinkPad T30
+               1014 0530  ThinkPad T42 2373-4WU
+               1028 00e6  Radeon Mobility M7 LW (Dell Inspiron 8100)
+               1028 012a  Latitude C640
+               1043 1622  Mobility Radeon M7 (L3C/S)
+               144d c006  Radeon Mobility M7 LW in vpr Matrix 170B4
+       4c58  Radeon RV200 LX [Mobility FireGL 7800 M7]
+       4c59  Radeon Mobility M6 LY
+               0e11 b111  Evo N600c
+               1014 0235  ThinkPad A30/A30p (2652/2653)
+               1014 0239  ThinkPad X22/X23/X24
+               104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
+               104d 8140  PCG-Z1SP laptop
+               1509 1930  Medion MD9703
+       4c5a  Radeon Mobility M6 LZ
+       4c64  Radeon RV250 Ld [Radeon Mobility 9000 M9]
+       4c65  Radeon RV250 Le [Radeon Mobility 9000 M9]
+       4c66  Radeon RV250 [Mobility FireGL 9000]
+               1014 054d  ThinkPad T41
+       4c67  Radeon RV250 Lg [Radeon Mobility 9000 M9]
+# Secondary chip to the Lf
+       4c6e  Radeon RV250 Ln [Radeon Mobility 9000 M9] (Secondary)
+       4d46  Rage Mobility M4 AGP
+       4d4c  Rage Mobility M4 AGP
+       4d52  Theater 550 PRO PCI [ATI TV Wonder 550]
+       4d53  Theater 550 PRO PCIe
+       4e44  Radeon R300 ND [Radeon 9700 Pro]
+               1002 515e  Radeon ES1000
+               1002 5965  Radeon ES1000
+       4e45  Radeon R300 NE [Radeon 9500 Pro]
+               1002 0002  Radeon R300 NE [Radeon 9500 Pro]
+               1681 0002  Hercules 3D Prophet 9500 PRO [Radeon 9500 Pro]
+       4e46  R300 NF [Radeon 9600 TX]
+       4e47  Radeon R300 NG [FireGL X1]
+       4e48  Radeon R350 [Radeon 9800 Pro]
+       4e49  Radeon R350 [Radeon 9800]
+       4e4a  R360 NJ [Radeon 9800 XT]
+               1002 4e4a  R360 [Radeon 9800 XT]
+       4e4b  R350 NK [FireGL X2]
+       4e50  RV350 [Mobility Radeon 9600 M10]
+               1025 005a  TravelMate 290
+               103c 088c  NC8000 laptop
+               103c 0890  NC6000 laptop
+               144d c00c  P35 notebook
+               1462 0311  MSI M510A
+               1734 1055  Amilo M1420W
+       4e51  M10 NQ [Radeon Mobility 9600]
+       4e52  RV350 [Mobility Radeon 9600 M10]
+               144d c00c  P35 notebook
+       4e53  M10 NS [Radeon Mobility 9600]
+       4e54  M10 NT [FireGL Mobility T2]
+       4e56  M11 NV [FireGL Mobility T2e]
+       4e64  Radeon R300 [Radeon 9700 Pro] (Secondary)
+       4e65  Radeon R300 [Radeon 9500 Pro] (Secondary)
+               1002 0003  Radeon R300 NE [Radeon 9500 Pro]
+               1681 0003  Hercules 3D Prophet 9500 PRO [Radeon 9500 Pro] (Secondary)
+       4e66  RV350 NF [Radeon 9600] (Secondary)
+       4e67  Radeon R300 [FireGL X1] (Secondary)
+       4e68  Radeon R350 [Radeon 9800 Pro] (Secondary)
+       4e69  Radeon R350 [Radeon 9800] (Secondary)
+       4e6a  RV350 NJ [Radeon 9800 XT] (Secondary)
+               1002 4e6a  R360 [Radeon 9800 XT] (Secondary)
+               1002 4e71  M10 NQ [Radeon Mobility 9600]
+       4e71  M10 NQ [Radeon Mobility 9600] (Secondary)
+       4f72  RV250 [Radeon 9000 Series]
+       4f73  Radeon RV250 [Radeon 9000 Series] (Secondary)
+       5041  Rage 128 PA/PRO
+       5042  Rage 128 PB/PRO AGP 2x
+       5043  Rage 128 PC/PRO AGP 4x
+       5044  Rage 128 PD/PRO TMDS
+               1002 0028  Rage 128 AIW
+               1002 0029  Rage 128 AIW
+       5045  Rage 128 PE/PRO AGP 2x TMDS
+       5046  Rage 128 PF/PRO AGP 4x TMDS
+               1002 0004  Rage Fury Pro
+               1002 0008  Rage Fury Pro/Xpert 2000 Pro
+               1002 0014  Rage Fury Pro
+               1002 0018  Rage Fury Pro/Xpert 2000 Pro
+               1002 0028  Rage 128 Pro AIW AGP
+               1002 002a  Rage 128 Pro AIW AGP
+               1002 0048  Rage Fury Pro
+               1002 2000  Rage Fury MAXX AGP 4x (TMDS) (VGA device)
+               1002 2001  Rage Fury MAXX AGP 4x (TMDS) (Extra device?!)
+       5047  Rage 128 PG/PRO
+       5048  Rage 128 PH/PRO AGP 2x
+       5049  Rage 128 PI/PRO AGP 4x
+       504a  Rage 128 PJ/PRO TMDS
+       504b  Rage 128 PK/PRO AGP 2x TMDS
+       504c  Rage 128 PL/PRO AGP 4x TMDS
+       504d  Rage 128 PM/PRO
+       504e  Rage 128 PN/PRO AGP 2x
+       504f  Rage 128 PO/PRO AGP 4x
+       5050  Rage 128 PP/PRO TMDS [Xpert 128]
+               1002 0008  Xpert 128
+       5051  Rage 128 PQ/PRO AGP 2x TMDS
+       5052  Rage 128 PR/PRO AGP 4x TMDS
+       5053  Rage 128 PS/PRO
+       5054  Rage 128 PT/PRO AGP 2x
+       5055  Rage 128 PU/PRO AGP 4x
+       5056  Rage 128 PV/PRO TMDS
+       5057  Rage 128 PW/PRO AGP 2x TMDS
+       5058  Rage 128 PX/PRO AGP 4x TMDS
+       5144  Radeon R100 QD [Radeon 7200]
+               1002 0008  Radeon 7000/Radeon VE
+               1002 0009  Radeon 7000/Radeon
+               1002 000a  Radeon 7000/Radeon
+               1002 001a  Radeon 7000/Radeon
+               1002 0029  Radeon AIW
+               1002 0038  Radeon 7000/Radeon
+               1002 0039  Radeon 7000/Radeon
+               1002 008a  Radeon 7000/Radeon
+               1002 00ba  Radeon 7000/Radeon
+               1002 0139  Radeon 7000/Radeon
+               1002 028a  Radeon 7000/Radeon
+               1002 02aa  Radeon AIW
+               1002 053a  Radeon 7000/Radeon
+       5145  Radeon R100 QE
+       5146  Radeon R100 QF
+       5147  Radeon R100 QG
+       5148  Radeon R200 QH [Radeon 8500]
+               1002 010a  FireGL 8800 64Mb
+               1002 0152  FireGL 8800 128Mb
+               1002 0162  FireGL 8700 32Mb
+               1002 0172  FireGL 8700 64Mb
+       5149  Radeon R200 QI
+       514a  Radeon R200 QJ
+       514b  Radeon R200 QK
+       514c  Radeon R200 QL [Radeon 8500 LE]
+               1002 003a  Radeon R200 QL [Radeon 8500 LE]
+               1002 013a  Radeon 8500
+               148c 2026  R200 QL [Radeon 8500 Evil Master II Multi Display Edition]
+               1681 0010  Radeon 8500 [3D Prophet 8500 128Mb]
+               174b 7149  Radeon R200 QL [Sapphire Radeon 8500 LE]
+       514d  Radeon R200 QM [Radeon 9100]
+       514e  Radeon R200 QN [Radeon 8500LE]
+       514f  Radeon R200 QO [Radeon 8500LE]
+       5154  R200 QT [Radeon 8500]
+       5155  R200 QU [Radeon 9100]
+       5157  Radeon RV200 QW [Radeon 7500]
+               1002 013a  Radeon 7500
+               1002 0f2b  ALL-IN-WONDER VE PCI
+               1002 103a  Dell Optiplex GX260
+               1458 4000  RV200 QW [RADEON 7500 PRO MAYA AR]
+               148c 2024  RV200 QW [Radeon 7500LE Dual Display]
+               148c 2025  RV200 QW [Radeon 7500 Evil Master Multi Display Edition]
+               148c 2036  RV200 QW [Radeon 7500 PCI Dual Display]
+               174b 7146  RV200 QW [Radeon 7500 LE]
+               174b 7147  RV200 QW [Sapphire Radeon 7500LE]
+               174b 7161  Radeon RV200 QW [Radeon 7500 LE]
+               17af 0202  RV200 QW [Excalibur Radeon 7500LE]
+       5158  Radeon RV200 QX [Radeon 7500]
+       5159  Radeon RV100 QY [Radeon 7000/VE]
+               1002 000a  Radeon 7000/Radeon VE
+               1002 000b  Radeon 7000
+               1002 0038  Radeon 7000/Radeon VE
+               1002 003a  Radeon 7000/Radeon VE
+               1002 00ba  Radeon 7000/Radeon VE
+               1002 013a  Radeon 7000/Radeon VE
+               1002 0908  XVR-100 (supplied by Sun)
+# The IBM card doubles as an ATI PCI video adapter
+               1014 029a  Remote Supervisor Adapter II (RSA2)
+               1014 02c8  eServer xSeries server mainboard
+               1028 016c  PowerEdge 1850
+               1028 016d  PowerEdge 2850 Embedded Radeon 7000-M
+               1028 019a  PowerEdge SC1425
+               103c 1292  Radeon 7000
+               1043 c00a  A7000/T/64M
+               1458 4002  RV100 QY [RADEON 7000 PRO MAYA AV Series]
+               148c 2003  RV100 QY [Radeon 7000 Multi-Display Edition]
+               148c 2023  RV100 QY [Radeon 7000 Evil Master Multi-Display]
+               174b 0280  Radeon RV100 QY [Radeon 7000/VE]
+               174b 7112  RV100 QY [Sapphire Radeon VE 7000]
+               174b 7c28  Sapphire Radeon VE 7000 DDR
+               1787 0202  RV100 QY [Excalibur Radeon 7000]
+               17ee 1001  Radeon 7000 64MB DDR + DVI
+       515a  Radeon RV100 QZ [Radeon 7000/VE]
+       515e  ES1000
+               1028 01df  PowerEdge SC440
+               1028 01e6  PowerEdge 860
+               1028 020f  PowerEdge R300 Embedded ATI ES1000
+               1028 0210  PowerEdge T300 Embedded ATI ES1000
+               1028 0225  PowerEdge T105 Embedded ATI ES1000
+               15d9 8680  X7DVL-E-O motherboard
+               8086 3476  S5000PSLSATA Server Board
+       515f  ES1000
+       5168  Radeon R200 Qh
+       5169  Radeon R200 Qi
+       516a  Radeon R200 Qj
+       516b  Radeon R200 Qk
+# This one is not in ATI documentation, but is in XFree86 source code
+       516c  Radeon R200 Ql
+       5245  Rage 128 RE/SG
+               1002 0008  Xpert 128
+               1002 0028  Rage 128 AIW
+               1002 0029  Rage 128 AIW
+               1002 0068  Rage 128 AIW
+       5246  Rage 128 RF/SG AGP
+               1002 0004  Magnum/Xpert 128/Xpert 99
+               1002 0008  Magnum/Xpert128/X99/Xpert2000
+               1002 0028  Rage 128 AIW AGP
+               1002 0044  Rage Fury/Xpert 128/Xpert 2000
+               1002 0068  Rage 128 AIW AGP
+               1002 0448  Rage Fury
+       5247  Rage 128 RG
+       524b  Rage 128 RK/VR
+       524c  Rage 128 RL/VR AGP
+               1002 0008  Xpert 99/Xpert 2000
+               1002 0088  Xpert 99
+       5345  Rage 128 SE/4x
+       5346  Rage 128 SF/4x AGP 2x
+               1002 0048  RAGE 128 16MB VGA TVOUT AMC PAL
+       5347  Rage 128 SG/4x AGP 4x
+       5348  Rage 128 SH
+       534b  Rage 128 SK/4x
+       534c  Rage 128 SL/4x AGP 2x
+       534d  Rage 128 SM/4x AGP 4x
+               1002 0008  Xpert 99/Xpert 2000
+               1002 0018  Xpert 2000
+       534e  Rage 128 4x
+       5354  Mach 64 VT
+               1002 5654  Mach 64 reference
+       5446  Rage 128 Pro Ultra TF
+               1002 0004  Rage Fury Pro
+               1002 0008  Rage Fury Pro/Xpert 2000 Pro
+               1002 0018  Rage Fury Pro/Xpert 2000 Pro
+               1002 0028  Rage 128 AIW Pro AGP
+               1002 0029  Rage 128 AIW
+               1002 002a  Rage 128 AIW Pro AGP
+               1002 002b  Rage 128 AIW
+               1002 0048  Xpert 2000 Pro
+       544c  Rage 128 Pro Ultra TL
+       5452  Rage 128 Pro Ultra TR
+               1002 001c  Rage 128 Pro 4XL
+               103c 1279  Rage 128 Pro 4XL
+       5453  Rage 128 Pro Ultra TS
+       5454  Rage 128 Pro Ultra TT
+       5455  Rage 128 Pro Ultra TU
+       5460  M22 [Mobility Radeon X300]
+               1775 1100  CR11/VR11 Single Board Computer
+       5461  M22 [Mobility Radeon X300]
+       5462  M24 [Radeon Mobility X600]
+       5464  M22 [FireGL GL]
+       5548  R423 UH [Radeon X800 (PCIE)]
+       5549  R423 UI [Radeon X800PRO (PCIE)]
+       554a  R423 UJ [Radeon X800LE (PCIE)]
+       554b  R423 UK [Radeon X800SE (PCIE)]
+       554c  Radeon X800 XTP (R430) (PCIE)
+       554d  R430 [Radeon X800 XL] (PCIe)
+       554e  Radeon X800 SE (R430) (PCIE)
+       554f  R430 [Radeon X800 (PCIE)]
+       5550  R423 [FireGL V7100]
+       5551  R423 [FireGL V5100 (PCIE)]
+       5552  R423 UR [FireGL V5100 (PCIE)]
+       5554  R423 UT [FireGL V7100 (PCIE)]
+       5555  R430 GL PRO
+       5569  R423 UI [Radeon X800PRO (PCIE)] (Secondary)
+       556b  Radeon R423 UK (PCIE) [X800 SE] (Secondary)
+       556d  R430 [Radeon X800 XL] (PCIe) (Secondary)
+       556f  R430 [Radeon X800] (PCIE) (Secondary)
+       5571  R423GL-SE [FireGL V5100 (PCIE)] (Secondary)
+       564a  M26 [Mobility FireGL V5000]
+       564b  M26 [Mobility FireGL V5000]
+       564f  M26 [Radeon Mobility X700 XL (PCIE)]
+       5652  M26 [Radeon Mobility X700]
+       5653  Radeon Mobility X700 (PCIE)
+               1025 0080  Aspire 5024WLMi
+               103c 0940  HP Compaq NW8240 Mobile Workstation
+       5654  264VT [Mach64 VT]
+               1002 5654  Mach64VT Reference
+       5655  264VT3 [Mach64 VT3]
+       5656  264VT4 [Mach64 VT4]
+       5657  Radeon X550/X700 Series (RV410)
+       5830  RS300 Host Bridge
+       5831  RS300 Host Bridge
+       5832  RS300 Host Bridge
+       5833  Radeon 9100 IGP Host Bridge
+       5834  Radeon 9100 IGP
+       5835  RS300M AGP [Radeon Mobility 9100IGP]
+       5838  Radeon 9100 IGP AGP Bridge
+       5854  Radeon Xpress Series (RS480)
+       5874  Radeon Xpress Series (RS482)
+       5940  RV280 [Radeon 9200 PRO] (Secondary)
+               17af 2021  Excalibur Radeon 9250 (Secondary)
+       5941  RV280 [Radeon 9200] (Secondary)
+               1458 4019  Gigabyte Radeon 9200
+               174b 7c12  Sapphire Radeon 9200
+               17af 200d  Excalibur Radeon 9200
+               18bc 0050  GeXcube GC-R9200-C3 (Secondary)
+       5944  RV280 [Radeon 9200 SE (PCI)]
+       5950  RS480 Host Bridge
+               1025 0080  Aspire 5024WLMMi
+               103c 280a  DC5750 Microtower
+               103c 308b  MX6125
+               1462 7217  Aspire L250
+       5951  Radeon Xpress 200 (RS480/RS482/RX480/RX482) Chipset - Host bridge
+       5952  RD580 [CrossFire Xpress 3200] Chipset Host Bridge
+       5954  RS480 [Radeon Xpress 200G Series]
+               1002 5954  RV370 [Radeon Xpress 200G Series]
+       5955  Radeon XPRESS 200M 5955 (PCIE)
+               1002 5955  RS480 0x5955 [Radeon XPRESS 200M 5955 (PCIE)]
+               103c 308b  MX6125
+       5956  RD790 Northbridge only dual slot PCI-e_GFX and HT3 K8 part
+       5957  RX780/RX790 Chipset Host Bridge
+       5958  RD780 Northbridge only dual slot PCI-e_GFX and HT1 K8 part
+       5960  RV280 [Radeon 9200 PRO]
+               17af 2020  Excalibur Radeon 9250
+       5961  RV280 [Radeon 9200]
+               1002 2f72  All-in-Wonder 9200 Series
+               1019 4c30  Radeon 9200 VIVO
+               12ab 5961  YUAN SMARTVGA Radeon 9200
+               1458 4018  Gigabyte Radeon 9200
+               174b 7c13  Sapphire Radeon 9200
+               17af 200c  Excalibur Radeon 9200
+               18bc 0050  Radeon 9200 Game Buster
+               18bc 0051  GeXcube GC-R9200-C3
+               18bc 0053  Radeon 9200 Game Buster VIVO
+       5962  RV280 [Radeon 9200]
+       5964  RV280 [Radeon 9200 SE]
+               1002 5964  Radeon 9200 SE, 64-bit 128MB DDR, 200/166MHz
+               1043 c006  ASUS Radeon 9200 SE / TD / 128M
+               1458 4018  Radeon 9200 SE
+               1458 4032  Radeon 9200 SE 128MB
+               147b 6191  R9200SE-DT
+               148c 2073  CN-AG92E
+               174b 7c13  Sapphire Radeon 9200 SE
+               1787 5964  Excalibur 9200SE VIVO 128M
+               17af 2012  Radeon 9200 SE Excalibur
+               18bc 0170  Sapphire Radeon 9200 SE 128MB Game Buster
+               18bc 0173  GC-R9200L(SE)-C3H [Radeon 9200 Game Buster]
+       5965  RV280 [FireMV 2200 PCI]
+       5969  ES1000
+       5974  RS482 [Radeon Xpress 200]
+               103c 280a  DC5750 Microtower
+               1462 7141  Aspire L250
+       5975  RS482 [Radeon Xpress 200M]
+       5978  RD790 PCI to PCI bridge (external gfx0 port A)
+       5979  RD790 PCI to PCI bridge (external gfx0 port B)
+       597a  RD790 PCI to PCI bridge (PCI express gpp port A)
+       597b  RD790 PCI to PCI bridge (PCI express gpp port B)
+       597c  RD790 PCI to PCI bridge (PCI express gpp port C)
+       597d  RD790 PCI to PCI bridge (PCI express gpp port D)
+       597e  RD790 PCI to PCI bridge (PCI express gpp port E)
+       597f  RD790 PCI to PCI bridge (PCI express gpp port F)
+       5980  RD790 PCI to PCI bridge (external gfx1 port A)
+       5981  RD790 PCI to PCI bridge (external gfx1 port B)
+       5982  RD790 PCI to PCI bridge (NB-SB link)
+       5a10  RD890 Northbridge only dual slot (2x16) PCI-e GFX Hydra part
+       5a11  RD890 Northbridge only single slot PCI-e GFX Hydra part
+       5a12  RD890 Northbridge only dual slot (2x8) PCI-e GFX Hydra part
+       5a13  RD890 PCI to PCI bridge (external gfx0 port A)
+       5a14  RD890 PCI to PCI bridge (external gfx0 port B)
+       5a15  RD890 PCI to PCI bridge (PCI express gpp port A)
+       5a16  RD890 PCI to PCI bridge (PCI express gpp port B)
+       5a17  RD890 PCI to PCI bridge (PCI express gpp port C)
+       5a18  RD890 PCI to PCI bridge (PCI express gpp port D)
+       5a19  RD890 PCI to PCI bridge (PCI express gpp port E)
+       5a1a  RD890 PCI to PCI bridge (PCI express gpp port F)
+       5a1b  RD890 PCI to PCI bridge (PCI express gpp port G)
+       5a1c  RD890 PCI to PCI bridge (PCI express gpp port H)
+       5a1d  RD890 PCI to PCI bridge (external gfx1 port A)
+       5a1e  RD890 PCI to PCI bridge (external gfx1 port B)
+       5a1f  RD890 PCI to PCI bridge (NB-SB link)
+       5a33  Radeon Xpress 200 Host Bridge
+       5a34  RS480 PCI-X Root Port
+# Comes in pair with 5a3f
+       5a36  RS480 PCI Bridge
+       5a37  RS480 PCI Bridge
+       5a38  RS480 PCI Bridge
+# Comes in pair with 5a38
+       5a39  RS480 PCI Bridge
+       5a3f  RS480 PCI Bridge
+               1462 7217  Aspire L250
+       5a41  RS400 [Radeon Xpress 200]
+       5a42  RS400 [Radeon Xpress 200M]
+       5a43  Radeon Xpress Series (RS400)
+       5a61  RC410 [Radeon Xpress 200]
+       5a62  RC410 [Radeon Xpress 200M]
+       5a63  Radeon Xpress Series (RC410)
+       5b60  RV370 5B60 [Radeon X300 (PCIE)]
+               1043 002a  Extreme AX300SE-X
+               1043 032e  Extreme AX300/TD
+               1458 2102  GV-RX30S128D (X300SE)
+               1462 0400  RX300SE-TD128E (MS-8940 REV:200)
+               1462 0402  RX300SE-TD128E (MS-8940)
+               174b 0500  Radeon X300 (PCIE)
+               196d 1086  X300SE HM
+       5b62  RV380 [Radeon X600 (PCIE)]
+       5b63  RV370 [Sapphire X550 Silent]
+       5b64  RV370 5B64 [FireGL V3100 (PCIE)]
+       5b65  RV370 5B65 [FireGL D1100 (PCIE)]
+       5b66  RV370X
+       5b70  RV370 [Radeon X300SE]
+               1462 0403  RX300SE-TD128E (MS-8940) (secondary display)
+               174b 0501  Radeon X300SE
+               196d 1087  X300SE HM
+       5b72  RV380 [Radeon X600]
+       5b73  RV370 secondary [Sapphire X550 Silent]
+       5b74  RV370 5B64 [FireGL V3100 (PCIE)] (Secondary)
+       5b75  RV370 5B75 [FireGL D1100 (PCIE)] (Secondary)
+       5c61  M9+ 5C61 [Radeon Mobility 9200 (AGP)]
+       5c63  M9+ 5C63 [Radeon Mobility 9200 (AGP)]
+               1002 5c63  Apple iBook G4 2004
+               144d c00c  P30 notebook
+       5d44  RV280 [Radeon 9200 SE] (Secondary)
+               1458 4019  Radeon 9200 SE (Secondary)
+               1458 4032  Radeon 9200 SE 128MB
+               147b 6190  R9200SE-DT (Secondary)
+               174b 7c12  Sapphire Radeon 9200 SE (Secondary)
+               1787 5965  Excalibur 9200SE VIVO 128M (Secondary)
+               17af 2013  Radeon 9200 SE Excalibur (Secondary)
+               18bc 0171  Radeon 9200 SE 128MB Game Buster (Secondary)
+               18bc 0172  GC-R9200L(SE)-C3H [Radeon 9200 Game Buster]
+       5d45  RV280 [FireMV 2200 PCI] (secondary)
+       5d48  M28 [Radeon Mobility X800XT]
+       5d49  M28 [Mobility FireGL V5100]
+       5d4a  Mobility Radeon X800
+       5d4c  Radeon X850 (PCIE)
+       5d4d  R480 [Radeon X850XT Platinum (PCIE)]
+       5d4e  Radeon X850 SE (R480) (PCIE)
+       5d4f  R480 [Radeon X800 GTO (PCIE)]
+       5d50  FireGL V7200 (R480) (PCIE)
+       5d51  R480 GL 12P
+       5d52  R480 [Radeon X850XT (PCIE)] (Primary)
+               1002 0b12  PowerColor X850XT PCIe (Primary)
+               1002 0b13  PowerColor X850XT PCIe (Secondary)
+       5d57  R423 5F57 [Radeon X800XT (PCIE)]
+       5d6d  R480 [Radeon X850XT Platinum (PCIE)] (Secondary)
+       5d6f  R480 [Radeon X800 GTO (PCIE)] (Secondary)
+       5d72  R480 [Radeon X850XT (PCIE)] (Secondary)
+       5d77  R423 5F57 [Radeon X800XT (PCIE)] (Secondary)
+       5e48  RV410 [FireGL V5000]
+       5e49  RV410 [FireGL V3300]
+       5e4a  RV410 [Radeon X700XT]
+       5e4b  RV410 [Radeon X700 Pro (PCIE)]
+       5e4c  RV410 [Radeon X700SE]
+       5e4d  RV410 [Radeon X700 (PCIE)]
+               148c 2116  PowerColor Bravo X700
+       5e4f  RV410 [Radeon X700]
+       5e6b  RV410 [Radeon X700 Pro (PCIE)] (Secondary)
+       5e6d  RV410 [Radeon X700 (PCIE)] (Secondary)
+               148c 2117  PowerColor Bravo X700
+       5f57  R423 [Radeon X800XT (PCIE)]
+       700f  PCI Bridge [IGP 320M]
+       7010  PCI Bridge [IGP 340M]
+       7100  R520 [Radeon X1800]
+       7102  M58 [Radeon Mobility X1800]
+       7103  M58 [Mobility FireGL V7200]
+       7104  R520GL [FireGL V7200] (Primary)
+       7105  R520 [FireGL]
+       7106  M58 [Mobility FireGL V7100]
+       7108  M58 [Radeon Mobility X1800]
+       7109  R520 [Radeon X1800]
+               1002 0322  All-in-Wonder X1800XL
+               1002 0d02  Radeon X1800 CrossFire Edition
+       710a  R520 [Radeon X1800]
+       710b  R520 [Radeon X1800]
+       710c  R520 [Radeon X1800]
+       7120  R520 [Radeon X1800] (Secondary)
+       7124  R520GL [FireGL V7200] (Secondary)
+       7129  R520 [Radeon X1800] (Secondary)
+               1002 0323  All-in-Wonder X1800XL (Secondary)
+               1002 0d03  Radeon X1800 CrossFire Edition (Secondary)
+       7140  RV515 [Radeon X1600]
+       7142  RV515 PRO [Radeon X1300/X1550 Series]
+               1002 0322  All-in-Wonder 2006 PCI-E Edition
+               1043 0142  EAX1300PRO/TD/256M
+       7143  RV505 [Radeon X1550 Series]
+       7145  Radeon Mobility X1400
+               17aa 2006  Thinkpad T60 model 2007
+       7146  RV515 [Radeon X1300]
+               1002 0322  All-in-Wonder 2006 PCI-E Edition
+               1545 1996  Radeon X1300 512MB PCI-e
+       7147  RV505 [Radeon X1550 64-bit]
+       7149  M52 [Mobility Radeon X1300]
+       714a  M52 [Mobility Radeon X1300]
+       714b  M52 [Mobility Radeon X1300]
+       714c  M52 [Mobility Radeon X1300]
+       714d  RV515 [Radeon X1300]
+       714e  RV515LE [Radeon X1300]
+       7152  RV515GL [FireGL V3300] (Primary)
+       7153  RV515GL [FireGL V3350]
+       715e  RV515 [Radeon X1300]
+       715f  RV505 CE [Radeon X1550 64-bit]
+       7162  RV515 PRO [Radeon X1300/X1550 Series] (Secondary)
+               1002 0323  All-in-Wonder 2006 PCI-E Edition (Secondary)
+       7163  RV505 [Radeon X1550 Series] (Secondary)
+       7166  RV515 [Radeon X1300] (Secondary)
+               1002 0323  All-in-Wonder 2006 PCI-E Edition (Secondary)
+               1545 1997  Radeon X1300 512MB PCI-e (Secondary)
+       716e  RV515LE [Radeon X1300] Secondary
+       7172  RV515GL [FireGL V3300] (Secondary)
+       7173  RV515GL [FireGL V3350] (Secondary)
+       7180  RV516 [Radeon X1300/X1550 Series]
+       7181  RV516 XT Radeon X1600 Series (Primary)
+       7183  RV516 [Radeon X1300/X1550 Series]
+       7186  RV515 [Radeon Mobility X1450]
+       7187  RV516 [Radeon X1300/X1550 Series]
+       7188  M64-S [Mobility Radeon X2300]
+               103c 30c1  6910p
+       718a  Mobility Radeon X2300
+       718c  M62CSP64 [Mobility Radeon X1350]
+       718d  M64CSP128 [Mobility Radeon X1450]
+       7193  RV516 [Radeon X1550 Series]
+       7196  RV516 [Mobility Radeon X1350]
+       719b  FireMV 2250
+       719f  RV516LE [Radeon X1550 64-bit]
+       71a0  RV516 [Radeon X1300/X1550 Series] (Secondary)
+       71a1  RV516 XT Radeon X1600 Series (Secondary)
+       71a3  RV516 [Radeon X1300 Pro] (Secondary)
+       71a7  RV516 [Radeon X1300/X1550 Series] (Secondary)
+       71bb  FireMV 2250 (Secondary)
+       71c0  RV530 [Radeon X1600]
+       71c1  Radeon X1650 Pro
+       71c2  RV530 [Radeon X1600]
+       71c4  M56GL [Mobility FireGL V5200]
+               17aa 2007  ThinkPad T60p
+       71c5  M56P [Radeon Mobility X1600]
+               103c 30a3  Compaq NW8440
+               106b 0080  MacBook Pro
+       71c6  RV530LE [Radeon X1600/X1650 PRO]
+       71c7  RV535 [Radeon X1650 Series]
+       71ce  RV530LE [Radeon X1600]
+       71d4  M56GL [Mobility FireGL V5250]
+       71d5  M66-P [Mobility Radeon X1700]
+       71d6  M66-XT [Mobility Radeon X1700]
+       71de  RV530LE [Radeon X1600]
+       71e0  RV530 [Radeon X1600] (Secondary)
+       71e1  Radeon X1650 Pro (Secondary)
+       71e2  RV530 [Radeon X1600] (Secondary)
+       71e6  RV530LE [Radeon X1650 PRO] (Secondary)
+       71e7  RV535 [Radeon X1650 Series]
+       7210  M71 [Mobility Radeon X2100]
+       7211  M71 [Mobility Radeon X2100] (Secondary)
+       7240  R580 [Radeon X1900]
+       7241  R580 [Radeon X1900]
+       7242  R580 [Radeon X1900]
+       7243  R580 [Radeon X1900]
+       7244  R580 [Radeon X1900]
+       7245  R580 [Radeon X1900]
+       7246  R580 [Radeon X1900]
+       7247  R580 [Radeon X1900]
+       7248  R580 [Radeon X1900]
+       7249  R580 [Radeon X1900 XT] (Primary)
+       724a  R580 [Radeon X1900]
+       724b  R580 [Radeon X1900]
+               1002 0b12  Radeon X1900 (Primary)
+               1002 0b13  Radeon X1900 (Secondary)
+       724c  R580 [Radeon X1900]
+       724d  R580 [Radeon X1900]
+       724e  R580 [AMD Stream Processor]
+       7269  R580 [Radeon X1900 XT] (Secondary)
+       726b  R580 [Radeon X1900]
+       726e  R580 [AMD Stream Processor] (Secondary)
+       7280  RV570 [Radeon X1950 Pro]
+       7288  Radeon X1950 GT
+       7291  Radeon X1650 XT (Primary) (PCIE)
+       7293  Radeon X1650 Series
+       72a0  RV570 [Radeon X1950 Pro] (secondary)
+       72a8  Radeon X1950 GT (Secondary)
+       72b1  Radeon X1650 XT (Secondary) (PCIE)
+       72b3  Radeon X1650 Series (Secondary)
+       7833  Radeon 9100 IGP Host Bridge
+       7834  Radeon 9100 PRO IGP
+       7835  Radeon Mobility 9200 IGP
+       7838  Radeon 9100 IGP PCI/AGP Bridge
+       7910  RS690 Host Bridge
+               17f2 5000  KI690-AM2 Motherboard
+       7911  RS690 Host Bridge
+       7912  RS690 PCI to PCI Bridge (Internal gfx)
+       7913  RS690 PCI to PCI Bridge (PCI Express Graphics Port 0)
+       7915  RS690 PCI to PCI Bridge (PCI Express Port 1)
+       7916  RS690 PCI to PCI Bridge (PCI Express Port 2)
+       7917  RS690 PCI to PCI Bridge (PCI Express Port 3)
+               1002 7910  RS690 PCI to PCI Bridge
+       7919  Radeon X1200 Series Audio Controller
+               17f2 5000  KI690-AM2 Motherboard
+       791e  RS690 [Radeon X1200 Series]
+               1462 7327  K9AG Neo2
+               17f2 5000  KI690-AM2 Motherboard
+       791f  RS690M [Radeon X1200 Series]
+       7930  Radeon Xpress 7930 Host Bridge
+       7932  RS7932 PCI Bridge
+       7933  RS7933 PCI Bridge
+       7936  RS7936 PCI Bridge
+       793b  RS600 audio device [Radeon Xpress 12xx Series]
+       793f  RS600 [Radeon Xpress 1200 Series]
+       7941  RS600 [Radeon Xpress 1200 Series]
+       7942  Radeon Xpress 1250
+       796e  Radeon 2100
+       7c37  RV350 AQ [Radeon 9600 SE]
+       9400  R600 [Radeon HD 2900 Series]
+               1002 3000  Sapphire Radeon HD 2900 XT
+               1002 3142  HIS Radeon HD 2900XT 512MB GDDR3 VIVO PCIe
+       940a  R600GL [Fire GL V8650]
+       940b  R600GL [Fire GL V8600]
+       9440  RV770 [Radeon HD 4870]
+       9442  RV770 [Radeon HD 4850]
+       9490  RV730XT [Radeon HD 4670]
+       94c1  RV610 [Radeon HD 2400 XT]
+               1028 0211  Optiplex 755
+               1028 0d02  Optiplex 755
+       94c3  RV610 video device [Radeon HD 2400 PRO]
+               1002 94c3  Radeon HD 2400PRO
+               174b e400  Sapphire HD 2400 PRO video device
+       94c4  RV610 LE AGP [Radeon HD 2400 PRO AGP]
+       94c8  Radeon HD 2400 XT
+       94c9  Mobility Radeon HD 2400
+               1002 94c9  Radeon HD2400
+       94cb  Radeon E2400
+       94cc  RV 610LE PCI [Radeon HD 2400]
+       9501  Radeon HD 3870
+       9504  Mobility Radeon HD 3850
+       9505  RV670PRO [Radeon HD 3850]
+       9507  RV670 [Radeon HD 3850]
+       9508  M88 XT Mobility Radeon HD 3870]
+       950f  R680 [Radeon HD 3870 x2]
+       9511  RV670 [FireGL 7700]
+       9515  RV670 AGP [Radeon HD 3850]
+       9519  RV670 [FireStream 9170]
+       9559  Mobility Radeon HD 3600 Series
+       9581  M76 [Radeon Mobility HD 2600 Series]
+       9586  RV 630 XT AGP [Radeon HD 2600 XT AGP]
+       9587  RV630 PRO AGP [Radeon HD 2600 PRO AGP]
+       9588  RV630 [Radeon HD 2600XT]
+               1458 216c  Radeon HD 2600 XT, 256MB GDDR3, 2x DVI, TV-out, PCIe (GV-RX26T256H)
+       9589  RV630 [Radeon HD 2600 Series]
+       958c  RV630GL [FireGL v5600]
+       9591  Mobility Radeon HD 3650
+               1002 9591  Mobility Radeon HD 3650
+       9593  Radeon Mobility HD 3670
+       9595  M86GL [Mobility FireGL V5700]
+       9596  RV635 PRO AGP [Radeon HD 3650]
+       9598  Mobility Radeon HD 3600 Series
+               1002 9598  Mobility Radeon HD 3600
+       95c0  Mobility Radeon HD 3470
+               1002 95c0  Mobility Radeon HD 3470
+       95c4  Mobility Radeon HD 3400 Series
+               1002 95c4  Mobility Radeon HD 3400
+       95c5  Mobility Radeon HD 3450
+               1002 95c5  Mobility Radeon HD 3450
+       95c6  RV620 LE AGP [Radeon HD 3450]
+       960f  RS780 Azalia controller
+       9610  Radeon HD 3200 Graphics
+       9611  Radeon 3100 Graphics
+       9612  RS780M/RS780MN [Radeon HD 3200 Graphics]
+       9613  RS780MC [Radeon HD 3100 Graphics]
+       9614  Radeon HD 3300 Graphics
+       aa00  R600 Audio Device [Radeon HD 2900 Series]
+       aa08  RV630/M76 audio device [Radeon HD 2600 Series]
+       aa10  RV610 audio device [Radeon HD 2400 PRO]
+               174b aa10  Sapphire HD 2400 PRO audio device
+       aa18  Radeon HD 3870 Audio device
+       aa20  RV635 Audio device [Radeon HD 3600 Series]
+       aa28  RV620 Audio device [Radeon HD 34xx Series]
+       aa30  HD48x0 audio
+       ac00  Theater 600 Pro
+       cab0  AGP Bridge [IGP 320M]
+       cab2  RS200/RS200M AGP Bridge [IGP 340M]
+       cab3  R200 AGP Bridge [Mobility Radeon 7000 IGP]
+       cbb2  RS200/RS200M AGP Bridge [IGP 340M]
+1003  ULSI Systems
+       0201  US201
+1004  VLSI Technology Inc
+       0005  82C592-FC1
+       0006  82C593-FC1
+       0007  82C594-AFC2
+       0008  82C596/7 [Wildcat]
+       0009  82C597-AFC2
+       000c  82C541 [Lynx]
+       000d  82C543 [Lynx]
+       0101  82C532
+       0102  82C534 [Eagle]
+       0103  82C538
+       0104  82C535
+       0105  82C147
+       0200  82C975
+       0280  82C925
+       0304  QSound ThunderBird PCI Audio
+               1004 0304  QSound ThunderBird PCI Audio
+               122d 1206  DSP368 Audio
+               1483 5020  XWave Thunder 3D Audio
+       0305  QSound ThunderBird PCI Audio Gameport
+               1004 0305  QSound ThunderBird PCI Audio Gameport
+               122d 1207  DSP368 Audio Gameport
+               1483 5021  XWave Thunder 3D Audio Gameport
+       0306  QSound ThunderBird PCI Audio Support Registers
+               1004 0306  QSound ThunderBird PCI Audio Support Registers
+               122d 1208  DSP368 Audio Support Registers
+               1483 5022  XWave Thunder 3D Audio Support Registers
+       0307  Thunderbird
+       0308  Thunderbird
+       0702  VAS96011 [Golden Gate II]
+       0703  Tollgate
+1005  Avance Logic Inc. [ALI]
+       2064  ALG2032/2064
+       2128  ALG2364A
+       2301  ALG2301
+       2302  ALG2302
+       2364  ALG2364
+       2464  ALG2364A
+       2501  ALG2564A/25128A
+1006  Reply Group
+1007  NetFrame Systems Inc
+1008  Epson
+100a  Phoenix Technologies
+100b  National Semiconductor Corporation
+       0001  DP83810
+       0002  87415/87560 IDE
+       000e  87560 Legacy I/O
+       000f  FireWire Controller
+       0011  NS87560 National PCI System I/O
+       0012  USB Controller
+       0020  DP83815 (MacPhyter) Ethernet Controller
+               103c 0024  Pavilion ze4400 builtin Network
+               12d9 000c  Aculab E1/T1 PMXc cPCI carrier card
+               1385 f311  FA311 / FA312 (FA311 with WoL HW)
+       0021  PC87200 PCI to ISA Bridge
+       0022  DP83820 10/100/1000 Ethernet Controller
+       0028  Geode GX2 Host Bridge
+       002a  CS5535 South Bridge
+       002b  CS5535 ISA bridge
+       002d  CS5535 IDE
+       002e  CS5535 Audio
+       002f  CS5535 USB
+       0030  Geode GX2 Graphics Processor
+       0035  DP83065 [Saturn] 10/100/1000 Ethernet Controller
+       0500  SCx200 Bridge
+       0501  SCx200 SMI
+       0502  SCx200, SC1100 IDE controller
+               100b 0502  IDE Controller
+       0503  SCx200, SC1100 Audio Controller
+               100b 0503  XpressAudio controller
+       0504  SCx200 Video
+       0505  SCx200 XBus
+       0510  SC1100 Bridge
+               100b 0500  GPIO and LPC support bridge
+       0511  SC1100 SMI & ACPI
+               100b 0501  SC1100 SMI & ACPI bridge
+       0515  SC1100 XBus
+               100b 0505  SC1100 PCI to XBus bridge
+       d001  87410 IDE
+100c  Tseng Labs Inc
+       3202  ET4000/W32p rev A
+       3205  ET4000/W32p rev B
+       3206  ET4000/W32p rev C
+       3207  ET4000/W32p rev D
+       3208  ET6000
+       4702  ET6300
+100d  AST Research Inc
+100e  Weitek
+       9000  P9000 Viper
+       9001  P9000 Viper
+       9002  P9000 Viper
+       9100  P9100 Viper Pro/SE
+1010  Video Logic, Ltd.
+1011  Digital Equipment Corporation
+       0001  DECchip 21050
+       0002  DECchip 21040 [Tulip]
+       0004  DECchip 21030 [TGA]
+       0007  NVRAM [Zephyr NVRAM]
+       0008  KZPSA [KZPSA]
+       0009  DECchip 21140 [FasterNet]
+               1025 0310  21140 Fast Ethernet
+               10b8 2001  SMC9332BDT EtherPower 10/100
+               10b8 2002  SMC9332BVT EtherPower T4 10/100
+               10b8 2003  SMC9334BDT EtherPower 10/100 (1-port)
+               1109 2400  ANA-6944A/TX Fast Ethernet
+               1112 2300  RNS2300 Fast Ethernet
+               1112 2320  RNS2320 Fast Ethernet
+               1112 2340  RNS2340 Fast Ethernet
+               1113 1207  EN-1207-TX Fast Ethernet
+               1186 1100  DFE-500TX Fast Ethernet
+               1186 1112  DFE-570TX Fast Ethernet
+               1186 1140  DFE-660 Cardbus Ethernet 10/100
+               1186 1142  DFE-660 Cardbus Ethernet 10/100
+               11f6 0503  Freedomline Fast Ethernet
+               1282 9100  AEF-380TXD Fast Ethernet
+               1385 1100  FA310TX Fast Ethernet
+               2646 0001  KNE100TX Fast Ethernet
+       000a  21230 Video Codec
+       000d  PBXGB [TGA2]
+       000f  PCI-to-PDQ Interface Chip [PFI]
+               1011 def1  FDDI controller (DEFPA)
+               103c def1  FDDI controller (3X-DEFPA)
+       0014  DECchip 21041 [Tulip Pass 3]
+               1186 0100  DE-530+
+       0016  DGLPB [OPPO]
+       0017  PV-PCI Graphics Controller (ZLXp-L)
+       0018  Memory Channel interface
+       0019  DECchip 21142/43
+               1011 500a  DE500A Fast Ethernet
+               1011 500b  DE500B Fast Ethernet
+               1014 0001  10/100 EtherJet Cardbus
+               1025 0315  ALN315 Fast Ethernet
+               1033 800c  PC-9821-CS01 100BASE-TX Interface Card
+               1033 800d  PC-9821NR-B06 100BASE-TX Interface Card
+               103c 125a  10/100Base-TX (PCI) [A5506B]
+               108d 0016  Rapidfire 2327 10/100 Ethernet
+               108d 0017  GoCard 2250 Ethernet 10/100 Cardbus
+               10b8 2005  SMC8032DT Extreme Ethernet 10/100
+               10b8 8034  SMC8034 Extreme Ethernet 10/100
+               10ef 8169  Cardbus Fast Ethernet
+               1109 2a00  ANA-6911A/TX Fast Ethernet
+               1109 2b00  ANA-6911A/TXC Fast Ethernet
+               1109 3000  ANA-6922/TX Fast Ethernet
+               1113 1207  Cheetah Fast Ethernet
+               1113 2220  Cardbus Fast Ethernet
+               115d 0002  Cardbus Ethernet 10/100
+               1179 0203  Fast Ethernet
+               1179 0204  Cardbus Fast Ethernet
+               1186 1100  DFE-500TX Fast Ethernet
+               1186 1101  DFE-500TX Fast Ethernet
+               1186 1102  DFE-500TX Fast Ethernet
+               1186 1112  DFE-570TX Quad Fast Ethernet
+               1259 2800  AT-2800Tx Fast Ethernet
+               1266 0004  Eagle Fast EtherMAX
+               12af 0019  NetFlyer Cardbus Fast Ethernet
+               1374 0001  Cardbus Ethernet Card 10/100
+               1374 0002  Cardbus Ethernet Card 10/100
+               1374 0007  Cardbus Ethernet Card 10/100
+               1374 0008  Cardbus Ethernet Card 10/100
+               1385 2100  FA510
+               1395 0001  10/100 Ethernet CardBus PC Card
+               13d1 ab01  EtherFast 10/100 Cardbus (PCMPC200)
+               1498 000a  TPMC880-10 10/100Base-T and 10Base2 PMC Ethernet Adapter
+               1498 000b  TPMC880-11 Single 10/100Base-T PMC Ethernet Adapter
+               1498 000c  TPMC880-12 Single 10Base2 PMC Ethernet Adapter
+               14cb 0100  LNDL-100N 100Base-TX Ethernet PC Card
+               8086 0001  EtherExpress PRO/100 Mobile CardBus 32
+       001a  Farallon PN9000SX Gigabit Ethernet
+       0021  DECchip 21052
+       0022  DECchip 21150
+       0023  DECchip 21150
+       0024  DECchip 21152
+       0025  DECchip 21153
+       0026  DECchip 21154
+       0034  56k Modem Cardbus
+               1374 0003  56k Modem Cardbus
+       0045  DECchip 21553
+       0046  DECchip 21554
+               0e11 4050  Smart Array 4200 Controller
+               0e11 4051  Smart Array 4250ES Controller
+               0e11 4058  Smart Array 431 Controller
+               103c 10c2  NetRAID-4M
+               12d9 000a  IP Telephony card
+               4c53 1050  CT7 mainboard
+               4c53 1051  CE7 mainboard
+               9005 0364  5400S (Mustang)
+               9005 0365  5400S (Mustang)
+               9005 1364  Dell PowerEdge RAID Controller 2
+               9005 1365  Dell PowerEdge RAID Controller 2
+               e4bf 1000  CC8-1-BLUES
+       1065  StrongARM DC21285
+               1069 0020  DAC960P / DAC1164P
+1012  Micronics Computers Inc
+1013  Cirrus Logic
+       0038  GD 7548
+       0040  GD 7555 Flat Panel GUI Accelerator
+       004c  GD 7556 Video/Graphics LCD/CRT Ctrlr
+       00a0  GD 5430/40 [Alpine]
+       00a2  GD 5432 [Alpine]
+       00a4  GD 5434-4 [Alpine]
+       00a8  GD 5434-8 [Alpine]
+       00ac  GD 5436 [Alpine]
+       00b0  GD 5440
+       00b8  GD 5446
+       00bc  GD 5480
+               1013 00bc  CL-GD5480
+       00d0  GD 5462
+       00d2  GD 5462 [Laguna I]
+       00d4  GD 5464 [Laguna]
+       00d5  GD 5464 BD [Laguna]
+       00d6  GD 5465 [Laguna]
+               13ce 8031  Barco Metheus 2 Megapixel, Dual Head
+               13cf 8031  Barco Metheus 2 Megapixel, Dual Head
+       00e8  GD 5436U
+       1100  CL 6729
+       1110  PD 6832 PCMCIA/CardBus Ctrlr
+       1112  PD 6834 PCMCIA/CardBus Ctrlr
+       1113  PD 6833 PCMCIA/CardBus Ctrlr
+       1200  GD 7542 [Nordic]
+       1202  GD 7543 [Viking]
+       1204  GD 7541 [Nordic Light]
+       4000  MD 5620 [CLM Data Fax Voice]
+       4400  CD 4400
+       6001  CS 4610/11 [CrystalClear SoundFusion Audio Accelerator]
+               1014 1010  CS4610 SoundFusion Audio Accelerator
+       6003  CS 4614/22/24/30 [CrystalClear SoundFusion Audio Accelerator]
+               1013 4280  Crystal SoundFusion PCI Audio Accelerator
+               1014 0153  ThinkPad A20m
+               153b 112e  DMX XFire 1024
+               153b 1136  SiXPack 5.1+
+               1681 0050  Game Theater XP
+               1681 a010  Gamesurround Fortissimo II
+               1681 a011  Fortissimo III 7.1
+               5053 3357  Santa Cruz
+       6004  CS 4614/22/24 [CrystalClear SoundFusion Audio Accelerator]
+       6005  Crystal CS4281 PCI Audio
+               1013 4281  Crystal CS4281 PCI Audio
+               10cf 10a8  Crystal CS4281 PCI Audio
+               10cf 10a9  Crystal CS4281 PCI Audio
+               10cf 10aa  Crystal CS4281 PCI Audio
+               10cf 10ab  Crystal CS4281 PCI Audio
+               10cf 10ac  Crystal CS4281 PCI Audio
+               10cf 10ad  Crystal CS4281 PCI Audio
+               10cf 10b4  Crystal CS4281 PCI Audio
+               1179 0001  Crystal CS4281 PCI Audio
+               14c0 000c  Crystal CS4281 PCI Audio
+1014  IBM
+       0002  PCI to MCA Bridge
+       0005  Processor to I/O Controller [Alta Lite]
+       0007  Processor to I/O Controller [Alta MP]
+       000a  PCI to ISA Bridge (IBM27-82376) [Fire Coral]
+       0017  CPU to PCI Bridge
+       0018  TR Auto LANstreamer
+       001b  GXT-150P
+       001c  Carrera
+       001d  SCSI-2 FAST PCI Adapter (82G2675)
+       0020  GXT1000 Graphics Adapter
+       0022  PCI to PCI Bridge (IBM27-82351)
+       002d  Processor to I/O Controller [Python]
+       002e  SCSI RAID Adapter [ServeRAID]
+               1014 002e  ServeRAID-3x
+               1014 022e  ServeRAID-4H
+       0031  2 Port Serial Adapter
+# AS400 iSeries PCI sync serial card
+               1014 0031  2721 WAN IOA - 2 Port Sync Serial Adapter
+       0036  PCI to 32-bit LocalBus Bridge [Miami]
+       0037  PowerPC to PCI Bridge (IBM27-82660)
+       003a  CPU to PCI Bridge
+       003c  GXT250P/GXT255P Graphics Adapter
+       003e  16/4 Token ring UTP/STP controller
+               1014 003e  Token-Ring Adapter
+               1014 00cd  Token-Ring Adapter + Wake-On-LAN
+               1014 00ce  16/4 Token-Ring Adapter 2
+               1014 00cf  16/4 Token-Ring Adapter Special
+               1014 00e4  High-Speed 100/16/4 Token-Ring Adapter
+               1014 00e5  16/4 Token-Ring Adapter 2 + Wake-On-LAN
+               1014 016d  iSeries 2744 Card
+       0045  SSA Adapter
+       0046  MPIC interrupt controller
+       0047  PCI to PCI Bridge
+       0048  PCI to PCI Bridge
+       0049  Warhead SCSI Controller
+       004e  ATM Controller (14104e00)
+       004f  ATM Controller (14104f00)
+       0050  ATM Controller (14105000)
+       0053  25 MBit ATM Controller
+       0054  GXT500P/GXT550P Graphics Adapter
+       0057  MPEG PCI Bridge
+       0058  SSA Adapter [Advanced SerialRAID/X]
+       005c  i82557B 10/100
+       005e  GXT800P Graphics Adapter
+       007c  ATM Controller (14107c00)
+       007d  3780IDSP [MWave]
+       008b  EADS PCI to PCI Bridge
+       008e  GXT3000P Graphics Adapter
+       0090  GXT 3000P
+               1014 008e  GXT-3000P
+       0091  SSA Adapter
+       0095  20H2999 PCI Docking Bridge
+       0096  Chukar chipset SCSI controller
+               1014 0097  iSeries 2778 DASD IOA
+               1014 0098  iSeries 2763 DASD IOA
+               1014 0099  iSeries 2748 DASD IOA
+       009f  PCI 4758 Cryptographic Accelerator
+       00a5  ATM Controller (1410a500)
+       00a6  ATM 155MBPS MM Controller (1410a600)
+       00b7  256-bit Graphics Rasterizer [FireGL1]
+               1092 00b8  FireGL1 AGP 32Mb
+       00b8  GXT2000P Graphics Adapter
+       00be  ATM 622MBPS Controller (1410be00)
+       00dc  Advanced Systems Management Adapter (ASMA)
+       00fc  CPC710 Dual Bridge and Memory Controller (PCI-64)
+       0104  Gigabit Ethernet-SX Adapter
+       0105  CPC710 Dual Bridge and Memory Controller (PCI-32)
+       010f  Remote Supervisor Adapter (RSA)
+       0142  Yotta Video Compositor Input
+               1014 0143  Yotta Input Controller (ytin)
+       0144  Yotta Video Compositor Output
+               1014 0145  Yotta Output Controller (ytout)
+       0156  405GP PLB to PCI Bridge
+       015e  622Mbps ATM PCI Adapter
+       0160  64bit/66MHz PCI ATM 155 MMF
+       016e  GXT4000P Graphics Adapter
+       0170  GXT6000P Graphics Adapter
+       017d  GXT300P Graphics Adapter
+       0180  Snipe chipset SCSI controller
+               1014 0241  iSeries 2757 DASD IOA
+               1014 0264  Quad Channel PCI-X U320 SCSI RAID Adapter (2780)
+       0188  EADS-X PCI-X to PCI-X Bridge
+       01a7  PCI-X to PCI-X Bridge
+       01bd  ServeRAID Controller
+               1014 01bd  ServeRAID 4Lx
+               1014 01be  ServeRAID-4M
+               1014 01bf  ServeRAID-4L
+               1014 0208  ServeRAID-4Mx
+               1014 020e  ServeRAID-4Lx
+               1014 022e  ServeRAID-4H
+               1014 0258  ServeRAID-5i
+               1014 0259  ServeRAID-5i
+       01c1  64bit/66MHz PCI ATM 155 UTP
+       01e6  Cryptographic Accelerator
+       01ef  PowerPC 440GP PCI Bridge
+               1734 102b  PCEAS PCI-X Dual Port ESCON Adapter
+               1734 10f8  PCEAT PCI-Express Dual Port ESCON Adapter
+       01ff  10/100 Mbps Ethernet
+       0219  Multiport Serial Adapter
+               1014 021a  Dual RVX
+               1014 0251  Internal Modem/RVX
+               1014 0252  Quad Internal Modem
+       021b  GXT6500P Graphics Adapter
+       021c  GXT4500P Graphics Adapter
+       0233  GXT135P Graphics Adapter
+       0266  PCI-X Dual Channel SCSI
+       0268  Gigabit Ethernet-SX Adapter (PCI-X)
+       0269  10/100/1000 Base-TX Ethernet Adapter (PCI-X)
+       028c  Citrine chipset SCSI controller
+               1014 028d  Dual Channel PCI-X DDR SAS RAID Adapter (572E)
+               1014 02be  Dual Channel PCI-X DDR U320 SCSI RAID Adapter (571B)
+               1014 02c0  Dual Channel PCI-X DDR U320 SCSI Adapter (571A)
+               1014 030d  PCI-X DDR Auxiliary Cache Adapter (575B)
+       02a1  Calgary PCI-X Host Bridge
+       02bd  Obsidian chipset SCSI controller
+               1014 02c1  PCI-X DDR 3Gb SAS Adapter (572A/572C)
+               1014 02c2  PCI-X DDR 3Gb SAS RAID Adapter (572B/571D)
+               1014 0338  PCI-X DDR Auxiliary Cache Adapter (575C)
+       0302  Winnipeg PCI-X Host Bridge
+       0308  CalIOC2 PCI-E Root Port
+       0314  ZISC 036 Neural accelerator card
+       032d  Axon - Cell Companion Chip
+               1014 03a1  PCIe PowerXCell 8i Cell Accelerator Board
+       0339  Obsidian-E PCI-E SCSI controller
+               1014 030a  PCIe 3Gb SAS RAID Adapter (574E)
+               1014 033a  PCIe 3Gb SAS Adapter (57B3)
+               1014 0360  PCI-E Auxiliary Cache Adapter (57B7)
+       3022  QLA3022 Network Adapter
+       4022  QLA3022 Network Adapter
+       ffff  MPIC-2 interrupt controller
+1015  LSI Logic Corp of Canada
+1016  ICL Personal Systems
+1017  SPEA Software AG
+       5343  SPEA 3D Accelerator
+1018  Unisys Systems
+1019  Elitegroup Computer Systems
+101a  AT&T GIS (NCR)
+       0005  100VG ethernet
+       0007  BYNET BIC4G/2C/2G
+               101a 0019  BYNET BIC2C
+               101a 001c  BYNET BIC2G
+               101a 001f  BYNET BIC4G
+       0009  PQS Memory Controller
+       000a  BYNET BPCI Adapter
+       000b  BYNET 4 Port BYA Switch (BYA4P)
+       000c  BYNET 4 Port BYA Switch (BYA4G)
+       0010  NCR AMC Memory Controller
+       1dc1  BYNET BIC2M/BIC4M/BYA4M
+               101a 0019  BIC2M
+               101a 001f  BIC4M
+               101a 0ece  BYA4M
+       1fa8  BYNET Multi-port BIC Adapter (XBIC Based)
+               101a 00c3  BYNET BIC2SE
+101b  Vitesse Semiconductor
+101c  Western Digital
+       0193  33C193A
+       0196  33C196A
+       0197  33C197A
+       0296  33C296A
+       3193  7193
+       3197  7197
+       3296  33C296A
+       4296  34C296
+       9710  Pipeline 9710
+       9712  Pipeline 9712
+       c24a  90C
+# ID for Newly Acquired Storage Products from Vitesse
+101d  Maxim Integrated Products
+101e  American Megatrends Inc.
+       0009  MegaRAID 428 Ultra RAID Controller (rev 03)
+       1960  MegaRAID
+               101e 0471  MegaRAID 471 Enterprise 1600 RAID Controller
+               101e 0475  MegaRAID 475 Express 500/500LC RAID Controller
+               101e 0477  MegaRAID 477 Elite 3100 RAID Controller
+               101e 0493  MegaRAID 493 Elite 1600 RAID Controller
+               101e 0494  MegaRAID 494 Elite 1650 RAID Controller
+               101e 0503  MegaRAID 503 Enterprise 1650 RAID Controller
+               101e 0511  MegaRAID 511 i4 IDE RAID Controller
+               101e 0522  MegaRAID 522 i4133 RAID Controller
+               1028 0471  PowerEdge RAID Controller 3/QC
+               1028 0475  PowerEdge RAID Controller 3/SC
+               1028 0493  PowerEdge RAID Controller 3/DC
+               1028 0511  PowerEdge Cost Effective RAID Controller ATA100/4Ch
+               103c 60e7  NetRAID-1M
+       9010  MegaRAID 428 Ultra RAID Controller
+       9030  EIDE Controller
+       9031  EIDE Controller
+       9032  EIDE & SCSI Controller
+       9033  SCSI Controller
+       9040  Multimedia card
+       9060  MegaRAID 434 Ultra GT RAID Controller
+       9063  MegaRAC
+               101e 0767  Dell Remote Assistant Card 2
+101f  PictureTel
+1020  Hitachi Computer Products
+1021  OKI Electric Industry Co. Ltd.
+1022  Advanced Micro Devices [AMD]
+       1100  K8 [Athlon64/Opteron] HyperTransport Technology Configuration
+       1101  K8 [Athlon64/Opteron] Address Map
+       1102  K8 [Athlon64/Opteron] DRAM Controller
+       1103  K8 [Athlon64/Opteron] Miscellaneous Control
+       1200  Family 10h [Opteron, Athlon64, Sempron] HyperTransport Configuration
+       1201  Family 10h [Opteron, Athlon64, Sempron] Address Map
+       1202  Family 10h [Opteron, Athlon64, Sempron] DRAM Controller
+       1203  Family 10h [Opteron, Athlon64, Sempron] Miscellaneous Control
+       1204  Family 10h [Opteron, Athlon64, Sempron] Link Control
+       1300  Family 11h HyperTransport Configuration
+       1301  Family 11h Address Map
+       1302  Family 11h DRAM Controller
+       1303  Family 11h Miscellaneous Control
+       1304  Family 11h Link Control
+       2000  79c970 [PCnet32 LANCE]
+               1014 2000  NetFinity 10/100 Fast Ethernet
+               1022 2000  PCnet - Fast 79C971
+               103c 104c  Ethernet with LAN remote power Adapter
+               103c 1064  Ethernet with LAN remote power Adapter
+               103c 1065  Ethernet with LAN remote power Adapter
+               103c 106c  Ethernet with LAN remote power Adapter
+               103c 106e  Ethernet with LAN remote power Adapter
+               103c 10ea  Ethernet with LAN remote power Adapter
+               1113 1220  EN1220 10/100 Fast Ethernet
+               1259 2450  AT-2450 10/100 Fast Ethernet
+               1259 2454  AT-2450v4 10Mb Ethernet Adapter
+               1259 2700  AT-2700TX 10/100 Fast Ethernet
+               1259 2701  AT-2700FX 100Mb Ethernet
+               1259 2702  AT-2700FTX 10/100 Mb Fiber/Copper Fast Ethernet
+               1259 2703  AT-2701FX
+               1259 2704  AT-2701FTX 10/100 Mb Fiber/Copper Fast Ethernet
+               4c53 1000  CC7/CR7/CP7/VC7/VP7/VR7 mainboard
+               4c53 1010  CP5/CR6 mainboard
+               4c53 1020  VR6 mainboard
+               4c53 1030  PC5 mainboard
+               4c53 1040  CL7 mainboard
+               4c53 1060  PC7 mainboard
+       2001  79c978 [HomePNA]
+               1092 0a78  Multimedia Home Network Adapter
+               1668 0299  ActionLink Home Network Adapter
+       2003  Am 1771 MBW [Alchemy]
+       2020  53c974 [PCscsi]
+       2040  79c974
+       2080  CS5536 [Geode companion] Host Bridge
+       2081  Geode LX Video
+       2082  Geode LX AES Security Block
+       208f  CS5536 GeodeLink PCI South Bridge
+       2090  CS5536 [Geode companion] ISA
+       2091  CS5536 [Geode companion] FLASH
+       2093  CS5536 [Geode companion] Audio
+       2094  CS5536 [Geode companion] OHC
+       2095  CS5536 [Geode companion] EHC
+       2096  CS5536 [Geode companion] UDC
+       2097  CS5536 [Geode companion] UOC
+       209a  CS5536 [Geode companion] IDE
+       3000  ELanSC520 Microcontroller
+       7006  AMD-751 [Irongate] System Controller
+       7007  AMD-751 [Irongate] AGP Bridge
+       700a  AMD-IGR4 AGP Host to PCI Bridge
+       700b  AMD-IGR4 PCI to PCI Bridge
+       700c  AMD-760 MP [IGD4-2P] System Controller
+       700d  AMD-760 MP [IGD4-2P] AGP Bridge
+       700e  AMD-760 [IGD4-1P] System Controller
+       700f  AMD-760 [IGD4-1P] AGP Bridge
+       7400  AMD-755 [Cobra] ISA
+       7401  AMD-755 [Cobra] IDE
+       7403  AMD-755 [Cobra] ACPI
+       7404  AMD-755 [Cobra] USB
+       7408  AMD-756 [Viper] ISA
+       7409  AMD-756 [Viper] IDE
+       740b  AMD-756 [Viper] ACPI
+       740c  AMD-756 [Viper] USB
+       7410  AMD-766 [ViperPlus] ISA
+       7411  AMD-766 [ViperPlus] IDE
+       7413  AMD-766 [ViperPlus] ACPI
+       7414  AMD-766 [ViperPlus] USB
+       7440  AMD-768 [Opus] ISA
+               1043 8044  A7M-D Mainboard
+       7441  AMD-768 [Opus] IDE
+       7443  AMD-768 [Opus] ACPI
+               1043 8044  A7M-D Mainboard
+       7445  AMD-768 [Opus] Audio
+       7446  AMD-768 [Opus] MC97 Modem (Smart Link HAMR5600 compatible)
+       7448  AMD-768 [Opus] PCI
+       7449  AMD-768 [Opus] USB
+       7450  AMD-8131 PCI-X Bridge
+       7451  AMD-8131 PCI-X IOAPIC
+       7454  AMD-8151 System Controller
+       7455  AMD-8151 AGP Bridge
+       7458  AMD-8132 PCI-X Bridge
+       7459  AMD-8132 PCI-X IOAPIC
+       7460  AMD-8111 PCI
+               161f 3017  HDAMB
+       7461  AMD-8111 USB
+       7462  AMD-8111 Ethernet
+       7464  AMD-8111 USB
+               161f 3017  HDAMB
+       7468  AMD-8111 LPC
+               161f 3017  HDAMB
+       7469  AMD-8111 IDE
+               1022 2b80  AMD-8111 IDE [Quartet]
+               161f 3017  HDAMB
+       746a  AMD-8111 SMBus 2.0
+       746b  AMD-8111 ACPI
+               161f 3017  HDAMB
+       746d  AMD-8111 AC97 Audio
+               161f 3017  HDAMB
+       746e  AMD-8111 MC97 Modem
+       756b  AMD-8111 ACPI
+       9600  RS780 Host Bridge
+       9601  RS780 Host Bridge Alternate
+       9602  RS780 PCI to PCI bridge (int gfx)
+       9603  RS780 PCI to PCI bridge (ext gfx port 0)
+       9604  RS780 PCI to PCI bridge (PCIE port 0)
+       9605  RS780 PCI to PCI bridge (PCIE port 1)
+       9606  RS780 PCI to PCI bridge (PCIE port 2)
+       9607  RS780 PCI to PCI bridge (PCIE port 3)
+       9608  RS780 PCI to PCI bridge (PCIE port 4)
+       9609  RS780 PCI to PCI bridge (PCIE port 5)
+       960a  RS780 PCI to PCI bridge (NB-SB link)
+       960b  RS780 PCI to PCI bridge (ext gfx port 1)
+1023  Trident Microsystems
+       0194  82C194
+       2000  4DWave DX
+       2001  4DWave NX
+               122d 1400  Trident PCI288-Q3DII (NX)
+       2100  CyberBlade XP4m32
+       2200  XGI Volari XP5
+       8400  CyberBlade/i7
+               1023 8400  CyberBlade i7 AGP
+       8420  CyberBlade/i7d
+               0e11 b15a  CyberBlade i7 AGP
+       8500  CyberBlade/i1
+       8520  CyberBlade i1
+               0e11 b16e  CyberBlade i1 AGP
+               1023 8520  CyberBlade i1 AGP
+       8620  CyberBlade/i1
+               1014 0502  ThinkPad R30/T30
+               1014 1025  Travelmate 352TE
+       8820  CyberBlade XPAi1
+       9320  TGUI 9320
+       9350  GUI Accelerator
+       9360  Flat panel GUI Accelerator
+       9382  Cyber 9382 [Reference design]
+       9383  Cyber 9383 [Reference design]
+       9385  Cyber 9385 [Reference design]
+       9386  Cyber 9386
+       9388  Cyber 9388
+       9397  Cyber 9397
+       939a  Cyber 9397DVD
+       9420  TGUI 9420
+       9430  TGUI 9430
+       9440  TGUI 9440
+       9460  TGUI 9460
+       9470  TGUI 9470
+       9520  Cyber 9520
+       9525  Cyber 9525
+       9540  Cyber 9540
+       9660  TGUI 9660/938x/968x
+       9680  TGUI 9680
+       9682  TGUI 9682
+       9683  TGUI 9683
+       9685  ProVIDIA 9685
+       9750  3DImage 9750
+               1014 9750  3DImage 9750
+               1023 9750  3DImage 9750
+       9753  TGUI 9753
+       9754  TGUI 9754
+       9759  TGUI 975
+       9783  TGUI 9783
+       9785  TGUI 9785
+       9850  3DImage 9850
+       9880  Blade 3D PCI/AGP
+               1023 9880  Blade 3D
+       9910  CyberBlade/XP
+       9930  CyberBlade/XPm
+       9960  CyberBlade XP2
+1024  Zenith Data Systems
+1025  Acer Incorporated [ALI]
+       1435  M1435
+       1445  M1445
+       1449  M1449
+       1451  M1451
+       1461  M1461
+       1489  M1489
+       1511  M1511
+       1512  ALI M1512 Aladdin
+       1513  M1513
+       1521  ALI M1521 Aladdin III CPU Bridge
+               10b9 1521  ALI M1521 Aladdin III CPU Bridge
+       1523  ALI M1523 ISA Bridge
+               10b9 1523  ALI M1523 ISA Bridge
+       1531  M1531 Northbridge [Aladdin IV/IV+]
+       1533  M1533 PCI-to-ISA Bridge
+               10b9 1533  ALI M1533 Aladdin IV/V ISA South Bridge
+       1535  M1535 PCI Bridge + Super I/O + FIR
+       1541  M1541 Northbridge [Aladdin V]
+               10b9 1541  ALI M1541 Aladdin V/V+ AGP+PCI North Bridge
+       1542  M1542 Northbridge [Aladdin V]
+       1543  M1543 PCI-to-ISA Bridge + Super I/O + FIR
+       1561  M1561 Northbridge [Aladdin 7]
+       1621  M1621 Northbridge [Aladdin-Pro II]
+       1631  M1631 Northbridge+3D Graphics [Aladdin TNT2]
+       1641  M1641 Northbridge [Aladdin-Pro IV]
+       1647  M1647 [MaGiK1] PCI North Bridge
+       1671  M1671 Northbridge [ALADDiN-P4]
+       1672  Northbridge [CyberALADDiN-P4]
+       3141  M3141
+       3143  M3143
+       3145  M3145
+       3147  M3147
+       3149  M3149
+       3151  M3151
+       3307  M3307 MPEG-I Video Controller
+       3309  M3309 MPEG-II Video w/ Software Audio Decoder
+       3321  M3321 MPEG-II Audio/Video Decoder
+       5212  M4803
+       5215  ALI PCI EIDE Controller
+       5217  M5217H
+       5219  M5219
+       5225  M5225
+       5229  M5229
+       5235  M5235
+       5237  M5237 PCI USB Host Controller
+       5240  EIDE Controller
+       5241  PCMCIA Bridge
+       5242  General Purpose Controller
+       5243  PCI to PCI Bridge Controller
+       5244  Floppy Disk Controller
+       5247  M1541 PCI to PCI Bridge
+       5251  M5251 P1394 Controller
+       5427  PCI to AGP Bridge
+       5451  M5451 PCI AC-Link Controller Audio Device
+       5453  M5453 PCI AC-Link Controller Modem Device
+       7101  M7101 PCI PMU Power Management Controller
+               10b9 7101  M7101 PCI PMU Power Management Controller
+1028  Dell
+       0001  PowerEdge Expandable RAID Controller 2/Si
+               1028 0001  PowerEdge 2400
+       0002  PowerEdge Expandable RAID Controller 3/Di
+               1028 0002  PowerEdge 4400
+               1028 00d1  PERC 3/DiV [Viper]
+               1028 00d9  PERC 3/DiL [Lexus]
+       0003  PowerEdge Expandable RAID Controller 3/Si
+               1028 0003  PowerEdge 2450
+# PowerEdge Codename Iguana
+       0004  PowerEdge Expandable RAID Controller 3/Di [Iguana]
+               1028 0004  PERC 3/DiF [Iguana]
+       0006  PowerEdge Expandable RAID Controller 3/Di
+       0007  Remote Access Card III
+       0008  Remote Access Card III
+       0009  Remote Access Card III: BMC/SMIC device not present
+       000a  PowerEdge Expandable RAID Controller 3/Di
+               1028 0106  PERC 3/DiJ [Jaguar]
+               1028 011b  PERC 3/DiD [Dagger]
+               1028 0121  PERC 3/DiB [Boxster]
+       000c  Embedded Remote Access or ERA/O
+       000d  Embedded Remote Access: BMC/SMIC device
+       000e  PowerEdge Expandable RAID controller 4/Di
+       000f  PowerEdge Expandable RAID controller 4/Di
+               1028 014a  PowerEdge 1750
+       0010  Remote Access Card 4
+       0011  Remote Access Card 4 Daughter Card
+       0012  Remote Access Card 4 Daughter Card Virtual UART
+       0013  PowerEdge Expandable RAID controller 4
+               1028 016c  PowerEdge Expandable RAID Controller 4e/Si
+               1028 016d  PowerEdge Expandable RAID Controller 4e/Di
+               1028 016e  PowerEdge Expandable RAID Controller 4e/Di
+               1028 016f  PowerEdge Expandable RAID Controller 4e/Di
+               1028 0170  PowerEdge Expandable RAID Controller 4e/Di
+       0014  Remote Access Card 4 Daughter Card SMIC interface
+       0015  PowerEdge Expandable RAID controller 5
+               1028 1f01  PERC 5/E Adapter RAID Controller
+               1028 1f02  PERC 5/i Adapter RAID Controller
+               1028 1f03  PERC 5/i Integrated RAID Controller
+1029  Siemens Nixdorf IS
+102a  LSI Logic
+       0000  HYDRA
+       0010  ASPEN
+       001f  AHA-2940U2/U2W /7890/7891 SCSI Controllers
+               9005 000f  2940U2W SCSI Controller
+               9005 0106  2940U2W SCSI Controller
+               9005 a180  2940U2W SCSI Controller
+       00c5  AIC-7899 U160/m SCSI Controller
+               1028 00c5  PowerEdge 2550/2650/4600
+       00cf  AIC-7899P U160/m
+               1028 0106  PowerEdge 4600
+               1028 0121  PowerEdge 2650
+102b  Matrox Graphics, Inc.
+# DJ: I've a suspicion that 0010 is a duplicate of 0d10.
+       0010  MGA-I [Impression?]
+       0100  MGA 1064SG [Mystique]
+       0518  MGA-II [Athena]
+       0519  MGA 2064W [Millennium]
+       051a  MGA 1064SG [Mystique]
+               102b 0100  MGA-1064SG Mystique
+               102b 1100  MGA-1084SG Mystique
+               102b 1200  MGA-1084SG Mystique
+               1100 102b  MGA-1084SG Mystique
+               110a 0018  Scenic Pro C5 (D1025)
+       051b  MGA 2164W [Millennium II]
+               102b 051b  MGA-2164W Millennium II
+               102b 1100  MGA-2164W Millennium II
+               102b 1200  MGA-2164W Millennium II
+               102b 2100  MGA-2164W Millennium II
+       051e  MGA 1064SG [Mystique] AGP
+       051f  MGA 2164W [Millennium II] AGP
+       0520  MGA G200
+               102b dbc2  G200 Multi-Monitor
+               102b dbc8  G200 Multi-Monitor
+               102b dbe2  G200 Multi-Monitor
+               102b dbe8  G200 Multi-Monitor
+               102b ff03  Millennium G200 SD
+               102b ff04  Marvel G200
+       0521  MGA G200 AGP
+               1014 ff03  Millennium G200 AGP
+               102b 48e9  Mystique G200 AGP
+               102b 48f8  Millennium G200 SD AGP
+               102b 4a60  Millennium G200 LE AGP
+               102b 4a64  Millennium G200 AGP
+               102b c93c  Millennium G200 AGP
+               102b c9b0  Millennium G200 AGP
+               102b c9bc  Millennium G200 AGP
+               102b ca60  Millennium G250 LE AGP
+               102b ca6c  Millennium G250 AGP
+               102b dbbc  Millennium G200 AGP
+               102b dbc2  Millennium G200 MMS (Dual G200)
+               102b dbc3  G200 Multi-Monitor
+               102b dbc8  Millennium G200 MMS (Dual G200)
+               102b dbd2  G200 Multi-Monitor
+               102b dbd3  G200 Multi-Monitor
+               102b dbd4  G200 Multi-Monitor
+               102b dbd5  G200 Multi-Monitor
+               102b dbd8  G200 Multi-Monitor
+               102b dbd9  G200 Multi-Monitor
+               102b dbe2  Millennium G200 MMS (Quad G200)
+               102b dbe3  G200 Multi-Monitor
+               102b dbe8  Millennium G200 MMS (Quad G200)
+               102b dbf2  G200 Multi-Monitor
+               102b dbf3  G200 Multi-Monitor
+               102b dbf4  G200 Multi-Monitor
+               102b dbf5  G200 Multi-Monitor
+               102b dbf8  G200 Multi-Monitor
+               102b dbf9  G200 Multi-Monitor
+               102b f806  Mystique G200 Video AGP
+               102b ff00  MGA-G200 AGP
+               102b ff02  Mystique G200 AGP
+               102b ff03  Millennium G200 AGP
+               102b ff04  Marvel G200 AGP
+               110a 0032  MGA-G200 AGP
+       0522  MGA G200e [Pilot] ServerEngines (SEP1)
+       0525  MGA G400/G450
+               0e11 b16f  MGA-G400 AGP
+               102b 0328  Millennium G400 16Mb SDRAM
+               102b 0338  Millennium G400 16Mb SDRAM
+               102b 0378  Millennium G400 32Mb SDRAM
+               102b 0541  Millennium G450 Dual Head
+               102b 0542  Millennium G450 Dual Head LX
+               102b 0543  Millennium G450 Single Head LX
+               102b 0641  Millennium G450 32Mb SDRAM Dual Head
+               102b 0642  Millennium G450 32Mb SDRAM Dual Head LX
+               102b 0643  Millennium G450 32Mb SDRAM Single Head LX
+               102b 07c0  Millennium G450 Dual Head LE
+               102b 07c1  Millennium G450 SDR Dual Head LE
+               102b 0d41  Millennium G450 Dual Head PCI
+               102b 0d42  Millennium G450 Dual Head LX PCI
+               102b 0d43  Millennium G450 32Mb Dual Head PCI
+               102b 0e00  Marvel G450 eTV
+               102b 0e01  Marvel G450 eTV
+               102b 0e02  Marvel G450 eTV
+               102b 0e03  Marvel G450 eTV
+               102b 0f80  Millennium G450 Low Profile
+               102b 0f81  Millennium G450 Low Profile
+               102b 0f82  Millennium G450 Low Profile DVI
+               102b 0f83  Millennium G450 Low Profile DVI
+               102b 19d8  Millennium G400 16Mb SGRAM
+               102b 19f8  Millennium G400 32Mb SGRAM
+               102b 2159  Millennium G400 Dual Head 16Mb
+               102b 2179  Millennium G400 MAX/Dual Head 32Mb
+               102b 217d  Millennium G400 Dual Head Max
+               102b 23c0  Millennium G450
+               102b 23c1  Millennium G450
+               102b 23c2  Millennium G450 DVI
+               102b 23c3  Millennium G450 DVI
+               102b 2f58  Millennium G400
+               102b 2f78  Millennium G400
+               102b 3693  Marvel G400 AGP
+               102b 5dd0  4Sight II
+               102b 5f50  4Sight II
+               102b 5f51  4Sight II
+               102b 5f52  4Sight II
+               102b 9010  Millennium G400 Dual Head
+               1458 0400  GA-G400
+               1705 0001  Millennium G450 32MB SGRAM
+               1705 0002  Millennium G450 16MB SGRAM
+               1705 0003  Millennium G450 32MB
+               1705 0004  Millennium G450 16MB
+       0527  MGA Parhelia AGP
+               102b 0840  Parhelia 128Mb
+               102b 0850  Parhelia 256MB AGP 4X
+       0528  Parhelia 8X
+               102b 1020  Parhelia 128MB
+               102b 1030  Parhelia 256 MB Dual DVI
+               102b 14e1  Parhelia PCI 256MB
+               102b 2021  QID Pro
+       0532  MGA G200eW WPCM450 [Hermon] - Winbond/Nuvoton
+       0540  M91XX
+       0d10  MGA Ultima/Impression
+       1000  MGA G100 [Productiva]
+               102b ff01  Productiva G100
+               102b ff05  Productiva G100 Multi-Monitor
+       1001  MGA G100 [Productiva] AGP
+               102b 1001  MGA-G100 AGP
+               102b ff00  MGA-G100 AGP
+               102b ff01  MGA-G100 Productiva AGP
+               102b ff03  Millennium G100 AGP
+               102b ff04  MGA-G100 AGP
+               102b ff05  MGA-G100 Productiva AGP Multi-Monitor
+               110a 001e  MGA-G100 AGP
+       2007  MGA Mistral
+       2527  MGA G550 AGP
+               102b 0f83  Millennium G550
+               102b 0f84  Millennium G550 Dual Head DDR 32Mb
+               102b 1e41  Millennium G550
+# Clearly the device name should not say AGP anymore...
+               102b 2300  Millennium G550 LP PCIE
+       2537  Millenium P650/P750
+               102b 1820  Millennium P750 64MB
+               102b 1830  Millennium P650 64MB
+               102b 1c10  QID 128MB
+               102b 2811  Millennium P650 Low-profile PCI 64MB
+               102b 2c11  QID Low-profile PCI
+       2538  Millenium P650 PCIe
+               102b 08c7  Millennium P650 PCIe 128MB
+               102b 0907  Millennium P650 PCIe 64MB
+               102b 0947  Parhelia APVe
+               102b 1047  Millennium P650 LP PCIe 128MB
+               102b 1087  Millennium P650 LP PCIe 64MB
+               102b 2538  Parhelia APVe
+               102b 3007  QID Low-profile PCIe
+       2539  Millennium P690
+       4536  VIA Framegrabber
+       4cdc  Morphis Vision System Jpeg2000
+       4fc5  Morphis Vision System
+       5e10  Morphis Vision System Aux/IO
+       6573  Shark 10/100 Multiport SwitchNIC
+102c  Chips and Technologies
+       00b8  F64310
+       00c0  F69000 HiQVideo
+               102c 00c0  F69000 HiQVideo
+               4c53 1000  CC7/CR7/CP7/VC7/VP7/VR7 mainboard
+               4c53 1010  CP5/CR6 mainboard
+               4c53 1020  VR6 mainboard
+               4c53 1030  PC5 mainboard
+               4c53 1050  CT7 mainboard
+               4c53 1051  CE7 mainboard
+       00d0  F65545
+       00d8  F65545
+       00dc  F65548
+       00e0  F65550
+       00e4  F65554
+       00e5  F65555 HiQVPro
+               0e11 b049  Armada 1700 Laptop Display Controller
+               1179 0001  Satellite Pro/Satellite 4010
+       00f0  F68554
+       00f4  F68554 HiQVision
+       00f5  F68555
+       0c30  F69030
+               4c53 1000  CC7/CR7/CP7/VC7/VP7/VR7 mainboard
+               4c53 1050  CT7 mainboard
+               4c53 1051  CE7 mainboard
+               4c53 1080  CT8 mainboard
+102d  Wyse Technology Inc.
+       50dc  3328 Audio
+102e  Olivetti Advanced Technology
+102f  Toshiba America
+       0009  r4x00
+       000a  TX3927 MIPS RISC PCI Controller
+       0020  ATM Meteor 155
+               102f 00f8  ATM Meteor 155
+       0030  TC35815CF PCI 10/100 Mbit Ethernet Controller
+       0031  TC35815CF PCI 10/100 Mbit Ethernet Controller with WOL
+       0032  TC35815CF PCI 10/100 Mbit Ethernet Controller on TX4939
+       0105  TC86C001 [goku-s] IDE
+       0106  TC86C001 [goku-s] USB 1.1 Host
+       0107  TC86C001 [goku-s] USB Device Controller
+       0108  TC86C001 [goku-s] I2C/SIO/GPIO Controller
+       0180  TX4927/38 MIPS RISC PCI Controller
+       0181  TX4925 MIPS RISC PCI Controller
+       0182  TX4937 MIPS RISC PCI Controller
+       01b4  Celleb platform IDE interface
+       01b5  SCC USB 2.0 EHCI controller
+       01b6  SCC USB 1.1 OHCI controller
+1030  TMC Research
+1031  Miro Computer Products AG
+       5601  DC20 ASIC
+       5607  Video I/O & motion JPEG compressor
+       5631  Media 3D
+       6057  MiroVideo DC10/DC30+
+1032  Compaq
+1033  NEC Corporation
+       0000  Vr4181A USB Host or Function Control Unit
+       0001  PCI to 486-like bus Bridge
+       0002  PCI to VL98 Bridge
+       0003  ATM Controller
+       0004  R4000 PCI Bridge
+       0005  PCI to 486-like bus Bridge
+       0006  PC-9800 Graphic Accelerator
+       0007  PCI to UX-Bus Bridge
+       0008  PC-9800 Graphic Accelerator
+       0009  PCI to PC9800 Core-Graph Bridge
+       0016  PCI to VL Bridge
+       001a  [Nile II]
+       0021  Vrc4373 [Nile I]
+       0029  PowerVR PCX1
+       002a  PowerVR 3D
+       002c  Star Alpha 2
+       002d  PCI to C-bus Bridge
+       0035  USB
+               1033 0035  Hama USB 2.0 CardBus
+               1179 0001  USB
+               12ee 7000  Root Hub
+               14c2 0105  PTI-205N USB 2.0 Host Controller
+               1799 0001  Root Hub
+               1931 000a  GlobeTrotter Fusion Quad Lite (PPP data)
+               1931 000b  GlobeTrotter Fusion Quad Lite (GSM data)
+               807d 0035  PCI-USB2 (OHCI subsystem)
+       003b  PCI to C-bus Bridge
+       003e  NAPCCARD Cardbus Controller
+       0046  PowerVR PCX2 [midas]
+       005a  Vrc5074 [Nile 4]
+       0063  Firewarden
+       0067  PowerVR Neon 250 Chipset
+               1010 0020  PowerVR Neon 250 AGP 32Mb
+               1010 0080  PowerVR Neon 250 AGP 16Mb
+               1010 0088  PowerVR Neon 250 16Mb
+               1010 0090  PowerVR Neon 250 AGP 16Mb
+               1010 0098  PowerVR Neon 250 16Mb
+               1010 00a0  PowerVR Neon 250 AGP 32Mb
+               1010 00a8  PowerVR Neon 250 32Mb
+               1010 0120  PowerVR Neon 250 AGP 32Mb
+       0072  uPD72874 IEEE1394 OHCI 1.1 3-port PHY-Link Ctrlr
+       0074  56k Voice Modem
+               1033 8014  RCV56ACF 56k Voice Modem
+       009b  Vrc5476
+       00a5  VRC4173
+       00a6  VRC5477 AC97
+       00cd  IEEE 1394 [OrangeLink] Host Controller
+               12ee 8011  Root hub
+       00ce  IEEE 1394 Host Controller
+       00df  Vr4131
+       00e0  USB 2.0
+               12ee 7001  Root hub
+               14c2 0205  PTI-205N USB 2.0 Host Controller
+               1799 0002  Root Hub
+               807d 1043  PCI-USB2 (EHCI subsystem)
+       00e7  uPD72873 IEEE1394 OHCI 1.1 2-port Host Controller
+       00f2  uPD72874 IEEE1394 OHCI 1.1 3-port PHY-Link Ctrlr
+       00f3  uPD6113x Multimedia Decoder/Processor [EMMA2]
+       010c  VR7701
+       0125  uPD720400 PCI Express - PCI/PCI-X Bridge
+       013a  Dual Tuner/MPEG Encoder
+1034  Framatome Connectors USA Inc.
+1035  Comp. & Comm. Research Lab
+1036  Future Domain Corp.
+       0000  TMC-18C30 [36C70]
+1037  Hitachi Micro Systems
+1038  AMP, Inc
+1039  Silicon Integrated Systems [SiS]
+       0001  Virtual PCI-to-PCI bridge (AGP)
+       0002  SG86C202
+       0003  SiS AGP Port (virtual PCI-to-PCI bridge)
+       0004  PCI-to-PCI bridge
+       0006  85C501/2/3
+       0008  SiS85C503/5513 (LPC Bridge)
+       0009  ACPI
+       000a  PCI-to-PCI bridge
+       0016  SiS961/2 SMBus Controller
+       0018  SiS85C503/5513 (LPC Bridge)
+       0180  RAID bus controller 180 SATA/PATA  [SiS]
+       0181  SATA
+       0182  182 SATA/RAID Controller
+               1734 1095  D2030-A1
+       0186  AHCI Controller (0106)
+       0190  190 Ethernet Adapter
+       0191  191 Gigabit Ethernet Adapter
+       0200  5597/5598/6326 VGA
+               1039 0000  SiS5597 SVGA (Shared RAM)
+       0204  82C204
+       0205  SG86C205
+       0300  300/305 PCI/AGP VGA Display Adapter
+               107d 2720  Leadtek WinFast VR300
+       0310  315H PCI/AGP VGA Display Adapter
+       0315  315 PCI/AGP VGA Display Adapter
+       0325  315PRO PCI/AGP VGA Display Adapter
+       0330  330 [Xabre] PCI/AGP VGA Display Adapter
+       0406  85C501/2
+       0496  85C496
+       0530  530 Host
+       0540  540 Host
+       0550  550 Host
+       0597  5513C
+       0601  85C601
+       0620  620 Host
+       0630  630 Host
+       0633  633 Host
+       0635  635 Host
+       0645  SiS645 Host & Memory & AGP Controller
+       0646  SiS645DX Host & Memory & AGP Controller
+       0648  645xx
+       0649  SiS649 Host
+       0650  650/M650 Host
+       0651  651 Host
+       0655  655 Host
+       0660  660 Host
+       0661  661FX/M661FX/M661MX Host
+       0662  662 Host
+       0671  671MX
+       0730  730 Host
+       0733  733 Host
+       0735  735 Host
+       0740  740 Host
+       0741  741/741GX/M741 Host
+       0745  745 Host
+       0746  746 Host
+       0755  755 Host
+       0760  760/M760 Host
+       0761  761/M761 Host
+               1734 1099  D2030-A1 Motherboard
+       0900  SiS900 PCI Fast Ethernet
+               1019 0a14  K7S5A motherboard
+               1039 0900  SiS900 10/100 Ethernet Adapter onboard [Asus P4SC-EA]
+               1043 8035  CUSI-FX motherboard
+               1043 80a7  Motherboard P4S800D-X
+               1462 0900  MS-6701 motherboard
+       0961  SiS961 [MuTIOL Media IO]
+       0962  SiS962 [MuTIOL Media IO]
+       0963  SiS963 [MuTIOL Media IO]
+       0964  SiS964 [MuTIOL Media IO]
+       0965  SiS965 [MuTIOL Media IO]
+       0966  SiS966 [MuTIOL Media IO]
+       0968  SiS968 [MuTIOL Media IO]
+       1180  SATA Controller / IDE mode
+       1182  SATA Controller / RAID mode
+       1183  SATA Controller / IDE mode
+       1184  AHCI Controller / RAID mode
+       1185  AHCI IDE Controller (0106)
+       3602  83C602
+       5107  5107
+       5300  SiS540 PCI Display Adapter
+       5315  550 PCI/AGP VGA Display Adapter
+       5401  486 PCI Chipset
+       5511  5511/5512
+       5513  5513 [IDE]
+               1019 0970  P6STP-FL motherboard
+               1039 5513  SiS5513 EIDE Controller (A,B step)
+               1043 8035  CUSI-FX motherboard
+               1462 7010  MS-6701 motherboard
+               1631 5513  GA-8SIML Rev1.0 Motherboard
+               1734 1095  D2030-A1 Motherboard
+       5517  5517
+       5571  5571
+       5581  5581 Pentium Chipset
+       5582  5582
+       5591  5591/5592 Host
+       5596  5596 Pentium Chipset
+       5597  5597 [SiS5582]
+       5600  5600 Host
+       6204  Video decoder & MPEG interface
+       6205  VGA Controller
+       6236  6236 3D-AGP
+       6300  630/730 PCI/AGP VGA Display Adapter
+               1019 0970  P6STP-FL motherboard
+               1043 8035  CUSI-FX motherboard
+       6306  530/620 PCI/AGP VGA Display Adapter
+               1039 6306  SiS530,620 GUI Accelerator+3D
+       6325  65x/M650/740 PCI/AGP VGA Display Adapter
+               1039 6325  SiS 651 onboard [Asus P4SC-EA]
+               1631 1004  SiS 651C onboard [Gigabyte GA-8SIML Rev1.0]
+       6326  86C326 5598/6326
+               1039 6326  SiS6326 GUI Accelerator
+               1092 0a50  SpeedStar A50
+               1092 0a70  SpeedStar A70
+               1092 4910  SpeedStar A70
+               1092 4920  SpeedStar A70
+               1569 6326  SiS6326 GUI Accelerator
+       6330  661/741/760 PCI/AGP or 662/761Gx PCIE VGA Display Adapter
+               1039 6330  [M]661xX/[M]741[GX]/[M]760 PCI/AGP VGA Adapter
+               1043 8113  SiS Real 256E (ASUS P5S800-VM motherboard)
+               1458 d000  SiS661FX GUI 2D/3D Accelerator
+               1734 1099  D2030-A1
+       6350  770/670 PCIE VGA Display Adapter
+       6351  771/671 PCIE VGA Display Adapter
+       7001  USB 1.1 Controller
+               1019 0a14  K7S5A motherboard
+               1039 7000  Onboard USB Controller
+               1462 5470  ECS K7SOM+ motherboard
+               1462 7010  MS-6701 motherboard
+               1734 1095  D2030-A1 Motherboard
+       7002  USB 2.0 Controller
+               1462 5470  K7SOM+ 5.2C Motherboard
+               1462 7010  MS-6701 motherboard
+               1509 7002  Onboard USB Controller
+               1734 1095  D2030-A1
+       7007  FireWire Controller
+               1462 701d  MS-6701
+       7012  AC'97 Sound Controller
+               1039 7012  SiS 7012 onboard [Asus P4SC-EA] AC'97 Sound Controller
+               1043 818f  A8S-X Motherboard
+               13f6 0300  CMI9739(A) on ECS K7SOM+ motherboard
+               1462 5850  MSI 648 Max (MS-6585)
+               1462 7010  MS-6701 motherboard
+               15bd 1001  DFI 661FX motherboard
+               1734 109f  D2030-A1 Motherboard
+# There are may be different modem codecs here (Intel537 compatible and incompatible)
+       7013  AC'97 Modem Controller
+       7016  SiS7016 PCI Fast Ethernet Adapter
+               1039 7016  SiS7016 10/100 Ethernet Adapter
+       7018  SiS PCI Audio Accelerator
+               1014 01b6  SiS PCI Audio Accelerator
+               1014 01b7  SiS PCI Audio Accelerator
+               1019 7018  SiS PCI Audio Accelerator
+               1025 000e  SiS PCI Audio Accelerator
+               1025 0018  SiS PCI Audio Accelerator
+               1039 7018  SiS PCI Audio Accelerator
+               1043 1453  SiS PCI Audio Accelerator
+               1043 800b  SiS PCI Audio Accelerator
+               1054 7018  SiS PCI Audio Accelerator
+               107d 5330  SiS PCI Audio Accelerator
+               107d 5350  SiS PCI Audio Accelerator
+               1170 3209  SiS PCI Audio Accelerator
+               1462 400a  SiS PCI Audio Accelerator
+               14a4 2089  SiS PCI Audio Accelerator
+               14cd 2194  SiS PCI Audio Accelerator
+               14ff 1100  SiS PCI Audio Accelerator
+               152d 8808  SiS PCI Audio Accelerator
+               1558 1103  SiS PCI Audio Accelerator
+               1558 2200  SiS PCI Audio Accelerator
+               1563 7018  SiS PCI Audio Accelerator
+               15c5 0111  SiS PCI Audio Accelerator
+               270f a171  SiS PCI Audio Accelerator
+               a0a0 0022  SiS PCI Audio Accelerator
+       7019  SiS7019 Audio Accelerator
+       7502  Azalia Audio Controller
+103a  Seiko Epson Corporation
+103b  Tatung Corp. Of America
+103c  Hewlett-Packard Company
+       002a  NX9000 Notebook
+       08bc  NX5000 Notebook
+       1005  A4977A Visualize EG
+       1008  Visualize FX
+       1028  Tach TL Fibre Channel Host Adapter
+       1029  Tach XL2 Fibre Channel Host Adapter
+               107e 000f  Interphase 5560 Fibre Channel Adapter
+               9004 9210  1Gb/2Gb Family Fibre Channel Controller
+               9004 9211  1Gb/2Gb Family Fibre Channel Controller
+       102a  Tach TS Fibre Channel Host Adapter
+               107e 000e  Interphase 5540/5541 Fibre Channel Adapter
+               9004 9110  1Gb/2Gb Family Fibre Channel Controller
+               9004 9111  1Gb/2Gb Family Fibre Channel Controller
+       1030  J2585A DeskDirect 10/100VG NIC
+       1031  J2585B HP 10/100VG PCI LAN Adapter
+               103c 1040  J2973A DeskDirect 10BaseT NIC
+               103c 1041  J2585B DeskDirect 10/100VG NIC
+               103c 1042  J2970A DeskDirect 10BaseT/2 NIC
+       1040  J2973A DeskDirect 10BaseT NIC
+       1041  J2585B DeskDirect 10/100 NIC
+       1042  J2970A DeskDirect 10BaseT/2 NIC
+       1048  Diva Serial [GSP] Multiport UART
+               103c 1049  Tosca Console
+               103c 104a  Tosca Secondary
+               103c 104b  Maestro SP2
+               103c 1223  Superdome Console
+               103c 1226  Keystone SP2
+               103c 1227  Powerbar SP2
+               103c 1282  Everest SP2
+               103c 1301  Diva RMP3
+       1054  PCI Local Bus Adapter
+       1064  79C970 PCnet Ethernet Controller
+       108b  Visualize FXe
+       10c1  NetServer Smart IRQ Router
+       10ed  TopTools Remote Control
+       10f0  rio System Bus Adapter
+       10f1  rio I/O Controller
+       1200  82557B 10/100 NIC
+       1219  NetServer PCI Hot-Plug Controller
+       121a  NetServer SMIC Controller
+       121b  NetServer Legacy COM Port Decoder
+       121c  NetServer PCI COM Port Decoder
+       1229  zx1 System Bus Adapter
+       122a  zx1 I/O Controller
+       122e  PCI-X Local Bus Adapter
+       127b  sx1000 System Bus Adapter
+       127c  sx1000 I/O Controller
+       1290  Auxiliary Diva Serial Port
+               103c 1291  Diva SP2
+       1291  Auxiliary Diva Serial Port
+       12b4  zx1 QuickSilver AGP8x Local Bus Adapter
+       12eb  sx2000 System Bus Adapter
+       12ec  sx2000 I/O Controller
+       12ee  PCI-X 2.0 Local Bus Adapter
+       12f8  Broadcom BCM4306 802.11b/g Wireless LAN
+       12fa  BCM4306 802.11b/g Wireless LAN Controller
+       1302  RMP-3 Shared Memory Driver
+       1303  RMP-3 (Remote Management Processor)
+       1361  BCM4312 802.11a/b/g WLAN Controller
+       1371  Broadcom Corporation BCM4312 802.11a/b/g (rev 02)
+       2910  E2910A PCIBus Exerciser
+       2925  E2925A 32 Bit, 33 MHzPCI Exerciser & Analyzer
+       3080  Pavilion ze2028ea
+       3085  Realtek RTL8139/8139C/8139C+
+       30b5  Compaq Presario V3000Z
+       31fb  DL365 ATI ES1000 VGA controller
+       3206  Adaptec Embedded Serial ATA HostRAID
+       3220  Smart Array P600
+               103c 3225  3 Gb/s SAS RAID
+       3230  Smart Array Controller
+               103c 3223  Smart Array P800
+               103c 3234  P400 SAS Controller
+               103c 3235  P400i SAS Controller
+               103c 3237  E500 SAS Controller
+               103c 323d  P700m SAS Controller
+       3238  Smart Array E200i (SAS Controller)
+       323a  Smart Array G6 controllers
+               103c 3241  Smart Array P212
+               103c 3243  Smart Array P410
+               103c 3245  Smart Array P410i
+               103c 3247  Smart Array P411
+               103c 3249  Smart Array P812
+# Will present virtual install media as mass storage, keyboard/mouse from console session, etc.
+       3300  Proliant iLO2 virtual USB controller
+# Virtual serial port which is presented on a Java applet
+       3302  Proliant iLO2 virtual UART
+       3305  Proliant iLO2 [Integrated Lights Out] controller
+       4030  zx2 System Bus Adapter
+       4031  zx2 I/O Controller
+       4037  PCIe Local Bus Adapter
+       403b  PCIe Root Port
+       60e8  NetRAID-2M : ZX1/M (OEM AMI MegaRAID 493)
+103e  Solliday Engineering
+103f  Synopsys/Logic Modeling Group
+1040  Accelgraphics Inc.
+1041  Computrend
+1042  Micron
+       1000  PC Tech RZ1000
+       1001  PC Tech RZ1001
+       3000  Samurai_0
+       3010  Samurai_1
+       3020  Samurai_IDE
+1043  ASUSTeK Computer Inc.
+       0675  ISDNLink P-IN100-ST-D
+               0675 1704  ISDN Adapter (PCI Bus, D, C)
+               0675 1707  ISDN Adapter (PCI Bus, DV, W)
+               10cf 105e  ISDN Adapter (PCI Bus, DV, W)
+       0c11  A7N8X Motherboard nForce2 IDE/USB/SMBus
+       4015  v7100 SDRAM [GeForce2 MX]
+       4021  v7100 Combo Deluxe [GeForce2 MX + TV tuner]
+       4057  v8200 GeForce 3
+       8043  v8240 PAL 128M [P4T] Motherboard
+       8047  v8420 Deluxe [GeForce4 Ti4200]
+       807b  v9280/TD [Geforce4 TI4200 8X With TV-Out and DVI]
+       8095  A7N8X Motherboard nForce2 AC97 Audio
+       80ac  A7N8X Motherboard nForce2 AGP/Memory
+       80bb  v9180 Magic/T [GeForce4 MX440 AGP 8x 64MB TV-out]
+       80c5  nForce3 chipset motherboard [SK8N]
+       80df  v9520 Magic/T
+       815a  A8N-SLI Motherboard nForce4 SATA
+       8168  Realtek PCI-E Gigabit Ethernet Controller (RTL8111B)
+       8187  802.11a/b/g Wireless LAN Card
+       8188  Tiger Hybrid TV Capture Device
+# Found on ASUS M2V motherboard
+       81e7  Realtek ALC-660 6-channel CODEC
+       81f4  EN7300TC512/TD/128M/A(C262G) [Graphics Card EN7300TC512]
+1044  Adaptec (formerly DPT)
+       1012  Domino RAID Engine
+       a400  SmartCache/Raid I-IV Controller
+       a500  PCI Bridge
+       a501  SmartRAID V Controller
+               1044 c001  PM1554U2 Ultra2 Single Channel
+               1044 c002  PM1654U2 Ultra2 Single Channel
+               1044 c003  PM1564U3 Ultra3 Single Channel
+               1044 c004  PM1564U3 Ultra3 Dual Channel
+               1044 c005  PM1554U2 Ultra2 Single Channel (NON ACPI)
+               1044 c00a  PM2554U2 Ultra2 Single Channel
+               1044 c00b  PM2654U2 Ultra2 Single Channel
+               1044 c00c  PM2664U3 Ultra3 Single Channel
+               1044 c00d  PM2664U3 Ultra3 Dual Channel
+               1044 c00e  PM2554U2 Ultra2 Single Channel (NON ACPI)
+               1044 c00f  PM2654U2 Ultra2 Single Channel (NON ACPI)
+               1044 c014  PM3754U2 Ultra2 Single Channel (NON ACPI)
+               1044 c015  PM3755U2B Ultra2 Single Channel (NON ACPI)
+               1044 c016  PM3755F Fibre Channel (NON ACPI)
+               1044 c01e  PM3757U2 Ultra2 Single Channel
+               1044 c01f  PM3757U2 Ultra2 Dual Channel
+               1044 c020  PM3767U3 Ultra3 Dual Channel
+               1044 c021  PM3767U3 Ultra3 Quad Channel
+               1044 c028  PM2865U3 Ultra3 Single Channel
+               1044 c029  PM2865U3 Ultra3 Dual Channel
+               1044 c02a  PM2865F Fibre Channel
+               1044 c03c  2000S Ultra3 Single Channel
+               1044 c03d  2000S Ultra3 Dual Channel
+               1044 c03e  2000F Fibre Channel
+               1044 c046  3000S Ultra3 Single Channel
+               1044 c047  3000S Ultra3 Dual Channel
+               1044 c048  3000F Fibre Channel
+               1044 c050  5000S Ultra3 Single Channel
+               1044 c051  5000S Ultra3 Dual Channel
+               1044 c052  5000F Fibre Channel
+               1044 c05a  2400A UDMA Four Channel
+               1044 c05b  2400A UDMA Four Channel DAC
+               1044 c064  3010S Ultra3 Dual Channel
+               1044 c065  3410S Ultra160 Four Channel
+               1044 c066  3010S Fibre Channel
+       a511  SmartRAID V Controller
+               1044 c032  ASR-2005S I2O Zero Channel
+               1044 c035  ASR-2010S I2O Zero Channel
+1045  OPTi Inc.
+       a0f8  82C750 [Vendetta] USB Controller
+       c101  92C264
+       c178  92C178
+       c556  82X556 [Viper]
+       c557  82C557 [Viper-M]
+       c558  82C558 [Viper-M ISA+IDE]
+       c567  82C750 [Vendetta], device 0
+       c568  82C750 [Vendetta], device 1
+       c569  82C579 [Viper XPress+ Chipset]
+       c621  82C621 [Viper-M/N+]
+       c700  82C700 [FireStar]
+       c701  82C701 [FireStar Plus]
+       c814  82C814 [Firebridge 1]
+       c822  82C822
+       c824  82C824
+       c825  82C825 [Firebridge 2]
+       c832  82C832
+       c861  82C861
+       c895  82C895
+       c935  EV1935 ECTIVA MachOne PCIAudio
+       d568  82C825 [Firebridge 2]
+       d721  IDE [FireStar]
+1046  IPC Corporation, Ltd.
+1047  Genoa Systems Corp
+1048  Elsa AG
+       0c60  Gladiac MX
+       0d22  Quadro4 900XGL [ELSA GLoria4 900XGL]
+       1000  QuickStep 1000
+       3000  QuickStep 3000
+       8901  Gloria XL
+               1048 0935  GLoria XL (Virge)
+1049  Fountain Technologies, Inc.
+# nee SGS Thomson Microelectronics
+104a  STMicroelectronics
+       0000  STLS2F Host Bridge
+       0008  STG 2000X
+       0009  STG 1764X
+       0010  STG4000 [3D Prophet Kyro Series]
+       0201  STPC Vega Northbridge
+       0209  STPC Consumer/Industrial North- and Southbridge
+       020a  STPC Atlas/ConsumerS/Consumer IIA Northbridge
+       020b  STPC Consumer II ISA Bridge
+       0210  STPC Atlas ISA Bridge
+       021a  STPC Consumer S Southbridge
+       021b  STPC Consumer IIA Southbridge
+       0220  STPC Industrial PCI to PCCard bridge
+       0228  STPC Atlas IDE
+       0229  STPC Vega IDE
+       0230  STPC Atlas/Vega OHCI USB Controller
+       0238  STPC Vega LAN
+       0500  ST70137 [Unicorn] ADSL DMT Transceiver
+               104a 0500  BeWAN ADSL PCI st
+       0564  STPC Client Northbridge
+       0981  21x4x DEC-Tulip compatible 10/100 Ethernet
+       1746  STG 1764X
+       2774  21x4x DEC-Tulip compatible 10/100 Ethernet
+       3520  MPEG-II decoder card
+       55cc  STPC Client Southbridge
+104b  BusLogic
+       0140  BT-946C (old) [multimaster  01]
+       1040  BT-946C (BA80C30) [MultiMaster 10]
+       8130  Flashpoint LT
+104c  Texas Instruments
+       0500  100 MBit LAN Controller
+       0508  TMS380C2X Compressor Interface
+       1000  Eagle i/f AS
+       104c  PCI1510 PC card Cardbus Controller
+       3d04  TVP4010 [Permedia]
+       3d07  TVP4020 [Permedia 2]
+               1011 4d10  Comet
+               1040 000f  AccelStar II
+               1040 0011  AccelStar II
+               1048 0a31  WINNER 2000
+               1048 0a32  GLoria Synergy
+               1048 0a34  GLoria Synergy
+               1048 0a35  GLoria Synergy
+               1048 0a36  GLoria Synergy
+               1048 0a43  GLoria Synergy
+               1048 0a44  GLoria Synergy
+               107d 2633  WinFast 3D L2300
+               1092 0126  FIRE GL 1000 PRO
+               1092 0127  FIRE GL 1000 PRO
+               1092 0136  FIRE GL 1000 PRO
+               1092 0141  FIRE GL 1000 PRO
+               1092 0146  FIRE GL 1000 PRO
+               1092 0148  FIRE GL 1000 PRO
+               1092 0149  FIRE GL 1000 PRO
+               1092 0152  FIRE GL 1000 PRO
+               1092 0154  FIRE GL 1000 PRO
+               1092 0155  FIRE GL 1000 PRO
+               1092 0156  FIRE GL 1000 PRO
+               1092 0157  FIRE GL 1000 PRO
+               1097 3d01  Jeronimo Pro
+               1102 100f  Graphics Blaster Extreme
+               3d3d 0100  Reference Permedia 2 3D
+       8000  PCILynx/PCILynx2 IEEE 1394 Link Layer Controller
+               e4bf 1010  CF1-1-SNARE
+               e4bf 1020  CF1-2-SNARE
+       8009  FireWire Controller
+               104d 8032  8032 OHCI i.LINK (IEEE 1394) Controller
+       8017  PCI4410 FireWire Controller
+       8019  TSB12LV23 IEEE-1394 Controller
+               11bd 000a  Studio DV500-1394
+               11bd 000e  Studio DV
+               e4bf 1010  CF2-1-CYMBAL
+       8020  TSB12LV26 IEEE-1394 Controller (Link)
+               1028 00d8  Precision 530
+               11bd 000f  Studio DV500-1394
+               11bd 001c  Excalibur 4.1
+       8021  TSB43AA22 IEEE-1394 Controller (PHY/Link Integrated)
+               104d 80df  Vaio PCG-FX403
+               104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
+       8022  TSB43AB22 IEEE-1394a-2000 Controller (PHY/Link)
+               104c 8023  TSB43AB22/A IEEE-1394a-2000 Controller (PHY/Link)
+       8023  TSB43AB22/A IEEE-1394a-2000 Controller (PHY/Link)
+               103c 088c  NC8000 laptop
+               1043 808b  K8N4-E Mainboard
+               1043 815b  P5W DH Deluxe Motherboard
+       8024  TSB43AB23 IEEE-1394a-2000 Controller (PHY/Link)
+               107d 6620  Winfast DV2000 FireWire Controller
+               1443 8024  FireBoard Blue
+       8025  TSB82AA2 IEEE-1394b Link Layer Controller
+               1458 1000  GA-K8N Ultra-9 Mainboard
+       8026  TSB43AB21 IEEE-1394a-2000 Controller (PHY/Link)
+               1025 0035  TravelMate 660
+               1025 003c  Aspire 2001WLCi (Compaq CL50 motherboard)
+               103c 006a  NX9500
+               1043 808d  A7V333 mainboard.
+       8027  PCI4451 IEEE-1394 Controller
+               1028 00e6  PCI4451 IEEE-1394 Controller (Dell Inspiron 8100)
+       8029  PCI4510 IEEE-1394 Controller
+               1028 0163  Latitude D505
+               1028 0196  Inspiron 5160
+               1071 8160  MIM2900
+       802b  PCI7410,7510,7610 OHCI-Lynx Controller
+               1028 0139  Latitude D400
+               1028 014e  PCI7410,7510,7610 OHCI-Lynx Controller (Latitude D800)
+       802e  PCI7x20 1394a-2000 OHCI Two-Port PHY/Link-Layer Controller
+               1028 018d  Inspiron 700m/710m
+       8031  PCIxx21/x515 Cardbus Controller
+               1025 0080  Aspire 5024WLMi
+               103c 0934  Compaq nw8240/nx8220
+               103c 099c  NX6110/NC6120
+               103c 308b  MX6125
+       8032  OHCI Compliant IEEE 1394 Host Controller
+               1025 0080  Aspire 5024WLMi
+               103c 0934  Compaq nw8240/nx8220
+               103c 099c  NX6110/NC6120
+               103c 308b  MX6125
+       8033  PCIxx21 Integrated FlashMedia Controller
+               1025 0080  Aspire 5024WLMi
+               103c 0934  Compaq nw8240/nx8220
+               103c 099c  NX6110/NC6120
+               103c 308b  MX6125
+       8034  PCI6411/6421/6611/6621/7411/7421/7611/7621 Secure Digital Controller
+               1025 0080  Aspire 5024WLMi
+               103c 0934  Compaq nw8240/nx8220
+               103c 099c  NX6110/NC6120
+               103c 308b  MX6125
+       8035  PCI6411/6421/6611/6621/7411/7421/7611/7621 Smart Card Controller
+               103c 0934  Compaq nw8240/nx8220
+               103c 099c  NX6110/NC6120
+       8036  PCI6515 Cardbus Controller
+       8038  PCI6515 SmartCard Controller
+       8039  PCIxx12 Cardbus Controller
+               103c 309f  nx9420
+               103c 30a1  NC2400
+               103c 30a3  Compaq nw8440
+       803a  PCIxx12 OHCI Compliant IEEE 1394 Host Controller
+               103c 309f  nx9420
+               103c 30a1  NC2400
+               103c 30a3  Compaq nw8440
+       803b  5-in-1 Multimedia Card Reader (SD/MMC/MS/MS PRO/xD)
+               103c 309f  nx9420
+               103c 30a3  Compaq nw8440
+       803c  PCIxx12 SDA Standard Compliant SD Host Controller
+               103c 309f  nx9420
+               103c 30a3  Compaq nw8440
+       803d  PCIxx12 GemCore based SmartCard controller
+               103c 309f  nx9420
+               103c 30a1  NC2400
+               103c 30a3  nc8430
+       8101  TSB43DB42 IEEE-1394a-2000 Controller (PHY/Link)
+       8201  PCI1620 Firmware Loading Function
+       8204  PCI7410,7510,7610 PCI Firmware Loading Function
+               1028 0139  Latitude D400
+               1028 014e  Latitude D800
+       8231  XIO2000(A)/XIO2200(A) PCI Express-to-PCI Bridge
+       8235  XIO2200(A) IEEE-1394a-2000 Controller (PHY/Link)
+       8400  ACX 100 22Mbps Wireless Interface
+               1186 3b00  DWL-650+ PC Card cardbus 22Mbs Wireless Adapter [AirPlus]
+               1186 3b01  DWL-520+ 22Mbps PCI Wireless Adapter
+               1395 2201  WL22-PC
+               16ab 8501  WL-8305 IEEE802.11b+ Wireless LAN PCI Adapter
+       8401  ACX 100 22Mbps Wireless Interface
+       9000  Wireless Interface (of unknown type)
+       9065  TMS320DM642
+       9066  ACX 111 54Mbps Wireless Interface
+               104c 9066  Trendnet TEW-412PC Wireless PCI Adapter (Version A)
+               104c 9096  Trendnet TEW-412PC Wireless PCI Adapter (Version A)
+               1186 3b04  DWL-G520+ Wireless PCI Adapter
+               1186 3b05  DWL-G650+ AirPlusG+ CardBus Wireless LAN
+               13d1 aba0  SWLMP-54108 108Mbps Wireless mini PCI card 802.11g+
+               16ec 010d  USR5416 802.11g Wireless Turbo PCI Adapter
+               1737 0033  WPC54G Ver.2 802.11G PC Card
+               17cf 0033  Z-Com XG650 Wireless miniPCI 802.11b/g
+       a001  TDC1570
+       a100  TDC1561
+       a102  TNETA1575 HyperSAR Plus w/PCI Host i/f & UTOPIA i/f
+       a106  TMS320C6414 TMS320C6415 TMS320C6416
+               175c 5000  ASI50xx Audio Adapter
+               175c 6400  ASI6400 Cobranet series
+               175c 8700  ASI87xx Radio Tuner card
+       ac10  PCI1050
+       ac11  PCI1053
+       ac12  PCI1130
+       ac13  PCI1031
+       ac15  PCI1131
+       ac16  PCI1250
+               1014 0092  ThinkPad 600
+       ac17  PCI1220
+       ac18  PCI1260
+       ac19  PCI1221
+       ac1a  PCI1210
+       ac1b  PCI1450
+               0e11 b113  Armada M700
+               1014 0130  ThinkPad A21m/T20/T22
+       ac1c  PCI1225
+               0e11 b121  Armada E500
+               1028 0088  Latitude CPi A400XT
+       ac1d  PCI1251A
+       ac1e  PCI1211
+       ac1f  PCI1251B
+       ac20  TI 2030
+       ac21  PCI2031
+       ac22  PCI2032 PCI Docking Bridge
+       ac23  PCI2250 PCI-to-PCI Bridge
+       ac28  PCI2050 PCI-to-PCI Bridge
+       ac2c  PCI2060 PCI-to-PCI Bridge
+       ac30  PCI1260 PC card Cardbus Controller
+       ac40  PCI4450 PC card Cardbus Controller
+       ac41  PCI4410 PC card Cardbus Controller
+       ac42  PCI4451 PC card Cardbus Controller
+               1028 00e6  PCI4451 PC card CardBus Controller (Inspiron 8100)
+       ac44  PCI4510 PC card Cardbus Controller
+               1028 0149  Inspiron 5100
+               1028 0163  Latitude D505
+               1028 0196  Inspiron 5160
+               1071 8160  MIM2000
+       ac46  PCI4520 PC card Cardbus Controller
+               1014 0552  ThinkPad
+       ac47  PCI7510 PC card Cardbus Controller
+               1028 0139  Latitude D400
+               1028 013f  Precision M60
+               1028 014e  Latitude D800
+       ac4a  PCI7510,7610 PC card Cardbus Controller
+               1028 0139  Latitude D400
+               1028 014e  Latitude D800
+       ac50  PCI1410 PC card Cardbus Controller
+       ac51  PCI1420 PC card Cardbus Controller
+               0e11 004e  Evo N600c
+               1014 0148  ThinkPad A20m
+               1014 023b  ThinkPad T23
+               1028 00b1  Latitude C600
+               1028 012a  Latitude C640
+               1033 80cd  Versa Note VXi
+               10cf 1095  Lifebook S-4510/C6155
+               e4bf 1000  CP2-2-HIPHOP
+       ac52  PCI1451 PC card Cardbus Controller
+       ac53  PCI1421 PC card Cardbus Controller
+       ac54  PCI1620 PC Card Controller
+               103c 08b0  tc1100 tablet
+       ac55  PCI1520 PC card Cardbus Controller
+               1014 0512  ThinkPad T30/T40
+       ac56  PCI1510 PC card Cardbus Controller
+               1014 0512  ThinkPad R50e
+               1014 0528  ThinkPad R40e
+               17aa 2012  ThinkPad T60/R60 series
+       ac60  PCI2040 PCI to DSP Bridge Controller
+               175c 5100  ASI51xx Audio Adapter
+               175c 6100  ASI61xx Audio Adapter
+               175c 6200  ASI62xx Audio Adapter
+               175c 8800  ASI88xx Audio Adapter
+               186f 3001  WR-G303 PCI radio receiver
+               186f 3005  WR-G305 PCI radio receiver
+               186f 3101  WR-G313 PCI radio receiver
+               186f 3105  WR-G315 PCI radio receiver
+       ac8d  PCI 7620
+       ac8e  PCI7420 CardBus Controller
+               1028 018d  Inspiron 700m/710m
+       ac8f  PCI7420/7620 Combo CardBus, 1394a-2000 OHCI and SD/MS-Pro Controller
+               1028 018d  Inspiron 700m/710m
+       fe00  FireWire Host Controller
+       fe03  12C01A FireWire Host Controller
+104d  Sony Corporation
+       8004  DTL-H2500 [Playstation development board]
+       8009  CXD1947Q i.LINK Controller
+       8039  CXD3222 i.LINK Controller
+       8056  Rockwell HCF 56K modem
+       808a  Memory Stick Controller
+104e  Oak Technology, Inc
+       0017  OTI-64017
+       0107  OTI-107 [Spitfire]
+       0109  Video Adapter
+       0111  OTI-64111 [Spitfire]
+       0217  OTI-64217
+       0317  OTI-64317
+104f  Co-time Computer Ltd
+1050  Winbond Electronics Corp
+       0000  NE2000
+       0001  W83769F
+       0033  W89C33D 802.11 a/b/g BB/MAC
+       0105  W82C105
+       0840  W89C840
+               1050 0001  W89C840 Ethernet Adapter
+               1050 0840  W89C840 Ethernet Adapter
+       0940  W89C940
+       5a5a  W89C940F
+       6692  W6692
+               1043 1702  ISDN Adapter (PCI Bus, D, W)
+               1043 1703  ISDN Adapter (PCI Bus, DV, W)
+               1043 1707  ISDN Adapter (PCI Bus, DV, W)
+               144f 1702  ISDN Adapter (PCI Bus, D, W)
+               144f 1703  ISDN Adapter (PCI Bus, DV, W)
+               144f 1707  ISDN Adapter (PCI Bus, DV, W)
+       9921  W99200F MPEG-1 Video Encoder
+       9922  W99200F/W9922PF MPEG-1/2 Video Encoder
+       9970  W9970CF
+1051  Anigma, Inc.
+1052  ?Young Micro Systems
+1053  Young Micro Systems
+1054  Hitachi, Ltd
+       3009  2Gbps Fibre Channel to PCI HBA 3009
+       300a  4Gbps Fibre Channel to PCI-X HBA 300a
+       300b  4Gbps Fibre Channel to PCI-X HBA 300b
+       300f  ColdFusion 3 Chipset Processor to I/O Controller
+       3010  ColdFusion 3 Chipset Memory Controller Hub
+       3011  ColdFusion 3e Chipset Processor to I/O Controller
+       3012  ColdFusion 3e Chipset Memory Controller Hub
+       3017  Unassigned Hitachi Shared FC Device 3017
+       301d  PCIe-to-PCIe Bridge with Virtualization IO Assist Feature
+1055  Efar Microsystems
+       9130  SLC90E66 [Victory66] IDE
+       9460  SLC90E66 [Victory66] ISA
+       9462  SLC90E66 [Victory66] USB
+       9463  SLC90E66 [Victory66] ACPI
+       e420  LAN9420/LAN9420i
+1056  ICL
+# Motorola made a mistake and used 1507 instead of 1057 in some chips. Please look at the 1507 entry as well when updating this.
+1057  Motorola
+       0001  MPC105 [Eagle]
+       0002  MPC106 [Grackle]
+       0003  MPC8240 [Kahlua]
+       0004  MPC107
+       0006  MPC8245 [Unity]
+       0008  MPC8540
+       0009  MPC8560
+       0012  MPC8548 [PowerQUICC III]
+       0100  MC145575 [HFC-PCI]
+       0431  KTI829c 100VG
+       1073  Nokia N770
+       1219  Nokia N800
+       1801  DSP56301 Digital Signal Processor
+               14fb 0101  Transas Radar Imitator Board [RIM]
+               14fb 0102  Transas Radar Imitator Board [RIM-2]
+               14fb 0202  Transas Radar Integrator Board [RIB-2]
+               14fb 0611  1 channel CAN bus Controller [CanPci-1]
+               14fb 0612  2 channels CAN bus Controller [CanPci-2]
+               14fb 0613  3 channels CAN bus Controller [CanPci-3]
+               14fb 0614  4 channels CAN bus Controller [CanPci-4]
+               14fb 0621  1 channel CAN bus Controller [CanPci2-1]
+               14fb 0622  2 channels CAN bus Controller [CanPci2-2]
+               14fb 0810  Transas VTS Radar Integrator Board [RIB-4]
+               175c 4200  ASI4215 Audio Adapter
+               175c 4300  ASI43xx Audio Adapter
+               175c 4400  ASI4401 Audio Adapter
+               ecc0 0010  Darla
+               ecc0 0020  Gina
+               ecc0 0030  Layla rev.0
+               ecc0 0031  Layla rev.1
+               ecc0 0040  Darla24 rev.0
+               ecc0 0041  Darla24 rev.1
+               ecc0 0050  Gina24 rev.0
+               ecc0 0051  Gina24 rev.1
+               ecc0 0070  Mona rev.0
+               ecc0 0071  Mona rev.1
+               ecc0 0072  Mona rev.2
+       18c0  MPC8265A/8266/8272
+       18c1  MPC8271/MPC8272
+       3052  SM56 Data Fax Modem
+       3055  SM56 Data Fax Modem
+       3410  DSP56361 Digital Signal Processor
+               ecc0 0050  Gina24 rev.0
+               ecc0 0051  Gina24 rev.1
+               ecc0 0060  Layla24
+               ecc0 0070  Mona rev.0
+               ecc0 0071  Mona rev.1
+               ecc0 0072  Mona rev.2
+               ecc0 0080  Mia rev.0
+               ecc0 0081  Mia rev.1
+               ecc0 0090  Indigo
+               ecc0 00a0  Indigo IO
+               ecc0 00b0  Indigo DJ
+               ecc0 0100  3G
+       4801  Raven
+       4802  Falcon
+       4803  Hawk
+       4806  CPX8216
+       4d68  20268
+       5600  SM56 PCI Modem
+               1057 0300  SM56 PCI Speakerphone Modem
+               1057 0301  SM56 PCI Voice Modem
+               1057 0302  SM56 PCI Fax Modem
+               1057 5600  SM56 PCI Voice modem
+               13d2 0300  SM56 PCI Speakerphone Modem
+               13d2 0301  SM56 PCI Voice modem
+               13d2 0302  SM56 PCI Fax Modem
+               1436 0300  SM56 PCI Speakerphone Modem
+               1436 0301  SM56 PCI Voice modem
+               1436 0302  SM56 PCI Fax Modem
+               144f 100c  SM56 PCI Fax Modem
+               1494 0300  SM56 PCI Speakerphone Modem
+               1494 0301  SM56 PCI Voice modem
+               14c8 0300  SM56 PCI Speakerphone Modem
+               14c8 0302  SM56 PCI Fax Modem
+               1668 0300  SM56 PCI Speakerphone Modem
+               1668 0302  SM56 PCI Fax Modem
+       5608  Wildcard X100P
+       5803  MPC5200
+       5806  MCF54 Coldfire
+       5808  MPC8220
+       5809  MPC5200B
+       6400  MPC190 Security Processor (S1 family, encryption)
+       6405  MPC184 Security Processor (S1 family)
+1058  Electronics & Telecommunications RSH
+1059  Teknor Industrial Computers Inc
+105a  Promise Technology, Inc.
+       0d30  PDC20265 (FastTrak100 Lite/Ultra100)
+               1043 8042  AV7266-E South Bridge Promise RAID
+               105a 4d33  Ultra100
+       0d38  20263
+               105a 4d39  Fasttrak66
+       1275  20275
+       3318  PDC20318 (SATA150 TX4)
+       3319  PDC20319 (FastTrak S150 TX4)
+               8086 3427  S875WP1-E mainboard
+       3371  PDC20371 (FastTrak S150 TX2plus)
+       3373  PDC20378 (FastTrak 378/SATA 378)
+               1043 80f5  K8V Deluxe/PC-DL Deluxe motherboard
+               1462 590d  KT6 Delta-FIS2R (MS-6590)
+               1462 702e  K8T NEO FIS2R motherboard
+       3375  PDC20375 (SATA150 TX2plus)
+       3376  PDC20376 (FastTrak 376)
+               1043 809e  A7V8X motherboard
+       3515  PDC40719 [FastTrak TX4300/TX4310]
+       3519  PDC40519 (FastTrak TX4200)
+       3570  20771 (FastTrak TX2300)
+       3571  PDC20571 (FastTrak TX2200)
+       3574  PDC20579 SATAII 150 IDE Controller
+       3577  PDC40779 (SATA 300 779)
+       3d17  PDC40718 (SATA 300 TX4)
+       3d18  PDC20518/PDC40518 (SATAII 150 TX4)
+       3d73  PDC40775 (SATA 300 TX2plus)
+       3d75  PDC20575 (SATAII150 TX2plus)
+       4302  80333 [SuperTrak EX4350]
+       4d30  PDC20267 (FastTrak100/Ultra100)
+               105a 4d33  Ultra100
+               105a 4d39  FastTrak100
+               8086 5744  S845WD1-E mainboard
+       4d33  20246
+               105a 4d33  20246 IDE Controller
+       4d38  PDC20262 (FastTrak66/Ultra66)
+               105a 4d30  Ultra Device on SuperTrak
+               105a 4d33  Ultra66
+               105a 4d39  FastTrak66
+       4d68  PDC20268 (Ultra100 TX2)
+               105a 4d68  Ultra100TX2
+       4d69  20269
+               105a 4d68  Ultra133TX2
+       5275  PDC20276 (MBFastTrak133 Lite)
+               1043 807e  A7V333 motherboard.
+               105a 0275  SuperTrak SX6000 IDE
+               105a 1275  MBFastTrak133 Lite (tm) Controller (RAID mode)
+               1458 b001  MBUltra 133
+       5300  DC5300
+       6268  PDC20270 (FastTrak100 LP/TX2/TX4)
+               105a 4d68  FastTrak100 TX2
+       6269  PDC20271 (FastTrak TX2000)
+               105a 6269  FastTrak TX2/TX2000
+       6300  PDC81731 [FastTrak SX8300]
+       6621  PDC20621 (FastTrak S150 SX4/FastTrak SX4000 lite)
+       6622  PDC20621 [SATA150 SX4] 4 Channel IDE RAID Controller
+       6624  PDC20621 [FastTrak SX4100]
+       6626  PDC20618 (Ultra 618)
+       6629  PDC20619 (FastTrak TX4000)
+       7275  PDC20277 (SBFastTrak133 Lite)
+       8002  SATAII150 SX8
+       8350  80333 [SuperTrak EX8350/EX16350], 80331 [SuperTrak EX8300/EX16300]
+       8650  81384 [SuperTrak EX SAS and SATA RAID Controller]
+               105a 4600  SuperTrak EX4650A
+               105a 4601  SuperTrak EX4650
+               105a 4610  SuperTrak EX4650EL
+               105a 8600  SuperTrak EX8650EL
+               105a 8601  SuperTrak EX8650A
+               105a 8602  SuperTrak EX8654
+               105a 8603  SuperTrak EX8658
+               105a 8604  SuperTrak EX8650
+               105a 8610  SuperTrak EX8650M
+               105a b600  SuperTrak EX16650
+       c350  80333 [SuperTrak EX12350]
+       e350  80333 [SuperTrak EX24350]
+105b  Foxconn International, Inc.
+       0c4d  SiS AC'97 Sound Controller
+105c  Wipro Infotech Limited
+105d  Number 9 Computer Company
+       2309  Imagine 128
+       2339  Imagine 128-II
+               105d 0000  Imagine 128 series 2 4Mb VRAM
+               105d 0001  Imagine 128 series 2 4Mb VRAM
+               105d 0002  Imagine 128 series 2 4Mb VRAM
+               105d 0003  Imagine 128 series 2 4Mb VRAM
+               105d 0004  Imagine 128 series 2 4Mb VRAM
+               105d 0005  Imagine 128 series 2 4Mb VRAM
+               105d 0006  Imagine 128 series 2 4Mb VRAM
+               105d 0007  Imagine 128 series 2 4Mb VRAM
+               105d 0008  Imagine 128 series 2e 4Mb DRAM
+               105d 0009  Imagine 128 series 2e 4Mb DRAM
+               105d 000a  Imagine 128 series 2 8Mb VRAM
+               105d 000b  Imagine 128 series 2 8Mb H-VRAM
+               11a4 000a  Barco Metheus 5 Megapixel
+               13cc 0000  Barco Metheus 5 Megapixel
+               13cc 0004  Barco Metheus 5 Megapixel
+               13cc 0005  Barco Metheus 5 Megapixel
+               13cc 0006  Barco Metheus 5 Megapixel
+               13cc 0008  Barco Metheus 5 Megapixel
+               13cc 0009  Barco Metheus 5 Megapixel
+               13cc 000a  Barco Metheus 5 Megapixel
+               13cc 000c  Barco Metheus 5 Megapixel
+       493d  Imagine 128 T2R [Ticket to Ride]
+               11a4 000a  Barco Metheus 5 Megapixel, Dual Head
+               11a4 000b  Barco Metheus 5 Megapixel, Dual Head
+               13cc 0002  Barco Metheus 4 Megapixel, Dual Head
+               13cc 0003  Barco Metheus 5 Megapixel, Dual Head
+               13cc 0007  Barco Metheus 5 Megapixel, Dual Head
+               13cc 0008  Barco Metheus 5 Megapixel, Dual Head
+               13cc 0009  Barco Metheus 5 Megapixel, Dual Head
+               13cc 000a  Barco Metheus 5 Megapixel, Dual Head
+       5348  Revolution 4
+               105d 0037  Revolution IV-FP AGP (For SGI 1600SW)
+               11a4 0028  PVS5600M
+               11a4 0038  PVS5600D
+105e  Vtech Computers Ltd
+105f  Infotronic America Inc
+1060  United Microelectronics [UMC]
+       0001  UM82C881
+       0002  UM82C886
+       0101  UM8673F
+       0881  UM8881
+       0886  UM8886F
+       0891  UM8891A
+       1001  UM886A
+       673a  UM8886BF
+       673b  EIDE Master/DMA
+       8710  UM8710
+       886a  UM8886A
+       8881  UM8881F
+       8886  UM8886F
+       888a  UM8886A
+       8891  UM8891A
+       9017  UM9017F
+       9018  UM9018
+       9026  UM9026
+       e881  UM8881N
+       e886  UM8886N
+       e88a  UM8886N
+       e891  UM8891N
+1061  I.I.T.
+       0001  AGX016
+       0002  IIT3204/3501
+1062  Maspar Computer Corp
+1063  Ocean Office Automation
+1064  Alcatel
+1065  Texas Microsystems
+1066  PicoPower Technology
+       0000  PT80C826
+       0001  PT86C521 [Vesuvius v1] Host Bridge
+       0002  PT86C523 [Vesuvius v3] PCI-ISA Bridge Master
+       0003  PT86C524 [Nile] PCI-to-PCI Bridge
+       0004  PT86C525 [Nile-II] PCI-to-PCI Bridge
+       0005  National PC87550 System Controller
+       8002  PT86C523 [Vesuvius v3] PCI-ISA Bridge Slave
+1067  Mitsubishi Electric
+       0301  AccelGraphics AccelECLIPSE
+       0304  AccelGALAXY A2100 [OEM Evans & Sutherland]
+       0308  Tornado 3000 [OEM Evans & Sutherland]
+       1002  VG500 [VolumePro Volume Rendering Accelerator]
+1068  Diversified Technology
+1069  Mylex Corporation
+       0001  DAC960P
+       0002  DAC960PD
+       0010  DAC960PG
+       0020  DAC960LA
+       0050  AcceleRAID 352/170/160 support Device
+               1069 0050  AcceleRAID 352 support Device
+               1069 0052  AcceleRAID 170 support Device
+               1069 0054  AcceleRAID 160 support Device
+       b166  AcceleRAID 600/500/400/Sapphire support Device
+               1014 0242  iSeries 2872 DASD IOA
+               1014 0266  Dual Channel PCI-X U320 SCSI Adapter
+               1014 0278  Dual Channel PCI-X U320 SCSI RAID Adapter
+               1014 02d3  Dual Channel PCI-X U320 SCSI Adapter
+               1014 02d4  Dual Channel PCI-X U320 SCSI RAID Adapter
+               1069 0200  AcceleRAID 400, Single Channel, PCI-X, U320, SCSI RAID
+               1069 0202  AcceleRAID Sapphire, Dual Channel, PCI-X, U320, SCSI RAID
+               1069 0204  AcceleRAID 500, Dual Channel, Low-Profile, PCI-X, U320, SCSI RAID
+               1069 0206  AcceleRAID 600, Dual Channel, PCI-X, U320, SCSI RAID
+       ba55  eXtremeRAID 1100 support Device
+       ba56  eXtremeRAID 2000/3000 support Device
+               1069 0030  eXtremeRAID 3000 support Device
+               1069 0040  eXtremeRAID 2000 support Device
+       ba57  eXtremeRAID 4000/5000 support Device
+               1069 0072  eXtremeRAID 5000 support Device
+106a  Aten Research Inc
+106b  Apple Computer Inc.
+       0001  Bandit PowerPC host bridge
+       0002  Grand Central I/O
+       0003  Control Video
+       0004  PlanB Video-In
+       0007  O'Hare I/O
+       000c  DOS on Mac
+       000e  Hydra Mac I/O
+       0010  Heathrow Mac I/O
+       0017  Paddington Mac I/O
+       0018  UniNorth FireWire
+       0019  KeyLargo USB
+       001e  UniNorth Internal PCI
+       001f  UniNorth PCI
+       0020  UniNorth AGP
+       0021  UniNorth GMAC (Sun GEM)
+       0022  KeyLargo Mac I/O
+       0024  UniNorth/Pangea GMAC (Sun GEM)
+       0025  KeyLargo/Pangea Mac I/O
+       0026  KeyLargo/Pangea USB
+       0027  UniNorth/Pangea AGP
+       0028  UniNorth/Pangea PCI
+       0029  UniNorth/Pangea Internal PCI
+       002d  UniNorth 1.5 AGP
+       002e  UniNorth 1.5 PCI
+       002f  UniNorth 1.5 Internal PCI
+       0030  UniNorth/Pangea FireWire
+       0031  UniNorth 2 FireWire
+               106b 5811  iBook G4 2004
+       0032  UniNorth 2 GMAC (Sun GEM)
+       0033  UniNorth 2 ATA/100
+       0034  UniNorth 2 AGP
+       0035  UniNorth 2 PCI
+       0036  UniNorth 2 Internal PCI
+       003b  UniNorth/Intrepid ATA/100
+       003e  KeyLargo/Intrepid Mac I/O
+       003f  KeyLargo/Intrepid USB
+       0040  K2 KeyLargo USB
+       0041  K2 KeyLargo Mac/IO
+       0042  K2 FireWire
+       0043  K2 ATA/100
+       0045  K2 HT-PCI Bridge
+       0046  K2 HT-PCI Bridge
+       0047  K2 HT-PCI Bridge
+       0048  K2 HT-PCI Bridge
+       0049  K2 HT-PCI Bridge
+       004b  U3 AGP
+       004c  K2 GMAC (Sun GEM)
+       004f  Shasta Mac I/O
+       0050  Shasta IDE
+       0051  Shasta (Sun GEM)
+       0052  Shasta Firewire
+       0053  Shasta PCI Bridge
+       0054  Shasta PCI Bridge
+       0055  Shasta PCI Bridge
+       0057  U3 HT Bridge
+       0058  U3L AGP Bridge
+       0059  U3H AGP Bridge
+       0066  Intrepid2 AGP Bridge
+       0067  Intrepid2 PCI Bridge
+       0068  Intrepid2 PCI Bridge
+       0069  Intrepid2 ATA/100
+       006a  Intrepid2 Firewire
+       006b  Intrepid2 GMAC (Sun GEM)
+       0074  U4 HT Bridge
+       1645  Tigon3 Gigabit Ethernet NIC (BCM5701)
+106c  Hynix Semiconductor
+       8801  Dual Pentium ISA/PCI Motherboard
+       8802  PowerPC ISA/PCI Motherboard
+       8803  Dual Window Graphics Accelerator
+       8804  LAN Controller
+       8805  100-BaseT LAN
+106d  Sequent Computer Systems
+106e  DFI, Inc
+106f  City Gate Development Ltd
+1070  Daewoo Telecom Ltd
+1071  Mitac
+       8160  Mitac 8060B Mobile Platform
+1072  GIT Co Ltd
+1073  Yamaha Corporation
+       0001  3D GUI Accelerator
+       0002  YGV615 [RPA3 3D-Graphics Controller]
+       0003  YMF-740
+       0004  YMF-724
+               1073 0004  YMF724-Based PCI Audio Adapter
+       0005  DS1 Audio
+               1073 0005  DS-XG PCI Audio CODEC
+       0006  DS1 Audio
+       0008  DS1 Audio
+               1073 0008  DS-XG PCI Audio CODEC
+       000a  DS1L Audio
+               1073 0004  DS-XG PCI Audio CODEC
+               1073 000a  DS-XG PCI Audio CODEC
+       000c  YMF-740C [DS-1L Audio Controller]
+               107a 000c  DS-XG PCI Audio CODEC
+       000d  YMF-724F [DS-1 Audio Controller]
+               1073 000d  DS-XG PCI Audio CODEC
+       0010  YMF-744B [DS-1S Audio Controller]
+               1073 0006  DS-XG PCI Audio CODEC
+               1073 0010  DS-XG PCI Audio CODEC
+       0012  YMF-754 [DS-1E Audio Controller]
+               1073 0012  DS-XG PCI Audio Codec
+       0020  DS-1 Audio
+       1000  SW1000XG [XG Factory]
+       2000  DS2416 Digital Mixing Card
+               1073 2000  DS2416 Digital Mixing Card
+1074  NexGen Microsystems
+       4e78  82c500/1
+1075  Advanced Integrations Research
+1076  Chaintech Computer Co. Ltd
+1077  QLogic Corp.
+       1016  ISP10160 Single Channel Ultra3 SCSI Processor
+       1020  ISP1020 Fast-wide SCSI
+       1022  ISP1022 Fast-wide SCSI
+       1080  ISP1080 SCSI Host Adapter
+       1216  ISP12160 Dual Channel Ultra3 SCSI Processor
+               101e 8471  QLA12160 on AMI MegaRAID
+               101e 8493  QLA12160 on AMI MegaRAID
+       1240  ISP1240 SCSI Host Adapter
+       1280  ISP1280 SCSI Host Adapter
+       2020  ISP2020A Fast!SCSI Basic Adapter
+       2100  QLA2100 64-bit Fibre Channel Adapter
+               1077 0001  QLA2100 64-bit Fibre Channel Adapter
+       2200  QLA2200 64-bit Fibre Channel Adapter
+               1077 0002  QLA2200
+       2300  QLA2300 64-bit Fibre Channel Adapter
+       2312  ISP2312-based 2Gb Fibre Channel to PCI-X HBA
+               103c 0131  2Gb Fibre Channel - Single port [A7538A]
+               103c 12ba  2Gb Fibre Channel - Dual port [A6826A]
+       2322  ISP2322-based 2Gb Fibre Channel to PCI-X HBA
+       2422  ISP2422-based 4Gb Fibre Channel to PCI-X HBA
+               103c 12d7  4Gb Fibre Channel [AB379A]
+               103c 12dd  4Gb Fibre Channel [AB429A]
+       2432  ISP2432-based 4Gb Fibre Channel to PCI Express HBA
+       2532  ISP2532-based 8Gb Fibre Channel to PCI Express HBA
+       3022  ISP4022-based Ethernet NIC
+       3032  ISP4032-based Ethernet IPv6 NIC
+       4010  ISP4010-based iSCSI TOE HBA
+       4022  ISP4022-based iSCSI TOE HBA
+       4032  ISP4032-based iSCSI TOE IPv6 HBA
+       5432  SP232-based 4Gb Fibre Channel to PCI Express HBA
+       6312  SP202-based 2Gb Fibre Channel to PCI-X HBA
+       6322  SP212-based 2Gb Fibre Channel to PCI-X HBA
+       7220  IBA7220 InfiniBand HCA
+       8432  ISP2432M-based 10GbE Converged Network Adapter (CNA)
+1078  Cyrix Corporation
+       0000  5510 [Grappa]
+       0001  PCI Master
+       0002  5520 [Cognac]
+       0100  5530 Legacy [Kahlua]
+       0101  5530 SMI [Kahlua]
+       0102  5530 IDE [Kahlua]
+       0103  5530 Audio [Kahlua]
+       0104  5530 Video [Kahlua]
+       0400  ZFMicro PCI Bridge
+       0401  ZFMicro Chipset SMI
+       0402  ZFMicro Chipset IDE
+       0403  ZFMicro Expansion Bus
+1079  I-Bus
+107a  NetWorth
+107b  Gateway 2000
+107c  LG Electronics [Lucky Goldstar Co. Ltd]
+107d  LeadTek Research Inc.
+       0000  P86C850
+       204d  [GeForce 7800 GTX] Winfast PX7800 GTX TDH
+       2134  WinFast 3D S320 II
+       2971  [GeForce FX 5900] WinFast A350 TDH MyViVo
+       6654  Conexant CX23883 [WinFast DTV1800 H]
+107e  Interphase Corporation
+       0001  5515 ATM Adapter [Flipper]
+       0002  100 VG AnyLan Controller
+       0004  5526 Fibre Channel Host Adapter
+       0005  x526 Fibre Channel Host Adapter
+       0008  5525/5575 ATM Adapter (155 Mbit) [Atlantic]
+       9003  5535-4P-BRI-ST
+       9007  5535-4P-BRI-U
+       9008  5535-1P-SR
+       900c  5535-1P-SR-ST
+       900e  5535-1P-SR-U
+       9011  5535-1P-PRI
+       9013  5535-2P-PRI
+       9023  5536-4P-BRI-ST
+       9027  5536-4P-BRI-U
+       9031  5536-1P-PRI
+       9033  5536-2P-PRI
+107f  Data Technology Corporation
+       0802  SL82C105
+1080  Contaq Microsystems
+       0600  82C599
+       c691  Cypress CY82C691
+       c693  82c693
+1081  Supermac Technology
+       0d47  Radius PCI to NuBUS Bridge
+1082  EFA Corporation of America
+1083  Forex Computer Corporation
+       0001  FR710
+1084  Parador
+1085  Tulip Computers Int.B.V.
+1086  J. Bond Computer Systems
+1087  Cache Computer
+1088  Microcomputer Systems (M) Son
+1089  Data General Corporation
+# Formerly Bit3 Computer Corp.
+108a  SBS Technologies
+       0001  VME Bridge Model 617
+       0010  VME Bridge Model 618
+       0040  dataBLIZZARD
+       3000  VME Bridge Model 2706
+108c  Oakleigh Systems Inc.
+108d  Olicom
+       0001  Token-Ring 16/4 PCI Adapter (3136/3137)
+       0002  16/4 Token Ring
+       0004  RapidFire 3139 Token-Ring 16/4 PCI Adapter
+               108d 0004  OC-3139/3140 RapidFire Token-Ring 16/4 Adapter
+       0005  GoCard 3250 Token-Ring 16/4 CardBus PC Card
+       0006  OC-3530 RapidFire Token-Ring 100
+       0007  RapidFire 3141 Token-Ring 16/4 PCI Fiber Adapter
+               108d 0007  OC-3141 RapidFire Token-Ring 16/4 Adapter
+       0008  RapidFire 3540 HSTR 100/16/4 PCI Adapter
+               108d 0008  OC-3540 RapidFire HSTR 100/16/4 Adapter
+       0011  OC-2315
+       0012  OC-2325
+       0013  OC-2183/2185
+       0014  OC-2326
+       0019  OC-2327/2250 10/100 Ethernet Adapter
+               108d 0016  OC-2327 Rapidfire 10/100 Ethernet Adapter
+               108d 0017  OC-2250 GoCard 10/100 Ethernet Adapter
+       0021  OC-6151/6152 [RapidFire ATM 155]
+       0022  ATM Adapter
+108e  Sun Microsystems Computer Corp.
+       0001  EBUS
+       1000  EBUS
+       1001  Happy Meal 10/100 Ethernet [hme]
+       1100  RIO EBUS
+               108e 1100  RIO EBUS on Blade 100 motherboard
+# Correction
+       1101  RIO 10/100 Ethernet [eri]
+               108e 1101  RIO GEM on Blade 100 motherboard
+       1102  RIO 1394
+               108e 1102  RIO 1394 on Blade 100 motherboard
+       1103  RIO USB
+               108e 1103  RIO USB on Blade 100 motherboard
+       1647  Broadcom 570x 10/100/1000 Ethernet [bge]
+       1648  Broadcom 570x 10/100/1000 Ethernet [bge]
+       16a7  Broadcom 570x 10/100/1000 Ethernet [bge]
+       16a8  Broadcom 570x 10/100/1000 Ethernet [bge]
+       2bad  GEM 10/100/1000 Ethernet [ge]
+       5000  Simba Advanced PCI Bridge
+               108e 5000  Netra AX1105-500
+       5043  SunPCI Co-processor
+       5ca0  Crypto Accelerator 6000 [mca]
+       6300  Intel 21554 PCI-PCI bus bridge [db21554]
+       6301  Intel 21554 PCI-PCI bus bridge [db21554]
+       6302  Intel 21554 PCI-PCI bus bridge [db21554]
+       6303  Intel 21554 PCI-PCI bus bridge [db21554]
+       6310  Intel 21554 PCI-PCI bus bridge [db21554]
+       6311  Intel 21554 PCI-PCI bus bridge [db21554]
+       6312  Intel 21554 PCI-PCI bus bridge [db21554]
+       6313  Intel 21554 PCI-PCI bus bridge [db21554]
+       6320  Intel 21554 PCI-PCI bus bridge [db21554]
+       6323  Intel 21554 PCI-PCI bus bridge [db21554]
+       6330  Intel 21554 PCI-PCI bus bridge [db21554]
+       6331  Intel 21554 PCI-PCI bus bridge [db21554]
+       6332  Intel 21554 PCI-PCI bus bridge [db21554]
+       6333  Intel 21554 PCI-PCI bus bridge [db21554]
+       6340  Intel 21554 PCI-PCI bus bridge [db21554]
+       6343  Intel 21554 PCI-PCI bus bridge [db21554]
+       6350  Intel 21554 PCI-PCI bus bridge [db21554]
+       6353  Intel 21554 PCI-PCI bus bridge [db21554]
+       6722  Intel 21554 PCI-PCI bus bridge [db21554]
+       676e  SunPCiIII
+       7063  SunPCiII / SunPCiIIpro
+       8000  Psycho PCI Bus Module
+       8001  Schizo PCI Bus Module
+       8002  Schizo+ PCI Bus Module
+       80f0  PCIe switch [px]
+       80f8  PCIe switch [px]
+       9010  PCIe/PCI bridge switch [pxb_plx]
+       9020  PCIe/PCI bridge switch [pxb_plx]
+       9102  Davicom Fast Ethernet driver for Davicom DM9102A [dmfe]
+       a000  Psycho UPA-PCI Bus Module [pcipsy]
+       a001  Psycho UPA-PCI Bus Module [pcipsy]
+               108e a001  Ultra IIe on Blade 100 motherboard
+       a801  Schizo Fireplane-PCI bus bridge module [pcisch]
+       abba  Cassini 10/100/1000
+       abcd  Multithreaded 10 Gigabit Ethernet Network Controller
+       c416  Sun Fire System/System Controller Interface chip [sbbc]
+108f  Systemsoft
+1090  Compro Computer Services, Inc.
+1091  Intergraph Corporation
+       0020  3D graphics processor
+       0021  3D graphics processor w/Texturing
+       0040  3D graphics frame buffer
+       0041  3D graphics frame buffer
+       0060  Proprietary bus bridge
+       00e4  Powerstorm 4D50T
+       0720  Motion JPEG codec
+       0780  Intense3D Wildcat 3410 (MSMT496)
+       07a0  Sun Expert3D-Lite Graphics Accelerator
+       1091  Sun Expert3D Graphics Accelerator
+1092  Diamond Multimedia Systems
+       0028  Viper V770
+               1092 4a00  Viper V770 32MB
+       00a0  Speedstar Pro SE
+       00a8  Speedstar 64
+       0550  Viper V550
+       08d4  Supra 2260 Modem
+       094c  SupraExpress 56i Pro
+       1001  Video Crunch It 1001 capture card
+       1092  Viper V330
+       6120  Maximum DVD
+       8810  Stealth SE
+       8811  Stealth 64/SE
+       8880  Stealth
+       8881  Stealth
+       88b0  Stealth 64
+       88b1  Stealth 64
+       88c0  Stealth 64
+       88c1  Stealth 64
+       88d0  Stealth 64
+       88d1  Stealth 64
+       88f0  Stealth 64
+       88f1  Stealth 64
+       9999  DMD-I0928-1 "Monster sound" sound chip
+1093  National Instruments
+       0160  PCI-DIO-96
+       0162  PCI-MIO-16XE-50
+       1150  PCI-DIO-32HS High Speed Digital I/O Board
+       1170  PCI-MIO-16XE-10
+       1180  PCI-MIO-16E-1
+       1190  PCI-MIO-16E-4
+       1310  PCI-6602
+       1330  PCI-6031E
+       1350  PCI-6071E
+       14e0  PCI-6110
+       14f0  PCI-6111
+       17d0  PCI-6503
+       1870  PCI-6713
+       1880  PCI-6711
+       18b0  PCI-6052E
+       2410  PCI-6733
+       2890  PCI-6036E
+       2a60  PCI-6023E
+       2a70  PCI-6024E
+       2a80  PCI-6025E
+       2c80  PCI-6035E
+       2ca0  PCI-6034E
+       70a9  PCI-6528 (Digital I/O at 60V)
+       70b8  PCI-6251 [M Series - High Speed Multifunction DAQ]
+       7144  PXI-5124 (12-bit 200 MS/s Digitizer)
+       b001  IMAQ-PCI-1408
+       b011  IMAQ-PXI-1408
+       b021  IMAQ-PCI-1424
+       b031  IMAQ-PCI-1413
+       b041  IMAQ-PCI-1407
+       b051  IMAQ-PXI-1407
+       b061  IMAQ-PCI-1411
+       b071  IMAQ-PCI-1422
+       b081  IMAQ-PXI-1422
+       b091  IMAQ-PXI-1411
+       c801  PCI-GPIB
+       c831  PCI-GPIB bridge
+1094  First International Computers [FIC]
+# nee CMD Technology Inc
+1095  Silicon Image, Inc.
+       0240  Adaptec AAR-1210SA SATA HostRAID Controller
+       0640  PCI0640
+       0643  PCI0643
+       0646  PCI0646
+       0647  PCI0647
+       0648  PCI0648
+               1043 8025  CUBX motherboard
+       0649  SiI 0649 Ultra ATA/100 PCI to ATA Host Controller
+               0e11 005d  Integrated Ultra ATA-100 Dual Channel Controller
+               0e11 007e  Integrated Ultra ATA-100 IDE RAID Controller
+               101e 0649  AMI MegaRAID IDE 100 Controller
+       0650  PBC0650A
+       0670  USB0670
+               1095 0670  USB0670
+       0673  USB0673
+       0680  PCI0680 Ultra ATA-133 Host Controller
+               1095 0680  SiI 0680 ATA/133 Controller
+               1095 3680  Winic W-680 (Silicon Image 680 based)
+       3112  SiI 3112 [SATALink/SATARaid] Serial ATA Controller
+               1095 3112  SiI 3112 SATALink Controller
+               1095 6112  SiI 3112 SATARaid Controller
+               9005 0250  SATAConnect 1205SA Host Controller
+       3114  SiI 3114 [SATALink/SATARaid] Serial ATA Controller
+               1095 3114  SiI 3114 SATALink Controller
+               1095 6114  SiI 3114 SATARaid Controller
+       3124  SiI 3124 PCI-X Serial ATA Controller
+               1095 3124  SiI 3124 PCI-X Serial ATA Controller
+       3132  SiI 3132 Serial ATA Raid II Controller
+       3512  SiI 3512 [SATALink/SATARaid] Serial ATA Controller
+               1095 3512  SiI 3512 SATALink Controller
+               1095 6512  SiI 3512 SATARaid Controller
+       3531  Sil 3531 [SATALink/SATARaid] Serial ATA Controller
+1096  Alacron
+1097  Appian Technology
+1098  Quantum Designs (H.K.) Ltd
+       0001  QD-8500
+       0002  QD-8580
+1099  Samsung Electronics Co., Ltd
+109a  Packard Bell
+109b  Gemlight Computer Ltd.
+109c  Megachips Corporation
+109d  Zida Technologies Ltd.
+109e  Brooktree Corporation
+       032e  Bt878 Video Capture
+       0350  Bt848 Video Capture
+       0351  Bt849A Video capture
+       0369  Bt878 Video Capture
+               1002 0001  TV-Wonder
+               1002 0003  TV-Wonder/VE
+       036c  Bt879(??) Video Capture
+               13e9 0070  Win/TV (Video Section)
+       036e  Bt878 Video Capture
+               0070 13eb  WinTV Series
+               0070 ff01  Viewcast Osprey 200
+               0071 0101  DigiTV PCI
+               107d 6606  WinFast TV 2000
+               11bd 0012  PCTV pro (TV + FM stereo receiver)
+               11bd 001c  PCTV Sat (DBC receiver)
+               127a 0001  Bt878 Mediastream Controller NTSC
+               127a 0002  Bt878 Mediastream Controller PAL BG
+               127a 0003  Bt878a Mediastream Controller PAL BG
+               127a 0048  Bt878/832 Mediastream Controller
+               144f 3000  MagicTView CPH060 - Video
+               1461 0002  TV98 Series (TV/No FM/Remote)
+               1461 0003  AverMedia UltraTV PCI 350
+               1461 0004  AVerTV WDM Video Capture
+               1461 0761  AverTV DVB-T
+               1461 0771  AverMedia AVerTV DVB-T 771
+               14f1 0001  Bt878 Mediastream Controller NTSC
+               14f1 0002  Bt878 Mediastream Controller PAL BG
+               14f1 0003  Bt878a Mediastream Controller PAL BG
+               14f1 0048  Bt878/832 Mediastream Controller
+               1822 0001  VisionPlus DVB card
+               1851 1850  FlyVideo'98 - Video
+               1851 1851  FlyVideo II
+               1852 1852  FlyVideo'98 - Video (with FM Tuner)
+               18ac d500  DViCO FusionHDTV5 Lite
+               270f fc00  Digitop DTT-1000
+               bd11 1200  PCTV pro (TV + FM stereo receiver)
+       036f  Bt879 Video Capture
+               127a 0044  Bt879 Video Capture NTSC
+               127a 0122  Bt879 Video Capture PAL I
+               127a 0144  Bt879 Video Capture NTSC
+               127a 0222  Bt879 Video Capture PAL BG
+               127a 0244  Bt879a Video Capture NTSC
+               127a 0322  Bt879 Video Capture NTSC
+               127a 0422  Bt879 Video Capture NTSC
+               127a 1122  Bt879 Video Capture PAL I
+               127a 1222  Bt879 Video Capture PAL BG
+               127a 1322  Bt879 Video Capture NTSC
+               127a 1522  Bt879a Video Capture PAL I
+               127a 1622  Bt879a Video Capture PAL BG
+               127a 1722  Bt879a Video Capture NTSC
+               14f1 0044  Bt879 Video Capture NTSC
+               14f1 0122  Bt879 Video Capture PAL I
+               14f1 0144  Bt879 Video Capture NTSC
+               14f1 0222  Bt879 Video Capture PAL BG
+               14f1 0244  Bt879a Video Capture NTSC
+               14f1 0322  Bt879 Video Capture NTSC
+               14f1 0422  Bt879 Video Capture NTSC
+               14f1 1122  Bt879 Video Capture PAL I
+               14f1 1222  Bt879 Video Capture PAL BG
+               14f1 1322  Bt879 Video Capture NTSC
+               14f1 1522  Bt879a Video Capture PAL I
+               14f1 1622  Bt879a Video Capture PAL BG
+               14f1 1722  Bt879a Video Capture NTSC
+               1851 1850  FlyVideo'98 - Video
+               1851 1851  FlyVideo II
+               1852 1852  FlyVideo'98 - Video (with FM Tuner)
+       0370  Bt880 Video Capture
+               1851 1850  FlyVideo'98
+               1851 1851  FlyVideo'98 EZ - video
+               1852 1852  FlyVideo'98 (with FM Tuner)
+       0878  Bt878 Audio Capture
+               0070 13eb  WinTV Series
+               0070 ff01  Viewcast Osprey 200
+               0071 0101  DigiTV PCI
+               1002 0001  TV-Wonder
+               1002 0003  TV-Wonder/VE
+               11bd 0012  PCTV pro (TV + FM stereo receiver, audio section)
+               11bd 001c  PCTV Sat (DBC receiver)
+               127a 0001  Bt878 Video Capture (Audio Section)
+               127a 0002  Bt878 Video Capture (Audio Section)
+               127a 0003  Bt878 Video Capture (Audio Section)
+               127a 0048  Bt878 Video Capture (Audio Section)
+               13e9 0070  Win/TV (Audio Section)
+               144f 3000  MagicTView CPH060 - Audio
+               1461 0002  Avermedia PCTV98 Audio Capture
+               1461 0003  UltraTV PCI 350
+               1461 0004  AVerTV WDM Audio Capture
+               1461 0761  AVerTV DVB-T
+               1461 0771  AverMedia AVerTV DVB-T 771
+               14f1 0001  Bt878 Video Capture (Audio Section)
+               14f1 0002  Bt878 Video Capture (Audio Section)
+               14f1 0003  Bt878 Video Capture (Audio Section)
+               14f1 0048  Bt878 Video Capture (Audio Section)
+               1822 0001  VisionPlus DVB Card
+               18ac d500  DViCO FusionHDTV5 Lite
+               270f fc00  Digitop DTT-1000
+               bd11 1200  PCTV pro (TV + FM stereo receiver, audio section)
+       0879  Bt879 Audio Capture
+               127a 0044  Bt879 Video Capture (Audio Section)
+               127a 0122  Bt879 Video Capture (Audio Section)
+               127a 0144  Bt879 Video Capture (Audio Section)
+               127a 0222  Bt879 Video Capture (Audio Section)
+               127a 0244  Bt879 Video Capture (Audio Section)
+               127a 0322  Bt879 Video Capture (Audio Section)
+               127a 0422  Bt879 Video Capture (Audio Section)
+               127a 1122  Bt879 Video Capture (Audio Section)
+               127a 1222  Bt879 Video Capture (Audio Section)
+               127a 1322  Bt879 Video Capture (Audio Section)
+               127a 1522  Bt879 Video Capture (Audio Section)
+               127a 1622  Bt879 Video Capture (Audio Section)
+               127a 1722  Bt879 Video Capture (Audio Section)
+               14f1 0044  Bt879 Video Capture (Audio Section)
+               14f1 0122  Bt879 Video Capture (Audio Section)
+               14f1 0144  Bt879 Video Capture (Audio Section)
+               14f1 0222  Bt879 Video Capture (Audio Section)
+               14f1 0244  Bt879 Video Capture (Audio Section)
+               14f1 0322  Bt879 Video Capture (Audio Section)
+               14f1 0422  Bt879 Video Capture (Audio Section)
+               14f1 1122  Bt879 Video Capture (Audio Section)
+               14f1 1222  Bt879 Video Capture (Audio Section)
+               14f1 1322  Bt879 Video Capture (Audio Section)
+               14f1 1522  Bt879 Video Capture (Audio Section)
+               14f1 1622  Bt879 Video Capture (Audio Section)
+               14f1 1722  Bt879 Video Capture (Audio Section)
+       0880  Bt880 Audio Capture
+       2115  BtV 2115 Mediastream controller
+       2125  BtV 2125 Mediastream controller
+       2164  BtV 2164
+       2165  BtV 2165
+       8230  Bt8230 ATM Segment/Reassembly Ctrlr (SRC)
+       8472  Bt8472
+       8474  Bt8474
+109f  Trigem Computer Inc.
+10a0  Meidensha Corporation
+10a1  Juko Electronics Ind. Co. Ltd
+10a2  Quantum Corporation
+10a3  Everex Systems Inc
+10a4  Globe Manufacturing Sales
+10a5  Smart Link Ltd.
+       3052  SmartPCI562 56K Modem
+       5449  SmartPCI561 modem
+10a6  Informtech Industrial Ltd.
+10a7  Benchmarq Microelectronics
+10a8  Sierra Semiconductor
+       0000  STB Horizon 64
+10a9  Silicon Graphics, Inc.
+       0001  Crosstalk to PCI Bridge
+       0002  Linc I/O controller
+       0003  IOC3 I/O controller
+       0004  O2 MACE
+       0005  RAD Audio
+       0006  HPCEX
+       0007  RPCEX
+       0008  DiVO VIP
+       0009  AceNIC Gigabit Ethernet
+               10a9 8002  AceNIC Gigabit Ethernet
+       0010  AMP Video I/O
+       0011  GRIP
+       0012  SGH PSHAC GSN
+       0208  SSIM1 SAS Adapter
+       1001  Magic Carpet
+       1002  Lithium
+       1003  Dual JPEG 1
+       1004  Dual JPEG 2
+       1005  Dual JPEG 3
+       1006  Dual JPEG 4
+       1007  Dual JPEG 5
+       1008  Cesium
+       100a  IOC4 I/O controller
+       1504  SSIM1 Fibre Channel Adapter
+       2001  Fibre Channel
+       2002  ASDE
+       4001  TIO-CE PCI Express Bridge
+       4002  TIO-CE PCI Express Port
+       8001  O2 1394
+       8002  G-net NT
+       8010  Broadcom e-net [SGI IO9/IO10 BaseIO]
+       8018  Broadcom e-net [SGI A330 Server BaseIO]
+10aa  ACC Microelectronics
+       0000  ACCM 2188
+       2051  2051 CPU bridge
+       5842  2051 ISA bridge
+10ab  Digicom
+10ac  Honeywell IAC
+10ad  Symphony Labs
+       0001  W83769F
+       0003  SL82C103
+       0005  SL82C105
+       0103  SL82c103
+       0105  SL82c105
+       0565  W83C553F/W83C554F
+10ae  Cornerstone Technology
+10af  Micro Computer Systems Inc
+10b0  CardExpert Technology
+10b1  Cabletron Systems Inc
+10b2  Raytheon Company
+10b3  Databook Inc
+       3106  DB87144
+       b106  DB87144
+10b4  STB Systems Inc
+       1b1d  Velocity 128 3D
+               10b4 237e  Velocity 4400
+10b5  PLX Technology, Inc.
+       0001  i960 PCI bus interface
+       1024  Acromag, Inc. IndustryPack Carrier Card
+       1042  Brandywine / jxi2, Inc. - PMC-SyncClock32, IRIG A & B, Nasa 36
+       106a  Dual OX16C952 4 port serial adapter [Megawolf Romulus/4]
+       1076  VScom 800 8 port serial adaptor
+       1077  VScom 400 4 port serial adaptor
+       1078  VScom 210 2 port serial and 1 port parallel adaptor
+       1103  VScom 200 2 port serial adaptor
+       1146  VScom 010 1 port parallel adaptor
+       1147  VScom 020 2 port parallel adaptor
+       2540  IXXAT CAN-Interface PC-I 04/PCI
+       2724  Thales PCSM Security Card
+       6140  PCI6140 32-bit 33MHz PCI-to-PCI Bridge
+       6150  PCI6150 32-bit 33MHz PCI-to-PCI Bridge
+       6152  PCI6152 32-bit 66MHz PCI-to-PCI Bridge
+       6154  PCI6154 64-bit 66MHz PCI-to-PCI Bridge
+       6254  PCI6254 64-bit 66MHz PCI-to-PCI Bridge
+       6466  PCI6466 64-bit 66MHz PCI-to-PCI Bridge
+       6520  PCI6520 64-bit 133MHz PCI-X-to-PCI-X Bridge
+       6540  PCI6540 64-bit 133MHz PCI-X-to-PCI-X Bridge
+               1775 1100  CR11 Single Board Computer
+               4c53 10e0  PSL09 PrPMC
+       6541  PCI6540/6466 PCI-PCI bridge (non-transparent mode, primary side)
+               1775 1100  CR11 Single Board Computer
+               4c53 10e0  PSL09 PrPMC
+       6542  PCI6540/6466 PCI-PCI bridge (non-transparent mode, secondary side)
+               1775 1100  CR11 Single Board Computer
+               4c53 10e0  PSL09 PrPMC
+       8111  PEX 8111 PCI Express-to-PCI Bridge
+       8112  PEX8112 x1 Lane PCI Express-to-PCI Bridge
+       8114  PEX 8114 PCI Express-to-PCI/PCI-X Bridge
+       8311  PEX8311 x1 Lane PCI Express-to-Generic Local Bus Bridge
+       8505  PEX 8505 5-lane, 5-port PCI Express Switch
+       8508  PEX 8508 8-lane, 5-port PCI Express Switch
+       8509  PEX 8509 8-lane, 8-port PCI Express Switch
+       8512  PEX 8512 12-lane, 5-port PCI Express Switch
+       8516  PEX 8516  Versatile PCI Express Switch
+       8517  PEX 8517 16-lane, 5-port PCI Express Switch
+       8518  PEX 8518 16-lane, 5-port PCI Express Switch
+       8524  PEX 8524 24-lane, 6-port PCI Express Switch
+       8525  PEX 8525 24-lane, 5-port PCI Express Switch
+       8532  PEX 8532  Versatile PCI Express Switch
+       8533  PEX 8533 32-lane, 6-port PCI Express Switch
+       8547  PEX 8547 48-lane, 3-port PCI Express Switch
+       8548  PEX 8548 48-lane, 9-port PCI Express Switch
+       9030  PCI9030 32-bit 33MHz PCI <-> IOBus Bridge
+               10b5 2862  Alpermann+Velte PCL PCI LV (3V/5V): Timecode Reader Board
+               10b5 2906  Alpermann+Velte PCI TS (3V/5V): Time Synchronisation Board
+               10b5 2940  Alpermann+Velte PCL PCI D (3V/5V): Timecode Reader Board
+               10b5 2977  IXXAT iPC-I XC16/PCI CAN Board
+               10b5 2978  SH ARC-PCIu SOHARD ARCNET card
+               10b5 3025  Alpermann+Velte PCL PCI L (3V/5V): Timecode Reader Board
+               10b5 3068  Alpermann+Velte PCL PCI HD (3V/5V): Timecode Reader Board
+               12fe 0111  CPCI-ASIO4 (ESD 4-port Serial Interface Board)
+               1397 3136  4xS0-ISDN PCI Adapter
+               1397 3137  S2M-E1-ISDN PCI Adapter
+               1518 0200  Kontron ThinkIO-C
+               15ed 1002  MCCS 8-port Serial Hot Swap
+               15ed 1003  MCCS 16-port Serial Hot Swap
+       9036  9036
+       9050  PCI <-> IOBus Bridge
+               10b5 1067  IXXAT CAN i165
+               10b5 114e  Wasco WITIO PCI168extended
+               10b5 1169  Wasco OPTOIO32standard 32 digital in, 32 digital out
+               10b5 1172  IK220 (Heidenhain)
+               10b5 2036  SatPak GPS
+               10b5 2221  Alpermann+Velte PCL PCI LV: Timecode Reader Board
+               10b5 2273  SH ARC-PCI SOHARD ARCNET card
+               10b5 2431  Alpermann+Velte PCL PCI D: Timecode Reader Board
+               10b5 2905  Alpermann+Velte PCI TS: Time Synchronisation Board
+               10b5 3196  Goramo PLX200SYN sync serial card
+               10b5 9050  PCI-I04 PCI Passive PC/CAN Interface
+               1498 0362  TPMC866 8 Channel Serial Card
+               1522 0001  RockForce 4 Port V.90 Data/Fax/Voice Modem
+               1522 0002  RockForce 2 Port V.90 Data/Fax/Voice Modem
+               1522 0003  RockForce 6 Port V.90 Data/Fax/Voice Modem
+               1522 0004  RockForce 8 Port V.90 Data/Fax/Voice Modem
+               1522 0010  RockForce2000 4 Port V.90 Data/Fax/Voice Modem
+               1522 0020  RockForce2000 2 Port V.90 Data/Fax/Voice Modem
+               15ed 1000  Macrolink MCCS 8-port Serial
+               15ed 1001  Macrolink MCCS 16-port Serial
+               15ed 1002  Macrolink MCCS 8-port Serial Hot Swap
+               15ed 1003  Macrolink MCCS 16-port Serial Hot Swap
+               5654 2036  OpenSwitch 6 Telephony card
+               5654 3132  OpenSwitch 12 Telephony card
+               5654 5634  OpenLine4 Telephony Card
+               d531 c002  PCIntelliCAN 2xSJA1000 CAN bus
+               d84d 4006  EX-4006 1P
+               d84d 4008  EX-4008 1P EPP/ECP
+               d84d 4014  EX-4014 2P
+               d84d 4018  EX-4018 3P EPP/ECP
+               d84d 4025  EX-4025 1S(16C550) RS-232
+               d84d 4027  EX-4027 1S(16C650) RS-232
+               d84d 4028  EX-4028 1S(16C850) RS-232
+               d84d 4036  EX-4036 2S(16C650) RS-232
+               d84d 4037  EX-4037 2S(16C650) RS-232
+               d84d 4038  EX-4038 2S(16C850) RS-232
+               d84d 4052  EX-4052 1S(16C550) RS-422/485
+               d84d 4053  EX-4053 2S(16C550) RS-422/485
+               d84d 4055  EX-4055 4S(16C550) RS-232
+               d84d 4058  EX-4055 4S(16C650) RS-232
+               d84d 4065  EX-4065 8S(16C550) RS-232
+               d84d 4068  EX-4068 8S(16C650) RS-232
+               d84d 4078  EX-4078 2S(16C552) RS-232+1P
+       9052  PCI9052 PCI <-> IOBus Bridge
+       9054  PCI9054 32-bit 33MHz PCI <-> IOBus Bridge
+               10b5 2455  Wessex Techology PHIL-PCI
+               10b5 2696  Innes Corp AM Radcap card
+               10b5 2717  Innes Corp Auricon card
+               10b5 2844  Innes Corp TVS Encoder card
+               12c7 4001  Intel Dialogic DM/V960-4T1 PCI
+               12d9 0002  PCI Prosody Card rev 1.5
+               14b4 d100  Dektec DTA-100
+               14b4 d114  Dektec DTA-120
+               16df 0011  PIKA PrimeNet MM PCI
+               16df 0012  PIKA PrimeNet MM cPCI 8
+               16df 0013  PIKA PrimeNet MM cPCI 8 (without CAS Signaling)
+               16df 0014  PIKA PrimeNet MM cPCI 4
+               16df 0015  PIKA Daytona MM
+               16df 0016  PIKA InLine MM
+       9056  PCI9056 32-bit 66MHz PCI <-> IOBus Bridge
+               10b5 2979  CellinkBlade 11 - CPCI board VoATM AAL1
+               14b4 d140  Dektec DTA-140
+       9060  PCI9060 32-bit 33MHz PCI <-> IOBus Bridge
+       906d  9060SD
+               125c 0640  Aries 16000P
+       906e  9060ES
+       9080  PCI9080 32-bit; 33MHz PCI <-> IOBus Bridge
+               103c 10eb  (Agilent) E2777B 83K Series Optical Communication Interface
+               103c 10ec  (Agilent) E6978-66442 PCI CIC
+               10b5 1123  Sectra KK631 encryption board
+               10b5 9080  9080 [real subsystem ID not set]
+               129d 0002  Aculab PCI Prosidy card
+               12d9 0002  PCI Prosody Card
+               12df 4422  4422PCI ["Do-All" Telemetry Data Aquisition System]
+               1517 000b  ECSG-1R3ADC-PMC Clock synthesizer
+       9656  PCI9656 PCI <-> IOBus Bridge
+               1517 000f  ECDR-GC314-PMC Receiver
+               1885 0700  Tsunami FPGA PMC with Altera Stratix S40
+               1885 0701  Tsunami FPGA PMC with Altera Stratix S30
+       bb04  B&B 3PCIOSD1A Isolated PCI Serial
+       c001  CronyxOmega-PCI (8-port RS232)
+10b6  Madge Networks
+       0001  Smart 16/4 PCI Ringnode
+       0002  Smart 16/4 PCI Ringnode Mk2
+               10b6 0002  Smart 16/4 PCI Ringnode Mk2
+               10b6 0006  16/4 CardBus Adapter
+       0003  Smart 16/4 PCI Ringnode Mk3
+               0e11 b0fd  Compaq NC4621 PCI, 4/16, WOL
+               10b6 0003  Smart 16/4 PCI Ringnode Mk3
+               10b6 0007  Presto PCI Plus Adapter
+       0004  Smart 16/4 PCI Ringnode Mk1
+       0006  16/4 Cardbus Adapter
+               10b6 0006  16/4 CardBus Adapter
+       0007  Presto PCI Adapter
+               10b6 0007  Presto PCI
+       0009  Smart 100/16/4 PCI-HS Ringnode
+               10b6 0009  Smart 100/16/4 PCI-HS Ringnode
+       000a  Smart 100/16/4 PCI Ringnode
+               10b6 000a  Smart 100/16/4 PCI Ringnode
+       000b  16/4 CardBus Adapter Mk2
+               10b6 0008  16/4 CardBus Adapter Mk2
+               10b6 000b  16/4 Cardbus Adapter Mk2
+       000c  RapidFire 3140V2 16/4 TR Adapter
+               10b6 000c  RapidFire 3140V2 16/4 TR Adapter
+       1000  Collage 25/155 ATM Client Adapter
+       1001  Collage 155 ATM Server Adapter
+10b7  3Com Corporation
+       0001  3c985 1000BaseSX (SX/TX)
+       0013  AR5212 802.11abg NIC (3CRDAG675)
+               10b7 2031  3CRDAG675 11a/b/g Wireless PCI Adapter
+       0910  3C910-A01
+       1006  MINI PCI type 3B Data Fax Modem
+       1007  Mini PCI 56k Winmodem
+               10b7 615b  Mini PCI 56K Modem
+               10b7 615c  Mini PCI 56K Modem
+       1201  3c982-TXM 10/100baseTX Dual Port A [Hydra]
+       1202  3c982-TXM 10/100baseTX Dual Port B [Hydra]
+       1700  3c940 10/100/1000Base-T [Marvell]
+               1043 80eb  A7V600/P4P800/K8V motherboard
+               10b7 0010  3C940 Gigabit LOM Ethernet Adapter
+               10b7 0020  3C941 Gigabit LOM Ethernet Adapter
+               147b 1407  KV8-MAX3 motherboard
+       3390  3c339 TokenLink Velocity
+       3590  3c359 TokenLink Velocity XL
+               10b7 3590  TokenLink Velocity XL Adapter (3C359/359B)
+       4500  3c450 HomePNA [Tornado]
+       5055  3c555 Laptop Hurricane
+       5057  3c575 Megahertz 10/100 LAN CardBus [Boomerang]
+               10b7 5a57  3C575 Megahertz 10/100 LAN Cardbus PC Card
+       5157  3cCFE575BT Megahertz 10/100 LAN CardBus [Cyclone]
+               10b7 5b57  3C575 Megahertz 10/100 LAN Cardbus PC Card
+       5257  3cCFE575CT CardBus [Cyclone]
+               10b7 5c57  FE575C-3Com 10/100 LAN CardBus-Fast Ethernet
+       5900  3c590 10BaseT [Vortex]
+       5920  3c592 EISA 10mbps Demon/Vortex
+       5950  3c595 100BaseTX [Vortex]
+       5951  3c595 100BaseT4 [Vortex]
+       5952  3c595 100Base-MII [Vortex]
+       5970  3c597 EISA Fast Demon/Vortex
+       5b57  3c595 Megahertz 10/100 LAN CardBus [Boomerang]
+               10b7 5b57  3C575 Megahertz 10/100 LAN Cardbus PC Card
+       6000  3CRSHPW796 [OfficeConnect Wireless CardBus]
+       6001  3com 3CRWE154G72 [Office Connect Wireless LAN Adapter]
+       6055  3c556 Hurricane CardBus [Cyclone]
+       6056  3c556B CardBus [Tornado]
+               10b7 6556  10/100 Mini PCI Ethernet Adapter
+       6560  3cCFE656 CardBus [Cyclone]
+               10b7 656a  3CCFEM656 10/100 LAN+56K Modem CardBus
+       6561  3cCFEM656 10/100 LAN+56K Modem CardBus
+               10b7 656b  3CCFEM656 10/100 LAN+56K Modem CardBus
+       6562  3cCFEM656B 10/100 LAN+Winmodem CardBus [Cyclone]
+               10b7 656b  3CCFEM656B 10/100 LAN+56K Modem CardBus
+       6563  3cCFEM656B 10/100 LAN+56K Modem CardBus
+               10b7 656b  3CCFEM656 10/100 LAN+56K Modem CardBus
+       6564  3cXFEM656C 10/100 LAN+Winmodem CardBus [Tornado]
+       7646  3cSOHO100-TX Hurricane
+       7770  3CRWE777 PCI(PLX) Wireless Adaptor [Airconnect]
+       7940  3c803 FDDILink UTP Controller
+       7980  3c804 FDDILink SAS Controller
+       7990  3c805 FDDILink DAS Controller
+       80eb  3c940B 10/100/1000Base-T
+       8811  Token ring
+       9000  3c900 10BaseT [Boomerang]
+       9001  3c900 10Mbps Combo [Boomerang]
+       9004  3c900B-TPO Etherlink XL [Cyclone]
+               10b7 9004  3C900B-TPO Etherlink XL TPO 10Mb
+       9005  3c900B-Combo Etherlink XL [Cyclone]
+               10b7 9005  3C900B-Combo Etherlink XL Combo
+       9006  3c900B-TPC Etherlink XL [Cyclone]
+       900a  3c900B-FL 10base-FL [Cyclone]
+       9050  3c905 100BaseTX [Boomerang]
+       9051  3c905 100BaseT4 [Boomerang]
+       9054  3C905B-TX Fast Etherlink XL PCI
+               10b7 9054  3C905B-TX Fast Etherlink XL PCI
+       9055  3c905B 100BaseTX [Cyclone]
+               1028 0080  3C905B Fast Etherlink XL 10/100
+               1028 0081  3C905B Fast Etherlink XL 10/100
+               1028 0082  3C905B Fast Etherlink XL 10/100
+               1028 0083  3C905B Fast Etherlink XL 10/100
+               1028 0084  3C905B Fast Etherlink XL 10/100
+               1028 0085  3C905B Fast Etherlink XL 10/100
+               1028 0086  3C905B Fast Etherlink XL 10/100
+               1028 0087  3C905B Fast Etherlink XL 10/100
+               1028 0088  3C905B Fast Etherlink XL 10/100
+               1028 0089  3C905B Fast Etherlink XL 10/100
+               1028 0090  3C905B Fast Etherlink XL 10/100
+               1028 0091  3C905B Fast Etherlink XL 10/100
+               1028 0092  3C905B Fast Etherlink XL 10/100
+               1028 0093  3C905B Fast Etherlink XL 10/100
+               1028 0094  3C905B Fast Etherlink XL 10/100
+               1028 0095  3C905B Fast Etherlink XL 10/100
+               1028 0096  3C905B Fast Etherlink XL 10/100
+               1028 0097  3C905B Fast Etherlink XL 10/100
+               1028 0098  3C905B Fast Etherlink XL 10/100
+               1028 0099  3C905B Fast Etherlink XL 10/100
+               10b7 9055  3C905B Fast Etherlink XL 10/100
+       9056  3c905B-T4 Fast EtherLink XL [Cyclone]
+       9058  3c905B Deluxe Etherlink 10/100/BNC [Cyclone]
+       905a  3c905B-FX Fast Etherlink XL FX 100baseFx [Cyclone]
+       9200  3c905C-TX/TX-M [Tornado]
+               1028 0095  3C920 Integrated Fast Ethernet Controller
+               1028 0097  3C920 Integrated Fast Ethernet Controller
+               1028 00b4  OptiPlex GX110
+               1028 00d8  Precision 530
+               1028 00fe  Optiplex GX240
+               1028 012a  3C920 Integrated Fast Ethernet Controller [Latitude C640]
+               10b7 1000  3C905CX-TX/TX-M Fast Etherlink for PC Management NIC
+               10b7 7000  10/100 Mini PCI Ethernet Adapter
+               10f1 2466  Tiger MPX S2466 (3C920 Integrated Fast Ethernet Controller)
+               144d c005  X10 Laptop
+       9201  3C920B-EMB Integrated Fast Ethernet Controller [Tornado]
+               1043 80ab  A7N8X Deluxe onboard 3C920B-EMB Integrated Fast Ethernet Controller
+       9202  3Com 3C920B-EMB-WNM Integrated Fast Ethernet Controller
+       9210  3C920B-EMB-WNM Integrated Fast Ethernet Controller
+       9300  3CSOHO100B-TX 910-A01 [tulip]
+       9800  3c980-TX Fast Etherlink XL Server Adapter [Cyclone]
+               10b7 9800  3c980-TX Fast Etherlink XL Server Adapter
+       9805  3c980-C 10/100baseTX NIC [Python-T]
+               10b7 1201  EtherLink Server 10/100 Dual Port A
+               10b7 1202  EtherLink Server 10/100 Dual Port B
+               10b7 9805  3c980 10/100baseTX NIC [Python-T]
+               10f1 2462  Thunder K7 S2462
+       9900  3C990-TX [Typhoon]
+       9902  3CR990-TX-95 [Typhoon 56-bit]
+       9903  3CR990-TX-97 [Typhoon 168-bit]
+       9904  3C990B-TX-M/3C990BSVR [Typhoon2]
+               10b7 1000  3CR990B-TX-M [Typhoon2]
+               10b7 2000  3CR990BSVR [Typhoon2 Server]
+       9905  3CR990-FX-95/97/95 [Typhon Fiber]
+               10b7 1101  3CR990-FX-95 [Typhoon Fiber 56-bit]
+               10b7 1102  3CR990-FX-97 [Typhoon Fiber 168-bit]
+               10b7 2101  3CR990-FX-95 Server [Typhoon Fiber 56-bit]
+               10b7 2102  3CR990-FX-97 Server [Typhoon Fiber 168-bit]
+       9908  3CR990SVR95 [Typhoon Server 56-bit]
+       9909  3CR990SVR97 [Typhoon Server 168-bit]
+       990a  3C990SVR [Typhoon Server]
+       990b  3C990SVR [Typhoon Server]
+10b8  Standard Microsystems Corp [SMC]
+       0005  83c170 EPIC/100 Fast Ethernet Adapter
+               1055 e000  LANEPIC 10/100 [EVB171Q-PCI]
+               1055 e002  LANEPIC 10/100 [EVB171G-PCI]
+               10b8 a011  EtherPower II 10/100
+               10b8 a014  EtherPower II 10/100
+               10b8 a015  EtherPower II 10/100
+               10b8 a016  EtherPower II 10/100
+               10b8 a017  EtherPower II 10/100
+       0006  83c175 EPIC/100 Fast Ethernet Adapter
+               1055 e100  LANEPIC Cardbus Fast Ethernet Adapter
+               1055 e102  LANEPIC Cardbus Fast Ethernet Adapter
+               1055 e300  LANEPIC Cardbus Fast Ethernet Adapter
+               1055 e302  LANEPIC Cardbus Fast Ethernet Adapter
+               10b8 a012  LANEPIC Cardbus Fast Ethernet Adapter
+               13a2 8002  LANEPIC Cardbus Fast Ethernet Adapter
+               13a2 8006  LANEPIC Cardbus Fast Ethernet Adapter
+       1000  FDC 37c665
+       1001  FDC 37C922
+       2802  SMC2802W [EZ Connect g]
+       a011  83C170QF
+       b106  SMC34C90
+10b9  ALi Corporation
+       0101  CMI8338/C3DX PCI Audio Device
+       0111  C-Media CMI8738/C3DX Audio Device (OEM)
+               10b9 0111  C-Media CMI8738/C3DX Audio Device (OEM)
+       0780  Multi-IO Card
+       0782  Multi-IO Card
+       1435  M1435
+       1445  M1445
+       1449  M1449
+       1451  M1451
+       1461  M1461
+       1489  M1489
+       1511  M1511 [Aladdin]
+       1512  M1512 [Aladdin]
+       1513  M1513 [Aladdin]
+       1521  M1521 [Aladdin III]
+               10b9 1521  ALI M1521 Aladdin III CPU Bridge
+       1523  M1523
+               10b9 1523  ALI M1523 ISA Bridge
+       1531  M1531 [Aladdin IV]
+       1533  M1533/M1535/M1543 PCI to ISA Bridge [Aladdin IV/V/V+]
+               1014 053b  ThinkPad R40e
+               10b9 1533  ALi M1533 Aladdin IV/V ISA Bridge
+       1541  M1541
+               10b9 1541  ALI M1541 Aladdin V/V+ AGP System Controller
+       1543  M1543
+       1563  M1563 HyperTransport South Bridge
+               10b9 1563  ASRock 939Dual-SATA2 Motherboard
+               1849 1563  ASRock 939Dual-SATA2 Motherboard
+       1573  PCI to LPC Controller
+       1575  M1575 South Bridge
+       1621  M1621
+       1631  ALI M1631 PCI North Bridge Aladdin Pro III
+       1632  M1632M Northbridge+Trident
+       1641  ALI M1641 PCI North Bridge Aladdin Pro IV
+       1644  M1644/M1644T Northbridge+Trident
+       1646  M1646 Northbridge+Trident
+       1647  M1647 Northbridge [MAGiK 1 / MobileMAGiK 1]
+       1651  M1651/M1651T Northbridge [Aladdin-Pro 5/5M,Aladdin-Pro 5T/5TM]
+       1671  M1671 Super P4 Northbridge [AGP4X,PCI and SDR/DDR]
+       1672  M1672 Northbridge [CyberALADDiN-P4]
+       1681  M1681 P4 Northbridge [AGP8X,HyperTransport and SDR/DDR]
+       1687  M1687 K8 Northbridge [AGP8X and HyperTransport]
+       1689  M1689 K8 Northbridge [Super K8 Single Chip]
+       1695  M1695 K8 Northbridge [PCI Express and HyperTransport]
+       1697  M1697 HTT Host Bridge
+       3141  M3141
+       3143  M3143
+       3145  M3145
+       3147  M3147
+       3149  M3149
+       3151  M3151
+       3307  M3307
+       3309  M3309
+       3323  M3325 Video/Audio Decoder
+       5212  M4803
+       5215  MS4803
+       5217  M5217H
+       5219  M5219
+       5225  M5225
+       5228  M5228 ALi ATA/RAID Controller
+       5229  M5229 IDE
+               1014 050f  ThinkPad R30
+               1014 053d  ThinkPad R40e
+               103c 0024  Pavilion ze4400 builtin IDE
+               1043 8053  A7A266 Motherboard IDE
+               1849 5229  ASRock 939Dual-SATA2 Motherboard IDE (PATA)
+       5235  M5225
+       5237  USB 1.1 Controller
+               1014 0540  ThinkPad R40e
+               103c 0024  Pavilion ze4400 builtin USB
+               104d 810f  VAIO PCG-U1 USB/OHCI Revision 1.0
+               10b9 5237  ASRock 939Dual-SATA2 Motherboard
+               1849 5237  ASRock 939Dual-SATA2 Motherboard
+       5239  USB 2.0 Controller
+               10b9 5239  ASRock 939Dual-SATA2 Motherboard
+               1849 5239  ASRock 939Dual-SATA2 Motherboard
+       5243  M1541 PCI to AGP Controller
+       5246  AGP8X Controller
+       5247  PCI to AGP Controller
+       5249  M5249 HTT to PCI Bridge
+       524b  PCI Express Root Port
+       524c  PCI Express Root Port
+       524d  PCI Express Root Port
+       524e  PCI Express Root Port
+       5251  M5251 P1394 OHCI 1.0 Controller
+       5253  M5253 P1394 OHCI 1.1 Controller
+       5261  M5261 Ethernet Controller
+       5263  ULi 1689,1573 integrated ethernet.
+       5281  ALi M5281 Serial ATA / RAID Host Controller
+       5287  ULi 5287 SATA
+       5288  ULi M5288 SATA
+               1043 8056  A8R-MVP Mainboard
+       5289  ULi 5289 SATA
+       5450  Lucent Technologies Soft Modem AMR
+       5451  M5451 PCI AC-Link Controller Audio Device
+               1014 0506  ThinkPad R30
+               1014 053e  ThinkPad R40e
+               103c 0024  Pavilion ze4400 builtin Audio
+       5453  M5453 PCI AC-Link Controller Modem Device
+       5455  M5455 PCI AC-Link Controller Audio Device
+               10b9 5455  ASRock 939Dual-SATA2 Motherboard
+               1849 0850  ASRock 939Dual-SATA2 Motherboard
+       5457  M5457 AC'97 Modem Controller
+               1014 0535  ThinkPad R40e
+               103c 0024  Pavilion ze4400 builtin Modem Device
+       5459  SmartLink SmartPCI561 56K Modem
+       545a  SmartLink SmartPCI563 56K Modem
+       5461  High Definition Audio/AC'97 Host Controller
+       5471  M5471 Memory Stick Controller
+       5473  M5473 SD-MMC Controller
+       7101  M7101 Power Management Controller [PMU]
+               1014 0510  ThinkPad R30
+               1014 053c  ThinkPad R40e
+               103c 0024  Pavilion ze4400
+               1849 7101  ASRock 939Dual-SATA2 Motherboard
+10ba  Mitsubishi Electric Corp.
+       0301  AccelGraphics AccelECLIPSE
+       0304  AccelGALAXY A2100 [OEM Evans & Sutherland]
+       0308  Tornado 3000 [OEM Evans & Sutherland]
+               10dd 0024  Tornado 3000
+       1002  VG500 [VolumePro Volume Rendering Accelerator]
+10bb  Dapha Electronics Corporation
+10bc  Advanced Logic Research
+10bd  Surecom Technology
+       0e34  NE-34
+10be  Tseng Labs International Co.
+10bf  Most Inc
+10c0  Boca Research Inc.
+10c1  ICM Co., Ltd.
+10c2  Auspex Systems Inc.
+10c3  Samsung Semiconductors, Inc.
+       1100  Smartether100 SC1100 LAN Adapter (i82557B)
+10c4  Award Software International Inc.
+10c5  Xerox Corporation
+10c6  Rambus Inc.
+10c7  Media Vision
+10c8  Neomagic Corporation
+       0001  NM2070 [MagicGraph 128]
+       0002  NM2090 [MagicGraph 128V]
+       0003  NM2093 [MagicGraph 128ZV]
+       0004  NM2160 [MagicGraph 128XD]
+               1014 00ba  MagicGraph 128XD
+               1025 1007  MagicGraph 128XD
+               1028 0074  MagicGraph 128XD
+               1028 0075  MagicGraph 128XD
+               1028 007d  MagicGraph 128XD
+               1028 007e  MagicGraph 128XD
+               1033 802f  MagicGraph 128XD
+               104d 801b  MagicGraph 128XD
+               104d 802f  MagicGraph 128XD
+               104d 830b  MagicGraph 128XD
+               10ba 0e00  MagicGraph 128XD
+               10c8 0004  MagicGraph 128XD
+               10cf 1029  MagicGraph 128XD
+               10f7 8308  MagicGraph 128XD
+               10f7 8309  MagicGraph 128XD
+               10f7 830b  MagicGraph 128XD
+               10f7 830d  MagicGraph 128XD
+               10f7 8312  MagicGraph 128XD
+       0005  NM2200 [MagicGraph 256AV]
+               1014 00dd  ThinkPad 570
+               1028 0088  Latitude CPi A
+       0006  NM2360 [MagicMedia 256ZX]
+       0016  NM2380 [MagicMedia 256XL+]
+               10c8 0016  MagicMedia 256XL+
+       0025  NM2230 [MagicGraph 256AV+]
+       0083  NM2093 [MagicGraph 128ZV+]
+       8005  NM2200 [MagicMedia 256AV Audio]
+               0e11 b0d1  MagicMedia 256AV Audio Device on Discovery
+               0e11 b126  MagicMedia 256AV Audio Device on Durango
+               1014 00dd  ThinkPad 390/i1720/i1721
+               1025 1003  MagicMedia 256AV Audio Device on TravelMate 720
+               1028 0088  Latitude CPi A
+               1028 008f  MagicMedia 256AV Audio Device on Colorado Inspiron
+               103c 0007  MagicMedia 256AV Audio Device on Voyager II
+               103c 0008  MagicMedia 256AV Audio Device on Voyager III
+               103c 000d  MagicMedia 256AV Audio Device on Omnibook 900
+               10c8 8005  MagicMedia 256AV Audio Device on FireAnt
+               110a 8005  MagicMedia 256AV Audio Device
+               14c0 0004  MagicMedia 256AV Audio Device
+       8006  NM2360 [MagicMedia 256ZX Audio]
+       8016  NM2380 [MagicMedia 256XL+ Audio]
+10c9  Dataexpert Corporation
+10ca  Fujitsu Microelectr., Inc.
+10cb  Omron Corporation
+# nee Mentor ARC Inc
+10cc  Mai Logic Incorporated
+       0660  Articia S Host Bridge
+       0661  Articia S PCI Bridge
+10cd  Advanced System Products, Inc
+       1100  ASC1100
+       1200  ASC1200 [(abp940) Fast SCSI-II]
+       1300  ABP940-U / ABP960-U
+               10cd 1310  ASC1300 SCSI Adapter
+               1195 1320  Ultra-SCSI CardBus PC Card REX CB31
+       2300  ABP940-UW
+       2500  ABP940-U2W
+       2700  ABP3950-U3W
+10ce  Radius
+# nee Citicorp TTI
+10cf  Fujitsu Limited.
+       1414  On-board USB 1.1 companion controller
+       1415  On-board USB 2.0 EHCI controller
+       1422  E8410 nVidia graphics adapter
+       142d  HD audio (Realtek ALC262)
+       1430  82566MM Intel 1Gb copper LAN interface
+       2001  mb86605
+       200c  MB86613L IEEE1394 OHCI 1.0 Controller
+       2019  MB86295S [CORAL P]
+       201e  MB86296S [CORAL PA]
+       202b  MB86297A [Carmine Graphics Controller]
+10d1  FuturePlus Systems Corp.
+10d2  Molex Incorporated
+10d3  Jabil Circuit Inc
+10d4  Hualon Microelectronics
+10d5  Autologic Inc.
+10d6  Cetia
+10d7  BCM Advanced Research
+10d8  Advanced Peripherals Labs
+10d9  Macronix, Inc. [MXIC]
+       0431  MX98715
+       0512  MX98713
+       0531  MX987x5
+               1186 1200  DFE-540TX ProFAST 10/100 Adapter
+       8625  MX86250
+       8626  Macronix MX86251 + 3Dfx Voodoo Rush
+       8888  MX86200
+10da  Compaq IPG-Austin
+       0508  TC4048 Token Ring 4/16
+       3390  Tl3c3x9
+10db  Rohm LSI Systems, Inc.
+10dc  CERN/ECP/EDU
+       0001  STAR/RD24 SCI-PCI (PMC)
+       0002  TAR/RD24 SCI-PCI (PMC)
+       0021  HIPPI destination
+       0022  HIPPI source
+       10dc  ATT2C15-3 FPGA
+10dd  Evans & Sutherland
+       0100  Lightning 1200
+               10dd 0023  Lightning 1200 15+16M
+10de  nVidia Corporation
+       0008  NV1 [EDGE 3D]
+       0009  NV1 [EDGE 3D]
+       0010  NV2 [Mutara V08]
+       0020  NV4 [RIVA TNT]
+               1043 0200  V3400 TNT
+               1048 0c18  Erazor II SGRAM
+               1048 0c19  Erazor II
+               1048 0c1b  Erazor II
+               1048 0c1c  Erazor II
+               1092 0550  Viper V550
+               1092 0552  Viper V550
+               1092 4804  Viper V550
+               1092 4808  Viper V550
+               1092 4810  Viper V550
+               1092 4812  Viper V550
+               1092 4815  Viper V550
+               1092 4820  Viper V550 with TV out
+               1092 4822  Viper V550
+               1092 4904  Viper V550
+               1092 4914  Viper V550
+               1092 8225  Viper V550
+               10b4 273d  Velocity 4400
+               10b4 273e  Velocity 4400
+               10b4 2740  Velocity 4400
+               10de 0020  Riva TNT
+               1102 1015  Graphics Blaster CT6710
+               1102 1016  Graphics Blaster RIVA TNT
+       0028  NV5 [RIVA TNT2/TNT2 Pro]
+               1043 0200  AGP-V3800 SGRAM
+               1043 0201  AGP-V3800 SDRAM
+               1043 0205  PCI-V3800
+               1043 4000  AGP-V3800PRO
+               1048 0c21  Synergy II
+               1048 0c28  Erazor III
+               1048 0c29  Erazor III
+               1048 0c2a  Erazor III
+               1048 0c2b  Erazor III
+               1048 0c31  Erazor III Pro
+               1048 0c32  Erazor III Pro
+               1048 0c33  Erazor III Pro
+               1048 0c34  Erazor III Pro
+               107d 2134  WinFast 3D S320 II + TV-Out
+               1092 4804  Viper V770
+               1092 4a00  Viper V770
+               1092 4a02  Viper V770 Ultra
+               1092 5a00  RIVA TNT2/TNT2 Pro
+               1092 6a02  Viper V770 Ultra
+               1092 7a02  Viper V770 Ultra
+               10de 0005  RIVA TNT2 Pro
+               10de 000f  Compaq NVIDIA TNT2 Pro
+               1102 1020  3D Blaster RIVA TNT2
+               1102 1026  3D Blaster RIVA TNT2 Digital
+               14af 5810  Maxi Gamer Xentor
+       0029  NV5 [RIVA TNT2 Ultra]
+               1043 0200  AGP-V3800 Deluxe
+               1043 0201  AGP-V3800 Ultra SDRAM
+               1043 0205  PCI-V3800 Ultra
+               1048 0c2e  Erazor III Ultra
+               1048 0c2f  Erazor III Ultra
+               1048 0c30  Erazor III Ultra
+               1102 1021  3D Blaster RIVA TNT2 Ultra
+               1102 1029  3D Blaster RIVA TNT2 Ultra
+               1102 102f  3D Blaster RIVA TNT2 Ultra
+               14af 5820  Maxi Gamer Xentor 32
+       002a  NV5 [Riva TNT2]
+       002b  NV5 [Riva TNT2]
+       002c  NV6 [Vanta/Vanta LT]
+               1043 0200  AGP-V3800 Combat SDRAM
+               1043 0201  AGP-V3800 Combat
+               1048 0c20  TNT2 Vanta
+               1048 0c21  TNT2 Vanta
+               1092 6820  Viper V730
+               1102 1031  CT6938 VANTA 8MB
+               1102 1034  CT6894 VANTA 16MB
+               14af 5008  Maxi Gamer Phoenix 2
+       002d  NV5M64 [RIVA TNT2 Model 64/Model 64 Pro]
+               1043 0200  AGP-V3800M
+               1043 0201  AGP-V3800M
+               1048 0c3a  Erazor III LT
+               1048 0c3b  Erazor III LT
+               10de 001e  M64 AGP4x
+               1102 1023  CT6892 RIVA TNT2 Value
+               1102 1024  CT6932 RIVA TNT2 Value 32Mb
+               1102 102c  CT6931 RIVA TNT2 Value [Jumper]
+               1462 8808  MSI-8808
+               1554 1041  Pixelview RIVA TNT2 M64
+               1569 002d  Palit Microsystems Daytona TNT2 M64
+       002e  NV6 [Vanta]
+       002f  NV6 [Vanta]
+       0034  MCP04 SMBus
+       0035  MCP04 IDE
+       0036  MCP04 Serial ATA Controller
+       0037  MCP04 Ethernet Controller
+       0038  MCP04 Ethernet Controller
+       003a  MCP04 AC'97 Audio Controller
+       003b  MCP04 USB Controller
+       003c  MCP04 USB Controller
+       003d  MCP04 PCI Bridge
+       003e  MCP04 Serial ATA Controller
+       0040  NV40 [GeForce 6800 Ultra]
+       0041  NV40 [GeForce 6800]
+               1043 817b  V9999 Gamer Edition
+       0042  NV40.2 [GeForce 6800 LE]
+       0043  NV40.3 [GeForce 6800 XE]
+       0044  NV40 [GeForce 6800 XT]
+       0045  NV40 [GeForce 6800 GT]
+       0046  NV40 [GeForce 6800 GT]
+       0047  NV40 [GeForce 6800 GS]
+               1682 2109  GeForce 6800 GS
+       0048  NV40 [GeForce 6800 XT]
+       0049  NV40GL
+       004d  NV40GL [Quadro FX 4000]
+       004e  NV40GL [Quadro FX 4000]
+       0050  CK804 ISA Bridge
+               1043 815a  K8N4-E or A8N-E Mainboard
+               10f1 2865  Tomcat K8E (S2865)
+               1458 0c11  GA-K8N Ultra-9 Mainboard
+               1462 7100  MSI K8N Diamond
+               147b 1c1a  KN8-Ultra Mainboard
+               1565 3402  NF4 AM2L Mainboard
+       0051  CK804 ISA Bridge
+               1028 0225  PWA-Pandora Motherboard [PowerEdge T105]
+       0052  CK804 SMBus
+               1028 0225  PWA-Pandora Motherboard [PowerEdge T105]
+               1043 815a  K8N4-E or A8N-E Mainboard
+               10f1 2865  Tomcat K8E (S2865)
+               1458 0c11  GA-K8N Ultra-9 Mainboard
+               1462 7100  MSI K8N Diamond
+               147b 1c1a  KN8-Ultra Mainboard
+               1565 3402  NF4 AM2L Mainboard
+       0053  CK804 IDE
+               1043 815a  K8N4-E or A8N-E Mainboard
+               10f1 2865  Tomcat K8E (S2865)
+               1458 5002  GA-K8N Ultra-9 Mainboard
+               1462 7100  MSI K8N Diamond
+               147b 1c1a  KN8-Ultra Mainboard
+               1565 3402  NF4 AM2L Mainboard
+       0054  CK804 Serial ATA Controller
+               1028 0225  PWA-Pandora Motherboard [PowerEdge T105]
+               1043 815a  A8N-E Mainboard
+               10f1 2865  Tomcat K8E (S2865)
+               1458 b003  GA-K8N Ultra-9 Mainboard
+               1462 7100  MSI K8N Diamond
+               147b 1c1a  KN8-Ultra Mainboard
+               1565 5401  NF4 AM2L Mainboard
+       0055  CK804 Serial ATA Controller
+               1028 0225  PWA-Pandora Motherboard [PowerEdge T105]
+               1043 815a  K8N4-E or A8N-E Mainboard
+               10f1 2865  Tomcat K8E (S2865)
+               1458 b003  GA-K8N Ultra-9 Mainboard
+               147b 1c1a  KN8-Ultra Mainboard
+               1565 5401  NF4 AM2L Mainboard
+       0056  CK804 Ethernet Controller
+       0057  CK804 Ethernet Controller
+               1043 8141  K8N4-E or A8N-E Mainboard
+               10de cb84  NF4 Lanparty
+               10f1 2865  Tomcat K8E (S2865)
+               1458 e000  GA-K8N Ultra-9 Mainboard
+               1462 7100  MSI K8N Diamond
+               147b 1c1a  KN8-Ultra Mainboard
+               1565 2501  NF4 AM2L Mainboard
+       0058  CK804 AC'97 Modem
+       0059  CK804 AC'97 Audio Controller
+               1043 812a  K8N4-E or A8N-E Mainboard
+               10f1 2865  Tomcat K8E (S2865)
+               147b 1c1a  KN8-Ultra Mainboard
+               1565 8211  NF4 AM2L Mainboard
+       005a  CK804 USB Controller
+               1028 0225  PWA-Pandora Motherboard [PowerEdge T105]
+               1043 815a  K8N4-E or A8N-E Mainboard
+               10f1 2865  Tomcat K8E (S2865)
+               1458 5004  GA-K8N Ultra-9 Mainboard
+               1462 7100  MSI K8N Diamond
+               147b 1c1a  KN8-Ultra Mainboard
+               1565 3402  NF4 AM2L Mainboard
+       005b  CK804 USB Controller
+               1028 0225  PWA-Pandora Motherboard [PowerEdge T105]
+               1043 815a  K8N4-E or A8N-E Mainboard
+               10f1 2865  Tomcat K8E (S2865)
+               1458 5004  GA-K8N Ultra-9 Mainboard
+               1462 7100  MSI K8N Diamond
+               147b 1c1a  KN8-Ultra Mainboard
+               1565 3402  NF4 AM2L Mainboard
+       005c  CK804 PCI Bridge
+       005d  CK804 PCIE Bridge
+       005e  CK804 Memory Controller
+               1028 0225  PWA-Pandora Motherboard [PowerEdge T105]
+               1043 815a  A8N-E Mainboard
+               10de 005e  ECS Elitegroup NFORCE3-A939 motherboard.
+               10f1 2865  Tomcat K8E (S2865)
+               10f1 2891  Thunder K8SRE Mainboard
+               1458 5000  GA-K8N Ultra-9 Mainboard
+               1462 7100  MSI K8N Diamond
+               147b 1c1a  KN8-Ultra Mainboard
+               1565 3402  NF4 AM2L Mainboard
+       005f  CK804 Memory Controller
+       0060  nForce2 ISA Bridge
+               1043 80ad  A7N8X Mainboard
+               147b 1c02  NF7-S/NF7 (nVidia-nForce2) 2.X
+               a0a0 03ba  UK79G-1394 motherboard
+       0064  nForce2 SMBus (MCP)
+               147b 1c02  NF7-S/NF7 (nVidia-nForce2) 2.X
+               a0a0 03bb  UK79G-1394 motherboard
+       0065  nForce2 IDE
+               10de 0c11  nForce 2 EIDE Controller
+               a0a0 03b2  UK79G-1394 motherboard
+       0066  nForce2 Ethernet Controller
+               1043 80a7  A7N8X Mainboard onboard nForce2 Ethernet
+               10de 0c11  nForce MCP-T Networking Adapter
+               a0a0 03b3  UK79G-1394 motherboard
+       0067  nForce2 USB Controller
+               1043 0c11  A7N8X Mainboard
+               a0a0 03b4  UK79G-1394 motherboard
+       0068  nForce2 USB Controller
+               1043 0c11  A7N8X Mainboard
+               a0a0 03b4  UK79G-1394 motherboard
+       006a  nForce2 AC97 Audio Controler (MCP)
+               1043 8095  nForce2 AC97 Audio Controler (MCP)
+               a0a0 0304  UK79G-1394 motherboard
+       006b  nForce Audio Processing Unit
+               10de 006b  nForce2 MCP Audio Processing Unit
+               a0a0 0304  UK79G-1394 motherboard
+       006c  nForce2 External PCI Bridge
+       006d  nForce2 PCI Bridge
+       006e  nForce2 FireWire (IEEE 1394) Controller
+               a0a0 0306  UK79G-1394 motherboard
+       0080  MCP2A ISA bridge
+               147b 1c09  NV7 Motherboard
+       0084  MCP2A SMBus
+               147b 1c09  NV7 Motherboard
+       0085  MCP2A IDE
+               147b 1c09  NV7 Motherboard
+       0086  MCP2A Ethernet Controller
+       0087  MCP2A USB Controller
+               147b 1c09  NV7 Motherboard
+       0088  MCP2A USB Controller
+               147b 1c09  NV7 Motherboard
+       008a  MCP2S AC'97 Audio Controller
+               147b 1c09  NV7 Motherboard
+       008b  MCP2A PCI Bridge
+       008c  MCP2A Ethernet Controller
+       008e  nForce2 Serial ATA Controller
+       0090  G70 [GeForce 7800 GTX]
+       0091  G70 [GeForce 7800 GTX]
+       0092  G70 [GeForce 7800 GT]
+       0093  G70 [GeForce 7800 GS]
+       0095  GeForce 7800 SLI
+       0098  G70 [GeForce Go 7800]
+       0099  G70 [GeForce Go 7800 GTX]
+       009d  G70GL [Quadro FX 4500]
+       00a0  NV5 [Aladdin TNT2]
+               14af 5810  Maxi Gamer Xentor
+       00c0  NV41 [GeForce 6800 GS]
+       00c1  NV41.1 [GeForce 6800]
+       00c2  NV41.2 [GeForce 6800 LE]
+       00c3  NV42 [GeForce 6800 XT]
+       00c8  NV41.8 [GeForce Go 6800]
+       00c9  NV41.9 [GeForce Go 6800 Ultra]
+       00cc  NV41 [Quadro FX Go1400]
+       00cd  NV41 [Quadro FX 3450/4000 SDI]
+               10de 029b  wx4300 Workstation
+       00ce  NV41GL [Quadro FX 1400]
+       00d0  nForce3 LPC Bridge
+       00d1  nForce3 Host Bridge
+       00d2  nForce3 AGP Bridge
+       00d3  CK804 Memory Controller
+       00d4  nForce3 SMBus
+       00d5  nForce3 IDE
+       00d6  nForce3 Ethernet
+       00d7  nForce3 USB 1.1
+       00d8  nForce3 USB 2.0
+       00d9  nForce3 Audio
+       00da  nForce3 Audio
+       00dd  nForce3 PCI Bridge
+       00df  CK8S Ethernet Controller
+               1043 80a7  K8N-E
+               105b 0c43  Winfast NF3250K8AA
+               147b 1c0b  NF8 Mainboard
+       00e0  nForce3 250Gb LPC Bridge
+               1043 813f  K8N-E
+               10de 0c11  Winfast NF3250K8AA
+               1462 7030  K8N Neo-FSR v2.0
+               147b 1c0b  NF8 Mainboard
+       00e1  nForce3 250Gb Host Bridge
+               1043 813f  K8N-E
+               1462 7030  K8N Neo-FSR v2.0
+               147b 1c0b  NF8 Mainboard
+       00e2  nForce3 250Gb AGP Host to PCI Bridge
+       00e3  nForce3 Serial ATA Controller
+               1043 813f  K8N-E
+               105b 0c43  Winfast NF3250K8AA
+               147b 1c0b  NF8 Mainboard
+       00e4  nForce 250Gb PCI System Management
+               1043 813f  K8N-E
+               105b 0c43  Winfast NF3250K8AA
+               1462 7030  K8N Neo-FSR v2.0
+               147b 1c0b  NF8 Mainboard
+       00e5  CK8S Parallel ATA Controller (v2.5)
+               1043 813f  K8N-E
+               105b 0c43  Winfast NF3250K8AA
+               1462 7030  K8N Neo-FSR v2.0
+               147b 1c0b  NF8 Mainboard
+       00e6  CK8S Ethernet Controller
+       00e7  CK8S USB Controller
+               1043 813f  K8N-E
+               105b 0c43  Winfast NF3250K8AA
+               1462 7030  K8N Neo-FSR v2.0
+               147b 1c0b  NF8 Mainboard
+       00e8  nForce3 EHCI USB 2.0 Controller
+               1043 813f  K8N-E
+               105b 0c43  Winfast NF3250K8AA
+               1462 7030  K8N Neo-FSR v2.0
+               147b 1c0b  NF8 Mainboard
+       00ea  nForce3 250Gb AC'97 Audio Controller
+               1043 819d  K8N-E
+               105b 0c43  Winfast NF3250K8AA
+               1462 b010  K8N Neo-FSR v2.0
+               147b 1c0b  NF8 Mainboard
+       00ed  nForce3 250Gb PCI-to-PCI Bridge
+       00ee  nForce3 Serial ATA Controller 2
+       00f0  NV40 [GeForce 6800 Ultra]
+       00f1  NV43 [GeForce 6600 GT]
+               1043 81a6  N6600GT TD 128M AGP
+               1043 81c6  N6600GT TD 128M AGP
+               1458 3150  GV-N66T128VP
+               1682 2119  GeForce 6600 GT AGP 128MB DDR3 DUAL DVI TV
+       00f2  NV43 [GeForce 6600]
+               1554 1194  PixelView PV-N43AT (256KD)
+               1682 211c  GeForce 6600 256MB DDR DUAL DVI TV
+       00f3  NV43 [GeForce 6200]
+       00f4  NV43 [GeForce 6600 LE]
+       00f5  G70 [GeForce 7800 GS]
+       00f6  NV43 [GeForce 6800 GS]
+               1682 217e  XFX GeForce 6800 XTreme 256MB DDR3 AGP
+       00f8  NV45GL [Quadro FX 3400/4400]
+       00f9  NV45 [GeForce 6800 GTO]
+               10de 00f9  NV40 [GeForce 6800 GT]
+               1682 2120  GEFORCE 6800 GT PCI-E
+       00fa  NV36 [GeForce PCX 5750]
+       00fb  NV35 [GeForce PCX 5900]
+       00fc  NV37GL [Quadro FX 330/GeForce PCX 5300]
+       00fd  NV37GL [Quadro PCI-E Series]
+       00fe  NV38GL [Quadro FX 1300]
+       00ff  NV18 [GeForce PCX 4300]
+       0100  NV10 [GeForce 256 SDR]
+               1043 0200  AGP-V6600 SGRAM
+               1043 0201  AGP-V6600 SDRAM
+               1043 4008  AGP-V6600 SGRAM
+               1043 4009  AGP-V6600 SDRAM
+               1048 0c41  Erazor X
+               1048 0c43  ERAZOR X PCI
+               1048 0c48  Synergy Force
+               1102 102d  CT6941 GeForce 256
+               14af 5022  3D Prophet SE
+       0101  NV10DDR [GeForce 256 DDR]
+               1043 0202  AGP-V6800 DDR
+               1043 400a  AGP-V6800 DDR SGRAM
+               1043 400b  AGP-V6800 DDR SDRAM
+               1048 0c42  Erazor X
+               107d 2822  WinFast GeForce 256
+               1102 102e  CT6971 GeForce 256 DDR
+               14af 5021  3D Prophet DDR-DVI
+       0103  NV10GL [Quadro]
+               1048 0c40  GLoria II-64
+               1048 0c44  GLoria II
+               1048 0c45  GLoria II
+               1048 0c4a  GLoria II-64 Pro
+               1048 0c4b  GLoria II-64 Pro DVII
+       0110  NV11 [GeForce2 MX/MX 400]
+               1043 4015  AGP-V7100 Pro
+               1043 4021  V7100 Deluxe Combo
+               1043 4031  V7100 Pro with TV output
+               1048 0c60  Gladiac MX
+               1048 0c61  Gladiac 511PCI
+               1048 0c63  Gladiac 511TV-OUT 32MB
+               1048 0c64  Gladiac 511TV-OUT 64MB
+               1048 0c65  Gladiac 511TWIN
+               1048 0c66  Gladiac 311
+               10de 0091  Dell OEM GeForce 2 MX 400
+               10de 00a1  Apple OEM GeForce2 MX
+               1462 8817  MSI GeForce2 MX400 Pro32S [MS-8817]
+               14af 7102  3D Prophet II MX
+               14af 7103  3D Prophet II MX Dual-Display
+               1545 0023  Xtasy Rev. B2
+       0111  NV11DDR [GeForce2 MX200]
+       0112  NV11 [GeForce2 Go]
+       0113  NV11GL [Quadro2 MXR/EX/Go]
+       0140  NV43 [GeForce 6600 GT]
+       0141  NV43 [GeForce 6600]
+               1043 81b0  EN6600 Silencer
+               1458 3124  GV-NX66128DP Turbo Force Edition
+       0142  NV43 [GeForce 6600 LE]
+       0143  NV43 [GeForce 6600 VE]
+       0144  NV43 [GeForce Go 6600]
+       0145  NV43 [GeForce 6610 XL]
+       0146  NV43 [Geforce Go 6600TE/6200TE]
+       0147  GeForce 6700 XL
+       0148  NV43 [GeForce Go 6600]
+       0149  NV43 [GeForce Go 6600 GT]
+       014a  Quadro NVS 440
+       014c  Quadro FX 540 MXM
+       014d  NV43GL [Quadro FX 550]
+       014e  NV43GL [Quadro FX 540]
+       014f  NV43 [GeForce 6200]
+       0150  NV15 [GeForce2 GTS/Pro]
+               1043 4016  V7700 AGP Video Card
+               1048 0c50  Gladiac
+               1048 0c52  Gladiac-64
+               107d 2840  WinFast GeForce2 GTS with TV output
+               107d 2842  WinFast GeForce 2 Pro
+               10de 002e  GeForce2 GTS
+               1462 8831  Creative GeForce2 Pro
+       0151  NV15DDR [GeForce2 Ti]
+               1043 405f  V7700Ti
+               1462 5506  Creative 3D Blaster Geforce2 Titanium
+       0152  NV15BR [GeForce2 Ultra, Bladerunner]
+               1048 0c56  GLADIAC Ultra
+       0153  NV15GL [Quadro2 Pro]
+       0160  GeForce 6500
+       0161  NV44 [GeForce 6200 TurboCache(TM)]
+       0162  NV44 [GeForce 6200SE TurboCache (TM)]
+       0163  NV44 [GeForce 6200 LE]
+       0164  NV44 [GeForce Go 6200]
+       0165  NV44 [Quadro NVS 285]
+       0166  NV43 [GeForce Go 6400]
+       0167  NV43 [GeForce Go 6200/6400]
+       0168  NV43 [GeForce Go 6200/6400]
+       0169  GeForce 6250
+       016a  GeForce 7100 GS
+       0170  NV17 [GeForce4 MX 460]
+       0171  NV17 [GeForce4 MX 440]
+               10b0 0002  Gainward Pro/600 TV
+               10de 0008  Apple OEM GeForce4 MX 440
+               1462 8661  G4MX440-VTP
+               1462 8730  MX440SES-T (MS-8873)
+               1462 8852  GeForce4 MX440 PCI
+               147b 8f00  Abit Siluro GeForce4MX440
+       0172  NV17 [GeForce4 MX 420]
+       0173  NV17 [GeForce4 MX 440-SE]
+       0174  NV17 [GeForce4 440 Go]
+       0175  NV17 [GeForce4 420 Go]
+       0176  NV17 [GeForce4 420 Go 32M]
+               103c 08b0  tc1100 tablet
+               144d c005  X10 Laptop
+               4c53 1090  Cx9 / Vx9 mainboard
+       0177  NV17 [GeForce4 460 Go]
+       0178  NV17GL [Quadro4 550 XGL]
+       0179  NV17 [GeForce4 440 Go 64M]
+               10de 0179  GeForce4 MX (Mac)
+       017a  NV17GL [Quadro NVS]
+       017b  NV17GL [Quadro4 550 XGL]
+       017c  NV17GL [Quadro4 500 GoGL]
+       017d  NV17 [GeForce4 410 Go 16M]
+       0181  NV18 [GeForce4 MX 440 AGP 8x]
+               1043 8063  GeForce4 MX 440 AGP 8X
+               1043 806f  V9180 Magic
+               1462 8880  MS-StarForce GeForce4 MX 440 with AGP8X
+               1462 8900  MS-8890 GeForce 4 MX440 AGP8X
+               1462 9350  MSI Geforce4 MX T8X with AGP8X
+               147b 8f0d  Siluro GF4 MX-8X
+               1554 1111  PixelView MVGA-NVG18A
+       0182  NV18 [GeForce4 MX 440SE AGP 8x]
+       0183  NV18 [GeForce4 MX 420 AGP 8x]
+       0184  NV18 [GeForce4 MX]
+       0185  NV18 [GeForce4 MX 4000]
+       0186  NV18M [GeForce4 448 Go]
+       0187  NV18M [GeForce4 488 Go]
+       0188  NV18GL [Quadro4 580 XGL]
+       018a  NV18GL [Quadro NVS 280 SD]
+       018b  NV18GL [Quadro4 380 XGL]
+       018c  NV18GL [Quadro NVS 50 PCI]
+       018d  NV18M [GeForce4 448 Go]
+       0191  G80 [GeForce 8800 GTX]
+       0193  G80 [GeForce 8800 GTS]
+       0194  GeForce 8800 Ultra
+       0197  Tesla S870 (Compute Server Component)
+       019d  G80 [Quadro FX 5600]
+       019e  G80 [Quadro FX 4600]
+       01a0  NVCrush11 [GeForce2 MX Integrated Graphics]
+       01a4  nForce CPU bridge
+       01ab  nForce 420 Memory Controller (DDR)
+       01ac  nForce 220/420 Memory Controller
+       01ad  nForce 220/420 Memory Controller
+       01b0  nForce Audio Processing Unit
+       01b1  nForce AC'97 Audio Controller
+       01b2  nForce ISA Bridge
+       01b4  nForce PCI System Management
+       01b7  nForce AGP to PCI Bridge
+       01b8  nForce PCI-to-PCI bridge
+       01bc  nForce IDE
+       01c1  nForce AC'97 Modem Controller
+       01c2  nForce USB Controller
+       01c3  nForce Ethernet Controller
+       01d0  GeForce 7350 LE
+       01d1  G72 [GeForce 7300 LE]
+               1462 0345  7300LE PCI Express Graphics Adapter
+       01d3  G72 [GeForce 7300 SE]
+       01d6  GeForce Go 7200
+       01d7  G72M [Quadro NVS 110M/GeForce Go 7300]
+       01d8  G72M [GeForce Go 7400]
+               1028 01d7  XPS M1210
+       01da  G72M [Quadro NVS 110M]
+       01db  Quadro NVS 120M
+       01dc  G72GL [Quadro FX 350M]
+       01dd  G72 [GeForce 7500 LE]
+       01de  G72GL [Quadro FX 350]
+               10de 01dc  Quadro  FX Go350M
+       01df  G71 [GeForce 7300 GS]
+       01e0  nForce2 IGP2
+               147b 1c09  NV7 Motherboard
+       01e8  nForce2 AGP
+       01ea  nForce2 Memory Controller 0
+               a0a0 03b9  UK79G-1394 motherboard
+       01eb  nForce2 Memory Controller 1
+               a0a0 03b9  UK79G-1394 motherboard
+       01ec  nForce2 Memory Controller 2
+               a0a0 03b9  UK79G-1394 motherboard
+       01ed  nForce2 Memory Controller 3
+               a0a0 03b9  UK79G-1394 motherboard
+       01ee  nForce2 Memory Controller 4
+               10de 01ee  MSI Delta-L nForce2 memory controller
+               a0a0 03b9  UK79G-1394 motherboard
+       01ef  nForce2 Memory Controller 5
+               a0a0 03b9  UK79G-1394 motherboard
+       01f0  NV18 [GeForce4 MX - nForce GPU]
+               a0a0 03b5  UK79G-1394 motherboard
+       0200  NV20 [GeForce3]
+               1043 402f  AGP-V8200 DDR
+               1048 0c70  GLADIAC 920
+       0201  NV20 [GeForce3 Ti 200]
+       0202  NV20 [GeForce3 Ti 500]
+               1043 405b  V8200 T5
+               1545 002f  Xtasy 6964
+       0203  NV20DCC [Quadro DCC]
+       0211  NV40 [GeForce 6800]
+       0212  NV40 [GeForce 6800 LE]
+       0215  NV40 [GeForce 6800 GT]
+       0218  NV40 [GeForce 6800 XT]
+       0221  NV44A [GeForce 6200]
+               3842 a341  256A8N341DX
+       0222  GeForce 6200 A-LE
+       0240  C51PV [GeForce 6150]
+               1043 81cd  A8N-VM CSM
+               1462 7207  K8NGM2 series
+       0241  C51 [GeForce 6150 LE]
+       0242  C51G [GeForce 6100]
+       0243  C51 PCI Express Bridge
+       0244  C51 [Geforce 6150 Go]
+               103c 30b5  Presario V3242AU
+               103c 30b7  Presario V6133CL
+               10de 0244  GeForce Go 6150
+       0245  C51 [Quadro NVS 210S/GeForce 6150LE]
+       0246  C51 PCI Express Bridge
+       0247  MCP51 PCI-X GeForce Go 6100
+               1043 1382  MCP51 PCI-X GeForce Go 6100
+       0248  C51 PCI Express Bridge
+       0249  C51 PCI Express Bridge
+       024a  C51 PCI Express Bridge
+       024b  C51 PCI Express Bridge
+       024c  C51 PCI Express Bridge
+       024d  C51 PCI Express Bridge
+       024e  C51 PCI Express Bridge
+       024f  C51 PCI Express Bridge
+       0250  NV25 [GeForce4 Ti 4600]
+       0251  NV25 [GeForce4 Ti 4400]
+               1043 8023  v8440 GeForce 4 Ti4400
+               10de 0251  PNY GeForce4 Ti 4400
+               1462 8710  PNY GeForce4 Ti 4400
+       0252  NV25 [GeForce4 Ti]
+       0253  NV25 [GeForce4 Ti 4200]
+               107d 2896  WinFast A250 LE TD (Dual VGA/TV-out/DVI)
+               147b 8f09  Siluro (Dual VGA/TV-out/DVI)
+       0258  NV25GL [Quadro4 900 XGL]
+       0259  NV25GL [Quadro4 750 XGL]
+       025b  NV25GL [Quadro4 700 XGL]
+       0260  MCP51 LPC Bridge
+               103c 30b7  Presario V6133CL
+               1043 81bc  A8N-VM CSM Mainboard
+               1458 5001  GA-M55plus-S3G
+               1462 7207  K8NGM2 series
+       0261  MCP51 LPC Bridge
+       0262  MCP51 LPC Bridge
+       0263  MCP51 LPC Bridge
+       0264  MCP51 SMBus
+               103c 30b7  Presario V6133CL
+               1043 81bc  A8N-VM CSM Mainboard
+               1462 7207  K8NGM2 series
+       0265  MCP51 IDE
+               103c 30b7  Presario V6133CL
+               1043 81bc  A8N-VM CSM Mainboard
+               1462 7207  K8NGM2 series
+       0266  MCP51 Serial ATA Controller
+               103c 30b7  Presario V6133CL
+               1043 81bc  A8N-VM CSM Mainboard
+               1462 7207  K8NGM2 series
+       0267  MCP51 Serial ATA Controller
+               1043 81bc  A8N-VM CSM Mainboard
+               1462 7207  K8NGM2 series
+       0268  MCP51 Ethernet Controller
+       0269  MCP51 Ethernet Controller
+               103c 30b7  Presario V6133CL
+               1043 8141  A8N-VM CSM Mainboard
+               1462 7207  K8NGM2 series
+       026a  MCP51 MCI
+       026b  MCP51 AC97 Audio Controller
+       026c  MCP51 High Definition Audio
+               103c 30b5  Presario V3242AU
+               103c 30b7  Presario V6133CL
+               10de cb84  A8N-VM CSM Mainboard
+               1462 7207  K8NGM2 series
+       026d  MCP51 USB Controller
+               103c 30b7  Presario V6133CL
+               1043 81bc  A8N-VM CSM Mainboard
+               1462 7207  K8NGM2 series
+       026e  MCP51 USB Controller
+               103c 30b7  Presario V6133CL
+               1043 81bc  A8N-VM CSM Mainboard
+               1462 7207  K8NGM2 series
+       026f  MCP51 PCI Bridge
+               103c 30b7  Presario V6133CL
+       0270  MCP51 Host Bridge
+               103c 30b7  Presario V6133CL
+               1043 81bc  A8N-VM CSM Mainboard
+               1458 5001  GA-M55plus-S3G
+               1462 7207  K8NGM2 series
+       0271  MCP51 PMU
+               103c 30b5  Presario V3242AU
+               103c 30b7  Presario V6133CL
+       0272  MCP51 Memory Controller 0
+       027e  C51 Memory Controller 2
+               103c 30b7  Presario V6133CL
+               1043 81cd  A8N-VM CSM Mainboard
+               1458 5000  GA-M55plus-S3G
+               1462 7207  K8NGM2 series
+       027f  C51 Memory Controller 3
+               103c 30b7  Presario V6133CL
+               1043 81cd  A8N-VM CSM Mainboard
+               1458 5000  GA-M55plus-S3G
+               1462 7207  K8NGM2 series
+       0280  NV28 [GeForce4 Ti 4800]
+       0281  NV28 [GeForce4 Ti 4200 AGP 8x]
+       0282  NV28 [GeForce4 Ti 4800 SE]
+       0286  NV28 [GeForce4 Ti 4200 Go AGP 8x]
+       0288  NV28GL [Quadro4 980 XGL]
+       0289  NV28GL [Quadro4 780 XGL]
+       028c  NV28GLM [Quadro4 Go700]
+       0290  G71 [GeForce 7900 GTX]
+       0291  G71 [GeForce 7900 GT/GTO]
+               10de 042b  NX7900GTO-T2D512E [7900 GTO]
+       0292  G71 [GeForce 7900 GS]
+       0293  G71 [GeForce 7900 GX2]
+       0294  G71 [GeForce 7950 GX2]
+       0295  G71 [GeForce 7950 GT]
+               1043 8225  GeForce 7950 GT
+               107d 2a68  WinFast PX7950GT TDH
+               1462 0663  NX7950GT-VT2D512EZ-HD
+       0297  GeForce Go 7950 GTX
+       0298  GeForce Go 7900 GS
+       0299  GeForce Go 7900 GTX
+       029a  G71 [Quadro FX 2500M]
+       029b  G71 [Quadro FX 1500M]
+       029c  G71 [Quadro FX 5500]
+       029d  G71GL [Quadro FX 3500]
+       029e  G71 [Quadro FX 1500]
+       029f  G70 [Quadro FX 4500 X2]
+# Xbox Graphics Processing Unit (Integrated). GeForce3 derivative (NV20 < NV2A < NV25).
+       02a0  NV2A [XGPU]
+       02a5  MCPX CPU Bridge
+       02a6  MCPX Memory Controller
+       02e0  GeForce 7600 GT
+               02e0 2249  GF 7600GT 560M 256MB DDR3 DUAL DVI TV
+       02e1  G73 [GeForce 7600 GS]
+               1682 222b  PV-T73K-UAL3 (256MB)
+               1682 2247  GF 7600GS 512MB DDR2
+       02e2  GeForce 7300 GT
+       02e3  GeForce 7900 GS
+# An oddball 7950 that doesn't show up on any official NVIDIA lists but was seen in the wild
+       02e4  GeForce 7950 GT AGP
+               1682 2271  PV-T71A-YDF7 (512MB)
+       02f0  C51 Host Bridge
+               103c 30b7  Presario V6133CL
+               1043 81cd  A8N-VM CSM Mainboard
+               1462 7207  K8NGM2 series
+       02f1  C51 Host Bridge
+               1458 5000  GA-M55plus-S3G
+       02f2  C51 Host Bridge
+       02f3  C51 Host Bridge
+       02f4  C51 Host Bridge
+       02f5  C51 Host Bridge
+       02f6  C51 Host Bridge
+       02f7  C51 Host Bridge
+       02f8  C51 Memory Controller 5
+               103c 30b7  Presario V6133CL
+               1043 81cd  A8N-VM CSM Mainboard
+               1458 5000  GA-M55plus-S3G
+               1462 7207  K8NGM2 series
+       02f9  C51 Memory Controller 4
+               103c 30b7  Presario V6133CL
+               1043 81cd  A8N-VM CSM Mainboard
+               1458 5000  GA-M55plus-S3G
+               1462 7207  K8NGM2 series
+       02fa  C51 Memory Controller 0
+               103c 30b7  Presario V6133CL
+               1043 81cd  A8N-VM CSM Mainboard
+               1458 5000  GA-M55plus-S3G
+               1462 7207  K8NGM2 series
+       02fb  C51 PCI Express Bridge
+       02fc  C51 PCI Express Bridge
+               103c 30b7  Presario V6133CL
+       02fd  C51 PCI Express Bridge
+               103c 30b7  Presario V6133CL
+       02fe  C51 Memory Controller 1
+               103c 30b7  Presario V6133CL
+               1043 81cd  A8N-VM CSM Mainboard
+               1458 5000  GA-M55plus-S3G
+               1462 7207  K8NGM2 series
+       02ff  C51 Host Bridge
+               103c 30b7  Presario V6133CL
+               1043 81cd  A8N-VM CSM Mainboard
+               1458 5000  GA-M55plus-S3G
+               1462 7207  K8NGM2 series
+       0300  NV30 [GeForce FX]
+       0301  NV30 [GeForce FX 5800 Ultra]
+       0302  NV30 [GeForce FX 5800]
+       0308  NV30GL [Quadro FX 2000]
+       0309  NV30GL [Quadro FX 1000]
+       0311  NV31 [GeForce FX 5600 Ultra]
+       0312  NV31 [GeForce FX 5600]
+       0313  NV31
+       0314  NV31 [GeForce FX 5600XT]
+               1043 814a  V9560XT/TD
+       0316  NV31M
+       0317  NV31M Pro
+       031a  NV31M [GeForce FX Go5600]
+       031b  NV31M [GeForce FX Go5650]
+       031c  Quadro FX Go700
+       031d  NV31GLM
+       031e  NV31GLM Pro
+       031f  NV31GLM Pro
+       0320  NV34 [GeForce FX 5200]
+       0321  NV34 [GeForce FX 5200 Ultra]
+       0322  NV34 [GeForce FX 5200]
+               1043 02fb  V9250 Magic
+               1043 8180  V9520-X/TD/128M
+               1462 9110  MS-8911 (FX5200-TD128)
+               1462 9171  MS-8917 (FX5200-T128)
+               1462 9360  MS-8936 (FX5200-T128)
+       0323  NV34 [GeForce FX 5200LE]
+       0324  NV34M [GeForce FX Go5200 64M]
+               1028 0196  Inspiron 5160
+               103c 006a  Pavillon ZD7000 laptop
+               1071 8160  MIM2000
+       0325  NV34M [GeForce FX Go5250]
+       0326  NV34 [GeForce FX 5500]
+               1458 310d  GeForce FX 5500 128 MB
+               1682 2034  GeForce 5500 256 MB
+       0327  NV34 [GeForce FX 5100]
+       0328  NV34M [GeForce FX Go5200 32M/64M]
+       0329  NV34M [GeForce FX Go5200]
+               10de 0010  Powerbook G4
+       032a  NV34GL [Quadro NVS 280 PCI]
+       032b  NV34GL [Quadro FX 500/600 PCI]
+       032c  NV34GLM [GeForce FX Go 5300]
+       032d  NV34 [GeForce FX Go5100]
+       032f  NV34GL
+       0330  NV35 [GeForce FX 5900 Ultra]
+               1043 8137  V9950 Ultra / 256 MB
+       0331  NV35 [GeForce FX 5900]
+               1043 8145  V9950GE
+       0332  NV35 [GeForce FX 5900XT]
+       0333  NV38 [GeForce FX 5950 Ultra]
+       0334  NV35 [GeForce FX 5900ZT]
+               1462 9373  FX5900ZT-VTD128 (MS-8937)
+       0338  NV35GL [Quadro FX 3000]
+       033f  NV35GL [Quadro FX 700]
+       0341  NV36.1 [GeForce FX 5700 Ultra]
+               1462 9380  MS-8938 (FX5700U-TD128)
+       0342  NV36.2 [GeForce FX 5700]
+       0343  NV36 [GeForce FX 5700LE]
+       0344  NV36.4 [GeForce FX 5700VE]
+       0345  NV36.5
+       0347  NV36 [GeForce FX Go5700]
+               103c 006a  NX9500
+       0348  NV36 [GeForce FX Go5700]
+       0349  NV36M Pro
+       034b  NV36MAP
+       034c  NV36 [Quadro FX Go1000]
+       034e  NV36GL [Quadro FX 1100]
+       034f  NV36GL
+       0360  MCP55 LPC Bridge
+       0361  MCP55 LPC Bridge
+       0362  MCP55 LPC Bridge
+               147b 12c4  KN9-Ultra Mainboard
+       0363  MCP55 LPC Bridge
+       0364  MCP55 LPC Bridge
+       0365  MCP55 LPC Bridge
+       0366  MCP55 LPC Bridge
+       0367  MCP55 LPC Bridge
+       0368  MCP55 SMBus
+               147b 12c4  KN9-Ultra Mainboard
+       0369  MCP55 Memory Controller
+               147b 12c4  KN9-Ultra Mainboard
+       036a  MCP55 Memory Controller
+       036b  MCP55 SMU
+       036c  MCP55 USB Controller
+               147b 12c4  KN9-Ultra Mainboard
+       036d  MCP55 USB Controller
+               147b 12c4  KN9-Ultra Mainboard
+       036e  MCP55 IDE
+               147b 12c4  KN9-Ultra Mainboard
+       0370  MCP55 PCI bridge
+       0371  MCP55 High Definition Audio
+       0372  MCP55 Ethernet
+       0373  MCP55 Ethernet
+               147b 12c4  KN9-Ultra Mainboard
+       0374  MCP55 PCI Express bridge
+       0375  MCP55 PCI Express bridge
+       0376  MCP55 PCI Express bridge
+       0377  MCP55 PCI Express bridge
+       0378  MCP55 PCI Express bridge
+       037a  MCP55 Memory Controller
+       037c  G70 [GeForce 7800 GS] (rev a2)
+       037e  MCP55 SATA Controller
+       037f  MCP55 SATA Controller
+               147b 12c4  KN9-Ultra Mainboard
+       0390  GeForce 7650 GS
+       0391  G70 [GeForce 7600 GT]
+               1458 3427  GV-NX76T128D-RH
+       0392  G70 [GeForce 7600 GS]
+               1462 0622  NX7600GS-T2D256EH
+       0393  G70 [GeForce 7300 GT]
+               10de 0412  NX7300GT-TD256EH
+               1462 0412  NX7300GT-TD256EH
+       0394  G70 [GeForce 7600 LE]
+       0395  G70 [GeForce 7300 GT]
+       0397  GeForce Go 7700
+       0398  G70 [GeForce Go 7600]
+               1025 006c  Acer 9814 WKMI
+       0399  GeForce Go 7600 GT
+       039b  GeForce Go 7900 SE
+       039c  Quadro FX 550M
+               10de 039c  Quadro FX 560M
+       039e  G73GL [Quadro FX 560]
+       03a0  C55 Host Bridge
+       03a1  C55 Host Bridge
+       03a2  C55 Host Bridge
+       03a3  C55 Host Bridge
+       03a4  C55 Host Bridge
+       03a5  C55 Host Bridge
+       03a6  C55 Host Bridge
+       03a7  C55 Host Bridge
+       03a8  C55 Memory Controller
+       03a9  C55 Memory Controller
+       03aa  C55 Memory Controller
+       03ab  C55 Memory Controller
+       03ac  C55 Memory Controller
+       03ad  C55 Memory Controller
+       03ae  C55 Memory Controller
+       03af  C55 Memory Controller
+       03b0  C55 Memory Controller
+       03b1  C55 Memory Controller
+       03b2  C55 Memory Controller
+       03b3  C55 Memory Controller
+       03b4  C55 Memory Controller
+       03b5  C55 Memory Controller
+       03b6  C55 Memory Controller
+       03b7  C55 PCI Express bridge
+       03b8  C55 PCI Express bridge
+       03b9  C55 PCI Express bridge
+       03ba  C55 Memory Controller
+       03bb  C55 PCI Express bridge
+       03bc  C55 Memory Controller
+       03d0  GeForce 6150SE nForce 430
+       03d1  GeForce 6100 nForce 405
+       03d2  GeForce 6100 nForce 400
+       03d5  GeForce 6100 nForce 420
+       03e0  MCP61 LPC Bridge
+               1849 03e0  939NF6G-VSTA Board
+       03e1  MCP61 LPC Bridge
+       03e2  MCP61 LPC Bridge
+       03e3  MCP61 LPC Bridge
+       03e4  MCP61 High Definition Audio
+       03e5  MCP61 Ethernet
+       03e6  MCP61 Ethernet
+       03e7  MCP61 SATA Controller
+       03e8  MCP61 PCI Express bridge
+               1849 03e8  939NF6G-VSTA Board
+       03e9  MCP61 PCI Express bridge
+               1849 03e9  939NF6G-VSTA Board
+       03ea  MCP61 Memory Controller
+               1849 03ea  939NF6G-VSTA Board
+       03eb  MCP61 SMBus
+               1849 03eb  939NF6G-VSTA Board
+       03ec  MCP61 IDE
+               1849 03ec  939NF6G-VSTA Board
+       03ee  MCP61 Ethernet
+       03ef  MCP61 Ethernet
+               1849 03ef  939NF6G-VSTA Board
+       03f0  MCP61 High Definition Audio
+               1849 0888  939NF6G-VSTA Board
+       03f1  MCP61 USB Controller
+               1849 03f1  939NF6G-VSTA Board
+       03f2  MCP61 USB Controller
+               1849 03f2  939NF6G-VSTA Board
+       03f3  MCP61 PCI bridge
+               1849 03f3  939NF6G-VSTA Board
+       03f4  MCP61 SMU
+       03f5  MCP61 Memory Controller
+               1849 03eb  939NF6G-VSTA Board
+       03f6  MCP61 SATA Controller
+               1849 03f6  939NF6G-VSTA Board
+       03f7  MCP61 SATA Controller
+       0400  GeForce 8600 GTS
+       0401  GeForce 8600GT
+       0402  GeForce 8600 GT
+               1462 0910  NX8600GT-T2D256EZ
+       0403  GeForce 8600 GS
+       0404  GeForce 8400 GS
+       0405  GeForce 9500M GS
+       0407  GeForce 8600M GT
+       0408  GeForce 9650M GS
+       0409  GeForce 8700M GT
+       040a  Quadro FX 370
+       040b  Quadro NVS 320M
+       040c  Quadro FX 570M
+       040d  Quadro FX 1600M
+       040e  Quadro FX 570
+       040f  Quadro FX 1700
+       0420  GeForce 8400 SE
+       0421  GeForce 8500 GT
+       0422  GeForce 8400 GS
+       0423  GeForce 8300 GS
+       0424  GeForce 8400 GS
+       0425  GeForce 8600M GS
+               1025 0121  Aspire 5920G
+       0426  G86M [GeForce 8400M GT]
+       0427  GeForce 8400M GS
+       0428  GeForce 8400M G
+       0429  Quadro NVS 140M
+               17aa 20d8  ThinkPad T61
+       042a  Quadro NVS 130M
+       042b  Quadro NVS 135M
+       042d  Quadro FX 360M
+       042e  GeForce 9300M G
+       042f  Quadro NVS 290
+       0440  MCP65 LPC Bridge
+       0441  MCP65 LPC Bridge
+       0442  MCP65 LPC Bridge
+       0443  MCP65 LPC Bridge
+       0444  MCP65 Memory Controller
+       0445  MCP65 Memory Controller
+       0446  MCP65 SMBus
+       0447  MCP65 SMU
+       0448  MCP65 IDE
+       0449  MCP65 PCI bridge
+       044a  MCP65 High Definition Audio
+       044b  MCP65 High Definition Audio
+       044c  MCP65 AHCI Controller
+       044d  MCP65 AHCI Controller
+       044e  MCP65 AHCI Controller
+       044f  MCP65 AHCI Controller
+       0450  MCP65 Ethernet
+       0451  MCP65 Ethernet
+       0452  MCP65 Ethernet
+       0453  MCP65 Ethernet
+       0454  MCP65 USB Controller
+       0455  MCP65 USB Controller
+       0456  MCP65 USB Controller
+       0457  MCP65 USB Controller
+       0458  MCP65 PCI Express bridge
+       0459  MCP65 PCI Express bridge
+       045a  MCP65 PCI Express bridge
+       045c  MCP65 SATA Controller
+       045d  MCP65 SATA Controller
+       045e  MCP65 SATA Controller
+       045f  MCP65 SATA Controller
+       0531  GeForce 7150M
+       0533  GeForce 7000M (rev a2)
+       053a  GeForce 7050 PV / nForce 630a
+       053b  GeForce 7050 PV / nForce 630a
+       053e  GeForce 7025
+       0541  MCP67 Memory Controller
+       0542  MCP67 SMBus
+       0543  MCP67 Co-processor
+       0547  MCP67 Memory Controller
+               1849 0547  ALiveNF7G-HDready
+       0548  MCP67 ISA Bridge
+       054c  MCP67 Ethernet
+               1849 054c  ALiveNF7G-HDready, MCP67 Gigabit Ethernet
+       054d  MCP67 Ethernet
+       054e  MCP67 Ethernet
+# forcedeth source code from Nvidi
+       054f  MCP67 Ethernet
+       0550  MCP67 AHCI Controller
+       0554  MCP67 AHCI Controller
+       0555  MCP67 SATA Controller
+       055c  MCP67 High Definition Audio
+       055d  MCP67 High Definition Audio
+       055e  MCP67 OHCI USB 1.1 Controller
+       055f  MCP67 EHCI USB 2.0 Controller
+       0560  MCP67 IDE Controller
+       0561  MCP67 PCI Bridge
+       0562  MCP67 PCI Express Bridge
+               1849 0562  ALiveNF7G-HDready
+       0563  MCP67 PCI Express Bridge
+       0568  MCP78S [GeForce 8200] Memory Controller
+       0569  MCP78S [GeForce 8200] PCI Express Bridge
+       056a  GeForce 7100/nForce 630i
+       056c  MCP73 IDE
+       056d  MCP73 PCI Express bridge
+       056e  MCP73 PCI Express bridge
+       056f  MCP73 PCI Express bridge
+       05be  Tesla S870
+       0600  GeForce 8800 GTS 512
+       0602  GeForce 8800 GT 512
+       0604  GeForce 9800 GX2
+       0606  GeForce 8800 GS
+       0609  GeForce 8800M GTS
+       060c  GeForce 8800M GTX
+       060d  GeForce 8800 GS
+       0610  GeForce 9600 GSO
+       0611  GeForce 8800 GT
+               107d 2ab0  Winfast PX8800 GT PCI-E
+       0612  GeForce 9800 GTX
+       061a  Quadro FX 3700
+       061c  Quadro FX 3600M
+       0622  G94 [GeForce 9600 GT]
+               1458 3481  GV-NX96T512HP
+       0623  GeForce 9600 GS
+       0647  GeForce 9600M GT
+       0648  GeForce 9600M GS
+       0649  GeForce 9600M GT
+       064b  GeForce 9500M G
+       06e2  GeForce 8400 GS
+       06e4  GeForce 8400 GS
+       06e5  GeForce 9300M GS
+       06e8  GeForce 9200M GS
+       06e9  GeForce 9300M GS
+       0751  MCP78S [GeForce 8200] Memory Controller
+       0752  MCP78S [GeForce 8200] SMBus
+       0753  MCP78S [GeForce 8200] Co-Processor
+       0754  MCP78S [GeForce 8200] Memory Controller
+       0759  MCP78S [GeForce 8200] IDE
+       075a  MCP78S [GeForce 8200] PCI Bridge
+       075b  MCP78S [GeForce 8200] PCI Express Bridge
+       075c  MCP78S [GeForce 8200] LPC Bridge
+       0760  MCP78S [GeForce 8200] Ethernet
+       0761  MCP77 Ethernet
+       0762  MCP77 Ethernet
+       0763  MCP77 Ethernet
+       0778  MCP78S [GeForce 8200] PCI Express Bridge
+       077b  MCP78S [GeForce 8200] OHCI USB 1.1 Controller
+       077c  MCP78S [GeForce 8200] EHCI USB 2.0 Controller
+       077d  MCP78S [GeForce 8200] OHCI USB 1.1 Controller
+       077e  MCP78S [GeForce 8200] EHCI USB 2.0 Controller
+       07c1  MCP73 Host Bridge
+       07c2  MCP73 Host Bridge
+       07c5  MCP73 Host Bridge
+       07c8  MCP73 Memory Controller
+       07cb  nForce 630i memory controller
+       07cd  nForce 630i memory controller
+       07ce  nForce 630i memory controller
+       07cf  nForce 630i memory controller
+       07d0  nForce 630i memory controller
+       07d1  nForce 630i memory controller
+       07d2  nForce 630i memory controller
+       07d3  nForce 630i memory controller
+       07d6  nForce 630i memory controller
+       07d7  MCP73 LPC Bridge
+       07d8  MCP73 SMBus
+       07d9  MCP73 Memory Controller
+       07da  MCP73 Co-processor
+       07dc  MCP73 Ethernet
+       07dd  MCP73 Ethernet
+       07de  MCP73 Ethernet
+       07df  MCP73 Ethernet
+       07e0  GeForce 7150 / nForce 630i
+       07e1  GeForce 7100/nForce 630i
+       07e2  GeForce 7050 / nForce 630i
+       07e3  GeForce 7050/nForce 610i
+       07e5  GeForce 7100 / nForce 620i
+       07f4  GeForce 7100/nForce 630i
+       07f8  MCP73 SATA RAID Controller
+       07fc  MCP73 High Definition Audio
+               10de 07fc  MCP73 High Definition Audio
+       07fe  GeForce 7100/nForce 630i
+       0844  GeForce 9100M G
+       0848  GeForce 8300
+       0849  GeForce 8200
+       084a  nForce 730a
+       084b  GeForce 8200
+       084f  GeForce 8100 / nForce 720a
+       0ab0  MCP79 Ethernet
+       0ab1  MCP79 Ethernet
+       0ab2  MCP79 Ethernet
+       0ab3  MCP79 Ethernet
+       0ad4  MCP78S [GeForce 8200] AHCI Controller
+       c615  G70 [GeForce 7600 GT]
+10df  Emulex Corporation
+       1ae5  LP6000 Fibre Channel Host Adapter
+       e100  Proteus-X: LightPulse IOV Fibre Channel Host Adapter
+       e180  Proteus-X: LightPulse IOV Fibre Channel Host Adapter
+       f011  Saturn: LightPulse Fibre Channel Host Adapter
+       f015  Saturn: LightPulse Fibre Channel Host Adapter
+       f085  LP850 Fibre Channel Host Adapter
+       f095  LP952 Fibre Channel Host Adapter
+       f098  LP982 Fibre Channel Host Adapter
+       f0a1  Thor LightPulse Fibre Channel Host Adapter
+       f0a5  Thor LightPulse Fibre Channel Host Adapter
+       f0b5  Viper LightPulse Fibre Channel Host Adapter
+       f0d1  Helios LightPulse Fibre Channel Host Adapter
+       f0d5  Helios LightPulse Fibre Channel Host Adapter
+       f0e1  Zephyr LightPulse Fibre Channel Host Adapter
+       f0e5  Zephyr LightPulse Fibre Channel Host Adapter
+       f0f5  Neptune LightPulse Fibre Channel Host Adapter
+       f100  Saturn-X: LightPulse Fibre Channel Host Adapter
+       f700  LP7000 Fibre Channel Host Adapter
+       f701  LP7000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2)
+       f800  LP8000 Fibre Channel Host Adapter
+       f801  LP8000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2)
+       f900  LP9000 Fibre Channel Host Adapter
+       f901  LP9000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2)
+       f980  LP9802 Fibre Channel Host Adapter
+       f981  LP9802 Fibre Channel Host Adapter Alternate ID
+       f982  LP9802 Fibre Channel Host Adapter Alternate ID
+       fa00  Thor-X LightPulse Fibre Channel Host Adapter
+       fb00  Viper LightPulse Fibre Channel Host Adapter
+       fc00  Thor-X LightPulse Fibre Channel Host Adapter
+               10df fc00  LP10000 LightPulse Fibre Channel Host Adapter
+       fc10  Helios-X LightPulse Fibre Channel Host Adapter
+       fc20  Zephyr-X LightPulse Fibre Channel Host Adapter
+       fc40  Saturn-X: LightPulse Fibre Channel Host Adapter
+       fc50  Proteus-X: LightPulse IOV Fibre Channel Host Adapter
+       fd00  Helios-X LightPulse Fibre Channel Host Adapter
+       fe00  Zephyr-X LightPulse Fibre Channel Host Adapter
+       fe05  Zephyr-X: LightPulse FCoE Adapter
+       ff00  Neptune LightPulse Fibre Channel Host Adapter
+10e0  Integrated Micro Solutions Inc.
+       5026  IMS5026/27/28
+       5027  IMS5027
+       5028  IMS5028
+       8849  IMS8849
+       8853  IMS8853
+       9128  IMS9128 [Twin turbo 128]
+10e1  Tekram Technology Co.,Ltd.
+       0391  TRM-S1040
+               10e1 0391  DC-315U SCSI-3 Host Adapter
+       690c  DC-690c
+       dc29  DC-290
+10e2  Aptix Corporation
+10e3  Tundra Semiconductor Corp.
+       0000  CA91C042 [Universe]
+       0108  Tsi108 Host Bridge for Single PowerPC
+       0148  Tsi148 [Tempe]
+               1775 1100  VR11 Single Board Computer
+       0860  CA91C860 [QSpan]
+       0862  CA91C862A [QSpan-II]
+       8260  CA91L8200B [Dual PCI PowerSpan II]
+       8261  CA91L8260B [Single PCI PowerSpan II]
+       a108  Tsi109 Host Bridge for Dual PowerPC
+10e4  Tandem Computers
+       8029  Realtek 8029 Network Card
+10e5  Micro Industries Corporation
+10e6  Gainbery Computer Products Inc.
+10e7  Vadem
+10e8  Applied Micro Circuits Corp.
+       1072  INES GPIB-PCI (AMCC5920 based)
+       2011  Q-Motion Video Capture/Edit board
+       4750  S5930 [Matchmaker]
+       5920  S5920
+       8043  LANai4.x [Myrinet LANai interface chip]
+       8062  S5933_PARASTATION
+       807d  S5933 [Matchmaker]
+       8088  Kongsberg Spacetec Format Synchronizer
+       8089  Kongsberg Spacetec Serial Output Board
+       809c  S5933_HEPC3
+       80b9  Harmonix Hi-Card P8 (4x active ISDN BRI)
+       80d7  PCI-9112
+       80d9  PCI-9118
+       80da  PCI-9812
+       80fc  APCI1500 Signal processing controller (16 dig. inputs + 16 dig. outputs)
+       811a  PCI-IEEE1355-DS-DE Interface
+       814c  Fastcom ESCC-PCI (Commtech, Inc.)
+       8170  S5933 [Matchmaker] (Chipset Development Tool)
+       81e6  Multimedia video controller
+       828d  APCI3001 Signal processing controller (up to 16 analog inputs)
+       8291  Fastcom 232/8-PCI (Commtech, Inc.)
+       82c4  Fastcom 422/4-PCI (Commtech, Inc.)
+       82c5  Fastcom 422/2-PCI (Commtech, Inc.)
+       82c6  Fastcom IG422/1-PCI (Commtech, Inc.)
+       82c7  Fastcom IG232/2-PCI (Commtech, Inc.)
+       82ca  Fastcom 232/4-PCI (Commtech, Inc.)
+       82db  AJA HDNTV HD SDI Framestore
+       82e2  Fastcom DIO24H-PCI (Commtech, Inc.)
+       8406  PCIcanx/PCIcan CAN interface [Kvaser AB]
+       8407  PCIcan II CAN interface (A1021, PCB-07, PCB-08) [Kvaser AB]
+       8851  S5933 on Innes Corp FM Radio Capture card
+10e9  Alps Electric Co., Ltd.
+10ea  Intergraphics Systems
+       1680  IGA-1680
+       1682  IGA-1682
+       1683  IGA-1683
+       2000  CyberPro 2000
+       2010  CyberPro 2000A
+       5000  CyberPro 5000
+       5050  CyberPro 5050
+       5202  CyberPro 5202
+# CyberPro5202 Audio Function
+       5252  CyberPro5252
+10eb  Artists Graphics
+       0101  3GA
+       8111  Twist3 Frame Grabber
+10ec  Realtek Semiconductor Co., Ltd.
+       0139  Zonet Zen3200
+       0260  Realtek 260 High Definition Audio
+       0261  Realtek 261 High Definition Audio
+       0262  Realtek 262 High Definition Audio
+       0280  Realtek 280 High Definition Audio
+       0660  Realtek 660 High Definition Audio
+       0662  Realtek 662 High Definition Audio
+       0861  Realtek 861 High Definition Audio
+       0862  Realtek 862 High Definition Audio
+       0880  Realtek 880 High Definition Audio
+       0883  Realtek 883 High Definition Audio
+               1025 1605  TravelMate 5600 series
+       0885  Realtek 885 High Definition Audio
+       0888  Realtek 888 High Definition Audio
+       8029  RTL-8029(AS)
+               10b8 2011  EZ-Card (SMC1208)
+               10ec 8029  RTL-8029(AS)
+               1113 1208  EN1208
+               1186 0300  DE-528
+               1259 2400  AT-2400
+       8129  RTL-8129
+               10ec 8129  RT8129 Fast Ethernet Adapter
+               11ec 8129  RT8129 Fast Ethernet Adapter
+       8136  RTL8101E/RTL8102E PCI Express Fast Ethernet controller
+       8138  RT8139 (B/C) Cardbus Fast Ethernet Adapter
+               10ec 8138  RT8139 (B/C) Fast Ethernet Adapter
+       8139  RTL-8139/8139C/8139C+
+               0357 000a  TTP-Monitoring Card V2.0
+               1025 005a  TravelMate 290
+               1025 8920  ALN-325
+               1025 8921  ALN-325
+               103c 006a  NX9500
+               103c 30d9  Presario C700
+               1043 1045  L8400B or L3C/S notebook
+               1043 8109  P5P800-MX Mainboard
+               1071 8160  MIM2000
+               10bd 0320  EP-320X-R
+               10ec 8139  RT8139
+               10f7 8338  Panasonic CF-Y5 laptop
+               1113 ec01  FNC-0107TX
+               1186 1300  DFE-538TX
+               1186 1320  SN5200
+               1186 8139  DRN-32TX
+               11f6 8139  FN22-3(A) LinxPRO Ethernet Adapter
+               1259 2500  AT-2500TX
+               1259 2503  AT-2500TX/ACPI
+               1395 2100  AMB2100
+               1429 d010  ND010/ND012
+               1432 9130  EN-9130TX
+               1436 8139  RT8139
+               144d c00c  P30/P35 notebook
+               1458 e000  GA-7VM400M/7VT600 Motherboard
+               1462 217c  Aspire L250
+               1462 788c  865PE Neo2-V Mainboard
+               146c 1439  FE-1439TX
+               1489 6001  GF100TXRII
+               1489 6002  GF100TXRA
+               149c 139a  LFE-8139ATX
+               149c 8139  LFE-8139TX
+               14cb 0200  LNR-100 Family 10/100 Base-TX Ethernet
+               1565 2300  P4TSV Onboard LAN (RTL8100B)
+               1695 9001  Onboard RTL8101L 10/100 MBit
+               1799 5000  F5D5000 PCI Card/Desktop Network PCI Card
+               187e 3303  FN312
+               1904 8139  RTL8139D Fast Ethernet Adapter
+               2646 0001  KNE120TX
+               8e2e 7000  KF-230TX
+               8e2e 7100  KF-230TX/2
+               a0a0 0007  ALN-325C
+       8167  RTL-8110SC/8169SC Gigabit Ethernet
+               1462 235c  P965 Neo MS-7235 mainboard
+               1462 236c  945P Neo3-F motherboard
+       8168  RTL8111/8168B PCI Express Gigabit Ethernet controller
+       8169  RTL-8169 Gigabit Ethernet
+               1025 0079  Aspire 5024WLMi
+               1259 c107  CG-LAPCIGT
+               1371 434e  ProG-2000L
+               1458 e000  GA-8I915ME-G Mainboard
+               1462 030c  K8N Neo-FSR v2.0 mainboard
+               1462 702c  K8T NEO 2 motherboard
+               1462 7094  K8T Neo2-F V2.0
+               1734 1091  D2030-A1
+               a0a0 0449  AK86-L motherboard
+       8180  RTL8180L 802.11b MAC
+       8185  RTL-8185 IEEE 802.11a/b/g Wireless LAN Controller
+       8197  SmartLAN56 56K Modem
+10ed  Ascii Corporation
+       7310  V7310
+10ee  Xilinx Corporation
+       0205  Wildcard TE205P
+       0210  Wildcard TE210P
+       0314  Wildcard TE405P/TE410P (1st Gen)
+       0405  Wildcard TE405P (2nd Gen)
+       0410  Wildcard TE410P (2nd Gen)
+       3fc0  RME Digi96
+       3fc1  RME Digi96/8
+       3fc2  RME Digi96/8 Pro
+       3fc3  RME Digi96/8 Pad
+       3fc4  RME Digi9652 (Hammerfall)
+       3fc5  RME Hammerfall DSP
+       3fc6  RME Hammerfall DSP MADI
+       8380  Ellips ProfiXpress Profibus Master
+       8381  Ellips Santos Frame Grabber
+       d154  Copley Controls CAN card (PCI-CAN-02)
+# SED is assigned Xilinx PCI device IDs ebf0 through ebff
+       ebf0  SED Systems Modulator/Demodulator
+       ebf1  SED Systems Audio Interface Card
+       ebf2  SED Systems Common PCI Interface
+10ef  Racore Computer Products, Inc.
+       8154  M815x Token Ring Adapter
+10f0  Peritek Corporation
+10f1  Tyan Computer
+       2865  Tyan Thunder K8E S2865
+10f2  Achme Computer, Inc.
+10f3  Alaris, Inc.
+10f4  S-MOS Systems, Inc.
+10f5  NKK Corporation
+       a001  NDR4000 [NR4600 Bridge]
+10f6  Creative Electronic Systems SA
+10f7  Matsushita Electric Industrial Co., Ltd.
+10f8  Altos India Ltd
+10f9  PC Direct
+10fa  Truevision
+       000c  TARGA 1000
+10fb  Thesys Gesellschaft fuer Mikroelektronik mbH
+       186f  TH 6255
+10fc  I-O Data Device, Inc.
+# What's in the cardbus end of a Sony ACR-A01 card, comes with newer Vaio CD-RW drives
+       0003  Cardbus IDE Controller
+       0005  Cardbus SCSI CBSC II
+10fd  Soyo Computer, Inc
+10fe  Fast Multimedia AG
+10ff  NCube
+1100  Jazz Multimedia
+1101  Initio Corporation
+       0002  INI-920 Ultra SCSI Adapter
+       1060  INI-A100U2W
+       1622  INI-1623 PCI SATA-II Controller
+       9100  INI-9100/9100W
+       9400  INI-940 Fast Wide SCSI Adapter
+       9401  INI-935 Fast Wide SCSI Adapter
+       9500  INI-950 SCSI Adapter
+       9502  INI-950P Ultra Wide SCSI Adapter
+1102  Creative Labs
+       0002  SB Live! EMU10k1
+               100a 1102  SB Live! 5.1 Digital OEM SB0220 EMU10K1-JFF
+               1102 0020  CT4850 SBLive! Value
+               1102 0021  CT4620 SBLive!
+               1102 002f  SBLive! mainboard implementation
+               1102 100a  SB Live! 5.1 Digital OEM [SB0220]
+               1102 4001  E-mu APS
+               1102 8022  CT4780 SBLive! Value
+               1102 8023  CT4790 SoundBlaster PCI512
+               1102 8024  CT4760 SBLive!
+               1102 8025  SBLive! Mainboard Implementation
+               1102 8026  CT4830 SBLive! Value
+               1102 8027  CT4832 SBLive! Value
+               1102 8028  CT4760 SBLive! OEM version
+               1102 8031  CT4831 SBLive! Value
+               1102 8040  CT4760 SBLive!
+               1102 8051  CT4850 SBLive! Value
+               1102 8061  SBLive! Player 5.1
+               1102 8064  SBLive! 5.1 Model SB0100
+               1102 8065  SBLive! 5.1 Digital Model SB0220
+               1102 8067  SBLive! 5.1 eMicro 28028
+       0004  SB Audigy
+               1102 0051  SB0090 Audigy Player
+               1102 0053  SB0090 Audigy Player/OEM
+               1102 0058  SB0090 Audigy Player/OEM
+               1102 1002  SB Audigy2 Platinum
+               1102 1007  SB0240 Audigy 2 Platinum 6.1
+               1102 1009  SB Audigy2 OEM HP
+               1102 2002  SB Audigy 2 ZS (SB0350)
+               1102 4001  E-MU 1010
+       0005  SB X-Fi
+               1102 0021  X-Fi Platinum
+               1102 002c  X-Fi XtremeGamer FATAL1TY PRO
+               1102 1003  X-Fi XtremeMusic
+       0006  [SB Live! Value] EMU10k1X
+       0007  SB Audigy LS
+               1102 0007  SBLive! 24bit
+               1102 1001  SB0310 Audigy LS
+               1102 1002  SB0312 Audigy LS
+               1102 1006  SB0410 SBLive! 24-bit
+               1102 1012  SB0790 X-Fi XA
+               1102 1013  Soundblaster X-Fi Xtreme Audio
+               1462 1009  K8N Diamond
+       0008  SB0400 Audigy2 Value
+               1102 0008  EMU0404 Digital Audio System
+       0009  [SB X-Fi Xtreme Audio] CA0110-IBG
+               1102 0010  [SB X-Fi Xtreme Audio] CA0110-IBG
+       4001  SB Audigy FireWire Port
+               1102 0010  SB Audigy FireWire Port
+       7002  SB Live! Game Port
+               1102 0020  Gameport Joystick
+       7003  SB Audigy Game Port
+               1102 0040  SB Audigy MIDI/Game Port
+               1102 0060  SB Audigy2 MIDI/Game Port
+       7004  [SB Live! Value] Input device controller
+       7005  SB Audigy LS Game Port
+               1102 1001  SB0310 Audigy LS MIDI/Game port
+               1102 1002  SB0312 Audigy LS MIDI/Game port
+       8064  SB0100 [SBLive! 5.1 OEM]
+       8938  Ectiva EV1938
+               1033 80e5  SlimTower-Jim (NEC)
+               1071 7150  Mitac 7150
+               110a 5938  Siemens Scenic Mobile 510PIII
+               13bd 100c  Ceres-C (Sharp, Intel BX)
+               13bd 100d  Sharp, Intel Banister
+               13bd 100e  TwinHead P09S/P09S3 (Sharp)
+               13bd f6f1  Marlin (Sharp)
+               14ff 0e70  P88TE (TWINHEAD INTERNATIONAL Corp)
+               14ff c401  Notebook 9100/9200/2000 (TWINHEAD INTERNATIONAL Corp)
+               156d b400  G400 - Geo (AlphaTop (Taiwan))
+               156d b550  G560  (AlphaTop (Taiwan))
+               156d b560  G560  (AlphaTop (Taiwan))
+               156d b700  G700/U700  (AlphaTop (Taiwan))
+               156d b795  G795  (AlphaTop (Taiwan))
+               156d b797  G797  (AlphaTop (Taiwan))
+# nee Triones Technologies, Inc.
+1103  HighPoint Technologies, Inc.
+       0003  HPT343/345/346/363
+       0004  HPT366/368/370/370A/372/372N
+               1103 0001  HPT370A
+               1103 0004  HPT366 UDMA66 (r1) / HPT368 UDMA66 (r2) / HPT370 UDMA100 (r3) / HPT370 UDMA100 RAID (r4)
+               1103 0005  HPT370 UDMA100
+               1103 0006  HPT302/302N
+       0005  HPT372A/372N
+       0006  HPT302/302N
+       0007  HPT371/371N
+       0008  HPT374
+       0009  HPT372N
+       1720  RocketRAID 1720 (2x SATA II RAID Controller)
+       1740  RocketRAID 1740
+       1742  RocketRAID 1742
+       2300  RocketRAID 230x 4 Port SATA-II Controller
+       2310  RocketRAID 2310 4 Port SATA-II Controller
+       2320  RocketRAID 2320 SATA-II Controller
+       2322  RocketRAID 2322 SATA-II Controller
+       2340  RocketRAID 2340 16 Port SATA-II Controller
+       2640  RocketRAID 2640 SAS/SATA Controller
+       3220  RocketRAID 3220
+       3320  RocketRAID 3320
+1104  RasterOps Corp.
+1105  Sigma Designs, Inc.
+       1105  REALmagic Xcard MPEG 1/2/3/4 DVD Decoder
+       8300  REALmagic Hollywood Plus DVD Decoder
+       8400  EM840x REALmagic DVD/MPEG-2 Audio/Video Decoder
+       8401  EM8401 REALmagic DVD/MPEG-2 A/V Decoder
+       8470  EM8470 REALmagic DVD/MPEG-4 A/V Decoder
+       8471  EM8471 REALmagic DVD/MPEG-4 A/V Decoder
+       8475  EM8475 REALmagic DVD/MPEG-4 A/V Decoder
+               1105 0001  REALmagic X-Card
+       8476  EM8476 REALmagic DVD/MPEG-4 A/V Decoder
+               127d 0000  CineView II
+       8485  EM8485 REALmagic DVD/MPEG-4 A/V Decoder
+       8486  EM8486 REALmagic DVD/MPEG-4 A/V Decoder
+       c622  EM8622L MPEG-4.10 (H.264) and SMPTE 421M (VC-1) A/V Decoder
+1106  VIA Technologies, Inc.
+       0102  Embedded VIA Ethernet Controller
+       0130  VT6305 1394.A Controller
+       0198  P4X600 Host Bridge
+       0204  K8M800 Host Bridge
+       0208  PT890 Host Bridge
+       0238  K8T890 Host Bridge
+       0258  PT880 Host Bridge
+       0259  CN333/CN400/PM880 Host Bridge
+       0269  KT880 Host Bridge
+       0282  K8T800Pro Host Bridge
+               1043 80a3  A8V Deluxe
+       0290  K8M890 Host Bridge
+       0293  PM896 Host Bridge
+       0296  P4M800 Host Bridge
+       0305  VT8363/8365 [KT133/KM133]
+               1019 0987  K7VZA Mainboard
+               1043 8033  A7V Mainboard
+               1043 803e  A7V-E Mainboard
+               1043 8042  A7V133/A7V133-C Mainboard
+               147b a401  KT7/KT7-RAID/KT7A/KT7A-RAID Mainboard
+       0308  PT880 Ultra/PT894 Host Bridge
+               1043 8199  P4V800D-X Mainboard
+       0314  CN700/VN800/P4M800CE/Pro Host Bridge
+       0324  CX700/VX700 Host Bridge
+       0327  P4M890 Host Bridge
+       0336  K8M890CE Host Bridge
+       0340  PT900 Host Bridge
+       0351  K8T890CF Host Bridge
+       0353  VX800 Host Bridge
+       0364  CN896/VN896/P4M900 Host Bridge
+               1043 81ce  P5VD2-VM mothervoard
+       0391  VT8371 [KX133]
+       0415  PATA IDE Host Controller
+       0501  VT8501 [Apollo MVP4]
+       0505  VT82C505
+# Shares chip with :0576. The VT82C576M has :1571 instead of :0561.
+       0561  VT82C576MV
+       0571  VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE
+               1019 0985  P6VXA Motherboard
+               1019 0a81  L7VTA v1.0 Motherboard (KT400-8235)
+               1043 8052  VT8233A Bus Master ATA100/66/33 IDE
+               1043 808c  A7V8X / A7V333 motherboard
+               1043 80a1  A7V8X-X motherboard rev. 1.01
+               1043 80ed  A7V600/K8V-X/A8V Deluxe motherboard
+               1106 0571  VT82C586/B/VT82C686/A/B/VT8233/A/C/VT8235 PIPC Bus Master IDE
+               1179 0001  Magnia Z310
+               1297 f641  FX41 motherboard
+               1458 5002  GA-7VAX Mainboard
+               1462 5901  KT6 Delta-FIS2R (MS-6590)
+               1462 7020  K8T NEO 2 motherboard
+               1462 7094  K8T Neo2-F V2.0
+               1462 7120  KT4AV motherboard
+               1462 7181  K8MM3-V mainboard
+               147b 1407  KV8-MAX3 motherboard
+               1849 0571  K7VT2/K7VT6 motherboard
+       0576  VT82C576 3V [Apollo Master]
+       0581  CX700/VX700 RAID Controller
+# Upgrade bios to get correct ID: 5324 instead of 0581
+               1106 0581  Wrong IDE ID
+       0585  VT82C585VP [Apollo VP1/VPX]
+       0586  VT82C586/A/B PCI-to-ISA [Apollo VP]
+               1106 0000  MVP3 ISA Bridge
+       0591  VT8237A SATA 2-Port Controller
+       0595  VT82C595 [Apollo VP2]
+       0596  VT82C596 ISA [Mobile South]
+               1106 0000  VT82C596/A/B PCI to ISA Bridge
+               1458 0596  VT82C596/A/B PCI to ISA Bridge
+       0597  VT82C597 [Apollo VP3]
+       0598  VT82C598 [Apollo MVP3]
+       0601  VT8601 [Apollo ProMedia]
+       0605  VT8605 [ProSavage PM133]
+               1043 802c  CUV4X mainboard
+       0680  VT82C680 [Apollo P6]
+       0686  VT82C686 [Apollo Super South]
+               1019 0985  P6VXA Motherboard
+               1043 802c  CUV4X mainboard
+               1043 8033  A7V Mainboard
+               1043 803e  A7V-E Mainboard
+               1043 8040  A7M266 Mainboard
+               1043 8042  A7V133/A7V133-C Mainboard
+               1106 0000  VT82C686/A PCI to ISA Bridge
+               1106 0686  VT82C686/A PCI to ISA Bridge
+               1179 0001  Magnia Z310
+               147b a702  KG7-Lite Mainboard
+       0691  VT82C693A/694x [Apollo PRO133x]
+               1019 0985  P6VXA Motherboard
+               1179 0001  Magnia Z310
+               1458 0691  VT82C691 Apollo Pro System Controller
+       0693  VT82C693 [Apollo Pro Plus]
+       0698  VT82C693A [Apollo Pro133 AGP]
+       0926  VT82C926 [Amazon]
+       1000  VT82C570MV
+       1106  VT82C570MV
+       1204  K8M800 Host Bridge
+       1208  PT890 Host Bridge
+       1238  K8T890 Host Bridge
+       1258  PT880 Host Bridge
+       1259  CN333/CN400/PM880 Host Bridge
+       1269  KT880 Host Bridge
+       1282  K8T800Pro Host Bridge
+       1290  K8M890 Host Bridge
+       1293  PM896 Host Bridge
+       1296  P4M800 Host Bridge
+       1308  PT894 Host Bridge
+       1314  CN700/VN800/P4M800CE/Pro Host Bridge
+       1324  CX700/VX700 Host Bridge
+       1327  P4M890 Host Bridge
+       1336  K8M890CE Host Bridge
+       1340  PT900 Host Bridge
+       1351  VT3351 Host Bridge
+       1353  VX800/VX820 Error Reporting
+       1364  CN896/VN896/P4M900 Host Bridge
+       1571  VT82C576M/VT82C586
+       1595  VT82C595/97 [Apollo VP2/97]
+       2106  VIA Rhine Family Fast Ethernet Adapter (VT6105)
+       2204  K8M800 Host Bridge
+       2208  PT890 Host Bridge
+       2238  K8T890 Host Bridge
+       2258  PT880 Host Bridge
+       2259  CN333/CN400/PM880 CPU Host Bridge
+       2269  KT880 Host Bridge
+       2282  K8T800Pro Host Bridge
+       2290  K8M890 Host Bridge
+       2293  PM896 Host Bridge
+       2296  P4M800 Host Bridge
+       2308  PT894 Host Bridge
+       2314  CN700/VN800/P4M800CE/Pro Host Bridge
+       2324  CX700/VX700 Host Bridge
+       2327  P4M890 Host Bridge
+       2336  K8M890CE Host Bridge
+       2340  PT900 Host Bridge
+       2351  VT3351 Host Bridge
+       2353  VX800/VX820 Host Bus Control
+       2364  CN896/VN896/P4M900 Host Bridge
+       287a  VT8251 PCI to PCI Bridge
+       287b  VT8251 Host Bridge
+       287c  VT8251 PCIE Root Port
+       287d  VT8251 PCIE Root Port
+       287e  VT8251 Ultra VLINK Controller
+       3022  CLE266
+       3038  VT82xxxxx UHCI USB 1.1 Controller
+               0925 1234  VA-502 Mainboard
+               1019 0985  P6VXA Motherboard
+               1019 0a81  L7VTA v1.0 Motherboard (KT400-8235)
+               1043 8080  A7V333 motherboard
+               1043 808c  VT6202 USB2.0 4 port controller
+               1043 80a1  A7V8X-X motherboard
+               1043 80ed  A7V600/K8V-X/A8V Deluxe motherboard
+               1179 0001  Magnia Z310
+               1458 5004  GA-7VAX Mainboard
+               1462 5901  KT6 Delta-FIS2R (MS-6590)
+               1462 7020  K8T NEO 2 motherboard
+               1462 7094  K8T Neo2-F V2.0
+               1462 7120  KT4AV motherboard
+               1462 7181  K8MM3-V mainboard
+               147b 1407  KV8-MAX3 motherboard
+               182d 201d  CN-029 USB2.0 4 port PCI Card
+               1849 3038  K7VT6
+       3040  VT82C586B ACPI
+       3043  VT86C100A [Rhine]
+               10bd 0000  VT86C100A Fast Ethernet Adapter
+               1106 0100  VT86C100A Fast Ethernet Adapter
+               1186 1400  DFE-530TX rev A
+       3044  VT6306 Fire II IEEE 1394 OHCI Link Layer Controller
+               0010 0001  IEEE 1394 4port DCST 1394-3+1B
+               1025 005a  TravelMate 290
+               1043 808a  A8V/A8N/P4P800 series motherboard
+               1458 1000  GA-7VT600-1394 Motherboard
+               1462 207d  K8NGM2 series motherboard
+               1462 217d  Aspire L250
+               1462 590d  KT6 Delta-FIS2R (MS-6590)
+               1462 702d  K8T NEO 2 motherboard
+               1462 971d  MS-6917
+       3050  VT82C596 Power Management
+       3051  VT82C596 Power Management
+       3053  VT6105M [Rhine-III]
+       3057  VT82C686 [Apollo Super ACPI]
+               1019 0985  P6VXA Motherboard
+               1019 0987  K7VZA Motherboard
+               1043 8033  A7V Mainboard
+               1043 803e  A7V-E Mainboard
+               1043 8040  A7M266 Mainboard
+               1043 8042  A7V133/A7V133-C Mainboard
+               1179 0001  Magnia Z310
+       3058  VT82C686 AC97 Audio Controller
+               0e11 0097  SoundMax Digital Integrated Audio
+               0e11 b194  Soundmax integrated digital audio
+               1019 0985  P6VXA Motherboard
+               1019 0987  K7VZA Motherboard
+               1043 1106  A7V133/A7V133-C Mainboard
+               1106 4511  Onboard Audio on EP7KXA
+               1458 7600  Onboard Audio
+               1462 3091  MS-6309 Onboard Audio
+               1462 3300  MS-6330 Onboard Audio
+               15dd 7609  Onboard Audio
+       3059  VT8233/A/8235/8237 AC97 Audio Controller
+               1019 0a81  L7VTA v1.0 Motherboard (KT400-8235)
+               1019 1877  K8M800-M2 (V2.0) onboard audio
+               1043 8095  A7V8X Motherboard (Realtek ALC650 codec)
+               1043 80a1  A7V8X-X Motherboard
+               1043 80b0  A7V600/K8V-X/K8V Deluxe motherboard (ADI AD1980 codec [SoundMAX])
+               1043 812a  A8V Deluxe motherboard (Realtek ALC850 codec)
+               10ec 8168  High Definition Audio
+               1106 3059  L7VMM2 Motherboard
+               1106 4161  K7VT2 motherboard
+               1106 4170  PCPartner P4M800-8237R Motherboard
+               1106 4552  Soyo KT-600 Dragon Plus (Realtek ALC 650)
+               1297 c160  FX41 motherboard (Realtek ALC650 codec)
+               1413 147b  KV8 Pro motherboard onboard audio
+               1458 a002  GA-7VAX Onboard Audio (Realtek ALC650)
+               1462 0080  K8T NEO 2 motherboard
+               1462 3800  KT266 onboard audio
+               1462 5901  KT6 Delta-FIS2R (MS-6590)
+               1462 7181  K8MM3-V mainboard
+               147b 1407  KV8-MAX3 motherboard
+               1695 300c  EP-8KRA2+ Mainboard
+               1849 0850  ASRock 775Dual-880 Pro onboard audio (Realtek ALC850)
+               1849 9739  P4VT8 Mainboard (C-Media CMI9739A codec)
+               1849 9761  K7VT6 motherboard
+               4005 4710  MSI K7T266 Pro2-RU (MSI-6380 v2) onboard audio (Realtek/ALC 200/200P)
+               a0a0 01b6  AK77-8XN onboard audio
+               a0a0 0342  AK86-L motherboard
+       3065  VT6102 [Rhine-II]
+               1043 80a1  A7V8X-X Motherboard
+               1043 80ed  A7V600-X Motherboard
+               1106 0102  VT6102 [Rhine II] Embeded Ethernet Controller on VT8235
+               1186 1400  DFE-530TX rev A
+               1186 1401  DFE-530TX rev B
+               13b9 1421  LD-10/100AL PCI Fast Ethernet Adapter (rev.B)
+               1462 7061  MS-7061
+               1462 7181  K8MM3-V mainboard
+               147b 1c09  NV7 Motherboard
+               1695 3005  VT6103
+               1695 300c  Realtek ALC655 sound chip
+               1849 3065  K7VT6 motherboard
+# This hosts more than just the Intel 537 codec, it also hosts PCtel (SIL33) and SmartLink (SIL34) codecs
+       3068  AC'97 Modem Controller
+               1462 309e  MS-6309 Saturn Motherboard
+       3074  VT8233 PCI to ISA Bridge
+               1043 8052  VT8233A
+       3091  VT8633 [Apollo Pro266]
+       3099  VT8366/A/7 [Apollo KT266/A/333]
+               1043 8064  A7V266-E Mainboard
+               1043 807f  A7V333 Mainboard
+               1849 3099  K7VT2 motherboard
+       3101  VT8653 Host Bridge
+       3102  VT8662 Host Bridge
+       3103  VT8615 Host Bridge
+       3104  USB 2.0
+               1019 0a81  L7VTA v1.0 Motherboard (KT400-8235)
+               1043 808c  A7V8X motherboard
+               1043 80a1  A7V8X-X motherboard rev 1.01
+               1043 80ed  A7V600/K8V-X/A8V Deluxe motherboard
+               1297 f641  FX41 motherboard
+               1458 5004  GA-7VAX Mainboard
+               1462 5901  KT6 Delta-FIS2R (MS-6590)
+               1462 7020  K8T NEO 2 motherboard
+               1462 7094  K8T Neo2-F V2.0
+               1462 7120  KT4AV motherboard
+               1462 7181  K8MM3-V mainboard
+               147b 1407  KV8-MAX3 motherboard
+               182d 201d  CN-029 USB 2.0 4 port PCI Card
+               1849 3104  K7VT6 motherboard
+       3106  VT6105/VT6106S [Rhine-III]
+               1106 0105  VT6106S [Rhine-III]
+               1186 1403  DFE-530TX rev C
+               1186 1406  DFE-530TX+ rev F2
+               1186 1407  DFE-538TX
+       3108  K8M800/K8N800/K8N800A [S3 UniChrome Pro]
+       3109  VT8233C PCI to ISA Bridge
+       3112  VT8361 [KLE133] Host Bridge
+       3113  VPX/VPX2 PCI to PCI Bridge Controller
+       3116  VT8375 [KM266/KL266] Host Bridge
+               1297 f641  FX41 motherboard
+       3118  CN400/PM800/PM880/PN800/PN880 [S3 UniChrome Pro]
+       3119  VT6120/VT6121/VT6122 Gigabit Ethernet Adapter
+       3122  VT8623 [Apollo CLE266] integrated CastleRock graphics
+       3123  VT8623 [Apollo CLE266]
+       3128  VT8753 [P4X266 AGP]
+       3133  VT3133 Host Bridge
+       3147  VT8233A ISA Bridge
+               1043 808c  A7V333 motherboard
+       3148  P4M266 Host Bridge
+       3149  VIA VT6420 SATA RAID Controller
+               1043 80ed  A7V600/K8V Deluxe/K8V-X/A8V Deluxe motherboard
+               1458 b003  GA-7VM400AM(F) Motherboard
+               1462 5901  KT6 Delta-FIS2R (MS-6590)
+               1462 7020  K8T Neo 2 Motherboard
+               1462 7094  K8T Neo2-F V2.0
+               1462 7181  K8MM3-V mainboard
+               147b 1407  KV8-MAX3 motherboard
+               147b 1408  KV7
+               1849 3149  K7VT6 motherboard
+               a0a0 04ad  AK86-L motherboard
+       3156  P/KN266 Host Bridge
+       3157  CX700/VX700 [S3 UniChrome Pro]
+       3164  VT6410 ATA133 RAID controller
+               1043 80f4  P4P800 Mainboard Deluxe ATX
+               1462 7028  915P/G Neo2
+       3168  P4X333/P4X400/PT800 AGP Bridge
+               1849 3168  P4VT8 Mainboard
+       3177  VT8235 ISA Bridge
+               1019 0a81  L7VTA v1.0 Motherboard (KT400-8235)
+               1043 808c  A7V8X motherboard
+               1043 80a1  A7V8X-X motherboard
+               1106 0000  KT4AV motherboard
+               1297 f641  FX41 motherboard
+               1458 5001  GA-7VAX Mainboard
+               1849 3177  K7VT2 motherboard
+       3178  ProSavageDDR P4N333 Host Bridge
+       3188  VT8385 [K8T800 AGP] Host Bridge
+               1043 80a3  K8V Deluxe/K8V-X motherboard
+               147b 1407  KV8-MAX3 motherboard
+       3189  VT8377 [KT400/KT600 AGP] Host Bridge
+               1043 807f  A7V8X motherboard
+               1106 0000  KT4AV motherboard (KT400A)
+               1458 5000  GA-7VAX Mainboard
+               1849 3189  K7VT6 motherboard
+       3204  K8M800 Host Bridge
+       3205  VT8378 [KM400/A] Chipset Host Bridge
+               1458 5000  GA-7VM400M Motherboard
+       3208  PT890 Host Bridge
+       3213  VPX/VPX2 PCI to PCI Bridge Controller
+       3218  K8T800M Host Bridge
+       3227  VT8237 ISA bridge [KT600/K8T800/K8T890 South]
+               1043 80ed  A7V600/K8V-X/A8V Deluxe motherboard
+               1106 3227  DFI KT600-AL / Soltek SL-B9D-FGR Motherboard
+               1458 5001  GA-7VT600 Motherboard
+               147b 1407  KV8-MAX3 motherboard
+               1849 3227  K7VT4 motherboard
+       3230  K8M890CE/K8N890CE [Chrome 9]
+       3238  K8T890 Host Bridge
+       3249  VT6421 IDE RAID Controller
+       324a  CX700/VX700 PCI to PCI Bridge
+       324b  CX700/VX700 Host Bridge
+       324e  CX700/VX700 Internal Module Bus
+       3253  VIA VT6655 WiFi Adapter, 802.11a/b/g
+       3258  PT880 Host Bridge
+       3259  CN333/CN400/PM880 Host Bridge
+       3260  VIA Chrome9 HC IGP
+       3269  KT880 Host Bridge
+       3282  K8T800Pro Host Bridge
+       3287  VT8251 PCI to ISA Bridge
+       3288  VT1708/A [Azalia HDAC] (VIA High Definition Audio Controller)
+       3290  K8M890 Host Bridge
+       3296  P4M800 Host Bridge
+       3324  CX700/VX700 Host Bridge
+       3327  P4M890 Host Bridge
+       3336  K8M890CE Host Bridge
+       3337  VT8237A PCI to ISA Bridge
+       3340  PT900 Host Bridge
+       3343  P4M890 [S3 UniChrome Pro]
+       3344  CN700/P4M800 Pro/P4M800 CE/VN800 [S3 UniChrome Pro]
+       3349  VT8251 AHCI/SATA 4-Port Controller
+       3351  VT3351 Host Bridge
+       3353  VX800 PCI to PCI Bridge
+       3364  CN896/VN896/P4M900 Host Bridge
+       3371  CN896/VN896/P4M900 [Chrome 9 HC]
+       3372  VT8237S PCI to ISA Bridge
+       337a  VT8237A PCI to PCI Bridge
+       337b  VT8237A Host Bridge
+       4149  VIA VT6420 (ATA133) Controller
+       4204  K8M800 Host Bridge
+       4208  PT890 Host Bridge
+       4238  K8T890 Host Bridge
+       4258  PT880 Host Bridge
+       4259  CN333/CN400/PM880 Host Bridge
+       4269  KT880 Host Bridge
+       4282  K8T800Pro Host Bridge
+       4290  K8M890 Host Bridge
+       4293  PM896 Host Bridge
+       4296  P4M800 Host Bridge
+       4308  PT894 Host Bridge
+       4314  CN700/VN800/P4M800CE/Pro Host Bridge
+       4324  CX700/VX700 Host Bridge
+       4327  P4M890 Host Bridge
+       4336  K8M890CE Host Bridge
+       4340  PT900 Host Bridge
+       4351  VT3351 Host Bridge
+       4353  VX800/VX820 Power Management Control
+       4364  CN896/VN896/P4M900 Host Bridge
+       5030  VT82C596 ACPI [Apollo PRO]
+       5208  PT890 I/O APIC Interrupt Controller
+       5238  K8T890 I/O APIC Interrupt Controller
+       5290  K8M890 I/O APIC Interrupt Controller
+       5308  PT894 I/O APIC Interrupt Controller
+       5324  VX800 Serial ATA and EIDE Controller
+       5327  P4M890 I/O APIC Interrupt Controller
+       5336  K8M890CE I/O APIC Interrupt Controller
+       5340  PT900 I/O APIC Interrupt Controller
+       5351  VT3351 I/O APIC Interrupt Controller
+       5353  VX800/VX820 APIC and Central Traffic Control
+       5364  CN896/VN896/P4M900 I/O APIC Interrupt Controller
+       6100  VT85C100A [Rhine II]
+       6287  SATA RAID Controller
+       6327  P4M890 Security Device
+       6353  VX800/VX820 Scratch Registers
+       6364  CN896/VN896/P4M900 Security Device
+       7204  K8M800 Host Bridge
+       7205  KM400/KN400/P4M800 [S3 UniChrome]
+               1458 d000  Gigabyte GA-7VM400(A)M(F) Motherboard
+               1462 7061  MS-7061
+       7208  PT890 Host Bridge
+       7238  K8T890 Host Bridge
+       7258  PT880 Host Bridge
+       7259  CN333/CN400/PM880 Host Bridge
+       7269  KT880 Host Bridge
+       7282  K8T800Pro Host Bridge
+       7290  K8M890 Host Bridge
+       7293  PM896 Host Bridge
+       7296  P4M800 Host Bridge
+       7308  PT894 Host Bridge
+       7314  CN700/VN800/P4M800CE/Pro Host Bridge
+       7324  CX700/VX700 Host Bridge
+       7327  P4M890 Host Bridge
+       7336  K8M890CE Host Bridge
+       7340  PT900 Host Bridge
+       7351  VT3351 Host Bridge
+       7353  VX800/VX820 North-South Module Interface Control
+       7364  CN896/VN896/P4M900 Host Bridge
+       8231  VT8231 [PCI-to-ISA Bridge]
+       8235  VT8235 ACPI
+       8305  VT8363/8365 [KT133/KM133 AGP]
+       8324  CX700/VX700 PCI to ISA Bridge
+       8353  VX800/VX820 Bus Control and Power Management
+       8391  VT8371 [KX133 AGP]
+       8400  MVP4
+       8500  KLE133/PLE133/PLE133T
+       8501  VT8501 [Apollo MVP4 AGP]
+       8596  VT82C596 [Apollo PRO AGP]
+       8597  VT82C597 [Apollo VP3 AGP]
+       8598  VT82C598/694x [Apollo MVP3/Pro133x AGP]
+               1019 0985  P6VXA Motherboard
+       8601  VT8601 [Apollo ProMedia AGP]
+       8605  VT8605 [PM133 AGP]
+       8691  VT82C691 [Apollo Pro]
+       8693  VT82C693 [Apollo Pro Plus] PCI Bridge
+       8a25  PL133/PL133T [S3 ProSavage]
+       8a26  KL133/KL133A/KM133/KM133A [S3 ProSavage]
+       8d01  PN133/PN133T [S3 Twister]
+       8d04  KM266/P4M266/P4M266A/P4N266 [S3 ProSavageDDR]
+       9530  Secure Digital Memory Card Controller
+       95d0  SDIO Host Controller
+       a208  PT890 PCI to PCI Bridge Controller
+       a238  K8T890 PCI to PCI Bridge Controller
+       a327  P4M890 PCI to PCI Bridge Controller
+       a353  VX800/VX820 South-North Module Interface Control
+       a364  CN896/VN896/P4M900 PCI to PCI Bridge Controller
+       b091  VT8633 [Apollo Pro266 AGP]
+       b099  VT8366/A/7 [Apollo KT266/A/333 AGP]
+       b101  VT8653 AGP Bridge
+       b102  VT8362 AGP Bridge
+       b103  VT8615 AGP Bridge
+       b112  VT8361 [KLE133] AGP Bridge
+       b113  VPX/VPX2 I/O APIC Interrupt Controller
+       b115  VT8363/8365 [KT133/KM133] PCI Bridge
+       b168  VT8235 PCI Bridge
+       b188  VT8237 PCI bridge [K8T800/K8T890 South]
+               147b 1407  KV8-MAX3 motherboard
+       b198  VT8237/VX700 PCI Bridge
+       b213  VPX/VPX2 I/O APIC Interrupt Controller
+       b999  [K8T890 North / VT8237 South] PCI Bridge
+       c208  PT890 PCI to PCI Bridge Controller
+       c238  K8T890 PCI to PCI Bridge Controller
+       c327  P4M890 PCI to PCI Bridge Controller
+       c340  PT900 PCI to PCI Bridge Controller
+       c353  VX800/VX820 PCI Express Root Port
+       c364  CN896/VN896/P4M900 PCI to PCI Bridge Controller
+       d104  VT8237R USB UDCI Controller
+       d208  PT890 PCI to PCI Bridge Controller
+       d213  VPX/VPX2 PCI to PCI Bridge Controller
+       d238  K8T890 PCI to PCI Bridge Controller
+       d340  PT900 PCI to PCI Bridge Controller
+       e208  PT890 PCI to PCI Bridge Controller
+       e238  K8T890 PCI to PCI Bridge Controller
+       e340  PT900 PCI to PCI Bridge Controller
+       e353  VX800/VX820 PCI Express Root Port
+       f208  PT890 PCI to PCI Bridge Controller
+       f238  K8T890 PCI to PCI Bridge Controller
+       f340  PT900 PCI to PCI Bridge Controller
+       f353  VX800/VX820 PCI Express Root Port
+1107  Stratus Computers
+       0576  VIA VT82C570MV [Apollo] (Wrong vendor ID!)
+1108  Proteon, Inc.
+       0100  p1690plus_AA
+       0101  p1690plus_AB
+       0105  P1690Plus
+       0108  P1690Plus
+       0138  P1690Plus
+       0139  P1690Plus
+       013c  P1690Plus
+       013d  P1690Plus
+1109  Cogent Data Technologies, Inc.
+       1400  EM110TX [EX110TX]
+110a  Siemens Nixdorf AG
+       0002  Pirahna 2-port
+       0005  Tulip controller, power management, switch extender
+       0006  FSC PINC (I/O-APIC)
+       0015  FSC Multiprocessor Interrupt Controller
+       001d  FSC Copernicus Management Controller
+       007b  FSC Remote Service Controller, mailbox device
+       007c  FSC Remote Service Controller, shared memory device
+       007d  FSC Remote Service Controller, SMIC device
+       2101  HST SAPHIR V Primary PCI (ISDN/PMx)
+# Superfastcom-PCI (Commtech, Inc.) or DSCC4 WAN Adapter
+       2102  DSCC4 PEB/PEF 20534 DMA Supported Serial Communication Controller with 4 Channels
+       2104  Eicon Diva 2.02 compatible passive ISDN card
+       3142  SIMATIC NET CP 5613A1 (Profibus Adapter)
+       4021  SIMATIC NET CP 5512 (Profibus and MPI Cardbus Adapter)
+       4029  SIMATIC NET CP 5613A2 (Profibus Adapter)
+       4942  FPGA I-Bus Tracer for MBD
+       6120  SZB6120
+110b  Chromatic Research Inc.
+       0001  Mpact Media Processor
+       0004  Mpact 2
+110c  Mini-Max Technology, Inc.
+110d  Znyx Advanced Systems
+110e  CPU Technology
+110f  Ross Technology
+1110  Powerhouse Systems
+       6037  Firepower Powerized SMP I/O ASIC
+       6073  Firepower Powerized SMP I/O ASIC
+1111  Santa Cruz Operation
+# Also claimed to be RNS or Rockwell International, current PCISIG records list Osicom
+1112  Osicom Technologies Inc
+       2200  FDDI Adapter
+       2300  Fast Ethernet Adapter
+       2340  4 Port Fast Ethernet Adapter
+       2400  ATM Adapter
+1113  Accton Technology Corporation
+       1211  SMC2-1211TX
+               103c 1207  EN-1207D Fast Ethernet Adapter
+               1113 1211  EN-1207D Fast Ethernet Adapter
+       1216  EN-1216 Ethernet Adapter
+               1113 1216  EN1207F series PCI Fast Ethernet Adapter
+               1113 2220  EN2220A Cardbus Fast Ethernet Adapter
+               1113 2242  EN2242 10/100 Ethernet Mini-PCI Card
+               111a 1020  SpeedStream 1020 PCI 10/100 Ethernet Adaptor [EN-1207F-TX ?]
+       1217  EN-1217 Ethernet Adapter
+       5105  10Mbps Network card
+       9211  EN-1207D Fast Ethernet Adapter
+               1113 9211  EN-1207D Fast Ethernet Adapter
+       9511  21x4x DEC-Tulip compatible Fast Ethernet
+       d301  CPWNA100 (Philips wireless PCMCIA)
+       ec02  SMC 1244TX v3
+       ee23  SMCWPCIT-G 108Mbps Wireless PCI adapter
+1114  Atmel Corporation
+       0506  at76c506 802.11b Wireless Network Adaptor
+1115  3D Labs
+1116  Data Translation
+       0022  DT3001
+       0023  DT3002
+       0024  DT3003
+       0025  DT3004
+       0026  DT3005
+       0027  DT3001-PGL
+       0028  DT3003-PGL
+1117  Datacube, Inc
+       9500  Max-1C SVGA card
+       9501  Max-1C image processing
+1118  Berg Electronics
+1119  ICP Vortex Computersysteme GmbH
+       0000  GDT 6000/6020/6050
+       0001  GDT 6000B/6010
+       0002  GDT 6110/6510
+       0003  GDT 6120/6520
+       0004  GDT 6530
+       0005  GDT 6550
+       0006  GDT 6117/6517
+       0007  GDT 6127/6527
+       0008  GDT 6537
+       0009  GDT 6557/6557-ECC
+       000a  GDT 6115/6515
+       000b  GDT 6125/6525
+       000c  GDT 6535
+       000d  GDT 6555/6555-ECC
+       0100  GDT 6117RP/6517RP
+       0101  GDT 6127RP/6527RP
+       0102  GDT 6537RP
+       0103  GDT 6557RP
+       0104  GDT 6111RP/6511RP
+       0105  GDT 6121RP/6521RP
+       0110  GDT 6117RD/6517RD
+       0111  GDT 6127RD/6527RD
+       0112  GDT 6537RD
+       0113  GDT 6557RD
+       0114  GDT 6111RD/6511RD
+       0115  GDT 6121RD/6521RD
+       0118  GDT 6118RD/6518RD/6618RD
+       0119  GDT 6128RD/6528RD/6628RD
+       011a  GDT 6538RD/6638RD
+       011b  GDT 6558RD/6658RD
+       0120  GDT 6117RP2/6517RP2
+       0121  GDT 6127RP2/6527RP2
+       0122  GDT 6537RP2
+       0123  GDT 6557RP2
+       0124  GDT 6111RP2/6511RP2
+       0125  GDT 6121RP2/6521RP2
+       0136  GDT 6113RS/6513RS
+       0137  GDT 6123RS/6523RS
+       0138  GDT 6118RS/6518RS/6618RS
+       0139  GDT 6128RS/6528RS/6628RS
+       013a  GDT 6538RS/6638RS
+       013b  GDT 6558RS/6658RS
+       013c  GDT 6533RS/6633RS
+       013d  GDT 6543RS/6643RS
+       013e  GDT 6553RS/6653RS
+       013f  GDT 6563RS/6663RS
+       0166  GDT 7113RN/7513RN/7613RN
+       0167  GDT 7123RN/7523RN/7623RN
+       0168  GDT 7118RN/7518RN/7518RN
+       0169  GDT 7128RN/7528RN/7628RN
+       016a  GDT 7538RN/7638RN
+       016b  GDT 7558RN/7658RN
+       016c  GDT 7533RN/7633RN
+       016d  GDT 7543RN/7643RN
+       016e  GDT 7553RN/7653RN
+       016f  GDT 7563RN/7663RN
+       01d6  GDT 4x13RZ
+       01d7  GDT 4x23RZ
+       01f6  GDT 8x13RZ
+       01f7  GDT 8x23RZ
+       01fc  GDT 8x33RZ
+       01fd  GDT 8x43RZ
+       01fe  GDT 8x53RZ
+       01ff  GDT 8x63RZ
+       0210  GDT 6519RD/6619RD
+       0211  GDT 6529RD/6629RD
+       0260  GDT 7519RN/7619RN
+       0261  GDT 7529RN/7629RN
+       02ff  GDT MAXRP
+       0300  GDT NEWRX
+       0301  GDT NEWRX2
+111a  Efficient Networks, Inc
+       0000  155P-MF1 (FPGA)
+       0002  155P-MF1 (ASIC)
+       0003  ENI-25P ATM
+               111a 0000  ENI-25p Miniport ATM Adapter
+       0005  SpeedStream (LANAI)
+               111a 0001  ENI-3010 ATM
+               111a 0009  ENI-3060 ADSL (VPI=0)
+               111a 0101  ENI-3010 ATM
+               111a 0109  ENI-3060CO ADSL (VPI=0)
+               111a 0809  ENI-3060 ADSL (VPI=0 or 8)
+               111a 0909  ENI-3060CO ADSL (VPI=0 or 8)
+               111a 0a09  ENI-3060 ADSL (VPI=<0..15>)
+       0007  SpeedStream ADSL
+               111a 1001  ENI-3061 ADSL [ASIC]
+       1203  SpeedStream 1023 Wireless PCI Adapter
+111b  Teledyne Electronic Systems
+111c  Tricord Systems Inc.
+       0001  Powerbis Bridge
+111d  Integrated Device Technology, Inc.
+       0001  IDT77201/77211 155Mbps ATM SAR Controller [NICStAR]
+       0003  IDT77222/77252 155Mbps ATM MICRO ABR SAR Controller
+       0004  IDT77V252 155Mbps ATM MICRO ABR SAR Controller
+       0005  IDT77V222 155Mbps ATM MICRO ABR SAR Controller
+       8018  PES12N3A PCI Express Switch
+       801c  PES24N3A PCI Express Switch
+       8028  PES4T4 PCI Express Switch
+       802b  PES8T5A PCI Express Switch
+       802c  PES16T4 PCI Express Switch
+       802d  PES16T7 PCI Express Switch
+       802e  PES24T6 PCI Express Switch
+       802f  PES32T8 PCI Express Switch
+       8032  PES48T12 PCI Express Switch
+       8034  PES16/22/34H16 PCI Express Switch
+       8035  PES32H8 PCI Express Switch
+       8036  PES48H12 PCI Express Switch
+       8037  PES64H16 PCI Express Switch
+       8039  PES3T3 PCI Express Switch
+       803a  PES4T4 PCI Express Switch
+       803c  PES5T5 PCI Express Switch
+       803d  PES6T5 PCI Express Switch
+       8048  PES8NT2 PCI Express Switch
+       8049  PES8NT2 PCI Express Switch
+       804a  PES8NT2 PCI Express Internal NTB
+       804b  PES8NT2 PCI Express External NTB
+       804c  PES16NT2 PCI Express Switch
+       804d  PES16NT2 PCI Express Switch
+       804e  PES16NT2 PCI Express Internal NTB
+       804f  PES16NT2 PCI Express External NTB
+       8058  PES12NT3 PCI Express Switch
+       8059  PES12NT3 PCI Express Switch
+       805a  PES12NT3 PCI Express Internal NTB
+       805b  PES12NT3 PCI Express External NTB
+       805c  PES24NT3 PCI Express Switch
+       805d  PES24NT3 PCI Express Switch
+       805e  PES24NT3 PCI Express Internal NTB
+       805f  PES24NT3 PCI Express External NTB
+       8060  PES16T4G2 PCI Express Gen2 Switch
+       8061  PES12T3G2 PCI Express Gen2 Switch
+       8068  PES6T6G2 PCI Express Gen2 Switch
+       806a  PES24T3G2 PCI Express Gen2 Switch
+       806c  PES16T4A/4T4G2 PCI Express Gen2 Switch
+       806e  PES24T6G2 PCI Express Gen2 Switch
+       806f  HIO524G2 PCI Express Gen2 Switch
+111e  Eldec
+111f  Precision Digital Images
+       4a47  Precision MX Video engine interface
+       5243  Frame capture bus interface
+1120  EMC Corporation
+1121  Zilog
+1122  Multi-tech Systems, Inc.
+1123  Excellent Design, Inc.
+1124  Leutron Vision AG
+       2581  Picport Monochrome
+1125  Eurocore
+1126  Vigra
+1127  FORE Systems Inc
+       0200  ForeRunner PCA-200 ATM
+       0210  PCA-200PC
+       0250  ATM
+       0300  ForeRunner PCA-200EPC ATM
+       0310  ATM
+       0400  ForeRunnerHE ATM Adapter
+               1127 0400  ForeRunnerHE ATM
+1129  Firmworks
+112a  Hermes Electronics Company, Ltd.
+112b  Linotype - Hell AG
+112c  Zenith Data Systems
+112d  Ravicad
+112e  Infomedia Microelectronics Inc.
+112f  Imaging Technology Inc
+       0000  MVC IC-PCI
+       0001  MVC IM-PCI Video frame grabber/processor
+       0008  PC-CamLink PCI framegrabber
+1130  Computervision
+1131  Philips Semiconductors
+       1561  USB 1.1 Host Controller
+               1775 c200  C2K onboard USB 1.1 host controller
+       1562  USB 2.0 Host Controller
+               1775 c200  C2K onboard USB 2.0 host controller
+       3400  SmartPCI56(UCB1500) 56K Modem
+       5400  TriMedia TM1000/1100
+               12ca 0000  BlueICE
+       5402  TriMedia TM-1300
+               1244 0f00  Fritz!Card DSL
+       5405  TriMedia TM1500
+       5406  TriMedia TM1700
+       7130  SAA7130 Video Broadcast Decoder
+               102b 48d0  Matrox CronosPlus
+               1048 226b  ELSA EX-VISION 300TV
+               107d 6655  WinFast DTV1000S
+               1131 2001  10MOONS PCI TV CAPTURE CARD
+               1131 2005  Techcom (India) TV Tuner Card (SSD-TV-670)
+               1461 050c  Nagase Sangyo TransGear 3000TV
+               1461 10ff  AVerMedia DVD EZMaker
+               1461 2108  AverMedia AverTV/305
+               1461 2115  AverMedia AverTV Studio 305
+               153b 1152  Terratec Cinergy 200 TV
+               185b c100  Compro VideoMate TV PVR/FM
+               185b c901  Videomate DVB-T200
+               5168 0138  LifeView FlyVIDEO2000
+       7133  SAA7131/SAA7133/SAA7135 Video Broadcast Decoder
+               0000 4091  Beholder BeholdTV 409 FM
+# Deleting vendor name after rereading submit instructions
+               0070 6701  WinTV HVR-1110
+               1019 4cb5  Elitegroup ECS TVP3XP FM1236 Tuner Card (NTSC,FM)
+               1043 0210  FlyTV mini Asus Digimatrix
+               1043 4843  ASUS TV-FM 7133
+               1043 4845  TV-FM 7135
+               1043 4862  P7131 Dual
+               1043 4876  My Cinema-P7131 Hybrid
+               1131 0000  KWorld V-Stream Studio TV Terminator
+               1131 2001  Proteus Pro [philips reference design]
+               1131 2018  Tiger reference design
+               1131 4ee9  MonsterTV Mobile
+               11bd 002b  PCTV Stereo
+               11bd 002e  PCTV 110i (saa7133)
+               12ab 0800  PURPLE TV
+               13c2 2804  Technotrend Budget T-3000 Hybrid
+               1421 0335  Instant TV DVB-T Cardbus
+               1421 1370  Instant TV (saa7135)
+               1435 7330  VFG7330
+               1435 7350  VFG7350
+               1461 1044  AVerTVHD MCE A180
+               1461 4836  M10D Hybrid DVBT
+               1461 a14b  AVerTV Studio 509
+               1461 f01d  DVB-T Super 007
+               1461 f31f  Avermedia AVerTV GO 007 FM
+               1461 f936  Hybrid+FM PCI (rev A16D)
+               1462 6231  TV@nywhere Plus
+               1489 0214  LifeView FlyTV Platinum FM
+               14c0 1212  LifeView FlyTV Platinum Mini2
+               153b 1160  Cinergy 250 PCI TV
+               153b 1162  Terratec Cinergy 400 mobile
+               17de 7350  ATSC 110 Digital / Analog HDTV Tuner
+               17de 7352  ATSC 115 Digital / Analog HDTV Tuner
+               185b c100  VideoMate TV
+               185b c900  VideoMate T750
+               5168 0306  LifeView FlyDVB-T DUO
+               5168 0319  LifeView FlyDVB Trio
+               5168 0502  LifeView FlyDVB-T Duo CardBus
+               5168 0520  LifeView FlyDVB Trio CardBus
+               5168 1502  LifeView FlyTV CardBus
+               5168 2502  LifeView FlyDVB-T CardBus
+               5168 2520  LifeView FlyDVB-S Duo CardBus
+               5168 3502  LifeView FlyDVB-T Hybrid CardBus
+               5168 3520  LifeView FlyDVB Trio N CardBus
+       7134  SAA7134/SAA7135HL Video Broadcast Decoder
+               1019 4cb4  Elitegroup ECS TVP3XP FM1216 Tuner Card(PAL-BG,FM)
+               1043 0210  Digimatrix TV
+               1043 4840  ASUS TV-FM 7134
+               1043 4842  TV-FM 7134
+               1131 2004  EUROPA V3 reference design
+               1131 4e85  SKNet Monster TV
+               1131 6752  EMPRESS
+               11bd 002b  PCTV Stereo
+               11bd 002d  PCTV 300i DVB-T + PAL
+               1461 2c00  AverTV Hybrid+FM PCI
+               1461 9715  AVerTV Studio 307
+               1461 a70a  Avermedia AVerTV 307
+               1461 a70b  AverMedia M156 / Medion 2819
+               1461 d6ee  Cardbus TV/Radio (E500)
+               1471 b7e9  AVerTV Cardbus plus
+               153b 1142  Terratec Cinergy 400 TV
+               153b 1143  Terratec Cinergy 600 TV
+               153b 1158  Terratec Cinergy 600 TV MK3
+               1540 9524  ProVideo PV952
+               16be 0003  Medion 7134
+               185b c200  Compro VideoMate Gold+ Pal
+               185b c900  Videomate DVB-T300
+               1894 a006  KNC One TV-Station DVR
+               1894 fe01  KNC One TV-Station RDS / Typhoon TV Tuner RDS
+               5168 0138  FLY TV PRIME 34FM
+       7145  SAA7145
+       7146  SAA7146
+               110a 0000  Fujitsu/Siemens DVB-C card rev1.5
+               110a ffff  Fujitsu/Siemens DVB-C card rev1.5
+               1124 2581  Leutron Vision PicPort
+               1131 4f56  KNC1 DVB-S Budget
+               1131 4f60  Fujitsu-Siemens Activy DVB-S Budget Rev AL
+               1131 4f61  Activy DVB-S Budget Rev GR
+               1131 5f61  Activy DVB-T Budget
+               114b 2003  DVRaptor Video Edit/Capture Card
+               11bd 0006  DV500 Overlay
+               11bd 000a  DV500 Overlay
+               11bd 000f  DV500 Overlay
+               13c2 0000  Siemens/Technotrend/Hauppauge DVB card rev1.3 or rev1.5
+               13c2 0001  Technotrend/Hauppauge DVB card rev1.3 or rev1.6
+               13c2 0002  Technotrend/Hauppauge DVB card rev2.1
+               13c2 0003  Technotrend/Hauppauge DVB card rev2.1
+               13c2 0004  Technotrend/Hauppauge DVB card rev2.1
+               13c2 0006  Technotrend/Hauppauge DVB card rev1.3 or rev1.6
+               13c2 0008  Technotrend/Hauppauge DVB-T
+               13c2 000a  Octal/Technotrend DVB-C for iTV
+               13c2 000e  Technotrend/Hauppauge DVB card rev2.3
+               13c2 1003  Technotrend-Budget/Hauppauge WinTV-NOVA-S DVB card
+               13c2 1004  Technotrend-Budget/Hauppauge WinTV-NOVA-C DVB card
+               13c2 1005  Technotrend-Budget/Hauppauge WinTV-NOVA-T DVB card
+               13c2 100c  Technotrend-Budget/Hauppauge WinTV-NOVA-CI DVB card
+               13c2 100f  Technotrend-Budget/Hauppauge WinTV-NOVA-CI DVB card
+               13c2 1011  Technotrend-Budget/Hauppauge WinTV-NOVA-T DVB card
+               13c2 1012  DVB T-1500
+               13c2 1013  SATELCO Multimedia DVB
+               13c2 1016  WinTV-NOVA-SE DVB card
+               13c2 1018  DVB S-1401
+               13c2 1019  S2-3200
+               13c2 1102  Technotrend/Hauppauge DVB card rev2.1
+               153b 1155  Cinergy 1200 DVB-S
+               153b 1156  Terratec Cynergy 1200C
+               153b 1157  Cinergy 1200 DVB-T
+               1894 0020  KNC One DVB-C V1.0
+       9730  SAA9730 Integrated Multimedia and Peripheral Controller
+               1131 0000  Integrated Multimedia and Peripheral Controller
+1132  Mitel Corp.
+1133  Dialogic Corporation
+       7901  EiconCard S90
+       7902  EiconCard S90
+       7911  EiconCard S91
+       7912  EiconCard S91
+       7941  EiconCard S94
+       7942  EiconCard S94
+       7943  EiconCard S94
+       7944  EiconCard S94
+       b921  EiconCard P92
+       b922  EiconCard P92
+       b923  EiconCard P92
+       e001  Diva Pro 2.0 S/T
+       e002  Diva 2.0 S/T PCI
+       e003  Diva Pro 2.0 U
+       e004  Diva 2.0 U PCI
+       e005  Diva 2.01 S/T PCI
+       e006  Diva CT S/T PCI
+       e007  Diva CT U PCI
+       e008  Diva CT Lite S/T PCI
+       e009  Diva CT Lite U PCI
+       e00a  Diva ISDN+V.90 PCI
+       e00b  Diva ISDN PCI 2.02
+       e00c  Diva 2.02 PCI U
+       e00d  Diva Pro 3.0 PCI
+       e00e  Diva ISDN+CT S/T PCI Rev 2
+       e010  Diva Server BRI-2M PCI
+               110a 0021  Fujitsu Siemens ISDN S0
+       e011  Diva Server BRI S/T Rev 2
+       e012  Diva Server 4BRI-8M PCI
+       e013  4BRI
+               1133 1300  Diva V-4BRI-8 PCI v2
+               1133 e013  Diva 4BRI-8 PCI v2
+       e014  Diva Server PRI-30M PCI
+       e015  Diva PRI PCI v2
+       e016  Diva Server Voice 4BRI PCI
+       e017  Diva Server Voice 4BRI Rev 2
+               1133 e017  Diva Server Voice 4BRI-8M 2.0 PCI
+       e018  BRI
+               1133 1800  Diva V-BRI-2 PCI v2
+               1133 e018  Diva BRI-2 PCI v2
+       e019  Diva Server Voice PRI Rev 2
+               1133 e019  Diva Server Voice PRI 2.0 PCI
+       e01a  Diva BRI-2FX PCI v2
+       e01b  Diva Server Voice BRI-2M 2.0 PCI
+               1133 e01b  Diva Server Voice BRI-2M 2.0 PCI
+       e01c  PRI
+               1133 1c01  Diva PRI/E1/T1-8 PCI v3
+               1133 1c02  Diva PRI/T1-24 PCI(e) v3
+               1133 1c03  Diva PRI/E1-30 PCI(e) v3
+               1133 1c04  Diva PRI/E1/T1-CTI PCI(e) v3
+               1133 1c05  Diva V-PRI/T1-24 PCI(e) v3
+               1133 1c06  Diva V-PRI/E1-30 PCI(e) v3
+               1133 1c07  Diva Server PRI/E1/T1-8 Cornet NQ
+               1133 1c08  Diva Server PRI/T1-24 Cornet NQ
+               1133 1c09  Diva Server PRI/E1-30 Cornet NQ
+               1133 1c0a  Diva Server PRI/E1/T1 Cornet NQ
+               1133 1c0b  Diva Server V-PRI/T1-24 Cornet NQ
+               1133 1c0c  Diva Server V-PRI/E1-30 Cornet NQ
+       e01e  2PRI
+               1133 1e01  Diva 2PRI/E1/T1-60 PCI v1
+               1133 e01e  Diva V-2PRI/E1/T1-60 PCI v1
+       e020  4PRI
+               1133 2001  Diva 4PRI/E1/T1-120 PCI v1
+               1133 e020  Diva V-4PRI/E1/T1-120 PCI v1
+       e022  Analog-2
+               1133 2200  Diva V-Analog-2 PCI v1
+               1133 e022  Diva Analog-2 PCI v1
+       e024  Analog-4
+               1133 2400  Diva V-Analog-4 PCI v1
+               1133 e024  Diva Analog-4 PCI v1
+       e028  Analog-8
+               1133 2800  Diva V-Analog-8 PCI v1
+               1133 e028  Diva Analog-8 PCI v1
+       e02a  Diva IPM-300 PCI v1
+       e02c  Diva IPM-600 PCI v1
+       e02e  4BRI
+               1133 2e01  Diva V-4BRI-8 PCIe v2
+               1133 e02e  Diva 4BRI-8 PCIe v2
+       e032  BRI
+               1133 3201  Diva V-BRI-2 PCIe v2
+               1133 e032  Diva BRI-2 PCIe v2
+       e034  Diva BRI-CTI PCI v2
+1134  Mercury Computer Systems
+       0001  Raceway Bridge
+       0002  Dual PCI to RapidIO Bridge
+1135  Fuji Xerox Co Ltd
+       0001  Printer controller
+1136  Momentum Data Systems
+1137  Cisco Systems Inc
+1138  Ziatech Corporation
+       8905  8905 [STD 32 Bridge]
+1139  Dynamic Pictures, Inc
+       0001  VGA Compatable 3D Graphics
+113a  FWB Inc
+113b  Network Computing Devices
+113c  Cyclone Microsystems, Inc.
+       0000  PCI-9060 i960 Bridge
+       0001  PCI-SDK [PCI i960 Evaluation Platform]
+       0911  PCI-911 [i960Jx-based Intelligent I/O Controller]
+       0912  PCI-912 [i960CF-based Intelligent I/O Controller]
+       0913  PCI-913
+       0914  PCI-914 [I/O Controller w/ secondary PCI bus]
+113d  Leading Edge Products Inc
+113e  Sanyo Electric Co - Computer Engineering Dept
+113f  Equinox Systems, Inc.
+       0808  SST-64P Adapter
+       1010  SST-128P Adapter
+       80c0  SST-16P DB Adapter
+       80c4  SST-16P RJ Adapter
+       80c8  SST-16P Adapter
+       8888  SST-4P Adapter
+       9090  SST-8P Adapter
+1140  Intervoice Inc
+1141  Crest Microsystem Inc
+1142  Alliance Semiconductor Corporation
+       3210  AP6410
+       6422  ProVideo 6422
+       6424  ProVideo 6424
+       6425  ProMotion AT25
+       643d  ProMotion AT3D
+1143  NetPower, Inc
+1144  Cincinnati Milacron
+       0001  Noservo controller
+1145  Workbit Corporation
+       8007  NinjaSCSI-32 Workbit
+       f007  NinjaSCSI-32 KME
+       f010  NinjaSCSI-32 Workbit
+       f012  NinjaSCSI-32 Logitec
+       f013  NinjaSCSI-32 Logitec
+       f015  NinjaSCSI-32 Melco
+       f020  NinjaSCSI-32 Sony PCGA-DVD51
+1146  Force Computers
+1147  Interface Corp
+# Nee Schneider & Koch
+1148  SysKonnect
+       4000  FDDI Adapter
+               0e11 b03b  Netelligent 100 FDDI DAS Fibre SC
+               0e11 b03c  Netelligent 100 FDDI SAS Fibre SC
+               0e11 b03d  Netelligent 100 FDDI DAS UTP
+               0e11 b03e  Netelligent 100 FDDI SAS UTP
+               0e11 b03f  Netelligent 100 FDDI SAS Fibre MIC
+               1148 5521  FDDI SK-5521 (SK-NET FDDI-UP)
+               1148 5522  FDDI SK-5522 (SK-NET FDDI-UP DAS)
+               1148 5541  FDDI SK-5541 (SK-NET FDDI-FP)
+               1148 5543  FDDI SK-5543 (SK-NET FDDI-LP)
+               1148 5544  FDDI SK-5544 (SK-NET FDDI-LP DAS)
+               1148 5821  FDDI SK-5821 (SK-NET FDDI-UP64)
+               1148 5822  FDDI SK-5822 (SK-NET FDDI-UP64 DAS)
+               1148 5841  FDDI SK-5841 (SK-NET FDDI-FP64)
+               1148 5843  FDDI SK-5843 (SK-NET FDDI-LP64)
+               1148 5844  FDDI SK-5844 (SK-NET FDDI-LP64 DAS)
+       4200  Token Ring adapter
+       4300  SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link)
+               1148 9821  SK-9821 Gigabit Ethernet Server Adapter (SK-NET GE-T)
+               1148 9822  SK-9822 Gigabit Ethernet Server Adapter (SK-NET GE-T dual link)
+               1148 9841  SK-9841 Gigabit Ethernet Server Adapter (SK-NET GE-LX)
+               1148 9842  SK-9842 Gigabit Ethernet Server Adapter (SK-NET GE-LX dual link)
+               1148 9843  SK-9843 Gigabit Ethernet Server Adapter (SK-NET GE-SX)
+               1148 9844  SK-9844 Gigabit Ethernet Server Adapter (SK-NET GE-SX dual link)
+               1148 9861  SK-9861 Gigabit Ethernet Server Adapter (SK-NET GE-SX Volition)
+               1148 9862  SK-9862 Gigabit Ethernet Server Adapter (SK-NET GE-SX Volition dual link)
+               1148 9871  SK-9871 Gigabit Ethernet Server Adapter (SK-NET GE-ZX)
+               1148 9872  SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link)
+               1259 2970  AT-2970SX Gigabit Ethernet Adapter
+               1259 2971  AT-2970LX Gigabit Ethernet Adapter
+               1259 2972  AT-2970TX Gigabit Ethernet Adapter
+               1259 2973  AT-2971SX Gigabit Ethernet Adapter
+               1259 2974  AT-2971T Gigabit Ethernet Adapter
+               1259 2975  AT-2970SX/2SC Gigabit Ethernet Adapter
+               1259 2976  AT-2970LX/2SC Gigabit Ethernet Adapter
+               1259 2977  AT-2970TX/2TX Gigabit Ethernet Adapter
+       4320  SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter, PCI64, Fiber ZX/SC
+               1148 0121  Marvell RDK-8001 Adapter
+               1148 0221  Marvell RDK-8002 Adapter
+               1148 0321  Marvell RDK-8003 Adapter
+               1148 0421  Marvell RDK-8004 Adapter
+               1148 0621  Marvell RDK-8006 Adapter
+               1148 0721  Marvell RDK-8007 Adapter
+               1148 0821  Marvell RDK-8008 Adapter
+               1148 0921  Marvell RDK-8009 Adapter
+               1148 1121  Marvell RDK-8011 Adapter
+               1148 1221  Marvell RDK-8012 Adapter
+               1148 3221  SK-9521 V2.0 10/100/1000Base-T Adapter
+               1148 5021  SK-9821 V2.0 Gigabit Ethernet 10/100/1000Base-T Adapter
+               1148 5041  SK-9841 V2.0 Gigabit Ethernet 1000Base-LX Adapter
+               1148 5043  SK-9843 V2.0 Gigabit Ethernet 1000Base-SX Adapter
+               1148 5051  SK-9851 V2.0 Gigabit Ethernet 1000Base-SX Adapter
+               1148 5061  SK-9861 V2.0 Gigabit Ethernet 1000Base-SX Adapter
+               1148 5071  SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter
+               1148 9521  SK-9521 10/100/1000Base-T Adapter
+       4400  SK-9Dxx Gigabit Ethernet Adapter
+       4500  SK-9Mxx Gigabit Ethernet Adapter
+       9000  SK-9S21 10/100/1000Base-T Server Adapter, PCI-X, Copper RJ-45
+       9843  [Fujitsu] Gigabit Ethernet
+       9e00  SK-9E21D 10/100/1000Base-T Adapter, Copper RJ-45
+               1148 2100  SK-9E21 Server Adapter
+               1148 21d0  SK-9E21D 10/100/1000Base-T Adapter
+               1148 2200  SK-9E22 Server Adapter
+               1148 8100  SK-9E81 Server Adapter
+               1148 8200  SK-9E82 Server Adapter
+               1148 9100  SK-9E91 Server Adapter
+               1148 9200  SK-9E92 Server Adapter
+1149  Win System Corporation
+114a  VMIC
+       5579  VMIPCI-5579 (Reflective Memory Card)
+       5587  VMIPCI-5587 (Reflective Memory Card)
+       6504  VMIC PCI 7755 FPGA
+       7587  VMIVME-7587
+114b  Canopus Co., Ltd
+114c  Annabooks
+114d  IC Corporation
+114e  Nikon Systems Inc
+114f  Digi International
+       0002  AccelePort EPC
+       0003  RightSwitch SE-6
+       0004  AccelePort Xem
+       0005  AccelePort Xr
+       0006  AccelePort Xr,C/X
+       0009  AccelePort Xr/J
+       000a  AccelePort EPC/J
+       000c  DataFirePRIme T1 (1-port)
+       000d  SyncPort 2-Port (x.25/FR)
+       0011  AccelePort 8r EIA-232 (IBM)
+       0012  AccelePort 8r EIA-422
+       0013  AccelePort Xr
+       0014  AccelePort 8r EIA-422
+       0015  AccelePort Xem
+       0016  AccelePort EPC/X
+       0017  AccelePort C/X
+       001a  DataFirePRIme E1 (1-port)
+       001b  AccelePort C/X (IBM)
+       001d  DataFire RAS T1/E1/PRI
+               114f 0050  DataFire RAS E1 Adapter
+               114f 0051  DataFire RAS Dual E1 Adapter
+               114f 0052  DataFire RAS T1 Adapter
+               114f 0053  DataFire RAS Dual T1 Adapter
+       0023  AccelePort RAS
+       0024  DataFire RAS B4 ST/U
+               114f 0030  DataFire RAS BRI U Adapter
+               114f 0031  DataFire RAS BRI S/T Adapter
+       0026  AccelePort 4r 920
+       0027  AccelePort Xr 920
+       0028  ClassicBoard 4
+       0029  ClassicBoard 8
+       0034  AccelePort 2r 920
+       0035  DataFire DSP T1/E1/PRI cPCI
+       0040  AccelePort Xp
+# AccelePort Xp 2 ports
+               114f 0042  AccelePort 2p PCI
+# AccelePort Xp 4 ports
+               114f 0043  AccelePort 4p PCI
+# AccelePort Xp 8 ports
+               114f 0044  AccelePort 8p PCI
+       0042  AccelePort 2p
+       0043  AccelePort 4p
+       0044  AccelePort 8p
+       0045  AccelePort 16p
+       004e  AccelePort 32p
+       0070  Datafire Micro V IOM2 (Europe)
+       0071  Datafire Micro V (Europe)
+       0072  Datafire Micro V IOM2 (North America)
+       0073  Datafire Micro V (North America)
+       00b0  Digi Neo 4
+       00b1  Digi Neo 8
+       00c8  Digi Neo 2 DB9
+       00c9  Digi Neo 2 DB9 PRI
+       00ca  Digi Neo 2 RJ45
+       00cb  Digi Neo 2 RJ45 PRI
+       00cc  Digi Neo 1 422
+       00cd  Digi Neo 1 422 485
+       00ce  Digi Neo 2 422 485
+       00d0  ClassicBoard 4 422
+       00d1  ClassicBoard 8 422
+       6001  Avanstar
+1150  Thinking Machines Corp
+1151  JAE Electronics Inc.
+1152  Megatek
+1153  Land Win Electronic Corp
+1154  Melco Inc
+1155  Pine Technology Ltd
+1156  Periscope Engineering
+1157  Avsys Corporation
+1158  Voarx R & D Inc
+       3011  Tokenet/vg 1001/10m anylan
+       9050  Lanfleet/Truevalue
+       9051  Lanfleet/Truevalue
+1159  Mutech Corp
+       0001  MV-1000
+115a  Harlequin Ltd
+115b  Parallax Graphics
+115c  Photron Ltd.
+115d  Xircom
+       0003  Cardbus Ethernet 10/100
+               1014 0181  10/100 EtherJet Cardbus Adapter
+               1014 1181  10/100 EtherJet Cardbus Adapter
+               1014 8181  10/100 EtherJet Cardbus Adapter
+               1014 9181  10/100 EtherJet Cardbus Adapter
+               115d 0181  Cardbus Ethernet 10/100
+               115d 0182  RealPort2 CardBus Ethernet 10/100 (R2BE-100)
+               115d 1181  Cardbus Ethernet 10/100
+               1179 0181  Cardbus Ethernet 10/100
+               8086 8181  EtherExpress PRO/100 Mobile CardBus 32 Adapter
+               8086 9181  EtherExpress PRO/100 Mobile CardBus 32 Adapter
+       0005  Cardbus Ethernet 10/100
+               1014 0182  10/100 EtherJet Cardbus Adapter
+               1014 1182  10/100 EtherJet Cardbus Adapter
+               115d 0182  Cardbus Ethernet 10/100
+               115d 1182  Cardbus Ethernet 10/100
+       0007  Cardbus Ethernet 10/100
+               1014 0182  10/100 EtherJet Cardbus Adapter
+               1014 1182  10/100 EtherJet Cardbus Adapter
+               115d 0182  Cardbus Ethernet 10/100
+               115d 1182  Cardbus Ethernet 10/100
+       000b  Cardbus Ethernet 10/100
+               1014 0183  10/100 EtherJet Cardbus Adapter
+               115d 0183  Cardbus Ethernet 10/100
+       000c  Mini-PCI V.90 56k Modem
+       000f  Cardbus Ethernet 10/100
+               1014 0183  10/100 EtherJet Cardbus Adapter
+               115d 0183  Cardbus Ethernet 10/100
+       00d4  Mini-PCI K56Flex Modem
+       0101  Cardbus 56k modem
+               115d 1081  Cardbus 56k Modem
+       0103  Cardbus Ethernet + 56k Modem
+               1014 9181  Cardbus 56k Modem
+               1115 1181  Cardbus Ethernet 100 + 56k Modem
+               115d 1181  CBEM56G-100 Ethernet + 56k Modem
+               8086 9181  PRO/100 LAN + Modem56 CardBus
+115e  Peer Protocols Inc
+115f  Maxtor Corporation
+1160  Megasoft Inc
+1161  PFU Limited
+1162  OA Laboratory Co Ltd
+1163  Rendition
+       0001  Verite 1000
+       2000  Verite V2000/V2100/V2200
+               1092 2000  Stealth II S220
+1164  Advanced Peripherals Technologies
+1165  Imagraph Corporation
+       0001  Motion TPEG Recorder/Player with audio
+# nee ServerWorks
+1166  Broadcom
+       0000  CMIC-LE
+       0005  CNB20-LE Host Bridge
+       0006  CNB20HE Host Bridge
+       0007  CNB20-LE Host Bridge
+       0008  CNB20HE Host Bridge
+       0009  CNB20LE Host Bridge
+       0010  CIOB30
+       0011  CMIC-HE
+       0012  CMIC-WS Host Bridge (GC-LE chipset)
+       0013  CNB20-HE Host Bridge
+       0014  CMIC-LE Host Bridge (GC-LE chipset)
+       0015  CMIC-GC Host Bridge
+       0016  CMIC-GC Host Bridge
+       0017  GCNB-LE Host Bridge
+       0031  HT1100 HPX0 HT Host Bridge
+       0036  BCM5785 [HT1000] PCI/PCI-X Bridge
+       0101  CIOB-X2 PCI-X I/O Bridge
+       0103  EPB PCI-Express to PCI-X Bridge
+       0104  BCM5785 [HT1000] PCI/PCI-X Bridge
+       0110  CIOB-E I/O Bridge with Gigabit Ethernet
+       0130  BCM5780 [HT2000] PCI-X bridge
+       0132  BCM5780 [HT2000] PCI-Express Bridge
+               1166 0132  HT2000 PCI-Express bridge
+       0140  HT2100 PCI-Express Bridge
+       0141  HT2100 PCI-Express Bridge
+       0142  HT2100 PCI-Express Bridge
+       0144  HT2100 PCI-Express Bridge
+       0200  OSB4 South Bridge
+       0201  CSB5 South Bridge
+               4c53 1080  CT8 mainboard
+       0203  CSB6 South Bridge
+               1734 1012  Primergy RX300
+       0205  BCM5785 [HT1000] Legacy South Bridge
+       0211  OSB4 IDE Controller
+       0212  CSB5 IDE Controller
+               1028 810b  PowerEdge 2550
+               4c53 1080  CT8 mainboard
+       0213  CSB6 RAID/IDE Controller
+               1028 4134  PowerEdge 600SC
+               1028 c134  Poweredge SC600
+               1734 1012  Primergy RX300
+       0214  BCM5785 [HT1000] IDE
+       0217  CSB6 IDE Controller
+               1028 4134  Poweredge SC600
+       021b  HT1100 HD Audio
+       0220  OSB4/CSB5 OHCI USB Controller
+               4c53 1080  CT8 mainboard
+       0221  CSB6 OHCI USB Controller
+               1734 1012  Primergy RX300
+       0223  BCM5785 [HT1000] USB
+       0225  CSB5 LPC bridge
+       0227  GCLE-2 Host Bridge
+               1734 1012  Primergy RX300
+       0230  CSB5 LPC bridge
+               4c53 1080  CT8 mainboard
+       0234  BCM5785 [HT1000] LPC
+       0235  BCM5785 [HT1000] XIOAPIC0-2
+       0238  BCM5785 [HT1000] WDTimer
+       0240  K2 SATA
+       0241  RAIDCore RC4000
+       0242  RAIDCore BC4000
+       024a  BCM5785 [HT1000] SATA (Native SATA Mode)
+# The device starts as 024A, and changes to 024B if set to PATA mode in BIOS
+       024b  BCM5785 [HT1000] SATA (PATA/IDE Mode)
+       0406  HT1100 PCI-X Bridge
+       0408  HT1100 Legacy Device
+       040a  HT1100 ISA-LPC Bridge
+       0410  HT1100 SATA Controller (Native SATA Mode)
+       0411  HT1100 SATA Controller (PATA / IDE Mode)
+       0412  HT1100 USB OHCI Controller
+       0414  HT1100 USB EHCI Controller
+       0416  HT1100 USB EHCI Controller (with Debug Port)
+       0420  HT1100 PCI-Express Bridge
+       0421  HT1100 SAS/SATA Controller
+       0422  HT1100 PCI-Express Bridge
+1167  Mutoh Industries Inc
+1168  Thine Electronics Inc
+1169  Centre for Development of Advanced Computing
+116a  Polaris Communications
+       6100  Bus/Tag Channel
+       6800  Escon Channel
+       7100  Bus/Tag Channel
+       7800  Escon Channel
+116b  Connectware Inc
+116c  Intelligent Resources Integrated Systems
+116d  Martin-Marietta
+116e  Electronics for Imaging
+116f  Workstation Technology
+1170  Inventec Corporation
+1171  Loughborough Sound Images Plc
+1172  Altera Corporation
+1173  Adobe Systems, Inc
+1174  Bridgeport Machines
+1175  Mitron Computer Inc.
+1176  SBE Incorporated
+1177  Silicon Engineering
+1178  Alfa, Inc.
+       afa1  Fast Ethernet Adapter
+1179  Toshiba America Info Systems
+       0102  Extended IDE Controller
+       0103  EX-IDE Type-B
+       0404  DVD Decoder card
+       0406  Tecra Video Capture device
+       0407  DVD Decoder card (Version 2)
+       0601  CPU to PCI bridge
+               1179 0001  Satellite Pro
+       0603  ToPIC95 PCI to CardBus Bridge for Notebooks
+       060a  ToPIC95
+               1179 0001  Satellite Pro
+       060f  ToPIC97
+       0617  ToPIC100 PCI to Cardbus Bridge with ZV Support
+       0618  CPU to PCI and PCI to ISA bridge
+# Claimed to be Lucent DSP1645 [Mars], but that's apparently incorrect. Does anyone know the correct ID?
+       0701  FIR Port
+       0804  TC6371AF SmartMedia Controller
+       0805  SD TypA Controller
+       0d01  FIR Port Type-DO
+               1179 0001  FIR Port Type-DO
+117a  A-Trend Technology
+117b  L G Electronics, Inc.
+117c  Atto Technology
+       0030  Ultra320 SCSI Host Adapter
+               117c 8013  ExpressPCI UL4D
+               117c 8014  ExpressPCI UL4S
+117d  Becton & Dickinson
+117e  T/R Systems
+117f  Integrated Circuit Systems
+1180  Ricoh Co Ltd
+       0465  RL5c465
+       0466  RL5c466
+       0475  RL5c475
+               144d c006  vpr Matrix 170B4 CardBus bridge
+       0476  RL5c476 II
+               1014 0185  ThinkPad A/T/X Series
+               1028 014f  Latitude X300 laptop
+               1028 0188  Inspiron 6000 laptop
+               1043 1967  V6800V
+               1043 1987  Asus A4K and Z81K notebooks, possibly others ( mid-2005 machines )
+               104d 80df  Vaio PCG-FX403
+               104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
+               104d 814e  VAIO GRZ390Z
+               10f7 8338  Panasonic CF-Y5 laptop
+               144d c005  X10 Laptop
+               144d c00c  P30/P35 notebook
+               14ef 0220  PCD-RP-220S
+               17aa 201c  Thinkpad X60s
+       0477  RL5c477
+       0478  RL5c478
+               1014 0184  ThinkPad A30p (2653-64G)
+       0511  R5C511
+       0522  R5C522 IEEE 1394 Controller
+               1014 01cf  ThinkPad A30p (2653-64G)
+               1043 1967  V6800V
+       0551  R5C551 IEEE 1394 Controller
+               144d c006  vpr Matrix 170B4
+       0552  R5C552 IEEE 1394 Controller
+               1014 0511  ThinkPad A/T/X Series
+               1028 014f  Latitude X300 laptop
+               1028 0188  Inspiron 6000 laptop
+               144d c005  X10 Laptop
+               144d c00c  P30/P35 notebook
+               17aa 201e  Thinkpad X60s
+       0554  R5C554
+       0575  R5C575 SD Bus Host Adapter
+       0576  R5C576 SD Bus Host Adapter
+       0592  R5C592 Memory Stick Bus Host Adapter
+               103c 30b7  Presario V6133CL
+               1043 1967  V6800V
+               144d c018  X20 IV
+       0811  R5C811
+       0822  R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter
+               1014 0556  Thinkpad X40
+               1014 0598  Thinkpad Z60m
+               1028 0188  Inspiron 6000 laptop
+               1028 01a2  Inspiron 9200
+               103c 30b7  Presario V6133CL
+               1043 1967  ASUS V6800V
+               10f7 8338  Panasonic CF-Y5 laptop
+               144d c018  X20 IV
+               17aa 201d  Thinkpad X60s
+       0832  R5C832 IEEE 1394 Controller
+               103c 30b7  Presario V6133CL
+       0841  R5C841 CardBus/SD/SDIO/MMC/MS/MSPro/xD/IEEE1394
+       0843  R5C843 MMC Host Controller
+               103c 30b7  Presario V6133CL
+       0852  xD-Picture Card Controller
+               103c 30b7  Presario V6133CL
+               1043 1967  V6800V
+1181  Telmatics International
+1183  Fujikura Ltd
+1184  Forks Inc
+1185  Dataworld International Ltd
+1186  D-Link System Inc
+       0100  DC21041
+       1002  DL10050 Sundance Ethernet
+               1186 1002  DFE-550TX/FX
+               1186 1012  DFE-580TX
+       1025  AirPlus Xtreme G DWL-G650 Adapter
+       1026  AirXpert DWL-AG650 Wireless Cardbus Adapter
+       1043  AirXpert DWL-AG650 Wireless Cardbus Adapter
+       1300  RTL8139 Ethernet
+               1186 1300  DFE-538TX 10/100 Ethernet Adapter
+               1186 1301  DFE-530TX+ 10/100 Ethernet Adapter
+               1186 1303  DFE-528TX 10/100 Fast Ethernet PCI Adapter
+       1340  DFE-690TXD CardBus PC Card
+       1405  DFE-520TX Fast Ethernet PCI Adapter
+       1541  DFE-680TXD CardBus PC Card
+       1561  DRP-32TXD Cardbus PC Card
+       2027  AirPlus Xtreme G DWL-G520 Adapter
+       3203  AirPlus Xtreme G DWL-G520 Adapter
+       3300  DWL-510 2.4GHz Wireless PCI Adapter
+       3a03  AirPro DWL-A650 Wireless Cardbus Adapter(rev.B)
+       3a04  AirPro DWL-AB650 Multimode Wireless Cardbus Adapter
+       3a05  AirPro DWL-AB520 Multimode Wireless PCI Adapter
+       3a07  AirXpert DWL-AG650 Wireless Cardbus Adapter
+       3a08  AirXpert DWL-AG520 Wireless PCI Adapter
+       3a10  AirXpert DWL-AG650 Wireless Cardbus Adapter(rev.B)
+       3a11  AirXpert DWL-AG520 Wireless PCI Adapter(rev.B)
+       3a12  AirPlus DWL-G650 Wireless Cardbus Adapter(rev.C)
+       3a13  AirPlus DWL-G520 Wireless PCI Adapter(rev.B)
+       3a14  AirPremier DWL-AG530 Wireless PCI Adapter
+       3a63  AirXpert DWL-AG660 Wireless Cardbus Adapter
+       3c00  D-link DWL-G650X
+       4000  DL2000-based Gigabit Ethernet
+       4001  DGE-550SX PCI-X Gigabit Ethernet Adapter
+       4300  DGE-528T Gigabit Ethernet Adapter
+# There are at least 3 revisions of this adapter; 4800 is board revision A1 as far as I can tell, revision B1 is 4c00.
+       4800  DGE-530T Gigabit Ethernet Adapter (rev 11)
+       4b00  DGE-560T PCI Express Gigabit Ethernet Adapter
+       4b01  DGE-530T Gigabit Ethernet Adapter (rev 11)
+       4b02  DGE-560SX PCI Express Gigabit Ethernet Adapter
+       4b03  DGE-550T Gigabit Ethernet Adapter V.B1
+       4c00  Gigabit Ethernet Adapter
+               1186 4c00  DGE-530T Gigabit Ethernet Adapter
+       8400  D-Link DWL-650+ CardBus PC Card
+1187  Advanced Technology Laboratories, Inc.
+1188  Shima Seiki Manufacturing Ltd.
+1189  Matsushita Electronics Co Ltd
+118a  Hilevel Technology
+118b  Hypertec Pty Limited
+118c  Corollary, Inc
+       0014  PCIB [C-bus II to PCI bus host bridge chip]
+       1117  Intel 8-way XEON Profusion Chipset [Cache Coherency Filter]
+118d  BitFlow Inc
+       0001  Raptor-PCI framegrabber
+       0012  Model 12 Road Runner Frame Grabber
+       0014  Model 14 Road Runner Frame Grabber
+       0024  Model 24 Road Runner Frame Grabber
+       0044  Model 44 Road Runner Frame Grabber
+       0112  Model 12 Road Runner Frame Grabber
+       0114  Model 14 Road Runner Frame Grabber
+       0124  Model 24 Road Runner Frame Grabber
+       0144  Model 44 Road Runner Frame Grabber
+       0212  Model 12 Road Runner Frame Grabber
+       0214  Model 14 Road Runner Frame Grabber
+       0224  Model 24 Road Runner Frame Grabber
+       0244  Model 44 Road Runner Frame Grabber
+       0312  Model 12 Road Runner Frame Grabber
+       0314  Model 14 Road Runner Frame Grabber
+       0324  Model 24 Road Runner Frame Grabber
+       0344  Model 44 Road Runner Frame Grabber
+118e  Hermstedt GmbH
+118f  Green Logic
+1190  Tripace
+       c731  TP-910/920/940 PCI Ultra(Wide) SCSI Adapter
+1191  Artop Electronic Corp
+       0003  SCSI Cache Host Adapter
+       0004  ATP8400
+       0005  ATP850UF
+       0006  ATP860 NO-BIOS
+       0007  ATP860
+       0008  ATP865 NO-ROM
+       0009  ATP865
+       8002  AEC6710 SCSI-2 Host Adapter
+       8010  AEC6712UW SCSI
+       8020  AEC6712U SCSI
+       8030  AEC6712S SCSI
+       8040  AEC6712D SCSI
+       8050  AEC6712SUW SCSI
+       8060  AEC6712 SCSI
+       8080  AEC67160 SCSI
+       8081  AEC67160S SCSI
+       808a  AEC67162 2-ch. LVD SCSI
+1192  Densan Company Ltd
+1193  Zeitnet Inc.
+       0001  1221
+       0002  1225
+1194  Toucan Technology
+1195  Ratoc System Inc
+1196  Hytec Electronics Ltd
+1197  Gage Applied Sciences, Inc.
+       010c  CompuScope 82G 8bit 2GS/s Analog Input Card
+1198  Lambda Systems Inc
+1199  Attachmate Corporation
+119a  Mind Share, Inc.
+119b  Omega Micro Inc.
+       1221  82C092G
+119c  Information Technology Inst.
+119d  Bug, Inc. Sapporo Japan
+119e  Fujitsu Microelectronics Ltd.
+       0001  FireStream 155
+       0003  FireStream 50
+119f  Bull HN Information Systems
+11a0  Convex Computer Corporation
+11a1  Hamamatsu Photonics K.K.
+11a2  Sierra Research and Technology
+11a3  Deuretzbacher GmbH & Co. Eng. KG
+11a4  Barco Graphics NV
+11a5  Microunity Systems Eng. Inc
+11a6  Pure Data Ltd.
+11a7  Power Computing Corp.
+11a8  Systech Corp.
+11a9  InnoSys Inc.
+       4240  AMCC S933Q Intelligent Serial Card
+11aa  Actel
+# Nee Galileo Technology, Inc.
+11ab  Marvell Technology Group Ltd.
+       0146  GT-64010/64010A System Controller
+       0f53  88E6318 Link Street network controller
+       11ab  MV88SE614x SATA II PCI-E controller
+       138f  W8300 802.11 Adapter (rev 07)
+       1fa6  Marvell W8300 802.11 Adapter
+       1fa7  88W8310 and 88W8000G [Libertas] 802.11g client chipset
+       1faa  88w8335 [Libertas] 802.11b/g Wireless
+               1385 4e00  WG511v2 54 Mbps Wireless PC Card
+               1385 6b00  WG311v3 802.11g Wireless PCI Adapter
+       2a01  88W8335 [Libertas] 802.11b/g Wireless
+       2a02  88W8361 [TopDog] 802.11n Wireless
+       4101  OLPC Cafe Controller Secure Digital Controller
+       4320  88E8001 Gigabit Ethernet Controller
+               1019 0f38  Marvell 88E8001 Gigabit Ethernet Controller (ECS)
+               1019 8001  Marvell 88E8001 Gigabit Ethernet Controller (ECS)
+               1043 173c  Marvell 88E8001 Gigabit Ethernet Controller (Asus)
+               1043 811a  Marvell 88E8001 Gigabit Ethernet Controller (Asus)
+               105b 0c19  Marvell 88E8001 Gigabit Ethernet Controller (Foxconn)
+               10b8 b452  EZ Card 1000 (SMC9452TXV.2)
+               11ab 0121  Marvell RDK-8001
+               11ab 0321  Marvell RDK-8003
+               11ab 1021  Marvell RDK-8010
+               11ab 4320  Marvell Yukon Gigabit Ethernet 10/100/1000Baset-T Constroller (Asus)
+               11ab 5021  Marvell Yukon Gigabit Ethernet 10/100/1000Base-T Controller (64 bit)
+               11ab 9521  Marvell Yukon Gigabit Ethernet 10/100/1000Base-T Controller (32 bit)
+               1458 e000  Marvell 88E8001 Gigabit Ethernet Controller (Gigabyte)
+               147b 1406  Marvell 88E8001 Gigabit Ethernet Controller (Abit)
+               15d4 0047  Marvell 88E8001 Gigabit Ethernet Controller (Iwill)
+               1695 9025  Marvell 88E8001 Gigabit Ethernet Controller (Epox)
+               17f2 1c03  Marvell 88E8001 Gigabit Ethernet Controller (Albatron)
+               270f 2803  Marvell 88E8001 Gigabit Ethernet Controller (Chaintech)
+       4340  88E8021 PCI-X IPMI Gigabit Ethernet Controller
+       4341  88E8022 PCI-X IPMI Gigabit Ethernet Controller
+       4342  88E8061 PCI-E IPMI Gigabit Ethernet Controller
+       4343  88E8062 PCI-E IPMI Gigabit Ethernet Controller
+       4344  88E8021 PCI-X IPMI Gigabit Ethernet Controller
+       4345  88E8022 PCI-X IPMI Gigabit Ethernet Controller
+       4346  88E8061 PCI-E IPMI Gigabit Ethernet Controller
+       4347  88E8062 PCI-E IPMI Gigabit Ethernet Controller
+               4c53 10d0  Telum ASLP10 PrAMC Gigabit Ethernet
+       4350  88E8035 PCI-E Fast Ethernet Controller
+               1179 0001  Marvell 88E8035 Fast Ethernet Controller (Toshiba)
+               11ab 3521  Marvell RDK-8035
+               1854 000d  Marvell 88E8035 Fast Ethernet Controller (LGE)
+               1854 000e  Marvell 88E8035 Fast Ethernet Controller (LGE)
+               1854 000f  Marvell 88E8035 Fast Ethernet Controller (LGE)
+               1854 0011  Marvell 88E8035 Fast Ethernet Controller (LGE)
+               1854 0012  Marvell 88E8035 Fast Ethernet Controller (LGE)
+               1854 0016  Marvell 88E8035 Fast Ethernet Controller (LGE)
+               1854 0017  Marvell 88E8035 Fast Ethernet Controller (LGE)
+               1854 0018  Marvell 88E8035 Fast Ethernet Controller (LGE)
+               1854 0019  Marvell 88E8035 Fast Ethernet Controller (LGE)
+               1854 001c  Marvell 88E8035 Fast Ethernet Controller (LGE)
+               1854 001e  Marvell 88E8035 Fast Ethernet Controller (LGE)
+               1854 0020  Marvell 88E8035 Fast Ethernet Controller (LGE)
+       4351  88E8036 PCI-E Fast Ethernet Controller
+               107b 4009  Marvell 88E8036 Fast Ethernet Controller (Wistron)
+               10f7 8338  Marvell 88E8036 Fast Ethernet Controller (Panasonic)
+               1179 0001  Marvell 88E8036 Fast Ethernet Controller (Toshiba)
+               1179 ff00  Marvell 88E8036 Fast Ethernet Controller (Compal)
+               1179 ff10  Marvell 88E8036 Fast Ethernet Controller (Inventec)
+               11ab 3621  Marvell RDK-8036
+               13d1 ac12  Abocom EFE3K - 10/100 Ethernet Expresscard
+               161f 203d  Marvell 88E8036 Fast Ethernet Controller (Arima)
+               1854 000d  Marvell 88E8036 Fast Ethernet Controller (LGE)
+               1854 000e  Marvell 88E8036 Fast Ethernet Controller (LGE)
+               1854 000f  Marvell 88E8036 Fast Ethernet Controller (LGE)
+               1854 0011  Marvell 88E8036 Fast Ethernet Controller (LGE)
+               1854 0012  Marvell 88E8036 Fast Ethernet Controller (LGE)
+               1854 0016  Marvell 88E8036 Fast Ethernet Controller (LGE)
+               1854 0017  Marvell 88E8036 Fast Ethernet Controller (LGE)
+               1854 0018  Marvell 88E8036 Fast Ethernet Controller (LGE)
+               1854 0019  Marvell 88E8036 Fast Ethernet Controller (LGE)
+               1854 001c  Marvell 88E8036 Fast Ethernet Controller (LGE)
+               1854 001e  Marvell 88E8036 Fast Ethernet Controller (LGE)
+               1854 0020  Marvell 88E8036 Fast Ethernet Controller (LGE)
+       4352  88E8038 PCI-E Fast Ethernet Controller
+       4353  88E8039 PCI-E Fast Ethernet Controller
+       4354  88E8040 PCI-E Fast Ethernet Controller
+       4356  88EC033 Ethernet Controller
+       435a  88E8048 PCI-E Fast Ethernet Controller
+       4360  88E8052 PCI-E ASF Gigabit Ethernet Controller
+               1043 8134  Marvell 88E8052 Gigabit Ethernet Controller (Asus)
+               107b 4009  Marvell 88E8052 Gigabit Ethernet Controller (Wistron)
+               11ab 5221  Marvell RDK-8052
+               1458 e000  Marvell 88E8052 Gigabit Ethernet Controller (Gigabyte)
+               1462 052c  Marvell 88E8052 Gigabit Ethernet Controller (MSI)
+               1849 8052  Marvell 88E8052 Gigabit Ethernet Controller (ASRock)
+               a0a0 0509  Marvell 88E8052 Gigabit Ethernet Controller (Aopen)
+       4361  88E8050 PCI-E ASF Gigabit Ethernet Controller
+               107b 3015  Marvell 88E8050 Gigabit Ethernet Controller (Gateway)
+               11ab 5021  Marvell 88E8050 Gigabit Ethernet Controller (Intel)
+               8086 3063  D925XCVLK mainboard
+               8086 3439  Marvell 88E8050 Gigabit Ethernet Controller (Intel)
+       4362  88E8053 PCI-E Gigabit Ethernet Controller
+               103c 2a0d  Marvell 88E8053 Gigabit Ethernet Controller (Asus)
+               1043 8142  Marvell 88E8053 Gigabit Ethernet controller PCIe (Asus)
+               109f 3197  Marvell 88E8053 Gigabit Ethernet Controller (Trigem)
+               10f7 8338  Marvell 88E8053 Gigabit Ethernet Controller (Panasonic)
+               10fd a430  Marvell 88E8053 Gigabit Ethernet Controller (SOYO)
+               1179 0001  Marvell 88E8053 Gigabit Ethernet Controller (Toshiba)
+               1179 ff00  Marvell 88E8053 Gigabit Ethernet Controller (Compal)
+               1179 ff10  Marvell 88E8053 Gigabit Ethernet Controller (Inventec)
+               11ab 5321  Marvell RDK-8053
+               1297 c240  Marvell 88E8053 Gigabit Ethernet Controller (Shuttle)
+               1297 c241  Marvell 88E8053 Gigabit Ethernet Controller (Shuttle)
+               1297 c242  Marvell 88E8053 Gigabit Ethernet Controller (Shuttle)
+               1297 c243  Marvell 88E8053 Gigabit Ethernet Controller (Shuttle)
+               1297 c244  Marvell 88E8053 Gigabit Ethernet Controller (Shuttle)
+               13d1 ac11  EGE5K - Giga Ethernet Expresscard
+               1458 e000  Marvell 88E8053 Gigabit Ethernet Controller (Gigabyte)
+               1462 058c  Marvell 88E8053 Gigabit Ethernet Controller (MSI)
+               14c0 0012  Marvell 88E8053 Gigabit Ethernet Controller (Compal)
+               1558 04a0  Marvell 88E8053 Gigabit Ethernet Controller (Clevo)
+               15bd 1003  Marvell 88E8053 Gigabit Ethernet Controller (DFI)
+               161f 203c  Marvell 88E8053 Gigabit Ethernet Controller (Arima)
+               161f 203d  Marvell 88E8053 Gigabit Ethernet Controller (Arima)
+               1695 9029  Marvell 88E8053 Gigabit Ethernet Controller (Epox)
+               17f2 2c08  Marvell 88E8053 Gigabit Ethernet Controller (Albatron)
+               17ff 0585  Marvell 88E8053 Gigabit Ethernet Controller (Quanta)
+               1849 8053  Marvell 88E8053 Gigabit Ethernet Controller (ASRock)
+               1854 000b  Marvell 88E8053 Gigabit Ethernet Controller (LGE)
+               1854 000c  Marvell 88E8053 Gigabit Ethernet Controller (LGE)
+               1854 0010  Marvell 88E8053 Gigabit Ethernet Controller (LGE)
+               1854 0013  Marvell 88E8053 Gigabit Ethernet Controller (LGE)
+               1854 0014  Marvell 88E8053 Gigabit Ethernet Controller (LGE)
+               1854 0015  Marvell 88E8053 Gigabit Ethernet Controller (LGE)
+               1854 001a  Marvell 88E8053 Gigabit Ethernet Controller (LGE)
+               1854 001b  Marvell 88E8053 Gigabit Ethernet Controller (LGE)
+               1854 001d  Marvell 88E8053 Gigabit Ethernet Controller (LGE)
+               1854 001f  Marvell 88E8053 Gigabit Ethernet Controller (LGE)
+               1854 0021  Marvell 88E8053 Gigabit Ethernet Controller (LGE)
+               1854 0022  Marvell 88E8053 Gigabit Ethernet Controller (LGE)
+               270f 2801  Marvell 88E8053 Gigabit Ethernet Controller (Chaintech)
+               a0a0 0506  Marvell 88E8053 Gigabit Ethernet Controller (Aopen)
+       4363  88E8055 PCI-E Gigabit Ethernet Controller
+       4364  88E8056 PCI-E Gigabit Ethernet Controller
+       4365  88E8070 based Ethernet Controller
+       4366  88EC036 PCI-E Gigabit Ethernet Controller
+       4367  88EC032 Ethernet Controller
+       4368  88EC034 Ethernet Controller
+       4369  88EC042 Ethernet Controller
+       436a  Marvell Yukon 88E8058 PCI-E Gigabit Ethernet Controller
+       436b  88E8071 PCI-E Gigabit Ethernet Controller
+       4611  GT-64115 System Controller
+       4620  GT-64120/64120A/64121A System Controller
+       4801  GT-48001
+       5005  Belkin F5D5005 Gigabit Desktop Network PCI Card
+       5040  MV88SX5040 4-port SATA I PCI-X Controller
+       5041  MV88SX5041 4-port SATA I PCI-X Controller
+       5080  MV88SX5080 8-port SATA I PCI-X Controller
+       5081  MV88SX5081 8-port SATA I PCI-X Controller
+       6041  MV88SX6041 4-port SATA II PCI-X Controller
+       6042  88SX6042 PCI-X 4-Port SATA-II
+       6081  MV88SX6081 8-port SATA II PCI-X Controller
+       6101  88SE6101 single-port PATA133 interface
+       6121  88SE6121 SATA II Controller
+       6141  88SE614x SATA II PCI-E controller
+       6145  88SE6145 SATA II PCI-E controller
+       6450  64560 System Controller
+       6460  MV64360/64361/64362 System Controller
+       6480  MV64460/64461/64462 System Controller
+               1775 c200  C2K CompactPCI single board computer
+       6485  MV64460/64461/64462 System Controller, Revision B
+       7042  88SX7042 PCI-e 4-port SATA-II
+       f003  GT-64010 Primary Image Piranha Image Generator
+11ac  Canon Information Systems Research Aust.
+11ad  Lite-On Communications Inc
+       0002  LNE100TX
+               11ad 0002  LNE100TX
+               11ad 0003  LNE100TX
+               11ad f003  LNE100TX
+               11ad ffff  LNE100TX
+               1385 f004  FA310TX
+       c115  LNE100TX [Linksys EtherFast 10/100]
+               11ad c001  LNE100TX [ver 2.0]
+11ae  Aztech System Ltd
+11af  Avid Technology Inc.
+       0001  Cinema
+       ee40  Digidesign Audiomedia III
+11b0  V3 Semiconductor Inc.
+       0002  V300PSC
+       0292  V292PBC [Am29030/40 Bridge]
+       0960  V96xPBC
+       c960  V96DPC
+11b1  Apricot Computers
+11b2  Eastman Kodak
+11b3  Barr Systems Inc.
+11b4  Leitch Technology International
+11b5  Radstone Technology Plc
+11b6  United Video Corp
+11b7  Motorola
+11b8  XPoint Technologies, Inc
+       0001  Quad PeerMaster
+11b9  Pathlight Technology Inc.
+       c0ed  SSA Controller
+11ba  Videotron Corp
+11bb  Pyramid Technology
+11bc  Network Peripherals Inc
+       0001  NP-PCI
+11bd  Pinnacle Systems Inc.
+       002e  PCTV 40i
+       0040  Royal TS Function 1
+               11bd 0044  PCTV 2000i Dual DVB-T Pro PCI Tuner 1
+       0041  RoyalTS Function 2
+               11bd 0044  PCTV 2000i Dual DVB-T Pro PCI Tuner 2
+       0042  Royal TS Function 3
+               11bd 0044  PCTV 2000i Dual DVB-T Pro PCI Common
+       bede  AV/DV Studio Capture Card
+11be  International Microcircuits Inc
+11bf  Astrodesign, Inc.
+11c0  Hewlett Packard
+# Nee Lucent Microelectronics
+11c1  Agere Systems
+       0440  56k WinModem
+               1033 8015  LT WinModem 56k Data+Fax+Voice+Dsvd
+               1033 8047  LT WinModem 56k Data+Fax+Voice+Dsvd
+               1033 804f  LT WinModem 56k Data+Fax+Voice+Dsvd
+               10cf 102c  LB LT Modem V.90 56k
+               10cf 104a  BIBLO LT Modem 56k
+               10cf 105f  LB2 LT Modem V.90 56k
+               1179 0001  Internal V.90 Modem
+               11c1 0440  LT WinModem 56k Data+Fax+Voice+Dsvd
+               122d 4101  MDP7800-U Modem
+               122d 4102  MDP7800SP-U Modem
+               13e0 0040  LT WinModem 56k Data+Fax+Voice+Dsvd
+               13e0 0440  LT WinModem 56k Data+Fax+Voice+Dsvd
+               13e0 0441  LT WinModem 56k Data+Fax+Voice+Dsvd
+               13e0 0450  LT WinModem 56k Data+Fax+Voice+Dsvd
+               13e0 f100  LT WinModem 56k Data+Fax+Voice+Dsvd
+               13e0 f101  LT WinModem 56k Data+Fax+Voice+Dsvd
+               144d 2101  LT56PV Modem
+               149f 0440  LT WinModem 56k Data+Fax+Voice+Dsvd
+       0441  56k WinModem
+               1033 804d  LT WinModem 56k Data+Fax
+               1033 8065  LT WinModem 56k Data+Fax
+               1092 0440  Supra 56i
+               1179 0001  Internal V.90 Modem
+               11c1 0440  LT WinModem 56k Data+Fax
+               11c1 0441  LT WinModem 56k Data+Fax
+               122d 4100  MDP7800-U Modem
+               13e0 0040  LT WinModem 56k Data+Fax
+               13e0 0100  LT WinModem 56k Data+Fax
+               13e0 0410  LT WinModem 56k Data+Fax
+               13e0 0420  TelePath Internet 56k WinModem
+               13e0 0440  LT WinModem 56k Data+Fax
+               13e0 0443  LT WinModem 56k Data+Fax
+               13e0 f102  LT WinModem 56k Data+Fax
+               1416 9804  CommWave 56k Modem
+               141d 0440  LT WinModem 56k Data+Fax
+               144f 0441  Lucent 56k V.90 DF Modem
+               144f 0449  Lucent 56k V.90 DF Modem
+               144f 110d  Lucent Win Modem
+               1468 0441  Presario 56k V.90 DF Modem
+               1668 0440  Lucent Win Modem
+       0442  56k WinModem
+               11c1 0440  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd
+               11c1 0442  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd
+               13e0 0412  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd
+               13e0 0442  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd
+               13fc 2471  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd
+               144d 2104  LT56PT Modem
+               144f 1104  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd
+               149f 0440  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd
+               1668 0440  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd
+       0443  LT WinModem
+       0444  LT WinModem
+       0445  LT WinModem
+               8086 2203  PRO/100+ MiniPCI (probably an Ambit U98.003.C.00 combo card)
+               8086 2204  PRO/100+ MiniPCI on Armada E500
+       0446  LT WinModem
+       0447  LT WinModem
+       0448  WinModem 56k
+               1014 0131  Lucent Win Modem
+               1033 8066  LT WinModem 56k Data+Fax+Voice+Dsvd
+               13e0 0030  56k Voice Modem
+               13e0 0040  LT WinModem 56k Data+Fax+Voice+Dsvd
+# Actiontech eth+modem card as used by Dell &c.
+               1668 2400  LT WinModem 56k (MiniPCI Ethernet+Modem)
+       0449  WinModem 56k
+               0e11 b14d  56k V.90 Modem
+               13e0 0020  LT WinModem 56k Data+Fax
+               13e0 0041  TelePath Internet 56k WinModem
+               1436 0440  Lucent Win Modem
+               144f 0449  Lucent 56k V.90 DFi Modem
+               1468 0410  IBM ThinkPad T23 (2647-4MG)
+               1468 0440  Lucent Win Modem
+               1468 0449  Presario 56k V.90 DFi Modem
+       044a  F-1156IV WinModem (V90, 56KFlex)
+               10cf 1072  LB Global LT Modem
+               13e0 0012  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd
+               13e0 0042  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd
+               144f 1005  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd
+       044b  LT WinModem
+       044c  LT WinModem
+       044d  LT WinModem
+       044e  LT WinModem
+       044f  V90 WildWire Modem
+       0450  LT WinModem
+               1033 80a8  Versa Note Vxi
+               144f 4005  Magnia SG20
+               1468 0450  Evo N600c
+       0451  LT WinModem
+       0452  LT WinModem
+       0453  LT WinModem
+       0454  LT WinModem
+       0455  LT WinModem
+       0456  LT WinModem
+       0457  LT WinModem
+       0458  LT WinModem
+       0459  LT WinModem
+       045a  LT WinModem
+       045c  LT WinModem
+       0461  V90 WildWire Modem
+       0462  V90 WildWire Modem
+       0480  Venus Modem (V90, 56KFlex)
+       048c  V.92 56K WinModem
+# InPorte Home Internal 56k Modem/fax/answering machine/SMS Features
+       048f  V.92 56k WinModem
+       1040  HDA softmodem
+       2600  StarPro26XX family (SP2601, SP2603, SP2612) DSP
+       5801  USB
+       5802  USS-312 USB Controller
+       5803  USS-344S USB Controller
+       5811  FW323
+               8086 524c  D865PERL mainboard
+               dead 0800  FireWire Host Bus Adapter
+       8110  T8110 H.100/H.110 TDM switch
+               12d9 000c  E1/T1 PMXc cPCI carrier card
+       ab10  WL60010 Wireless LAN MAC
+       ab11  WL60040 Multimode Wireles LAN MAC
+               11c1 ab12  WaveLAN 11abg Cardbus card (Model 1102)
+               11c1 ab13  WaveLAN 11abg MiniPCI card (Model 0512)
+               11c1 ab15  WaveLAN 11abg Cardbus card (Model 1106)
+               11c1 ab16  WaveLAN 11abg MiniPCI card (Model 0516)
+       ab20  ORiNOCO PCI Adapter
+       ab21  Agere Wireless PCI Adapter
+       ab30  Hermes2 Mini-PCI WaveLAN a/b/g
+               14cd 2012  Hermes2 Mini-PCI WaveLAN a/b/g
+       ed00  ET-131x PCI-E Ethernet Controller
+       ed01  ET-131x PCI-E Ethernet Controller
+11c2  Sand Microelectronics
+11c3  NEC Corporation
+11c4  Document Technologies, Inc
+11c5  Shiva Corporation
+11c6  Dainippon Screen Mfg. Co. Ltd
+11c7  D.C.M. Data Systems
+11c8  Dolphin Interconnect Solutions AS
+       0658  PSB32 SCI-Adapter D31x
+       d665  PSB64 SCI-Adapter D32x
+       d667  PSB66 SCI-Adapter D33x
+11c9  Magma
+       0010  16-line serial port w/- DMA
+       0011  4-line serial port w/- DMA
+11ca  LSI Systems, Inc
+11cb  Specialix Research Ltd.
+       2000  PCI_9050
+               11cb 0200  SX
+               11cb b008  I/O8+
+       4000  SUPI_1
+       8000  T225
+11cc  Michels & Kleberhoff Computer GmbH
+11cd  HAL Computer Systems, Inc.
+11ce  Netaccess
+11cf  Pioneer Electronic Corporation
+11d0  Lockheed Martin Federal Systems-Manassas
+11d1  Auravision
+       01f7  VxP524
+11d2  Intercom Inc.
+11d3  Trancell Systems Inc
+11d4  Analog Devices
+       0078  AD1986HD sound chip
+       1535  Blackfin BF535 processor
+       1805  SM56 PCI modem
+       1889  AD1889 sound chip
+       1981  AD1981HD sound chip
+       1983  AD1983HD sound chip
+       1986  AD1986A sound chip
+               11d4 1986  Lenovo N100 B9G
+       198b  AD1988B Sound Chip
+       5340  AD1881 sound chip
+11d5  Ikon Corporation
+       0115  10115
+       0117  10117
+11d6  Tekelec Telecom
+11d7  Trenton Technology, Inc.
+11d8  Image Technologies Development
+11d9  TEC Corporation
+11da  Novell
+11db  Sega Enterprises Ltd
+11dc  Questra Corporation
+11dd  Crosfield Electronics Limited
+11de  Zoran Corporation
+       6057  ZR36057PQC Video cutting chipset
+               1031 7efe  DC10 Plus
+               1031 fc00  MiroVIDEO DC50, Motion JPEG Capture/CODEC Board
+               12f8 8a02  Tekram Video Kit
+               13ca 4231  JPEG/TV Card
+       6120  ZR36120
+               1328 f001  Cinemaster C DVD Decoder
+               13c2 0000  MediaFocus Satellite TV Card
+               1de1 9fff  Video Kit C210
+11df  New Wave PDG
+11e0  Cray Communications A/S
+11e1  GEC Plessey Semi Inc.
+11e2  Samsung Information Systems America
+11e3  Quicklogic Corporation
+       0001  COM-ON-AIR Dosch&Amand DECT
+       5030  PC Watchdog
+11e4  Second Wave Inc
+11e5  IIX Consulting
+11e6  Mitsui-Zosen System Research
+11e7  Toshiba America, Elec. Company
+11e8  Digital Processing Systems Inc.
+11e9  Highwater Designs Ltd.
+11ea  Elsag Bailey
+11eb  Formation Inc.
+11ec  Coreco Inc
+11ed  Mediamatics
+11ee  Dome Imaging Systems Inc
+11ef  Nicolet Technologies B.V.
+11f0  Compu-Shack
+       4231  FDDI
+       4232  FASTline UTP Quattro
+       4233  FASTline FO
+       4234  FASTline UTP
+       4235  FASTline-II UTP
+       4236  FASTline-II FO
+       4731  GIGAline
+11f1  Symbios Logic Inc
+11f2  Picture Tel Japan K.K.
+11f3  Keithley Metrabyte
+11f4  Kinetic Systems Corporation
+       2915  CAMAC controller
+11f5  Computing Devices International
+11f6  Compex
+       0112  ENet100VG4
+       0113  FreedomLine 100
+       1401  ReadyLink 2000
+       2011  RL100-ATX 10/100
+               11f6 2011  RL100-ATX
+       2201  ReadyLink 100TX (Winbond W89C840)
+               11f6 2011  ReadyLink 100TX
+       9881  RL100TX Fast Ethernet
+11f7  Scientific Atlanta
+11f8  PMC-Sierra Inc.
+       7364  PM7364 [FREEDM - 32 Frame Engine & Datalink Mgr]
+       7375  PM7375 [LASAR-155 ATM SAR]
+       7384  PM7384 [FREEDM - 84P672 Frm Engine & Datalink Mgr]
+       8000  PM8000  [SPC - SAS Protocol Controller]
+11f9  I-Cube Inc
+11fa  Kasan Electronics Company, Ltd.
+11fb  Datel Inc
+11fc  Silicon Magic
+11fd  High Street Consultants
+11fe  Comtrol Corporation
+       0001  RocketPort 32 port w/external I/F
+       0002  RocketPort 8 port w/external I/F
+       0003  RocketPort 16 port w/external I/F
+       0004  RocketPort 4 port w/quad cable
+       0005  RocketPort 8 port w/octa cable
+       0006  RocketPort 8 port w/RJ11 connectors
+       0007  RocketPort 4 port w/RJ11 connectors
+       0008  RocketPort 8 port w/ DB78 SNI (Siemens) connector
+       0009  RocketPort 16 port w/ DB78 SNI (Siemens) connector
+       000a  RocketPort Plus 4 port
+       000b  RocketPort Plus 8 port
+       000c  RocketModem 6 port
+       000d  RocketModem 4-port
+       000e  RocketPort Plus 2 port RS232
+       000f  RocketPort Plus 2 port RS422
+       0040  RocketPort Infinity Octa, 8port, RJ45
+       0041  RocketPort Infinity 32port, External Interface
+       0042  RocketPort Infinity 8port, External Interface
+       0043  RocketPort Infinity 16port, External Interface
+       0044  RocketPort Infinity Quad, 4port, DB
+       0045  RocketPort Infinity Octa, 8port, DB
+       0047  RocketPort Infinity 4port, RJ45
+       004f  RocketPort Infinity 2port, SMPTE
+       0052  RocketPort Infinity Octa, 8port, SMPTE
+       0801  RocketPort UPCI 32 port w/external I/F
+       0802  RocketPort UPCI 8 port w/external I/F
+       0803  RocketPort UPCI 16 port w/external I/F
+       0805  RocketPort UPCI 8 port w/octa cable
+       080c  RocketModem III 8 port
+       080d  RocketModem III 4 port
+       0812  RocketPort UPCI Plus 8 port RS422
+       0903  RocketPort Compact PCI 16 port w/external I/F
+       8015  RocketPort 4-port UART 16954
+11ff  Scion Corporation
+       0003  AG-5
+1200  CSS Corporation
+1201  Vista Controls Corp
+1202  Network General Corp.
+       4300  Gigabit Ethernet Adapter
+               1202 9841  SK-9841 LX
+               1202 9842  SK-9841 LX dual link
+               1202 9843  SK-9843 SX
+               1202 9844  SK-9843 SX dual link
+1203  Bayer Corporation, Agfa Division
+1204  Lattice Semiconductor Corporation
+1205  Array Corporation
+1206  Amdahl Corporation
+1208  Parsytec GmbH
+       4853  HS-Link Device
+1209  SCI Systems Inc
+120a  Synaptel
+120b  Adaptive Solutions
+120c  Technical Corp.
+120d  Compression Labs, Inc.
+120e  Cyclades Corporation
+       0100  Cyclom-Y below first megabyte
+       0101  Cyclom-Y above first megabyte
+       0102  Cyclom-4Y below first megabyte
+       0103  Cyclom-4Y above first megabyte
+       0104  Cyclom-8Y below first megabyte
+       0105  Cyclom-8Y above first megabyte
+       0200  Cyclades-Z below first megabyte
+       0201  Cyclades-Z above first megabyte
+       0300  PC300/RSV or /X21 (2 ports)
+       0301  PC300/RSV or /X21 (1 port)
+       0310  PC300/TE (2 ports)
+       0311  PC300/TE (1 port)
+       0320  PC300/TE-M (2 ports)
+       0321  PC300/TE-M (1 port)
+       0400  PC400
+120f  Essential Communications
+       0001  Roadrunner serial HIPPI
+1210  Hyperparallel Technologies
+1211  Braintech Inc
+1212  Kingston Technology Corp.
+1213  Applied Intelligent Systems, Inc.
+1214  Performance Technologies, Inc.
+1215  Interware Co., Ltd
+1216  Purup Prepress A/S
+1217  O2 Micro, Inc.
+       00f7  Firewire (IEEE 1394)
+       6729  OZ6729
+       673a  OZ6730
+       6832  OZ6832/6833 CardBus Controller
+       6836  OZ6836/6860 CardBus Controller
+       6872  OZ6812 CardBus Controller
+       6925  OZ6922 CardBus Controller
+       6933  OZ6933/711E1 CardBus/SmartCardBus Controller
+               1025 1016  Travelmate 612 TX
+       6972  OZ601/6912/711E0 CardBus/SmartCardBus Controller
+               1014 020c  ThinkPad R30
+               1179 0001  Magnia Z310
+       7110  OZ711Mx 4-in-1 MemoryCardBus Accelerator
+               103c 088c  NC8000 laptop
+               103c 0890  NC6000 laptop
+               1734 106c  Amilo A1645
+       7112  OZ711EC1/M1 SmartCardBus/MemoryCardBus Controller
+       7113  OZ711EC1 SmartCardBus Controller
+       7114  OZ711M1/MC1 4-in-1 MemoryCardBus Controller
+       7120  Integrated MMC/SD Controller
+       7130  Integrated MS/xD Controller
+       7134  OZ711MP1/MS1 MemoryCardBus Controller
+       7135  Cardbus bridge
+       7136  OZ711SP1 Memory CardBus Controller
+       71e2  OZ711E2 SmartCardBus Controller
+       7212  OZ711M2 4-in-1 MemoryCardBus Controller
+       7213  OZ6933E CardBus Controller
+       7223  OZ711M3/MC3 4-in-1 MemoryCardBus Controller
+               103c 088c  NC8000 laptop
+               103c 0890  NC6000 laptop
+               10cf 11c4  Lifebook P5020D Laptop
+       7233  OZ711MP3/MS3 4-in-1 MemoryCardBus Controller
+1218  Hybricon Corp.
+1219  First Virtual Corporation
+121a  3Dfx Interactive, Inc.
+       0001  Voodoo
+       0002  Voodoo 2
+       0003  Voodoo Banshee
+               1092 0003  Monster Fusion
+               1092 4000  Monster Fusion
+               1092 4002  Monster Fusion
+               1092 4801  Monster Fusion AGP
+               1092 4803  Monster Fusion AGP
+               1092 8030  Monster Fusion
+               1092 8035  Monster Fusion AGP
+               10b0 0001  Dragon 4000
+               1102 1018  3D Blaster Banshee VE
+               121a 0001  Voodoo Banshee AGP
+               121a 0003  Voodoo Banshee AGP SGRAM
+               121a 0004  Voodoo Banshee
+               139c 0016  Raven
+               139c 0017  Raven
+               14af 0002  Maxi Gamer Phoenix
+       0004  Voodoo Banshee [Velocity 100]
+       0005  Voodoo 3
+               121a 0004  Voodoo3 AGP
+               121a 0030  Voodoo3 AGP
+               121a 0031  Voodoo3 AGP
+               121a 0034  Voodoo3 AGP
+               121a 0036  Voodoo3 2000 PCI
+               121a 0037  Voodoo3 AGP
+               121a 0038  Voodoo3 AGP
+               121a 003a  Voodoo3 AGP
+               121a 0044  Voodoo3
+               121a 004b  Velocity 100
+               121a 004c  Velocity 200
+               121a 004d  Voodoo3 AGP
+               121a 004e  Voodoo3 AGP
+               121a 0051  Voodoo3 AGP
+               121a 0052  Voodoo3 AGP
+               121a 0057  Voodoo3 3000 PCI
+               121a 0060  Voodoo3 3500 TV (NTSC)
+               121a 0061  Voodoo3 3500 TV (PAL)
+               121a 0062  Voodoo3 3500 TV (SECAM)
+       0009  Voodoo 4 / Voodoo 5
+               121a 0003  Voodoo5 PCI 5500
+               121a 0009  Voodoo5 AGP 5500/6000
+       0057  Voodoo 3/3000 [Avenger]
+121b  Advanced Telecommunications Modules
+121c  Nippon Texaco., Ltd
+121d  Lippert Automationstechnik GmbH
+121e  CSPI
+       0201  Myrinet 2000 Scalable Cluster Interconnect
+121f  Arcus Technology, Inc.
+1220  Ariel Corporation
+       1220  AMCC 5933 TMS320C80 DSP/Imaging board
+1221  Contec Co., Ltd
+       9172  PO-64L(PCI)H [Isolated Digital Output Board for PCI]
+       91a2  PO-32L(PCI)H [Isolated Digital Output Board for PCI]
+       91c3  DA16-16(LPCI)L [Un-insulated highly precise analog output board for Low Profile PCI]
+       b152  DIO-96D2-LPCI
+       c103  ADA16-32/2(PCI)F [High-Speed Analog I/O Board for PCI]
+1222  Ancor Communications, Inc.
+1223  Artesyn Communication Products
+       0003  PM/Link
+       0004  PM/T1
+       0005  PM/E1
+       0008  PM/SLS
+       0009  BajaSpan Resource Target
+       000a  BajaSpan Section 0
+       000b  BajaSpan Section 1
+       000c  BajaSpan Section 2
+       000d  BajaSpan Section 3
+       000e  PM/PPC
+1224  Interactive Images
+1225  Power I/O, Inc.
+1227  Tech-Source
+       0006  Raptor GFX 8P
+       0023  Raptor GFX [1100T]
+1228  Norsk Elektro Optikk A/S
+1229  Data Kinesis Inc.
+122a  Integrated Telecom
+122b  LG Industrial Systems Co., Ltd
+122c  Sican GmbH
+122d  Aztech System Ltd
+       1206  368DSP
+       1400  Trident PCI288-Q3DII (NX)
+       50dc  3328 Audio
+               122d 0001  3328 Audio
+       80da  3328 Audio
+               122d 0001  3328 Audio
+122e  Xyratex
+122f  Andrew Corporation
+1230  Fishcamp Engineering
+1231  Woodward McCoach, Inc.
+1232  GPT Limited
+1233  Bus-Tech, Inc.
+# Also Bochs uses this for virtual VGA...
+1234  Technical Corp.
+1235  Risq Modular Systems, Inc.
+1236  Sigma Designs Corporation
+       0000  RealMagic64/GX
+       6401  REALmagic 64/GX (SD 6425)
+1237  Alta Technology Corporation
+1238  Adtran
+1239  3DO Company
+123a  Visicom Laboratories, Inc.
+123b  Seeq Technology, Inc.
+123c  Century Systems, Inc.
+123d  Engineering Design Team, Inc.
+       0000  EasyConnect 8/32
+       0002  EasyConnect 8/64
+       0003  EasyIO
+123e  Simutech, Inc.
+123f  C-Cube Microsystems
+       00e4  MPEG
+       8120  E4?
+               11bd 0006  DV500 E4
+               11bd 000a  DV500 E4
+               11bd 000f  DV500 E4
+               1809 0016  Emuzed MAUI-III PCI PVR FM TV
+       8888  Cinemaster C 3.0 DVD Decoder
+               1002 0001  Cinemaster C 3.0 DVD Decoder
+               1002 0002  Cinemaster C 3.0 DVD Decoder
+               1328 0001  Cinemaster C 3.0 DVD Decoder
+1240  Marathon Technologies Corp.
+1241  DSC Communications
+# Formerly Jaycor Networks, Inc.
+1242  JNI Corporation
+       1560  JNIC-1560 PCI-X Fibre Channel Controller
+               1242 6562  FCX2-6562 Dual Channel PCI-X Fibre Channel Adapter
+               1242 656a  FCX-6562 PCI-X Fibre Channel Adapter
+       4643  FCI-1063 Fibre Channel Adapter
+       6562  FCX2-6562 Dual Channel PCI-X Fibre Channel Adapter
+       656a  FCX-6562 PCI-X Fibre Channel Adapter
+1243  Delphax
+1244  AVM Audiovisuelles MKTG & Computer System GmbH
+       0700  B1 ISDN
+       0800  C4 ISDN
+       0a00  A1 ISDN [Fritz]
+               1244 0a00  FRITZ!Card ISDN Controller
+       0e00  Fritz!PCI v2.0 ISDN
+       1100  C2 ISDN
+       1200  T1 ISDN
+       2700  Fritz!Card DSL SL
+       2900  Fritz!Card DSL v2.0
+1245  A.P.D., S.A.
+1246  Dipix Technologies, Inc.
+1247  Xylon Research, Inc.
+1248  Central Data Corporation
+1249  Samsung Electronics Co., Ltd.
+124a  AEG Electrocom GmbH
+124b  SBS/Greenspring Modular I/O
+       0040  PCI-40A or cPCI-200 Quad IndustryPack carrier
+               124b 9080  PCI9080 Bridge
+124c  Solitron Technologies, Inc.
+124d  Stallion Technologies, Inc.
+       0000  EasyConnection 8/32
+       0002  EasyConnection 8/64
+       0003  EasyIO
+       0004  EasyConnection/RA
+124e  Cylink
+124f  Infortrend Technology, Inc.
+       0041  IFT-2000 Series RAID Controller
+1250  Hitachi Microcomputer System Ltd
+1251  VLSI Solutions Oy
+1253  Guzik Technical Enterprises
+1254  Linear Systems Ltd.
+1255  Optibase Ltd
+       1110  MPEG Forge
+       1210  MPEG Fusion
+       2110  VideoPlex
+       2120  VideoPlex CC
+       2130  VideoQuest
+1256  Perceptive Solutions, Inc.
+       4201  PCI-2220I
+       4401  PCI-2240I
+       5201  PCI-2000
+1257  Vertex Networks, Inc.
+1258  Gilbarco, Inc.
+1259  Allied Telesyn International
+       2560  AT-2560 Fast Ethernet Adapter (i82557B)
+       a117  RTL81xx Fast Ethernet
+       a11e  RTL81xx Fast Ethernet
+       a120  21x4x DEC-Tulip compatible 10/100 Ethernet
+125a  ABB Power Systems
+125b  Asix Electronics Corporation
+       1400  ALFA GFC2204 Fast Ethernet
+               1186 1100  AX8814X Based PCI Fast Ethernet Adapter
+125c  Aurora Technologies, Inc.
+       0101  Saturn 4520P
+       0640  Aries 16000P
+125d  ESS Technology
+       0000  ES336H Fax Modem (Early Model)
+       1948  ES1948 Maestro-1
+       1968  ES1968 Maestro 2
+               1028 0085  ES1968 Maestro-2 PCI
+               1033 8051  ES1968 Maestro-2 Audiodrive
+       1969  ES1969 Solo-1 Audiodrive
+               1014 0166  ES1969 SOLO-1 AudioDrive on IBM Aptiva Mainboard
+               125d 8888  Solo-1 Audio Adapter
+               153b 111b  Terratec 128i PCI
+       1978  ES1978 Maestro 2E
+               0e11 b112  Armada M700/E500
+               1033 803c  ES1978 Maestro-2E Audiodrive
+               1033 8058  ES1978 Maestro-2E Audiodrive
+               1092 4000  Monster Sound MX400
+               1179 0001  ES1978 Maestro-2E Audiodrive
+       1988  ES1988 Allegro-1
+               0e11 0098  Evo N600c
+               1092 4100  Sonic Impact S100
+               125d 1988  ESS Allegro-1 Audiodrive
+       1989  ESS Modem
+               125d 1989  ESS Modem
+       1998  ES1983S Maestro-3i PCI Audio Accelerator
+               1028 00b1  Latitude C600
+               1028 00e6  ES1983S Maestro-3i (Dell Inspiron 8100)
+       1999  ES1983S Maestro-3i PCI Modem Accelerator
+       199a  ES1983S Maestro-3i PCI Audio Accelerator
+       199b  ES1983S Maestro-3i PCI Modem Accelerator
+       2808  ES336H Fax Modem (Later Model)
+       2838  ES2838/2839 SuperLink Modem
+       2898  ES2898 Modem
+               125d 0424  ES56-PI Data Fax Modem
+               125d 0425  ES56T-PI Data Fax Modem
+               125d 0426  ES56V-PI Data Fax Modem
+               125d 0427  VW-PI Data Fax Modem
+               125d 0428  ES56ST-PI Data Fax Modem
+               125d 0429  ES56SV-PI Data Fax Modem
+               147a c001  ES56-PI Data Fax Modem
+               148d 1030  HCF WV-PI56 [ESS ES56-PI Data Fax Modem]
+               14fe 0428  ES56-PI Data Fax Modem
+               14fe 0429  ES56-PI Data Fax Modem
+125e  Specialvideo Engineering SRL
+125f  Concurrent Technologies, Inc.
+1260  Intersil Corporation
+       3872  Prism 2.5 Wavelan chipset
+               1468 0202  LAN-Express IEEE 802.11b Wireless LAN
+       3873  Prism 2.5 Wavelan chipset
+               1186 3501  DWL-520 Wireless PCI Adapter
+               1186 3700  DWL-520 Wireless PCI Adapter, Rev E1
+               1385 4105  MA311 802.11b wireless adapter
+               1668 0414  HWP01170-01 802.11b PCI Wireless Adapter
+               16a5 1601  AIR.mate PC-400 PCI Wireless LAN Adapter
+               1737 3874  WMP11 Wireless 802.11b PCI Adapter
+               8086 2510  M3AWEB Wireless 802.11b MiniPCI Adapter
+               8086 2513  Wireless 802.11b MiniPCI Adapter
+       3886  ISL3886 [Prism Javelin/Prism Xbow]
+               17cf 0037  XG-901 and clones Wireless Adapter
+       3890  ISL3890 [Prism GT/Prism Duette]/ISL3886 [Prism Javelin/Prism Xbow]
+               10b8 2802  SMC2802W Wireless PCI Adapter
+               10b8 2835  SMC2835W Wireless Cardbus Adapter
+               10b8 a835  SMC2835W V2 Wireless Cardbus Adapter
+               1113 4203  WN4201B
+               1113 8201  T-Com T-Sinus 154pcicard Wireless PCI Adapter
+               1113 b301  T-Sinus 154card Cardbus
+               1113 ee03  SMC2802W V2 Wireless PCI Adapter [ISL3886]
+               1113 ee08  SMC2835W V3 EU Wireless Cardbus Adapter
+               1186 3202  DWL-G650 A1 Wireless Adapter
+               1259 c104  CG-WLCB54GT Wireless Adapter
+               1260 0000  WG511 Wireless Adapter
+               1385 4800  WG511 Wireless Adapter
+               16a5 1605  ALLNET ALL0271 Wireless PCI Adapter
+               17cf 0014  XG-600 and clones Wireless Adapter
+               17cf 0020  XG-900 and clones Wireless Adapter
+       8130  HMP8130 NTSC/PAL Video Decoder
+       8131  HMP8131 NTSC/PAL Video Decoder
+# This is probably more likely a HW fault, but I am keeping it for now --mj
+       ffff  ISL3886IK
+               1260 0000  Senao 3054MP+ (J) mini-PCI WLAN 802.11g adapter
+1261  Matsushita-Kotobuki Electronics Industries, Ltd.
+1262  ES Computer Company, Ltd.
+1263  Sonic Solutions
+1264  Aval Nagasaki Corporation
+1265  Casio Computer Co., Ltd.
+1266  Microdyne Corporation
+       0001  NE10/100 Adapter (i82557B)
+       1910  NE2000Plus (RT8029) Ethernet Adapter
+               1266 1910  NE2000Plus Ethernet Adapter
+1267  S. A. Telecommunications
+       5352  PCR2101
+       5a4b  Telsat Turbo
+1268  Tektronix
+1269  Thomson-CSF/TTM
+126a  Lexmark International, Inc.
+126b  Adax, Inc.
+126c  Northern Telecom
+       1211  10/100BaseTX [RTL81xx]
+       126c  802.11b Wireless Ethernet Adapter
+126d  Splash Technology, Inc.
+126e  Sumitomo Metal Industries, Ltd.
+126f  Silicon Motion, Inc.
+       0501  SM501 VoyagerGX Rev. AA
+       0510  SM501 VoyagerGX Rev. B
+       0710  SM710 LynxEM
+       0712  SM712 LynxEM+
+       0720  SM720 Lynx3DM
+       0730  SM731 Cougar3DR
+       0810  SM810 LynxE
+       0811  SM811 LynxE
+       0820  SM820 Lynx3D
+       0910  SM910
+1270  Olympus Optical Co., Ltd.
+1271  GW Instruments
+1272  Telematics International
+1273  Hughes Network Systems
+       0002  DirecPC
+1274  Ensoniq
+       1171  ES1373 [AudioPCI] (also Creative Labs CT5803)
+       1371  ES1371 [AudioPCI-97]
+               0e11 0024  AudioPCI on Motherboard Compaq Deskpro
+               0e11 b1a7  ES1371, ES1373 AudioPCI
+               1033 80ac  ES1371, ES1373 AudioPCI
+               1042 1854  Tazer
+               107b 8054  Tabor2
+               1274 1371  Creative Sound Blaster AudioPCI64V, AudioPCI128
+               1274 8001  CT4751 board
+               1462 6470  ES1371, ES1373 AudioPCI On Motherboard MS-6147 1.1A
+               1462 6560  ES1371, ES1373 AudioPCI On Motherboard MS-6156 1.10
+               1462 6630  ES1371, ES1373 AudioPCI On Motherboard MS-6163BX 1.0A
+               1462 6631  ES1371, ES1373 AudioPCI On Motherboard MS-6163VIA 1.0A
+               1462 6632  ES1371, ES1373 AudioPCI On Motherboard MS-6163BX 2.0A
+               1462 6633  ES1371, ES1373 AudioPCI On Motherboard MS-6163VIA 2.0A
+               1462 6820  ES1371, ES1373 AudioPCI On Motherboard MS-6182 1.00
+               1462 6822  ES1371, ES1373 AudioPCI On Motherboard MS-6182 1.00A
+               1462 6830  ES1371, ES1373 AudioPCI On Motherboard MS-6183 1.00
+               1462 6880  ES1371, ES1373 AudioPCI On Motherboard MS-6188 1.00
+               1462 6900  ES1371, ES1373 AudioPCI On Motherboard MS-6190 1.00
+               1462 6910  ES1371, ES1373 AudioPCI On Motherboard MS-6191
+               1462 6930  ES1371, ES1373 AudioPCI On Motherboard MS-6193
+               1462 6990  ES1371, ES1373 AudioPCI On Motherboard MS-6199BX 2.0A
+               1462 6991  ES1371, ES1373 AudioPCI On Motherboard MS-6199VIA 2.0A
+               14a4 2077  ES1371, ES1373 AudioPCI On Motherboard KR639
+               14a4 2105  ES1371, ES1373 AudioPCI On Motherboard MR800
+               14a4 2107  ES1371, ES1373 AudioPCI On Motherboard MR801
+               14a4 2172  ES1371, ES1373 AudioPCI On Motherboard DR739
+               1509 9902  ES1371, ES1373 AudioPCI On Motherboard KW11
+               1509 9903  ES1371, ES1373 AudioPCI On Motherboard KW31
+               1509 9904  ES1371, ES1373 AudioPCI On Motherboard KA11
+               1509 9905  ES1371, ES1373 AudioPCI On Motherboard KC13
+               152d 8801  ES1371, ES1373 AudioPCI On Motherboard CP810E
+               152d 8802  ES1371, ES1373 AudioPCI On Motherboard CP810
+               152d 8803  ES1371, ES1373 AudioPCI On Motherboard P3810E
+               152d 8804  ES1371, ES1373 AudioPCI On Motherboard P3810-S
+               152d 8805  ES1371, ES1373 AudioPCI On Motherboard P3820-S
+               270f 2001  ES1371, ES1373 AudioPCI On Motherboard 6CTR
+               270f 2200  ES1371, ES1373 AudioPCI On Motherboard 6WTX
+               270f 3000  ES1371, ES1373 AudioPCI On Motherboard 6WSV
+               270f 3100  ES1371, ES1373 AudioPCI On Motherboard 6WIV2
+               270f 3102  ES1371, ES1373 AudioPCI On Motherboard 6WIV
+               270f 7060  ES1371, ES1373 AudioPCI On Motherboard 6ASA2
+               8086 4249  ES1371, ES1373 AudioPCI On Motherboard BI440ZX
+               8086 424c  ES1371, ES1373 AudioPCI On Motherboard BL440ZX
+               8086 425a  ES1371, ES1373 AudioPCI On Motherboard BZ440ZX
+               8086 4341  ES1371, ES1373 AudioPCI On Motherboard Cayman
+               8086 4343  ES1371, ES1373 AudioPCI On Motherboard Cape Cod
+               8086 4541  D815EEA Motherboard
+               8086 4649  ES1371, ES1373 AudioPCI On Motherboard Fire Island
+               8086 464a  ES1371, ES1373 AudioPCI On Motherboard FJ440ZX
+               8086 4d4f  ES1371, ES1373 AudioPCI On Motherboard Montreal
+               8086 4f43  ES1371, ES1373 AudioPCI On Motherboard OC440LX
+               8086 5243  ES1371, ES1373 AudioPCI On Motherboard RC440BX
+               8086 5352  ES1371, ES1373 AudioPCI On Motherboard SunRiver
+               8086 5643  ES1371, ES1373 AudioPCI On Motherboard Vancouver
+               8086 5753  ES1371, ES1373 AudioPCI On Motherboard WS440BX
+       5000  ES1370 [AudioPCI]
+       5880  5880 AudioPCI
+               1274 2000  Creative Sound Blaster AudioPCI128
+               1274 2003  Creative SoundBlaster AudioPCI 128
+               1274 5880  Creative Sound Blaster AudioPCI128
+               1274 8001  Sound Blaster 16PCI 4.1ch
+               1458 a000  5880 AudioPCI On Motherboard 6OXET
+               1462 6880  5880 AudioPCI On Motherboard MS-6188 1.00
+               270f 2001  5880 AudioPCI On Motherboard 6CTR
+               270f 2200  5880 AudioPCI On Motherboard 6WTX
+               270f 7040  5880 AudioPCI On Motherboard 6ATA4
+1275  Network Appliance Corporation
+1276  Switched Network Technologies, Inc.
+1277  Comstream
+1278  Transtech Parallel Systems Ltd.
+       0701  TPE3/TM3 PowerPC Node
+       0710  TPE5 PowerPC PCI board
+       1101  TS-C43 card with 4 ADSP-TS101 processors
+1279  Transmeta Corporation
+       0060  TM8000 Northbridge
+       0061  TM8000 AGP bridge
+       0295  Northbridge
+       0395  LongRun Northbridge
+       0396  SDRAM controller
+       0397  BIOS scratchpad
+127a  Rockwell International
+       1002  HCF 56k Data/Fax Modem
+               1092 094c  SupraExpress 56i PRO [Diamond SUP2380]
+               122d 4002  HPG / MDP3858-U
+               122d 4005  MDP3858-E
+               122d 4007  MDP3858-A/-NZ
+               122d 4012  MDP3858-SA
+               122d 4017  MDP3858-W
+               122d 4018  MDP3858-W
+               127a 1002  Rockwell 56K D/F HCF Modem
+       1003  HCF 56k Data/Fax Modem
+               0e11 b0bc  229-DF Zephyr
+               0e11 b114  229-DF Cheetah
+               1033 802b  229-DF
+               13df 1003  PCI56RX Modem
+               13e0 0117  IBM
+               13e0 0147  IBM F-1156IV+/R3 Spain V.90 Modem
+               13e0 0197  IBM
+               13e0 01c7  IBM F-1156IV+/R3 WW V.90 Modem
+               13e0 01f7  IBM
+               1436 1003  IBM
+               1436 1103  IBM 5614PM3G V.90 Modem
+               1436 1602  Compaq 229-DF Ducati
+       1004  HCF 56k Data/Fax/Voice Modem
+               1048 1500  MicroLink 56k Modem
+               10cf 1059  Fujitsu 229-DFRT
+       1005  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem
+               1005 127a  AOpen FM56-P
+               1033 8029  229-DFSV
+               1033 8054  Modem
+               10cf 103c  Fujitsu
+               10cf 1055  Fujitsu 229-DFSV
+               10cf 1056  Fujitsu 229-DFSV
+               122d 4003  MDP3858SP-U
+               122d 4006  Packard Bell MDP3858V-E
+               122d 4008  MDP3858SP-A/SP-NZ
+               122d 4009  MDP3858SP-E
+               122d 4010  MDP3858V-U
+               122d 4011  MDP3858SP-SA
+               122d 4013  MDP3858V-A/V-NZ
+               122d 4015  MDP3858SP-W
+               122d 4016  MDP3858V-W
+               122d 4019  MDP3858V-SA
+               13df 1005  PCI56RVP Modem
+               13e0 0187  IBM
+               13e0 01a7  IBM
+               13e0 01b7  IBM DF-1156IV+/R3 Spain V.90 Modem
+               13e0 01d7  IBM DF-1156IV+/R3 WW V.90 Modem
+               1436 1005  IBM
+               1436 1105  IBM
+               1437 1105  IBM 5614PS3G V.90 Modem
+       1022  HCF 56k Modem
+               1436 1303  M3-5614PM3G V.90 Modem
+       1023  HCF 56k Data/Fax Modem
+               122d 4020  Packard Bell MDP3858-WE
+               122d 4023  MDP3858-UE
+               13e0 0247  IBM F-1156IV+/R6 Spain V.90 Modem
+               13e0 0297  IBM
+               13e0 02c7  IBM F-1156IV+/R6 WW V.90 Modem
+               1436 1203  IBM
+               1436 1303  IBM
+       1024  HCF 56k Data/Fax/Voice Modem
+       1025  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem
+               10cf 106a  Fujitsu 235-DFSV
+               122d 4021  Packard Bell MDP3858V-WE
+               122d 4022  MDP3858SP-WE
+               122d 4024  MDP3858V-UE
+               122d 4025  MDP3858SP-UE
+       1026  HCF 56k PCI Speakerphone Modem
+       1032  HCF 56k Modem
+       1033  HCF 56k Modem
+       1034  HCF 56k Modem
+       1035  HCF 56k PCI Speakerphone Modem
+       1036  HCF 56k Modem
+       1085  HCF 56k Volcano PCI Modem
+       2005  HCF 56k Data/Fax Modem
+               104d 8044  229-DFSV
+               104d 8045  229-DFSV
+               104d 8055  PBE/Aztech 235W-DFSV
+               104d 8056  235-DFSV
+               104d 805a  Modem
+               104d 805f  Modem
+               104d 8074  Modem
+       2013  HSF 56k Data/Fax Modem
+               1179 0001  Modem
+               1179 ff00  Modem
+       2014  HSF 56k Data/Fax/Voice Modem
+               10cf 1057  Fujitsu Citicorp III
+               122d 4050  MSP3880-U
+               122d 4055  MSP3880-W
+       2015  HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem
+               10cf 1063  Fujitsu
+               10cf 1064  Fujitsu
+               1468 2015  Fujitsu
+       2016  HSF 56k Data/Fax/Voice/Spkp Modem
+               122d 4051  MSP3880V-W
+               122d 4052  MSP3880SP-W
+               122d 4054  MSP3880V-U
+               122d 4056  MSP3880SP-U
+               122d 4057  MSP3880SP-A
+       4311  Riptide HSF 56k PCI Modem
+               127a 4311  Ring Modular? Riptide HSF RT HP Dom
+               13e0 0210  HP-GVC
+       4320  Riptide PCI Audio Controller
+               1235 4320  Riptide PCI Audio Controller
+       4321  Riptide HCF 56k PCI Modem
+               1235 4321  Hewlett Packard DF
+               1235 4324  Hewlett Packard DF
+               13e0 0210  Hewlett Packard DF
+               144d 2321  Riptide
+       4322  Riptide PCI Game Controller
+               1235 4322  Riptide PCI Game Controller
+       8234  RapidFire 616X ATM155 Adapter
+               108d 0022  RapidFire 616X ATM155 Adapter
+               108d 0027  RapidFire 616X ATM155 Adapter
+127b  Pixera Corporation
+127c  Crosspoint Solutions, Inc.
+127d  Vela Research
+127e  Winnov, L.P.
+127f  Fujifilm
+1280  Photoscript Group Ltd.
+1281  Yokogawa Electric Corporation
+1282  Davicom Semiconductor, Inc.
+       9009  Ethernet 100/10 MBit
+       9100  21x4x DEC-Tulip compatible 10/100 Ethernet
+       9102  21x4x DEC-Tulip compatible 10/100 Ethernet
+       9132  Ethernet 100/10 MBit
+1283  Integrated Technology Express, Inc.
+       673a  IT8330G
+       8152  IT8152F/G Advanced RISC-to-PCI Companion Chip
+       8211  ITE 8211F Single Channel UDMA 133
+               1043 8138  P5GD1-VW Mainboard
+# PCI version seems to be IT8212, embedded seems to be ITE8212
+       8212  IT/ITE8212 Dual channel ATA RAID controller
+               1283 0001  IT/ITE8212 Dual channel ATA RAID controller
+       8330  IT8330G
+       8872  IT8874F PCI Dual Serial Port Controller
+       8888  IT8888F PCI to ISA Bridge with SMB
+       8889  IT8889F PCI to ISA Bridge
+       e886  IT8330G
+1284  Sahara Networks, Inc.
+1285  Platform Technologies, Inc.
+       0100  AGOGO sound chip (aka ESS Maestro 1)
+1286  Mazet GmbH
+1287  M-Pact, Inc.
+       001e  LS220D DVD Decoder
+       001f  LS220C DVD Decoder
+1288  Timestep Corporation
+1289  AVC Technology, Inc.
+128a  Asante Technologies, Inc.
+128b  Transwitch Corporation
+128c  Retix Corporation
+128d  G2 Networks, Inc.
+       0021  ATM155 Adapter
+128e  Hoontech Corporation/Samho Multi Tech Ltd.
+       0008  ST128 WSS/SB
+       0009  ST128 SAM9407
+       000a  ST128 Game Port
+       000b  ST128 MPU Port
+       000c  ST128 Ctrl Port
+128f  Tateno Dennou, Inc.
+1290  Sord Computer Corporation
+1291  NCS Computer Italia
+1292  Tritech Microelectronics Inc
+       fc02  Pyramid3D TR25202
+1293  Media Reality Technology
+1294  Rhetorex, Inc.
+1295  Imagenation Corporation
+1296  Kofax Image Products
+1297  Holco Enterprise Co, Ltd/Shuttle Computer
+1298  Spellcaster Telecommunications Inc.
+1299  Knowledge Technology Lab.
+129a  VMetro, inc.
+       0615  PBT-615 PCI-X Bus Analyzer
+129b  Image Access
+129c  Jaycor
+129d  Compcore Multimedia, Inc.
+129e  Victor Company of Japan, Ltd.
+129f  OEC Medical Systems, Inc.
+12a0  Allen-Bradley Company
+12a1  Simpact Associates, Inc.
+12a2  Newgen Systems Corporation
+12a3  Lucent Technologies
+       8105  T8105 H100 Digital Switch
+12a4  NTT Electronics Technology Company
+12a5  Vision Dynamics Ltd.
+12a6  Scalable Networks, Inc.
+12a7  AMO GmbH
+12a8  News Datacom
+12a9  Xiotech Corporation
+12aa  SDL Communications, Inc.
+12ab  Yuan Yuan Enterprise Co., Ltd.
+       0000  MPG160/Kuroutoshikou ITVC15-STVLP
+       0002  AU8830 [Vortex2] Based Sound Card With A3D Support
+       2300  Club-3D Zap TV2100
+       3000  MPG-200C PCI DVD Decoder Card
+       fff3  MPG600/Kuroutoshikou ITVC16-STVLP
+       ffff  MPG600/Kuroutoshikou ITVC16-STVLP
+12ac  Measurex Corporation
+12ad  Multidata GmbH
+12ae  Alteon Networks Inc.
+       0001  AceNIC Gigabit Ethernet
+               1014 0104  Gigabit Ethernet-SX PCI Adapter
+               12ae 0001  Gigabit Ethernet-SX (Universal)
+               1410 0104  Gigabit Ethernet-SX PCI Adapter
+       0002  AceNIC Gigabit Ethernet (Copper)
+               10a9 8002  Acenic Gigabit Ethernet
+               12ae 0002  Gigabit Ethernet-T (3C986-T)
+       00fa  Farallon PN9100-T Gigabit Ethernet
+12af  TDK USA Corp
+12b0  Jorge Scientific Corp
+12b1  GammaLink
+12b2  General Signal Networks
+12b3  Inter-Face Co Ltd
+12b4  FutureTel Inc
+12b5  Granite Systems Inc.
+12b6  Natural Microsystems
+12b7  Cognex Modular Vision Systems Div. - Acumen Inc.
+12b8  Korg
+# Nee US Robotics
+12b9  3Com Corp, Modem Division
+       1006  WinModem
+               12b9 005c  USR 56k Internal Voice WinModem (Model 3472)
+               12b9 005e  USR 56k Internal WinModem (Models 662975)
+               12b9 0062  USR 56k Internal Voice WinModem (Model 662978)
+               12b9 0068  USR 56k Internal Voice WinModem (Model 5690)
+               12b9 007a  USR 56k Internal Voice WinModem (Model 662974)
+               12b9 007f  USR 56k Internal WinModem (Models 5698, 5699)
+               12b9 0080  USR 56k Internal WinModem (Models 2975, 3528)
+               12b9 0081  USR 56k Internal Voice WinModem (Models 2974, 3529)
+               12b9 0091  USR 56k Internal Voice WinModem (Model 2978)
+       1007  USR 56k Internal WinModem
+               12b9 00a3  USR 56k Internal WinModem (Model 3595)
+               12b9 00c4  U.S. Robotics 56K Voice Win Int (2884a)
+       1008  56K FaxModem Model 5610
+               12b9 00a2  USR 56k Internal FAX Modem (Model 2977)
+               12b9 00aa  USR 56k Internal Voice Modem (Model 2976)
+               12b9 00ab  USR 56k Internal Voice Modem (Model 5609)
+               12b9 00ac  USR 56k Internal Voice Modem (Model 3298)
+               12b9 00ad  USR 56k Internal FAX Modem (Model 5610)
+               12b9 baba  USR 56K Internal Voice Modem 3CP3298-DEL (Model 5601) [Hawk]
+12ba  BittWare, Inc.
+12bb  Nippon Unisoft Corporation
+12bc  Array Microsystems
+12bd  Computerm Corp.
+12be  Anchor Chips Inc.
+       3041  AN3041Q CO-MEM
+       3042  AN3042Q CO-MEM Lite
+               12be 3042  Anchor Chips Lite Evaluation Board
+12bf  Fujifilm Microdevices
+12c0  Infimed
+12c1  GMM Research Corp
+12c2  Mentec Limited
+12c3  Holtek Microelectronics Inc
+       0058  PCI NE2K Ethernet
+       5598  PCI NE2K Ethernet
+12c4  Connect Tech Inc
+       0001  Blue HEAT/PCI 8 (RS232/CL/RJ11)
+       0002  Blue HEAT/PCI 4 (RS232)
+       0003  Blue HEAT/PCI 2 (RS232)
+       0004  Blue HEAT/PCI 8 (UNIV, RS485)
+       0005  Blue HEAT/PCI 4+4/6+2 (UNIV, RS232/485)
+       0006  Blue HEAT/PCI 4 (OPTO, RS485)
+       0007  Blue HEAT/PCI 2+2 (RS232/485)
+       0008  Blue HEAT/PCI 2 (OPTO, Tx, RS485)
+       0009  Blue HEAT/PCI 2+6 (RS232/485)
+       000a  Blue HEAT/PCI 8 (Tx, RS485)
+       000b  Blue HEAT/PCI 4 (Tx, RS485)
+       000c  Blue HEAT/PCI 2 (20 MHz, RS485)
+       000d  Blue HEAT/PCI 2 PTM
+       0100  NT960/PCI
+       0201  cPCI Titan - 2 Port
+       0202  cPCI Titan - 4 Port
+       0300  CTI PCI UART 2 (RS232)
+       0301  CTI PCI UART 4 (RS232)
+       0302  CTI PCI UART 8 (RS232)
+       0310  CTI PCI UART 1+1 (RS232/485)
+       0311  CTI PCI UART 2+2 (RS232/485)
+       0312  CTI PCI UART 4+4 (RS232/485)
+       0320  CTI PCI UART 2
+       0321  CTI PCI UART 4
+       0322  CTI PCI UART 8
+       0330  CTI PCI UART 2 (RS485)
+       0331  CTI PCI UART 4 (RS485)
+       0332  CTI PCI UART 8 (RS485)
+12c5  Picture Elements Incorporated
+       007e  Imaging/Scanning Subsystem Engine
+       007f  Imaging/Scanning Subsystem Engine
+       0081  PCIVST [Grayscale Thresholding Engine]
+       0085  Video Simulator/Sender
+       0086  THR2 Multi-scale Thresholder
+12c6  Mitani Corporation
+12c7  Dialogic Corp
+# 12 Line, 6 port, CT-BUS/SC-BUS, loopstart FXO adaptor.
+       0546  Springware D/120JCT-LS
+# 24 Channel, 1 Port, CT-BUS/SC-BUS, T1/PRI adaptor.
+       0647  Springware D/240JCT-T1
+# 4 Line, 4 port, CT-BUS/SC-BUS, loopstart FXO adaptor. Revision 01
+       0676  Springware D/41JCT-LS
+# 48 Channel, 2 Port, CT-BUS/SC-BUS, T1/PRI adaptor.
+       0685  Springware D/480JCT-2T1
+12c8  G Force Co, Ltd
+12c9  Gigi Operations
+12ca  Integrated Computing Engines
+12cb  Antex Electronics Corporation
+12cc  Pluto Technologies International
+12cd  Aims Lab
+12ce  Netspeed Inc.
+12cf  Prophet Systems, Inc.
+12d0  GDE Systems, Inc.
+12d1  PSITech
+12d2  NVidia / SGS Thomson (Joint Venture)
+       0008  NV1
+       0009  DAC64
+       0018  Riva128
+               1048 0c10  VICTORY Erazor
+               107b 8030  STB Velocity 128
+               1092 0350  Viper V330
+               1092 1092  Viper V330
+               10b4 1b1b  STB Velocity 128
+               10b4 1b1d  STB Velocity 128
+               10b4 1b1e  STB Velocity 128, PAL TV-Out
+               10b4 1b20  STB Velocity 128 Sapphire
+               10b4 1b21  STB Velocity 128
+               10b4 1b22  STB Velocity 128 AGP, NTSC TV-Out
+               10b4 1b23  STB Velocity 128 AGP, PAL TV-Out
+               10b4 1b27  STB Velocity 128 DVD
+               10b4 1b88  MVP Pro 128
+               10b4 222a  STB Velocity 128 AGP
+               10b4 2230  STB Velocity 128
+               10b4 2232  STB Velocity 128
+               10b4 2235  STB Velocity 128 AGP
+               2a15 54a3  3DVision-SAGP / 3DexPlorer 3000
+       0019  Riva128ZX
+       0020  TNT
+       0028  TNT2
+       0029  UTNT2
+       002c  VTNT2
+       00a0  ITNT2
+12d3  Vingmed Sound A/S
+12d4  Ulticom (Formerly DGM&S)
+       0200  T1 Card
+12d5  Equator Technologies Inc
+       0003  BSP16
+       1000  BSP15
+12d6  Analogic Corp
+12d7  Biotronic SRL
+12d8  Pericom Semiconductor
+       01a7  PI7C21P100 PCI to PCI Bridge
+       8150  PCI to PCI Bridge
+12d9  Aculab PLC
+       0002  PCI Prosody
+       0004  cPCI Prosody
+       0005  Aculab E1/T1 PCI card
+       1078  Prosody X class e1000 device
+               12d9 000d  Prosody X PCI
+               12d9 000e  Prosody X cPCI
+12da  True Time Inc.
+12db  Annapolis Micro Systems, Inc
+12dc  Symicron Computer Communication Ltd.
+12dd  Management Graphics
+12de  Rainbow Technologies
+       0200  CryptoSwift CS200
+12df  SBS Technologies Inc
+12e0  Chase Research
+       0010  ST16C654 Quad UART
+       0020  ST16C654 Quad UART
+       0030  ST16C654 Quad UART
+12e1  Nintendo Co, Ltd
+12e2  Datum Inc. Bancomm-Timing Division
+12e3  Imation Corp - Medical Imaging Systems
+12e4  Brooktrout Technology Inc
+12e5  Apex Semiconductor Inc
+12e6  Cirel Systems
+12e7  Sunsgroup Corporation
+12e8  Crisc Corp
+12e9  GE Spacenet
+12ea  Zuken
+12eb  Aureal Semiconductor
+       0001  Vortex 1
+               104d 8036  AU8820 Vortex Digital Audio Processor
+               1092 2000  Sonic Impact A3D
+               1092 2100  Sonic Impact A3D
+               1092 2110  Sonic Impact A3D
+               1092 2200  Sonic Impact A3D
+               122d 1002  AU8820 Vortex Digital Audio Processor
+               12eb 0001  AU8820 Vortex Digital Audio Processor
+               5053 3355  Montego
+       0002  Vortex 2
+               104d 8049  AU8830 Vortex 3D Digital Audio Processor
+               104d 807b  AU8830 Vortex 3D Digital Audio Processor
+               1092 3000  Monster Sound II
+               1092 3001  Monster Sound II
+               1092 3002  Monster Sound II
+               1092 3003  Monster Sound II
+               1092 3004  Monster Sound II
+               12eb 0002  AU8830 Vortex 3D Digital Audio Processor
+               12eb 0088  AU8830 Vortex 3D Digital Audio Processor
+               144d 3510  AU8830 Vortex 3D Digital Audio Processor
+               5053 3356  Montego II
+       0003  AU8810 Vortex Digital Audio Processor
+               104d 8049  AU8810 Vortex Digital Audio Processor
+               104d 8077  AU8810 Vortex Digital Audio Processor
+               109f 1000  AU8810 Vortex Digital Audio Processor
+               12eb 0003  AU8810 Vortex Digital Audio Processor
+               1462 6780  AU8810 Vortex Digital Audio Processor
+               14a4 2073  AU8810 Vortex Digital Audio Processor
+               14a4 2091  AU8810 Vortex Digital Audio Processor
+               14a4 2104  AU8810 Vortex Digital Audio Processor
+               14a4 2106  AU8810 Vortex Digital Audio Processor
+       8803  Vortex 56k Software Modem
+               12eb 8803  Vortex 56k Software Modem
+12ec  3A International, Inc.
+12ed  Optivision Inc.
+12ee  Orange Micro
+12ef  Vienna Systems
+12f0  Pentek
+12f1  Sorenson Vision Inc
+12f2  Gammagraphx, Inc.
+12f3  Radstone Technology
+12f4  Megatel
+12f5  Forks
+12f6  Dawson France
+12f7  Cognex
+12f8  Electronic Design GmbH
+       0002  VideoMaker
+12f9  Four Fold Ltd
+12fb  Spectrum Signal Processing
+       0001  PMC-MAI
+       00f5  F5 Dakar
+       02ad  PMC-2MAI
+       2adc  ePMC-2ADC
+       3100  PRO-3100
+       3500  PRO-3500
+       4d4f  Modena
+       8120  ePMC-8120
+       da62  Daytona C6201 PCI (Hurricane)
+       db62  Ingliston XBIF
+       dc62  Ingliston PLX9054
+       dd62  Ingliston JTAG/ISP
+       eddc  ePMC-MSDDC
+       fa01  ePMC-FPGA
+12fc  Capital Equipment Corp
+12fd  I2S
+12fe  ESD Electronic System Design GmbH
+12ff  Lexicon
+1300  Harman International Industries Inc
+1302  Computer Sciences Corp
+1303  Innovative Integration
+1304  Juniper Networks
+1305  Netphone, Inc
+1306  Duet Technologies
+# Nee ComputerBoards
+1307  Measurement Computing
+       0001  PCI-DAS1602/16
+       000b  PCI-DIO48H
+       000c  PCI-PDISO8
+       000d  PCI-PDISO16
+       000f  PCI-DAS1200
+       0010  PCI-DAS1602/12
+       0014  PCI-DIO24H
+       0015  PCI-DIO24H/CTR3
+       0016  PCI-DIO48H/CTR15
+       0017  PCI-DIO96H
+       0018  PCI-CTR05
+       0019  PCI-DAS1200/JR
+       001a  PCI-DAS1001
+       001b  PCI-DAS1002
+       001c  PCI-DAS1602JR/16
+       001d  PCI-DAS6402/16
+       001e  PCI-DAS6402/12
+       001f  PCI-DAS16/M1
+       0020  PCI-DDA02/12
+       0021  PCI-DDA04/12
+       0022  PCI-DDA08/12
+       0023  PCI-DDA02/16
+       0024  PCI-DDA04/16
+       0025  PCI-DDA08/16
+       0026  PCI-DAC04/12-HS
+       0027  PCI-DAC04/16-HS
+       0028  PCI-DIO24
+       0029  PCI-DAS08
+       002c  PCI-INT32
+       0033  PCI-DUAL-AC5
+       0034  PCI-DAS-TC
+       0035  PCI-DAS64/M1/16
+       0036  PCI-DAS64/M2/16
+       0037  PCI-DAS64/M3/16
+       004c  PCI-DAS1000
+       004d  PCI-QUAD04
+       0052  PCI-DAS4020/12
+       0054  PCI-DIO96
+       005d  PCI-DAS6023
+       005e  PCI-DAS6025
+       005f  PCI-DAS6030
+       0060  PCI-DAS6031
+       0061  PCI-DAS6032
+       0062  PCI-DAS6033
+       0063  PCI-DAS6034
+       0064  PCI-DAS6035
+       0065  PCI-DAS6040
+       0066  PCI-DAS6052
+       0067  PCI-DAS6070
+       0068  PCI-DAS6071
+       006f  PCI-DAS6036
+       0078  PCI-DAS6013
+       0079  PCI-DAS6014
+1308  Jato Technologies Inc.
+       0001  NetCelerator Adapter
+               1308 0001  NetCelerator Adapter
+1309  AB Semiconductor Ltd
+130a  Mitsubishi Electric Microcomputer
+130b  Colorgraphic Communications Corp
+130c  Ambex Technologies, Inc
+130d  Accelerix Inc
+130e  Yamatake-Honeywell Co. Ltd
+130f  Advanet Inc
+1310  Gespac
+1311  Videoserver, Inc
+1312  Acuity Imaging, Inc
+1313  Yaskawa Electric Co.
+1316  Teradyne Inc
+1317  ADMtek
+       0981  21x4x DEC-Tulip compatible 10/100 Ethernet
+       0985  NC100 Network Everywhere Fast Ethernet 10/100
+               1734 100c  Scenic N300 ADMtek AN983 10/100 Mbps PCI Adapter
+       1985  21x4x DEC-Tulip compatible 10/100 Ethernet
+       2850  HSP MicroModem 56
+       5120  ADM5120 OpenGate System-on-Chip
+       8201  ADM8211 802.11b Wireless Interface
+               10b8 2635  SMC2635W 802.11b (11Mbps) wireless lan pcmcia (cardbus) card
+               1317 8201  SMC2635W 802.11b (11mbps) wireless lan pcmcia (cardbus) card
+       8211  ADM8211 802.11b Wireless Interface
+       9511  21x4x DEC-Tulip compatible 10/100 Ethernet
+1318  Packet Engines Inc.
+       0911  GNIC-II PCI Gigabit Ethernet [Hamachi]
+1319  Fortemedia, Inc
+       0801  Xwave QS3000A [FM801]
+               1319 1319  FM801 PCI Audio
+       0802  Xwave QS3000A [FM801 game port]
+               1319 1319  FM801 PCI Joystick
+       1000  FM801 PCI Audio
+       1001  FM801 PCI Joystick
+131a  Finisar Corp.
+131c  Nippon Electro-Sensory Devices Corp
+131d  Sysmic, Inc.
+131e  Xinex Networks Inc
+131f  Siig Inc
+       1000  CyberSerial (1-port) 16550
+       1001  CyberSerial (1-port) 16650
+       1002  CyberSerial (1-port) 16850
+       1010  Duet 1S(16550)+1P
+       1011  Duet 1S(16650)+1P
+       1012  Duet 1S(16850)+1P
+       1020  CyberParallel (1-port)
+       1021  CyberParallel (2-port)
+       1030  CyberSerial (2-port) 16550
+       1031  CyberSerial (2-port) 16650
+       1032  CyberSerial (2-port) 16850
+       1034  Trio 2S(16550)+1P
+       1035  Trio 2S(16650)+1P
+       1036  Trio 2S(16850)+1P
+       1050  CyberSerial (4-port) 16550
+       1051  CyberSerial (4-port) 16650
+       1052  CyberSerial (4-port) 16850
+       2000  CyberSerial (1-port) 16550
+       2001  CyberSerial (1-port) 16650
+       2002  CyberSerial (1-port) 16850
+       2010  Duet 1S(16550)+1P
+       2011  Duet 1S(16650)+1P
+       2012  Duet 1S(16850)+1P
+       2020  CyberParallel (1-port)
+       2021  CyberParallel (2-port)
+       2030  CyberSerial (2-port) 16550
+               131f 2030  PCI Serial Card
+       2031  CyberSerial (2-port) 16650
+       2032  CyberSerial (2-port) 16850
+       2040  Trio 1S(16550)+2P
+       2041  Trio 1S(16650)+2P
+       2042  Trio 1S(16850)+2P
+       2050  CyberSerial (4-port) 16550
+       2051  CyberSerial (4-port) 16650
+       2052  CyberSerial (4-port) 16850
+       2060  Trio 2S(16550)+1P
+       2061  Trio 2S(16650)+1P
+       2062  Trio 2S(16850)+1P
+       2081  CyberSerial (8-port) ST16654
+1320  Crypto AG
+1321  Arcobel Graphics BV
+1322  MTT Co., Ltd
+1323  Dome Inc
+1324  Sphere Communications
+1325  Salix Technologies, Inc
+1326  Seachange international
+1327  Voss scientific
+1328  quadrant international
+1329  Productivity Enhancement
+132a  Microcom Inc.
+132b  Broadband Technologies
+132c  Micrel Inc
+132d  Integrated Silicon Solution, Inc.
+1330  MMC Networks
+1331  RadiSys Corporation
+       0030  ENP-2611
+       8200  82600 Host Bridge
+       8201  82600 IDE
+       8202  82600 USB
+       8210  82600 PCI Bridge
+1332  Micro Memory
+       5415  MM-5415CN PCI Memory Module with Battery Backup
+       5425  MM-5425CN PCI 64/66 Memory Module with Battery Backup
+       6140  MM-6140D
+1334  Redcreek Communications, Inc
+1335  Videomail, Inc
+1337  Third Planet Publishing
+1338  BT Electronics
+133a  Vtel Corp
+133b  Softcom Microsystems
+133c  Holontech Corp
+133d  SS Technologies
+133e  Virtual Computer Corp
+133f  SCM Microsystems
+1340  Atalla Corp
+1341  Kyoto Microcomputer Co
+1342  Promax Systems Inc
+1343  Phylon Communications Inc
+1344  Crucial Technology
+1345  Arescom Inc
+1347  Odetics
+1349  Sumitomo Electric Industries, Ltd.
+134a  DTC Technology Corp.
+       0001  Domex 536
+       0002  Domex DMX3194UP SCSI Adapter
+134b  ARK Research Corp.
+134c  Chori Joho System Co. Ltd
+134d  PCTel Inc
+       2189  HSP56 MicroModem
+       2486  2304WT V.92 MDC Modem
+       7890  HSP MicroModem 56
+               134d 0001  PCT789 adapter
+       7891  HSP MicroModem 56
+               134d 0001  HSP MicroModem 56
+       7892  HSP MicroModem 56
+       7893  HSP MicroModem 56
+       7894  HSP MicroModem 56
+       7895  HSP MicroModem 56
+       7896  HSP MicroModem 56
+       7897  HSP MicroModem 56
+134e  CSTI
+134f  Algo System Co Ltd
+1350  Systec Co. Ltd
+1351  Sonix Inc
+1353  Thales Idatys
+       0002  Proserver
+       0003  PCI-FUT
+       0004  PCI-S0
+       0005  PCI-FUT-S0
+1354  Dwave System Inc
+1355  Kratos Analytical Ltd
+1356  The Logical Co
+1359  Prisa Networks
+135a  Brain Boxes
+135b  Giganet Inc
+135c  Quatech Inc
+       0010  QSC-100
+       0020  DSC-100
+       0030  DSC-200/300
+       0040  QSC-200/300
+       0050  ESC-100D
+       0060  ESC-100M
+       00f0  MPAC-100 Syncronous Serial Card (Zilog 85230)
+       0170  QSCLP-100
+       0180  DSCLP-100
+       0190  SSCLP-100
+       01a0  QSCLP-200/300
+       01b0  DSCLP-200/300
+       01c0  SSCLP-200/300
+135d  ABB Network Partner AB
+135e  Sealevel Systems Inc
+       5101  Route 56.PCI - Multi-Protocol Serial Interface (Zilog Z16C32)
+       7101  Single Port RS-232/422/485/530
+       7201  Dual Port RS-232/422/485 Interface
+       7202  Dual Port RS-232 Interface
+       7401  Four Port RS-232 Interface
+       7402  Four Port RS-422/485 Interface
+       7801  Eight Port RS-232 Interface
+       7804  Eight Port RS-232/422/485 Interface
+       8001  8001 Digital I/O Adapter
+135f  I-Data International A-S
+1360  Meinberg Funkuhren
+       0101  PCI32 DCF77 Radio Clock
+       0102  PCI509 DCF77 Radio Clock
+       0103  PCI510 DCF77 Radio Clock
+       0104  PCI511 DCF77 Radio Clock
+       0105  PEX511 DCF77 Radio Clock (PCI Express)
+       0201  GPS167PCI GPS Receiver
+       0202  GPS168PCI GPS Receiver
+       0203  GPS169PCI GPS Receiver
+       0204  GPS170PCI GPS Receiver
+       0205  GPS170PEX GPS Receiver (PCI Express)
+       0301  TCR510PCI IRIG Timecode Reader
+       0302  TCR167PCI IRIG Timecode Reader
+       0303  TCR511PCI IRIG Timecode Reader
+       0304  TCR511PEX IRIG Timecode Reader (PCI Express)
+1361  Soliton Systems K.K.
+1362  Fujifacom Corporation
+1363  Phoenix Technology Ltd
+1364  ATM Communications Inc
+1365  Hypercope GmbH
+1366  Teijin Seiki Co. Ltd
+1367  Hitachi Zosen Corporation
+1368  Skyware Corporation
+1369  Digigram
+136a  High Soft Tech
+       0004  HST Saphir VII mini PCI
+       0007  HST Saphir III E MultiLink 4
+       0008  HST Saphir III E MultiLink 8
+       000a  HST Saphir III E MultiLink 2
+136b  Kawasaki Steel Corporation
+       ff01  KL5A72002 Motion JPEG
+136c  Adtek System Science Co Ltd
+136d  Gigalabs Inc
+136f  Applied Magic Inc
+1370  ATL Products
+1371  CNet Technology Inc
+       434e  GigaCard Network Adapter
+               1371 434e  N-Way PCI-Bus Giga-Card 1000/100/10Mbps(L)
+1373  Silicon Vision Inc
+1374  Silicom Ltd.
+       0024  Silicom Dual port Giga Ethernet BGE Bypass Server Adapter
+       0025  Silicom Quad port Giga Ethernet BGE Bypass Server Adapter
+       0026  Silicom Dual port Fiber Giga Ethernet 546 Bypass Server Adapter
+       0027  Silicom Dual port Fiber LX Giga Ethernet 546 Bypass Server Adapter
+       0029  Silicom Dual port Copper Giga Ethernet 546GB Bypass Server Adapter
+       002a  Silicom Dual port Fiber Giga Ethernet 546 TAP/Bypass Server Adapter
+       002b  Silicom Dual port Copper Fast Ethernet 546 TAP/Bypass Server Adapter (PXE2TBI)
+       002c  Silicom Quad port Copper Giga Ethernet 546GB Bypass Server Adapter (PXG4BPI)
+       002d  Silicom Quad port Fiber-SX Giga Ethernet 546GB Bypass Server Adapter (PXG4BPFI)
+       002e  Silicom Quad port Fiber-LX Giga Ethernet 546GB Bypass Server Adapter (PXG4BPFI-LX)
+       002f  Silicom Dual port Fiber-SX Giga Ethernet 546GB Low profile Bypass Server Adapter (PXG2BPFIL)
+       0030  Silicom Dual port Fiber-LX Giga Ethernet 546GB Low profile Bypass Server Adapter
+       0031  Silicom Quad port Copper Giga Ethernet PCI-E Bypass Server Adapter
+       0032  Silicom Dual port Copper Fast Ethernet 546 TAP/Bypass Server Adapter
+       0034  Silicom Dual port Copper Giga Ethernet PCI-E BGE Bypass Server Adapter
+       0035  Silicom Quad port Copper Giga Ethernet PCI-E BGE Bypass Server Adapter
+       0036  Silicom Dual port Fiber Giga Ethernet PCI-E BGE Bypass Server Adapter
+       0037  Silicom Quad port Copper Ethernet PCI-E Intel based Bypass Server Adapter
+       0038  Silicom Quad port Copper Ethernet PCI-E Intel based Bypass Server Adapter
+       0039  Silicom Dual port Fiber-SX Ethernet PCI-E Intel based Bypass Server Adapter
+       003a  Silicom Dual port Fiber-LX Ethernet PCI-E Intel based Bypass Server Adapter
+       003b  Silicom Dual port Fiber Ethernet PMC Intel based Bypass Server Adapter (PMCX2BPFI)
+       003c  Silicom Dual port Copper Ethernet PCI-X BGE based Bypass Server Adapter (PXG2BPRB)
+1375  Argosystems Inc
+1376  LMC
+1377  Electronic Equipment Production & Distribution GmbH
+1378  Telemann Co. Ltd
+1379  Asahi Kasei Microsystems Co Ltd
+137a  Mark of the Unicorn Inc
+       0001  PCI-324 Audiowire Interface
+137b  PPT Vision
+137c  Iwatsu Electric Co Ltd
+137d  Dynachip Corporation
+137e  Patriot Scientific Corporation
+137f  Japan Satellite Systems Inc
+1380  Sanritz Automation Co Ltd
+1381  Brains Co. Ltd
+1382  Marian - Electronic & Software
+       0001  ARC88 audio recording card
+       2008  Prodif 96 Pro sound system
+       2048  Prodif Plus sound system
+       2088  Marc 8 Midi sound system
+       20c8  Marc A sound system
+       4008  Marc 2 sound system
+       4010  Marc 2 Pro sound system
+       4048  Marc 4 MIDI sound system
+       4088  Marc 4 Digi sound system
+       4248  Marc X sound system
+       4424  TRACE D4 Sound System
+1383  Controlnet Inc
+1384  Reality Simulation Systems Inc
+1385  Netgear
+       0013  WG311T 108 Mbps Wireless PCI Adapter
+       006b  WA301 802.11b Wireless PCI Adapter
+       311a  GA311 Gigabit Ethernet PCI Adapter
+       4100  MA301 802.11b Wireless PCI Adapter
+       4105  MA311 802.11b Wireless PCI Adapter
+       4251  WG111T 108 Mbps Wireless USB 2.0 Adapter
+       4400  WAG511 802.11a/b/g Dual Band Wireless PC Card
+       4600  WAG511 802.11a/b/g Dual Band Wireless PC Card
+       4601  WAG511 802.11a/b/g Dual Band Wireless PC Card
+       4610  WAG511 802.11a/b/g Dual Band Wireless PC Card
+       4800  WG511(v1) 54 Mbps Wireless PC Card
+       4900  WG311v1 54 Mbps Wireless PCI Adapter
+       4a00  WAG311 802.11a/g Wireless PCI Adapter
+       4b00  WG511T 108 Mbps Wireless PC Card
+       4c00  WG311v2 54 Mbps Wireless-G PCI Adapter
+       4d00  WG311T 108 Mbps Wireless PCI Adapter
+       4e00  WG511v2 54 Mbps Wireless PC Card
+       4f00  WG511U Double 108 Mbps  Wireless PC Card
+       5200  GA511 Gigabit PC Card
+       620a  GA620 Gigabit Ethernet
+       622a  GA622
+       630a  GA630 Gigabit Ethernet
+       6b00  WG311v3 54 Mbps Wireless PCI Adapter
+       6d00  WPNT511 RangeMax 240 Mbps Wireless PC Card
+       7b00  WN511B RangeMax Next 270 Mbps Wireless PC Card
+       7c00  WN511T RangeMax Next 300 Mbps Wireless PC Card
+       7d00  WN311B RangeMax Next 270 Mbps Wireless PCI Adapter
+       7e00  WN311T RangeMax Next 300 Mbps Wireless PCI Adapter
+       f004  FA310TX
+1386  Video Domain Technologies
+1387  Systran Corp
+1388  Hitachi Information Technology Co Ltd
+1389  Applicom International
+       0001  PCI1500PFB [Intelligent fieldbus adaptor]
+138a  Fusion Micromedia Corp
+138b  Tokimec Inc
+138c  Silicon Reality
+138d  Future Techno Designs pte Ltd
+138e  Basler GmbH
+138f  Patapsco Designs Inc
+1390  Concept Development Inc
+1391  Development Concepts Inc
+1392  Medialight Inc
+1393  Moxa Technologies Co Ltd
+       0001  UC7000 Serial
+       1020  CP102 (2-port RS-232 PCI)
+       1021  CP102UL (2-port RS-232 Universal PCI)
+       1022  CP102U (2-port RS-232 Universal PCI)
+       1040  Smartio C104H/PCI
+       1041  CP104U (4-port RS-232 Universal PCI)
+       1042  CP104JU (4-port RS-232 Universal PCI)
+       1043  CP104EL (4-port RS-232 Smart PCI Express)
+       1044  POS104UL (4-port RS-232 Universal PCI)
+       1080  CB108 (8-port RS-232 PC/104-plus Module)
+       1140  CT-114 series
+       1141  Industrio CP-114
+       1142  CB114 (4-port RS-232/422/485 PC/104-plus Module)
+       1180  CP118U (8-port RS-232/422/485 Smart Universal PCI)
+       1181  CP118EL (8-port RS-232/422/485 Smart PCI Express)
+       1320  CP132 (2-port RS-422/485 PCI)
+       1321  CP132U (2-Port RS-422/485 Universal PCI)
+       1340  CP134U (4-Port RS-422/485 Universal PCI)
+       1341  CB134I (4-port RS-422/485 PC/104-plus Module)
+       1380  CP138U (8-port RS-232/422/485 Smart Universal PCI)
+       1680  Smartio C168H/PCI
+       1681  CP-168U V2 Smart Serial Board (8-port RS-232)
+       1682  CP168EL (8-port RS-232 Smart PCI Express)
+       2040  Intellio CP-204J
+       2180  Intellio C218 Turbo PCI
+       3200  Intellio C320 Turbo PCI
+1394  Level One Communications
+       0001  LXT1001 Gigabit Ethernet
+               1394 0001  NetCelerator Adapter
+1395  Ambicom Inc
+1396  Cipher Systems Inc
+1397  Cologne Chip Designs GmbH
+       08b4  ISDN network Controller [HFC-4S]
+               1397 b520  HFC-4S [IOB4ST]
+               1397 b540  HFC-4S [Swyx 4xS0 SX2 QuadBri]
+               1397 b556  HFC-4S [Junghanns DuoDBRI]
+       16b8  ISDN network Controller [HFC-8S]
+       2bd0  ISDN network controller [HFC-PCI]
+               0675 1704  ISDN Adapter (PCI Bus, D, C)
+               0675 1708  ISDN Adapter (PCI Bus, D, C, ACPI)
+               1397 2bd0  ISDN Board
+               e4bf 1000  CI1-1-Harp
+       30b1  ISDN network Controller [HFC-E1]
+       b700  ISDN network controller PrimuX S0 [HFC-PCI]
+       f001  GSM Network Controller [HFC-4GSM]
+1398  Clarion co. Ltd
+1399  Rios systems Co Ltd
+139a  Alacritech Inc
+       0001  Quad Port 10/100 Server Accelerator
+       0003  Single Port 10/100 Server Accelerator
+       0005  Single Port Gigabit Server Accelerator
+139b  Mediasonic Multimedia Systems Ltd
+139c  Quantum 3d Inc
+139d  EPL limited
+139e  Media4
+139f  Aethra s.r.l.
+13a0  Crystal Group Inc
+13a1  Kawasaki Heavy Industries Ltd
+13a2  Ositech Communications Inc
+13a3  Hifn Inc.
+       0005  7751 Security Processor
+       0006  6500 Public Key Processor
+       0007  7811 Security Processor
+       0012  7951 Security Processor
+       0014  78XX Security Processor
+       0016  8065 Security Processor
+       0017  8165 Security Processor
+       0018  8154 Security Processor
+       001d  7956 Security Processor
+       0020  7955 Security Processor
+       0026  8155 Security Processor
+       002e  9630 Compression Processor
+13a4  Rascom Inc
+13a5  Audio Digital Imaging Inc
+13a6  Videonics Inc
+13a7  Teles AG
+13a8  Exar Corp.
+       0152  XR17C/D152 Dual PCI UART
+       0154  XR17C154 Quad UART
+       0158  XR17C158 Octal UART
+13a9  Siemens Medical Systems, Ultrasound Group
+13aa  Broadband Networks Inc
+13ab  Arcom Control Systems Ltd
+13ac  Motion Media Technology Ltd
+13ad  Nexus Inc
+13ae  ALD Technology Ltd
+13af  T.Sqware
+13b0  Maxspeed Corp
+13b1  Tamura corporation
+13b2  Techno Chips Co. Ltd
+13b3  Lanart Corporation
+13b4  Wellbean Co Inc
+13b5  ARM
+13b6  Dlog GmbH
+13b7  Logic Devices Inc
+13b8  Nokia Telecommunications oy
+13b9  Elecom Co Ltd
+13ba  Oxford Instruments
+13bb  Sanyo Technosound Co Ltd
+13bc  Bitran Corporation
+13bd  Sharp corporation
+13be  Miroku Jyoho Service Co. Ltd
+13bf  Sharewave Inc
+13c0  Microgate Corporation
+       0010  SyncLink Adapter v1
+       0020  SyncLink SCC Adapter
+       0030  SyncLink Multiport Adapter
+       0210  SyncLink Adapter v2
+13c1  3ware Inc
+       1000  5xxx/6xxx-series PATA-RAID
+       1001  7xxx/8xxx-series PATA/SATA-RAID
+               13c1 1001  7xxx/8xxx-series PATA/SATA-RAID
+       1002  9xxx-series SATA-RAID
+       1003  9550SX SATA-RAID
+       1004  9650SE SATA-II RAID
+13c2  Technotrend Systemtechnik GmbH
+       000e  Technotrend/Hauppauge DVB card rev2.3
+       1019  TTechnoTrend-budget DVB S2-3200
+13c3  Janz Computer AG
+13c4  Phase Metrics
+13c5  Alphi Technology Corp
+13c6  Condor Engineering Inc
+       0520  CEI-520 A429 Card
+       0620  CEI-620 A429 Card
+       0820  CEI-820 A429 Card
+13c7  Blue Chip Technology Ltd
+13c8  Apptech Inc
+13c9  Eaton Corporation
+13ca  Iomega Corporation
+13cb  Yano Electric Co Ltd
+13cc  Metheus Corporation
+13cd  Compatible Systems Corporation
+13ce  Cocom A/S
+13cf  Studio Audio & Video Ltd
+13d0  Techsan Electronics Co Ltd
+       2103  B2C2 FlexCopII DVB chip / Technisat SkyStar2 DVB card
+       2200  B2C2 FlexCopIII DVB chip / Technisat SkyStar2 DVB card
+13d1  Abocom Systems Inc
+       ab02  ADMtek Centaur-C rev 17 [D-Link DFE-680TX] CardBus Fast Ethernet Adapter
+       ab03  21x4x DEC-Tulip compatible 10/100 Ethernet
+       ab06  RTL8139 [FE2000VX] CardBus Fast Ethernet Attached Port Adapter
+       ab08  21x4x DEC-Tulip compatible 10/100 Ethernet
+13d2  Shark Multimedia Inc
+13d3  IMC Networks
+       3219  DTV-DVB 7049A DVB-T USB Stick
+13d4  Graphics Microsystems Inc
+13d5  Media 100 Inc
+13d6  K.I. Technology Co Ltd
+13d7  Toshiba Engineering Corporation
+13d8  Phobos corporation
+13d9  Apex PC Solutions Inc
+13da  Intresource Systems pte Ltd
+13db  Janich & Klass Computertechnik GmbH
+13dc  Netboost Corporation
+13dd  Multimedia Bundle Inc
+13de  ABB Robotics Products AB
+13df  E-Tech Inc
+       0001  PCI56RVP Modem
+               13df 0001  PCI56RVP Modem
+13e0  GVC Corporation
+13e1  Silicom Multimedia Systems Inc
+13e2  Dynamics Research Corporation
+13e3  Nest Inc
+13e4  Calculex Inc
+13e5  Telesoft Design Ltd
+13e6  Argosy research Inc
+13e7  NAC Incorporated
+13e8  Chip Express Corporation
+13e9  Intraserver Technology Inc
+13ea  Dallas Semiconductor
+13eb  Hauppauge Computer Works Inc
+13ec  Zydacron Inc
+       000a  NPC-RC01 Remote control receiver
+13ed  Raytheion E-Systems
+13ee  Hayes Microcomputer Products Inc
+13ef  Coppercom Inc
+13f0  Sundance Technology Inc / IC Plus Corp
+       0200  IC Plus IP100A Integrated 10/100 Ethernet MAC + PHY
+       0201  ST201 Sundance Ethernet
+       1021  TC9020 Gigabit Ethernet
+       1023  IP1000 Family Gigabit Ethernet
+13f1  Oce' - Technologies B.V.
+13f2  Ford Microelectronics Inc
+13f3  Mcdata Corporation
+13f4  Troika Networks, Inc.
+       1401  Zentai Fibre Channel Adapter
+13f5  Kansai Electric Co. Ltd
+13f6  C-Media Electronics Inc
+       0011  CMI8738
+       0100  CM8338A
+               13f6 ffff  CMI8338/C3DX PCI Audio Device
+       0101  CM8338B
+               13f6 0101  CMI8338-031 PCI Audio Device
+       0111  CM8738
+               1019 0970  P6STP-FL motherboard
+               1043 8035  CUSI-FX motherboard
+               1043 8077  CMI8738 6-channel audio controller
+               1043 80e2  CMI8738 6ch-MX
+               13f6 0111  CMI8738/C3DX PCI Audio Device
+               13f6 9761  Theatron Agrippa
+               153b 1144  Aureon 5.1
+               153b 1170  Aureon 7.1
+               1681 a000  Gamesurround MUSE XL
+               270f 1103  CT-7NJS Ultra motherboard
+               584d 3731  Digital X-Mystique
+               584d 3741  X-Plosion 7.1
+               584d 3751  X-Raider 7.1
+               584d 3761  X-Mystique 7.1 LP
+               584d 3771  X-Mystique 7.1 LP Value
+               7284 8384  Striker 7.1
+       0211  CM8738
+       8788  CMI8788 [Oxygen HD Audio]
+               1043 8269  Virtuoso 200 (Xonar D2)
+               14c3 1710  HIFIER
+               1a58 0910  Barracuda AC-1
+               415a 5431  X-Meridian 7.1
+               584d 3781  HDA X-Purity 7.1 Platinum
+               7284 9761  CLARO
+       9880  CM9880
+13f7  Wildfire Communications
+13f8  Ad Lib Multimedia Inc
+13f9  NTT Advanced Technology Corp.
+13fa  Pentland Systems Ltd
+13fb  Aydin Corp
+13fc  Computer Peripherals International
+13fd  Micro Science Inc
+13fe  Advantech Co. Ltd
+       1240  PCI-1240 4-channel stepper motor controller card
+       1600  PCI-16xx series PCI multiport serial board (function 0)
+# This board has two PCI functions, appears as two PCI devices
+               1601 0002  PCI-1601 2-port unisolated RS-422/485
+# This board has two PCI functions, appears as two PCI devices
+               1602 0002  PCI-1602 2-port isolated RS-422/485
+               1612 0004  PCI-1612 4-port RS-232/422/485
+       1603  PCI-1603 2-port isolated RS-232/current loop
+       1604  PCI-1604 2-port RS-232
+       16ff  PCI-16xx series PCI multiport serial board (function 1: RX/TX steering CPLD)
+               1601 0000  PCI-1601 2-port unisolated RS-422/485 PCI communications card
+               1602 0000  PCI-1602 2-port isolated RS-422/485
+               1612 0000  PCI-1612 4-port RS-232/422/485
+       1733  PCI-1733 32-channel isolated digital input card
+       1752  PCI-1752
+       1754  PCI-1754
+       1756  PCI-1756
+13ff  Silicon Spice Inc
+1400  Artx Inc
+       1401  9432 TX
+1401  CR-Systems A/S
+1402  Meilhaus Electronic GmbH
+1403  Ascor Inc
+1404  Fundamental Software Inc
+1405  Excalibur Systems Inc
+1406  Oce' Printing Systems GmbH
+1407  Lava Computer mfg Inc
+       0100  Lava Dual Serial
+       0101  Lava Quatro A
+       0102  Lava Quatro B
+       0110  Lava DSerial-PCI Port A
+       0111  Lava DSerial-PCI Port B
+       0120  Quattro-PCI A
+       0121  Quattro-PCI B
+       0180  Lava Octo A
+       0181  Lava Octo B
+       0200  Lava Port Plus
+       0201  Lava Quad A
+       0202  Lava Quad B
+       0220  Lava Quattro PCI Ports A/B
+       0221  Lava Quattro PCI Ports C/D
+       0500  Lava Single Serial
+       0600  Lava Port 650
+       8000  Lava Parallel
+       8001  Dual parallel port controller A
+       8002  Lava Dual Parallel port A
+       8003  Lava Dual Parallel port B
+       8800  BOCA Research IOPPAR
+1408  Aloka Co. Ltd
+1409  Timedia Technology Co Ltd
+       7168  PCI2S550 (Dual 16550 UART)
+140a  DSP Research Inc
+140b  Ramix Inc
+140c  Elmic Systems Inc
+140d  Matsushita Electric Works Ltd
+140e  Goepel Electronic GmbH
+140f  Salient Systems Corp
+1410  Midas lab Inc
+1411  Ikos Systems Inc
+# Nee IC Ensemble Inc.
+1412  VIA Technologies Inc.
+       1712  ICE1712 [Envy24] PCI Multi-Channel I/O Controller
+               1412 1712  Hoontech ST Audio DSP 24
+               1412 d630  M-Audio Delta 1010
+               1412 d631  M-Audio Delta DiO
+               1412 d632  M-Audio Delta 66
+               1412 d633  M-Audio Delta 44
+               1412 d634  M-Audio Delta Audiophile
+               1412 d635  M-Audio Delta TDIF
+               1412 d637  M-Audio Delta RBUS
+               1412 d638  M-Audio Delta 410
+               1412 d63b  M-Audio Delta 1010LT
+               1412 d63c  Digigram VX442
+               1416 1712  Hoontech ST Audio DSP 24 Media 7.1
+               153b 1115  EWS88 MT
+               153b 1125  EWS88 MT (Master)
+               153b 112b  EWS88 D
+               153b 112c  EWS88 D (Master)
+               153b 1130  EWX 24/96
+               153b 1138  DMX 6fire 24/96
+               153b 1151  PHASE88
+               16ce 1040  Edirol DA-2496
+       1724  VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller
+               1412 1724  Albatron PX865PE 7.1
+               1412 3630  M-Audio Revolution 7.1
+               1412 3631  M-Audio Revolution 5.1
+               153b 1145  Aureon 7.1 Space
+               153b 1147  Aureon 5.1 Sky
+               153b 1153  Aureon 7.1 Universe
+               270f f641  ZNF3-150
+               270f f645  ZNF3-250
+1413  Addonics
+1414  Microsoft Corporation
+       5801  XMA Decoder (Xenon)
+       5802  SATA Controller - CdRom (Xenon)
+       5803  SATA Controller - Disk (Xenon)
+       5804  OHCI Controller 0 (Xenon)
+       5805  EHCI Controller 0 (Xenon)
+       5806  OHCI Controller 1 (Xenon)
+       5807  EHCI Controller 1 (Xenon)
+       580a  Fast Ethernet Adapter (Xenon)
+       580b  Secure Flash Controller (Xenon)
+       580d  System Management Controller (Xenon)
+       5811  Xenos GPU (Xenon)
+1415  Oxford Semiconductor Ltd
+       8403  VScom 011H-EP1 1 port parallel adaptor
+       9500  OX16PCI954 (Quad 16950 UART) function 0 (Disabled)
+       9501  OX16PCI954 (Quad 16950 UART) function 0 (Uart)
+               12c4 0201  Titan/cPCI (2 port)
+               12c4 0202  Titan/cPCI (4 port)
+               12c4 0203  Titan/cPCI (8 port)
+               12c4 0210  Titan/104-Plus (8 port, p1-4)
+               131f 2050  CyberPro (4-port)
+# Model IO1085, Part No: JJ-P46012
+               131f 2051  CyberSerial 4S Plus
+               15ed 2000  MCCR Serial p0-3 of 8
+               15ed 2001  MCCR Serial p0-3 of 16
+       950a  EXSYS EX-41092 Dual 16950 Serial adapter
+       950b  OXCB950 Cardbus 16950 UART
+       9510  OX16PCI954 (Quad 16950 UART) function 1 (Disabled)
+               12c4 0200  Titan/cPCI (Unused)
+       9511  OX16PCI954 (Quad 16950 UART) function 1 (8bit bus)
+               12c4 0211  Titan/104-Plus (8 port, p5-8)
+               15ed 2000  MCCR Serial p4-7 of 8
+               15ed 2001  MCCR Serial p4-15 of 16
+       9512  OX16PCI954 (Quad 16950 UART) function 1 (32bit bus)
+       9513  OX16PCI954 (Quad 16950 UART) function 1 (parallel port)
+       9521  OX16PCI952 (Dual 16950 UART)
+       9523  OX16PCI952 Integrated Parallel Port
+1416  Multiwave Innovation pte Ltd
+1417  Convergenet Technologies Inc
+1418  Kyushu electronics systems Inc
+1419  Excel Switching Corp
+141a  Apache Micro Peripherals Inc
+141b  Zoom Telephonics Inc
+141d  Digitan Systems Inc
+141e  Fanuc Ltd
+141f  Visiontech Ltd
+1420  Psion Dacom plc
+       8002  Gold Card NetGlobal 56k+10/100Mb CardBus (Ethernet part)
+       8003  Gold Card NetGlobal 56k+10/100Mb CardBus (Modem part)
+1421  Ads Technologies Inc
+1422  Ygrec Systems Co Ltd
+1423  Custom Technology Corp.
+1424  Videoserver Connections
+1425  Chelsio Communications Inc
+       000b  T210 Protocol Engine
+       000c  T204 Protocol Engine
+       0030  T310 10GbE Single Port Protocol Engine Ethernet Adapter
+               103c 705e  PCIe 10GBase-SR [AD386A]
+       0031  T320 10GbE Dual Port Protocol Engine Ethernet Adapter
+       0032  T302 1GbE Dual Port Protocol Engine Ethernet adapter
+       0033  T304 1GbE Quad Port Protocol Engine Ethernet adapter
+1426  Storage Technology Corp.
+1427  Better On-Line Solutions
+1428  Edec Co Ltd
+1429  Unex Technology Corp.
+142a  Kingmax Technology Inc
+142b  Radiolan
+142c  Minton Optic Industry Co Ltd
+142d  Pix stream Inc
+142e  Vitec Multimedia
+       4020  VM2-2 [Video Maker 2] MPEG1/2 Encoder
+       4337  VM2-2-C7 [Video Maker 2 rev. C7] MPEG1/2 Encoder
+142f  Radicom Research Inc
+1430  ITT Aerospace/Communications Division
+1431  Gilat Satellite Networks
+1432  Edimax Computer Co.
+       9130  RTL81xx Fast Ethernet
+1433  Eltec Elektronik GmbH
+# Nee Real Time Devices US Inc.
+1435  RTD Embedded Technologies, Inc.
+       4520  PCI4520
+       6020  SPM6020
+       6030  SPM6030
+       6420  SPM186420
+       6430  SPM176430
+       7520  DM7520
+       7820  DM7820
+1436  CIS Technology Inc
+1437  Nissin Inc Co
+1438  Atmel-dream
+1439  Outsource Engineering & Mfg. Inc
+143a  Stargate Solutions Inc
+143b  Canon Research Center, America
+143c  Amlogic Inc
+143d  Tamarack Microelectronics Inc
+143e  Jones Futurex Inc
+143f  Lightwell Co Ltd - Zax Division
+1440  ALGOL Corp.
+1441  AGIE Ltd
+1442  Phoenix Contact GmbH & Co.
+1443  Unibrain S.A.
+1444  TRW
+1445  Logical DO Ltd
+1446  Graphin Co Ltd
+1447  AIM GmBH
+1448  Alesis Studio Electronics
+1449  TUT Systems Inc
+144a  Adlink Technology
+       7296  PCI-7296
+       7432  PCI-7432
+       7433  PCI-7433
+       7434  PCI-7434
+       7841  PCI-7841
+       8133  PCI-8133
+       8164  PCI-8164
+       8554  PCI-8554
+       9111  PCI-9111
+       9113  PCI-9113
+       9114  PCI-9114
+144b  Loronix Information Systems Inc
+144c  Catalina Research Inc
+144d  Samsung Electronics Co Ltd
+       c00c  P35 laptop
+144e  OLITEC
+144f  Askey Computer Corp.
+1450  Octave Communications Ind.
+1451  SP3D Chip Design GmBH
+1453  MYCOM Inc
+1454  Altiga Networks
+1455  Logic Plus Plus Inc
+1456  Advanced Hardware Architectures
+1457  Nuera Communications Inc
+1458  Giga-byte Technology
+       0c11  K8NS Pro Mainboard
+       9001  GC-PTV-TAF Hybrid TV card
+       e911  GN-WIAG02
+1459  DOOIN Electronics
+145a  Escalate Networks Inc
+145b  PRAIM SRL
+145c  Cryptek
+145d  Gallant Computer Inc
+145e  Aashima Technology B.V.
+145f  Baldor Electric Company
+       0001  NextMove PCI
+1460  DYNARC INC
+1461  Avermedia Technologies Inc
+       a3ce  M179
+       a3cf  M179
+       a836  M115 DVB-T, PAL/SECAM/NTSC Tuner
+       f436  AVerTV Hybrid+FM
+1462  Micro-Star International Co., Ltd.
+       5501  nVidia NV15DDR [GeForce2 Ti]
+       6819  Broadcom Corporation BCM4306 802.11b/g Wireless LAN Controller [MSI CB54G]
+       6825  PCI Card wireless 11g [PC54G]
+       6834  RaLink RT2500 802.11g [PC54G2]
+       7125  MS-7125 [K8N Neo4 Platinum]
+       7235  P965 Neo MS-7235 mainboard
+       7242  K9AGM RS485 Motherboard
+       7250  MS-7250 Motherboard [K9N Platinum SLI/non-SLI]
+       7327  K9AGM2-FIH Motherboard
+       8725  NVIDIA NV25 [GeForce4 Ti 4600] VGA Adapter
+       9000  NVIDIA NV28 [GeForce4 Ti 4800] VGA Adapter
+       9110  GeFORCE FX5200
+       9119  NVIDIA NV31 [GeForce FX 5600XT] VGA Adapter
+       9123  NVIDIA NV31 [GeForce FX 5600] FX5600-VTDR128 [MS-8912]
+       9510  Radeon 9600XT
+       9511  Radeon 9600XT
+       9591  nVidia Corporation NV36 [GeForce FX 5700LE]
+       b834  Wireless 11g Turbo G PCI card [MSI PC60G]
+1463  Fast Corporation
+1464  Interactive Circuits & Systems Ltd
+1465  GN NETTEST Telecom DIV.
+1466  Designpro Inc.
+1467  DIGICOM SPA
+1468  AMBIT Microsystem Corp.
+1469  Cleveland Motion Controls
+146a  IFR
+146b  Parascan Technologies Ltd
+146c  Ruby Tech Corp.
+       1430  FE-1430TX Fast Ethernet PCI Adapter
+146d  Tachyon, INC.
+146e  Williams Electronics Games, Inc.
+146f  Multi Dimensional Consulting Inc
+1470  Bay Networks
+1471  Integrated Telecom Express Inc
+1472  DAIKIN Industries, Ltd
+1473  ZAPEX Technologies Inc
+1474  Doug Carson & Associates
+1475  PICAZO Communications
+1476  MORTARA Instrument Inc
+1477  Net Insight
+1478  DIATREND Corporation
+1479  TORAY Industries Inc
+147a  FORMOSA Industrial Computing
+147b  ABIT Computer Corp.
+147c  AWARE, Inc.
+147d  Interworks Computer Products
+147e  Matsushita Graphic Communication Systems, Inc.
+147f  NIHON UNISYS, Ltd.
+1480  SCII Telecom
+1481  BIOPAC Systems Inc
+1482  ISYTEC - Integrierte Systemtechnik GmBH
+1483  LABWAY Corporation
+1484  Logic Corporation
+1485  ERMA - Electronic GmBH
+1486  L3 Communications Telemetry & Instrumentation
+1487  MARQUETTE Medical Systems
+1488  KONTRON Electronik GmBH
+1489  KYE Systems Corporation
+148a  OPTO
+148b  INNOMEDIALOGIC Inc.
+148c  C.P. Technology Co. Ltd
+148d  DIGICOM Systems, Inc.
+       1003  HCF 56k Data/Fax Modem
+148e  OSI Plus Corporation
+148f  Plant Equipment, Inc.
+1490  Stone Microsystems PTY Ltd.
+1491  ZEAL Corporation
+1492  Time Logic Corporation
+1493  MAKER Communications
+1494  WINTOP Technology, Inc.
+1495  TOKAI Communications Industry Co. Ltd
+1496  JOYTECH Computer Co., Ltd.
+1497  SMA Regelsysteme GmBH
+       1497  SMA Technologie AG
+1498  TEWS Technologies GmbH
+       0330  TPMC816 2 Channel CAN bus controller.
+       0385  TPMC901 Extended CAN bus with 2/4/6 CAN controller
+       21cc  TCP460 CompactPCI 16 Channel Serial Interface RS232/RS422
+       21cd  TCP461 CompactPCI 8 Channel Serial Interface RS232/RS422
+       30c8  TPCI200
+1499  EMTEC CO., Ltd
+149a  ANDOR Technology Ltd
+149b  SEIKO Instruments Inc
+149c  OVISLINK Corp.
+149d  NEWTEK Inc
+       0001  Video Toaster for PC
+149e  Mapletree Networks Inc.
+149f  LECTRON Co Ltd
+14a0  SOFTING GmBH
+14a1  Systembase Co Ltd
+14a2  Millennium Engineering Inc
+14a3  Maverick Networks
+14a4  GVC/BCM Advanced Research
+14a5  XIONICS Document Technologies Inc
+14a6  INOVA Computers GmBH & Co KG
+14a7  MYTHOS Systems Inc
+14a8  FEATRON Technologies Corporation
+14a9  HIVERTEC Inc
+14aa  Advanced MOS Technology Inc
+14ab  Mentor Graphics Corp.
+14ac  Novaweb Technologies Inc
+14ad  Time Space Radio AB
+14ae  CTI, Inc
+14af  Guillemot Corporation
+       7102  3D Prophet II MX
+14b0  BST Communication Technology Ltd
+14b1  Nextcom K.K.
+14b2  ENNOVATE Networks Inc
+14b3  XPEED Inc
+       0000  DSL NIC
+14b4  PHILIPS Business Electronics B.V.
+14b5  Creamware GmBH
+       0200  Scope
+       0300  Pulsar
+       0400  PulsarSRB
+       0600  Pulsar2
+       0800  DSP-Board
+       0900  DSP-Board
+       0a00  DSP-Board
+       0b00  DSP-Board
+14b6  Quantum Data Corp.
+14b7  PROXIM Inc
+       0001  Symphony 4110
+14b8  Techsoft Technology Co Ltd
+14b9  AIRONET Wireless Communications
+       0001  PC4800
+       0340  PC4800
+       0350  PC4800
+       4500  PC4500
+       4800  Cisco Aironet 340 802.11b Wireless LAN Adapter/Aironet PC4800
+       a504  Cisco Aironet Wireless 802.11b
+       a505  Cisco Aironet CB20a 802.11a Wireless LAN Adapter
+       a506  Cisco Aironet Mini PCI b/g
+14ba  INTERNIX Inc.
+14bb  SEMTECH Corporation
+14bc  Globespan Semiconductor Inc.
+       d002  Pulsar [PCI ADSL Card]
+       d00f  Pulsar [PCI ADSL Card]
+14bd  CARDIO Control N.V.
+14be  L3 Communications
+14bf  SPIDER Communications Inc.
+14c0  COMPAL Electronics Inc
+14c1  MYRICOM Inc.
+       0008  Myri-10G Dual-Protocol NIC (10G-PCIE-8A)
+       8043  Myrinet 2000 Scalable Cluster Interconnect
+               103c 1240  Myrinet M2L-PCI64/2-3.0 LANai 7.4 (HP OEM)
+14c2  DTK Computer
+14c3  MEDIATEK Corp.
+14c4  IWASAKI Information Systems Co Ltd
+14c5  Automation Products AB
+14c6  Data Race Inc
+14c7  Modular Technology Holdings Ltd
+14c8  Turbocomm Tech. Inc.
+14c9  ODIN Telesystems Inc
+14ca  PE Logic Corp.
+14cb  Billionton Systems Inc
+14cc  NAKAYO Telecommunications Inc
+14cd  Universal Scientific Ind.
+14ce  Whistle Communications
+14cf  TEK Microsystems Inc.
+14d0  Ericsson Axe R & D
+14d1  Computer Hi-Tech Co Ltd
+14d2  Titan Electronics Inc
+       8001  VScom 010L 1 port parallel adaptor
+       8002  VScom 020L 2 port parallel adaptor
+       8010  VScom 100L 1 port serial adaptor
+       8011  VScom 110L 1 port serial and 1 port parallel adaptor
+       8020  VScom 200L 1 port serial adaptor
+       8021  VScom 210L 2 port serial and 1 port parallel adaptor
+       8040  VScom 400L 4 port serial adaptor
+       8080  VScom 800L 8 port serial adaptor
+       a000  VScom 010H 1 port parallel adaptor
+       a001  VScom 100H 1 port serial adaptor
+       a003  VScom 400H 4 port serial adaptor
+       a004  VScom 400HF1 4 port serial adaptor
+       a005  VScom 200H 2 port serial adaptor
+       e001  VScom 010HV2 1 port parallel adaptor
+       e010  VScom 100HV2 1 port serial adaptor
+       e020  VScom 200HV2 2 port serial adaptor
+14d3  CIRTECH (UK) Ltd
+14d4  Panacom Technology Corp
+14d5  Nitsuko Corporation
+14d6  Accusys Inc
+       6101  ACS-61xxx, PCIe to SAS/SATA RAID HBA
+       6201  ACS-62xxx, External PCIe to SAS/SATA RAID controller
+14d7  Hirakawa Hewtech Corp
+14d8  HOPF Elektronik GmBH
+# Formerly SiPackets, Inc., formerly API NetWorks, Inc., formerly Alpha Processor, Inc.
+14d9  Alliance Semiconductor Corporation
+       0010  AP1011/SP1011 HyperTransport-PCI Bridge [Sturgeon]
+       9000  AS90L10204/10208 HyperTransport to PCI-X Bridge
+14da  National Aerospace Laboratories
+14db  AFAVLAB Technology Inc
+       2120  TK9902
+       2182  AFAVLAB Technology Inc. 8-port serial card
+14dc  Amplicon Liveline Ltd
+       0000  PCI230
+       0001  PCI242
+       0002  PCI244
+       0003  PCI247
+       0004  PCI248
+       0005  PCI249
+       0006  PCI260
+       0007  PCI224
+       0008  PCI234
+       0009  PCI236
+       000a  PCI272
+       000b  PCI215
+14dd  Boulder Design Labs Inc
+14de  Applied Integration Corporation
+14df  ASIC Communications Corp
+14e1  INVERTEX
+14e2  INFOLIBRIA
+14e3  AMTELCO
+14e4  Broadcom Corporation
+       0800  Sentry5 Chipcommon I/O Controller
+       0804  Sentry5 PCI Bridge
+       0805  Sentry5 MIPS32 CPU
+       0806  Sentry5 Ethernet Controller
+       080b  Sentry5 Crypto Accelerator
+       080f  Sentry5 DDR/SDR RAM Controller
+       0811  Sentry5 External Interface Core
+       0816  BCM3302 Sentry5 MIPS32 CPU
+       1600  NetXtreme BCM5752 Gigabit Ethernet PCI Express
+               103c 3015  PCIe LAN on Motherboard
+               107b 5048  E4500 Onboard
+       1601  NetXtreme BCM5752M Gigabit Ethernet PCI Express
+       1639  NetXtreme II BCM5709 Gigabit Ethernet
+               103c 7055  NC382i Integrated Quad Port PCI Express Gigabit Server Adapter
+               103c 7059  NC382T PCI Express Dual Port Multifunction Gigabit Server Adapter
+       163a  NetXtreme II BCM5709S Gigabit Ethernet
+# ice
+               103c 171d  NC382m Dual Port 1GbE Multifunction BL-c Adapter
+               103c 7056  NC382i Integrated Quad Port PCI Express Gigabit Server Adapter
+       163b  NetXtreme II BCM5716 Gigabit Ethernet
+       1644  NetXtreme BCM5700 Gigabit Ethernet
+               1014 0277  Broadcom Vigil B5700 1000Base-T
+               1028 00d1  Broadcom BCM5700
+               1028 0106  Broadcom BCM5700
+               1028 0109  Broadcom BCM5700 1000Base-T
+               1028 010a  Broadcom BCM5700 1000BaseTX
+               10b7 1000  3C996-T 1000Base-T
+               10b7 1001  3C996B-T 1000Base-T
+               10b7 1002  3C996C-T 1000Base-T
+               10b7 1003  3C997-T 1000Base-T Dual Port
+               10b7 1004  3C996-SX 1000Base-SX
+               10b7 1005  3C997-SX 1000Base-SX Dual Port
+               10b7 1008  3C942 Gigabit LOM (31X31)
+               14e4 0002  NetXtreme 1000Base-SX
+               14e4 0003  NetXtreme 1000Base-SX
+               14e4 0004  NetXtreme 1000Base-T
+               14e4 1028  NetXtreme 1000BaseTX
+               14e4 1644  BCM5700 1000Base-T
+       1645  NetXtreme BCM5701 Gigabit Ethernet
+               0e11 007c  NC7770 Gigabit Server Adapter (PCI-X, 10/100/1000-T)
+               0e11 007d  NC6770 Gigabit Server Adapter (PCI-X, 1000-SX)
+               0e11 0085  NC7780 Gigabit Server Adapter (embedded, WOL)
+               0e11 0099  NC7780 Gigabit Server Adapter (embedded, WOL)
+               0e11 009a  NC7770 Gigabit Server Adapter (PCI-X, 10/100/1000-T)
+               0e11 00c1  NC6770 Gigabit Server Adapter (PCI-X, 1000-SX)
+               1028 0121  Broadcom BCM5701 1000Base-T
+               103c 128a  BCM5701 1000Base-T (HP, OEM 3COM)
+               103c 128b  1000Base-SX (PCI) [A7073A]
+               103c 12a4  Core Lan 1000Base-T
+               103c 12c1  IOX Core Lan 1000Base-T [A7109AX]
+               103c 1300  Core LAN/SCSI Combo [A6794A]
+               10a9 8010  IO9/IO10 Gigabit Ethernet (Copper)
+               10a9 8011  Gigabit Ethernet (Copper)
+               10a9 8012  Gigabit Ethernet (Fiber)
+               10b7 1004  3C996-SX 1000Base-SX
+               10b7 1006  3C996B-T 1000Base-T
+               10b7 1007  3C1000-T 1000Base-T
+               10b7 1008  3C940-BR01 1000Base-T
+               14e4 0001  BCM5701 1000Base-T
+               14e4 0005  BCM5701 1000Base-T
+               14e4 0006  BCM5701 1000Base-T
+               14e4 0007  BCM5701 1000Base-SX
+               14e4 0008  BCM5701 1000Base-T
+               14e4 1645  NetXtreme BCM5701 Gigabit Ethernet
+               14e4 8008  BCM5701 1000Base-T
+       1646  NetXtreme BCM5702 Gigabit Ethernet
+               0e11 00bb  NC7760 1000BaseTX
+               1028 0126  Broadcom BCM5702 1000BaseTX
+               14e4 8009  BCM5702 1000BaseTX
+       1647  NetXtreme BCM5703 Gigabit Ethernet
+               0e11 0099  NC7780 1000BaseTX
+               0e11 009a  NC7770 1000BaseTX
+               10a9 8010  SGI IO9 Gigabit Ethernet (Copper)
+               14e4 0009  BCM5703 1000BaseTX
+               14e4 000a  BCM5703 1000BaseSX
+               14e4 000b  BCM5703 1000BaseTX
+               14e4 8009  BCM5703 1000BaseTX
+               14e4 800a  BCM5703 1000BaseTX
+       1648  NetXtreme BCM5704 Gigabit Ethernet
+               0e11 00cf  NC7772 Gigabit Server Adapter (PCI-X, 10,100,1000-T)
+               0e11 00d0  NC7782 Gigabit Server Adapter (PCI-X, 10,100,1000-T)
+               0e11 00d1  NC7783 Gigabit Server Adapter (PCI-X, 10,100,1000-T)
+               1028 014a  PowerEdge 1750
+               103c 310f  NC7782 Gigabit Server Adapter (PCI-X, 10,100,1000-T)
+               10a9 8013  Dual Port Gigabit Ethernet (PCI-X,Copper)
+               10a9 8018  Dual Port Gigabit Ethernet (A330)
+               10a9 801a  Dual Port Gigabit Ethernet (IA-blade)
+               10a9 801b  Quad Port Gigabit Ethernet (PCI-E,Copper)
+               10b7 2000  3C998-T Dual Port 10/100/1000 PCI-X
+               10b7 3000  3C999-T Quad Port 10/100/1000 PCI-X
+               1166 1648  NetXtreme CIOB-E 1000Base-T
+               1734 100b  PRIMERGY RX/TX series onboard LAN
+       1649  NetXtreme BCM5704S_2 Gigabit Ethernet
+       164a  NetXtreme II BCM5706 Gigabit Ethernet
+               103c 3070  NC380T PCI Express Dual Port Multifunction Gigabit Server Adapter
+               103c 3101  NC370T MultifuNCtion Gigabit Server Adapter
+       164c  NetXtreme II BCM5708 Gigabit Ethernet
+               1028 0205  Broadcom NetXtreme II BCM5708 1000Base-T (rev 12)
+               103c 7037  NC373T PCI Express Multifunction Gigabit Server Adapter
+               103c 7038  NC373i Integrated Multifunction Gigabit Server Adapter
+       164d  NetXtreme BCM5702FE Gigabit Ethernet
+       164e  NetXtreme II BCM57710 10Gigabit PCIe [Everest]
+               103c 171c  NC532m Dual Port 10GbE Multifunction BL-C Adapter
+               103c 7058  NC532i Dual Port 10GbE Multifunction BL-C Adapter
+       164f  NetXtreme II BCM57711 10Gigabit PCIe
+       1650  NetXtreme II BCM57711E 10Gigabit PCIe
+               103c 171c  NC532m Dual Port 10GbE Multifunction BL-C Adapter
+               103c 7058  NC532i Dual Port 10GbE Multifunction BL-C Adapter
+       1653  NetXtreme BCM5705 Gigabit Ethernet
+               0e11 00e3  NC7761 Gigabit Server Adapter
+       1654  NetXtreme BCM5705_2 Gigabit Ethernet
+               0e11 00e3  NC7761 Gigabit Server Adapter
+               103c 3100  NC1020 ProLiant Gigabit Server Adapter 32 PCI
+               103c 3226  NC150T 4-port Gigabit Combo Switch & Adapter
+       1658  NetXtreme BCM5720 Gigabit Ethernet
+       1659  NetXtreme BCM5721 Gigabit Ethernet PCI Express
+               1014 02c6  eServer xSeries server mainboard
+               1028 01e6  PowerEdge 860
+               103c 7031  NC320T PCIe Gigabit Server Adapter
+               103c 7032  NC320i PCIe Gigabit Server Adapter
+               1734 1061  PRIMERGY RX/TX S2 series onboard LAN
+       165a  NetXtreme BCM5722 Gigabit Ethernet PCI Express
+# Dual NIC server
+               1014 0378  IBM System x3350 (Machine type 4192)
+               1028 020f  PowerEdge R300
+               1028 0210  PowerEdge T300
+               1028 0225  PWA-Pandora Motherboard [PowerEdge T105]
+               103c 7051  NC105i PCIe Gigabit Server Adapter
+               103c 7052  NC105T PCIe Gigabit Server Adapter
+       165b  NetXtreme BCM5723 Gigabit Ethernet PCIe
+               103c 705d  NC107i Integrated PCI Express Gigabit Server Adapter
+       165d  NetXtreme BCM5705M Gigabit Ethernet
+               1028 865d  Latitude D400
+               14e4 165d  Dell Latitude D600
+       165e  NetXtreme BCM5705M_2 Gigabit Ethernet
+               103c 088c  NC8000 laptop
+               103c 0890  NC6000 laptop
+               103c 099c  NX6110/NC6120
+               10cf 1279  LifeBook E8010D
+       1668  NetXtreme BCM5714 Gigabit Ethernet
+               103c 7039  NC324i PCIe Dual Port Gigabit Server Adapter
+       1669  NetXtreme 5714S Gigabit Ethernet
+       166a  NetXtreme BCM5780 Gigabit Ethernet
+       166b  NetXtreme BCM5780S Gigabit Ethernet
+       166e  570x 10/100 Integrated Controller
+       1672  NetXtreme BCM5754M Gigabit Ethernet PCI Express
+       1673  NetXtreme BCM5755M Gigabit Ethernet PCI Express
+       1674  NetXtreme BCM5756ME Gigabit Ethernet PCI Express
+       1676  NetXtreme BCM5750 Gigabit Ethernet
+       1677  NetXtreme BCM5751 Gigabit Ethernet PCI Express
+               1028 0177  Dimension 8400
+               1028 0179  Optiplex GX280
+               1028 0182  Latitude D610
+               1028 0187  Precision M70
+               1028 01ad  OptiPlex GX620
+               103c 3006  DC7100 SFF(DX878AV)
+               1462 028c  915P/G Neo2
+               1734 105d  Scenic W620
+       1678  NetXtreme BCM5715 Gigabit Ethernet
+               103c 703e  NC326i PCIe Dual Port Gigabit Server Adapter
+       1679  NetXtreme BCM5715S Gigabit Ethernet
+               103c 1707  NC326m PCIe Dual Port Adapter
+               103c 170c  NC325m PCIe Quad Port Adapter
+               103c 703c  NC326i PCIe Dual Port Gigabit Server Adapter
+       167a  NetXtreme BCM5754 Gigabit Ethernet PCI Express
+               1028 01da  OptiPlex 745
+               1028 01de  Precision 390
+               1028 01df  PowerEdge SC440
+       167b  NetXtreme BCM5755 Gigabit Ethernet PCI Express
+               103c 280a  DC5750 Microtower
+       167c  NetXtreme BCM5750M Gigabit Ethernet
+       167d  NetXtreme BCM5751M Gigabit Ethernet PCI Express
+               1014 0577  ThinkPad Z60t
+               103c 0940  HP Compaq nw8240 Mobile Workstation
+               17aa 2081  ThinkPad R60e
+       167e  NetXtreme BCM5751F Fast Ethernet PCI Express
+       167f  NetLink BCM5787F Fast Ethernet PCI Express
+       1680  NetXtreme BCM5761e Gigabit Ethernet PCIe
+       1681  NetXtreme BCM5761 Gigabit Ethernet PCIe
+       1684  NetXtreme BCM5764M Gigabit Ethernet PCIe
+       1693  NetLink BCM5787M Gigabit Ethernet PCI Express
+               1025 0121  Aspire 5920G
+               103c 30c0  6710b
+       1696  NetXtreme BCM5782 Gigabit Ethernet
+               103c 12bc  d530 CMT (DG746A)
+               14e4 000d  NetXtreme BCM5782 1000Base-T
+       1698  NetLink BCM5784M Gigabit Ethernet PCIe
+       1699  NetLink BCM5785 Gigabit Ethernet
+       169a  NetLink BCM5786 Gigabit Ethernet PCI Express
+       169b  NetLink BCM5787 Gigabit Ethernet PCI Express
+       169c  NetXtreme BCM5788 Gigabit Ethernet
+               103c 308b  MX6125
+               103c 30a1  NC2400
+               144d c018  X20
+               1462 590c  KT6 Delta-FIS2R (MS-6590)
+       169d  NetLink BCM5789 Gigabit Ethernet PCI Express
+       16a6  NetXtreme BCM5702X Gigabit Ethernet
+               0e11 00bb  NC7760 Gigabit Server Adapter (PCI-X, 10/100/1000-T)
+               1028 0126  BCM5702 1000Base-T
+               14e4 000c  BCM5702 1000Base-T
+               14e4 8009  BCM5702 1000Base-T
+       16a7  NetXtreme BCM5703X Gigabit Ethernet
+               0e11 00ca  NC7771 Gigabit Server Adapter (PCI-X, 10,100,1000-T)
+               0e11 00cb  NC7781 Gigabit Server Adapter (PCI-X, 10,100,1000-T)
+               14e4 0009  NetXtreme BCM5703 1000Base-T
+               14e4 000a  NetXtreme BCM5703 1000Base-SX
+               14e4 000b  NetXtreme BCM5703 1000Base-T
+               14e4 800a  NetXtreme BCM5703 1000Base-T
+       16a8  NetXtreme BCM5704S Gigabit Ethernet
+               10a9 8014  Dual Port Gigabit Ethernet (PCI-X,Fiber)
+               10a9 801c  Quad Port Gigabit Ethernet (PCI-E,Fiber)
+               10b7 2001  3C998-SX Dual Port 1000-SX PCI-X
+       16aa  NetXtreme II BCM5706S Gigabit Ethernet
+               103c 3102  NC370F MultifuNCtion Gigabit Server Adapter
+       16ac  NetXtreme II BCM5708S Gigabit Ethernet
+               1014 0304  NetXtreme II BCM5708S Gigabit Ethernet
+               103c 1706  NC373m Multifunction Gigabit Server Adapter
+               103c 7038  NC373i PCI Express Multifunction Gigabit Server Adapter
+               103c 703b  NC373i Integrated Multifunction Gigabit Server Adapter
+               103c 703d  NC373F PCI Express Multifunction Gigabit Server Adapter
+       16c6  NetXtreme BCM5702A3 Gigabit Ethernet
+               10b7 1100  3C1000B-T 10/100/1000 PCI
+               14e4 000c  BCM5702 1000Base-T
+               14e4 8009  BCM5702 1000Base-T
+       16c7  NetXtreme BCM5703 Gigabit Ethernet
+               0e11 00ca  NC7771 Gigabit Server Adapter (PCI-X, 10,100,1000-T)
+               0e11 00cb  NC7781 Gigabit Server Adapter (PCI-X, 10,100,1000-T)
+               103c 12c3  Combo FC/GigE-SX [A9782A]
+               103c 12ca  Combo FC/GigE-T [A9784A]
+               14e4 0009  NetXtreme BCM5703 1000Base-T
+               14e4 000a  NetXtreme BCM5703 1000Base-SX
+       16dd  NetLink BCM5781 Gigabit Ethernet PCI Express
+       16f7  NetXtreme BCM5753 Gigabit Ethernet PCI Express
+       16fd  NetXtreme BCM5753M Gigabit Ethernet PCI Express
+               103c 30a3  Compaq nw8440
+       16fe  NetXtreme BCM5753F Fast Ethernet PCI Express
+       170c  BCM4401-B0 100Base-TX
+               1028 0188  Inspiron 6000 laptop
+               1028 018d  Inspiron 700m/710m
+               1028 0196  Inspiron 5160
+               1028 01af  Inspiron 6400
+               1028 01cd  Inspiron 9400 Laptop
+               1028 01d7  XPS M1210
+               1028 01d8  Inspiron E1405
+               103c 099c  NX6110/NC6120
+               103c 30a2  NX7300 laptop
+               14e4 170c  HP Compaq 6720t Mobile Thin Client
+       170d  NetXtreme BCM5901 100Base-TX
+               1014 0545  ThinkPad R40e
+       170e  NetXtreme BCM5901 100Base-TX
+       1712  NetLink BCM5906 Fast Ethernet PCI Express
+       1713  NetLink BCM5906M Fast Ethernet PCI Express
+               1028 01f3  Inspiron 1420
+               1028 0209  XPS M1330
+       3352  BCM3352
+       3360  BCM3360
+       4210  BCM4210 iLine10 HomePNA 2.0
+       4211  BCM4211 iLine10 HomePNA 2.0 + V.90 56k modem
+       4212  BCM4212 v.90 56k modem
+       4220  802-11b/g Wireless PCI controller, packaged as a Linksys WPC54G ver 1.2 PCMCIA card
+       4222  NetXtreme BCM5753M Gigabit Ethernet PCI Express
+       4301  BCM4303 802.11b Wireless LAN Controller
+               1028 0407  TrueMobile 1180 Onboard WLAN
+               1043 0120  WL-103b Wireless LAN PC Card
+       4305  BCM4307 V.90 56k Modem
+       4306  BCM4307 Ethernet Controller
+       4307  BCM4307 802.11b Wireless LAN Controller
+       4310  BCM4310 Chipcommon I/OController
+       4311  BCM4311 802.11b/g WLAN
+               1028 0007  Wireless 1390 WLAN Mini-Card
+               1028 0008  Wireless 1390 WLAN ExpressCard
+               103c 1363  BCM4311 802.11b/g Wireless LAN Controller
+               103c 1364  BCM4311 802.11b/g Wireless LAN Controller
+               103c 1365  BCM4311 802.11b/g Wireless LAN Controller
+               103c 1374  BCM4311 802.11b/g Wireless LAN Controller
+               103c 1375  BCM4311 802.11b/g Wireless LAN Controller
+               103c 1376  BCM4311 802.11b/g Wireless LAN Controller
+               103c 1377  BCM4311 802.11b/g Wireless LAN Controller
+               103c 137f  BCM4322 802.11a/b/g/n Wireless LAN Controller
+               103c 1380  BCM4322 802.11a/b/g/n Wireless LAN Controller
+               14e4 4311  BCM94311MCG
+       4312  BCM4312 802.11a/b/g
+               1028 0007  Wireless 1490 Dual Band WLAN Mini-Card
+               1028 0008  Wireless 1490 Dual Band WLAN ExpressCard
+               103c 135a  Broadcom 802.11a/b/g WLAN
+               103c 135f  Broadcom 802.11a/b/g WLAN
+               103c 1360  Broadcom 802.11a/b/g WLAN
+               103c 1361  Broadcom 802.11a/b/g WLAN
+               103c 1362  Broadcom 802.11a/b/g WLAN
+               103c 1370  Broadcom 802.11a/b/g WLAN
+               103c 1371  Broadcom 802.11a/b/g WLAN
+               103c 1372  Broadcom 802.11a/b/g WLAN
+               103c 1373  Broadcom 802.11a/b/g WLAN
+               103c 30b5  Presario V3242AU
+               1371 103c  Broadcom 802.11 Multiband-netwerkadapter(6715s)
+       4313  BCM4310 Ethernet Controller
+       4315  BCM4312 802.11b/g
+               1028 000b  Wireless 1395 WLAN Mini-Card
+               1028 000c  Wireless 1397 WLAN Mini-Card
+               103c 137c  BCM4312 802.11b/g Wireless LAN Controller
+               103c 137d  BCM4312 802.11b/g Wireless LAN Controller
+       4318  BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller
+               1028 0005  Wireless 1370 WLAN Mini-PCI Card
+               1028 0006  Wireless 1370 WLAN PC Card
+               103c 1355  Broadcom 802.11b/g WLAN
+               103c 1356  Broadcom 802.11b/g WLAN
+               103c 1357  Broadcom 802.11b/g WLAN
+               1043 120f  A6U notebook embedded card
+               1154 0355  Buffalo WLI2-PCI-G54S High Speed Mode Wireless Adapter
+               1468 0311  Aspire 3022WLMi, 5024WLMi, 5020
+               1468 0312  TravelMate 2410
+               14e4 0449  Gateway 7510GX
+               14e4 4318  WPC54G version 3 [Wireless-G Notebook Adapter] 802.11g Wireless Lan Controller
+               16ec 0119  U.S.Robotics Wireless MAXg PC Card
+               1737 0042  WMP54GS version 1.1 [Wireless-G PCI Adapter]  802.11g w/SpeedBooster
+               1737 0048  WPC54G-EU version 3 [Wireless-G Notebook Adapter]
+       4319  BCM4311 [AirForce 54g] 802.11a/b/g PCI Express Transceiver
+               1028 0005  Wireless 1470 Dual Band WLAN Mini-PCI Card
+               1028 0006  Wireless 1470 Dual Band WLAN PC Card
+               103c 1358  Broadcom 802.11a/b/g WLAN
+               103c 1359  Broadcom 802.11a/b/g WLAN
+               103c 135a  Broadcom 802.11a/b/g WLAN
+       4320  BCM4306 802.11b/g Wireless LAN Controller
+               1028 0001  TrueMobile 1300 WLAN Mini-PCI Card
+               1028 0002  TrueMobile 1300 WLAN PC Card
+               1028 0003  Wireless 1350 WLAN Mini-PCI Card
+               1028 0004  Wireless 1350 WLAN PC Card
+               103c 12f4  Broadcom 802.11b/g WLAN
+               103c 12f8  Broadcom 802.11b/g WLAN
+               103c 12fa  Broadcom 802.11b/g WLAN
+               103c 12fb  Broadcom 802.11b/g WLAN
+               1043 100f  WL-100G
+               1057 7025  WN825G
+               106b 004e  AirPort Extreme
+               1154 0330  Buffalo WLI2-PCI-G54S High Speed Mode Wireless Desktop Adapter
+               144f 7050  eMachines M6805 802.11g Built-in Wireless
+               144f 7051  Sonnet Aria Extreme PCI
+               14e4 4320  Linksys WMP54G PCI
+               1737 4320  WPC54G
+               1799 7000  F5D7000uk 54G Wireless Network Card
+               1799 7001  Belkin F5D7001 High-Speed Mode Wireless G Network Card
+               1799 7010  Belkin F5D7010 54g Wireless Network card
+               1799 7011  F5D7011 54g+ Wireless Network card
+               185f 1220  TravelMate 290E WLAN Mini-PCI Card
+       4321  BCM4306 802.11a Wireless LAN Controller
+       4322  BCM4306 UART
+       4324  BCM4309 802.11a/b/g
+               1028 0001  Truemobile 1400
+               1028 0002  TrueMobile 1400 Dual Band WLAN PC Card
+               1028 0003  Truemobile 1450 MiniPCI
+               1028 0004  Wireless 1450 Dual Band WLAN PC Card
+               103c 12f9  Broadcom 802.11a/b/g WLAN
+               103c 12fc  Broadcom 802.11a/b/g WLAN
+       4325  BCM43xG 802.11b/g
+               1414 0003  Wireless Notebook Adapter MN-720
+               1414 0004  Wireless PCI Adapter MN-730
+       4326  BCM4307 Chipcommon I/O Controller?
+# This should be the correct naming
+       4328  BCM4328 802.11a/b/g/n
+               1028 0009  Wireless 1500 Draft 802.11n WLAN Mini-Card
+               1028 000a  Wireless 1500 Draft 802.11n WLAN Mini-card
+               103c 1366  BCM4321 802.11a/b/g/n Wireless LAN Controller
+               103c 1367  BCM4321 802.11a/b/g/n Wireless LAN Controller
+               103c 1368  BCM4321 802.11a/b/g/n Wireless LAN Controller
+               103c 1369  BCM4321 802.11a/b/g/n Wireless LAN Controller
+               14e4 4328  BCM4328 802.11a/b/g/n
+       4329  BCM43XG
+       432b  BCM4322 802.11a/b/g/n Wireless LAN Controller
+               1028 000d  Wireless 1510 Wireless-N WLAN Mini-Card
+       4344  EDGE/GPRS data and 802.11b/g combo cardbus [GC89]
+       4401  BCM4401 100Base-T
+               1025 0035  TravelMate 660
+               103c 08b0  tc1100 tablet
+               1043 80a8  A7V8X motherboard
+       4402  BCM4402 Integrated 10/100BaseT
+       4403  BCM4402 V.90 56k Modem
+       4410  BCM4413 iLine32 HomePNA 2.0
+       4411  BCM4413 V.90 56k modem
+       4412  BCM4412 10/100BaseT
+       4430  BCM44xx CardBus iLine32 HomePNA 2.0
+       4432  BCM4432 CardBus 10/100BaseT
+       4610  BCM4610 Sentry5 PCI to SB Bridge
+       4611  BCM4610 Sentry5 iLine32 HomePNA 1.0
+       4612  BCM4610 Sentry5 V.90 56k Modem
+       4613  BCM4610 Sentry5 Ethernet Controller
+       4614  BCM4610 Sentry5 External Interface
+       4615  BCM4610 Sentry5 USB Controller
+       4704  BCM4704 PCI to SB Bridge
+       4705  BCM4704 Sentry5 802.11b Wireless LAN Controller
+       4706  BCM4704 Sentry5 Ethernet Controller
+       4707  BCM4704 Sentry5 USB Controller
+       4708  BCM4704 Crypto Accelerator
+       4710  BCM4710 Sentry5 PCI to SB Bridge
+       4711  BCM47xx Sentry5 iLine32 HomePNA 2.0
+       4712  BCM47xx V.92 56k modem
+       4713  Sentry5 Ethernet Controller
+       4714  BCM47xx Sentry5 External Interface
+       4715  Sentry5 USB Controller
+       4716  BCM47xx Sentry5 USB Host Controller
+       4717  BCM47xx Sentry5 USB Device Controller
+       4718  Sentry5 Crypto Accelerator
+       4719  BCM47xx/53xx RoboSwitch Core
+       4720  BCM4712 MIPS CPU
+       5365  BCM5365P Sentry5 Host Bridge
+       5600  BCM5600 StrataSwitch 24+2 Ethernet Switch Controller
+       5605  BCM5605 StrataSwitch 24+2 Ethernet Switch Controller
+       5615  BCM5615 StrataSwitch 24+2 Ethernet Switch Controller
+       5625  BCM5625 StrataSwitch 24+2 Ethernet Switch Controller
+       5645  BCM5645 StrataSwitch 24+2 Ethernet Switch Controller
+       5670  BCM5670 8-Port 10GE Ethernet Switch Fabric
+       5680  BCM5680 G-Switch 8 Port Gigabit Ethernet Switch Controller
+       5690  BCM5690 12-port Multi-Layer Gigabit Ethernet Switch
+       5691  BCM5691 GE/10GE 8+2 Gigabit Ethernet Switch Controller
+       5692  BCM5692 12-port Multi-Layer Gigabit Ethernet Switch
+       5695  BCM5695 12-port + HiGig Multi-Layer Gigabit Ethernet Switch
+       5698  BCM5698 12-port Multi-Layer Gigabit Ethernet Switch
+       5820  BCM5820 Crypto Accelerator
+       5821  BCM5821 Crypto Accelerator
+       5822  BCM5822 Crypto Accelerator
+       5823  BCM5823 Crypto Accelerator
+       5824  BCM5824 Crypto Accelerator
+       5840  BCM5840 Crypto Accelerator
+       5841  BCM5841 Crypto Accelerator
+       5850  BCM5850 Crypto Accelerator
+       b800  BCM56800 StrataXGS 10GE Switch Controller
+14e5  Pixelfusion Ltd
+14e6  SHINING Technology Inc
+14e7  3CX
+14e8  RAYCER Inc
+14e9  GARNETS System CO Ltd
+14ea  Planex Communications, Inc
+       ab06  FNW-3603-TX CardBus Fast Ethernet
+       ab07  RTL81xx RealTek Ethernet
+       ab08  FNW-3602-TX CardBus Fast Ethernet
+14eb  SEIKO EPSON Corp
+14ec  ACQIRIS
+14ed  DATAKINETICS Ltd
+14ee  MASPRO KENKOH Corp
+14ef  CARRY Computer ENG. CO Ltd
+14f0  CANON RESEACH CENTRE FRANCE
+14f1  Conexant
+       1002  HCF 56k Modem
+       1003  HCF 56k Modem
+       1004  HCF 56k Modem
+       1005  HCF 56k Modem
+       1006  HCF 56k Modem
+       1022  HCF 56k Modem
+       1023  HCF 56k Modem
+       1024  HCF 56k Modem
+       1025  HCF 56k Modem
+       1026  HCF 56k Modem
+       1032  HCF 56k Modem
+       1033  HCF 56k Data/Fax Modem
+               1033 8077  NEC
+               122d 4027  Dell Zeus - MDP3880-W(B) Data Fax Modem
+               122d 4030  Dell Mercury - MDP3880-U(B) Data Fax Modem
+               122d 4034  Dell Thor - MDP3880-W(U) Data Fax Modem
+               13e0 020d  Dell Copper
+               13e0 020e  Dell Silver
+               13e0 0261  IBM
+               13e0 0290  Compaq Goldwing
+               13e0 02a0  IBM
+               13e0 02b0  IBM
+               13e0 02c0  Compaq Scooter
+               13e0 02d0  IBM
+               144f 1500  IBM P85-DF (1)
+               144f 1501  IBM P85-DF (2)
+               144f 150a  IBM P85-DF (3)
+               144f 150b  IBM P85-DF Low Profile (1)
+               144f 1510  IBM P85-DF Low Profile (2)
+       1034  HCF 56k Data/Fax/Voice Modem
+       1035  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem
+               10cf 1098  Fujitsu P85-DFSV
+       1036  HCF 56k Data/Fax/Voice/Spkp Modem
+               104d 8067  HCF 56k Modem
+               122d 4029  MDP3880SP-W
+               122d 4031  MDP3880SP-U
+               13e0 0209  Dell Titanium
+               13e0 020a  Dell Graphite
+               13e0 0260  Gateway Red Owl
+               13e0 0270  Gateway White Horse
+       1052  HCF 56k Data/Fax Modem (Worldwide)
+       1053  HCF 56k Data/Fax Modem (Worldwide)
+       1054  HCF 56k Data/Fax/Voice Modem (Worldwide)
+       1055  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (Worldwide)
+       1056  HCF 56k Data/Fax/Voice/Spkp Modem (Worldwide)
+       1057  HCF 56k Data/Fax/Voice/Spkp Modem (Worldwide)
+       1059  HCF 56k Data/Fax/Voice Modem (Worldwide)
+       1063  HCF 56k Data/Fax Modem
+       1064  HCF 56k Data/Fax/Voice Modem
+       1065  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem
+       1066  HCF 56k Data/Fax/Voice/Spkp Modem
+               122d 4033  Dell Athena - MDP3900V-U
+       1085  HCF V90 56k Data/Fax/Voice/Spkp PCI Modem
+       10b6  CX06834-11 HCF V.92 56k Data/Fax/Voice/Spkp Modem
+       1433  HCF 56k Data/Fax Modem
+       1434  HCF 56k Data/Fax/Voice Modem
+       1435  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem
+       1436  HCF 56k Data/Fax Modem
+       1453  HCF 56k Data/Fax Modem
+               13e0 0240  IBM
+               13e0 0250  IBM
+               144f 1502  IBM P95-DF (1)
+               144f 1503  IBM P95-DF (2)
+       1454  HCF 56k Data/Fax/Voice Modem
+       1455  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem
+       1456  HCF 56k Data/Fax/Voice/Spkp Modem
+               122d 4035  Dell Europa - MDP3900V-W
+               122d 4302  Dell MP3930V-W(C) MiniPCI
+       1610  ADSL AccessRunner PCI Arbitration Device
+       1611  AccessRunner PCI ADSL Interface Device
+       1620  AccessRunner V2 PCI ADSL Arbitration Device
+       1621  AccessRunner V2 PCI ADSL Interface Device
+       1622  AccessRunner V2 PCI ADSL Yukon WAN Adapter
+       1803  HCF 56k Modem
+               0e11 0023  623-LAN Grizzly
+               0e11 0043  623-LAN Yogi
+       1811  Conextant MiniPCI Network Adapter
+       1815  HCF 56k Modem
+               0e11 0022  Grizzly
+               0e11 0042  Yogi
+       2003  HSF 56k Data/Fax Modem
+       2004  HSF 56k Data/Fax/Voice Modem
+       2005  HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem
+       2006  HSF 56k Data/Fax/Voice/Spkp Modem
+       2013  HSF 56k Data/Fax Modem
+               0e11 b195  Bear
+               0e11 b196  Seminole 1
+               0e11 b1be  Seminole 2
+               1025 8013  Acer
+               1033 809d  NEC
+               1033 80bc  NEC
+               155d 6793  HP
+               155d 8850  E Machines
+       2014  HSF 56k Data/Fax/Voice Modem
+       2015  HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem
+       2016  HSF 56k Data/Fax/Voice/Spkp Modem
+       2043  HSF 56k Data/Fax Modem (WorldW SmartDAA)
+       2044  HSF 56k Data/Fax/Voice Modem (WorldW SmartDAA)
+       2045  HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (WorldW SmartDAA)
+               14f1 2045  Generic SoftK56
+       2046  HSF 56k Data/Fax/Voice/Spkp Modem (WorldW SmartDAA)
+       2063  HSF 56k Data/Fax Modem (SmartDAA)
+       2064  HSF 56k Data/Fax/Voice Modem (SmartDAA)
+       2065  HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (SmartDAA)
+       2066  HSF 56k Data/Fax/Voice/Spkp Modem (SmartDAA)
+       2093  HSF 56k Modem
+               155d 2f07  Legend
+       2143  HSF 56k Data/Fax/Cell Modem (Mob WorldW SmartDAA)
+       2144  HSF 56k Data/Fax/Voice/Cell Modem (Mob WorldW SmartDAA)
+       2145  HSF 56k Data/Fax/Voice/Spkp (w/HS)/Cell Modem (Mob WorldW SmartDAA)
+       2146  HSF 56k Data/Fax/Voice/Spkp/Cell Modem (Mob WorldW SmartDAA)
+       2163  HSF 56k Data/Fax/Cell Modem (Mob SmartDAA)
+       2164  HSF 56k Data/Fax/Voice/Cell Modem (Mob SmartDAA)
+       2165  HSF 56k Data/Fax/Voice/Spkp (w/HS)/Cell Modem (Mob SmartDAA)
+       2166  HSF 56k Data/Fax/Voice/Spkp/Cell Modem (Mob SmartDAA)
+       2343  HSF 56k Data/Fax CardBus Modem (Mob WorldW SmartDAA)
+       2344  HSF 56k Data/Fax/Voice CardBus Modem (Mob WorldW SmartDAA)
+       2345  HSF 56k Data/Fax/Voice/Spkp (w/HS) CardBus Modem (Mob WorldW SmartDAA)
+       2346  HSF 56k Data/Fax/Voice/Spkp CardBus Modem (Mob WorldW SmartDAA)
+       2363  HSF 56k Data/Fax CardBus Modem (Mob SmartDAA)
+       2364  HSF 56k Data/Fax/Voice CardBus Modem (Mob SmartDAA)
+       2365  HSF 56k Data/Fax/Voice/Spkp (w/HS) CardBus Modem (Mob SmartDAA)
+       2366  HSF 56k Data/Fax/Voice/Spkp CardBus Modem (Mob SmartDAA)
+       2443  HSF 56k Data/Fax Modem (Mob WorldW SmartDAA)
+               104d 8075  Modem
+               104d 8083  Modem
+               104d 8097  Modem
+       2444  HSF 56k Data/Fax/Voice Modem (Mob WorldW SmartDAA)
+       2445  HSF 56k Data/Fax/Voice/Spkp (w/HS) Modem (Mob WorldW SmartDAA)
+       2446  HSF 56k Data/Fax/Voice/Spkp Modem (Mob WorldW SmartDAA)
+       2463  HSF 56k Data/Fax Modem (Mob SmartDAA)
+       2464  HSF 56k Data/Fax/Voice Modem (Mob SmartDAA)
+       2465  HSF 56k Data/Fax/Voice/Spkp (w/HS) Modem (Mob SmartDAA)
+       2466  HSF 56k Data/Fax/Voice/Spkp Modem (Mob SmartDAA)
+       2bfa  HDAudio Soft Data Fax Modem with SmartCP
+               1025 0009  Aspire 5622WLMi
+       2f00  HSF 56k HSFi Modem
+               13e0 8d84  IBM HSFi V.90
+               13e0 8d85  Compaq Stinger
+               14f1 2004  Dynalink 56PMi
+       2f02  HSF 56k HSFi Data/Fax
+       2f11  HSF 56k HSFi Modem
+       2f20  HSF 56k Data/Fax Modem
+       2f30  HSF 56k Data/Fax Modem
+       5045  CX20549 (Venice)
+       5047  High Definition Audio [Waikiki]
+       5b7a  CX23418 Single-Chip MPEG-2 Encoder with Integrated Analog Video/Broadcast Audio Decoder
+       8234  RS8234 ATM SAR Controller [ServiceSAR Plus]
+       8800  CX23880/1/2/3 PCI Video and Audio Decoder
+               0070 2801  Hauppauge WinTV 28xxx (Roslyn) models
+               0070 3401  Hauppauge WinTV 34xxx models
+               0070 9001  Nova-T DVB-T
+               0070 9200  Nova-SE2 DVB-S
+               0070 9202  Nova-S-Plus DVB-S
+               0070 9402  WinTV-HVR1100 DVB-T/Hybrid
+               0070 9802  WinTV-HVR1100 DVB-T/Hybrid (Low Profile)
+               1002 00f8  ATI TV Wonder Pro
+               1002 a101  HDTV Wonder
+               1043 4823  ASUS PVR-416
+               107d 6613  Leadtek Winfast 2000XP Expert
+               107d 6620  Leadtek Winfast DV2000
+               107d 663c  Leadtek PVR 2000
+               107d 665f  WinFast DTV1000-T
+               10fc d003  IODATA GV-VCP3/PCI
+               10fc d035  IODATA GV/BCTV7E
+               1421 0334  Instant TV DVB-T PCI
+               1461 000a  AVerTV 303 (M126)
+               1461 000b  AverTV Studio 303 (M126)
+               1461 8011  UltraTV Media Center PCI 550
+               1462 8606  MSI TV-@nywhere Master
+               14c7 0107  GDI Black Gold
+               14f1 0187  Conexant DVB-T reference design
+               14f1 0342  Digital-Logic MICROSPACE Entertainment Center (MEC)
+               153b 1166  Cinergy 1400 DVB-T
+               1540 2580  Provideo PV259
+               1554 4811  PixelView
+               1554 4813  Club 3D  ZAP1000 MCE Edition
+               17de 08a1  KWorld/VStream XPert DVB-T with cx22702
+               17de 08a6  KWorld/VStream XPert DVB-T
+               17de 08b2  KWorld DVB-S 100
+               17de a8a6  digitalnow DNTV Live! DVB-T
+               1822 0025  digitalnow DNTV Live! DVB-T Pro
+               18ac d500  FusionHDTV 5 Gold
+               18ac d810  FusionHDTV 3 Gold-Q
+               18ac d820  FusionHDTV 3 Gold-T
+               18ac db00  FusionHDTV DVB-T1
+               18ac db11  FusionHDTV DVB-T Plus
+               18ac db50  FusionHDTV DVB-T Dual Digital
+               7063 3000  pcHDTV HD3000 HDTV
+               7063 5500  pcHDTV HD-5500
+       8801  CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port]
+               0070 2801  Hauppauge WinTV 28xxx (Roslyn) models
+               7063 5500  pcHDTV HD-5500
+       8802  CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port]
+               0070 2801  Hauppauge WinTV 28xxx (Roslyn) models
+               0070 9002  Nova-T DVB-T Model 909
+               1043 4823  ASUS PVR-416
+               107d 663c  Leadtek PVR 2000
+               107d 665f  WinFast DTV1000-T
+               14f1 0187  Conexant DVB-T reference design
+               17de 08a1  XPert DVB-T PCI BDA DVBT 23880 Transport Stream Capture
+               17de 08a6  KWorld/VStream XPert DVB-T
+               18ac d500  DViCO FusionHDTV5 Gold
+               18ac d810  DViCO FusionHDTV3 Gold-Q
+               18ac d820  DViCO FusionHDTV3 Gold-T
+               18ac db00  DVICO FusionHDTV DVB-T1
+               18ac db10  DVICO FusionHDTV DVB-T Plus
+               7063 3000  pcHDTV HD3000 HDTV
+               7063 5500  pcHDTV HD-5500
+       8804  CX23880/1/2/3 PCI Video and Audio Decoder [IR Port]
+               0070 9002  Nova-T DVB-T Model 909
+               7063 5500  pcHDTV HD-5500
+       8811  CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port]
+               0070 3401  Hauppauge WinTV 34xxx models
+               1462 8606  MSI TV-@nywhere Master
+               18ac d500  DViCO FusionHDTV5 Gold
+               18ac d810  DViCO FusionHDTV3 Gold-Q
+               18ac d820  DViCO FusionHDTV3 Gold-T
+               18ac db00  DVICO FusionHDTV DVB-T1
+14f2  MOBILITY Electronics
+       0120  EV1000 bridge
+       0121  EV1000 Parallel port
+       0122  EV1000 Serial port
+       0123  EV1000 Keyboard controller
+       0124  EV1000 Mouse controller
+14f3  BroadLogic
+       2030  2030 DVB-S Satellite Reciever
+       2050  2050 DVB-T Terrestrial (Cable) Reciever
+       2060  2060 ATSC Terrestrial (Cable) Reciever
+14f4  TOKYO Electronic Industry CO Ltd
+14f5  SOPAC Ltd
+14f6  COYOTE Technologies LLC
+14f7  WOLF Technology Inc
+14f8  AUDIOCODES Inc
+       2077  TP-240 dual span E1 VoIP PCI card
+14f9  AG COMMUNICATIONS
+14fa  WANDEL & GOLTERMANN
+14fb  TRANSAS MARINE (UK) Ltd
+14fc  Quadrics Ltd
+       0000  QsNet Elan3 Network Adapter
+       0001  QsNetII Elan4 Network Adapter
+       0002  QsNetIII Elan5 Network Adapter
+14fd  JAPAN Computer Industry Inc
+14fe  ARCHTEK TELECOM Corp
+14ff  TWINHEAD INTERNATIONAL Corp
+1500  DELTA Electronics, Inc
+       1360  RTL81xx RealTek Ethernet
+1501  BANKSOFT CANADA Ltd
+1502  MITSUBISHI ELECTRIC LOGISTICS SUPPORT Co Ltd
+1503  KAWASAKI LSI USA Inc
+1504  KAISER Electronics
+1505  ITA INGENIEURBURO FUR TESTAUFGABEN GmbH
+1506  CHAMELEON Systems Inc
+# Should be HTEC Ltd, but there are no known HTEC chips and 1507 is already used by mistake by Motorola (see vendor ID 1057).
+1507  Motorola ?? / HTEC
+       0001  MPC105 [Eagle]
+       0002  MPC106 [Grackle]
+       0003  MPC8240 [Kahlua]
+       0100  MC145575 [HFC-PCI]
+       0431  KTI829c 100VG
+       4801  Raven
+       4802  Falcon
+       4803  Hawk
+       4806  CPX8216
+1508  HONDA CONNECTORS/MHOTRONICS Inc
+1509  FIRST INTERNATIONAL Computer Inc
+150a  FORVUS RESEARCH Inc
+150b  YAMASHITA Systems Corp
+150c  KYOPAL CO Ltd
+150d  WARPSPPED Inc
+150e  C-PORT Corp
+150f  INTEC GmbH
+1510  BEHAVIOR TECH Computer Corp
+1511  CENTILLIUM Technology Corp
+1512  ROSUN Technologies Inc
+1513  Raychem
+1514  TFL LAN Inc
+1515  Advent design
+1516  MYSON Technology Inc
+       0800  MTD-8xx 100/10M Ethernet PCI Adapter
+       0803  SURECOM EP-320X-S 100/10M Ethernet PCI Adapter
+               1320 10bd  SURECOM EP-320X-S 100/10M Ethernet PCI Adapter
+       0891  MTD-8xx 100/10M Ethernet PCI Adapter
+1517  ECHOTEK Corp
+1518  PEP MODULAR Computers GmbH
+1519  TELEFON AKTIEBOLAGET LM Ericsson
+151a  Globetek
+       1002  PCI-1002
+       1004  PCI-1004
+       1008  PCI-1008
+151b  COMBOX Ltd
+151c  DIGITAL AUDIO LABS Inc
+       0003  Prodif T 2496
+       4000  Prodif 88
+151d  Fujitsu Computer Products Of America
+151e  MATRIX Corp
+151f  TOPIC SEMICONDUCTOR Corp
+       0000  TP560 Data/Fax/Voice 56k modem
+1520  CHAPLET System Inc
+1521  BELL Corp
+1522  MainPine Ltd
+       0100  PCI <-> IOBus Bridge
+               1522 0200  RockForceDUO 2 Port V.92/V.44 Data/Fax/Voice Modem
+               1522 0300  RockForceQUATRO 4 Port V.92/V.44 Data/Fax/Voice Modem
+               1522 0400  RockForceDUO+ 2 Port V.92/V.44 Data/Fax/Voice Modem
+               1522 0500  RockForceQUATRO+ 4 Port V.92/V.44 Data/Fax/Voice Modem
+               1522 0600  RockForce+ 2 Port V.90 Data/Fax/Voice Modem
+               1522 0700  RockForce+ 4 Port V.90 Data/Fax/Voice Modem
+               1522 0800  RockForceOCTO+ 8 Port V.92/V.44 Data/Fax/Voice Modem
+               1522 0c00  RockForceDUO+ 2 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem
+               1522 0d00  RockForceQUATRO+ 4 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem
+               1522 1d00  RockForceOCTO+ 8 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem
+               1522 2000  RockForceD1 1 Port V.90 Data Modem
+               1522 2100  RockForceF1 1 Port V.34 Super-G3 Fax Modem
+               1522 2200  RockForceD2 2 Port V.90 Data Modem
+               1522 2300  RockForceF2 2 Port V.34 Super-G3 Fax Modem
+               1522 2400  RockForceD4 4 Port V.90 Data Modem
+               1522 2500  RockForceF4 4 Port V.34 Super-G3 Fax Modem
+               1522 2600  RockForceD8 8 Port V.90 Data Modem
+               1522 2700  RockForceF8 8 Port V.34 Super-G3 Fax Modem
+               1522 3000  IQ Express D1 - 1 Port V.92 Data Modem
+               1522 3100  IQ Express F1 - 1 Port V.34 Super-G3 Fax Modem
+               1522 3200  IQ Express D2 - 2 Port V.92 Data Modem
+               1522 3300  IQ Express F2 - 2 Port V.34 Super-G3 Fax Modem
+               1522 3400  IQ Express D4 - 4 Port V.92 Data Modem
+               1522 3500  IQ Express F4 - 4 Port V.34 Super-G3 Fax Modem
+               1522 3c00  IQ Express D8 - 8 Port V.92 Data Modem
+               1522 3d00  IQ Express F8 - 8 Port V.34 Super-G3 Fax Modem
+1523  MUSIC Semiconductors
+1524  ENE Technology Inc
+       0510  CB710 Memory Card Reader Controller
+               103c 006a  NX9500
+       0520  FLASH memory: ENE Technology Inc:
+       0530  ENE PCI Memory Stick Card Reader Controller
+       0550  ENE PCI Secure Digital Card Reader Controller
+       0551  SD/MMC Card Reader Controller
+       0610  PCI Smart Card Reader Controller
+       0730  ENE PCI Memory Stick Card Reader Controller
+       0750  ENE PCI SmartMedia / xD Card Reader Controller
+       0751  ENE PCI Secure Digital / MMC Card Reader Controller
+       1211  CB1211 Cardbus Controller
+       1225  CB1225 Cardbus Controller
+       1410  CB1410 Cardbus Controller
+               1025 003c  CL50 motherboard
+               1025 005a  TravelMate 290
+       1411  CB-710/2/4 Cardbus Controller
+               103c 006a  NX9500
+       1412  CB-712/4 Cardbus Controller
+       1420  CB1420 Cardbus Controller
+       1421  CB-720/2/4 Cardbus Controller
+       1422  CB-722/4 Cardbus Controller
+1525  IMPACT Technologies
+1526  ISS, Inc
+1527  SOLECTRON
+1528  ACKSYS
+1529  AMERICAN MICROSystems Inc
+152a  QUICKTURN DESIGN Systems
+152b  FLYTECH Technology CO Ltd
+152c  MACRAIGOR Systems LLC
+152d  QUANTA Computer Inc
+152e  MELEC Inc
+152f  PHILIPS - CRYPTO
+1530  ACQIS Technology Inc
+1531  CHRYON Corp
+1532  ECHELON Corp
+       0020  LonWorks PCLTA-20 PCI LonTalk Adapter
+1533  BALTIMORE
+1534  ROAD Corp
+1535  EVERGREEN Technologies Inc
+1536  ACTIS Computer
+1537  DATALEX COMMUNCATIONS
+1538  ARALION Inc
+       0303  ARS106S Ultra ATA 133/100/66 Host Controller
+1539  ATELIER INFORMATIQUES et ELECTRONIQUE ETUDES S.A.
+153a  ONO SOKKI
+153b  TERRATEC Electronic GmbH
+       1144  Aureon 5.1
+# Terratec seems to use several IDs for the same card.
+       1147  Aureon 5.1 Sky
+       1158  Philips Semiconductors SAA7134 (rev 01) [Terratec Cinergy 600 TV]
+153c  ANTAL Electronic
+153d  FILANET Corp
+153e  TECHWELL Inc
+153f  MIPS Technologies, Inc.
+       0001  SOC-it 101 System Controller
+1540  PROVIDEO MULTIMEDIA Co Ltd
+1541  MACHONE Communications
+1542  Concurrent Computer Corporation
+       9260  RCIM-II Real-Time Clock & Interrupt Module
+1543  SILICON Laboratories
+       3052  Intel 537 [Winmodem]
+       4c22  Si3036 MC'97 DAA
+1544  DCM DATA Systems
+1545  VISIONTEK
+1546  IOI Technology Corp
+1547  MITUTOYO Corp
+1548  JET PROPULSION Laboratory
+1549  INTERCONNECT Systems Solutions
+154a  MAX Technologies Inc
+154b  COMPUTEX Co Ltd
+154c  VISUAL Technology Inc
+154d  PAN INTERNATIONAL Industrial Corp
+154e  SERVOTEST Ltd
+154f  STRATABEAM Technology
+1550  OPEN NETWORK Co Ltd
+1551  SMART Electronic DEVELOPMENT GmBH
+1552  RACAL AIRTECH Ltd
+1553  CHICONY Electronics Co Ltd
+1554  PROLINK Microsystems Corp
+1555  GESYTEC GmBH
+1556  PLD APPLICATIONS
+1557  MEDIASTAR Co Ltd
+1558  CLEVO/KAPOK Computer
+1559  SI LOGIC Ltd
+155a  INNOMEDIA Inc
+155b  PROTAC INTERNATIONAL Corp
+155c  Cemax-Icon Inc
+155d  Mac System Co Ltd
+155e  LP Elektronik GmbH
+155f  Perle Systems Ltd
+1560  Terayon Communications Systems
+1561  Viewgraphics Inc
+1562  Symbol Technologies
+1563  A-Trend Technology Co Ltd
+1564  Yamakatsu Electronics Industry Co Ltd
+1565  Biostar Microtech Int'l Corp
+1566  Ardent Technologies Inc
+1567  Jungsoft
+1568  DDK Electronics Inc
+1569  Palit Microsystems Inc.
+156a  Avtec Systems
+156b  2wire Inc
+156c  Vidac Electronics GmbH
+156d  Alpha-Top Corp
+156e  Alfa Inc
+156f  M-Systems Flash Disk Pioneers Ltd
+1570  Lecroy Corp
+1571  Contemporary Controls
+       a001  CCSI PCI20-485 ARCnet
+       a002  CCSI PCI20-485D ARCnet
+       a003  CCSI PCI20-485X ARCnet
+       a004  CCSI PCI20-CXB ARCnet
+       a005  CCSI PCI20-CXS ARCnet
+       a006  CCSI PCI20-FOG-SMA ARCnet
+       a007  CCSI PCI20-FOG-ST ARCnet
+       a008  CCSI PCI20-TB5 ARCnet
+       a009  CCSI PCI20-5-485 5Mbit ARCnet
+       a00a  CCSI PCI20-5-485D 5Mbit ARCnet
+       a00b  CCSI PCI20-5-485X 5Mbit ARCnet
+       a00c  CCSI PCI20-5-FOG-ST 5Mbit ARCnet
+       a00d  CCSI PCI20-5-FOG-SMA 5Mbit ARCnet
+       a201  CCSI PCI22-485 10Mbit ARCnet
+       a202  CCSI PCI22-485D 10Mbit ARCnet
+       a203  CCSI PCI22-485X 10Mbit ARCnet
+       a204  CCSI PCI22-CHB 10Mbit ARCnet
+       a205  CCSI PCI22-FOG_ST 10Mbit ARCnet
+       a206  CCSI PCI22-THB 10Mbit ARCnet
+1572  Otis Elevator Company
+1573  Lattice - Vantis
+1574  Fairchild Semiconductor
+1575  Voltaire Advanced Data Security Ltd
+1576  Viewcast COM
+1578  HITT
+       5615  VPMK3 [Video Processor Mk III]
+1579  Dual Technology Corp
+157a  Japan Elecronics Ind Inc
+157b  Star Multimedia Corp
+157c  Eurosoft (UK)
+       8001  Fix2000 PCI Y2K Compliance Card
+157d  Gemflex Networks
+157e  Transition Networks
+157f  PX Instruments Technology Ltd
+1580  Primex Aerospace Co
+1581  SEH Computertechnik GmbH
+1582  Cytec Corp
+1583  Inet Technologies Inc
+1584  Uniwill Computer Corp
+1585  Logitron
+1586  Lancast Inc
+1587  Konica Corp
+1588  Solidum Systems Corp
+1589  Atlantek Microsystems Pty Ltd
+158a  Digalog Systems Inc
+158b  Allied Data Technologies
+158c  Hitachi Semiconductor & Devices Sales Co Ltd
+158d  Point Multimedia Systems
+158e  Lara Technology Inc
+158f  Ditect Coop
+1590  3pardata Inc
+       0001  Eagle Cluster Manager
+       0002  Osprey Cluster Manager
+       a01d  FC044X Fibre Channel HBA
+1591  ARN
+1592  Syba Tech Ltd
+       0781  Multi-IO Card
+       0782  Parallel Port Card 2xEPP
+       0783  Multi-IO Card
+       0785  Multi-IO Card
+       0786  Multi-IO Card
+       0787  Multi-IO Card
+       0788  Multi-IO Card
+       078a  Multi-IO Card
+1593  Bops Inc
+1594  Netgame Ltd
+1595  Diva Systems Corp
+1596  Folsom Research Inc
+1597  Memec Design Services
+1598  Granite Microsystems
+1599  Delta Electronics Inc
+159a  General Instrument
+159b  Faraday Technology Corp
+159c  Stratus Computer Systems
+159d  Ningbo Harrison Electronics Co Ltd
+159e  A-Max Technology Co Ltd
+159f  Galea Network Security
+15a0  Compumaster SRL
+15a1  Geocast Network Systems
+15a2  Catalyst Enterprises Inc
+       0001  TA700 PCI Bus Analyzer/Exerciser
+15a3  Italtel
+15a4  X-Net OY
+15a5  Toyota Macs Inc
+15a6  Sunlight Ultrasound Technologies Ltd
+15a7  SSE Telecom Inc
+15a8  Shanghai Communications Technologies Center
+15aa  Moreton Bay
+15ab  Bluesteel Networks Inc
+15ac  North Atlantic Instruments
+15ad  VMware Inc
+       0405  Abstract SVGA II Adapter
+       0710  Abstract SVGA Adapter
+       0720  Abstract Ethernet Controller
+       0740  Virtual Machine Communication Interface
+       0770  Abstract USB2 EHCI Controller
+       0801  Virtual Machine Interface
+               15ad 0800  Hypervisor ROM Interface
+15ae  Amersham Pharmacia Biotech
+15b0  Zoltrix International Ltd
+15b1  Source Technology Inc
+15b2  Mosaid Technologies Inc
+15b3  Mellanox Technologies
+       0191  MT25408 [ConnectX IB SDR Flash Recovery]
+       5274  MT21108 InfiniBridge
+       5a44  MT23108 InfiniHost
+       5a45  MT23108 [Infinihost HCA Flash Recovery]
+       5a46  MT23108 PCI Bridge
+       5e8c  MT24204 [InfiniHost III Lx HCA]
+       5e8d  MT25204 [InfiniHost III Lx HCA Flash Recovery]
+       6274  MT25204 [InfiniHost III Lx HCA]
+       6278  MT25208 InfiniHost III Ex (Tavor compatibility mode)
+       6279  MT25208 [InfiniHost III Ex HCA Flash Recovery]
+       6282  MT25208 InfiniHost III Ex
+       6340  MT25408 [ConnectX IB SDR]
+       634a  MT25418 [ConnectX IB DDR, PCIe 2.0 2.5GT/s]
+       6354  MT25428 [ConnectX IB QDR]
+       6368  MT25448 [ConnectX EN 10GigE, PCIe 2.0 2.5GT/s]
+       6732  MT26418 [ConnectX IB DDR, PCIe 2.0 5GT/s]
+       673c  MT26428 [ConnectX IB QDR, PCIe 2.0 5GT/s]
+       6750  MT26448 [ConnectX EN 10GigE, PCIe 2.0 5GT/s]
+15b4  CCI/TRIAD
+15b5  Cimetrics Inc
+15b6  Texas Memory Systems Inc
+15b7  Sandisk Corp
+15b8  ADDI-DATA GmbH
+       1003  APCI1032 SP controller (32 digi inputs w/ opto coupler)
+       1005  APCI2200 SP controller (8/16 digi outputs (relay))
+       100a  APCI1696 SP controller (96 TTL I/Os)
+       3001  APCI3501 SP controller (analog output board)
+15b9  Maestro Digital Communications
+15ba  Impacct Technology Corp
+15bb  Portwell Inc
+15bc  Agilent Technologies
+       1100  E8001-66442 PCI Express CIC
+       2922  64 Bit, 133MHz PCI-X Exerciser & Protocol Checker
+       2928  64 Bit, 66MHz PCI Exerciser & Analyzer
+       2929  64 Bit, 133MHz PCI-X Analyzer & Exerciser
+15bd  DFI Inc
+15be  Sola Electronics
+15bf  High Tech Computer Corp (HTC)
+15c0  BVM Ltd
+15c1  Quantel
+15c2  Newer Technology Inc
+15c3  Taiwan Mycomp Co Ltd
+15c4  EVSX Inc
+15c5  Procomp Informatics Ltd
+       8010  1394b - 1394 Firewire 3-Port Host Adapter Card
+15c6  Technical University of Budapest
+15c7  Tateyama System Laboratory Co Ltd
+       0349  Tateyama C-PCI PLC/NC card Rev.01A
+15c8  Penta Media Co Ltd
+15c9  Serome Technology Inc
+15ca  Bitboys OY
+15cb  AG Electronics Ltd
+15cc  Hotrail Inc
+15cd  Dreamtech Co Ltd
+15ce  Genrad Inc
+15cf  Hilscher GmbH
+15d1  Infineon Technologies AG
+15d2  FIC (First International Computer Inc)
+15d3  NDS Technologies Israel Ltd
+15d4  Iwill Corp
+15d5  Tatung Co
+15d6  Entridia Corp
+15d7  Rockwell-Collins Inc
+15d8  Cybernetics Technology Co Ltd
+15d9  Super Micro Computer Inc
+15da  Cyberfirm Inc
+15db  Applied Computing Systems Inc
+15dc  Litronic Inc
+       0001  Argus 300 PCI Cryptography Module
+15dd  Sigmatel Inc
+15de  Malleable Technologies Inc
+15df  Infinilink Corp
+15e0  Cacheflow Inc
+15e1  Voice Technologies Group Inc
+15e2  Quicknet Technologies Inc
+       0500  PhoneJack-PCI
+15e3  Networth Technologies Inc
+15e4  VSN Systemen BV
+15e5  Valley technologies Inc
+15e6  Agere Inc
+15e7  Get Engineering Corp
+15e8  National Datacomm Corp
+       0130  Wireless PCI Card
+       0131  NCP130A2 Wireless NIC
+15e9  Pacific Digital Corp
+       1841  ADMA-100 DiscStaQ ATA Controller
+15ea  Tokyo Denshi Sekei K.K.
+15eb  Drsearch GmbH
+15ec  Beckhoff GmbH
+       3101  FC3101 Profibus DP 1 Channel PCI
+       5102  FC5102
+15ed  Macrolink Inc
+15ee  In Win Development Inc
+15ef  Intelligent Paradigm Inc
+15f0  B-Tree Systems Inc
+15f1  Times N Systems Inc
+15f2  Diagnostic Instruments Inc
+15f3  Digitmedia Corp
+15f4  Valuesoft
+15f5  Power Micro Research
+15f6  Extreme Packet Device Inc
+15f7  Banctec
+15f8  Koga Electronics Co
+15f9  Zenith Electronics Corp
+15fa  J.P. Axzam Corp
+15fb  Zilog Inc
+15fc  Techsan Electronics Co Ltd
+15fd  N-CUBED.NET
+15fe  Kinpo Electronics Inc
+15ff  Fastpoint Technologies Inc
+1600  Northrop Grumman - Canada Ltd
+1601  Tenta Technology
+1602  Prosys-tec Inc
+1603  Nokia Wireless Communications
+1604  Central System Research Co Ltd
+1605  Pairgain Technologies
+1606  Europop AG
+1607  Lava Semiconductor Manufacturing Inc
+1608  Automated Wagering International
+1609  Scimetric Instruments Inc
+1612  Telesynergy Research Inc.
+1619  FarSite Communications Ltd
+       0400  FarSync T2P (2 port X.21/V.35/V.24)
+       0440  FarSync T4P (4 port X.21/V.35/V.24)
+       0610  FarSync T1U (1 port X.21/V.35/V.24)
+       0620  FarSync T2U (2 port X.21/V.35/V.24)
+       0640  FarSync T4U (4 port X.21/V.35/V.24)
+       1610  FarSync TE1 (T1,E1)
+       2610  FarSync DSL-S1 (SHDSL)
+161f  Rioworks
+1626  TDK Semiconductor Corp.
+       8410  RTL81xx Fast Ethernet
+1629  Kongsberg Spacetec AS
+       1003  Format synchronizer v3.0
+       1006  Format synchronizer, model 10500
+       1007  Format synchronizer, model 21000
+       2002  Fast Universal Data Output
+# This seems to occur on their 802.11b Wireless card WMP-11
+1637  Linksys
+       3874  Linksys 802.11b WMP11 PCI Wireless card
+1638  Standard Microsystems Corp [SMC]
+       1100  SMC2602W EZConnect / Addtron AWA-100 / Eumitcom PCI WL11000
+163c  Smart Link Ltd.
+       3052  SmartLink SmartPCI562 56K Modem
+       5449  SmartPCI561 Modem
+1657  Brocade Communications Systems, Inc.
+# Same Device_ID used for 410 (1port) and 420 (2 port) HBAs.
+       0646  Brocade 400 4Gb PCIe FC HBA
+165a  Epix Inc
+       c100  PIXCI(R) CL1 Camera Link Video Capture Board [custom QL5232]
+       d200  PIXCI(R) D2X Digital Video Capture Board [custom QL5232]
+       d300  PIXCI(R) D3X Digital Video Capture Board [custom QL5232]
+165d  Hsing Tech. Enterprise Co., Ltd.
+165f  Linux Media Labs, LLC
+       1020  LMLM4 MPEG-4 encoder
+1661  Worldspace Corp.
+1668  Actiontec Electronics Inc
+       0100  Mini-PCI bridge
+# Formerly SiByte, Inc.
+166d  Broadcom Corporation
+       0001  SiByte BCM1125/1125H/1250 System-on-a-Chip PCI
+       0002  SiByte BCM1125H/1250 System-on-a-Chip HyperTransport
+1677  Bernecker + Rainer
+       104e  5LS172.6 B&R Dual CAN Interface Card
+       12d7  5LS172.61 B&R Dual CAN Interface Card
+       20ad  5ACPCI.MFIO-K01 Profibus DP / K-Feldbus / COM
+1678  NetEffect
+       0100  NE020 10Gb Accelerated Ethernet Adapter (iWARP RNIC)
+1679  Tokyo Electron Device Ltd.
+167b  ZyDAS Technology Corp.
+       2102  ZyDAS ZD1202
+               187e 3406  ZyAIR B-122 CardBus 11Mbs Wireless LAN Card
+167d  Samsung Electro-Mechanics Co., Ltd.
+       a000  IPW2200 miniPCI Wireless
+1681  Hercules
+       0010  Hercules 3d Prophet II Ultra 64MB (350 MHz NV15BR core)
+1682  XFX Pine Group Inc.
+1688  CastleNet Technology Inc.
+       1170  WLAN 802.11b card
+168c  Atheros Communications Inc.
+       0007  AR5000 802.11a Wireless Adapter
+       0011  AR5210 802.11a NIC
+       0012  AR5211 802.11ab NIC
+       0013  AR5212/AR5213 Multiprotocol MAC/baseband processor
+               1113 d301  Philips CPWNA100 Wireless CardBus adapter
+               1186 3202  D-link DWL-G650 (Rev B3,B5) Wireless cardbus adapter
+               1186 3203  DWL-G520 Wireless PCI Adapter
+               1186 3a12  D-Link AirPlus DWL-G650 Wireless Cardbus Adapter(rev.C)
+               1186 3a13  D-Link AirPlus DWL-G520 Wireless PCI Adapter(rev.B)
+               1186 3a14  D-Link AirPremier DWL-AG530 Wireless PCI Adapter
+               1186 3a17  D-Link AirPremier DWL-G680 Wireless Cardbus Adapter
+               1186 3a18  D-Link AirPremier DWL-G550 Wireless PCI Adapter
+               1186 3a63  D-Link AirPremier DWL-AG660 Wireless Cardbus Adapter
+               1186 3a93  Conceptronic C54I Wireless 801.11g PCI card
+               1186 3a94  C54C Wireless 801.11g cardbus
+               1186 3ab0  Allnet ALL0281 Wireless PCI Card
+               1385 4d00  Netgear WG311T Wireless PCI Adapter
+               1458 e911  Gigabyte GN-WIAG02
+               1468 0408  ThinkPad 11b/g Wireless LAN Mini PCI Adapter
+               14b7 0a60  8482-WD ORiNOCO 11a/b/g Wireless PCI Adapter
+               1668 1026  IBM HighRate 11 a/b/g Wireless CardBus Adapter
+               168c 0013  AirPlus XtremeG DWL-G650 Wireless PCMCIA Adapter
+               168c 1025  DWL-G650B2 Wireless CardBus Adapter
+               168c 1027  Engenius NL-3054CB ARIES b/g CardBus Adapter
+               168c 1042  Ubiquiti Networks SuperRange a/b/g Cardbus Adapter
+               168c 1051  EZ Connect g 802.11g 108Mbps Wireless PCI Adapter
+               168c 2026  Netgate 5354MP ARIES a(108Mb turbo)/b/g MiniPCI Adapter
+               168c 2041  Engenius 5354MP Plus ARIES2 b/g MiniPCI Adapter
+               168c 2042  Engenius 5354MP Plus ARIES2 a/b/g MiniPCI Adapter
+               168c 2051  TRENDnet TEW-443PI Wireless PCI Adapter
+               16ab 7302  Trust Speedshare Turbo Pro Wireless PCI Adapter
+               17cf 0042  Z-COMAX Highpower XG-622H (400mw) 802.11b/g mini-PCI Adapter
+               185f 1012  CM9 Wireless a/b/g MiniPCI Adapter
+               185f 2012  Wistron NeWeb WLAN a+b+g model CB9
+# the name AR5005G is used for the reference design using AR2413
+       001a  AR2413 802.11bg NIC
+               1052 168c  Sweex Wireless Lan PC Card 54Mbps
+               1113 ee20  SMC Wireless CardBus Adapter 802.11g (SMCWCB-G EU)
+               1113 ee24  SMC Wireless PCI Card WPCI-G
+               1186 3a15  D-Link AirPlus G DWL-G630 Wireless Cardbus Adapter(rev.D)
+               1186 3a16  D-Link AirPlus G DWL-G510 Wireless PCI Adapter(rev.B)
+               1186 3a23  D-Link AirPlus G DWL-G520+A Wireless PCI Adapter
+               1186 3a24  D-Link AirPlus G DWL-G650+A Wireless Cardbus Adapter
+               1186 3b08  AirPlus G DWL-G630
+               168c 001a  Belkin FD7000
+               168c 1052  TP-Link TL-WN510G Wireless CardBus Adapter
+               168c 2052  Compex Wireless 802.11 b/g  MiniPCI Adapter, Rev A1 [WLM54G]
+# the name AR5006X is used for the reference design using AR5413
+       001b  AR5413 802.11abg NIC
+               1186 3a19  D-Link AirPremier AG DWL-AG660 Wireless Cardbus Adapter
+               1186 3a22  D-Link AirPremier AG DWL-AG530 Wireless PCI Adapter
+               1458 e901  GN-WI01HT Wireless a/b/g MiniPCI Adapter
+               168c 001b  Wireless LAN PCI LiteOn
+               168c 2062  EnGenius EMP-8602 (400mw) or Compex WLM54AG (SuperAG)
+               168c 2063  EnGenius EMP-8602 (400mw) or Compex WLM54AG
+               185f 1600  DCMA-82 High Power WLAN 802.11a/b/g mini-PCI Module (Super A/G, eXtended Range, 400mW)
+               a727 6804  Wireless 11a/b/g PC Card with XJACK(r) Antenna
+# the names AR5006* are for AR242{3,4} designs and the names AR5007* are for AR2425 designs
+       001c  AR242x 802.11abg Wireless PCI Express Adapter
+               168c 3061  AR5006EGS 802.11bg NIC (2.4GHz, PCI Express)
+               168c 3062  AR5006EXS 802.11abg NIC (2.4/5.0GHz, PCI Express)
+               168c 3063  AR5006EX 802.11abg NIC (2.4/5.0GHz, PCI Express)
+               168c 3065  AR5006EG 802.11bg NIC (2.4GHz, PCI Express)
+# the name AR5005VL is used for some AR5513 based designs
+       0020  AR5513 802.11abg Wireless NIC
+       0023  AR5416 802.11abgn Wireless PCI Adapter
+       0024  AR5418 802.11abgn Wireless PCI Express Adapter
+       1014  AR5212 802.11abg NIC
+               1014 058a  ThinkPad 11a/b/g Wireless LAN Mini Express Adapter (AR5BXB6)
+       3b08  D-Link AirPlus G DWL-G630
+1695  EPoX Computer Co., Ltd.
+169c  Netcell Corporation
+       0044  Revolution Storage Processing Card
+# The right ID is 196d, but they got it nibble-swapped in 2202.
+169d  Club-3D VB (Wrong ID)
+       3306  ZAP TV 2202
+16a5  Tekram Technology Co.,Ltd.
+16ab  Global Sun Technology Inc
+       1100  GL24110P
+       1101  PLX9052 PCMCIA-to-PCI Wireless LAN
+       1102  PCMCIA-to-PCI Wireless Network Bridge
+       8501  WL-8305 Wireless LAN PCI Adapter
+16ae  SafeNet Inc
+       0001  SafeXcel 1140
+       000a  SafeXcel 1841
+       1141  SafeXcel 1141
+       1841  SafeXcel 1842
+16af  SparkLAN Communications, Inc.
+16b4  Aspex Semiconductor Ltd
+16b8  Sonnet Technologies, Inc.
+16be  Creatix Polymedia GmbH
+16c6  Micrel-Kendin
+       8695  Centaur KS8695 ARM processor
+       8842  KSZ8842-PMQL 2-Port Ethernet Switch
+16c8  Octasic Inc.
+16c9  EONIC B.V. The Netherlands
+16ca  CENATEK Inc
+       0001  Rocket Drive DL
+16cd  Densitron Technologies
+16ce  Roland Corp.
+16d5  Acromag, Inc.
+       0504  PMC-DX504 Reconfigurable FPGA with LVDS I/O
+       0520  PMC520 Serial Communication, 232 Octal
+       0521  PMC521 Serial Communication, 422/485 Octal
+       1020  PMC-AX1020 Reconfigurable FPGA with A/D & D/A
+       1065  PMC-AX1065 Reconfigurable FPGA with A/D & D/A
+       2004  PMC-DX2004 Reconfigurable FPGA with LVDS I/O
+       2020  PMC-AX2020 Reconfigurable FPGA with A/D & D/A
+       2065  PMC-AX2065 Reconfigurable FPGA with A/D & D/A
+       3020  PMC-AX3020 Reconfigurable FPGA with A/D & D/A
+       3065  PMC-AX3065 Reconfigurable FPGA with A/D & D/A
+       4243  PMC424, APC424, AcPC424 Digital I/O and Counter Timer Module
+       4248  PMC464, APC464, AcPC464 Digital I/O and Counter Timer Module
+       424b  PMC-DX2002 Reconfigurable FPGA with Differential I/O
+       4253  PMC-DX503 Reconfigurable FPGA with TTL and Differential I/O
+       4312  PMC-CX1002 Reconfigurable Conduction-Cooled FPGA Virtex-II with Differential I/O
+       4313  PMC-CX1003 Reconfigurable Conduction-Cooled FPGA Virtex-II with CMOS and Differential I/O
+       4322  PMC-CX2002 Reconfigurable Conduction-Cooled FPGA Virtex-II with Differential I/O
+       4323  PMC-CX2003 Reconfigurable Conduction-Cooled FPGA Virtex-II with CMOS and Differential I/O
+       4350  PMC-DX501 Reconfigurable Digital I/O Module
+       4353  PMC-DX2003 Reconfigurable FPGA with TTL and Differential I/O
+       4357  PMC-DX502 Reconfigurable Differential I/O Module
+       4457  PMC730, APC730, AcPC730 Multifunction Module
+       464d  PMC408 32-Channel Digital Input/Output Module
+       4850  PMC220-16 12-Bit Analog Output Module
+       4a42  PMC483, APC483, AcPC483 Counter Timer Module
+       4a50  PMC484, APC484, AcPC484 Counter Timer Module
+       4a56  PMC230 16-Bit Analog Output Module
+       4b47  PMC330, APC330, AcPC330 Analog Input Module, 16-bit A/D
+       4c40  PMC-LX40 Reconfigurable Virtex-4 FPGA with plug-in I/O
+       4c60  PMC-LX60 Reconfigurable Virtex-4 FPGA with plug-in I/O
+       4d4d  PMC341, APC341, AcPC341 Analog Input Module, Simultaneous Sample & Hold
+       4d4e  PMC482, APC482, AcPC482 Counter Timer Board
+       524d  PMC-DX2001 Reconfigurable FPGA with TTL I/O
+       5335  PMC-SX35 Reconfigurable Virtex-4 FPGA with plug-in I/O
+       5456  PMC470 48-Channel Digital Input/Output Module
+16da  Advantech Co., Ltd.
+16df  PIKA Technologies Inc.
+16e3  European Space Agency
+       1e0f  LEON2FT Processor
+16e5  Intellon Corp.
+       6000  INT6000 Ethernet-to-Powerline Bridge [HomePlug AV]
+       6300  INT6300 Ethernet-to-Powerline Bridge [HomePlug AV]
+16ec  U.S. Robotics
+       00ff  USR997900 10/100 Mbps PCI Network Card
+       0116  USR997902 10/100/1000 Mbps PCI Network Card
+       2f00  USR5660A (USR265660A, USR5660A-BP) 56K PCI Faxmodem
+       3685  Wireless Access PCI Adapter Model 022415
+16ed  Sycron N. V.
+       1001  UMIO communication card
+16f3  Jetway Information Co., Ltd.
+16f4  Vweb Corp
+       8000  VW2010
+16f6  VideoTele.com, Inc.
+1702  Internet Machines Corporation (IMC)
+1705  Digital First, Inc.
+170b  NetOctave
+       0100  NSP2000-SSL crypto accelerator
+170c  YottaYotta Inc.
+1719  EZChip Technologies
+# Seems to be a 2nd ID for Vitesse Semiconductor
+1725  Vitesse Semiconductor
+       7174  VSC7174 PCI/PCI-X Serial ATA Host Bus Controller
+172a  Accelerated Encryption
+       13c8  AEP SureWare Runner 1000V3
+1734  Fujitsu Siemens Computers
+       1078  Amilo Pro v2010
+       1085  Celsius M450
+       1098  Amilo L 1310G
+1737  Linksys
+       0013  WMP54G Wireless Pci Card
+       0015  WMP54GS Wireless Pci Card
+       0029  WPG54G ver. 4 PCI Card
+       1032  Gigabit Network Adapter
+               1737 0015  EG1032 v2 Instant Gigabit Network Adapter
+               1737 0024  EG1032 v3 Instant Gigabit Network Adapter
+       1064  Gigabit Network Adapter
+               1737 0016  EG1064 v2 Instant Gigabit Network Adapter
+       ab08  21x4x DEC-Tulip compatible 10/100 Ethernet
+       ab09  21x4x DEC-Tulip compatible 10/100 Ethernet
+173b  Altima (nee Broadcom)
+       03e8  AC1000 Gigabit Ethernet
+       03e9  AC1001 Gigabit Ethernet
+       03ea  AC9100 Gigabit Ethernet
+               173b 0001  AC1002
+       03eb  AC1003 Gigabit Ethernet
+1743  Peppercon AG
+       8139  ROL/F-100 Fast Ethernet Adapter with ROL
+1745  ViXS Systems, Inc.
+1749  RLX Technologies
+174b  PC Partner Limited
+174d  WellX Telecom SA
+175c  AudioScience Inc
+175e  Sanera Systems, Inc.
+1760  TEDIA spol. s r. o.
+1775  SBS Technologies
+177d  Cavium Networks
+       0001  Nitrox XL
+1787  Hightech Information System Ltd.
+# also used by Struck Innovative Systeme for joint developments
+1796  Research Centre Juelich
+       0001  SIS1100 [Gigabit link]
+       0002  HOTlink
+       0003  Counter Timer
+       0004  CAMAC Controller
+       0005  PROFIBUS
+       0006  AMCC HOTlink
+       000d  Synchronisation Slave
+1797  JumpTec h, GMBH
+1799  Belkin
+       6001  Wireless PCI Card - F5D6001
+       6020  Wireless PCMCIA Card - F5D6020
+       6060  Wireless PDA Card - F5D6060
+       7000  Wireless PCI Card - F5D7000
+       700a  Wireless PCI Card - F5D7000UK
+       7010  BCM4306 802.11b/g Wireless Lan Controller F5D7010
+179c  Data Patterns
+       0557  DP-PCI-557 [PCI 1553B]
+       0566  DP-PCI-566 [Intelligent PCI 1553B]
+       5031  DP-CPCI-5031-Synchro Module
+       5121  DP-CPCI-5121-IP Carrier
+       5211  DP-CPCI-5211-IP Carrier
+       5679  AGE Display Module
+17a0  Genesys Logic, Inc
+       8033  GL880S USB 1.1 controller
+       8034  GL880S USB 2.0 controller
+17aa  Lenovo
+17ab  Phillips Components
+17af  Hightech Information System Ltd.
+17b3  Hawking Technologies
+       ab08  PN672TX 10/100 Ethernet
+17b4  Indra Networks, Inc.
+       0011  WebEnhance 100 GZIP Compression Card
+17c0  Wistron Corp.
+17c2  Newisys, Inc.
+17cb  Airgo Networks Inc
+       0001  AGN100 802.11 a/b/g True MIMO Wireless Card
+       0002  AGN300 802.11 a/b/g True MIMO Wireless Card
+17cc  NetChip Technology, Inc
+       2280  USB 2.0
+17cf  Z-Com, Inc.
+17d3  Areca Technology Corp.
+       1110  ARC-1110 4-Port PCI-X to SATA RAID Controller
+       1120  ARC-1120 8-Port PCI-X to SATA RAID Controller
+       1130  ARC-1130 12-Port PCI-X to SATA RAID Controller
+       1160  ARC-1160 16-Port PCI-X to SATA RAID Controller
+       1210  ARC-1210 4-Port PCI-Express to SATA RAID Controller
+       1220  ARC-1220 8-Port PCI-Express to SATA RAID Controller
+       1230  ARC-1230 12-Port PCI-Express to SATA RAID Controller
+       1260  ARC-1260 16-Port PCI-Express to SATA RAID Controller
+       1280  ARC-1231 12-Port PCI-Express to SATA RAID Controller
+17d5  S2io Inc.
+       5831  Xframe 10 Gigabit Ethernet PCI-X
+               103c 12d5  PCI-X 133MHz 10GbE SR Fiber
+               10a9 8020  Single Port 10 Gigabit Ethernet (PCI-X, Fiber)
+               10a9 8024  Single Port 10 Gigabit Ethernet (PCI-X, Fiber)
+       5832  Xframe II 10Gbps Ethernet
+               103c 1337  PCI-X 266MHz 10GigE SR [AD385A]
+               10a9 8021  Single Port 10 Gigabit Ethernet II (PCI-X, Fiber)
+17db  Cray Inc
+       0101  XT Series [Seastar] 3D Toroidal Router
+17de  KWorld Computer Co. Ltd.
+17e4  Sectra AB
+       0001  KK671 Cardbus encryption board
+       0002  KK672 Cardbus encryption board
+17e6  Entropic Communications Inc.
+       0010  EN2010 [c.Link] MoCA Network Controller (Coax, PCI interface)
+       0011  EN2010 [c.Link] MoCA Network Controller (Coax, MPEG interface)
+       0021  EN2210 [c.Link] MoCA Network Controller (Coax)
+17ee  Connect Components Ltd
+17f2  Albatron Corp.
+17f3  RDC Semiconductor, Inc.
+       6020  R6020 North Bridge
+       6030  R6030 ISA Bridge
+       6040  R6040 MAC Controller
+       6060  R6060 USB 1.1 Controller
+       6061  R6061 USB 2.0 Controller
+17fe  Linksys, A Division of Cisco Systems
+       2120  WMP11v4 802.11b PCI card
+       2220  [AirConn] INPROCOMM IPN 2220 Wireless LAN Adapter (rev 01)
+               17fe 2220  WPC54G ver. 4
+17ff  Benq Corporation
+1809  Lumanate, Inc.
+1813  Ambient Technologies Inc
+       4000  HaM controllerless modem
+               16be 0001  V9x HAM Data Fax Modem
+       4100  HaM plus Data Fax Modem
+               16be 0002  V9x HAM 1394
+1814  RaLink
+       0101  Wireless PCI Adapter RT2400 / RT2460
+               1043 0127  WiFi-b add-on Card
+               1462 6828  PC11B2 (MS-6828) Wireless 11b PCI Card
+       0200  RT2500 802.11g PCI [PC54G2]
+       0201  RT2500 802.11g Cardbus/mini-PCI
+               1043 130f  WL-130g
+               1371 001e  CWC-854 Wireless-G CardBus Adapter
+               1371 001f  CWM-854 Wireless-G Mini PCI Adapter
+               1371 0020  CWP-854 Wireless-G PCI Adapter
+               1458 e381  GN-WMKG 802.11b/g Wireless CardBus Adapter
+               1458 e931  GN-WIKG 802.11b/g mini-PCI Adapter
+               1462 6833  Unknown 802.11g mini-PCI Adapter
+               1462 6835  Wireless 11G CardBus CB54G2
+               1737 0032  WMP54G 2.0 PCI Adapter
+               1799 700a  F5D7000 Wireless G Desktop Network Card
+               1799 701a  F5D7010 Wireless G Notebook Network Card
+               185f 22a0  CN-WF513 Wireless Cardbus Adapter
+       0300  Wireless Adapter Canyon CN-WF511
+       0301  RT2561/RT61 802.11g PCI
+               1186 3c08  DWL-G630 Rev E
+               1186 3c09  DWL-G510 Rev C
+               13d1 abe3  miniPCI Pluscom 802.11 a/b/g
+               1458 e934  GN-WP01GS
+               1737 0055  WMP54G ver 4.1
+               1814 2561  EW-7108PCg
+       0302  RT2561/RT61 rev B 802.11g
+               1186 3c08  DWL-G630 Rev E
+               1186 3c09  DWL-G510 Rev C
+               1462 b834  PC54G3 Wireless 11g PCI Card
+       0401  RT2600 802.11 MIMO
+       e932  RT2560F 802.11 b/g PCI
+1820  InfiniCon Systems Inc.
+1822  Twinhan Technology Co. Ltd
+       0001  Twinhan VisionPlus DVB [card=113]
+       4e35  Mantis DTV PCI Bridge Controller [Ver 1.0]
+182d  SiteCom Europe BV
+# HFC-based ISDN card
+       3069  ISDN PCI DC-105V2
+       9790  WL-121 Wireless Network Adapter 100g+ [Ver.3]
+182e  Raza Microelectronics, Inc.
+       0008  XLR516 Processor
+# Strange vendor ID used by BCM5785 when in RAID mode
+182f  Broadcom
+# HT1000 uses 3 IDs 1166:024a (Native SATA Mode), 1166:024b (PATA/IDE Mode), 182f:000b (RAID Mode) depends on SATA BIOS setting
+       000b  BCM5785 [HT1000] SATA (RAID Mode)
+1830  Credence Systems Corporation
+183b  MikroM GmbH
+       08a7  MVC100 DVI
+       08a8  MVC101 SDI
+       08a9  MVC102 DVI+Audio
+       08b0  MVC200-DC
+1849  ASRock Incorporation
+184a  Thales Computers
+1851  Microtune, Inc.
+1852  Anritsu Corp.
+1853  SMSC Automotive Infotainment System Group
+1854  LG Electronics, Inc.
+185b  Compro Technology, Inc.
+185f  Wistron NeWeb Corp.
+1864  SilverBack
+       2110  ISNAP 2110
+1867  Topspin Communications
+       5a44  MT23108 InfiniHost HCA
+       5a45  MT23108 InfiniHost HCA flash recovery
+       5a46  MT23108 InfiniHost HCA bridge
+       6278  MT25208 InfiniHost III Ex (Tavor compatibility mode)
+       6282  MT25208 InfiniHost III Ex
+186c  Humusoft, s.r.o.
+       0612  AD612 Data Acquisition Device
+       0614  MF614 Multifunction I/O Card
+       0622  AD622 Data Acquisition Device
+       0624  MF624 Multifunction I/O Card
+       0625  MF625 3-phase Motor Driver
+1876  L-3 Communications
+       a101  VigraWATCH PCI
+       a102  VigraWATCH PMC
+       a103  Vigra I/O
+187e  ZyXEL Communication Corporation
+       3403  ZyAir G-110 802.11g
+       340e  M-302 802.11g XtremeMIMO
+1885  Avvida Systems Inc.
+1888  Varisys Ltd
+       0301  VMFX1 FPGA PMC module
+       0601  VSM2 dual PMC carrier
+       0710  VS14x series PowerPC PCI board
+       0720  VS24x series PowerPC PCI board
+188a  Ample Communications, Inc
+1890  Egenera, Inc.
+1894  KNC One
+1896  B&B Electronics Manufacturing Company, Inc.
+18a1  Astute Networks Inc.
+18ac  DViCO Corporation
+       d500  FusionHDTV 5
+       d800  FusionHDTV 3 Gold
+       d810  FusionHDTV 3 Gold-Q
+       d820  FusionHDTV 3 Gold-T
+       db30  FusionHDTV DVB-T Pro
+18b8  Ammasso
+       b001  AMSO 1100 iWARP/RDMA Gigabit Ethernet Coprocessor
+18bc  Info-Tek Corp.
+18c3  Micronas Semiconductor Holding AG
+# Nee Octigabay System
+18c8  Cray Inc
+18c9  ARVOO Engineering BV
+18ca  XGI Technology Inc. (eXtreme Graphics Innovation)
+       0020  Volari Z7
+       0040  Volari V3XT/V5/V8
+       0047  Volari 8300 (chip: XP10, codename: XG47)
+18d2  Sitecom
+# Sitecom HFC-S based ISDN controller card DC-105v2
+       3069  DC-105v2 ISDN controller
+18dd  Artimi Inc
+       4c6f  Artimi RTMI-100 UWB adapter
+18e6  MPL AG
+       0001  OSCI [Octal Serial Communication Interface]
+18ec  Cesnet, z.s.p.o.
+       c006  COMBO6
+               18ec d001  COMBO-4MTX
+               18ec d002  COMBO-4SFP
+               18ec d003  COMBO-4SFPRO
+               18ec d004  COMBO-2XFP
+       c045  COMBO6E
+       c050  COMBO-PTM
+       c058  COMBO6X
+               18ec d001  COMBO-4MTX
+               18ec d002  COMBO-4SFP
+               18ec d003  COMBO-4SFPRO
+               18ec d004  COMBO-2XFP
+18f6  NextIO
+       1000  [Nexsis] Switch Virtual P2P PCIe Bridge
+       1050  [Nexsis] Switch Virtual P2P PCI Bridge
+       2000  [Nexsis] Switch Integrated Mgmt. Endpoint
+18f7  Commtech, Inc.
+       0001  Fastcom ESCC-PCI-335
+       0002  Fastcom 422/4-PCI-335
+       0004  Fastcom 422/2-PCI-335
+       0005  Fastcom IGESCC-PCI-ISO/1
+       000a  Fastcom 232/4-PCI-335
+       000f  Fastcom FSCC
+       0010  Fastcom GSCC
+# Dual Serocco
+       0011  Fastcom QSSB
+       0014  SuperFSCC
+18fb  Resilience Corporation
+1904  Hangzhou Silan Microelectronics Co., Ltd.
+       8139  RTL8139D [Realtek] PCI 10/100BaseTX ethernet adaptor
+1905  Micronas USA, Inc.
+1912  Renesas Technology Corp.
+1923  Sangoma Technologies Corp.
+       0040  A200/Remora FXO/FXS Analog AFT card
+       0100  A104d QUAD T1/E1 AFT card
+       0300  A101 single-port T1/E1
+       0400  A104u Quad T1/E1 AFT
+# nee Level 5 Networks
+1924  Solarflare Communications
+       0703  SFC4000 rev A net [Solarstorm]
+               10b8 0102  SMC10GPCIe-10BT (A2) [TigerCard]
+               10b8 0103  SMC10GPCIe-10BT (A3) [TigerCard]
+               10b8 0201  SMC10GPCIe-XFP (A1) [TigerCard]
+               1924 0101  SFE4001-A1
+               1924 0102  SFE4001-A2
+               1924 0103  SFE4001-A3
+               1924 0201  SFE4002-A1
+               1924 0301  SFE4003-A1
+               1924 0302  SFE4003-A2
+               1924 0303  SFE4003-A3
+               1924 0304  SFE4003-A4
+               1924 0500  SFE4005-A0
+       0710  SFC4000 rev B [Solarstorm]
+               10b8 0103  SMC10GPCIe-10BT (A3) [TigerCard]
+               10b8 0201  SMC10GPCIe-XFP (A1) [TigerCard]
+               1924 0102  SFE4001-A2
+               1924 0103  SFE4001-A3
+               1924 0201  SFE4002-A1
+               1924 0302  SFE4003-A2
+               1924 0303  SFE4003-A3
+               1924 0304  SFE4003-A4
+               1924 0500  SFE4005-A0
+       6703  SFC4000 rev A iSCSI/Onload [Solarstorm]
+               10b8 0102  SMC10GPCIe-10BT (A2) [TigerCard]
+               10b8 0103  SMC10GPCIe-10BT (A3) [TigerCard]
+               10b8 0201  SMC10GPCIe-XFP (A1) [TigerCard]
+               1924 0101  SFE4001-A1
+               1924 0102  SFE4001-A2
+               1924 0103  SFE4001-A3
+               1924 0201  SFE4002-A1
+               1924 0301  SFE4003-A1
+               1924 0302  SFE4003-A2
+               1924 0303  SFE4003-A3
+               1924 0304  SFE4003-A4
+               1924 0500  SFE4005-A0
+       c101  EF1-21022T [EtherFabric]
+192e  TransDimension
+1931  Option N.V.
+       000c  Qualcomm MSM6275 UMTS chip
+1942  ClearSpeed Technology plc
+       e511  CSX600 Advance Accelerator Board
+194a  DapTechnology B.V.
+       1111  FireSpy3850
+       1112  FireSpy450b
+       1113  FireSpy450bT
+       1114  FireSpy850
+       1115  FireSpy850bT
+1954  Curtis, Inc.
+1957  Freescale Semiconductor Inc
+       0012  MPC8548E
+       0013  MPC8548
+       0014  MPC8543E
+       0015  MPC8543
+       0018  MPC8547E
+       0019  MPC8545E
+       001a  MPC8545
+       0020  MPC8568E
+       0021  MPC8568
+       0022  MPC8567E
+       0023  MPC8567
+       0030  MPC8533E
+       0031  MPC8533
+       0032  MPC8544E
+       0033  MPC8544
+       0080  MPC8349E
+       0081  MPC8349
+       0082  MPC8347E TBGA
+       0083  MPC8347 TBGA
+       0084  MPC8347E PBGA
+       0085  MPC8347 PBGA
+       0086  MPC8343E
+       0087  MPC8343
+       7010  MPC8641 PCI Host Bridge
+       7011  MPC8641D PCI Host Bridge
+1958  Faster Technology, LLC.
+1959  PA Semi, Inc
+1966  Orad Hi-Tec Systems
+       1975  DVG64 family
+1969  Attansic Technology Corp.
+       1026  L1 Gigabit Ethernet Adapter
+       1048  L1 Gigabit Ethernet Adapter
+       2048  L2 100 Mbit Ethernet Adapter
+196a  Sensory Networks Inc.
+       0101  NodalCore C-1000 Content Classification Accelerator
+       0102  NodalCore C-2000 Content Classification Accelerator
+       0105  NodalCore C-3000 Content Classification Accelerator
+196d  Club-3D BV
+1971  AGEIA Technologies, Inc.
+       1011  Physics Processing Unit [PhysX]
+               1043 0001  PhysX P1
+197b  JMicron Technologies, Inc.
+       2360  JMicron 20360/20363 AHCI Controller
+       2361  JMB361 AHCI/IDE
+               1462 7235  P965 Neo MS-7235 mainboard
+       2363  JMicron 20360/20363 AHCI Controller
+       2365  JMB365 AHCI/IDE
+       2366  JMB366 AHCI/IDE
+       2368  JMB368 IDE controller
+1982  Distant Early Warning Communications Inc
+       1600  OX16C954 HOST-A
+       16ff  OX16C954 HOST-B
+1989  Montilio Inc.
+       0001  RapidFile Bridge
+       8001  RapidFile
+1993  Innominate Security Technologies AG
+199a  Pulse-LINK, Inc.
+19a2  ServerEngines Corp.
+       0200  BladeEngine 10Gb PCI-E iSCSI adapter
+       0201  BladeEngine 10Gb PCI-E Network Adpater
+19a8  DAQDATA GmbH
+19ac  Kasten Chase Applied Research
+       0001  ACA2400 Crypto Accelerator
+19ae  Progeny Systems Corporation
+       0520  4135 HFT Interface Controller
+19d4  Quixant Limited
+19de  Pico Computing
+19e2  Vector Informatik GmbH
+19e7  NET (Network Equipment Technologies)
+       1001  STIX DSP Card
+       1002  STIX - 1 Port T1/E1 Card
+       1003  STIX - 2 Port T1/E1 Card
+       1004  STIX - 4 Port T1/E1 Card
+       1005  STIX - 4 Port FXS Card
+1a03  ASPEED Technology, Inc.
+       2000  AST2000
+1a07  Kvaser AB
+       0006  CAN interface PC104+ HS/HS
+       0007  CAN interface PCIcanx II HS or HS/HS
+1a08  Sierra semiconductor
+       0000  SC15064
+1a0e  DekTec Digital Video B.V.
+1a1d  GFaI e.V.
+       1a17  Meta Networks MTP-1G IDPS NIC
+1a22  Ambric Inc.
+1a29  Fortinet, Inc.
+1a2b  Ascom AG
+1a51  Hectronic AB
+1a58  Razer USA Ltd.
+1a5d  Celoxica
+1a68  VirtenSys Limited
+1a71  XenSource, Inc.
+1a73  Violin Memory, Inc
+       0001  Mozart [Memory Appliance 1010]
+1a77  Lightfleet Corporation
+1a78  Virident Systems Inc.
+1a8c  Verigy Pte. Ltd.
+       1100  E8001-66443 PCI Express CIC
+1aae  Global Velocity, Inc.
+1ab9  Espia Srl
+1ae0  Google, Inc.
+1ae8  Silicon Software GmbH
+1af4  Qumranet, Inc.
+1af5  Netezza Corp.
+1b13  Jaton Corp
+1c1c  Symphony
+       0001  82C101
+1d44  DPT
+       a400  PM2x24/PM3224
+1de1  Tekram Technology Co.,Ltd.
+       0391  TRM-S1040
+       2020  DC-390
+       690c  690c
+       dc29  DC290
+# nee Tumsan Oy
+1fc0  Ascom (Finland) Oy
+       0300  E2200 Dual E1/Rawpipe Card
+# nee PathScale, Inc
+1fc1  QLogic, Corp.
+       000d  InfiniPath HT-400
+       0010  InfiniPath PE-800
+1fc9  Tehuti Networks Ltd.
+       3009  10 Giga TOE SmartNIC
+       3010  10 Giga TOE SmartNIC
+       3014  10 Giga TOE SmartNIC 2-Port
+1fce  Cognio Inc.
+       0001  Spectrum Analyzer PC Card (SAgE)
+2000  Smart Link Ltd.
+2001  Temporal Research Ltd
+2003  Smart Link Ltd.
+2004  Smart Link Ltd.
+21c3  21st Century Computer Corp.
+# (Probably only the Mobile Phone Division)
+22b8  Motorola, Inc.
+2348  Racore
+       2010  8142 100VG/AnyLAN
+2646  Kingston Technologies
+270b  Xantel Corporation
+270f  Chaintech Computer Co. Ltd
+2711  AVID Technology Inc.
+2a15  3D Vision(???)
+3000  Hansol Electronics Inc.
+3142  Post Impression Systems.
+3388  Hint Corp
+       0013  HiNT HC4 PCI to ISDN bridge, Multimedia audio controller
+       0014  HiNT HC4 PCI to ISDN bridge, Network controller
+       0020  HB6 Universal PCI-PCI bridge (transparent mode)
+       0021  HB6 Universal PCI-PCI bridge (non-transparent mode)
+               1775 c200  C2K CompactPCI interface bridge
+               1775 ce90  CE9
+               4c53 1050  CT7 mainboard
+               4c53 1080  CT8 mainboard
+               4c53 1090  Cx9 mainboard
+               4c53 10a0  CA3/CR3 mainboard
+               4c53 3010  PPCI mezzanine (32-bit PMC)
+               4c53 3011  PPCI mezzanine (64-bit PMC)
+               4c53 4000  PMCCARR1 carrier board
+       0022  HiNT HB4 PCI-PCI Bridge (PCI6150)
+       0026  HB2 PCI-PCI Bridge
+       101a  E.Band [AudioTrak Inca88]
+       101b  E.Band [AudioTrak Inca88]
+       8011  VXPro II Chipset
+               3388 8011  VXPro II Chipset CPU to PCI Bridge
+       8012  VXPro II Chipset
+               3388 8012  VXPro II Chipset PCI to ISA Bridge
+       8013  VXPro II IDE
+               3388 8013  VXPro II Chipset EIDE Controller
+3411  Quantum Designs (H.K.) Inc
+3513  ARCOM Control Systems Ltd
+3842  eVga.com. Corp.
+       c370  e-GeFORCE 6600 256 DDR PCI-e
+38ef  4Links
+3d3d  3DLabs
+       0001  GLINT 300SX
+       0002  GLINT 500TX
+               0000 0000  GLoria L
+       0003  GLINT Delta
+               0000 0000  GLoria XL
+       0004  Permedia
+       0005  Permedia
+       0006  GLINT MX
+               0000 0000  GLoria XL
+               1048 0a42  GLoria XXL
+       0007  3D Extreme
+       0008  GLINT Gamma G1
+               1048 0a42  GLoria XXL
+       0009  Permedia II 2D+3D
+               1040 0011  AccelStar II
+               1048 0a42  GLoria XXL
+               13e9 1000  6221L-4U
+               3d3d 0100  AccelStar II 3D Accelerator
+               3d3d 0111  Permedia 3:16
+               3d3d 0114  Santa Ana
+               3d3d 0116  Oxygen GVX1
+               3d3d 0119  Scirocco
+               3d3d 0120  Santa Ana PCL
+               3d3d 0125  Oxygen VX1
+               3d3d 0127  Permedia3 Create!
+       000a  GLINT R3
+               3d3d 0121  Oxygen VX1
+       000c  GLINT R3 [Oxygen VX1]
+               3d3d 0144  Oxygen VX1-4X AGP [Permedia 4]
+       000d  GLint R4 rev A
+       0011  GLint R4 rev B
+       0012  GLint R5 rev A
+       0013  GLint R5 rev B
+       0020  VP10 visual processor
+       0022  VP10 visual processor
+       0024  VP9 visual processor
+       0100  Permedia II 2D+3D
+       07a1  Wildcat III 6210
+       07a2  Sun XVR-500 Graphics Accelerator
+       07a3  Wildcat IV 7210
+       1004  Permedia
+       3d04  Permedia
+       ffff  Glint VGA
+4005  Avance Logic Inc.
+       0300  ALS300 PCI Audio Device
+       0308  ALS300+ PCI Audio Device
+       0309  PCI Input Controller
+       1064  ALG-2064
+       2064  ALG-2064i
+       2128  ALG-2364A GUI Accelerator
+       2301  ALG-2301
+       2302  ALG-2302
+       2303  AVG-2302 GUI Accelerator
+       2364  ALG-2364A
+       2464  ALG-2464
+       2501  ALG-2564A/25128A
+       4000  ALS4000 Audio Chipset
+               4005 4000  ALS4000 Audio Chipset
+       4710  ALC200/200P
+4033  Addtron Technology Co, Inc.
+       1360  RTL8139 Ethernet
+4040  NetXen Incorporated
+       0001  NXB-10GXSR 10 Gigabit Ethernet PCIe Adapter with SR-XFP optical interface
+               103c 7047  NC510F PCIe 10 Gigabit Server Adapter
+       0002  NXB-10GCX4 10 Gigabit Ethernet PCIe Adapter with CX4 copper interface
+               103c 7048  NC510c PCIe 10Gigabit Server Adapter
+       0003  NXB-4GCU Quad Gigabit Ethernet PCIe Adapter with 1000-BASE-T interface
+       0004  BladeCenter-H 10 Gigabit Ethernet High Speed Daughter Card
+       0005  NetXen Dual Port 10GbE Multifunction Adapter for c-Class
+               103c 170e  NC512m Dual Port 10GbE Multifunction BL-C Adapter
+       0024  XG Mgmt
+       0025  XG Mgmt
+       0100  NX3031 Multifunction 1/10 Gigabit Server Adapter
+               103c 171b  NC522m Dual Port 10GbE Multifunction BL-c Adapter
+               103c 705a  NC375i Integrated Quad Port Multifunction Gigabit Server Adapter
+               103c 705b  NC522SFP Dual Port 10GbE Server Adapter
+4143  Digital Equipment Corp
+4144  Alpha Data
+       0044  ADM-XRCIIPro
+416c  Aladdin Knowledge Systems
+       0100  AladdinCARD
+       0200  CPC
+4321  Tata Power Strategic Electronics Division
+434e  CAST Navigation LLC
+4444  Internext Compression Inc
+       0016  iTVC16 (CX23416) MPEG-2 Encoder
+               0070 0003  WinTV PVR 250
+               0070 0009  WinTV PVR 150
+               0070 0801  WinTV PVR 150
+               0070 0807  WinTV PVR 150
+               0070 4001  WinTV PVR 250
+               0070 4009  WinTV PVR 250
+               0070 4801  WinTV PVR 250
+               0070 4803  WinTV PVR 250
+               0070 8003  WinTV PVR 150
+               0070 8801  WinTV PVR 150
+               0070 c801  WinTV PVR 150
+               0070 e807  WinTV PVR 500 (1st unit)
+               0070 e817  WinTV PVR 500 (2nd unit)
+               0070 ff92  WiNTV PVR-550
+               0270 0801  WinTV PVR 150
+               104d 013d  ENX-26 TV Encoder
+               10fc d038  GV-MVP/RX2W (1st unit)
+               10fc d039  GV-MVP/RX2W (2nd unit)
+               12ab fff3  MPG600
+               12ab ffff  MPG600
+               1461 c019  UltraTV 1500 MCE
+               9005 0092  VideOh! AVC-2010
+               9005 0093  VideOh! AVC-2410
+       0803  iTVC15 MPEG-2 Encoder
+               0070 4000  WinTV PVR-350
+               0070 4001  WinTV PVR-250
+               0070 4800  WinTV PVR-350 (V1)
+               12ab 0000  MPG160
+               1461 a3ce  M179
+               1461 a3cf  M179
+4468  Bridgeport machines
+4594  Cogetec Informatique Inc
+45fb  Baldor Electric Company
+4680  Umax Computer Corp
+4843  Hercules Computer Technology Inc
+4916  RedCreek Communications Inc
+       1960  RedCreek PCI adapter
+4943  Growth Networks
+494f  ACCES I/O Products, Inc.
+       0c60  PCI-DIO-48
+       0e60  PCI-DIO-48S
+       10e8  LPCI-COM-8SM
+4978  Axil Computer Inc
+4a14  NetVin
+       5000  NV5000SC
+               4a14 5000  RT8029-Based Ethernet Adapter
+4b10  Buslogic Inc.
+4c48  LUNG HWA Electronics
+4c53  SBS Technologies
+       0000  PLUSTEST device
+               4c53 3000  PLUSTEST card (PC104+)
+               4c53 3001  PLUSTEST card (PMC)
+       0001  PLUSTEST-MM device
+               4c53 3002  PLUSTEST-MM card (PMC)
+4ca1  Seanix Technology Inc
+4d51  MediaQ Inc.
+       0200  MQ-200
+4d54  Microtechnica Co Ltd
+4d56  MATRIX VISION GmbH
+       0000  Altera Cyclone II CameraLink Frame Grabber [mvHYPERION-CLe]
+4ddc  ILC Data Device Corp
+       0100  DD-42924I5-300 (ARINC 429 Data Bus)
+       0801  BU-65570I1 MIL-STD-1553 Test and Simulation
+       0802  BU-65570I2 MIL-STD-1553 Test and Simulation
+       0811  BU-65572I1 MIL-STD-1553 Test and Simulation
+       0812  BU-65572I2 MIL-STD-1553 Test and Simulation
+       0881  BU-65570T1 MIL-STD-1553 Test and Simulation
+       0882  BU-65570T2 MIL-STD-1553 Test and Simulation
+       0891  BU-65572T1 MIL-STD-1553 Test and Simulation
+       0892  BU-65572T2 MIL-STD-1553 Test and Simulation
+       0901  BU-65565C1 MIL-STD-1553 Data Bus
+       0902  BU-65565C2 MIL-STD-1553 Data Bus
+       0903  BU-65565C3 MIL-STD-1553 Data Bus
+       0904  BU-65565C4 MIL-STD-1553 Data Bus
+       0b01  BU-65569I1 MIL-STD-1553 Data Bus
+       0b02  BU-65569I2 MIL-STD-1553 Data Bus
+       0b03  BU-65569I3 MIL-STD-1553 Data Bus
+       0b04  BU-65569I4 MIL-STD-1553 Data Bus
+5046  GemTek Technology Corporation
+       1001  PCI Radio
+5053  Voyetra Technologies
+       2010  Daytona Audio Adapter
+5136  S S Technologies
+5143  Qualcomm Inc
+5145  Ensoniq (Old)
+       3031  Concert AudioPCI
+5168  Animation Technologies Inc.
+       0300  FlyDVB-S
+       0301  FlyDVB-T
+5301  Alliance Semiconductor Corp.
+       0001  ProMotion aT3D
+5333  S3 Inc.
+       0551  Plato/PX (system)
+       5631  86c325 [ViRGE]
+       8800  86c866 [Vision 866]
+       8801  86c964 [Vision 964]
+       8810  86c764_0 [Trio 32 vers 0]
+       8811  86c764/765 [Trio32/64/64V+]
+       8812  86cM65 [Aurora64V+]
+       8813  86c764_3 [Trio 32/64 vers 3]
+       8814  86c767 [Trio 64UV+]
+       8815  86cM65 [Aurora 128]
+       883d  86c988 [ViRGE/VX]
+       8870  FireGL
+       8880  86c868 [Vision 868 VRAM] vers 0
+       8881  86c868 [Vision 868 VRAM] vers 1
+       8882  86c868 [Vision 868 VRAM] vers 2
+       8883  86c868 [Vision 868 VRAM] vers 3
+       88b0  86c928 [Vision 928 VRAM] vers 0
+       88b1  86c928 [Vision 928 VRAM] vers 1
+       88b2  86c928 [Vision 928 VRAM] vers 2
+       88b3  86c928 [Vision 928 VRAM] vers 3
+       88c0  86c864 [Vision 864 DRAM] vers 0
+       88c1  86c864 [Vision 864 DRAM] vers 1
+       88c2  86c864 [Vision 864-P DRAM] vers 2
+       88c3  86c864 [Vision 864-P DRAM] vers 3
+       88d0  86c964 [Vision 964 VRAM] vers 0
+       88d1  86c964 [Vision 964 VRAM] vers 1
+       88d2  86c964 [Vision 964-P VRAM] vers 2
+       88d3  86c964 [Vision 964-P VRAM] vers 3
+       88f0  86c968 [Vision 968 VRAM] rev 0
+       88f1  86c968 [Vision 968 VRAM] rev 1
+       88f2  86c968 [Vision 968 VRAM] rev 2
+       88f3  86c968 [Vision 968 VRAM] rev 3
+       8900  86c755 [Trio 64V2/DX]
+               5333 8900  86C775 Trio64V2/DX
+       8901  86c775/86c785 [Trio 64V2/DX or /GX]
+               5333 8901  86C775 Trio64V2/DX, 86C785 Trio64V2/GX
+       8902  Plato/PX
+       8903  Trio 3D business multimedia
+       8904  Trio 64 3D
+               1014 00db  Integrated Trio3D
+               4843 314a  Terminator 128/3D GLH
+               5333 8904  86C365 Trio3D AGP
+       8905  Trio 64V+ family
+       8906  Trio 64V+ family
+       8907  Trio 64V+ family
+       8908  Trio 64V+ family
+       8909  Trio 64V+ family
+       890a  Trio 64V+ family
+       890b  Trio 64V+ family
+       890c  Trio 64V+ family
+       890d  Trio 64V+ family
+       890e  Trio 64V+ family
+       890f  Trio 64V+ family
+       8a01  ViRGE/DX or /GX
+               0e11 b032  ViRGE/GX
+               10b4 1617  Nitro 3D
+               10b4 1717  Nitro 3D
+               5333 8a01  ViRGE/DX
+       8a10  ViRGE/GX2
+               1092 8a10  Stealth 3D 4000
+       8a13  86c368 [Trio 3D/2X]
+               5333 8a13  Trio3D/2X
+       8a20  86c794 [Savage 3D]
+               5333 8a20  86C391 Savage3D
+       8a21  86c390 [Savage 3D/MV]
+               5333 8a21  86C390 Savage3D/MV
+       8a22  Savage 4
+               1033 8068  Savage 4
+               1033 8069  Savage 4
+               1033 8110  Savage 4 LT
+               105d 0018  SR9 8Mb SDRAM
+               105d 002a  SR9 Pro 16Mb SDRAM
+               105d 003a  SR9 Pro 32Mb SDRAM
+               105d 092f  SR9 Pro+ 16Mb SGRAM
+               1092 4207  Stealth III S540
+               1092 4800  Stealth III S540
+               1092 4807  SpeedStar A90
+               1092 4808  Stealth III S540
+               1092 4809  Stealth III S540
+               1092 480e  Stealth III S540
+               1092 4904  Stealth III S520
+               1092 4905  SpeedStar A200
+               1092 4a09  Stealth III S540
+               1092 4a0b  Stealth III S540 Xtreme
+               1092 4a0f  Stealth III S540
+               1092 4e01  Stealth III S540
+               1102 101d  3d Blaster Savage 4
+               1102 101e  3d Blaster Savage 4
+               5333 8100  86C394-397 Savage4 SDRAM 100
+               5333 8110  86C394-397 Savage4 SDRAM 110
+               5333 8125  86C394-397 Savage4 SDRAM 125
+               5333 8143  86C394-397 Savage4 SDRAM 143
+               5333 8a22  86C394-397 Savage4
+               5333 8a2e  86C394-397 Savage4 32bit
+               5333 9125  86C394-397 Savage4 SGRAM 125
+               5333 9143  86C394-397 Savage4 SGRAM 143
+       8a23  Savage 4
+       8a25  ProSavage PM133
+       8a26  ProSavage KM133
+       8c00  ViRGE/M3
+       8c01  ViRGE/MX
+               1179 0001  ViRGE/MX
+       8c02  ViRGE/MX+
+       8c03  ViRGE/MX+MV
+       8c10  86C270-294 Savage/MX-MV
+       8c11  82C270-294 Savage/MX
+       8c12  86C270-294 Savage/IX-MV
+               1014 017f  Thinkpad T20/T22
+               1179 0001  86C584 SuperSavage/IXC Toshiba
+       8c13  86C270-294 Savage/IX
+               1179 0001  Magnia Z310
+       8c22  SuperSavage MX/128
+       8c24  SuperSavage MX/64
+       8c26  SuperSavage MX/64C
+       8c2a  SuperSavage IX/128 SDR
+       8c2b  SuperSavage IX/128 DDR
+       8c2c  SuperSavage IX/64 SDR
+       8c2d  SuperSavage IX/64 DDR
+       8c2e  SuperSavage IX/C SDR
+               1014 01fc  ThinkPad T23 (2647-4MG)
+       8c2f  SuperSavage IX/C DDR
+       8d01  86C380 [ProSavageDDR K4M266]
+       8d02  VT8636A [ProSavage KN133] AGP4X VGA Controller (TwisterK)
+       8d03  VT8751 [ProSavageDDR P4M266]
+       8d04  VT8375 [ProSavage8 KM266/KL266]
+       8e48  Chrome S27 PCIE
+               5333 0130  Chrome S27 256M DDR2
+       9102  86C410 Savage 2000
+               1092 5932  Viper II Z200
+               1092 5934  Viper II Z200
+               1092 5952  Viper II Z200
+               1092 5954  Viper II Z200
+               1092 5a35  Viper II Z200
+               1092 5a37  Viper II Z200
+               1092 5a55  Viper II Z200
+               1092 5a57  Viper II Z200
+       ca00  SonicVibes
+544c  Teralogic Inc
+       0350  TL880-based HDTV/ATSC tuner
+5455  Technische University Berlin
+       4458  S5933
+5456  GoTView
+5519  Cnet Technologies, Inc.
+5544  Dunord Technologies
+       0001  I-30xx Scanner Interface
+5555  Genroco, Inc
+       0003  TURBOstor HFP-832 [HiPPI NIC]
+5654  VoiceTronix Pty Ltd
+       3132  OpenSwitch12
+5700  Netpower
+5851  Exacq Technologies
+5853  XenSource, Inc.
+       0001  Xen Platform Device
+6356  UltraStor
+6374  c't Magazin fuer Computertechnik
+       6773  GPPCI
+6409  Logitec Corp.
+6666  Decision Computer International Co.
+       0001  PCCOM4
+       0002  PCCOM8
+       0004  PCCOM2
+       0101  PCI 8255/8254 I/O Card
+7063  pcHDTV
+       2000  HD-2000
+       3000  HD-3000
+       5500  HD5500 HDTV
+7604  O.N. Electronic Co Ltd.
+7bde  MIDAC Corporation
+7fed  PowerTV
+8008  Quancom Electronic GmbH
+       0010  WDOG1 [PCI-Watchdog 1]
+       0011  PWDOG2 [PCI-Watchdog 2]
+# Wrong ID used in subsystem ID of AsusTek PCI-USB2 PCI card.
+807d  Asustek Computer, Inc.
+8086  Intel Corporation
+       0007  82379AB
+       0008  Extended Express System Support Controller
+       0039  21145 Fast Ethernet
+       0040  Auburndale/Havendale DRAM Controller
+       0041  Auburndale/Havendale PCI Express x16 Root Port
+       0042  Auburndale/Havendale Integrated Graphics Controller
+       0122  82437FX
+       0309  80303 I/O Processor PCI-to-PCI Bridge
+       030d  80312 I/O Companion Chip PCI-to-PCI Bridge
+       0326  6700/6702PXH I/OxAPIC Interrupt Controller A
+               1775 1100  CR11/VR11 Single Board Computer
+       0327  6700PXH I/OxAPIC Interrupt Controller B
+               1775 1100  CR11/VR11 Single Board Computer
+       0329  6700PXH PCI Express-to-PCI Bridge A
+       032a  6700PXH PCI Express-to-PCI Bridge B
+       032c  6702PXH PCI Express-to-PCI Bridge A
+       0330  80332 [Dobson] I/O processor (A-Segment Bridge)
+       0331  80332 [Dobson] I/O processor (A-Segment IOAPIC)
+       0332  80332 [Dobson] I/O processor (B-Segment Bridge)
+       0333  80332 [Dobson] I/O processor (B-Segment IOAPIC)
+       0334  80332 [Dobson] I/O processor (ATU)
+       0335  80331 [Lindsay] I/O processor (PCI-X Bridge)
+       0336  80331 [Lindsay] I/O processor (ATU)
+       0340  41210 [Lanai] Serial to Parallel PCI Bridge (A-Segment Bridge)
+       0341  41210 [Lanai] Serial to Parallel PCI Bridge (B-Segment Bridge)
+       0370  80333 Segment-A PCI Express-to-PCI Express Bridge
+       0371  80333 A-Bus IOAPIC
+       0372  80333 Segment-B PCI Express-to-PCI Express Bridge
+       0373  80333 B-Bus IOAPIC
+       0374  80333 Address Translation Unit
+       0482  82375EB/SB PCI to EISA Bridge
+       0483  82424TX/ZX [Saturn] CPU to PCI bridge
+       0484  82378ZB/IB, 82379AB (SIO, SIO.A) PCI to ISA Bridge
+       0486  82425EX/ZX [Aries] PCIset with ISA bridge
+       04a3  82434LX/NX [Mercury/Neptune] Processor to PCI bridge
+       04d0  82437FX [Triton FX]
+       0500  E8870 Processor bus control
+       0501  E8870 Memory controller
+# and registers common to both SPs
+       0502  E8870 Scalability Port 0
+# and global performance monitoring
+       0503  E8870 Scalability Port 1
+       0510  E8870IO Hub Interface Port 0 registers (8-bit compatibility port)
+       0511  E8870IO Hub Interface Port 1 registers
+       0512  E8870IO Hub Interface Port 2 registers
+       0513  E8870IO Hub Interface Port 3 registers
+       0514  E8870IO Hub Interface Port 4 registers
+       0515  E8870IO General SIOH registers
+       0516  E8870IO RAS registers
+       0530  E8870SP Scalability Port 0 registers
+       0531  E8870SP Scalability Port 1 registers
+       0532  E8870SP Scalability Port 2 registers
+       0533  E8870SP Scalability Port 3 registers
+       0534  E8870SP Scalability Port 4 registers
+       0535  E8870SP Scalability Port 5 registers
+# (bi-interleave 0) and global registers that are neither per-port nor per-interleave
+       0536  E8870SP Interleave registers 0 and 1
+# (bi-interleave 1)
+       0537  E8870SP Interleave registers 2 and 3
+       0600  RAID Controller
+               8086 0136  SRCU31L
+               8086 01af  SRCZCR
+               8086 01c1  ICP Vortex GDT8546RZ
+               8086 01f7  SCRU32
+# uninitialized SRCU32 RAID Controller
+       061f  80303 I/O Processor
+       0960  80960RP (i960RP) Microprocessor/Bridge
+       0962  80960RM (i960RM) Bridge
+       0964  80960RP (i960RP) Microprocessor/Bridge
+       1000  82542 Gigabit Ethernet Controller (Fiber)
+               0e11 b0df  NC6132 Gigabit Ethernet Adapter (1000-SX)
+               0e11 b0e0  NC6133 Gigabit Ethernet Adapter (1000-LX)
+               0e11 b123  NC6134 Gigabit Ethernet Adapter (1000-LX)
+               1014 0119  Netfinity Gigabit Ethernet SX Adapter
+               8086 1000  PRO/1000 Gigabit Server Adapter
+       1001  82543GC Gigabit Ethernet Controller (Fiber)
+               0e11 004a  NC6136 Gigabit Server Adapter
+               1014 01ea  Netfinity Gigabit Ethernet SX Adapter
+               8086 1002  PRO/1000 F Server Adapter
+               8086 1003  PRO/1000 F Server Adapter
+       1002  Pro 100 LAN+Modem 56 Cardbus II
+               8086 200e  Pro 100 LAN+Modem 56 Cardbus II
+               8086 2013  Pro 100 SR Mobile Combo Adapter
+               8086 2017  Pro 100 S Combo Mobile Adapter
+       1004  82543GC Gigabit Ethernet Controller (Copper)
+               0e11 0049  NC7132 Gigabit Upgrade Module
+               0e11 b1a4  NC7131 Gigabit Server Adapter
+               1014 10f2  Gigabit Ethernet Server Adapter
+               8086 1004  PRO/1000 T Server Adapter
+               8086 2004  PRO/1000 T Server Adapter
+       1008  82544EI Gigabit Ethernet Controller (Copper)
+               1014 0269  iSeries 1000/100/10 Ethernet Adapter
+               1028 011b  PowerEdge 1650/2550
+               1028 011c  PRO/1000 XT Network Connection
+               8086 1107  PRO/1000 XT Server Adapter
+               8086 2107  PRO/1000 XT Server Adapter
+               8086 2110  PRO/1000 XT Desktop Adapter
+               8086 3108  PRO/1000 XT Network Connection
+       1009  82544EI Gigabit Ethernet Controller (Fiber)
+               1014 0268  iSeries Gigabit Ethernet Adapter
+               8086 1109  PRO/1000 XF Server Adapter
+               8086 2109  PRO/1000 XF Server Adapter
+       100a  82540EM Gigabit Ethernet Controller
+       100c  82544GC Gigabit Ethernet Controller (Copper)
+               8086 1112  PRO/1000 T Desktop Adapter
+               8086 2112  PRO/1000 T Desktop Adapter
+       100d  82544GC Gigabit Ethernet Controller (LOM)
+               1028 0123  PRO/1000 XT Network Connection
+               1079 891f  82544GC Based Network Connection
+               4c53 1080  CT8 mainboard
+               8086 110d  82544GC Based Network Connection
+       100e  82540EM Gigabit Ethernet Controller
+               1014 0265  PRO/1000 MT Network Connection
+               1014 0267  PRO/1000 MT Network Connection
+               1014 026a  PRO/1000 MT Network Connection
+               1028 002e  Optiplex GX260
+               1028 0134  PowerEdge 600SC
+               1028 0151  Optiplex GX270
+               107b 8920  PRO/1000 MT Desktop Adapter
+               8086 001e  PRO/1000 MT Desktop Adapter
+               8086 002e  PRO/1000 MT Desktop Adapter
+               8086 1376  PRO/1000 GT Desktop Adapter
+               8086 1476  PRO/1000 GT Desktop Adapter
+       100f  82545EM Gigabit Ethernet Controller (Copper)
+               1014 0269  iSeries 1000/100/10 Ethernet Adapter
+               1014 028e  PRO/1000 MT Network Connection
+               15ad 0750  Abstract PRO/1000 MT Single Port Adapter
+               8086 1000  PRO/1000 MT Network Connection
+               8086 1001  PRO/1000 MT Server Adapter
+       1010  82546EB Gigabit Ethernet Controller (Copper)
+               0e11 00db  NC7170 Gigabit Server Adapter
+               1014 027c  PRO/1000 MT Dual Port Network Adapter
+               15ad 0760  Abstract PRO/1000 MT Dual Port Adapter
+               18fb 7872  RESlink-X
+               1fc1 0026  Niagara 2260 Bypass Card
+               4c53 1080  CT8 mainboard
+               4c53 10a0  CA3/CR3 mainboard
+               8086 1011  PRO/1000 MT Dual Port Server Adapter
+               8086 1012  PRO/1000 MT Dual Port Server Adapter
+               8086 101a  PRO/1000 MT Dual Port Network Connection
+               8086 3424  SE7501HG2 Mainboard
+       1011  82545EM Gigabit Ethernet Controller (Fiber)
+               1014 0268  iSeries Gigabit Ethernet Adapter
+               8086 1002  PRO/1000 MF Server Adapter
+               8086 1003  PRO/1000 MF Server Adapter (LX)
+       1012  82546EB Gigabit Ethernet Controller (Fiber)
+               0e11 00dc  NC6170 Gigabit Server Adapter
+               8086 1012  PRO/1000 MF Dual Port Server Adapter
+       1013  82541EI Gigabit Ethernet Controller
+               8086 0013  PRO/1000 MT Network Connection
+               8086 1013  PRO/1000 MT Network Connection
+               8086 1113  PRO/1000 MT Desktop Adapter
+       1014  82541ER Gigabit Ethernet Controller
+               8086 0014  PRO/1000 MT Desktop Connection
+               8086 1014  PRO/1000 MT Network Connection
+       1015  82540EM Gigabit Ethernet Controller (LOM)
+               8086 1015  PRO/1000 MT Mobile Connection
+       1016  82540EP Gigabit Ethernet Controller (Mobile)
+               1014 052c  PRO/1000 MT Mobile Connection
+               1179 0001  PRO/1000 MT Mobile Connection
+               8086 1016  PRO/1000 MT Mobile Connection
+       1017  82540EP Gigabit Ethernet Controller
+               8086 1017  PR0/1000 MT Desktop Connection
+       1018  82541EI Gigabit Ethernet Controller
+               8086 1018  PRO/1000 MT Mobile Connection
+       1019  82547EI Gigabit Ethernet Controller
+               1458 1019  GA-8IPE1000 Pro2 motherboard (865PE)
+               1458 e000  Intel Gigabit Ethernet (Kenai II)
+               8086 1019  ASUS PC-DL Deluxe mainboard (Socket 603)
+               8086 301f  D865PERL mainboard
+               8086 3025  D875PBZ motherboard
+               8086 302c  Intel 82865G Mainboard (D865GBF)
+               8086 3427  S875WP1-E mainboard
+       101a  82547EI Gigabit Ethernet Controller (Mobile)
+               8086 101a  PRO/1000 CT Mobile Connection
+       101d  82546EB Gigabit Ethernet Controller
+               8086 1000  PRO/1000 MT Quad Port Server Adapter
+       101e  82540EP Gigabit Ethernet Controller (Mobile)
+               1014 0549  Thinkpad
+               1179 0001  PRO/1000 MT Mobile Connection
+               8086 101e  PRO/1000 MT Mobile Connection
+       1026  82545GM Gigabit Ethernet Controller
+               1028 0169  Precision 470
+               8086 1000  PRO/1000 MT Server Connection
+               8086 1001  PRO/1000 MT Server Adapter
+               8086 1002  PRO/1000 MT Server Adapter
+               8086 1003  PRO/1000 GT Server Adapter
+               8086 1026  PRO/1000 MT Server Connection
+       1027  82545GM Gigabit Ethernet Controller
+               103c 3103  NC310F PCI-X Gigabit Server Adapter
+               8086 1001  PRO/1000 MF Server Adapter(LX)
+               8086 1002  PRO/1000 MF Server Adapter(LX)
+               8086 1003  PRO/1000 MF Server Adapter(LX)
+               8086 1027  PRO/1000 MF Server Adapter
+       1028  82545GM Gigabit Ethernet Controller
+               8086 1028  PRO/1000 MB Server Connection
+       1029  82559 Ethernet Controller
+       1030  82559 InBusiness 10/100
+       1031  82801CAM (ICH3) PRO/100 VE (LOM) Ethernet Controller
+               1014 0209  ThinkPad A/T/X Series
+               104d 80e7  Vaio PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
+               104d 813c  Vaio PCG-GRV616G
+               107b 5350  EtherExpress PRO/100 VE
+               1179 0001  EtherExpress PRO/100 VE
+               144d c000  EtherExpress PRO/100 VE
+               144d c001  EtherExpress PRO/100 VE
+               144d c003  EtherExpress PRO/100 VE
+               144d c006  vpr Matrix 170B4
+       1032  82801CAM (ICH3) PRO/100 VE Ethernet Controller
+       1033  82801CAM (ICH3) PRO/100 VM (LOM) Ethernet Controller
+       1034  82801CAM (ICH3) PRO/100 VM Ethernet Controller
+       1035  82801CAM (ICH3)/82562EH (LOM) Ethernet Controller
+       1036  82801CAM (ICH3) 82562EH Ethernet Controller
+       1037  82801CAM (ICH3) Chipset Ethernet Controller
+       1038  82801CAM (ICH3) PRO/100 VM (KM) Ethernet Controller
+               0e11 0098  Evo N600c
+       1039  82801DB PRO/100 VE (LOM) Ethernet Controller
+               1014 0267  NetVista A30p
+               114a 0582  PC8 onboard ethernet ETH1
+       103a  82801DB PRO/100 VE (CNR) Ethernet Controller
+       103b  82801DB PRO/100 VM (LOM) Ethernet Controller
+       103c  82801DB PRO/100 VM (CNR) Ethernet Controller
+       103d  82801DB PRO/100 VE (MOB) Ethernet Controller
+               1014 0522  ThinkPad R40
+               8086 103d  82562EZ 10/100 Ethernet Controller
+       103e  82801DB PRO/100 VM (MOB) Ethernet Controller
+       1040  536EP Data Fax Modem
+               16be 1040  V.9X DSP Data Fax Modem
+       1043  PRO/Wireless LAN 2100 3B Mini PCI Adapter
+               103c 08b0  tc1100 tablet
+               8086 2522  Samsung X10/P30 integrated WLAN
+               8086 2527  MIM2000/Centrino
+               8086 2561  Dell Latitude D800
+               8086 2581  Toshiba Satellite M10
+       1048  82597EX 10GbE Ethernet Controller
+               8086 a01f  PRO/10GbE LR Server Adapter
+               8086 a11f  PRO/10GbE LR Server Adapter
+       1049  82566MM Gigabit Network Connection
+               103c 30c1  Compaq 6910p
+               17aa 20b9  ThinkPad T61
+       104a  82566DM Gigabit Network Connection
+       104b  82566DC Gigabit Network Connection
+       104c  82562V 10/100 Network Connection
+       104d  82566MC Gigabit Network Connection
+       1050  82562EZ 10/100 Ethernet Controller
+               1028 019d  Dimension 3000
+               1462 728c  865PE Neo2 (MS-6728)
+               1462 758c  MS-6758 (875P Neo)
+               8086 3020  D865PERL mainboard
+               8086 302f  Desktop Board D865GBF
+               8086 3427  S875WP1-E mainboard
+       1051  82801EB/ER (ICH5/ICH5R) integrated LAN Controller
+       1052  PRO/100 VM Network Connection
+       1053  PRO/100 VM Network Connection
+       1054  PRO/100 VE Network Connection
+       1055  PRO/100 VM Network Connection
+       1056  PRO/100 VE Network Connection
+       1057  PRO/100 VE Network Connection
+       1059  82551QM Ethernet Controller
+       105b  82546GB Gigabit Ethernet Controller (Copper)
+       105e  82571EB Gigabit Ethernet Controller
+               103c 7044  NC360T PCI Express Dual Port Gigabit Server Adapter
+               103c 704e  Dual Port 1000Base-T (PCIe) [AD337A]
+               1775 1100  CR11/VR11 Single Board Computer
+               1775 6003  Telum GE-QT
+               8086 005e  PRO/1000 PT Dual Port Server Connection
+               8086 105e  PRO/1000 PT Dual Port Network Connection
+               8086 10d5  82571PT Gigabit PT Quad Port Server ExpressModule
+               8086 115e  PRO/1000 PT Dual Port Server Adapter
+               8086 125e  PRO/1000 PT Dual Port Server Adapter
+               8086 135e  PRO/1000 PT Dual Port Server Adapter
+       105f  82571EB Gigabit Ethernet Controller
+               103c 704f  Dual Port 1000Base-SX (PCIe) [AD338A]
+               8086 005a  PRO/1000 PF Dual Port Server Adapter
+               8086 115f  PRO/1000 PF Dual Port Server Adapter
+               8086 125f  PRO/1000 PF Dual Port Server Adapter
+               8086 135f  PRO/1000 PF Dual Port Server Adapter
+       1060  82571EB Gigabit Ethernet Controller
+               8086 0060  PRO/1000 PB Dual Port Server Connection
+               8086 1060  PRO/1000 PB Dual Port Server Connection
+       1064  82562ET/EZ/GT/GZ - PRO/100 VE (LOM) Ethernet Controller
+               1043 80f8  P5GD1-VW Mainboard
+       1065  82562ET/EZ/GT/GZ - PRO/100 VE Ethernet Controller
+       1066  82562 EM/EX/GX - PRO/100 VM (LOM) Ethernet Controller
+       1067  82562 EM/EX/GX - PRO/100 VM Ethernet Controller
+       1068  82562ET/EZ/GT/GZ - PRO/100 VE (LOM) Ethernet Controller Mobile
+       1069  82562EM/EX/GX - PRO/100 VM (LOM) Ethernet Controller Mobile
+       106a  82562G - PRO/100 VE (LOM) Ethernet Controller
+       106b  82562G - PRO/100 VE Ethernet Controller Mobile
+       1075  82547GI Gigabit Ethernet Controller
+               1028 0165  PowerEdge 750
+               8086 0075  PRO/1000 CT Network Connection
+               8086 1075  PRO/1000 CT Network Connection
+       1076  82541GI Gigabit Ethernet Controller
+               1028 0165  PRO/1000 MT Network Connection
+               1028 016d  PRO/1000 MT Network Connection
+               1028 019a  PRO/1000 MT Network Connection
+               1028 106d  PRO/1000 MT Network Connection
+               8086 0076  PRO/1000 MT Network Connection
+               8086 1076  PRO/1000 MT Network Connection
+               8086 1176  PRO/1000 MT Desktop Adapter
+               8086 1276  PRO/1000 MT Network Adapter
+       1077  82541GI Gigabit Ethernet Controller
+               1179 0001  PRO/1000 MT Mobile Connection
+               8086 0077  PRO/1000 MT Mobile Connection
+               8086 1077  PRO/1000 MT Mobile Connection
+       1078  82541ER Gigabit Ethernet Controller
+               8086 1078  82541ER-based Network Connection
+       1079  82546GB Gigabit Ethernet Controller
+               103c 12a6  Dual Port 1000Base-T [A9900A]
+               103c 12cf  Core Dual Port 1000Base-T [AB352A]
+               1775 10d0  V5D Single Board Computer Gigabit Ethernet
+               1775 ce90  CE9
+               1fc1 0027  Niagara 2261 Failover NIC
+               4c53 1090  Cx9 / Vx9 mainboard
+               4c53 10b0  CL9 mainboard
+               8086 0079  PRO/1000 MT Dual Port Network Connection
+               8086 1079  PRO/1000 MT Dual Port Network Connection
+               8086 1179  PRO/1000 MT Dual Port Server Adapter
+               8086 117a  PRO/1000 MT Dual Port Server Adapter
+       107a  82546GB Gigabit Ethernet Controller
+               103c 12a8  Dual Port 1000base-SX [A9899A]
+               8086 107a  PRO/1000 MF Dual Port Server Adapter
+               8086 127a  PRO/1000 MF Dual Port Server Adapter
+       107b  82546GB Gigabit Ethernet Controller
+               8086 007b  PRO/1000 MB Dual Port Server Connection
+               8086 107b  PRO/1000 MB Dual Port Server Connection
+       107c  82541PI Gigabit Ethernet Controller
+               8086 1376  PRO/1000 GT Desktop Adapter
+               8086 1476  PRO/1000 GT Desktop Adapter
+       107d  82572EI Gigabit Ethernet Controller (Copper)
+               8086 1082  PRO/1000 PT Server Adapter
+               8086 1084  PRO/1000 PT Server Adapter
+               8086 1092  PRO/1000 PT Server Adapter
+       107e  82572EI Gigabit Ethernet Controller (Fiber)
+               8086 1084  PRO/1000 PF Server Adapter
+               8086 1085  PRO/1000 PF Server Adapter
+               8086 1094  PRO/1000 PF Server Adapter
+       107f  82572EI Gigabit Ethernet Controller
+       1080  FA82537EP 56K V.92 Data/Fax Modem PCI
+       1081  631xESB/632xESB LAN Controller Copper
+       1082  631xESB/632xESB LAN Controller fiber
+       1083  631xESB/632xESB LAN Controller SERDES
+       1084  631xESB/632xESB IDE Redirection
+       1085  631xESB/632xESB Serial Port Redirection
+       1086  631xESB/632xESB IPMI/KCS0
+       1087  631xESB/632xESB UHCI Redirection
+       1089  631xESB/632xESB BT
+       108a  82546GB Gigabit Ethernet Controller
+               8086 108a  PRO/1000 P Dual Port Server Adapter
+               8086 118a  PRO/1000 P Dual Port Server Adapter
+       108b  82573V Gigabit Ethernet Controller (Copper)
+               1462 176c  on board on MSI 945P - NEO (MS-7176)
+       108c  82573E Gigabit Ethernet Controller (Copper)
+       108e  82573E KCS (Active Management)
+       108f  Active Management Technology - SOL
+       1091  PRO/100 VM Network Connection
+       1092  PRO/100 VE Network Connection
+       1093  PRO/100 VM Network Connection
+       1094  PRO/100 VE Network Connection
+       1095  PRO/100 VE Network Connection
+       1096  80003ES2LAN Gigabit Ethernet Controller (Copper)
+               15d9 8680  X7DVL-E-O motherboard
+               8086 3476  Intel S5000PSLSATA Server Board
+       1097  631xESB/632xESB DPT LAN Controller (Fiber)
+       1098  80003ES2LAN Gigabit Ethernet Controller (Serdes)
+       1099  82546GB Gigabit Ethernet Controller (Copper)
+               8086 1099  PRO/1000 GT Quad Port Server Adapter
+       109a  82573L Gigabit Ethernet Controller
+               1179 ff10  PRO/1000 PL
+               17aa 2001  ThinkPad T60
+               17aa 207e  ThinkPad X60s
+               8086 109a  PRO/1000 PL Network Connection
+               8086 309c  DeskTop Board D945GTP
+               8086 30a5  DeskTop Board D975XBX
+       109b  82546GB PRO/1000 GF Quad Port Server Adapter
+       109e  82597EX 10GbE Ethernet Controller
+               8086 a01f  PRO/10GbE CX4 Server Adapter
+               8086 a11f  PRO/10GbE CX4 Server Adapter
+       10a0  82571EB PRO/1000 AT Quad Port Bypass Adapter
+       10a1  82571EB PRO/1000 AF Quad Port Bypass Adapter
+       10a4  82571EB Gigabit Ethernet Controller
+               8086 10a4  PRO/1000 PT Quad Port Server Adapter
+               8086 11a4  PRO/1000 PT Quad Port Server Adapter
+       10a5  82571EB Gigabit Ethernet Controller (Fiber)
+               8086 10a5  PRO/1000 PF Quad Port Server Adapter
+               8086 10a6  PRO/1000 PF Quad Port Server Adapter
+       10a7  82575EB Gigabit Network Connection
+               8086 10a8  82575EB Gigabit Riser Card
+       10a9  82575EB Gigabit Backplane Connection
+       10b0  82573L PRO/1000 PL Network Connection
+       10b2  82573V PRO/1000 PM Network Connection
+       10b3  82573E PRO/1000 PM Network Connection
+       10b4  82573L PRO/1000 PL Network Connection
+       10b5  82546GB Gigabit Ethernet Controller (Copper)
+               103c 3109  NC340T PCI-X Quad-port Gigabit Server Adapter
+               8086 1099  PRO/1000 GT Quad Port Server Adapter
+               8086 1199  PRO/1000 GT Quad Port Server Adapter
+       10b6  82598 10GbE PCI-Express Ethernet Controller
+       10b9  82572EI Gigabit Ethernet Controller (Copper)
+               103c 704a  HP 110T PCIe Gigabit Server Adapter
+               8086 1083  PRO/1000 PT Desktop Adapter
+               8086 1093  PRO/1000 PT Desktop Adapter
+       10ba  80003ES2LAN Gigabit Ethernet Controller (Copper)
+       10bb  80003ES2LAN Gigabit Ethernet Controller (Serdes)
+       10bc  82571EB Gigabit Ethernet Controller (Copper)
+               103c 704b  NC364T PCI Express Quad Port Gigabit Server Adapter
+               8086 10bc  PRO/1000 PT Quad Port LP Server Adapter
+               8086 11bc  PRO/1000 PT Quad Port LP Server Adapter
+       10bd  82566DM-2 Gigabit Network Connection
+               1028 0211  OptiPlex 755
+       10be  82567 Gigabit Network Connection
+       10bf  82567LF Gigabit Network Connection
+       10c0  82562V-2 10/100 Network Connection
+       10c2  82562G-2 10/100 Network Connection
+       10c3  82562GT-2 10/100 Network Connection
+       10c4  82562GT 10/100 Network Connection
+       10c5  82562G 10/100 Network Connection
+       10c6  82598EB 10 Gigabit AF Dual Port Network Connection
+               8086 a05f  10 Gigabit XF SR Dual Port Server Adapter
+               8086 a15f  10 Gigabit XF SR Dual Port Server Adapter
+       10c7  82598EB 10 Gigabit AF Network Connection
+               1014 037f  10 Gigabit XF SR Server Adapter
+               1014 0380  10 Gigabit XF LR Server Adapter
+               8086 a05f  10 Gigabit XF SR Server Adapter
+               8086 a15f  10 Gigabit XF SR Server Adapter
+               8086 a16f  10 Gigabit XF SR Server Adapter
+       10c8  82598EB 10 Gigabit AT Network Connection
+               8086 a10c  10 Gigabit AT Server Adapter
+               8086 a11c  10 Gigabit AT Server Adapter
+               8086 a12c  10 Gigabit AT Server Adapter
+       10cb  82567V Gigabit Network Connection
+       10cc  82567LM-2 Gigabit Network Connection
+       10cd  82567LF-2 Gigabit Network Connection
+       10ce  82567V-2 Gigabit Network Connection
+       10d3  82574L Gigabit Network Connection
+               8086 a01f  Gigabit CT Desktop Adapter
+       10d5  82571PT Gigabit PT Quad Port Server ExpressModule
+       10d6  82575GB Gigabit Network Connection
+               8086 10d6  Gigabit VT Quad Port Server Adapter
+               8086 145a  Gigabit VT Quad Port Server Adapter
+       10d9  82571EB Dual Port Gigabit Mezzanine Adapter
+               103c 1716  NC360m Dual Port 1GbE BL-c Adapter
+       10da  82571EB Quad Port Gigabit Mezzanine Adapter
+               103c 1717  NC364m Quad Port 1GbE BL-c Adapter
+       10dd  82598EB 10 Gigabit AT CX4 Network Connection
+       10de  82567LM-3 Gigabit Network Connection
+       10df  82567LF-3 Gigabit Network Connection
+       10e2  82575GB Gigabit Network Connection
+               8086 10e2  Gigabit VT Quad Port Server Adapter
+       10e5  82567LM-4 Gigabit Network Connection
+       10ec  10 Gigabit AT CX4 Network Connection
+               8086 a01f  10 Gigabit CX4 Dual Port Server Adapter
+               8086 a11f  10 Gigabit CX4 Dual Port Server Adapter
+       10f4  10 Gigabit AT Network Connection
+               8086 106f  10 Gigabit XF LR Server Adapter
+       10f5  82567LM Gigabit Network Connection
+       1107  PRO/1000 MF Server Adapter (LX)
+       1130  82815 815 Chipset Host Bridge and Memory Controller Hub
+               1025 1016  Travelmate 612 TX
+               1043 8027  TUSL2-C Mainboard
+               104d 80df  Vaio PCG-FX403
+               8086 4532  D815EEA2 mainboard
+               8086 4557  D815EGEW Mainboard
+       1131  82815 815 Chipset AGP Bridge
+       1132  82815 Chipset Graphics Controller (CGC)
+               1025 1016  Travelmate 612 TX
+               103c 2001  e-pc 40
+               104d 80df  Vaio PCG-FX403
+               8086 4532  D815EEA2 Mainboard
+               8086 4541  D815EEA Motherboard
+               8086 4557  D815EGEW Mainboard
+       1161  82806AA PCI64 Hub Advanced Programmable Interrupt Controller
+               8086 1161  82806AA PCI64 Hub APIC
+       1162  Xscale 80200 Big Endian Companion Chip
+       1200  IXP1200 Network Processor
+               172a 0000  AEP SSL Accelerator
+       1209  8255xER/82551IT Fast Ethernet Controller
+               4c53 1050  CT7 mainboard
+               4c53 1051  CE7 mainboard
+               4c53 1070  PC6 mainboard
+       1221  82092AA PCI to PCMCIA Bridge
+       1222  82092AA IDE Controller
+       1223  SAA7116
+       1225  82452KX/GX [Orion]
+       1226  82596 PRO/10 PCI
+       1227  82865 EtherExpress PRO/100A
+       1228  82556 EtherExpress PRO/100 Smart
+       1229  82557/8/9/0/1 Ethernet Pro 100
+               0e11 3001  82559 Fast Ethernet LOM with Alert on LAN*
+               0e11 3002  82559 Fast Ethernet LOM with Alert on LAN*
+               0e11 3003  82559 Fast Ethernet LOM with Alert on LAN*
+               0e11 3004  82559 Fast Ethernet LOM with Alert on LAN*
+               0e11 3005  82559 Fast Ethernet LOM with Alert on LAN*
+               0e11 3006  82559 Fast Ethernet LOM with Alert on LAN*
+               0e11 3007  82559 Fast Ethernet LOM with Alert on LAN*
+               0e11 b01e  NC3120 Fast Ethernet NIC
+               0e11 b01f  NC3122 Fast Ethernet NIC (dual port)
+               0e11 b02f  NC1120 Ethernet NIC
+               0e11 b04a  Netelligent 10/100TX NIC with Wake on LAN
+               0e11 b0c6  NC3161 Fast Ethernet NIC (embedded, WOL)
+               0e11 b0c7  NC3160 Fast Ethernet NIC (embedded)
+               0e11 b0d7  NC3121 Fast Ethernet NIC (WOL)
+               0e11 b0dd  NC3131 Fast Ethernet NIC (dual port)
+               0e11 b0de  NC3132 Fast Ethernet Module (dual port)
+               0e11 b0e1  NC3133 Fast Ethernet Module (100-FX)
+               0e11 b134  NC3163 Fast Ethernet NIC (embedded, WOL)
+               0e11 b13c  NC3162 Fast Ethernet NIC (embedded)
+               0e11 b144  NC3123 Fast Ethernet NIC (WOL)
+               0e11 b163  NC3134 Fast Ethernet NIC (dual port)
+               0e11 b164  NC3135 Fast Ethernet Upgrade Module (dual port)
+               0e11 b1a4  NC7131 Gigabit Server Adapter
+               1014 005c  82558B Ethernet Pro 10/100
+               1014 01bc  82559 Fast Ethernet LAN On Motherboard
+               1014 01f1  10/100 Ethernet Server Adapter
+               1014 01f2  10/100 Ethernet Server Adapter
+               1014 0207  Ethernet Pro/100 S
+               1014 0232  10/100 Dual Port Server Adapter
+               1014 023a  ThinkPad R30
+               1014 105c  Netfinity 10/100
+               1014 2205  ThinkPad A22p
+               1014 305c  10/100 EtherJet Management Adapter
+               1014 405c  10/100 EtherJet Adapter with Alert on LAN
+               1014 505c  10/100 EtherJet Secure Management Adapter
+               1014 605c  10/100 EtherJet Secure Management Adapter
+               1014 705c  10/100 Netfinity 10/100 Ethernet Security Adapter
+               1014 805c  10/100 Netfinity 10/100 Ethernet Security Adapter
+               1028 009b  10/100 Ethernet Server Adapter
+               1028 00ce  10/100 Ethernet Server Adapter
+               1033 8000  PC-9821X-B06
+               1033 8016  PK-UG-X006
+               1033 801f  PK-UG-X006
+               1033 8026  PK-UG-X006
+               1033 8063  82559-based Fast Ethernet Adapter
+               1033 8064  82559-based Fast Ethernet Adapter
+               103c 10c0  NetServer 10/100TX
+               103c 10c3  NetServer 10/100TX
+               103c 10ca  NetServer 10/100TX
+               103c 10cb  NetServer 10/100TX
+               103c 10e3  NetServer 10/100TX
+               103c 10e4  NetServer 10/100TX
+               103c 1200  NetServer 10/100TX
+               108e 10cf  EtherExpress PRO/100(B)
+               10c3 1100  SmartEther100 SC1100
+               10cf 1115  8255x-based Ethernet Adapter (10/100)
+               10cf 1143  8255x-based Ethernet Adapter (10/100)
+               110a 008b  82551QM Fast Ethernet Multifuction PCI/CardBus Controller
+               114a 0582  PC8 onboard ethernet ETH2
+               1179 0001  8255x-based Ethernet Adapter (10/100)
+               1179 0002  PCI FastEther LAN on Docker
+               1179 0003  8255x-based Fast Ethernet
+               1259 2560  AT-2560 100
+               1259 2561  AT-2560 100 FX Ethernet Adapter
+               1266 0001  NE10/100 Adapter
+               13e9 1000  6221L-4U
+               144d 2501  SEM-2000 MiniPCI LAN Adapter
+               144d 2502  SEM-2100IL MiniPCI LAN Adapter
+               1668 1100  EtherExpress PRO/100B (TX) (MiniPCI Ethernet+Modem)
+               1775 1100  CR11/VR11 Single Board Computer
+               1775 ce90  CE9
+               4c53 1080  CT8 mainboard
+               4c53 10e0  PSL09 PrPMC
+               8086 0001  EtherExpress PRO/100B (TX)
+               8086 0002  EtherExpress PRO/100B (T4)
+               8086 0003  EtherExpress PRO/10+
+               8086 0004  EtherExpress PRO/100 WfM
+               8086 0005  82557 10/100
+               8086 0006  82557 10/100 with Wake on LAN
+               8086 0007  82558 10/100 Adapter
+               8086 0008  82558 10/100 with Wake on LAN
+               8086 0009  82558B PRO/100+ PCI (TP)
+               8086 000a  EtherExpress PRO/100+ Management Adapter
+               8086 000b  EtherExpress PRO/100+
+               8086 000c  EtherExpress PRO/100+ Management Adapter
+               8086 000d  EtherExpress PRO/100+ Alert On LAN II* Adapter
+               8086 000e  EtherExpress PRO/100+ Management Adapter with Alert On LAN*
+               8086 000f  EtherExpress PRO/100 Desktop Adapter
+               8086 0010  EtherExpress PRO/100 S Management Adapter
+               8086 0011  EtherExpress PRO/100 S Management Adapter
+               8086 0012  EtherExpress PRO/100 S Advanced Management Adapter (D)
+               8086 0013  EtherExpress PRO/100 S Advanced Management Adapter (E)
+               8086 0030  EtherExpress PRO/100  Management Adapter with Alert On LAN* GC
+               8086 0031  EtherExpress PRO/100 Desktop Adapter
+               8086 0040  EtherExpress PRO/100 S Desktop Adapter
+               8086 0041  EtherExpress PRO/100 S Desktop Adapter
+               8086 0042  EtherExpress PRO/100 Desktop Adapter
+               8086 0050  EtherExpress PRO/100 S Desktop Adapter
+               8086 1009  EtherExpress PRO/100+ Server Adapter
+               8086 100c  EtherExpress PRO/100+ Server Adapter (PILA8470B)
+               8086 1012  EtherExpress PRO/100 S Server Adapter (D)
+               8086 1013  EtherExpress PRO/100 S Server Adapter (E)
+               8086 1015  EtherExpress PRO/100 S Dual Port Server Adapter
+               8086 1017  EtherExpress PRO/100+ Dual Port Server Adapter
+               8086 1030  EtherExpress PRO/100+ Management Adapter with Alert On LAN* G Server
+               8086 1040  EtherExpress PRO/100 S Server Adapter
+               8086 1041  EtherExpress PRO/100 S Server Adapter
+               8086 1042  EtherExpress PRO/100 Server Adapter
+               8086 1050  EtherExpress PRO/100 S Server Adapter
+               8086 1051  EtherExpress PRO/100 Server Adapter
+               8086 1052  EtherExpress PRO/100 Server Adapter
+               8086 10f0  EtherExpress PRO/100+ Dual Port Adapter
+               8086 1229  82557/8/9 [Ethernet Pro 100]
+               8086 2009  EtherExpress PRO/100 S Mobile Adapter
+               8086 200d  EtherExpress PRO/100 Cardbus
+               8086 200e  EtherExpress PRO/100 LAN+V90 Cardbus Modem
+               8086 200f  EtherExpress PRO/100 SR Mobile Adapter
+               8086 2010  EtherExpress PRO/100 S Mobile Combo Adapter
+               8086 2013  EtherExpress PRO/100 SR Mobile Combo Adapter
+               8086 2016  EtherExpress PRO/100 S Mobile Adapter
+               8086 2017  EtherExpress PRO/100 S Combo Mobile Adapter
+               8086 2018  EtherExpress PRO/100 SR Mobile Adapter
+               8086 2019  EtherExpress PRO/100 SR Combo Mobile Adapter
+               8086 2101  EtherExpress PRO/100 P Mobile Adapter
+               8086 2102  EtherExpress PRO/100 SP Mobile Adapter
+               8086 2103  EtherExpress PRO/100 SP Mobile Adapter
+               8086 2104  EtherExpress PRO/100 SP Mobile Adapter
+               8086 2105  EtherExpress PRO/100 SP Mobile Adapter
+               8086 2106  EtherExpress PRO/100 P Mobile Adapter
+               8086 2107  EtherExpress PRO/100 Network Connection
+               8086 2108  EtherExpress PRO/100 Network Connection
+               8086 2200  EtherExpress PRO/100 P Mobile Combo Adapter
+               8086 2201  EtherExpress PRO/100 P Mobile Combo Adapter
+               8086 2202  EtherExpress PRO/100 SP Mobile Combo Adapter
+               8086 2203  EtherExpress PRO/100+ MiniPCI
+               8086 2204  EtherExpress PRO/100+ MiniPCI
+               8086 2205  EtherExpress PRO/100 SP Mobile Combo Adapter
+               8086 2206  EtherExpress PRO/100 SP Mobile Combo Adapter
+               8086 2207  EtherExpress PRO/100 SP Mobile Combo Adapter
+               8086 2208  EtherExpress PRO/100 P Mobile Combo Adapter
+               8086 2402  EtherExpress PRO/100+ MiniPCI
+               8086 2407  EtherExpress PRO/100+ MiniPCI
+               8086 2408  EtherExpress PRO/100+ MiniPCI
+               8086 2409  EtherExpress PRO/100+ MiniPCI
+               8086 240f  EtherExpress PRO/100+ MiniPCI
+               8086 2410  EtherExpress PRO/100+ MiniPCI
+               8086 2411  EtherExpress PRO/100+ MiniPCI
+               8086 2412  EtherExpress PRO/100+ MiniPCI
+               8086 2413  EtherExpress PRO/100+ MiniPCI
+               8086 3000  82559 Fast Ethernet LAN on Motherboard
+               8086 3001  82559 Fast Ethernet LOM with Basic Alert on LAN*
+               8086 3002  82559 Fast Ethernet LOM with Alert on LAN II*
+               8086 3006  EtherExpress PRO/100 S Network Connection
+               8086 3007  EtherExpress PRO/100 S Network Connection
+               8086 3008  EtherExpress PRO/100 Network Connection
+               8086 3010  EtherExpress PRO/100 S Network Connection
+               8086 3011  EtherExpress PRO/100 S Network Connection
+               8086 3012  EtherExpress PRO/100 Network Connection
+               8086 301a  S845WD1-E mainboard
+               8086 3411  SDS2 Mainboard
+       122d  430FX - 82437FX TSC [Triton I]
+       122e  82371FB PIIX ISA [Triton I]
+       1230  82371FB PIIX IDE [Triton I]
+       1231  DSVD Modem
+       1234  430MX - 82371MX Mobile PCI I/O IDE Xcelerator (MPIIX)
+       1235  430MX - 82437MX Mob. System Ctrlr (MTSC) & 82438MX Data Path (MTDP)
+       1237  440FX - 82441FX PMC [Natoma]
+       1239  82371FB PIIX IDE Interface
+       123b  82380PB PCI to PCI Docking Bridge
+       123c  82380AB (MISA) Mobile PCI-to-ISA Bridge
+       123d  683053 Programmable Interrupt Device
+       123e  82466GX (IHPC) Integrated Hot-Plug Controller (hidden mode)
+       123f  82466GX Integrated Hot-Plug Controller (IHPC)
+       1240  82752 (752) AGP Graphics Accelerator
+       124b  82380FB (MPCI2) Mobile Docking Controller
+       1250  430HX - 82439HX TXC [Triton II]
+       1360  82806AA PCI64 Hub PCI Bridge
+       1361  82806AA PCI64 Hub Controller (HRes)
+               8086 1361  82806AA PCI64 Hub Controller (HRes)
+               8086 8000  82806AA PCI64 Hub Controller (HRes)
+       1460  82870P2 P64H2 Hub PCI Bridge
+       1461  82870P2 P64H2 I/OxAPIC
+               15d9 3480  P4DP6
+               4c53 1090  Cx9/Vx9 mainboard
+       1462  82870P2 P64H2 Hot Plug Controller
+       1960  80960RP (i960RP) Microprocessor
+               101e 0431  MegaRAID 431 RAID Controller
+               101e 0438  MegaRAID 438 Ultra2 LVD RAID Controller
+               101e 0466  MegaRAID 466 Express Plus RAID Controller
+               101e 0467  MegaRAID 467 Enterprise 1500 RAID Controller
+               101e 0490  MegaRAID 490 Express 300 RAID Controller
+               101e 0762  MegaRAID 762 Express RAID Controller
+               101e 09a0  PowerEdge Expandable RAID Controller 2/SC
+               1028 0467  PowerEdge Expandable RAID Controller 2/DC
+               1028 1111  PowerEdge Expandable RAID Controller 2/SC
+               103c 03a2  MegaRAID
+               103c 10c6  MegaRAID 438, NetRAID-3Si
+               103c 10c7  MegaRAID T5, Integrated NetRAID
+               103c 10cc  MegaRAID, Integrated NetRAID
+               103c 10cd  NetRAID-1Si
+               105a 0000  SuperTrak
+               105a 2168  SuperTrak Pro
+               105a 5168  SuperTrak66/100
+               1111 1111  MegaRAID 466, PowerEdge Expandable RAID Controller 2/SC
+               1111 1112  PowerEdge Expandable RAID Controller 2/SC
+               113c 03a2  MegaRAID
+               e4bf 1010  CG1-RADIO
+               e4bf 1020  CU2-QUARTET
+               e4bf 1040  CU1-CHORUS
+               e4bf 3100  CX1-BAND
+       1962  80960RM (i960RM) Microprocessor
+               105a 0000  SuperTrak SX6000 I2O CPU
+       1a21  82840 840 [Carmel] Chipset Host Bridge (Hub A)
+       1a23  82840 840 [Carmel] Chipset AGP Bridge
+       1a24  82840 840 [Carmel] Chipset PCI Bridge (Hub B)
+       1a30  82845 845 [Brookdale] Chipset Host Bridge
+               1028 010e  Optiplex GX240
+               15d9 3280  Supermicro P4SBE Mainboard
+       1a31  82845 845 [Brookdale] Chipset AGP Bridge
+       1a38  5000 Series Chipset DMA Engine
+               15d9 8680  X7DVL-E-O motherboard
+               8086 3476  Intel S5000PSLSATA Server Board
+       1a48  82597EX 10GbE Ethernet Controller
+               8086 a01f  PRO/10GbE SR Server Adapter
+               8086 a11f  PRO/10GbE SR Server Adapter
+       1b48  82597EX 10GbE Ethernet Controller
+               8086 a01f  PRO/10GbE LR Server Adapter
+               8086 a11f  PRO/10GbE LR Server Adapter
+       2410  82801AA ISA Bridge (LPC)
+       2411  82801AA IDE Controller
+       2412  82801AA USB Controller
+       2413  82801AA SMBus Controller
+       2415  82801AA AC'97 Audio Controller
+               1028 0095  Precision Workstation 220 Integrated Digital Audio
+               1028 00b4  OptiPlex GX110
+               110a 0051  Activy 2xx
+               11d4 0040  SoundMAX Integrated Digital Audio
+               11d4 0048  SoundMAX Integrated Digital Audio
+               11d4 5340  SoundMAX Integrated Digital Audio
+               1734 1025  Activy 3xx
+       2416  82801AA AC'97 Modem Controller
+       2418  82801AA PCI Bridge
+       2420  82801AB ISA Bridge (LPC)
+       2421  82801AB IDE Controller
+       2422  82801AB USB Controller
+       2423  82801AB SMBus Controller
+       2425  82801AB AC'97 Audio Controller
+               11d4 0040  SoundMAX Integrated Digital Audio
+               11d4 0048  SoundMAX Integrated Digital Audio
+       2426  82801AB AC'97 Modem Controller
+       2428  82801AB PCI Bridge
+       2440  82801BA ISA Bridge (LPC)
+               8086 5744  S845WD1-E
+       2442  82801BA/BAM USB Controller #1
+               1014 01c6  Netvista A40/A40p
+               1025 1016  Travelmate 612 TX
+               1028 00c7  Dimension 8100
+               1028 00d8  Precision 530
+               1028 010e  Optiplex GX240
+               103c 126f  e-pc 40
+               1043 8027  TUSL2-C Mainboard
+               104d 80df  Vaio PCG-FX403
+               147b 0507  TH7II-RAID
+               8086 4532  D815EEA2 mainboard
+               8086 4557  D815EGEW Mainboard
+               8086 5744  S845WD1-E mainboard
+       2443  82801BA/BAM SMBus Controller
+               1014 01c6  Netvista A40/A40p
+               1025 1016  Travelmate 612 TX
+               1028 00c7  Dimension 8100
+               1028 00d8  Precision 530
+               1028 010e  Optiplex GX240
+               103c 126f  e-pc 40
+               1043 8027  TUSL2-C Mainboard
+               104d 80df  Vaio PCG-FX403
+               147b 0507  TH7II-RAID
+               15d9 3280  Supermicro P4SBE Mainboard
+               8086 4532  D815EEA2 mainboard
+               8086 4557  D815EGEW Mainboard
+               8086 5744  S845WD1-E mainboard
+       2444  82801BA/BAM USB Controller #1
+               1025 1016  Travelmate 612 TX
+               1028 00c7  Dimension 8100
+               1028 00d8  Precision 530
+               1028 010e  Optiplex GX240
+               103c 126f  e-pc 40
+               1043 8027  TUSL2-C Mainboard
+               104d 80df  Vaio PCG-FX403
+               147b 0507  TH7II-RAID
+               8086 4532  D815EEA2 mainboard
+               8086 5744  S845WD1-E mainboard
+       2445  82801BA/BAM AC'97 Audio Controller
+               0e11 000b  Compaq Deskpro EN Audio
+               0e11 0088  Evo D500
+               1014 01c6  Netvista A40/A40p
+               1025 1016  Travelmate 612 TX
+               1028 00d8  Precision 530
+               103c 126f  e-pc 40
+               104d 80df  Vaio PCG-FX403
+               1462 3370  STAC9721 AC
+               147b 0507  TH7II-RAID
+               8086 4557  D815EGEW Mainboard
+       2446  82801BA/BAM AC'97 Modem Controller
+               1025 1016  Travelmate 612 TX
+               104d 80df  Vaio PCG-FX403
+       2448  82801 Mobile PCI Bridge
+# (rev d3) (prog-if (rev d3) (prog-if 01 [Subtractive decode])
+               103c 0934  HP Compaq nw8240 Mobile Workstation
+               103c 099c  NX6110/NC6120
+               103c 309f  HP Compaq nx9420
+               103c 30a3  Compaq nw8440
+               103c 30c1  Compaq 6910p
+               144d c00c  P30 notebook
+               1734 1055  Amilo M1420
+               e4bf cc47  CCG-RUMBA
+       2449  82801BA/BAM/CA/CAM Ethernet Controller
+               0e11 0012  EtherExpress PRO/100 VM
+               0e11 0091  EtherExpress PRO/100 VE
+               1014 01ce  EtherExpress PRO/100 VE
+               1014 01dc  EtherExpress PRO/100 VE
+               1014 01eb  EtherExpress PRO/100 VE
+               1014 01ec  EtherExpress PRO/100 VE
+               1014 0202  EtherExpress PRO/100 VE
+               1014 0205  EtherExpress PRO/100 VE
+               1014 0217  EtherExpress PRO/100 VE
+               1014 0234  EtherExpress PRO/100 VE
+               1014 023d  EtherExpress PRO/100 VE
+               1014 0244  EtherExpress PRO/100 VE
+               1014 0245  EtherExpress PRO/100 VE
+               1014 0265  PRO/100 VE Desktop Connection
+               1014 0267  PRO/100 VE Desktop Connection
+               1014 026a  PRO/100 VE Desktop Connection
+               109f 315d  EtherExpress PRO/100 VE
+               109f 3181  EtherExpress PRO/100 VE
+               1179 ff01  PRO/100 VE Network Connection
+               1186 7801  EtherExpress PRO/100 VE
+               144d 2602  HomePNA 1M CNR
+               8086 3010  EtherExpress PRO/100 VE
+               8086 3011  EtherExpress PRO/100 VM
+               8086 3012  82562EH based Phoneline
+               8086 3013  EtherExpress PRO/100 VE
+               8086 3014  EtherExpress PRO/100 VM
+               8086 3015  82562EH based Phoneline
+               8086 3016  EtherExpress PRO/100 P Mobile Combo
+               8086 3017  EtherExpress PRO/100 P Mobile
+               8086 3018  EtherExpress PRO/100
+       244a  82801BAM IDE U100 Controller
+               1025 1016  Travelmate 612TX
+               104d 80df  Vaio PCG-FX403
+       244b  82801BA IDE U100 Controller
+               1014 01c6  Netvista A40/A40p
+               1028 00c7  Dimension 8100
+               1028 00d8  Precision 530
+               1028 010e  Optiplex GX240
+               103c 126f  e-pc 40
+               1043 8027  TUSL2-C Mainboard
+               147b 0507  TH7II-RAID
+               15d9 3280  Supermicro P4SBE Mainboard
+               8086 4532  D815EEA2 mainboard
+               8086 4557  D815EGEW Mainboard
+               8086 5744  S845WD1-E mainboard
+       244c  82801BAM ISA Bridge (LPC)
+       244e  82801 PCI Bridge
+               1014 0267  NetVista A30p
+               1028 0211  Optiplex 755
+               1458 5000  GA-EP45-DS5 Motherboard
+       2450  82801E ISA Bridge (LPC)
+       2452  82801E USB Controller
+       2453  82801E SMBus Controller
+       2459  82801E Ethernet Controller 0
+       245b  82801E IDE U100 Controller
+       245d  82801E Ethernet Controller 1
+       245e  82801E PCI Bridge
+       2480  82801CA LPC Interface Controller
+       2482  82801CA/CAM USB Controller #1
+               0e11 0030  Evo N600c
+               1014 0220  ThinkPad A/T/X Series
+               104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
+               15d9 3480  P4DP6
+               8086 1958  vpr Matrix 170B4
+               8086 3424  SE7501HG2 Mainboard
+               8086 4541  Latitude C640
+       2483  82801CA/CAM SMBus Controller
+               1014 0220  ThinkPad A/T/X Series
+               104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
+               15d9 3480  P4DP6
+               8086 1958  vpr Matrix 170B4
+       2484  82801CA/CAM USB Controller #2
+               0e11 0030  Evo N600c
+               1014 0220  ThinkPad A/T/X Series
+               104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
+               15d9 3480  P4DP6
+               8086 1958  vpr Matrix 170B4
+       2485  82801CA/CAM AC'97 Audio Controller
+               1013 5959  Crystal WMD Audio Codec
+               1014 0222  ThinkPad A30/A30p/T23
+               1014 0508  ThinkPad T30
+               1014 051c  ThinkPad A/T/X Series
+               1043 1583  L3C (SPDIF)
+               1043 1623  L2B (no SPDIF)
+               1043 1643  L3F
+               104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
+               144d c006  vpr Matrix 170B4
+       2486  82801CA/CAM AC'97 Modem Controller
+               1014 0223  ThinkPad A/T/X Series
+               1014 0503  ThinkPad R31
+               1014 051a  ThinkPad A/T/X Series
+               101f 1025  620 Series
+               104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
+               134d 4c21  Dell Inspiron 2100 internal modem
+               144d 2115  vpr Matrix 170B4 internal modem
+               14f1 5421  MD56ORD V.92 MDC Modem
+       2487  82801CA/CAM USB Controller #3
+               0e11 0030  Evo N600c
+               1014 0220  ThinkPad A/T/X Series
+               104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
+               15d9 3480  P4DP6
+               8086 1958  vpr Matrix 170B4
+       248a  82801CAM IDE U100 Controller
+               0e11 0030  Evo N600c
+               1014 0220  ThinkPad A/T/X Series
+               104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
+               8086 1958  vpr Matrix 170B4
+               8086 4541  Latitude C640
+       248b  82801CA Ultra ATA Storage Controller
+               15d9 3480  P4DP6
+       248c  82801CAM ISA Bridge (LPC)
+       24c0  82801DB/DBL (ICH4/ICH4-L) LPC Interface Bridge
+               1014 0267  NetVista A30p
+               1462 5800  845PE Max (MS-6580)
+       24c1  82801DBL (ICH4-L) IDE Controller
+       24c2  82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1
+               1014 0267  NetVista A30p
+               1014 052d  ThinkPad
+               1025 005a  TravelMate 290
+               1028 0126  Optiplex GX260
+               1028 0163  Latitude D505
+               1028 018d  Inspiron 700m/710m
+               1028 0196  Inspiron 5160
+               103c 088c  NC8000 laptop
+               103c 0890  NC6000 laptop
+               103c 08b0  tc1100 tablet
+               1043 8089  P4B533
+               1071 8160  MIM2000
+               114a 0582  PC8 onboard USB 1.x
+               144d c005  X10 Laptop
+               144d c00c  P30/P35 notebook
+               1462 5800  845PE Max (MS-6580)
+               1509 2990  Averatec 5110H laptop
+               1734 1004  D1451 Mainboard (SCENIC N300, i845GV)
+               1734 1055  Amilo M1420
+               4c53 1090  Cx9 / Vx9 mainboard
+               8086 24c2  Latitude X300
+               8086 4541  Latitude D400
+               e4bf 0cc9  CC9-SAMBA
+               e4bf 0cd2  CD2-BEBOP
+       24c3  82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller
+               1014 0267  NetVista A30p
+               1014 052d  ThinkPad
+               1025 005a  TravelMate 290
+               1028 0126  Optiplex GX260
+               1028 014f  Latitude X300
+               1028 018d  Inspiron 700m/710m
+               103c 088c  NC8000 laptop
+               103c 0890  NC6000 laptop
+               103c 08b0  tc1100 tablet
+               1071 8160  MIM2000
+               114a 0582  PC8 onboard SMbus
+               144d c005  X10 Laptop
+               144d c00c  P30/P35 notebook
+               1458 24c2  GA-8PE667 Ultra
+               1462 5800  845PE Max (MS-6580)
+               1734 1004  D1451 Mainboard (SCENIC N300, i845GV)
+               1734 1055  Amilo M1420
+               4c53 1090  Cx9 / Vx9 mainboard
+               e4bf 0cc9  CC9-SAMBA
+               e4bf 0cd2  CD2-BEBOP
+       24c4  82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2
+               1014 0267  NetVista A30p
+               1014 052d  ThinkPad
+               1025 005a  TravelMate 290
+               1028 0126  Optiplex GX260
+               1028 0163  Latitude D505
+               1028 018d  Inspiron 700m/710m
+               1028 0196  Inspiron 5160
+               103c 088c  NC8000 laptop
+               103c 0890  NC6000 laptop
+               103c 08b0  tc1100 tablet
+               1043 8089  P4B533
+               1071 8160  MIM2000
+               144d c00c  P30/P35 notebook
+               1462 5800  845PE Max (MS-6580)
+               1509 2990  Averatec 5110H
+               1734 1004  D1451 Mainboard (SCENIC N300, i845GV)
+               4c53 1090  Cx9 / Vx9 mainboard
+               8086 24c2  Latitude X300
+               8086 4541  Latitude D400
+               e4bf 0cc9  CC9-SAMBA
+               e4bf 0cd2  CD2-BEBOP
+       24c5  82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller
+               0e11 00b8  Analog Devices Inc. codec [SoundMAX]
+               1014 0267  NetVista A30p
+               1014 0537  ThinkPad T41
+               1014 055f  Thinkpad R50e model 1634
+               1025 005a  TravelMate 290
+               1028 0139  Latitude D400
+               1028 014f  Latitude X300
+               1028 0163  Latitude D505
+               1028 018d  Inspiron 700m/710m [SigmaTel STAC9750,51]
+               1028 0196  Inspiron 5160
+               103c 088c  NC8000 laptop
+               103c 0890  NC6000 laptop
+               103c 08b0  tc1100 tablet
+               1043 1713  M6800N
+               1043 80b0  P4B533
+               1071 8160  MIM2000
+               1179 0201  Toshiba Tecra M1
+               144d c005  X10 Laptop
+               144d c00c  P30/P35 notebook
+               1458 a002  GA-8PE667 Ultra
+               1462 5800  845PE Max (MS-6580)
+               1734 1005  D1451 (SCENIC N300, i845GV) Sigmatel STAC9750T
+               1734 1055  Amilo M1420
+               8086 24c5  Dell Dimension 2400
+       24c6  82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller
+               1014 0524  ThinkPad T41
+               1014 0525  ThinkPad
+               1014 0559  ThinkPad R50e
+               1025 003c  Aspire 2001WLCi (Compal CL50 motherboard) implementation
+               1025 005a  TravelMate 290
+               1028 0196  Inspiron 5160
+               103c 088c  NC8000 laptop
+               103c 0890  NC6000 laptop
+               103c 08b0  tc1100 tablet
+               1043 1826  M6800N
+               1071 8160  MIM2000
+               144d 2115  X10 Laptop
+               144d c00c  P30/P35 notebook
+# Conexant HSF Softmodem (CXT22)
+               14f1 5422  D480 MDC V.9x Modem
+       24c7  82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3
+               1014 0267  NetVista A30p
+               1014 052d  ThinkPad
+               1025 005a  TravelMate 290
+               1028 0126  Optiplex GX260
+               1028 0163  Latitude D505
+               1028 018d  Inspiron 700m/710m
+               1028 0196  Inspiron 5160
+               103c 088c  NC8000 laptop
+               103c 0890  NC6000 laptop
+               103c 08b0  tc1100 tablet
+               1043 8089  P4B533
+               1071 8160  MIM2000
+               144d c00c  P30/P35 notebook
+               1462 5800  845PE Max (MS-6580)
+               1509 2990  Averatec 5110H
+               1734 1004  D1451 Mainboard (SCENIC N300, i845GV)
+               4c53 1090  Cx9 / Vx9 mainboard
+               8086 24c2  Latitude X300
+               8086 4541  Latitude D400
+               e4bf 0cc9  CC9-SAMBA
+               e4bf 0cd2  CD2-BEBOP
+       24ca  82801DBM (ICH4-M) IDE Controller
+               1014 052d  ThinkPad
+               1025 005a  TravelMate 290
+               1028 014f  Latitude X300
+               1028 0163  Latitude D505
+               1028 018d  Inspiron 700m/710m
+               1028 0196  Inspiron 5160
+               103c 088c  NC8000 laptop
+               103c 0890  NC6000 laptop
+               103c 08b0  tc1100 tablet
+               1071 8160  MIM2000
+               144d c005  X10 Laptop
+               144d c00c  P30/P35 notebook
+               1734 1055  Amilo M1420
+               8086 4541  Latitude D400
+       24cb  82801DB (ICH4) IDE Controller
+               1014 0267  NetVista A30p
+               1028 0126  Optiplex GX260
+               1043 8089  P4B533
+               114a 0582  PC8 onboard IDE
+               1458 24c2  GA-8PE667 Ultra
+               1462 5800  845PE Max (MS-6580)
+               1734 1004  D1451 Mainboard (SCENIC N300, i845GV)
+               4c53 1090  Cx9 / Vx9 mainboard
+               e4bf 0cc9  CC9-SAMBA
+               e4bf 0cd2  CD2-BEBOP
+       24cc  82801DBM (ICH4-M) LPC Interface Bridge
+               144d c00c  P30 notebook
+               1734 1055  Amilo M1420
+       24cd  82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller
+               1014 0267  NetVista A30p
+               1014 052e  ThinkPad
+               1025 005a  TravelMate 290
+               1028 011d  Latitude D600
+               1028 0126  Optiplex GX260
+               1028 0139  Latitude D400
+               1028 0163  Latitude D505
+               1028 018d  Inspiron 700m/710m
+               1028 0196  Inspiron 5160
+               103c 088c  NC8000 laptop
+               103c 0890  NC6000 laptop
+               103c 08b0  tc1100 tablet
+               1043 8089  P4B533
+               1071 8160  MIM2000
+               114a 0582  PC8 onboard USB 2.0
+               1179 ff00  Satellite 2430
+               144d c005  X10 Laptop
+               144d c00c  P30/P35 notebook
+               1462 3981  845PE Max (MS-6580)
+               1509 1968  Averatec 5110H
+               1734 1004  D1451 Mainboard (SCENIC N300, i845GV)
+               1734 1055  Amilo M1420
+               4c53 1090  Cx9 / Vx9 mainboard
+               8086 24c2  Latitude X300
+               e4bf 0cc9  CC9-SAMBA
+               e4bf 0cd2  CD2-BEBOP
+       24d0  82801EB/ER (ICH5/ICH5R) LPC Interface Bridge
+       24d1  82801EB (ICH5) SATA Controller
+               1028 0169  Precision 470
+               1028 019a  PowerEdge SC1425
+               103c 12bc  d530 CMT (DG746A)
+               1043 80a6  P4P800 series motherboard
+               1458 24d1  GA-8IPE1000 Pro2 motherboard (865PE)
+               1462 7280  865PE Neo2 (MS-6728)
+               1565 5200  P4TSV Motherboard (865G)
+               15d9 4580  P4SCE Mainboard
+               8086 3427  S875WP1-E mainboard
+               8086 4246  Desktop Board D865GBF
+               8086 4c43  Desktop Board D865GLC
+               8086 524c  D865PERL mainboard
+       24d2  82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1
+               1014 02dd  eServer xSeries server mainboard
+               1014 02ed  eServer xSeries server mainboard
+               1028 0169  Precision 470
+               1028 016c  PowerEdge 1850
+               1028 016d  PowerEdge 2850 onboard UHCI
+               1028 0183  PowerEdge 1800
+               1028 019a  PowerEdge SC1425
+               103c 006a  NX9500
+               103c 12bc  d530 CMT (DG746A)
+               1043 80a6  P4P800/P5P800 series motherboard
+               1458 24d2  GA-8IPE1000/8KNXP motherboard
+               1462 7280  865PE Neo2 (MS-6728)
+               1565 3101  P4TSV Motherboard (865G)
+               15d9 4580  P4SCE Mainboard
+               1734 101c  PRIMERGY RX/TX series onboard UHCI
+               8086 3427  S875WP1-E mainboard
+               8086 4246  Desktop Board D865GBF
+               8086 4c43  Desktop Board D865GLC
+               8086 524c  D865PERL mainboard
+       24d3  82801EB/ER (ICH5/ICH5R) SMBus Controller
+               1014 02dd  eServer xSeries server mainboard
+               1014 02ed  eServer xSeries server mainboard
+               1028 0156  Precision 360
+               1028 0169  Precision 470
+               103c 12bc  d330 uT
+               1043 80a6  P4P800 Mainboard
+               1458 24d2  GA-8IPE1000 Pro2 motherboard (865PE)
+               1462 7280  865PE Neo2 (MS-6728)
+               1565 3101  P4TSV Motherboard (865G)
+               15d9 4580  P4SCE Mainboard
+               1734 101c  PRIMERGY RX/TX S2 series SMBus
+               8086 3427  S875WP1-E mainboard
+               8086 4246  Desktop Board D865GBF
+               8086 4c43  Desktop Board D865GLC
+               8086 524c  D865PERL mainboard
+       24d4  82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2
+               1014 02dd  eServer xSeries server mainboard
+               1014 02ed  eServer xSeries server mainboard
+               1028 0169  Precision 470
+               1028 016c  PowerEdge 1850
+               1028 016d  PowerEdge 2850 onboard UHCI
+               1028 0183  PowerEdge 1800
+               1028 019a  PowerEdge SC1425
+               103c 006a  NX9500
+               103c 12bc  d530 CMT (DG746A)
+               1043 80a6  P4P800/P5P800 series motherboard
+               1458 24d2  GA-8IPE1000 Pro2 motherboard (865PE)
+               1462 7280  865PE Neo2 (MS-6728)
+               1565 3101  P4TSV Motherboard (865G)
+               15d9 4580  P4SCE Mainboard
+               1734 101c  PRIMERGY RX/TX S2 series onboard UHCI
+               8086 3427  S875WP1-E mainboard
+               8086 4246  Desktop Board D865GBF
+               8086 4c43  Desktop Board D865GLC
+               8086 524c  D865PERL mainboard
+       24d5  82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller
+               100a 147b  Abit IS7-E motherboard
+               1028 0169  Precision 470
+               103c 006a  NX9500
+               103c 12bc  d330 uT
+               1043 80f3  P4P800 Mainboard
+               1043 810f  P5P800-MX Mainboard
+               1458 a002  GA-8IPE1000/8KNXP motherboard
+               1462 0080  865PE Neo2-V (MS-6788) Mainboard
+               1462 7280  865PE Neo2 (MS-6728)
+               8086 a000  D865PERL mainboard
+               8086 e000  D865PERL mainboard
+               8086 e001  Desktop Board D865GBF
+               8086 e002  SoundMax Intergrated Digital Audio
+       24d6  82801EB/ER (ICH5/ICH5R) AC'97 Modem Controller
+               103c 006a  NX9500
+       24d7  82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3
+               1014 02ed  xSeries server mainboard
+               1028 0169  Precision 470
+               1028 016c  PowerEdge 1850
+               1028 016d  PowerEdge 2850 onboard UHCI
+               1028 0183  PowerEdge 1800
+               103c 006a  NX9500
+               103c 12bc  d530 CMT (DG746A)
+               1043 80a6  P4P800/P5P800 series motherboard
+               1458 24d2  GA-8IPE1000 Pro2 motherboard (865PE)
+               1462 7280  865PE Neo2 (MS-6728)
+               1565 3101  P4TSV Motherboard (865G)
+               15d9 4580  P4SCE Mainboard
+               1734 101c  PRIMERGY RX/TX S2 series onboard UHCI
+               8086 3427  S875WP1-E mainboard
+               8086 4246  Desktop Board D865GBF
+               8086 4c43  Desktop Board D865GLC
+               8086 524c  D865PERL mainboard
+       24db  82801EB/ER (ICH5/ICH5R) IDE Controller
+               1014 02dd  eServer xSeries server mainboard
+               1014 02ed  eServer xSeries server mainboard
+               1028 0169  Precision 470
+               1028 016c  PowerEdge 1850
+               1028 016d  PowerEdge 2850 onboard UHCI
+               1028 019a  PowerEdge SC1425
+               103c 006a  NX9500
+               103c 12bc  d530 CMT (DG746A)
+               1043 80a6  P4P800/P5P800 series motherboard
+               1458 24d2  GA-8IPE1000 Pro2 motherboard (865PE)
+               1462 7280  865PE Neo2 (MS-6728)
+               1462 7580  MSI 875P
+               1565 3101  P4TSV Motherboard (865G)
+               15d9 4580  P4SCE Mainboard
+               1734 101c  PRIMERGY RX/TX S2 series onboard IDE
+               8086 24db  P4C800 Mainboard
+               8086 3427  S875WP1-E mainboard
+               8086 4246  Desktop Board D865GBF
+               8086 4c43  Desktop Board D865GLC
+               8086 524c  D865PERL mainboard
+       24dc  82801EB (ICH5) LPC Interface Bridge
+       24dd  82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller
+               1014 02dd  eServer xSeries server mainboard
+               1014 02ed  eServer xSeries server mainboard
+               1028 0169  Precision 470
+               1028 016c  PowerEdge 1850
+               1028 016d  PowerEdge 2850 onboard EHCI
+               1028 0183  PowerEdge 1800
+               1028 019a  PowerEdge SC1425
+               103c 006a  NX9500
+               103c 12bc  d530 CMT (DG746A)
+               1043 80a6  P4P800/P5P800 series motherboard
+               1458 5006  GA-8IPE1000 Pro2 motherboard (865PE)
+               1462 7280  865PE Neo2 (MS-6728)
+               8086 3427  S875WP1-E mainboard
+               8086 4246  Desktop Board D865GBF
+               8086 4c43  Desktop Board D865GLC
+               8086 524c  D865PERL mainboard
+       24de  82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4
+               1014 02ed  xSeries server mainboard
+               1028 0169  Precision 470
+               1043 80a6  P4P800/P5P800 series motherboard
+               1458 24d2  GA-8IPE1000 Pro2 motherboard (865PE)
+               1462 7280  865PE Neo2 (MS-6728)
+               1565 3101  P4TSV Motherboard (865G)
+               15d9 4580  P4SCE Mainboard
+               1734 101c  PRIMERGY RX/TX S2 series onboard UHCI
+               8086 3427  S875WP1-E mainboard
+               8086 4246  Desktop Board D865GBF
+               8086 4c43  Desktop Board D865GLC
+               8086 524c  D865PERL mainboard
+       24df  82801ER (ICH5R) SATA Controller
+       2500  82820 820 (Camino) Chipset Host Bridge (MCH)
+               1028 0095  Precision Workstation 220 Chipset
+               1043 801c  P3C-2000 system chipset
+       2501  82820 820 (Camino) Chipset Host Bridge (MCH)
+               1043 801c  P3C-2000 system chipset
+       250b  82820 820 (Camino) Chipset Host Bridge
+       250f  82820 820 (Camino) Chipset AGP Bridge
+       2520  82805AA MTH Memory Translator Hub
+       2521  82804AA MRH-S Memory Repeater Hub for SDRAM
+       2530  82850 850 (Tehama) Chipset Host Bridge (MCH)
+               1028 00c7  Dimension 8100
+               147b 0507  TH7II-RAID
+       2531  82860 860 (Wombat) Chipset Host Bridge (MCH)
+               1028 00d8  Precision 530
+       2532  82850 850 (Tehama) Chipset AGP Bridge
+       2533  82860 860 (Wombat) Chipset AGP Bridge
+       2534  82860 860 (Wombat) Chipset PCI Bridge
+       2540  E7500 Memory Controller Hub
+               15d9 3480  P4DP6
+       2541  E7500/E7501 Host RASUM Controller
+               15d9 3480  P4DP6
+               4c53 1090  Cx9 / Vx9 mainboard
+               8086 3424  SE7501HG2 Mainboard
+       2543  E7500/E7501 Hub Interface B PCI-to-PCI Bridge
+       2544  E7500/E7501 Hub Interface B RASUM Controller
+               4c53 1090  Cx9 / Vx9 mainboard
+       2545  E7500/E7501 Hub Interface C PCI-to-PCI Bridge
+       2546  E7500/E7501 Hub Interface C RASUM Controller
+       2547  E7500/E7501 Hub Interface D PCI-to-PCI Bridge
+       2548  E7500/E7501 Hub Interface D RASUM Controller
+       254c  E7501 Memory Controller Hub
+               4c53 1090  Cx9 / Vx9 mainboard
+               8086 3424  SE7501HG2 Mainboard
+       2550  E7505 Memory Controller Hub
+       2551  E7505/E7205 Series RAS Controller
+       2552  E7505/E7205 PCI-to-AGP Bridge
+       2553  E7505 Hub Interface B PCI-to-PCI Bridge
+       2554  E7505 Hub Interface B PCI-to-PCI Bridge RAS Controller
+       255d  E7205 Memory Controller Hub
+       2560  82845G/GL[Brookdale-G]/GE/PE DRAM Controller/Host-Hub Interface
+               1028 0126  Optiplex GX260
+               1458 2560  GA-8PE667 Ultra
+               1462 5800  845PE Max (MS-6580)
+       2561  82845G/GL[Brookdale-G]/GE/PE Host-to-AGP Bridge
+       2562  82845G/GL[Brookdale-G]/GE Chipset Integrated Graphics Device
+               0e11 00b9  Evo D510 SFF
+               1014 0267  NetVista A30p
+               1734 1003  D1521 Mainboard (Fujitsu-Siemens)
+               1734 1004  D1451 Mainboard (SCENIC N300, i845GV)
+       2570  82865G/PE/P DRAM Controller/Host-Hub Interface
+               103c 006a  NX9500
+               103c 12bc  d330 uT
+               1043 80f2  P4P800/P5P800 series motherboard
+               1458 2570  GA-8IPE1000 Pro2 motherboard (865PE)
+       2571  82865G/PE/P PCI to AGP Controller
+       2572  82865G Integrated Graphics Controller
+               1028 019d  Dimension 3000
+               103c 12bc  D530 sff(dc578av)
+               1043 80a5  P5P800-MX Mainboard
+               1734 101b  Fujitsu-Siemens Scenic E300 i865GV
+               8086 4246  Desktop Board D865GBF
+               8086 4c43  Desktop Board D865GLC
+       2573  82865G/PE/P PCI to CSA Bridge
+       2576  82865G/PE/P Processor to I/O Memory Interface
+       2578  82875P/E7210 Memory Controller Hub
+               1458 2578  GA-8KNXP motherboard (875P)
+               1462 7580  MS-6758 (875P Neo)
+               15d9 4580  P4SCE Motherboard
+       2579  82875P Processor to AGP Controller
+       257b  82875P/E7210 Processor to PCI to CSA Bridge
+       257e  82875P/E7210 Processor to I/O Memory Interface
+       2580  82915G/P/GV/GL/PL/910GL Memory Controller Hub
+               1458 2580  GA-8I915ME-G Mainboard
+               1462 7028  915P/G Neo2
+               1734 105b  Scenic W620
+       2581  82915G/P/GV/GL/PL/910GL PCI Express Root Port
+       2582  82915G/GV/910GL Integrated Graphics Controller
+               1028 1079  Optiplex GX280
+               103c 3006  DC7100 SFF(DX878AV)
+               1043 2582  P5GD1-VW Mainboard
+               1458 2582  GA-8I915ME-G Mainboard
+               1734 105b  Scenic W620
+               1849 2582  ASRock P4Dual-915GL
+       2584  82925X/XE Memory Controller Hub
+               1028 0177  Dimension 8400
+       2585  82925X/XE PCI Express Root Port
+       2588  E7220/E7221 Memory Controller Hub
+       2589  E7220/E7221 PCI Express Root Port
+       258a  E7221 Integrated Graphics Controller
+       2590  Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller
+               1014 0575  ThinkPad Z60t
+               1028 0182  Dell Latidude C610
+               103c 0934  Compaq nw8240/nx8220
+               103c 099c  NX6110/NC6120
+               104d 81b7  Vaio VGN-S3XP
+               a304 81b7  Vaio VGN-S3XP
+               e4bf 0ccd  CCD-CALYPSO
+               e4bf 0cd3  CD3-JIVE
+               e4bf 58b1  XB1
+       2591  Mobile 915GM/PM Express PCI Express Root Port
+               103c 0934  HP Compaq nw8240 Mobile Workstation
+       2592  Mobile 915GM/GMS/910GML Express Graphics Controller
+               103c 099c  NX6110/NC6120
+               103c 308a  NC6220
+               1043 1881  GMA 900 915GM Integrated Graphics
+               e4bf 0ccd  CCD-CALYPSO
+               e4bf 0cd3  CD3-JIVE
+               e4bf 58b1  XB1
+       25a1  6300ESB LPC Interface Controller
+       25a2  6300ESB PATA Storage Controller
+               1775 10d0  V5D Single Board Computer IDE
+               1775 1100  CR11/VR11 Single Board Computer
+               1775 ce90  CE9
+               4c53 10b0  CL9 mainboard
+               4c53 10e0  PSL09 PrPMC
+       25a3  6300ESB SATA Storage Controller
+               1775 1100  CR11/VR11 Single Board Computer
+               1775 ce90  CE9
+               4c53 10b0  CL9 mainboard
+               4c53 10d0  Telum ASLP10 Processor AMC
+               4c53 10e0  PSL09 PrPMC
+       25a4  6300ESB SMBus Controller
+               1775 10d0  V5D Single Board Computer
+               1775 1100  CR11/VR11 Single Board Computer
+               1775 ce90  CE9
+               4c53 10b0  CL9 mainboard
+               4c53 10d0  Telum ASLP10 Processor AMC
+               4c53 10e0  PSL09 PrPMC
+       25a6  6300ESB AC'97 Audio Controller
+               1775 1100  CR11/VR11 Single Board Computer
+               1775 ce90  CE9
+               4c53 10b0  CL9 mainboard
+       25a7  6300ESB AC'97 Modem Controller
+       25a9  6300ESB USB Universal Host Controller
+               1775 10d0  V5D Single Board Computer USB
+               1775 1100  CR11/VR11 Single Board Computer
+               1775 ce90  CE9
+               4c53 10b0  CL9 mainboard
+               4c53 10d0  Telum ASLP10 Processor AMC
+               4c53 10e0  PSL09 PrPMC
+       25aa  6300ESB USB Universal Host Controller
+               1775 1100  CR11/VR11 Single Board Computer
+               1775 ce90  CE9
+               4c53 10b0  CL9 mainboard
+               4c53 10d0  Telum ASLP10 Processor AMC
+               4c53 10e0  PSL09 PrPMC
+       25ab  6300ESB Watchdog Timer
+               1775 10d0  V5D Single Board Computer
+               1775 1100  CR11/VR11 Single Board Computer
+               1775 ce90  CE9
+               4c53 10b0  CL9 mainboard
+               4c53 10d0  Telum ASLP10 Processor AMC
+               4c53 10e0  PSL09 PrPMC
+       25ac  6300ESB I/O Advanced Programmable Interrupt Controller
+               1775 10d0  V5D Single Board Computer
+               1775 1100  CR11/VR11 Single Board Computer
+               1775 ce90  CE9
+               4c53 10b0  CL9 mainboard
+               4c53 10d0  Telum ASLP10 Processor AMC
+               4c53 10e0  PSL09 PrPMC
+       25ad  6300ESB USB2 Enhanced Host Controller
+               1775 10d0  V5D Single Board Computer USB 2.0
+               1775 1100  CR11/VR11 Single Board Computer
+               1775 ce90  CE9
+               4c53 10b0  CL9 mainboard
+               4c53 10d0  Telum ASLP10 Processor AMC
+               4c53 10e0  PSL09 PrPMC
+       25ae  6300ESB 64-bit PCI-X Bridge
+       25b0  6300ESB SATA RAID Controller
+               1775 1100  CR11/VR11 Single Board Computer
+               4c53 10d0  Telum ASLP10 Processor AMC
+               4c53 10e0  PSL09 PrPMC
+       25c0  5000X Chipset Memory Controller Hub
+       25d0  5000Z Chipset Memory Controller Hub
+       25d4  5000V Chipset Memory Controller Hub
+               15d9 8680  X7DVL-E-O motherboard
+       25d8  5000P Chipset Memory Controller Hub
+               8086 3476  Intel S5000PSLSATA Server Board
+       25e2  5000 Series Chipset PCI Express x4 Port 2
+       25e3  5000 Series Chipset PCI Express x4 Port 3
+       25e4  5000 Series Chipset PCI Express x4 Port 4
+       25e5  5000 Series Chipset PCI Express x4 Port 5
+       25e6  5000 Series Chipset PCI Express x4 Port 6
+       25e7  5000 Series Chipset PCI Express x4 Port 7
+       25f0  5000 Series Chipset FSB Registers
+               15d9 8680  X7DVL-E-O motherboard
+               8086 3476  Intel S5000PSLSATA Server Board
+       25f1  5000 Series Chipset Reserved Registers
+               15d9 8680  X7DVL-E-O motherboard
+               8086 3476  Intel S5000PSLSATA Server Board
+       25f3  5000 Series Chipset Reserved Registers
+               15d9 8680  X7DVL-E-O motherboard
+               8086 3476  Intel S5000PSLSATA Server Board
+       25f5  5000 Series Chipset FBD Registers
+               15d9 8680  X7DVL-E-O motherboard
+               8086 3476  Intel S5000PSLSATA Server Board
+       25f6  5000 Series Chipset FBD Registers
+               15d9 8680  X7DVL-E-O motherboard
+               8086 3476  Intel S5000PSLSATA Server Board
+       25f7  5000 Series Chipset PCI Express x8 Port 2-3
+       25f8  5000 Series Chipset PCI Express x8 Port 4-5
+       25f9  5000 Series Chipset PCI Express x8 Port 6-7
+       25fa  5000X Chipset PCI Express x16 Port 4-7
+       2600  E8500/E8501 Hub Interface 1.5
+       2601  E8500/E8501 PCI Express x4 Port D
+       2602  E8500/E8501 PCI Express x4 Port C0
+       2603  E8500/E8501 PCI Express x4 Port C1
+       2604  E8500/E8501 PCI Express x4 Port B0
+       2605  E8500/E8501 PCI Express x4 Port B1
+       2606  E8500/E8501 PCI Express x4 Port A0
+       2607  E8500/E8501 PCI Express x4 Port A1
+       2608  E8500/E8501 PCI Express x8 Port C
+       2609  E8500/E8501 PCI Express x8 Port B
+       260a  E8500/E8501 PCI Express x8 Port A
+       260c  E8500/E8501 IMI Registers
+       2610  E8500/E8501 FSB Registers
+       2611  E8500/E8501 Address Mapping Registers
+       2612  E8500/E8501 RAS Registers
+       2613  E8500/E8501 Reserved Registers
+       2614  E8500/E8501 Reserved Registers
+       2615  E8500/E8501 Miscellaneous Registers
+       2617  E8500/E8501 Reserved Registers
+       2618  E8500/E8501 Reserved Registers
+       2619  E8500/E8501 Reserved Registers
+       261a  E8500/E8501 Reserved Registers
+       261b  E8500/E8501 Reserved Registers
+       261c  E8500/E8501 Reserved Registers
+       261d  E8500/E8501 Reserved Registers
+       261e  E8500/E8501 Reserved Registers
+       2620  E8500/E8501 eXternal Memory Bridge
+       2621  E8500/E8501 XMB Miscellaneous Registers
+       2622  E8500/E8501 XMB Memory Interleaving Registers
+       2623  E8500/E8501 XMB DDR Initialization and Calibration
+       2624  E8500/E8501 XMB Reserved Registers
+       2625  E8500/E8501 XMB Reserved Registers
+       2626  E8500/E8501 XMB Reserved Registers
+       2627  E8500/E8501 XMB Reserved Registers
+       2640  82801FB/FR (ICH6/ICH6R) LPC Interface Bridge
+               1462 7028  915P/G Neo2
+               1734 105c  Scenic W620
+               e4bf 0ccd  CCD-CALYPSO
+               e4bf 0cd3  CD3-JIVE
+               e4bf 58b1  XB1
+       2641  82801FBM (ICH6M) LPC Interface Bridge
+               103c 0934  Compaq nw8240/nx8220
+               103c 099c  NX6110/NC6120
+       2642  82801FW/FRW (ICH6W/ICH6RW) LPC Interface Bridge
+       2651  82801FB/FW (ICH6/ICH6W) SATA Controller
+               1028 0179  Optiplex GX280
+               1043 2601  P5GD1-VW Mainboard
+               1734 105c  Scenic W620
+               8086 4147  D915GAG Motherboard
+               e4bf 0ccd  CCD-CALYPSO
+               e4bf 0cd3  CD3-JIVE
+               e4bf 58b1  XB1
+       2652  82801FR/FRW (ICH6R/ICH6RW) SATA Controller
+               1028 0177  Dimension 8400
+               1462 7028  915P/G Neo2
+       2653  82801FBM (ICH6M) SATA Controller
+       2658  82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1
+               1028 0177  Dimension 8400
+               1028 0179  Optiplex GX280
+               103c 0934  Compaq nw8240/nx8220
+               103c 099c  NX6110/NC6120
+               1043 80a6  P5GD1-VW Mainboard
+               1458 2558  GA-8I915ME-G Mainboard
+               1462 7028  915P/G Neo2
+               1734 105c  Scenic W620
+               e4bf 0ccd  CCD-CALYPSO
+               e4bf 0cd3  CD3-JIVE
+               e4bf 58b1  XB1
+       2659  82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2
+               1028 0177  Dimension 8400
+               1028 0179  Optiplex GX280
+               103c 0934  Compaq nw8240/nx8220
+               103c 099c  NX6110/NC6120
+               1043 80a6  P5GD1-VW Mainboard
+               1458 2659  GA-8I915ME-G Mainboard
+               1462 7028  915P/G Neo2
+               1734 105c  Scenic W620
+               e4bf 0ccd  CCD-CALYPSO
+               e4bf 0cd3  CD3-JIVE
+               e4bf 58b1  XB1
+       265a  82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3
+               1028 0177  Dimension 8400
+               1028 0179  Optiplex GX280
+               103c 0934  Compaq nw8240/nx8220
+               103c 099c  NX6110/NC6120
+               1043 80a6  P5GD1-VW Mainboard
+               1458 265a  GA-8I915ME-G Mainboard
+               1462 7028  915P/G Neo2
+               1734 105c  Scenic W620
+               e4bf 0ccd  CCD-CALYPSO
+               e4bf 0cd3  CD3-JIVE
+               e4bf 58b1  XB1
+       265b  82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4
+               1028 0177  Dimension 8400
+               1028 0179  Optiplex GX280
+               103c 099c  NX6110/NC6120
+               1043 80a6  P5GD1-VW Mainboard
+               1458 265a  GA-8I915ME-G Mainboard
+               1462 7028  915P/G Neo2
+               1734 105c  Scenic W620
+               e4bf 0ccd  CCD-CALYPSO
+               e4bf 0cd3  CD3-JIVE
+               e4bf 58b1  XB1
+       265c  82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller
+               1028 0177  Dimension 8400
+               1028 0179  Optiplex GX280
+               103c 0934  Compaq nw8240/nx8220
+               103c 099c  NX6110/NC6120
+               1043 80a6  P5GD1-VW Mainboard
+               1458 5006  GA-8I915ME-G Mainboard
+               1462 7028  915P/G Neo2
+               1734 105c  Scenic W620
+               8086 265c  Dimension 3100
+               e4bf 0ccd  CCD-CALYPSO
+               e4bf 0cd3  CD3-JIVE
+               e4bf 58b1  XB1
+       2660  82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 1
+               103c 0934  HP Compaq nw8240 Mobile Workstation
+               103c 099c  NX6110/NC6120
+               e4bf 0ccd  CCD-CALYPSO
+               e4bf 0cd3  CD3-JIVE
+               e4bf 58b1  XB1
+       2662  82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 2
+               103c 0934  HP Compaq nw8240 Mobile Workstation
+               e4bf 0ccd  CCD-CALYPSO
+               e4bf 0cd3  CD3-JIVE
+               e4bf 58b1  XB1
+       2664  82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 3
+               e4bf 0ccd  CCD-CALYPSO
+               e4bf 0cd3  CD3-JIVE
+               e4bf 58b1  XB1
+       2666  82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 4
+               e4bf 0ccd  CCD-CALYPSO
+               e4bf 0cd3  CD3-JIVE
+               e4bf 58b1  XB1
+       2668  82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller
+               1014 05b7  ThinkPad Z60t
+# based on the PTGD1-LA motherboard
+               103c 2a09  PufferM-UL8E
+               1043 1173  Asus A6VC
+               1043 814e  P5GD1-VW Mainboard
+               1462 7028  915P/G Neo2
+       266a  82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller
+               1028 0177  Dimension 8400
+               1028 0179  Optiplex GX280
+               1043 80a6  P5GD1-VW Mainboard
+               1458 266a  GA-8I915ME-G Mainboard
+               1462 7028  915P/G Neo2
+               1734 105c  Scenic W620
+               e4bf 0ccd  CCD-CALYPSO
+               e4bf 0cd3  CD3-JIVE
+               e4bf 58b1  XB1
+       266c  82801FB/FBM/FR/FW/FRW (ICH6 Family) LAN Controller
+       266d  82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Modem Controller
+               1025 006a  Conexant AC'97 CoDec (in Acer TravelMate 2410 serie laptop)
+               103c 0934  Compaq nw8240/nx8220
+               103c 099c  NX6110/NC6120
+       266e  82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller
+               1025 006a  Realtek ALC 655 codec (in Acer TravelMate 2410 serie laptop)
+               1028 0177  Dimension 8400
+               1028 0179  Optiplex GX280
+               1028 0182  Latitude D610 Laptop
+               1028 0187  Dell Precision M70 Laptop
+               1028 0188  Inspiron 6000 laptop
+               103c 0934  Compaq nw8240/nx8220
+               103c 0944  Compaq NC6220
+               103c 099c  NX6110/NC6120
+               103c 3006  DC7100 SFF(DX878AV)
+               1458 a002  GA-8I915ME-G Mainboard
+               152d 0745  Packard Bell A8550 Laptop
+               1734 105a  Scenic W620
+       266f  82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller
+               1028 0177  Dimension 8400
+               103c 0934  Compaq nw8240/nx8220
+               103c 099c  NX6110/NC6120
+               1043 80a6  P5GD1-VW Mainboard
+               1458 266f  GA-8I915ME-G Mainboard
+               1462 7028  915P/G Neo2
+               1734 105c  Scenic W620
+               e4bf 0ccd  CCD-CALYPSO
+               e4bf 0cd3  CD3-JIVE
+               e4bf 58b1  XB1
+       2670  631xESB/632xESB/3100 Chipset LPC Interface Controller
+               15d9 8680  X7DVL-E-O motherboard
+               8086 3476  Intel S5000PSLSATA Server Board
+       2680  631xESB/632xESB/3100 Chipset SATA IDE Controller
+       2681  631xESB/632xESB SATA AHCI Controller
+               15d9 8680  X7DVL-E-O motherboard
+               8086 3476  Intel S5000PSLSATA Server Board
+       2682  631xESB/632xESB SATA RAID Controller
+       2683  631xESB/632xESB SATA RAID Controller
+       2688  631xESB/632xESB/3100 Chipset UHCI USB Controller #1
+               15d9 8680  X7DVL-E-O motherboard
+               8086 3476  Intel S5000PSLSATA Server Board
+       2689  631xESB/632xESB/3100 Chipset UHCI USB Controller #2
+               15d9 8680  X7DVL-E-O motherboard
+               8086 3476  Intel S5000PSLSATA Server Board
+       268a  631xESB/632xESB/3100 Chipset UHCI USB Controller #3
+               15d9 8680  X7DVL-E-O motherboard
+               8086 3476  Intel S5000PSLSATA Server Board
+       268b  631xESB/632xESB/3100 Chipset UHCI USB Controller #4
+               15d9 8680  X7DVL-E-O motherboard
+               8086 3476  Intel S5000PSLSATA Server Board
+       268c  631xESB/632xESB/3100 Chipset EHCI USB2 Controller
+               15d9 8680  X7DVL-E-O motherboard
+               8086 3476  Intel S5000PSLSATA Server Board
+       2690  631xESB/632xESB/3100 Chipset PCI Express Root Port 1
+       2692  631xESB/632xESB/3100 Chipset PCI Express Root Port 2
+       2694  631xESB/632xESB/3100 Chipset PCI Express Root Port 3
+       2696  631xESB/632xESB/3100 Chipset PCI Express Root Port 4
+       2698  631xESB/632xESB AC '97 Audio Controller
+       2699  631xESB/632xESB AC '97 Modem Controller
+       269a  631xESB/632xESB High Definition Audio Controller
+       269b  631xESB/632xESB/3100 Chipset SMBus Controller
+               15d9 8680  X7DVL-E-O motherboard
+               8086 3476  Intel S5000PSLSATA Server Board
+       269e  631xESB/632xESB IDE Controller
+               15d9 8680  X7DVL-E-O motherboard
+       2770  82945G/GZ/P/PL Memory Controller Hub
+               1028 01ad  OptiPlex GX620
+               107b 5048  E4500
+               8086 544e  DeskTop Board D945GTP
+       2771  82945G/GZ/P/PL PCI Express Root Port
+       2772  82945G/GZ Integrated Graphics Controller
+               8086 544e  DeskTop Board D945GTP
+               8086 d605  Intel Desktop Board D945GCCR
+       2774  82955X Memory Controller Hub
+       2775  82955X PCI Express Root Port
+       2776  82945G/GZ Integrated Graphics Controller
+       2778  E7230/3000/3010 Memory Controller Hub
+               1028 01df  PowerEdge SC440
+               1028 01e6  PowerEdge 860
+       2779  E7230/3000/3010 PCI Express Root Port
+       277a  82975X/3010 PCI Express Root Port
+       277c  82975X Memory Controller Hub
+               1043 8178  P5WDG2 WS Professional motherboard
+       277d  82975X PCI Express Root Port
+       2782  82915G Integrated Graphics Controller
+               1043 2582  P5GD1-VW Mainboard
+               1734 105b  Scenic W620
+       2792  Mobile 915GM/GMS/910GML Express Graphics Controller
+               103c 099c  NX6110/NC6120
+               1043 1881  GMA 900 915GM Integrated Graphics
+               e4bf 0ccd  CCD-CALYPSO
+               e4bf 0cd3  CD3-JIVE
+               e4bf 58b1  XB1
+       27a0  Mobile 945GM/PM/GMS, 943/940GML and 945GT Express Memory Controller Hub
+               1025 006c  9814 WKMI
+               1028 01d7  XPS M1210
+               103c 30a1  NC2400
+               103c 30a3  Compaq nw8440
+               17aa 2015  ThinkPad T60
+               17aa 2017  ThinkPad T60/R60 series
+       27a1  Mobile 945GM/PM/GMS, 943/940GML and 945GT Express PCI Express Root Port
+               103c 30a3  Compaq nw8440
+       27a2  Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller
+               103c 30a1  NC2400
+               17aa 201a  ThinkPad T60/R60 series
+       27a6  Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller
+               103c 30a1  NC2400
+               17aa 201a  ThinkPad T60/R60 series
+       27ac  Mobile 945GME Express Memory Controller Hub
+       27ad  Mobile 945GME Express PCI Express Root Port
+       27ae  Mobile 945GME Express Integrated Graphics Controller
+       27b0  82801GH (ICH7DH) LPC Interface Bridge
+               8086 544e  DeskTop Board D945GTP
+       27b8  82801GB/GR (ICH7 Family) LPC Interface Bridge
+               1028 01e6  PowerEdge 860
+               1043 8179  P5KPL-VM Motherboard
+               107b 5048  E4500
+               8086 544e  DeskTop Board D945GTP
+       27b9  82801GBM (ICH7-M) LPC Interface Bridge
+               1028 01d7  XPS M1210
+               103c 309f  HP Compaq nx9420
+               103c 30a1  NC2400
+               103c 30a3  Compaq nw8440
+               10f7 8338  Panasonic CF-Y5 laptop
+               17aa 2009  ThinkPad T60/R60 series
+       27bd  82801GHM (ICH7-M DH) LPC Interface Bridge
+               1025 006c  9814 WKMI
+       27c0  82801GB/GR/GH (ICH7 Family) SATA IDE Controller
+               1028 01ad  OptiPlex GX620
+               1028 01df  PowerEdge SC440
+               1028 01e6  PowerEdge 860
+               1043 8179  P5KPL-VM Motherboard
+               107b 5048  E4500
+               1462 2310  MSI Hetis 945
+               1462 7236  945P Neo3-F Rev. 2.2 motherboard
+               8086 544e  DeskTop Board D945GTP
+       27c1  82801GR/GH (ICH7 Family) SATA AHCI Controller
+               1028 01df  PowerEdge SC440
+               8086 5842  DeskTop Board D975XBX
+       27c3  82801GR/GH (ICH7 Family) SATA RAID Controller
+               8086 544e  DeskTop Board D945GTP
+       27c4  82801GBM/GHM (ICH7 Family) SATA IDE Controller
+               1025 006c  9814 WKMI
+               1028 01d7  XPS M1210
+               17aa 200e  Thinkpad T60 model 2007
+       27c5  82801GBM/GHM (ICH7 Family) SATA AHCI Controller
+               103c 30a3  Compaq nw8440
+               17aa 200d  ThinkPad T60/R60 series
+       27c6  82801GHM (ICH7-M DH) SATA RAID Controller
+       27c8  82801G (ICH7 Family) USB UHCI Controller #1
+               1025 006c  9814 WKMI
+               1028 01ad  OptiPlex GX620
+               1028 01d7  XPS M1210
+               1028 01df  PowerEdge SC440
+               1028 01e6  PowerEdge 860
+               103c 30a1  NC2400
+               103c 30a3  Compaq nw8440
+               1043 8179  P5KPL-VM Motherboard
+               107b 5048  E4500
+               17aa 200a  ThinkPad T60/R60 series
+               8086 544e  DeskTop Board D945GTP
+       27c9  82801G (ICH7 Family) USB UHCI Controller #2
+               1025 006c  9814 WKMI
+               1028 01ad  OptiPlex GX620
+               1028 01d7  XPS M1210
+               1028 01df  PowerEdge SC440
+               1028 01e6  PowerEdge 860
+               103c 30a1  NC2400
+               103c 30a3  Compaq nw8440
+               1043 8179  P5KPL-VM Motherboard
+               107b 5048  E4500
+               17aa 200a  ThinkPad T60/R60 series
+               8086 544e  DeskTop Board D945GTP
+       27ca  82801G (ICH7 Family) USB UHCI Controller #3
+               1025 006c  9814 WKMI
+               1028 01ad  OptiPlex GX620
+               1028 01d7  XPS M1210
+               1028 01df  PowerEdge SC440
+               1028 01e6  PowerEdge 860
+               103c 30a1  NC2400
+               103c 30a3  Compaq nw8440
+               1043 8179  P5KPL-VM Motherboard
+               107b 5048  E4500
+               17aa 200a  ThinkPad T60/R60 series
+               8086 544e  DeskTop Board D945GTP
+       27cb  82801G (ICH7 Family) USB UHCI Controller #4
+               1025 006c  9814 WKMI
+               1028 01ad  OptiPlex GX620
+               1028 01d7  XPS M1210
+               1028 01df  PowerEdge SC440
+               103c 30a1  NC2400
+               103c 30a3  Compaq nw8440
+               1043 8179  P5KPL-VM Motherboard
+               107b 5048  E4500
+               17aa 200a  ThinkPad T60/R60 series
+               8086 544e  DeskTop Board D945GTP
+       27cc  82801G (ICH7 Family) USB2 EHCI Controller
+               1025 006c  9814 WKMI
+               1028 01ad  OptiPlex GX620
+               1028 01d7  XPS M1210
+               1028 01df  PowerEdge SC440
+               1028 01e6  PowerEdge 860
+               103c 30a1  NC2400
+               103c 30a3  Compaq nw8440
+               1043 8179  P5KPL-VM Motherboard
+               17aa 200b  ThinkPad T60/R60 series
+               8086 544e  DeskTop Board D945GTP
+       27d0  82801G (ICH7 Family) PCI Express Port 1
+               103c 30a3  Compaq nw8440
+       27d2  82801G (ICH7 Family) PCI Express Port 2
+               103c 30a3  Compaq nw8440
+       27d4  82801G (ICH7 Family) PCI Express Port 3
+       27d6  82801G (ICH7 Family) PCI Express Port 4
+               103c 30a3  Compaq nw8440
+       27d8  82801G (ICH7 Family) High Definition Audio Controller
+               1025 006c  9814 WKMI
+               1028 01d7  XPS M1210
+               103c 30a1  NC2400
+               103c 30a3  Compaq nw8440
+               1043 13c4  Asus G2P
+               1043 8290  P5KPL-VM Motherboard
+               107b 5048  E4500
+               10f7 8338  Panasonic CF-Y5 laptop
+               1179 ff10  Toshiba Satellite A100-796 audio (Realtek ALC861)
+               1179 ff31  AC97 Data Fax SoftModem with SmartCP
+               1458 a102  GA-8I945PG-RH Mainboard
+               152d 0753  Softmodem
+               1734 10ad  Conexant softmodem SmartCP
+               17aa 2010  ThinkPad T60/R60 series
+               17aa 3802  Lenovo 3000 C200 audio [Realtek ALC861VD]
+               8086 1112  DeskTop Board D945GTP
+               8086 27d8  DeskTop Board D945GTP
+       27da  82801G (ICH7 Family) SMBus Controller
+               1025 006c  9814 WKMI
+               1028 01ad  OptiPlex GX620
+               1028 01d7  XPS M1210
+               1028 01df  PowerEdge SC440
+               1028 01e6  PowerEdge 860
+               1043 8179  P5KPL-VM Motherboard
+               10f7 8338  Panasonic CF-Y5 laptop
+               1458 5001  GA-8I945PG-RH Mainboard
+               17aa 200f  ThinkPad T60/R60 series
+               8086 544e  DeskTop Board D945GTP
+               8086 5842  DeskTop Board D975XBX
+       27dc  82801G (ICH7 Family) LAN Controller
+               8086 308d  DeskTop Board D945GTP
+       27dd  82801G (ICH7 Family) AC'97 Modem Controller
+       27de  82801G (ICH7 Family) AC'97 Audio Controller
+               1028 01ad  OptiPlex GX620
+               1462 7267  Realtek ALC883 Audio Controller
+       27df  82801G (ICH7 Family) IDE Controller
+               1028 01df  PowerEdge SC440
+               1028 01e6  PowerEdge 860
+               103c 30a1  NC2400
+               103c 30a3  Compaq nw8440
+               1043 8179  P5KPL-VM Motherboard
+               107b 5048  E4500
+               10f7 8338  Panasonic CF-Y5 laptop
+               17aa 200c  ThinkPad T60/R60 series
+               8086 544e  DeskTop Board D945GTP
+       27e0  82801GR/GH/GHM (ICH7 Family) PCI Express Port 5
+       27e2  82801GR/GH/GHM (ICH7 Family) PCI Express Port 6
+       2810  82801HB/HR (ICH8/R) LPC Interface Controller
+               1043 81ec  P5B
+       2811  82801HBM (ICH8M-E) LPC Interface Controller
+               103c 30c1  Compaq 6910p
+               17aa 20b6  T61
+               e4bf cc47  CCG-RUMBA
+       2812  82801HH (ICH8DH) LPC Interface Controller
+       2814  82801HO (ICH8DO) LPC Interface Controller
+       2815  82801HEM (ICH8M) LPC Interface Controller
+               1025 0121  Aspire 5920G
+               1028 01f3  Inspiron 1420
+               103c 30c0  Compaq 6710b
+               103c 30d9  Presario C700
+               104d 9005  Vaio VGN-FZ260E
+       2820  82801H (ICH8 Family) 4 port SATA IDE Controller
+               1028 01da  OptiPlex 745
+               1462 7235  P965 Neo MS-7235 mainboard
+       2821  82801HR/HO/HH (ICH8R/DO/DH) 6 port SATA AHCI Controller
+       2822  82801 SATA RAID Controller
+       2824  82801HB (ICH8) 4 port SATA AHCI Controller
+               1043 81ec  P5B
+       2825  82801H (ICH8 Family) 2 port SATA IDE Controller
+               1028 01da  OptiPlex 745
+               1462 7235  P965 Neo MS-7235 mainboard
+       2828  82801HBM/HEM (ICH8M/ICH8M-E) SATA IDE Controller
+               1028 01f3  Inspiron 1420
+               e4bf cc47  CCG-RUMBA
+       2829  82801HBM/HEM (ICH8M/ICH8M-E) SATA AHCI Controller
+               1025 0121  Aspire 5920G
+               103c 30c0  Compaq 6710b
+               103c 30c1  Compaq 6910p
+               103c 30d9  Presario C700
+               104d 9005  Vaio VGN-FZ260E
+               17aa 20a7  ThinkPad T61
+       282a  Mobile 82801 SATA RAID Controller
+       2830  82801H (ICH8 Family) USB UHCI Controller #1
+               1025 0121  Acer Aspire 5920G
+               1028 01da  OptiPlex 745
+               1028 01f3  Inspiron 1420
+               103c 30c0  Compaq 6710b
+               103c 30c1  Compaq 6910p
+               103c 30d9  Presario C700
+               1043 81ec  P5B
+               104d 9005  Vaio VGN-FZ260E
+               1462 7235  P965 Neo MS-7235 mainboard
+               17aa 20aa  ThinkPad T61
+               e4bf cc47  CCG-RUMBA
+       2831  82801H (ICH8 Family) USB UHCI Controller #2
+               1025 0121  Aspire 5920G
+               1028 01da  OptiPlex 745
+               1028 01f3  Inspiron 1420
+               103c 30c0  Compaq 6710b
+# Name mistyped on previous submission
+               103c 30c1  Compaq 6910p
+               103c 30d9  Presario C700
+               1043 81ec  P5B
+               104d 9005  Vaio VGN-FZ260E
+               1462 7235  P965 Neo MS-7235 mainboard
+               17aa 20aa  ThinkPad T61
+               e4bf cc47  CCG-RUMBA
+       2832  82801H (ICH8 Family) USB UHCI Controller #3
+               1025 0121  Aspire 5920G
+               1028 01da  OptiPlex 745
+               1028 01f3  Inspiron 1420
+               103c 30c0  Compaq 6710b
+               103c 30c1  Compaq 6910p
+               103c 30d9  Presario C700
+               1043 81ec  P5B
+               104d 9005  Vaio VGN-FZ260E
+               17aa 20aa  ThinkPad T61
+               e4bf cc47  CCG-RUMBA
+       2834  82801H (ICH8 Family) USB UHCI Controller #4
+               1025 0121  Aspire 5920G
+               1028 01da  OptiPlex 745
+               1028 01f3  Inspiron 1420
+               103c 30c0  Compaq 6710b
+               103c 30c1  Compaq 6910p
+               1043 81ec  P5B
+               104d 9005  Vaio VGN-FZ260E
+               1462 7235  P965 Neo MS-7235 mainboard
+               17aa 20aa  ThinkPad T61
+               e4bf cc47  CCG-RUMBA
+       2835  82801H (ICH8 Family) USB UHCI Controller #5
+               1025 0121  Acer Aspire 5920G
+               1028 01da  OptiPlex 745
+               1028 01f3  Inspiron 1420
+               103c 30c0  Compaq 6710b
+               103c 30c1  Compaq 6910p
+               1043 81ec  P5B
+               104d 9005  Vaio VGN-FZ260E
+               17aa 20aa  ThinkPad T60
+               e4bf cc47  CCG-RUMBA
+       2836  82801H (ICH8 Family) USB2 EHCI Controller #1
+               1025 0121  Aspire 5920G
+               1028 01da  OptiPlex 745
+               1028 01f3  Inspiron 1420
+               103c 30c0  Compaq 6710b
+               103c 30c1  Compaq 6910p
+               103c 30d9  Presario C700
+               1043 81ec  P5B
+               104d 9005  Vaio VGN-FZ260E
+               1462 7235  P965 Neo MS-7235 mainboard
+               17aa 20ab  ThinkPad T61
+               e4bf cc47  CCG-RUMBA
+       283a  82801H (ICH8 Family) USB2 EHCI Controller #2
+               1025 0121  Acer Aspire 5920G
+               1028 01da  OptiPlex 745
+               1028 01f3  Inspiron 1420
+               103c 30c0  Compaq 6710b
+               103c 30c1  Compaq 6910p
+               1043 81ec  P5B
+               104d 9005  Vaio VGN-FZ260E
+               17aa 20ab  ThinkPad T61
+               e4bf cc47  CCG-RUMBA
+       283e  82801H (ICH8 Family) SMBus Controller
+               1025 0121  Aspire 5920G
+               1028 01da  OptiPlex 745
+               1028 01f3  Inspiron 1420
+               103c 30d9  Presario C700
+               1043 81ec  P5B
+               104d 9005  Vaio VGN-FZ260E
+               1462 7235  P965 Neo MS-7235 mainboard
+               17aa 20a9  ThinkPad T61
+               e4bf cc47  CCG-RUMBA
+       283f  82801H (ICH8 Family) PCI Express Port 1
+               1028 01da  OptiPlex 745
+               103c 30c1  Compaq 6910p
+       2841  82801H (ICH8 Family) PCI Express Port 2
+               103c 30c1  Compaq 6910p
+       2843  82801H (ICH8 Family) PCI Express Port 3
+       2845  82801H (ICH8 Family) PCI Express Port 4
+       2847  82801H (ICH8 Family) PCI Express Port 5
+               1028 01da  OptiPlex 745
+               103c 30c1  Compaq 6910p
+       2849  82801H (ICH8 Family) PCI Express Port 6
+       284b  82801H (ICH8 Family) HD Audio Controller
+               1025 011f  Realtek ALC268 audio codec
+               1025 0121  Aspire 5920G
+               1025 0145  Realtek ALC889 (Aspire 8920G w. Dolby Theather)
+               1028 01da  OptiPlex 745
+               1028 01f3  Inspiron 1420
+               1028 01f9  Dell Latitude D630
+               1028 01ff  Dell Precision M4300
+               103c 2802  HP Compaq dc7700p
+               103c 30c0  Compaq 6710b
+               103c 30c1  Compaq 6910p
+               1043 1339  Asus M51S series
+               1043 81ec  P5B
+               104d 9005  Vaio VGN-FZ260E
+               104d 9016  Sony VAIO VGN-AR51M
+               14f1 5051  Presario C700
+               17aa 20ac  ThinkPad T61
+               8384 7616  Dell Vostro 1400
+       284f  82801H (ICH8 Family) Thermal Reporting Device
+       2850  82801HBM/HEM (ICH8M/ICH8M-E) IDE Controller
+               1025 0121  Aspire 5920G
+               1028 01f3  Inspiron 1420
+               103c 30c0  Compaq 6710b
+               103c 30c1  Compaq 6910p
+               103c 30d9  Presario C700
+               104d 9005  Vaio VGN-FZ260E
+               17aa 20a6  ThinkPad T61
+               e4bf cc47  CCG-RUMBA
+       2912  82801IH (ICH9DH) LPC Interface Controller
+       2914  82801IO (ICH9DO) LPC Interface Controller
+               1028 0211  Optiplex 755
+       2916  82801IR (ICH9R) LPC Interface Controller
+       2917  ICH9M-E LPC Interface Controller
+       2918  82801IB (ICH9) LPC Interface Controller
+       2919  ICH9M LPC Interface Controller
+       2920  82801IR/IO/IH (ICH9R/DO/DH) 4 port SATA IDE Controller
+               1028 020f  PowerEdge R300 onboard SATA Controller
+               1028 0210  PowerEdge T300 onboard SATA Controller
+               1028 0211  Optiplex 755
+               1028 023c  PowerEdge R200 onboard SATA Controller
+       2921  82801IB (ICH9) 2 port SATA IDE Controller
+       2922  82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA AHCI Controller
+       2923  82801IB (ICH9) 4 port SATA AHCI Controller
+       2925  82801IR/IO (ICH9R/DO) SATA RAID Controller
+               1734 10e0  System Board D2542
+               8086 2925  System Board D2542
+       2926  82801I (ICH9 Family) 2 port SATA IDE Controller
+               1028 020f  Dell PowerEdge R300
+               1028 0210  Dell PowerEdge R300
+               1028 0211  Optiplex 755
+       2928  ICH9M/M-E 2 port SATA IDE Controller
+       2929  ICH9M/M-E SATA AHCI Controller
+       292c  ICH9M-E SATA RAID Controller
+       292d  ICH9M/M-E 2 port SATA IDE Controller
+       292e  ICH9M SATA IDE Controller
+       2930  82801I (ICH9 Family) SMBus Controller
+               1028 0211  Optiplex 755
+       2932  82801I (ICH9 Family) Thermal Subsystem
+       2934  82801I (ICH9 Family) USB UHCI Controller #1
+               1028 020f  PowerEdge R300 onboard UHCI
+               1028 0210  PowerEdge T300 onboard UHCI
+               1028 0211  Optiplex 755
+               1028 2011  Optiplex 755
+       2935  82801I (ICH9 Family) USB UHCI Controller #2
+               1028 020f  PowerEdge R300 onboard UHCI
+               1028 0210  PowerEdge T300 onboard UHCI
+               1028 0211  Optiplex 755
+       2936  82801I (ICH9 Family) USB UHCI Controller #3
+               1028 020f  PowerEdge R300 onboard UHCI
+               1028 0210  PowerEdge T300 onboard UHCI
+               1028 0211  Optiplex 755
+       2937  82801I (ICH9 Family) USB UHCI Controller #4
+               1028 0211  Optiplex 755
+               1028 2011  Optiplex 755
+               8086 2937  Optiplex 755
+               8086 2942  828011 (ICH9 Family ) USB UHCI Controller
+       2938  82801I (ICH9 Family) USB UHCI Controller #5
+               1028 0211  Optiplex 755
+               8086 2938  Optiplex 755
+       2939  82801I (ICH9 Family) USB UHCI Controller #6
+               1028 0210  PowerEdge T300
+       293a  82801I (ICH9 Family) USB2 EHCI Controller #1
+               1028 020f  PowerEdge R300 onboard EHCI
+               1028 0210  PowerEdge T300 onboard EHCI
+               1028 0211  Optiplex 755
+       293c  82801I (ICH9 Family) USB2 EHCI Controller #2
+               1028 0211  Optiplex 755
+               8086 293c  Optiplex 755
+       293e  82801I (ICH9 Family) HD Audio Controller
+               1028 0211  Optiplex 755
+               8086 293e  Optiplex 755
+               8086 2940  Optiplex 755
+       2940  82801I (ICH9 Family) PCI Express Port 1
+               1028 0211  Optiplex 755
+               8086 2940  Optiplex 755
+       2942  82801I (ICH9 Family) PCI Express Port 2
+       2944  82801I (ICH9 Family) PCI Express Port 3
+       2946  82801I (ICH9 Family) PCI Express Port 4
+       2948  82801I (ICH9 Family) PCI Express Port 5
+       294a  82801I (ICH9 Family) PCI Express Port 6
+       294c  82566DC-2 Gigabit Network Connection
+               17aa 302e  82566DM-2 Gigabit Network Connection
+       2970  82946GZ/PL/GL Memory Controller Hub
+       2971  82946GZ/PL/GL PCI Express Root Port
+       2972  82946GZ/GL Integrated Graphics Controller
+       2973  82946GZ/GL Integrated Graphics Controller
+       2974  82946GZ/GL HECI Controller
+       2975  82946GZ/GL HECI Controller
+       2976  82946GZ/GL PT IDER Controller
+       2977  82946GZ/GL KT Controller
+       2980  82G35 Express DRAM Controller
+       2981  82G35 Express PCI Express Root Port
+       2982  82G35 Express Integrated Graphics Controller
+       2983  82G35 Express Integrated Graphics Controller
+       2984  82G35 Express HECI Controller
+       2990  82Q963/Q965 Memory Controller Hub
+               1028 01da  OptiPlex 745
+       2991  82Q963/Q965 PCI Express Root Port
+       2992  82Q963/Q965 Integrated Graphics Controller
+       2993  82Q963/Q965 Integrated Graphics Controller
+       2994  82Q963/Q965 HECI Controller
+       2995  82Q963/Q965 HECI Controller
+       2996  82Q963/Q965 PT IDER Controller
+       2997  82Q963/Q965 KT Controller
+       29a0  82P965/G965 Memory Controller Hub
+               1043 81ea  P5B
+               1462 7276  MS-7276 [G965MDH]
+       29a1  82P965/G965 PCI Express Root Port
+       29a2  82G965 Integrated Graphics Controller
+               1462 7276  MS-7276 [G965MDH]
+       29a3  82G965 Integrated Graphics Controller
+       29a4  82P965/G965 HECI Controller
+       29a5  82P965/G965 HECI Controller
+       29a6  82P965/G965 PT IDER Controller
+       29a7  82P965/G965 KT Controller
+       29b0  82Q35 Express DRAM Controller
+               1028 0211  OptiPlex 755
+       29b1  82Q35 Express PCI Express Root Port
+               1028 0211  OptiPlex 755
+       29b2  82Q35 Express Integrated Graphics Controller
+               1028 0211  OptiPlex 755
+       29b3  82Q35 Express Integrated Graphics Controller
+               1028 0211  OptiPlex 755
+       29b4  82Q35 Express MEI Controller
+               1028 0211  OptiPlex 755
+       29b5  82Q35 Express MEI Controller
+       29b6  82Q35 Express PT IDER Controller
+               1028 0211  OptiPlex 755
+       29b7  82Q35 Express Serial KT Controller
+               1028 0211  OptiPlex 755
+       29c0  82G33/G31/P35/P31 Express DRAM Controller
+               1043 82b0  P5KPL-VM Motherboard
+       29c1  82G33/G31/P35/P31 Express PCI Express Root Port
+       29c2  82G33/G31 Express Integrated Graphics Controller
+               1043 82b0  P5KPL-VM Motherboard
+       29c3  82G33/G31 Express Integrated Graphics Controller
+               1043 82b0  P5KPL-VM Motherboard
+       29c4  82G33/G31/P35/P31 Express MEI Controller
+       29c5  82G33/G31/P35/P31 Express MEI Controller
+       29c6  82G33/G31/P35/P31 Express PT IDER Controller
+       29c7  82G33/G31/P35/P31 Express Serial KT Controller
+       29cf  Virtual HECI Controller
+       29d0  82Q33 Express DRAM Controller
+       29d1  82Q33 Express PCI Express Root Port
+       29d2  82Q33 Express Integrated Graphics Controller
+       29d3  82Q33 Express Integrated Graphics Controller
+       29d4  82Q33 Express MEI Controller
+       29d5  82Q33 Express MEI Controller
+       29d6  82Q33 Express PT IDER Controller
+       29d7  82Q33 Express Serial KT Controller
+       29e0  82X38/X48 Express DRAM Controller
+       29e1  82X38/X48 Express Host-Primary PCI Express Bridge
+       29e4  82X38/X48 Express MEI Controller
+       29e5  82X38/X48 Express MEI Controller
+       29e6  82X38/X48 Express PT IDER Controller
+       29e7  82X38/X48 Express Serial KT Controller
+       29e9  82X38/X48 Express Host-Secondary PCI Express Bridge
+       29f0  3200/3210 Chipset DRAM Controller
+       29f1  3200/3210 Chipset Host-Primary PCI Express Bridge
+       29f4  3200/3210 Chipset MEI Controller
+       29f5  3200/3210 Chipset MEI Controller
+       29f6  3200/3210 Chipset PT IDER Controller
+       29f7  3200/3210 Chipset Serial KT Controller
+       29f9  3210 Chipset Host-Secondary PCI Express Bridge
+       2a00  Mobile PM965/GM965/GL960 Memory Controller Hub
+               1025 0121  Acer Aspire 5920G
+               1028 01f3  Inspiron 1420
+               103c 30c0  Compaq 6710b
+               103c 30c1  Compaq 6910p
+               103c 30d9  Presario C700
+               104d 9005  Vaio VGN-FZ260E
+               17aa 20b1  ThinkPad T61
+               17aa 20b3  T61
+               e4bf cc47  CCG-RUMBA
+       2a01  Mobile PM965/GM965/GL960 PCI Express Root Port
+       2a02  Mobile GM965/GL960 Integrated Graphics Controller
+               1028 01f3  Inspiron 1420
+               1028 01f9  Latitude D630
+               103c 30c0  Compaq 6710b
+               103c 30d9  Presario C700
+               17aa 20b5  T61
+               e4bf cc47  CCG-RUMBA
+       2a03  Mobile GM965/GL960 Integrated Graphics Controller
+               1028 01f3  Dell Inspiron 1420
+               103c 30c0  Compaq 6710b
+               103c 30d9  Presario C700
+               17aa 20b5  T61
+               e4bf cc47  CCG-RUMBA
+       2a04  Mobile PM965/GM965 MEI Controller
+               103c 30c1  Compaq 6910p
+       2a05  Mobile PM965/GM965 MEI Controller
+       2a06  Mobile PM965/GM965 PT IDER Controller
+               103c 30c1  Compaq 6910p
+       2a07  Mobile PM965/GM965 KT Controller
+               103c 30c1  Compaq 6910p
+       2a10  Mobile GME965/GLE960 Memory Controller Hub
+               e4bf cc47  CCG-RUMBA
+       2a11  Mobile GME965/GLE960 PCI Express Root Port
+       2a12  Mobile GME965/GLE960 Integrated Graphics Controller
+               e4bf cc47  CCG-RUMBA
+       2a13  Mobile GME965/GLE960 Integrated Graphics Controller
+               e4bf cc47  CCG-RUMBA
+       2a14  Mobile GME965/GLE960 MEI Controller
+       2a15  Mobile GME965/GLE960 MEI Controller
+       2a16  Mobile GME965/GLE960 PT IDER Controller
+       2a17  Mobile GME965/GLE960 KT Controller
+       2a40  Mobile 4 Series Chipset Memory Controller Hub
+       2a41  Mobile 4 Series Chipset PCI Express Graphics Port
+       2a42  Mobile 4 Series Chipset Integrated Graphics Controller
+       2a43  Mobile 4 Series Chipset Integrated Graphics Controller
+       2a44  Mobile 4 Series Chipset MEI Controller
+       2a45  Mobile 4 Series Chipset MEI Controller
+       2a46  Mobile 4 Series Chipset PT IDER Controller
+       2a47  Mobile 4 Series Chipset AMT SOL Redirection
+       2a50  Cantiga MEI Controller
+       2a51  Cantiga MEI Controller
+       2a52  Cantiga PT IDER Controller
+       2a53  Cantiga AMT SOL Redirection
+       2c01  QuickPath Architecture System Address Decoder
+       2c10  QPI Link 0
+       2c11  QPI Physical 0
+       2c14  QPI Link 1
+       2c15  QPI Physical 1
+       2c18  QuickPath Memory Controller
+       2c19  QuickPath Memory Controller Target Address Decoder
+       2c1a  QuickPath Memory Controller RAS Registers
+       2c1c  QuickPath Memory Controller Test Registers
+       2c20  QuickPath Memory Controller Channel 0 Control Registers
+       2c21  QuickPath Memory Controller Channel 0 Address Registers
+       2c22  QuickPath Memory Controller Channel 0 Rank Registers
+       2c23  QuickPath Memory Controller Channel 0 Thermal Control Registers
+       2c28  QuickPath Memory Controller Channel 1 Control Registers
+       2c29  QuickPath Memory Controller Channel 1 Address Registers
+       2c2a  QuickPath Memory Controller Channel 1 Rank Registers
+       2c2b  QuickPath Memory Controller Channel 1 Thermal Control Registers
+       2c30  QuickPath Memory Controller Channel 2 Control Registers
+       2c31  QuickPath Memory Controller Channel 2 Address Registers
+       2c32  QuickPath Memory Controller Channel 2 Rank Registers
+       2c33  QuickPath Memory Controller Channel 2 Thermal Control Registers
+       2c40  QuickPath Architecture Generic Non-Core Registers
+       2e00  4 Series Chipset DRAM Controller
+       2e01  4 Series Chipset PCI Express Root Port
+       2e02  4 Series Chipset Integrated Graphics Controller
+       2e03  4 Series Chipset Integrated Graphics Controller
+       2e04  4 Series Chipset HECI Controller
+       2e05  4 Series Chipset HECI Controller
+       2e06  4 Series Chipset PT IDER Controller
+       2e07  4 Series Chipset Serial KT Controller
+       2e10  4 Series Chipset DRAM Controller
+       2e11  4 Series Chipset PCI Express Root Port
+       2e12  4 Series Chipset Integrated Graphics Controller
+       2e13  4 Series Chipset Integrated Graphics Controller
+       2e14  4 Series Chipset HECI Controller
+       2e15  4 Series Chipset HECI Controller
+       2e16  4 Series Chipset PT IDER Controller
+       2e17  4 Series Chipset Serial KT Controller
+       2e20  4 Series Chipset DRAM Controller
+               1458 5000  GA-EP45-DS5 Motherboard
+       2e21  4 Series Chipset PCI Express Root Port
+               1458 5000  GA-EP45-DS5 Motherboard
+       2e22  4 Series Chipset Integrated Graphics Controller
+       2e23  4 Series Chipset Integrated Graphics Controller
+       2e24  4 Series Chipset HECI Controller
+       2e25  4 Series Chipset HECI Controller
+       2e26  4 Series Chipset PT IDER Controller
+       2e27  4 Series Chipset Serial KT Controller
+       2e29  4 Series Chipset PCI Express Root Port
+       2e30  4 Series Chipset DRAM Controller
+       2e31  4 Series Chipset PCI Express Root Port
+       2e32  4 Series Chipset Integrated Graphics Controller
+       2e33  4 Series Chipset Integrated Graphics Controller
+       2e34  4 Series Chipset HECI Controller
+       2e35  4 Series Chipset HECI Controller
+       2e36  4 Series Chipset PT IDER Controller
+       2e37  4 Series Chipset Serial KT Controller
+       2e40  4 Series Chipset DRAM Controller
+       2e41  4 Series Chipset PCI Express Root Port
+       2e42  4 Series Chipset Integrated Graphics Controller
+       2e43  4 Series Chipset Integrated Graphics Controller
+       2e44  4 Series Chipset HECI Controller
+       2e45  4 Series Chipset HECI Controller
+       2e46  4 Series Chipset PT IDER Controller
+       2e47  4 Series Chipset Serial KT Controller
+       3200  GD31244 PCI-X SATA HBA
+               1775 c200  C2K onboard SATA host bus adapter
+       3313  IOP348 I/O Processor (SL8e) in IOC Mode SAS/SATA
+       331b  IOP348 I/O Processor (SL8x) in IOC Mode SAS/SATA
+       3331  IOC340 I/O Controller (VV8e) SAS/SATA
+       3339  IOC340 I/O Controller (VV8x) SAS/SATA
+       3340  82855PM Processor to I/O Controller
+               1014 0529  Thinkpad T40 series
+               1025 005a  TravelMate 290
+               103c 088c  NC8000 laptop
+               103c 0890  NC6000 laptop
+               103c 08b0  tc1100 tablet
+               144d c005  X10 Laptop
+               144d c00c  P30/P35 notebook
+       3341  82855PM Processor to AGP Controller
+               144d c00c  P30 notebook
+       3363  IOC340 I/O Controller in IOC Mode SAS/SATA
+       33c3  IOP348 I/O Processor (SL8De) in IOC Mode SAS/SATA
+       33cb  IOP348 I/O Processor (SL8Dx) in IOC Mode SAS/SATA
+       3400  QuickPath Architecture I/O Hub to ESI Port
+       3401  QuickPath Architecture I/O Hub to ESI Port
+       3402  QuickPath Architecture I/O Hub to ESI Port
+       3403  QuickPath Architecture I/O Hub to ESI Port
+       3404  QuickPath Architecture I/O Hub to ESI Port
+       3405  QuickPath Architecture I/O Hub to ESI Port
+       3406  QuickPath Architecture I/O Hub to ESI Port
+       3407  QuickPath Architecture I/O Hub to ESI Port
+       3408  QuickPath Architecture I/O Hub PCI Express Root Port 1
+       3409  QuickPath Architecture I/O Hub PCI Express Root Port 2
+       340a  QuickPath Architecture I/O Hub PCI Express Root Port 3
+       340b  QuickPath Architecture I/O Hub PCI Express Root Port 4
+       340c  QuickPath Architecture I/O Hub PCI Express Root Port 5
+       340d  QuickPath Architecture I/O Hub PCI Express Root Port 6
+       340e  QuickPath Architecture I/O Hub PCI Express Root Port 7
+       340f  QuickPath Architecture I/O Hub PCI Express Root Port 8
+       3410  QuickPath Architecture I/O Hub PCI Express Root Port 9
+       3411  QuickPath Architecture I/O Hub PCI Express Root Port 10
+       3418  Quickpath Interconnect Physical Layer Port 0
+       3419  Quickpath Interconnect Physical Layer Port 1
+       3420  QuickPath Architecture I/O Hub PCI Express Root Port 0
+       3421  QuickPath Architecture I/O Hub PCI Express Root Port 0
+       3422  QuickPath Architecture I/O Hub GPIO and Scratch Pad Registers
+       3423  QuickPath Architecture I/O Hub Control Status and RAS Registers
+       3425  QuickPath Interconnect Physical and Link Layer Registers Port 0
+       3426  QuickPath Interconnect Routing and Protocol Layer Registers Port 0
+       3427  QuickPath Interconnect Physical and Link Layer Registers Port 1
+       3428  QuickPath Interconnect Routing and Protocol Layer Registers Port 1
+       3429  DMA Engine
+       342a  DMA Engine
+       342b  DMA Engine
+       342c  DMA Engine
+       342d  QuickPath Architecture I/O Hub I/OxAPIC Interrupt Controller
+       342e  QuickPath Architecture I/O Hub System Management Registers
+       342f  Trusted Execution Technology Registers
+       3430  DMA Engine
+       3431  DMA Engine
+       3432  DMA Engine
+       3433  DMA Engine
+       3438  QuickPath Architecture I/O Hub Throttle Registers
+       3500  6311ESB/6321ESB PCI Express Upstream Port
+       3501  6310ESB PCI Express Upstream Port
+       3504  6311ESB/6321ESB I/OxAPIC Interrupt Controller
+       3505  6310ESB I/OxAPIC Interrupt Controller
+       350c  6311ESB/6321ESB PCI Express to PCI-X Bridge
+       350d  6310ESB PCI Express to PCI-X Bridge
+       3510  6311ESB/6321ESB PCI Express Downstream Port E1
+       3511  6310ESB PCI Express Downstream Port E1
+       3514  6311ESB/6321ESB PCI Express Downstream Port E2
+       3515  6310ESB PCI Express Downstream Port E2
+       3518  6311ESB/6321ESB PCI Express Downstream Port E3
+       3519  6310ESB PCI Express Downstream Port E3
+       3575  82830 830 Chipset Host Bridge
+               0e11 0030  Evo N600c
+               1014 021d  ThinkPad A/T/X Series
+               104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
+       3576  82830 830 Chipset AGP Bridge
+       3577  82830 CGC [Chipset Graphics Controller]
+               1014 0513  ThinkPad A/T/X Series
+       3578  82830 830 Chipset Host Bridge
+       3580  82852/82855 GM/GME/PM/GMV Processor to I/O Controller
+               1014 055c  ThinkPad R50e
+               1028 0139  Latitude D400
+               1028 014f  Latitude X300
+               1028 0163  Latitude D505
+               1028 018d  Inspiron 700m/710m
+               1028 0196  Inspiron 5160
+               114a 0582  PC8
+               1734 1055  Amilo M1420
+               1775 10d0  V5D Single Board Computer
+               1775 ce90  CE9
+               4c53 10b0  CL9 mainboard
+               4c53 10e0  PSL09 PrPMC
+               e4bf 0cc9  CC9-SAMBA
+               e4bf 0cd2  CD2-BEBOP
+       3581  82852/82855 GM/GME/PM/GMV Processor to AGP Controller
+               1734 1055  Amilo M1420
+       3582  82852/855GM Integrated Graphics Device
+               1014 0562  ThinkPad R50e
+               1028 0139  Latitude D400
+               1028 014f  Latitude X300
+               1028 0163  Latitude D505
+               1028 018d  Inspiron 700m/710m
+               114a 0582  PC8 integrated graphics
+               1775 10d0  V5D Single Board Computer VGA
+               1775 ce90  CE9
+               4c53 10b0  CL9 mainboard
+               4c53 10e0  PSL09 PrPMC
+               e4bf 0cc9  CC9-SAMBA
+               e4bf 0cd2  CD2-BEBOP
+       3584  82852/82855 GM/GME/PM/GMV Processor to I/O Controller
+               1014 055d  ThinkPad R50e
+               1028 0139  Latitude D400
+               1028 014f  Latitude X300
+               1028 0163  Latitude D505
+               1028 018d  Inspiron 700m/710m
+               1028 0196  Inspiron 5160
+               114a 0582  PC8
+               1734 1055  Amilo M1420
+               1775 10d0  V5D Single Board Computer
+               1775 ce90  CE9
+               4c53 10b0  CL9 mainboard
+               4c53 10e0  PSL09 PrPMC
+       3585  82852/82855 GM/GME/PM/GMV Processor to I/O Controller
+               1014 055e  ThinkPad R50e
+               1028 0139  Latitude D400
+               1028 014f  Latitude X300
+               1028 0163  Latitude D505
+               1028 018d  Inspiron 700m/710m
+               1028 0196  Inspiron 5160
+               114a 0582  PC8
+               1734 1055  Amilo M1420
+               1775 10d0  V5D Single Board Computer
+               1775 ce90  CE9
+               4c53 10b0  CL9 mainboard
+               4c53 10e0  PSL09 PrPMC
+       358c  82854 GMCH
+       358e  82854 GMCH Integrated Graphics Device
+       3590  E7520 Memory Controller Hub
+               1014 02dd  eServer xSeries server mainboard
+               1028 016c  PowerEdge 1850
+               1028 016d  PowerEdge 2850=20
+               1028 019a  PowerEdge SC1425
+               1734 103e  PRIMERGY RX/TX S2 series
+               1775 1100  CR11/VR11 Single Board Computer
+               4c53 10d0  Telum ASLP10 Processor AMC
+       3591  E7525/E7520 Error Reporting Registers
+               1014 02dd  eServer xSeries server mainboard
+               1028 0169  Precision 470
+               4c53 10d0  Telum ASLP10 Processor AMC
+       3592  E7320 Memory Controller Hub
+       3593  E7320 Error Reporting Registers
+       3594  E7520 DMA Controller
+               1775 1100  CR11/VR11 Single Board Computer
+               4c53 10d0  Telum ASLP10 Processor AMC
+       3595  E7525/E7520/E7320 PCI Express Port A
+               1775 1100  CR11/VR11 Single Board Computer
+       3596  E7525/E7520/E7320 PCI Express Port A1
+       3597  E7525/E7520 PCI Express Port B
+               1775 1100  CR11/VR11 Single Board Computer
+       3598  E7520 PCI Express Port B1
+               1775 1100  CR11/VR11 Single Board Computer
+       3599  E7520 PCI Express Port C
+               1775 1100  CR11/VR11 Single Board Computer
+       359a  E7520 PCI Express Port C1
+       359b  E7525/E7520/E7320 Extended Configuration Registers
+               1014 02dd  eServer xSeries server mainboard
+       359e  E7525 Memory Controller Hub
+               1028 0169  Precision 470
+       35b0  3100 Chipset Memory I/O Controller Hub
+       35b1  3100 DRAM Controller Error Reporting Registers
+       35b5  3100 Chipset Enhanced DMA Controller
+       35b6  3100 Chipset PCI Express Port A
+       35b7  3100 Chipset PCI Express Port A1
+       35c8  3100 Extended Configuration Test Overflow Registers
+       3600  7300 Chipset Memory Controller Hub
+       3604  7300 Chipset PCI Express Port 1
+       3605  7300 Chipset PCI Express Port 2
+       3606  7300 Chipset PCI Express Port 3
+       3607  7300 Chipset PCI Express Port 4
+       3608  7300 Chipset PCI Express Port 5
+       3609  7300 Chipset PCI Express Port 6
+       360a  7300 Chipset PCI Express Port 7
+       360b  7300 Chipset QuickData Technology Device
+       360c  7300 Chipset FSB Registers
+       360d  7300 Chipset Snoop Filter Registers
+       360e  7300 Chipset Debug and Miscellaneous Registers
+       360f  7300 Chipset FBD Branch 0 Registers
+       3610  7300 Chipset FBD Branch 1 Registers
+       3a00  ICH10 4 port SATA IDE Controller
+       3a02  ICH10 6 port SATA AHCI Controller
+       3a05  ICH10 SATA RAID Controller
+       3a06  ICH10 2 port SATA IDE Controller
+       3a14  ICH10 LPC Interface Controller
+       3a16  82801JIR (ICH10R) LPC Interface Controller
+               1458 5001  GA-EP45-DS5 Motherboard
+       3a18  82801JIB (ICH10) LPC Interface Controller
+       3a1a  ICH10 LPC Interface Controller
+       3a20  82801JI (ICH10 Family) 4 port SATA IDE Controller
+       3a22  82801JI (ICH10 Family) SATA AHCI Controller
+               1458 b005  GA-EP45-DS5 Motherboard
+       3a25  82801JIR (ICH10R) SATA RAID Controller
+       3a26  82801JI (ICH10 Family) 2 port SATA IDE Controller
+       3a30  82801JI (ICH10 Family) SMBus Controller
+               1458 5001  GA-EP45-DS5 Motherboard
+       3a32  82801JI (ICH10 Family) Thermal Subsystem
+       3a34  82801JI (ICH10 Family) USB UHCI Controller #1
+               1458 5004  GA-EP45-DS5 Motherboard
+       3a35  82801JI (ICH10 Family) USB UHCI Controller #2
+               1458 5004  GA-EP45-DS5 Motherboard
+       3a36  82801JI (ICH10 Family) USB UHCI Controller #3
+               1458 5004  GA-EP45-DS5 Motherboard
+       3a37  82801JI (ICH10 Family) USB UHCI Controller #4
+               1458 5004  GA-EP45-DS5 Motherboard
+       3a38  82801JI (ICH10 Family) USB UHCI Controller #5
+               1458 5004  GA-EP45-DS5 Motherboard
+       3a39  82801JI (ICH10 Family) USB UHCI Controller #6
+               1458 5004  GA-EP45-DS5 Motherboard
+       3a3a  82801JI (ICH10 Family) USB2 EHCI Controller #1
+               1458 5006  GA-EP45-DS5 Motherboard
+       3a3c  82801JI (ICH10 Family) USB2 EHCI Controller #2
+               1458 5006  GA-EP45-DS5 Motherboard
+       3a3e  82801JI (ICH10 Family) HD Audio Controller
+               1458 a102  GA-EP45-DS5 Motherboard
+       3a40  82801JI (ICH10 Family) PCI Express Port 1
+               1458 5001  GA-EP45-DS5 Motherboard
+       3a42  82801JI (ICH10 Family) PCI Express Port 2
+       3a44  82801JI (ICH10 Family) PCI Express Port 3
+       3a46  82801JI (ICH10 Family) PCI Express Port 4
+               1458 5001  GA-EP45-DS5 Motherboard
+       3a48  82801JI (ICH10 Family) PCI Express Port 5
+               1458 5001  GA-EP45-DS5 Motherboard
+       3a4a  82801JI (ICH10 Family) PCI Express Port 6
+               1458 5001  GA-EP45-DS5 Motherboard
+       3a4c  82801JI (ICH10 Family) Gigabit Ethernet Controller
+       3a51  ICH10 VECI Controller
+       3a55  ICH10 Virtual SATA Controller
+       3a60  ICH10 SMBus Controller
+       3a62  ICH10 Thermal Subsystem
+       3a64  ICH10 USB UHCI Controller #1
+       3a65  ICH10 USB UHCI Controller #2
+       3a66  ICH10 USB UHCI Controller #3
+       3a67  ICH10 USB UHCI Controller #4
+       3a68  ICH10 USB UHCI Controller #5
+       3a69  ICH10 USB UHCI Controller #6
+       3a6a  ICH10 USB2 EHCI Controller #1
+       3a6c  ICH10 USB2 EHCI Controller #2
+       3a6e  ICH10 HD Audio Controller
+       3a70  ICH10 PCI Express Port 1
+       3a72  ICH10 PCI Express Port 2
+       3a74  ICH10 PCI Express Port 3
+       3a76  ICH10 PCI Express Port 4
+       3a78  ICH10 PCI Express Port 5
+       3a7a  ICH10 PCI Express Port 6
+       3a7c  ICH10 Gigabit Ethernet Controller
+       3b00  Ibex Peak LPC Interface Controller
+       3b01  Ibex Peak LPC Interface Controller
+       3b02  Ibex Peak LPC Interface Controller
+       3b03  Ibex Peak LPC Interface Controller
+       3b04  Ibex Peak LPC Interface Controller
+       3b05  Ibex Peak LPC Interface Controller
+       3b06  Ibex Peak LPC Interface Controller
+       3b07  Ibex Peak LPC Interface Controller
+       3b08  Ibex Peak LPC Interface Controller
+       3b09  Ibex Peak LPC Interface Controller
+       3b0a  Ibex Peak LPC Interface Controller
+       3b0b  Ibex Peak LPC Interface Controller
+       3b0c  Ibex Peak LPC Interface Controller
+       3b0d  Ibex Peak LPC Interface Controller
+       3b0e  Ibex Peak LPC Interface Controller
+       3b0f  Ibex Peak LPC Interface Controller
+       3b10  Ibex Peak LPC Interface Controller
+       3b11  Ibex Peak LPC Interface Controller
+       3b12  Ibex Peak LPC Interface Controller
+       3b13  Ibex Peak LPC Interface Controller
+       3b14  Ibex Peak LPC Interface Controller
+       3b15  Ibex Peak LPC Interface Controller
+       3b16  Ibex Peak LPC Interface Controller
+       3b17  Ibex Peak LPC Interface Controller
+       3b18  Ibex Peak LPC Interface Controller
+       3b19  Ibex Peak LPC Interface Controller
+       3b1a  Ibex Peak LPC Interface Controller
+       3b1b  Ibex Peak LPC Interface Controller
+       3b1c  Ibex Peak LPC Interface Controller
+       3b1d  Ibex Peak LPC Interface Controller
+       3b1e  Ibex Peak LPC Interface Controller
+       3b1f  Ibex Peak LPC Interface Controller
+       3b20  Ibex Peak 4 port SATA IDE Controller
+       3b21  Ibex Peak 2 port SATA IDE Controller
+       3b22  Ibex Peak 6 port SATA AHCI Controller
+       3b23  Ibex Peak 4 port SATA AHCI Controller
+       3b24  Ibex Peak SATA Enhanced RAID Controller
+       3b25  Ibex Peak SATA RAID Controller
+       3b26  Ibex Peak 2 port SATA IDE Controller
+       3b28  Ibex Peak 4 port SATA IDE Controller
+       3b29  Ibex Peak 4 port SATA AHCI Controller
+       3b2b  Ibex Peak SATA Enhanced RAID Controller
+       3b2c  Ibex Peak SATA RAID Controller
+       3b2d  Ibex Peak 2 port SATA IDE Controller
+       3b2e  Ibex Peak 4 port SATA IDE Controller
+       3b2f  Ibex Peak 6 port SATA AHCI Controller
+       3b30  Ibex Peak SMBus Controller
+       3b32  Ibex Peak Thermal Subsystem
+       3b34  Ibex Peak USB2 Enhanced Host Controller
+       3b36  Ibex Peak USB Universal Host Controller
+       3b37  Ibex Peak USB Universal Host Controller
+       3b38  Ibex Peak USB Universal Host Controller
+       3b39  Ibex Peak USB Universal Host Controller
+       3b3a  Ibex Peak USB Universal Host Controller
+       3b3b  Ibex Peak USB Universal Host Controller
+       3b3c  Ibex Peak USB2 Enhanced Host Controller
+       3b3e  Ibex Peak USB Universal Host Controller
+       3b3f  Ibex Peak USB Universal Host Controller
+       3b40  Ibex Peak USB Universal Host Controller
+       3b41  Ibex Peak LAN Controller
+       3b42  Ibex Peak PCI Express Root Port 1
+       3b44  Ibex Peak PCI Express Root Port 2
+       3b46  Ibex Peak PCI Express Root Port 3
+       3b48  Ibex Peak PCI Express Root Port 4
+       3b4a  Ibex Peak PCI Express Root Port 5
+       3b4c  Ibex Peak PCI Express Root Port 6
+       3b4e  Ibex Peak PCI Express Root Port 7
+       3b50  Ibex Peak PCI Express Root Port 8
+       3b53  Ibex Peak VECI Controller
+       3b56  Ibex Peak High Definition Audio
+       3b64  Ibex Peak HECI Controller
+       3b65  Ibex Peak HECI Controller
+       3b66  Ibex Peak PT IDER Controller
+       3b67  Ibex Peak KT Controller
+       4000  5400 Chipset Memory Controller Hub
+       4001  5400 Chipset Memory Controller Hub
+       4003  5400 Chipset Memory Controller Hub
+       4021  5400 Chipset PCI Express Port 1
+       4022  5400 Chipset PCI Express Port 2
+       4023  5400 Chipset PCI Express Port 3
+       4024  5400 Chipset PCI Express Port 4
+       4025  5400 Chipset PCI Express Port 5
+       4026  5400 Chipset PCI Express Port 6
+       4027  5400 Chipset PCI Express Port 7
+       4028  5400 Chipset PCI Express Port 8
+       4029  5400 Chipset PCI Express Port 9
+       402d  5400 Chipset IBIST Registers
+       402e  5400 Chipset IBIST Registers
+       402f  5400 Chipset QuickData Technology Device
+       4030  5400 Chipset FSB Registers
+       4031  5400 Chipset CE/SF Registers
+       4032  5400 Chipset IOxAPIC
+       4035  5400 Chipset FBD Registers
+       4036  5400 Chipset FBD Registers
+       4220  PRO/Wireless 2200BG [Calexico2] Network Connection
+               103c 0934  Compaq nw8240/nx8220
+               103c 12f6  Compaq nw8240/nx8220
+               8086 2712  IBM ThinkPad R50e
+               8086 2721  Dell B130 laptop integrated WLAN
+               8086 2722  Dell Latitude D600
+               8086 2731  Samsung P35 integrated WLAN
+       4222  PRO/Wireless 3945ABG [Golan] Network Connection
+               103c 135c  Compaq 6710b
+               103c 30c0  Compaq 6710b
+               8086 1000  PRO/Wireless 3945ABG Network Connection
+               8086 1001  PRO/Wireless 3945ABG Network Connection
+               8086 1005  PRO/Wireless 3945BG Network Connection
+               8086 1034  PRO/Wireless 3945BG Network Connection
+               8086 1044  PRO/Wireless 3945BG Network Connection
+               8086 1c00  PRO/Wireless 3945ABG Network Connection
+       4223  PRO/Wireless 2915ABG [Calexico2] Network Connection
+               1000 8086  mPCI 3B Americas/Europe ZZA
+               1001 8086  mPCI 3B Europe ZZE
+               1002 8086  mPCI 3B Japan ZZJ
+               1003 8086  mPCI 3B High-Band ZZH
+               1351 103c  Compaq NC6220
+       4224  PRO/Wireless 2915ABG [Calexico2] Network Connection
+       4227  PRO/Wireless 3945ABG [Golan] Network Connection
+               8086 1011  ThinkPad R60e/X60s
+               8086 1014  PRO/Wireless 3945BG Network Connection
+       4229  PRO/Wireless 4965 AG or AGN [Kedron] Network Connection
+       4230  PRO/Wireless 4965 AG or AGN [Kedron] Network Connection
+               8086 1110  Lenovo ThinkPad T51
+               8086 1111  Lenovo ThinkPad T61
+       4232  Wireless WiFi Link 5100
+               8086 1205  PRO/Wireless 5100BG Network Connection
+               8086 1206  PRO/Wireless 5100ABG Network Connection
+               8086 1216  PRO/Wireless 5100ABG Network Connection
+               8086 1305  PRO/Wireless 5100BG Network Connection
+               8086 1306  PRO/Wireless 5100ABG Network Connection
+               8086 1326  PRO/Wireless 5100ABG Network Connection
+       4235  PRO/Wireless 5300 AGN [Shiloh] Network Connection
+       4236  Wireless WiFi Link 5100
+       4237  PRO/Wireless 5100 AGN [Shiloh] Network Connection
+       423a  PRO/Wireless 5350 AGN [Echo Peak] Network Connection
+       444e  Turbo Memory Controller
+       5001  LE80578
+       5002  LE80578 Graphics Processor Unit
+       5009  LE80578 Video Display Controller
+       500d  LE80578 Expansion Bus
+       500e  LE80578 UART Controller
+       500f  LE80578 General Purpose IO
+       5010  LE80578 I2C Controller
+       5012  LE80578 Serial Peripheral Interface Bus
+       5020  EP80579 Memory Controller Hub
+       5021  EP80579 DRAM Error Reporting Registers
+       5023  EP80579 EDMA Controller
+       5024  EP80579 PCI Express Port PEA0
+       5025  EP80579 PCI Express Port PEA1
+       5028  EP80579 S-ATA IDE
+       5029  EP80579 S-ATA AHCI
+       502a  EP80579 S-ATA Reserved
+       502b  EP80579 S-ATA Reserved
+       502c  EP80579 Integrated Processor ASU
+       502d  EP80579 Integrated Processor with QuickAssist ASU
+       502e  EP80579 Reserved
+       502f  EP80579 Reserved
+       5030  EP80579 Reserved
+       5031  EP80579 LPC Bus
+       5032  EP80579 SMBus Controller
+       5033  EP80579 USB 1.1 Controller
+       5035  EP80579 USB 2.0 Controller
+       5037  EP80579 PCI-PCI Bridge (transparent mode)
+       5039  EP80579 Controller Area Network (CAN) interface #1
+       503a  EP80579 Controller Area Network (CAN) interface #2
+       503b  EP80579 Synchronous Serial Port (SPP)
+       503c  EP80579 IEEE 1588 Hardware Assist
+       503d  EP80579 Local Expansion Bus
+       503e  EP80579 Global Control Unit (GCU)
+       503f  EP80579 Reserved
+       5040  EP80579 Integrated Processor Gigabit Ethernet MAC
+       5041  EP80579 Integrated Processor with QuickAssist Gigabit Ethernet MAC
+       5042  EP80579 Reserved
+       5043  EP80579 Reserved
+       5044  EP80579 Integrated Processor Gigabit Ethernet MAC
+       5045  EP80579 Integrated Processor with QuickAssist Gigabit Ethernet MAC
+       5046  EP80579 Reserved
+       5047  EP80579 Reserved
+       5048  EP80579 Integrated Processor Gigabit Ethernet MAC
+       5049  EP80579 Integrated Processor with QuickAssist Gigabit Ethernet MAC
+       504a  EP80579 Reserved
+       504b  EP80579 Reserved
+       504c  EP80579 Integrated Processor with QuickAssist TDM
+       5200  EtherExpress PRO/100 Intelligent Server
+       5201  EtherExpress PRO/100 Intelligent Server
+               8086 0001  EtherExpress PRO/100 Server Ethernet Adapter
+       530d  80310 (IOP) IO Processor
+       65c0  5100 Chipset Memory Controller Hub
+       65e2  5100 Chipset PCI Express x4 Port 2
+       65e3  5100 Chipset PCI Express x4 Port 3
+       65e4  5100 Chipset PCI Express x4 Port 4
+       65e5  5100 Chipset PCI Express x4 Port 5
+       65e6  5100 Chipset PCI Express x4 Port 6
+       65e7  5100 Chipset PCI Express x4 Port 7
+       65f0  5100 Chipset FSB Registers
+               1028 020f  PowerEdge R300
+               1028 0210  PowerEdge T300
+       65f1  5100 Chipset Reserved Registers
+               1028 0210  PowerEdge T300
+       65f3  5100 Chipset Reserved Registers
+       65f5  5100 Chipset DDR Channel 0 Registers
+       65f6  5100 Chipset DDR Channel 1 Registers
+       65f7  5100 Chipset PCI Express x8 Port 2-3
+       65f8  5100 Chipset PCI Express x8 Port 4-5
+       65f9  5100 Chipset PCI Express x8 Port 6-7
+       65fa  5100 Chipset PCI Express x16 Port 4-7
+       65ff  5100 Chipset DMA Engine
+       7000  82371SB PIIX3 ISA [Natoma/Triton II]
+       7010  82371SB PIIX3 IDE [Natoma/Triton II]
+       7020  82371SB PIIX3 USB [Natoma/Triton II]
+       7030  430VX - 82437VX TVX [Triton VX]
+       7050  Intercast Video Capture Card
+       7051  PB 642365-003 (Business Video Conferencing Card)
+       7100  430TX - 82439TX MTXC
+       7110  82371AB/EB/MB PIIX4 ISA
+               15ad 1976  Virtual Machine Chipset
+       7111  82371AB/EB/MB PIIX4 IDE
+               15ad 1976  Virtual Machine Chipset
+       7112  82371AB/EB/MB PIIX4 USB
+               15ad 1976  Virtual Machine Chipset
+       7113  82371AB/EB/MB PIIX4 ACPI
+               15ad 1976  Virtual Machine Chipset
+       7120  82810 GMCH (Graphics Memory Controller Hub)
+               4c53 1040  CL7 mainboard
+               4c53 1060  PC7 mainboard
+       7121  82810 (CGC) Chipset Graphics Controller
+               4c53 1040  CL7 mainboard
+               4c53 1060  PC7 mainboard
+               8086 4341  Cayman (CA810) Mainboard
+       7122  82810 DC-100 (GMCH) Graphics Memory Controller Hub
+       7123  82810 DC-100 (CGC) Chipset Graphics Controller
+       7124  82810E DC-133 (GMCH) Graphics Memory Controller Hub
+               1028 00b4  OptiPlex GX110
+       7125  82810E DC-133 (CGC) Chipset Graphics Controller
+               1028 00b4  OptiPlex GX110
+       7126  82810 DC-133 System and Graphics Controller
+       7128  82810-M DC-100 System and Graphics Controller
+       712a  82810-M DC-133 System and Graphics Controller
+       7180  440LX/EX - 82443LX/EX Host bridge
+       7181  440LX/EX - 82443LX/EX AGP bridge
+       7190  440BX/ZX/DX - 82443BX/ZX/DX Host bridge
+               0e11 0500  Armada 1750 Laptop System Chipset
+               0e11 b110  Armada M700/E500
+               1028 008e  PowerEdge 1300 mainboard
+               1043 803b  CUBX-L/E Mainboard
+               1179 0001  Toshiba Tecra 8100 Laptop System Chipset
+               15ad 1976  Virtual Machine Chipset
+               4c53 1050  CT7 mainboard
+               4c53 1051  CE7 mainboard
+       7191  440BX/ZX/DX - 82443BX/ZX/DX AGP bridge
+               1028 008e  PowerEdge 1300 mainboard
+       7192  440BX/ZX/DX - 82443BX/ZX/DX Host bridge (AGP disabled)
+               0e11 0460  Armada 1700 Laptop System Chipset
+               1179 0001  Satellite 4010
+               4c53 1000  CC7/CR7/CP7/VC7/VP7/VR7 mainboard
+               8086 7190  Dell PowerEdge 350
+       7194  82440MX Host Bridge
+               1033 0000  Versa Note Vxi
+               4c53 10a0  CA3/CR3 mainboard
+       7195  82440MX AC'97 Audio Controller
+               1033 80cc  Versa Note VXi
+               10cf 1099  QSound_SigmaTel Stac97 PCI Audio
+               11d4 0040  SoundMAX Integrated Digital Audio
+               11d4 0048  SoundMAX Integrated Digital Audio
+       7196  82440MX AC'97 Modem Controller
+       7198  82440MX ISA Bridge
+       7199  82440MX EIDE Controller
+       719a  82440MX USB Universal Host Controller
+       719b  82440MX Power Management Controller
+       71a0  440GX - 82443GX Host bridge
+               4c53 1050  CT7 mainboard
+               4c53 1051  CE7 mainboard
+       71a1  440GX - 82443GX AGP bridge
+       71a2  440GX - 82443GX Host bridge (AGP disabled)
+               4c53 1000  CC7/CR7/CP7/VC7/VP7/VR7 mainboard
+       7600  82372FB PIIX5 ISA
+       7601  82372FB PIIX5 IDE
+       7602  82372FB PIIX5 USB
+       7603  82372FB PIIX5 SMBus
+       7800  82740 (i740) AGP Graphics Accelerator
+               003d 0008  Starfighter AGP
+               003d 000b  Starfighter AGP
+               1092 0100  Stealth II G460
+               10b4 201a  Lightspeed 740
+               10b4 202f  Lightspeed 740
+               8086 0000  Terminator 2x/i
+               8086 0100  Intel740 Graphics Accelerator
+       8002  Trusted Execution Technology Registers
+       8003  Trusted Execution Technology Registers
+       8100  System Controller Hub (SCH Poulsbo)
+       8108  System Controller Hub (SCH Poulsbo) Graphics Controller
+       8110  System Controller Hub (SCH Poulsbo) PCI Express Port 1
+       8112  System Controller Hub (SCH Poulsbo) PCI Express Port 2
+       8114  System Controller Hub (SCH Poulsbo) USB UHCI #1
+       8115  System Controller Hub (SCH Poulsbo) USB UHCI #2
+       8116  System Controller Hub (SCH Poulsbo) USB UHCI #3
+       8117  System Controller Hub (SCH Poulsbo) USB EHCI #1
+       8118  System Controller Hub (SCH Poulsbo) USB Client Controller
+       8119  System Controller Hub (SCH Poulsbo) LPC Bridge
+       811a  System Controller Hub (SCH Poulsbo) IDE Controller
+       811b  System Controller Hub (SCH Poulsbo) HD Audio Controller
+       811c  System Controller Hub (SCH Poulsbo) SDIO Controller #1
+       811d  System Controller Hub (SCH Poulsbo) SDIO Controller #2
+       811e  System Controller Hub (SCH Poulsbo) SDIO Controller #3
+       84c4  450KX/GX [Orion] - 82454KX/GX PCI bridge
+       84c5  450KX/GX [Orion] - 82453KX/GX Memory controller
+       84ca  450NX - 82451NX Memory & I/O Controller
+       84cb  450NX - 82454NX/84460GX PCI Expander Bridge
+       84e0  460GX - 84460GX System Address Controller (SAC)
+       84e1  460GX - 84460GX System Data Controller (SDC)
+       84e2  460GX - 84460GX AGP Bridge (GXB function 2)
+       84e3  460GX - 84460GX Memory Address Controller (MAC)
+       84e4  460GX - 84460GX Memory Data Controller (MDC)
+       84e6  460GX - 82466GX Wide and fast PCI eXpander Bridge (WXB)
+       84ea  460GX - 84460GX AGP Bridge (GXB function 1)
+       8500  IXP4XX Network Processor (IXP420/421/422/425/IXC1100)
+               1993 0ded  mGuard-PCI AV#2
+               1993 0dee  mGuard-PCI AV#1
+               1993 0def  mGuard-PCI AV#0
+       9000  IXP2000 Family Network Processor
+       9001  IXP2400 Network Processor
+       9002  IXP2300 Network Processor
+       9004  IXP2800 Network Processor
+       9621  Integrated RAID
+       9622  Integrated RAID
+       9641  Integrated RAID
+       96a1  Integrated RAID
+       a620  6400/6402 Advanced Memory Buffer (AMB)
+       b152  21152 PCI-to-PCI Bridge
+               8086 b152  21152 PCI-to-PCI Bridge
+# observed, and documented in Intel revision note; new mask of 1011:0026
+       b154  21154 PCI-to-PCI Bridge
+       b555  21555 Non transparent PCI-to-PCI Bridge
+               12c7 5005  SS7HD PCI Adaptor Card
+               12c7 5006  SS7HDC cPCI Adaptor Card
+               12d9 000a  PCI VoIP Gateway
+               4c53 1050  CT7 mainboard
+               4c53 1051  CE7 mainboard
+               e4bf 1000  CC8-1-BLUES
+       d130  Clarksfield/Lynnfield DMI
+       d131  Clarksfield/Lynnfield DMI
+       d132  Clarksfield/Lynnfield DMI
+       d133  Clarksfield/Lynnfield DMI
+       d134  Clarksfield/Lynnfield DMI
+       d135  Clarksfield/Lynnfield DMI
+       d136  Clarksfield/Lynnfield DMI
+       d137  Clarksfield/Lynnfield DMI
+       d138  Clarksfield/Lynnfield PCI Express Root Port 1
+       d139  Lynnfield PCI Express Root Port 2
+       d13a  Clarksfield/Lynnfield PCI Express Root Port 3
+       d13b  Lynnfield PCI Express Root Port 4
+       d155  Clarksfield/Lynnfield System Management Registers
+       d156  Clarksfield/Lynnfield Semaphore and Scratchpad Registers
+       d157  Clarksfield/Lynnfield System Control and Status Registers
+       d158  Clarksfield/Lynnfield Miscellaneous Registers
+80ee  InnoTek Systemberatung GmbH
+       beef  VirtualBox Graphics Adapter
+       cafe  VirtualBox Guest Service
+8384  Sigmatel
+       7618  High Definition Audio Codec
+       7670  9770 High Definition Audio
+       7672  9772 High Definition Audio
+8401  TRENDware International Inc.
+8686  ScaleMP
+       1010  vSMPowered system controller [vSMP CTL]
+8800  Trigem Computer Inc.
+       2008  Video assistent component
+8866  T-Square Design Inc.
+8888  Silicon Magic
+8912  TRX
+# 8c4a is not Winbond but there is a board misprogrammed
+8c4a  Winbond
+       1980  W89C940 misprogrammed [ne2k]
+8e0e  Computone Corporation
+8e2e  KTI
+       3000  ET32P2
+9004  Adaptec
+       0078  AHA-2940U_CN
+       1078  AIC-7810
+       1160  AIC-1160 [Family Fibre Channel Adapter]
+       2178  AIC-7821
+       3860  AHA-2930CU
+       3b78  AHA-4844W/4844UW
+       5075  AIC-755x
+       5078  AHA-7850
+               9004 7850  AHA-2904/Integrated AIC-7850
+       5175  AIC-755x
+       5178  AIC-7851
+       5275  AIC-755x
+       5278  AIC-7852
+       5375  AIC-755x
+       5378  AIC-7850
+       5475  AIC-755x
+       5478  AIC-7850
+       5575  AVA-2930
+       5578  AIC-7855
+       5647  ANA-7711 TCP Offload Engine
+               9004 7710  ANA-7711F TCP Offload Engine - Optical
+               9004 7711  ANA-7711LP TCP Offload Engine - Copper
+       5675  AIC-755x
+       5678  AIC-7856
+       5775  AIC-755x
+       5778  AIC-7850
+       5800  AIC-5800
+       5900  ANA-5910/5930/5940 ATM155 & 25 LAN Adapter
+       5905  ANA-5910A/5930A/5940A ATM Adapter
+       6038  AIC-3860
+       6075  AIC-1480 / APA-1480
+               9004 7560  AIC-1480 / APA-1480 Cardbus
+       6078  AIC-7860
+       6178  AIC-7861
+               9004 7861  AHA-2940AU Single
+       6278  AIC-7860
+       6378  AIC-7860
+       6478  AIC-786x
+       6578  AIC-786x
+       6678  AIC-786x
+       6778  AIC-786x
+       6915  ANA620xx/ANA69011A
+               9004 0008  ANA69011A/TX 10/100
+               9004 0009  ANA69011A/TX 10/100
+               9004 0010  ANA62022 2-port 10/100
+               9004 0018  ANA62044 4-port 10/100
+               9004 0019  ANA62044 4-port 10/100
+               9004 0020  ANA62022 2-port 10/100
+               9004 0028  ANA69011A/TX 10/100
+               9004 8008  ANA69011A/TX 64 bit 10/100
+               9004 8009  ANA69011A/TX 64 bit 10/100
+               9004 8010  ANA62022 2-port 64 bit 10/100
+               9004 8018  ANA62044 4-port 64 bit 10/100
+               9004 8019  ANA62044 4-port 64 bit 10/100
+               9004 8020  ANA62022 2-port 64 bit 10/100
+               9004 8028  ANA69011A/TX 64 bit 10/100
+       7078  AHA-294x / AIC-7870
+       7178  AHA-2940/2940W / AIC-7871
+       7278  AHA-3940/3940W / AIC-7872
+       7378  AHA-3985 / AIC-7873
+       7478  AHA-2944/2944W / AIC-7874
+       7578  AHA-3944/3944W / AIC-7875
+       7678  AHA-4944W/UW / AIC-7876
+       7710  ANA-7711F Network Accelerator Card (NAC) - Optical
+       7711  ANA-7711C Network Accelerator Card (NAC) - Copper
+       7778  AIC-787x
+       7810  AIC-7810
+       7815  AIC-7815 RAID+Memory Controller IC
+               9004 7815  ARO-1130U2 RAID Controller
+               9004 7840  AIC-7815 RAID+Memory Controller IC
+       7850  AIC-7850
+       7855  AHA-2930
+       7860  AIC-7860
+       7870  AIC-7870
+       7871  AHA-2940
+       7872  AHA-3940
+       7873  AHA-3980
+       7874  AHA-2944
+       7880  AIC-7880P
+       7890  AIC-7890
+       7891  AIC-789x
+       7892  AIC-789x
+       7893  AIC-789x
+       7894  AIC-789x
+       7895  AHA-2940U/UW / AHA-39xx / AIC-7895
+               9004 7890  AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B
+               9004 7891  AHA-2940U/2940UW Dual
+               9004 7892  AHA-3940AU/AUW/AUWD/UWD
+               9004 7894  AHA-3944AUWD
+               9004 7895  AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B
+               9004 7896  AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B
+               9004 7897  AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B
+       7896  AIC-789x
+       7897  AIC-789x
+       8078  AIC-7880U
+               9004 7880  AIC-7880P Ultra/Ultra Wide SCSI Chipset
+       8178  AHA-2940U/UW/D / AIC-7881U
+               9004 7881  AHA-2940UW SCSI Host Adapter
+       8278  AHA-3940U/UW/UWD / AIC-7882U
+       8378  AHA-3940U/UW / AIC-7883U
+       8478  AHA-2944UW / AIC-7884U
+       8578  AHA-3944U/UWD / AIC-7885
+       8678  AHA-4944UW / AIC-7886
+       8778  AHA-2940UW Pro / AIC-788x
+               9004 7887  2940UW Pro Ultra-Wide SCSI Controller
+       8878  AHA-2930UW / AIC-7888
+               9004 7888  AHA-2930UW SCSI Controller
+       8b78  ABA-1030
+       ec78  AHA-4944W/UW
+9005  Adaptec
+       0010  AHA-2940U2/U2W
+               9005 2180  AHA-2940U2 SCSI Controller
+               9005 8100  AHA-2940U2B SCSI Controller
+               9005 a100  AHA-2940U2B SCSI Controller
+               9005 a180  AHA-2940U2W SCSI Controller
+               9005 e100  AHA-2950U2B SCSI Controller
+       0011  AHA-2930U2
+       0013  78902
+               9005 0003  AAA-131U2 Array1000 1 Channel RAID Controller
+               9005 000f  AIC7890_ARO
+       001f  AHA-2940U2/U2W / 7890/7891
+               9005 000f  2940U2W SCSI Controller
+               9005 a180  2940U2W SCSI Controller
+       0020  AIC-7890
+       002f  AIC-7890
+       0030  AIC-7890
+       003f  AIC-7890
+       0050  AHA-3940U2x/395U2x
+               9005 f500  AHA-3950U2B
+               9005 ffff  AHA-3950U2B
+       0051  AHA-3950U2D
+               9005 b500  AHA-3950U2D
+       0053  AIC-7896 SCSI Controller
+               9005 ffff  AIC-7896 SCSI Controller mainboard implementation
+       005f  AIC-7896U2/7897U2
+       0080  AIC-7892A U160/m
+               0e11 e2a0  Compaq 64-Bit/66MHz Wide Ultra3 SCSI Adapter
+               9005 6220  AHA-29160C
+               9005 62a0  29160N Ultra160 SCSI Controller
+               9005 e220  29160LP Low Profile Ultra160 SCSI Controller
+               9005 e2a0  29160 Ultra160 SCSI Controller
+       0081  AIC-7892B U160/m
+               9005 62a1  19160 Ultra160 SCSI Controller
+       0083  AIC-7892D U160/m
+       008f  AIC-7892P U160/m
+               1179 0001  Magnia Z310
+               15d9 9005  Onboard SCSI Host Adapter
+       0092  AVC-2010 [VideoH!]
+       0093  AVC-2410 [VideoH!]
+       00c0  AHA-3960D / AIC-7899A U160/m
+               0e11 f620  Compaq 64-Bit/66MHz Dual Channel Wide Ultra3 SCSI Adapter
+               9005 f620  AHA-3960D U160/m
+       00c1  AIC-7899B U160/m
+       00c3  AIC-7899D U160/m
+       00c5  RAID subsystem HBA
+               1028 00c5  PowerEdge 2400,2500,2550,4400
+       00cf  AIC-7899P U160/m
+               1028 00ce  PowerEdge 1400
+               1028 00d1  PowerEdge 2550
+               1028 00d9  PowerEdge 2500
+               10f1 2462  Thunder K7 S2462
+               15d9 9005  Onboard SCSI Host Adapter
+               8086 3411  SDS2 Mainboard
+       0241  Serial ATA II RAID 1420SA
+       0242  Serial ATA II RAID 1220SA
+       0243  Serial ATA II RAID 1430SA
+       0250  ServeRAID Controller
+               1014 0279  ServeRAID-xx
+               1014 028c  ServeRAID-xx
+       0279  ServeRAID 6M
+       0283  AAC-RAID
+               9005 0283  Catapult
+       0284  AAC-RAID
+               9005 0284  Tomcat
+       0285  AAC-RAID
+               0e11 0295  SATA 6Ch (Bearcat)
+               1014 02f2  ServeRAID 8i
+               1028 0287  PowerEdge Expandable RAID Controller 320/DC
+               1028 0291  CERC SATA RAID 2 PCI SATA 6ch (DellCorsair)
+               103c 3227  AAR-2610SA
+               108e 0286  STK RAID INT
+               108e 0287  STK RAID EXT
+               108e 7aac  STK RAID REM
+               108e 7aae  STK RAID EX
+               15d9 02b5  AOC-USAS-S4i
+               15d9 02b6  AOC-USAS-S8i
+               15d9 02c9  AOC-USAS-S4iR
+               15d9 02ca  AOC-USAS-S8iR
+               17aa 0286  Legend S220 (Legend Crusader)
+               17aa 0287  Legend S230 (Legend Vulcan)
+               9005 0285  2200S (Vulcan)
+               9005 0286  2120S (Crusader)
+               9005 0287  2200S (Vulcan-2m)
+               9005 0288  3230S (Harrier)
+               9005 0289  3240S (Tornado)
+# Some early versions reported 2020S
+               9005 028a  ASR-2020ZCR
+# Some early versions reported 2025S
+               9005 028b  ASR-2025ZCR (Terminator)
+               9005 028e  ASR-2020SA (Skyhawk)
+               9005 028f  ASR-2025SA
+               9005 0290  AAR-2410SA PCI SATA 4ch (Jaguar II)
+               9005 0292  AAR-2810SA PCI SATA 8ch (Corsair-8)
+               9005 0293  AAR-21610SA PCI SATA 16ch (Corsair-16)
+               9005 0294  ESD SO-DIMM PCI-X SATA ZCR (Prowler)
+               9005 0296  ASR-2240S
+               9005 0297  ASR-4005SAS
+               9005 0298  ASR-4000
+               9005 0299  ASR-4800SAS
+               9005 029a  4805SAS
+               9005 02a4  ICP ICP9085LI
+               9005 02a5  ICP ICP5085BR
+               9005 02b5  ASR5800
+               9005 02b6  ASR5805
+               9005 02b7  ASR5808
+               9005 02b8  ICP5445SL
+               9005 02b9  ICP5085SL
+               9005 02ba  ICP5805SL
+               9005 02bb  3405
+               9005 02bc  3805
+               9005 02bd  31205
+               9005 02be  31605
+               9005 02bf  ICP ICP5045BL
+               9005 02c0  ICP ICP5085BL
+               9005 02c1  ICP ICP5125BR
+               9005 02c2  ICP ICP5165BR
+               9005 02c3  51205
+               9005 02c4  51605
+               9005 02c5  ICP ICP5125SL
+               9005 02c6  ICP ICP5165SL
+               9005 02c7  3085
+               9005 02c8  ICP5805BL
+               9005 02ce  51245
+               9005 02cf  51645
+               9005 02d0  52445
+               9005 02d1  5405
+       0286  AAC-RAID (Rocket)
+               1014 034d  8s
+               1014 9540  ServeRAID 8k/8k-l4
+               1014 9580  ServeRAID 8k/8k-l8
+               9005 028c  ASR-2230S + ASR-2230SLP PCI-X (Lancer)
+               9005 028d  ASR-2130S
+               9005 029b  ASR-2820SA
+               9005 029c  ASR-2620SA
+               9005 029d  ASR-2420SA
+               9005 029e  ICP ICP9024R0
+               9005 029f  ICP ICP9014R0
+               9005 02a0  ICP ICP9047MA
+               9005 02a1  ICP ICP9087MA
+               9005 02a2  3800
+               9005 02a3  ICP ICP5445AU
+               9005 02a4  ICP ICP9085LI
+               9005 02a5  ICP ICP5085BR
+               9005 02a6  ICP9067MA
+               9005 02a7  3805
+               9005 02a8  3400
+               9005 02a9  ICP ICP5085AU
+               9005 02aa  ICP ICP5045AU
+               9005 02ac  1800
+               9005 02b3  2400
+               9005 02b4  ICP ICP5045AL
+               9005 0800  Callisto
+       0410  AIC-9410W SAS (Razor HBA RAID)
+               9005 0410  ASC-48300(Spirit RAID)
+               9005 0411  ASC-58300 (Oakmont RAID)
+       0412  AIC-9410W SAS (Razor HBA non-RAID)
+               9005 0412  ASC-48300 (Spirit non-RAID)
+               9005 0413  ASC-58300 (Oakmont non-RAID)
+       0415  ASC-58300 SAS (Razor-External HBA RAID)
+       0416  ASC-58300 SAS (Razor-External HBA non-RAID)
+       041e  AIC-9410W SAS (Razor ASIC non-RAID)
+       041f  AIC-9410W SAS (Razor ASIC RAID)
+               9005 041f  AIC-9410W SAS (Razor ASIC RAID)
+       0430  AIC-9405W SAS (Razor-Lite HBA RAID)
+               9005 0430  ASC-44300 (Spirit-Lite RAID)
+       0432  AIC-9405W SAS (Razor-Lite HBA non-RAID)
+               9005 0432  ASC-44300 (Spirit-Lite non-RAID)
+       043e  AIC-9405W SAS (Razor-Lite ASIC non-RAID)
+       043f  AIC-9405W SAS (Razor-Lite ASIC RAID)
+       0500  Obsidian chipset SCSI controller
+               1014 02c1  PCI-X DDR 3Gb SAS Adapter (572A/572C)
+               1014 02c2  PCI-X DDR 3Gb SAS RAID Adapter (572B/572D)
+       0503  Scamp chipset SCSI controller
+               1014 02bf  Quad Channel PCI-X DDR U320 SCSI RAID Adapter (571E)
+               1014 02c3  PCI-X DDR 3Gb SAS RAID Adapter (572F)
+               1014 02d5  Quad Channel PCI-X DDR U320 SCSI RAID Adapter (571F)
+       0910  AUA-3100B
+       091e  AUA-3100B
+       8000  ASC-29320A U320
+       800f  AIC-7901 U320
+       8010  ASC-39320 U320
+       8011  ASC-39320D
+               0e11 00ac  ASC-39320D U320
+               9005 0041  ASC-39320D U320
+       8012  ASC-29320 U320
+       8013  ASC-29320B U320
+       8014  ASC-29320LP U320
+       8015  ASC-39320B U320
+       8016  ASC-39320A U320
+       8017  ASC-29320ALP U320
+               9005 0044  ASC-29320ALP PCIx U320
+               9005 0045  ASC-29320LPE PCIe U320
+       801c  ASC-39320D U320
+       801d  AIC-7902B U320
+               1014 02cc  ServeRAID 7e
+       801e  AIC-7901A U320
+       801f  AIC-7902 U320
+               1734 1011  Primergy RX300
+       8080  ASC-29320A U320 w/HostRAID
+       808f  AIC-7901 U320 w/HostRAID
+       8090  ASC-39320 U320 w/HostRAID
+       8091  ASC-39320D U320 w/HostRAID
+       8092  ASC-29320 U320 w/HostRAID
+       8093  ASC-29320B U320 w/HostRAID
+       8094  ASC-29320LP U320 w/HostRAID
+       8095  ASC-39320(B) U320 w/HostRAID
+       8096  ASC-39320A U320 w/HostRAID
+       8097  ASC-29320ALP U320 w/HostRAID
+       809c  ASC-39320D(B) U320 w/HostRAID
+       809d  AIC-7902(B) U320 w/HostRAID
+               1014 02cc  ServeRAID 7e
+       809e  AIC-7901A U320 w/HostRAID
+       809f  AIC-7902 U320 w/HostRAID
+907f  Atronics
+       2015  IDE-2015PL
+919a  Gigapixel Corp
+9412  Holtek
+       6565  6565
+9699  Omni Media Technology Inc
+       6565  6565
+9710  NetMos Technology
+       7780  USB IRDA-port
+       9805  PCI 1 port parallel adapter
+       9815  PCI 9815 Multi-I/O Controller
+               1000 0020  2P0S (2 port parallel adaptor)
+       9835  PCI 9835 Multi-I/O Controller
+               1000 0002  2S (16C550 UART)
+               1000 0012  1P2S
+       9845  PCI 9845 Multi-I/O Controller
+               1000 0004  0P4S (4 port 16550A serial card)
+               1000 0006  0P6S (6 port 16550a serial card)
+       9855  PCI 9855 Multi-I/O Controller
+               1000 0014  1P4S
+9902  Stargen Inc.
+       0001  SG2010 PCI over Starfabric Bridge
+       0002  SG2010 PCI to Starfabric Gateway
+       0003  SG1010 Starfabric Switch and PCI Bridge
+a0a0  AOPEN Inc.
+a0f1  UNISYS Corporation
+a200  NEC Corporation
+a259  Hewlett Packard
+a25b  Hewlett Packard GmbH PL24-MKT
+a304  Sony
+a727  3Com Corporation
+       0013  3CRPAG175 Wireless PC Card
+aa42  Scitex Digital Video
+ac1e  Digital Receiver Technology Inc
+ac3d  Actuality Systems
+aecb  Adrienne Electronics Corporation
+       6250  VITC/LTC Timecode Reader card [PCI-VLTC/RDR]
+affe  Sirrix AG security technologies
+       02e1  PCI2E1 2-port ISDN E1 interface
+       dead  Sirrix.PCI4S0 4-port ISDN S0 interface
+# Not registered officially
+b10b  Uakron PCI Project
+b1b3  Shiva Europe Limited
+# Pinnacle should be 11bd, but they got it wrong several times --mj
+bd11  Pinnacle Systems, Inc. (Wrong ID)
+c001  TSI Telsys
+c0a9  Micron/Crucial Technology
+c0de  Motorola
+c0fe  Motion Engineering, Inc.
+ca50  Varian Australia Pty Ltd
+cafe  Chrysalis-ITS
+       0003  Luna K3 Hardware Security Module
+cccc  Catapult Communications
+ccec  Curtiss-Wright Controls Embedded Computing
+cddd  Tyzx, Inc.
+       0101  DeepSea 1 High Speed Stereo Vision Frame Grabber
+       0200  DeepSea 2 High Speed Stereo Vision Frame Grabber
+d161  Digium, Inc.
+       0120  Wildcard TE120P single-span T1/E1/J1 card
+       0205  Wildcard TE205P dual-span T1/E1/J1 card 5.0V
+       0210  Wildcard TE210P dual-span T1/E1/J1 card 3.3V
+       0405  Wildcard TE405P quad-span T1/E1/J1 card 5.0V
+       0410  Wildcard TE410P quad-span T1/E1/J1 card 3.3V
+       0800  Wildcard TDM800P 8-port analog card
+       2400  Wildcard TDM2400P 24-port analog card
+       3400  Wildcard TC400P transcoder base card
+       b410  Wildcard B410 quad-BRI card
+d4d4  Dy4 Systems Inc
+       0601  PCI Mezzanine Card
+d531  I+ME ACTIA GmbH
+d84d  Exsys
+dead  Indigita Corporation
+deaf  Middle Digital Inc.
+       9050  PC Weasel Virtual VGA
+       9051  PC Weasel Serial Port
+       9052  PC Weasel Watchdog Timer
+e000  Winbond
+       e000  W89C940
+e159  Tiger Jet Network Inc.
+       0001  Tiger3XX Modem/ISDN interface
+               0059 0001  128k ISDN-S/T Adapter
+               0059 0003  128k ISDN-U Adapter
+               00a7 0001  TELES.S0/PCI 2.x ISDN Adapter
+               8086 0003  Digium X100P/X101P analogue PSTN FXO interface
+       0002  Tiger100APC ISDN chipset
+e4bf  EKF Elektronik GmbH
+e55e  Essence Technology, Inc.
+ea01  Eagle Technology
+       000a  PCI-773 Temperature Card
+       0032  PCI-730 & PC104P-30 Card
+       003e  PCI-762 Opto-Isolator Card
+       0041  PCI-763 Reed Relay Card
+       0043  PCI-769 Opto-Isolator Reed Relay Combo Card
+       0046  PCI-766 Analog Output Card
+       0052  PCI-703 Analog I/O Card
+       0800  PCI-800 Digital I/O Card
+# The main chip of all these devices is by Xilinx -> It could also be a Xilinx ID.
+ea60  RME
+       9896  Digi32
+       9897  Digi32 Pro
+       9898  Digi32/8
+eabb  Aashima Technology B.V.
+eace  Endace Measurement Systems, Ltd
+       3100  DAG 3.10 OC-3/OC-12
+       3200  DAG 3.2x OC-3/OC-12
+       320e  DAG 3.2E Fast Ethernet
+       340e  DAG 3.4E Fast Ethernet
+       341e  DAG 3.41E Fast Ethernet
+       3500  DAG 3.5 OC-3/OC-12
+       351c  DAG 3.5ECM Fast Ethernet
+       4100  DAG 4.10 OC-48
+       4110  DAG 4.11 OC-48
+       4220  DAG 4.2 OC-48
+       422e  DAG 4.2E Dual Gigabit Ethernet
+ec80  Belkin Corporation
+       ec00  F5D6000
+ecc0  Echo Digital Audio Corporation
+edd8  ARK Logic Inc
+       a091  1000PV [Stingray]
+       a099  2000PV [Stingray]
+       a0a1  2000MT
+       a0a9  2000MI
+f1d0  AJA Video
+       c0fe  Xena HS/HD-R
+       c0ff  Kona/Xena 2
+       cafe  Kona SD
+       cfee  Xena LS/SD-22-DA/SD-DA
+       dcaf  Kona HD
+       dfee  Xena HD-DA
+       efac  Xena SD-MM/SD-22-MM
+       facd  Xena HD-MM
+fa57  Interagon AS
+       0001  PMC [Pattern Matching Chip]
+fab7  Fabric7 Systems, Inc.
+febd  Ultraview Corp.
+# Nee Epigram
+feda  Broadcom Inc
+       a0fa  BCM4210 iLine10 HomePNA 2.0
+       a10e  BCM4230 iLine10 HomePNA 2.0
+fede  Fedetec Inc.
+       0003  TABIC PCI v3
+fffd  XenSource, Inc.
+       0101  PCI Event Channel Controller
+fffe  VMWare Inc
+       0405  Virtual SVGA 4.0
+       0710  Virtual SVGA
+ffff  Illegal Vendor ID
+
+
+# List of known device classes, subclasses and programming interfaces
+
+# Syntax:
+# C class      class_name
+#      subclass        subclass_name           <-- single tab
+#              prog-if  prog-if_name   <-- two tabs
+
+C 00  Unclassified device
+       00  Non-VGA unclassified device
+       01  VGA compatible unclassified device
+C 01  Mass storage controller
+       00  SCSI storage controller
+       01  IDE interface
+       02  Floppy disk controller
+       03  IPI bus controller
+       04  RAID bus controller
+       05  ATA controller
+               20  ADMA single stepping
+               30  ADMA continuous operation
+       06  SATA controller
+               00  Vendor specific
+               01  AHCI 1.0
+       07  Serial Attached SCSI controller
+       80  Mass storage controller
+C 02  Network controller
+       00  Ethernet controller
+       01  Token ring network controller
+       02  FDDI network controller
+       03  ATM network controller
+       04  ISDN controller
+       05  WorldFip controller
+       06  PICMG controller
+       80  Network controller
+C 03  Display controller
+       00  VGA compatible controller
+               00  VGA controller
+               01  8514 controller
+       01  XGA compatible controller
+       02  3D controller
+       80  Display controller
+C 04  Multimedia controller
+       00  Multimedia video controller
+       01  Multimedia audio controller
+       02  Computer telephony device
+       03  Audio device
+       80  Multimedia controller
+C 05  Memory controller
+       00  RAM memory
+       01  FLASH memory
+       80  Memory controller
+C 06  Bridge
+       00  Host bridge
+       01  ISA bridge
+       02  EISA bridge
+       03  MicroChannel bridge
+       04  PCI bridge
+               00  Normal decode
+               01  Subtractive decode
+       05  PCMCIA bridge
+       06  NuBus bridge
+       07  CardBus bridge
+       08  RACEway bridge
+               00  Transparent mode
+               01  Endpoint mode
+       09  Semi-transparent PCI-to-PCI bridge
+               40  Primary bus towards host CPU
+               80  Secondary bus towards host CPU
+       0a  InfiniBand to PCI host bridge
+       80  Bridge
+C 07  Communication controller
+       00  Serial controller
+               00  8250
+               01  16450
+               02  16550
+               03  16650
+               04  16750
+               05  16850
+               06  16950
+       01  Parallel controller
+               00  SPP
+               01  BiDir
+               02  ECP
+               03  IEEE1284
+               fe  IEEE1284 Target
+       02  Multiport serial controller
+       03  Modem
+               00  Generic
+               01  Hayes/16450
+               02  Hayes/16550
+               03  Hayes/16650
+               04  Hayes/16750
+       04  GPIB controller
+       05  Smard Card controller
+       80  Communication controller
+C 08  Generic system peripheral
+       00  PIC
+               00  8259
+               01  ISA PIC
+               02  EISA PIC
+               10  IO-APIC
+               20  IO(X)-APIC
+       01  DMA controller
+               00  8237
+               01  ISA DMA
+               02  EISA DMA
+       02  Timer
+               00  8254
+               01  ISA Timer
+               02  EISA Timers
+       03  RTC
+               00  Generic
+               01  ISA RTC
+       04  PCI Hot-plug controller
+       05  SD Host controller
+       80  System peripheral
+C 09  Input device controller
+       00  Keyboard controller
+       01  Digitizer Pen
+       02  Mouse controller
+       03  Scanner controller
+       04  Gameport controller
+               00  Generic
+               10  Extended
+       80  Input device controller
+C 0a  Docking station
+       00  Generic Docking Station
+       80  Docking Station
+C 0b  Processor
+       00  386
+       01  486
+       02  Pentium
+       10  Alpha
+       20  Power PC
+       30  MIPS
+       40  Co-processor
+C 0c  Serial bus controller
+       00  FireWire (IEEE 1394)
+               00  Generic
+               10  OHCI
+       01  ACCESS Bus
+       02  SSA
+       03  USB Controller
+               00  UHCI
+               10  OHCI
+               20  EHCI
+               80  Unspecified
+               fe  USB Device
+       04  Fibre Channel
+       05  SMBus
+       06  InfiniBand
+       07  IPMI SMIC interface
+       08  SERCOS interface
+       09  CANBUS
+C 0d  Wireless controller
+       00  IRDA controller
+       01  Consumer IR controller
+       10  RF controller
+       11  Bluetooth
+       12  Broadband
+       20  802.1a controller
+       21  802.1b controller
+       80  Wireless controller
+C 0e  Intelligent controller
+       00  I2O
+C 0f  Satellite communications controller
+       01  Satellite TV controller
+       02  Satellite audio communication controller
+       03  Satellite voice communication controller
+       04  Satellite data communication controller
+C 10  Encryption controller
+       00  Network and computing encryption device
+       10  Entertainment encryption device
+       80  Encryption controller
+C 11  Signal processing controller
+       00  DPIO module
+       01  Performance counters
+       10  Communication synchronizer
+       20  Signal processing management
+       80  Signal processing controller
diff --git a/pcilib.man b/pcilib.man
new file mode 100644 (file)
index 0000000..6cf5682
--- /dev/null
@@ -0,0 +1,109 @@
+.TH pcilib 7 "@TODAY@" "@VERSION@" "The PCI Utilities"
+.IX pcilib
+.SH NAME
+pcilib \- a library for accessing PCI devices
+
+.SH DESCRIPTION
+
+The PCI library (also known as \fIpcilib\fP and \fIlibpci\fP) is a portable library
+for accessing PCI devices and their configuration space.
+
+.SH ACCESS METHODS
+
+.PP
+The library supports a variety of methods to access the configuration space
+on different operating systems. By default, the first matching method in this
+list is used, but you can specify override the decision (see the \fB-A\fP switch
+of \fIlspci\fP).
+
+.TP
+.B linux-sysfs
+The
+.B /sys
+filesystem on Linux 2.6 and newer. The standard header of the config space is available
+to all users, the rest only to root. Supports extended configuration space, PCI domains
+and information on attached kernel drivers.
+.TP
+.B linux-proc
+The
+.B /proc/bus/pci
+interface supported by Linux 2.1 and newer. The standard header of the config space is available
+to all users, the rest only to root.
+.TP
+.B intel-conf1
+Direct hardware access via Intel configuration mechanism 1. Available on i386 and compatibles
+on Linux, Solaris/x86, GNU Hurd and Windows. Requires root privileges.
+.TP
+.B intel-conf2
+Direct hardware access via Intel configuration mechanism 2. Available on i386 and compatibles
+on Linux, Solaris/x86, GNU Hurd and Windows. Requires root privileges. Warning: This method
+is able to address only the first 16 devices on any bus and it seems to be very
+unreliable in many cases.
+.TP
+.B fbsd-device
+The
+.B /dev/pci
+device on FreeBSD. Requires root privileges.
+.TP
+.B aix-device
+Access method used on AIX. Requires root privileges.
+.TP
+.B nbsd-libpci
+The
+.B /dev/pci0
+device on NetBSD accessed using the local libpci library.
+.TP
+.B obsd-device
+The
+.B /dev/pci
+device on OpenBSD. Requires root privileges.
+.TP
+.B dump
+Read the contents of configuration registers from a file specified in the
+.B dump.name
+parameter. The format corresponds to the output of \fIlspci\fP \fB-x\fP.
+
+.SH PARAMETERS
+
+.PP
+The library is controlled by several parameters. They should have sensible default
+values, but in case you want to do something unusual (or even something weird),
+you can override them (see the \fB-O\fP switch of \fIlspci\fP).
+
+.SS Parameters of specific access methods
+
+.TP
+.B dump.name
+Name of the bus dump file to read from.
+.TP
+.B fbsd.path
+Path to the FreeBSD PCI device.
+.TP
+.B nbsd.path
+Path to the NetBSD PCI device.
+.TP
+.B obsd.path
+Path to the OpenBSD PCI device.
+.TP
+.B proc.path
+Path to the procfs bus tree.
+.TP
+.B sysfs.path
+Path to the sysfs device tree.
+
+.SS Parameters for resolving of ID's via DNS
+.TP
+.B net.domain
+DNS domain containing the ID database.
+.TP
+.B net.cache_name
+Name of the file used for caching of resolved ID's.
+
+.SH SEE ALSO
+
+.BR lspci (8),
+.BR setpci (8),
+.BR update-pciids (8)
+
+.SH AUTHOR
+The PCI Utilities are maintained by Martin Mares <mj@ucw.cz>.
diff --git a/pcimodules.c b/pcimodules.c
new file mode 100644 (file)
index 0000000..e2d0164
--- /dev/null
@@ -0,0 +1,185 @@
+/*
+ *     pcimodules:  Load all kernel modules for PCI device currently
+ *      plugged into any PCI slot.
+ *
+ *     Copyright 2000 Yggdrasil Computing, Incorporated
+ *     This file may be copied under the terms and conditions of version 
+ *      two of the GNU General Public License, as published by the Free
+ *      Software Foundation (Cambridge, Massachusetts, USA).
+ *
+ *      This file is based on pciutils/lib/example.c, which has the following
+ *      authorship and copyright statement:
+ *
+ *             Written by Martin Mares and put to public domain. You can do
+ *             with it anything you want, but I don't give you any warranty.
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <malloc.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/utsname.h>
+#include <sys/param.h>
+#include <sys/types.h>
+
+#define _GNU_SOURCE
+#include <getopt.h>
+
+#include "pciutils.h"
+
+const char program_name[] = "pcimodules";
+
+#define MODDIR "/lib/modules"
+#define PCIMAP "modules.pcimap"
+
+#define LINELENGTH     8000 
+
+#define DEVICE_ANY     0xffffffff
+#define VENDOR_ANY     0xffffffff
+
+#include "lib/pci.h"
+
+struct pcimap_entry {
+       unsigned int vendor, subsys_vendor, dev, subsys_dev, class, class_mask;
+       char *module;
+       struct pcimap_entry *next;
+};
+
+static struct pcimap_entry *pcimap_list = NULL;
+
+#define OPT_STRING "h"
+static struct option long_options[] = {
+       {"class",       required_argument,      NULL, 'c'},
+       {"classmask",   required_argument,      NULL, 'm'},
+       {"help",        no_argument,            NULL, 'h'},
+       { 0,            0,                      0,      0}
+};
+
+static unsigned long desired_class;
+static unsigned long desired_classmask; /* Default is 0: accept all classes.*/
+
+void
+read_pcimap(void)
+{
+       struct utsname utsname;
+       char filename[MAXPATHLEN];
+       FILE *pcimap_file;
+       char line[LINELENGTH];
+       struct pcimap_entry *entry;
+       unsigned int driver_data;
+       char *prevmodule = "";
+       char module[LINELENGTH];
+
+       if (uname(&utsname) < 0) {
+               perror("uname");
+               exit(1);
+       }
+       sprintf(filename, "%s/%s/%s", MODDIR, utsname.release, PCIMAP);
+       if ((pcimap_file = fopen(filename, "r")) == NULL) {
+               perror(filename);
+               exit(1);
+       }
+
+       while(fgets(line, LINELENGTH, pcimap_file) != NULL) {
+               if (line[0] == '#')
+                       continue;
+
+               entry = xmalloc(sizeof(struct pcimap_entry));
+
+               if (sscanf(line, "%s 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x",
+                          module,
+                          &entry->vendor, &entry->dev,
+                          &entry->subsys_vendor, &entry->subsys_dev,
+                          &entry->class, &entry->class_mask,
+                          &driver_data) != 8) {
+                       fprintf (stderr,
+                               "modules.pcimap unparsable line: %s.\n", line);
+                       free(entry);
+                       continue;
+               }
+
+               /* Optimize memory allocation a bit, in case someday we
+                  have Linux systems with ~100,000 modules.  It also
+                  allows us to just compare pointers to avoid trying
+                  to load a module twice. */
+               if (strcmp(module, prevmodule) != 0) {
+                       prevmodule = xmalloc(strlen(module)+1);
+                       strcpy(prevmodule, module);
+               }
+               entry->module = prevmodule;
+               entry->next = pcimap_list;
+               pcimap_list = entry;
+       }
+       fclose(pcimap_file);
+}
+
+/* Return a filled in pci_access->dev tree, with the device classes
+   stored in dev->aux.
+*/
+static void
+match_pci_modules(void)
+{
+       struct pci_access *pacc;
+       struct pci_dev *dev;
+       unsigned int class, subsys_dev, subsys_vendor;
+       struct pcimap_entry *map;
+       const char *prevmodule = "";
+
+       pacc = pci_alloc();             /* Get the pci_access structure */
+       /* Set all options you want -- here we stick with the defaults */
+       pci_init(pacc);         /* Initialize the PCI library */
+       pci_scan_bus(pacc);     /* We want to get the list of devices */
+       for(dev=pacc->devices; dev; dev=dev->next) {
+               pci_fill_info(dev, PCI_FILL_IDENT | PCI_FILL_BASES);
+               class = (pci_read_word(dev, PCI_CLASS_DEVICE) << 8)
+                       | pci_read_byte(dev, PCI_CLASS_PROG);
+               subsys_dev = pci_read_word(dev, PCI_SUBSYSTEM_ID);
+               subsys_vendor = pci_read_word(dev,PCI_SUBSYSTEM_VENDOR_ID);
+               for(map = pcimap_list; map != NULL; map = map->next) {
+                       if (((map->class ^ class) & map->class_mask) == 0 &&
+                           ((desired_class ^ class) & desired_classmask)==0 &&
+                           (map->dev == DEVICE_ANY ||
+                            map->dev == dev->device_id) &&
+                           (map->vendor == VENDOR_ANY ||
+                            map->vendor == dev->vendor_id) &&
+                           (map->subsys_dev == DEVICE_ANY ||
+                            map->subsys_dev == subsys_dev) &&
+                           (map->subsys_vendor == VENDOR_ANY ||
+                            map->subsys_vendor == subsys_vendor) &&
+                           prevmodule != map->module) {
+                               printf("%s\n", map->module);
+                               prevmodule = map->module;
+                       }
+               }
+
+       }
+       pci_cleanup(pacc);
+}
+
+int
+main (int argc, char **argv)
+{
+       int opt_index = 0;
+       int opt;
+
+       while ((opt = getopt_long(argc, argv, OPT_STRING, long_options,
+                          &opt_index)) != -1) {
+               switch(opt) {
+                       case 'c':
+                               desired_class = strtol(optarg, NULL, 0);
+                               break;
+                       case 'm':
+                               desired_classmask = strtol(optarg, NULL, 0);
+                               break;
+                       case 'h':
+                               printf ("Usage: pcimodules [--help]\n"
+                                       "  Lists kernel modules corresponding to PCI devices currently plugged"
+                                       "  into the computer.\n");
+               }
+       }       
+
+       read_pcimap();
+       match_pci_modules();
+       return 0;
+}
diff --git a/pcimodules.man b/pcimodules.man
new file mode 100644 (file)
index 0000000..d7943c9
--- /dev/null
@@ -0,0 +1,92 @@
+.TH pcimodules 8 "@TODAY@" "@VERSION@" "Linux PCI Utilities"
+.IX pcimodules
+.SH NAME
+pcimodules \- List kernel driver modules available for all currently plugged
+in PCI devices
+.SH SYNOPSIS
+.B pcimodules
+.RB [ --class class_id ]
+.RB [ --classmask mask ]
+.RB [ --help ]
+.SH DESCRIPTION
+.B pcimodules
+lists all driver modules for all currently plugged in PCI devices.
+.B pcimodules
+should be run at boot time, and whenever a PCI device is "hot plugged"
+into the system.  This can be done by the following Bourne shell syntax:
+.IP
+       for module in $(pcimodules) ; do
+.IP
+               modprobe -s -k "$module"
+.IP
+       done
+.PP
+When a PCI device is removed from the system, the Linux kernel will
+decrement a usage count on PCI driver module.  If this count drops
+to zero (i.e., there are no PCI drivers), then the
+.B modprobe -r
+process that is normally configured to run from cron every few minutes
+will eventually remove the unneeded module.
+.PP
+The --class and --classmask arguments can be used to limit the search
+to certain classes of PCI devices.  This is useful, for example, to
+generate a list of ethernet card drivers to be loaded when the kernel
+has indicated that it is trying to resolve an unknown network interface.
+.PP
+Modules are listed in the order in which the PCI devices are physically
+arranged so that the computer owner can arrange things like having scsi
+device 0 be on a controller that is not alphabetically the first scsi
+controller.
+.SH OPTIONS
+.TP
+.B --class class --classmask mask
+.PP
+--class and --classmask limit the search to PCI
+cards in particular classes.  These arguments are always used together.
+The arguments to --class and --classmask
+can be given as hexadecimal numbers by prefixing a leading "0x".
+Note that the classes used by pcimodules are in "Linux" format,
+meaning the class value that you see with lspci would be shifted
+left eight bits, with the new low eight bits programming interface ID.
+An examples of how to use class and classmask is provided below.
+.B --help, -h
+Print a help message and exit.
+.SH EXAMPLES
+.TP
+pcimodules
+lists all modules corresponding to currently plugged in PCI devices.
+.TP
+pcimodules --class 0x20000 --classmask 0xffff00
+lists all modules corresponding to currently plugged in ethernet PCI devices.
+.SH FILES
+.TP
+.B /lib/modules/<kernel-version>/modules.pcimap
+This file is automatically generated by
+.B depmod,
+and used by
+.B pcimodules
+to determine which modules correspond to which PCI ID's.
+.TP
+.B /proc/bus/pci
+An interface to PCI bus configuration space provided by the post-2.1.82 Linux
+kernels. Contains per-bus subdirectories with per-card config space files and a
+.I devices
+file containing a list of all PCI devices.
+
+.SH SEE ALSO
+.BR lspci (8)
+
+.SH MAINTAINER
+The Linux PCI Utilities are maintained by Martin Mares <mj@suse.cz>.
+
+.SH AUTHOR
+.B pcimodules
+was written by Adam J. Richter <adam@yggdrasil.com>, based on public
+domain example code by Martin Mares <mj@suse.cz>.
+
+.SH COPYRIGHT
+.B pcimodules
+is copyright 2000, Yggdrasil Computing, Incorporated, and may
+be copied under the terms and conditions of version 2 of the GNU
+General Public License as published by the Free Software Foundation
+(Cambridge, Massachusetts, United States of America).
diff --git a/pciutils.h b/pciutils.h
new file mode 100644 (file)
index 0000000..67b586f
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ *     The PCI Utilities -- Declarations
+ *
+ *     Copyright (c) 1997--2008 Martin Mares <mj@ucw.cz>
+ *
+ *     Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#include "lib/pci.h"
+#include "lib/sysdep.h"
+
+#ifdef PCI_OS_WINDOWS
+#include "compat/getopt.h"
+#endif
+
+#define PCIUTILS_VERSION PCILIB_VERSION
+
+extern const char program_name[];
+
+void die(char *msg, ...) NONRET PCI_PRINTF(1,2);
+void *xmalloc(unsigned int howmuch);
+void *xrealloc(void *ptr, unsigned int howmuch);
+int parse_generic_option(int i, struct pci_access *pacc, char *optarg);
+
+#ifdef PCI_HAVE_PM_INTEL_CONF
+#define GENOPT_INTEL "H:"
+#define GENHELP_INTEL "-H <mode>\tUse direct hardware access (<mode> = 1 or 2)\n"
+#else
+#define GENOPT_INTEL
+#define GENHELP_INTEL
+#endif
+#if defined(PCI_HAVE_PM_DUMP) && !defined(PCIUTILS_SETPCI)
+#define GENOPT_DUMP "F:"
+#define GENHELP_DUMP "-F <file>\tRead PCI configuration dump from a given file\n"
+#else
+#define GENOPT_DUMP
+#define GENHELP_DUMP
+#endif
+
+#define GENERIC_OPTIONS "A:GO:" GENOPT_INTEL GENOPT_DUMP
+#define GENERIC_HELP \
+       "-A <method>\tUse the specified PCI access method (see `-A help' for a list)\n" \
+       "-O <par>=<val>\tSet PCI access parameter (see `-O help' for a list)\n" \
+       "-G\t\tEnable PCI access debugging\n" \
+       GENHELP_INTEL GENHELP_DUMP
diff --git a/pciutils.lsm b/pciutils.lsm
new file mode 100644 (file)
index 0000000..0898a63
--- /dev/null
@@ -0,0 +1,14 @@
+Begin3
+Title:          The PCI Utilities
+Version:        3.0.0
+Entered-date:   080410
+Description:    This package contains various utilities for inspecting and
+               setting of devices connected to the PCI bus.
+Keywords:       kernel, pci, lspci, setpci, libpci
+Author:         mj@ucw.cz (Martin Mares)
+Maintained-by:  mj@ucw.cz (Martin Mares)
+Primary-site:   atrey.karlin.mff.cuni.cz pub/linux/pci/pciutils-3.0.0.tar.gz
+Alternate-site: ftp.kernel.org pub/software/utils/pciutils/pciutils-3.0.0.tar.gz
+Alternate-site: metalab.unc.edu pub/Linux/hardware/pciutils-3.0.0.tar.gz
+Copying-policy: GPL
+End
diff --git a/pciutils.spec b/pciutils.spec
new file mode 100644 (file)
index 0000000..58e8c0c
--- /dev/null
@@ -0,0 +1,49 @@
+Name:          pciutils
+Version:       3.0.0
+Release:       1
+Source:                ftp://atrey.karlin.mff.cuni.cz/pub/linux/pci/%{name}-%{version}.tar.gz
+Copyright:     GNU GPL
+Buildroot:     /tmp/%{name}-%{version}-root
+ExclusiveOS:   Linux
+Summary:       The PCI Utilities
+Summary(pl):   Narzêdzia do manipulacji ustawieniami urz±dzeñ PCI
+Group:                 Utilities/System
+
+%description
+This package contains various utilities for inspecting and
+setting of devices connected to the PCI bus.
+
+%description -l pl
+Pakiet zawiera narzêdzia do ustawiania i odczytywania informacji
+o urz±dzeniach pod³±czonych do szyny PCI w Twoim komputerze.
+
+%description -l de
+Dieses Paket enthält verschiedene Programme zum Anzeigen und
+Einstellen von PCI-Bus Erweiterungen.
+
+%prep
+%setup -q
+
+%build
+make OPT="$RPM_OPT_FLAGS"
+
+%install
+rm -rf $RPM_BUILD_ROOT
+make install PREFIX=$RPM_BUILD_ROOT/usr ROOT=$RPM_BUILD_ROOT/ \
+     MANDIR=$RPM_BUILD_ROOT/%{_mandir}
+
+%files
+%defattr(0644, root, root, 0755)
+%attr(0644, root, man) %{_mandir}/man8/*
+%attr(0711, root, root) /usr/sbin/*
+%config /usr/share/pci.ids
+%doc README ChangeLog pciutils.lsm
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%changelog
+* Tue Sep 29 1998 Krzysztof G. Baranowski <kgb@knm.org.pl>
+[1.07-1]
+- build from non-root account against glibc-2.0
+- written spec from scratch
diff --git a/setpci.c b/setpci.c
new file mode 100644 (file)
index 0000000..3ebbaee
--- /dev/null
+++ b/setpci.c
@@ -0,0 +1,513 @@
+/*
+ *     The PCI Utilities -- Manipulate PCI Configuration Registers
+ *
+ *     Copyright (c) 1998--2008 Martin Mares <mj@ucw.cz>
+ *
+ *     Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <unistd.h>
+
+#define PCIUTILS_SETPCI
+#include "pciutils.h"
+
+static int force;                      /* Don't complain if no devices match */
+static int verbose;                    /* Verbosity level */
+static int demo_mode;                  /* Only show */
+
+const char program_name[] = "setpci";
+
+static struct pci_access *pacc;
+
+struct value {
+  unsigned int value;
+  unsigned int mask;
+};
+
+struct op {
+  struct op *next;
+  struct pci_dev **dev_vector;
+  unsigned int addr;
+  unsigned int width;                  /* Byte width of the access */
+  int num_values;                      /* Number of values to write; <0=read */
+  struct value values[0];
+};
+
+static struct op *first_op, **last_op = &first_op;
+static unsigned int max_values[] = { 0, 0xff, 0xffff, 0, 0xffffffff };
+
+static struct pci_dev **
+select_devices(struct pci_filter *filt)
+{
+  struct pci_dev *z, **a, **b;
+  int cnt = 1;
+
+  for(z=pacc->devices; z; z=z->next)
+    if (pci_filter_match(filt, z))
+      cnt++;
+  a = b = xmalloc(sizeof(struct device *) * cnt);
+  for(z=pacc->devices; z; z=z->next)
+    if (pci_filter_match(filt, z))
+      *a++ = z;
+  *a = NULL;
+  return b;
+}
+
+static void
+exec_op(struct op *op, struct pci_dev *dev)
+{
+  char *formats[] = { NULL, "%02x", "%04x", NULL, "%08x" };
+  char *mask_formats[] = { NULL, "%02x->(%02x:%02x)->%02x", "%04x->(%04x:%04x)->%04x", NULL, "%08x->(%08x:%08x)->%08x" };
+  unsigned int x, y;
+  int i, addr;
+  int width = op->width;
+
+  if (verbose)
+    printf("%02x:%02x.%x:%02x", dev->bus, dev->dev, dev->func, op->addr);
+  addr = op->addr;
+  if (op->num_values >= 0)
+    {
+      for(i=0; i<op->num_values; i++)
+       {
+         if ((op->values[i].mask & max_values[width]) == max_values[width])
+           {
+             x = op->values[i].value;
+             if (verbose)
+               {
+                 putchar(' ');
+                 printf(formats[width], op->values[i].value);
+               }
+           }
+         else
+           {
+             switch (width)
+               {
+               case 1:
+                 y = pci_read_byte(dev, addr);
+                 break;
+               case 2:
+                 y = pci_read_word(dev, addr);
+                 break;
+               default:
+                 y = pci_read_long(dev, addr);
+                 break;
+               }
+             x = (y & ~op->values[i].mask) | op->values[i].value;
+             if (verbose)
+               {
+                 putchar(' ');
+                 printf(mask_formats[width], y, op->values[i].value, op->values[i].mask, x);
+               }
+           }
+         if (!demo_mode)
+           {
+             switch (width)
+               {
+               case 1:
+                 pci_write_byte(dev, addr, x);
+                 break;
+               case 2:
+                 pci_write_word(dev, addr, x);
+                 break;
+               default:
+                 pci_write_long(dev, addr, x);
+                 break;
+               }
+           }
+         addr += width;
+       }
+      if (verbose)
+       putchar('\n');
+    }
+  else
+    {
+      if (verbose)
+       printf(" = ");
+      switch (width)
+       {
+       case 1:
+         x = pci_read_byte(dev, addr);
+         break;
+       case 2:
+         x = pci_read_word(dev, addr);
+         break;
+       default:
+         x = pci_read_long(dev, addr);
+         break;
+       }
+      printf(formats[width], x);
+      putchar('\n');
+    }
+}
+
+static void
+execute(struct op *op)
+{
+  struct pci_dev **vec = NULL;
+  struct pci_dev **pdev, *dev;
+  struct op *oops;
+
+  while (op)
+    {
+      pdev = vec = op->dev_vector;
+      while (dev = *pdev++)
+       for(oops=op; oops && oops->dev_vector == vec; oops=oops->next)
+         exec_op(oops, dev);
+      while (op && op->dev_vector == vec)
+       op = op->next;
+    }
+}
+
+static void
+scan_ops(struct op *op)
+{
+  while (op)
+    {
+      if (op->num_values >= 0)
+       pacc->writeable = 1;
+      op = op->next;
+    }
+}
+
+struct reg_name {
+  unsigned int offset;
+  unsigned int width;
+  const char *name;
+};
+
+static const struct reg_name pci_reg_names[] = {
+  { 0x00, 2, "VENDOR_ID", },
+  { 0x02, 2, "DEVICE_ID", },
+  { 0x04, 2, "COMMAND", },
+  { 0x06, 2, "STATUS", },
+  { 0x08, 1, "REVISION", },
+  { 0x09, 1, "CLASS_PROG", },
+  { 0x0a, 2, "CLASS_DEVICE", },
+  { 0x0c, 1, "CACHE_LINE_SIZE", },
+  { 0x0d, 1, "LATENCY_TIMER", },
+  { 0x0e, 1, "HEADER_TYPE", },
+  { 0x0f, 1, "BIST", },
+  { 0x10, 4, "BASE_ADDRESS_0", },
+  { 0x14, 4, "BASE_ADDRESS_1", },
+  { 0x18, 4, "BASE_ADDRESS_2", },
+  { 0x1c, 4, "BASE_ADDRESS_3", },
+  { 0x20, 4, "BASE_ADDRESS_4", },
+  { 0x24, 4, "BASE_ADDRESS_5", },
+  { 0x28, 4, "CARDBUS_CIS", },
+  { 0x2c, 4, "SUBSYSTEM_VENDOR_ID", },
+  { 0x2e, 2, "SUBSYSTEM_ID", },
+  { 0x30, 4, "ROM_ADDRESS", },
+  { 0x3c, 1, "INTERRUPT_LINE", },
+  { 0x3d, 1, "INTERRUPT_PIN", },
+  { 0x3e, 1, "MIN_GNT", },
+  { 0x3f, 1, "MAX_LAT", },
+  { 0x18, 1, "PRIMARY_BUS", },
+  { 0x19, 1, "SECONDARY_BUS", },
+  { 0x1a, 1, "SUBORDINATE_BUS", },
+  { 0x1b, 1, "SEC_LATENCY_TIMER", },
+  { 0x1c, 1, "IO_BASE", },
+  { 0x1d, 1, "IO_LIMIT", },
+  { 0x1e, 2, "SEC_STATUS", },
+  { 0x20, 2, "MEMORY_BASE", },
+  { 0x22, 2, "MEMORY_LIMIT", },
+  { 0x24, 2, "PREF_MEMORY_BASE", },
+  { 0x26, 2, "PREF_MEMORY_LIMIT", },
+  { 0x28, 4, "PREF_BASE_UPPER32", },
+  { 0x2c, 4, "PREF_LIMIT_UPPER32", },
+  { 0x30, 2, "IO_BASE_UPPER16", },
+  { 0x32, 2, "IO_LIMIT_UPPER16", },
+  { 0x38, 4, "BRIDGE_ROM_ADDRESS", },
+  { 0x3e, 2, "BRIDGE_CONTROL", },
+  { 0x10, 4, "CB_CARDBUS_BASE", },
+  { 0x14, 2, "CB_CAPABILITIES", },
+  { 0x16, 2, "CB_SEC_STATUS", },
+  { 0x18, 1, "CB_BUS_NUMBER", },
+  { 0x19, 1, "CB_CARDBUS_NUMBER", },
+  { 0x1a, 1, "CB_SUBORDINATE_BUS", },
+  { 0x1b, 1, "CB_CARDBUS_LATENCY", },
+  { 0x1c, 4, "CB_MEMORY_BASE_0", },
+  { 0x20, 4, "CB_MEMORY_LIMIT_0", },
+  { 0x24, 4, "CB_MEMORY_BASE_1", },
+  { 0x28, 4, "CB_MEMORY_LIMIT_1", },
+  { 0x2c, 2, "CB_IO_BASE_0", },
+  { 0x2e, 2, "CB_IO_BASE_0_HI", },
+  { 0x30, 2, "CB_IO_LIMIT_0", },
+  { 0x32, 2, "CB_IO_LIMIT_0_HI", },
+  { 0x34, 2, "CB_IO_BASE_1", },
+  { 0x36, 2, "CB_IO_BASE_1_HI", },
+  { 0x38, 2, "CB_IO_LIMIT_1", },
+  { 0x3a, 2, "CB_IO_LIMIT_1_HI", },
+  { 0x40, 2, "CB_SUBSYSTEM_VENDOR_ID", },
+  { 0x42, 2, "CB_SUBSYSTEM_ID", },
+  { 0x44, 4, "CB_LEGACY_MODE_BASE", },
+  { 0x00, 0, NULL }
+};
+
+static void NONRET PCI_PRINTF(1,2)
+usage(char *msg, ...)
+{
+  va_list args;
+  va_start(args, msg);
+  if (msg)
+    {
+      fprintf(stderr, "setpci: ");
+      vfprintf(stderr, msg, args);
+      fprintf(stderr, "\n\n");
+    }
+  fprintf(stderr,
+"Usage: setpci [<options>] (<device>+ <reg>[=<values>]*)*\n"
+"\n"
+"General options:\n"
+"-f\t\tDon't complain if there's nothing to do\n"
+"-v\t\tBe verbose\n"
+"-D\t\tList changes, don't commit them\n"
+"\n"
+"PCI access options:\n"
+GENERIC_HELP
+"\n"
+"Setting commands:\n"
+"<device>:\t-s [[[<domain>]:][<bus>]:][<slot>][.[<func>]]\n"
+"\t|\t-d [<vendor>]:[<device>]\n"
+"<reg>:\t\t<number>[.(B|W|L)]\n"
+"     |\t\t<name>\n"
+"<values>:\t<value>[,<value>...]\n"
+"<value>:\t<hex>\n"
+"       |\t<hex>:<mask>\n");
+  exit(1);
+}
+
+int
+main(int argc, char **argv)
+{
+  enum { STATE_INIT, STATE_GOT_FILTER, STATE_GOT_OP } state = STATE_INIT;
+  struct pci_filter filter;
+  struct pci_dev **selected_devices = NULL;
+  char *opts = GENERIC_OPTIONS ;
+
+  if (argc == 2 && !strcmp(argv[1], "--version"))
+    {
+      puts("setpci version " PCIUTILS_VERSION);
+      return 0;
+    }
+  argc--;
+  argv++;
+
+  pacc = pci_alloc();
+  pacc->error = die;
+
+  while (argc && argv[0][0] == '-')
+    {
+      char *c = argv[0]+1;
+      char *d = c;
+      char *e;
+      while (*c)
+       switch (*c)
+         {
+         case 'v':
+           verbose++;
+           c++;
+           break;
+         case 'f':
+           force++;
+           c++;
+           break;
+         case 'D':
+           demo_mode++;
+           c++;
+           break;
+         case 0:
+           break;
+         default:
+           if (e = strchr(opts, *c))
+             {
+               char *arg;
+               c++;
+               if (e[1] == ':')
+                 {
+                   if (*c)
+                     arg = c;
+                   else if (argc > 1)
+                     {
+                       arg = argv[1];
+                       argc--; argv++;
+                     }
+                   else
+                     usage(NULL);
+                   c = "";
+                 }
+               else
+                 arg = NULL;
+               if (!parse_generic_option(*e, pacc, arg))
+                 usage(NULL);
+             }
+           else
+             {
+               if (c != d)
+                 usage(NULL);
+               goto next;
+             }
+         }
+      argc--;
+      argv++;
+    }
+next:
+
+  pci_init(pacc);
+  pci_scan_bus(pacc);
+
+  while (argc)
+    {
+      char *c = argv[0];
+      char *d, *e, *f;
+      int n, i;
+      struct op *op;
+      unsigned long ll;
+      unsigned int lim;
+
+      if (*c == '-')
+       {
+         if (!c[1] || !strchr("sd", c[1]))
+           usage(NULL);
+         if (c[2])
+           d = (c[2] == '=') ? c+3 : c+2;
+         else if (argc > 1)
+           {
+             argc--;
+             argv++;
+             d = argv[0];
+           }
+         else
+           usage(NULL);
+         if (state != STATE_GOT_FILTER)
+           {
+             pci_filter_init(pacc, &filter);
+             state = STATE_GOT_FILTER;
+           }
+         switch (c[1])
+           {
+           case 's':
+             if (d = pci_filter_parse_slot(&filter, d))
+               die("-s: %s", d);
+             break;
+           case 'd':
+             if (d = pci_filter_parse_id(&filter, d))
+               die("-d: %s", d);
+             break;
+           default:
+             usage(NULL);
+           }
+       }
+      else if (state == STATE_INIT)
+       usage(NULL);
+      else
+       {
+         if (state == STATE_GOT_FILTER)
+           selected_devices = select_devices(&filter);
+         if (!selected_devices[0] && !force)
+           fprintf(stderr, "setpci: Warning: No devices selected for `%s'.\n", c);
+         state = STATE_GOT_OP;
+         /* look for setting of values and count how many */
+         d = strchr(c, '=');
+         if (d)
+           {
+             *d++ = 0;
+             if (!*d)
+               usage("Missing value");
+             for(e=d, n=1; *e; e++)
+               if (*e == ',')
+                 n++;
+             op = xmalloc(sizeof(struct op) + n*sizeof(struct value));
+           }
+         else
+           {
+             n = -1;
+             op = xmalloc(sizeof(struct op));
+           }
+         op->dev_vector = selected_devices;
+         op->num_values = n;
+         e = strchr(c, '.');
+         if (e)
+           {
+             *e++ = 0;
+             if (e[1])
+               usage("Missing width");
+             switch (*e & 0xdf)
+               {
+               case 'B':
+                 op->width = 1; break;
+               case 'W':
+                 op->width = 2; break;
+               case 'L':
+                 op->width = 4; break;
+               default:
+                 usage("Invalid width \"%c\"", *e);
+               }
+           }
+         else
+           op->width = 1;
+         ll = strtol(c, &f, 16);
+         if (f && *f)
+           {
+             const struct reg_name *r;
+             for(r = pci_reg_names; r->name; r++)
+               if (!strcasecmp(r->name, c))
+                 break;
+             if (!r->name)
+               usage("Unknown register \"%s\"", c);
+             if (e && op->width != r->width)
+               usage("Explicit width doesn't correspond with the named register \"%s\"", c);
+             ll = r->offset;
+             op->width = r->width;
+           }
+         if (ll > 0x1000 || ll + op->width*((n < 0) ? 1 : n) > 0x1000)
+           die("Register number out of range!");
+         if (ll & (op->width - 1))
+           die("Unaligned register address!");
+         op->addr = ll;
+         /* read in all the values to be set */
+         for(i=0; i<n; i++)
+           {
+             e = strchr(d, ',');
+             if (e)
+               *e++ = 0;
+             ll = strtoul(d, &f, 16);
+             lim = max_values[op->width];
+             if (f && *f && *f != ':')
+               usage("Invalid value \"%s\"", d);
+             if (ll > lim && ll < ~0UL - lim)
+               usage("Value \"%s\" is out of range", d);
+             op->values[i].value = ll;
+             if (f && *f == ':')
+               {
+                 d = ++f;
+                 ll = strtoul(d, &f, 16);
+                 if (f && *f)
+                   usage("Invalid mask \"%s\"", d);
+                 if (ll > lim && ll < ~0UL - lim)
+                   usage("Mask \"%s\" is out of range", d);
+                 op->values[i].mask = ll;
+                 op->values[i].value &= ll;
+               }
+             else
+               op->values[i].mask = ~0U;
+             d = e;
+           }
+         *last_op = op;
+         last_op = &op->next;
+         op->next = NULL;
+       }
+      argc--;
+      argv++;
+    }
+  if (state == STATE_INIT)
+    usage("No operation specified");
+
+  scan_ops(first_op);
+  execute(first_op);
+
+  return 0;
+}
diff --git a/setpci.man b/setpci.man
new file mode 100644 (file)
index 0000000..d682c37
--- /dev/null
@@ -0,0 +1,207 @@
+.TH setpci 8 "@TODAY@" "@VERSION@" "The PCI Utilities"
+.IX setpci
+.SH NAME
+setpci \- configure PCI devices
+.SH SYNOPSIS
+.B setpci
+.RB [ options ]
+.B devices
+.BR operations ...
+
+.SH DESCRIPTION
+.PP
+.B setpci
+is a utility for querying and configuring PCI devices.
+
+All numbers are entered in hexadecimal notation.
+
+Root privileges are necessary for almost all operations, excluding reads
+of the standard header of the configuration space on some operating systems.
+Please see
+.BR lspci(8)
+for details on access rights.
+
+.SH OPTIONS
+
+.SS General options
+.TP
+.B -v
+Tells
+.I setpci
+to be verbose and display detailed information about configuration space accesses.
+.TP
+.B -f
+Tells
+.I setpci
+not to complain when there's nothing to do (when no devices are selected).
+This option is intended for use in widely-distributed configuration scripts
+where it's uncertain whether the device in question is present in the machine
+or not.
+.TP
+.B -D
+`Demo mode' -- don't write anything to the configuration registers.
+It's useful to try
+.B setpci -vD
+to see what your complex sequence of
+.B setpci
+operations does before you actually execute it.
+.TP
+.B --version
+Shows
+.I setpci
+version. This option should be used stand-alone.
+
+.SS PCI access options
+.PP
+The PCI utilities use the PCI library to talk to PCI devices (see
+\fBpcilib\fP(7) for details). You can use the following options to
+influence its behavior:
+.TP
+.B -A <method>
+The library supports a variety of methods to access the PCI hardware.
+By default, it uses the first access method available, but you can use
+this option to override this decision. See \fB-A help\fP for a list of
+available methods and their descriptions.
+.TP
+.B -O <param>=<value>
+The behavior of the library is controlled by several named parameters.
+This option allows to set the value of any of the parameters. Use \fB-O help\fP
+for a list of known parameters and their default values.
+.TP
+.B -H1
+Use direct hardware access via Intel configuration mechanism 1.
+(This is a shorthand for \fB-A intel-conf1\fP.)
+.TP
+.B -H2
+Use direct hardware access via Intel configuration mechanism 2.
+(This is a shorthand for \fB-A intel-conf2\fP.)
+.TP
+.B -G
+Increase debug level of the library.
+
+.SH DEVICE SELECTION
+.PP
+Before each sequence of operations you need to select which devices you wish that
+operation to affect.
+.TP
+.B -s [[[[<domain>]:]<bus>]:][<slot>][.[<func>]]
+Show only devices in the specified domain (in case your machine has several host bridges,
+they can either share a common bus number space or each of them can address a PCI domain
+of its own; domains are numbered from 0 to ffff), bus (0 to ff), slot (0 to 1f) and function (0 to 7).
+Each component of the device address can be omitted or set to "*", both meaning "any value". All numbers are
+hexadecimal.  E.g., "0:" means all devices on bus 0, "0" means all functions of device 0
+on any bus, "0.3" selects third function of device 0 on all buses and ".4" shows only
+the fourth function of each device.
+.TP
+.B -d [<vendor>]:[<device>]
+Select devices with specified vendor and device ID. Both ID's are given in
+hexadecimal and may be omitted or given as "*", both meaning "any value".
+
+.SH OPERATIONS
+.PP
+To query value of a configuration register, just name it (either by typing its name or
+by typing register address with optional
+.BR .B ,
+.B .W
+or
+.B .L
+suffix specifying register width as byte, word or longword).
+.PP
+To set a register, write
+.BR reg = values
+where
+.B reg
+is the same as you would use to query the register and
+.B values
+is a comma-separated list of values you want to write starting with the given
+address. Each value to be written can be specified either as a hexadecimal number
+or as a
+.BR bits : mask
+pair which causes the bits corresponding to binary ones in the
+.B mask
+to be changed to values of the corresponding bits in the
+.B bits
+.
+
+.SH REGISTER NAMES
+.PP
+.B setpci
+knows the following configuration register names. See PCI bus specifications for their precise
+meaning or consult
+.B header.h
+or
+.B /usr/include/linux/pci.h
+for a couple of comments.
+.PP
+.nf
+VENDOR_ID
+DEVICE_ID
+COMMAND
+STATUS
+REVISION
+CLASS_PROG
+CLASS_DEVICE
+CACHE_LINE_SIZE
+LATENCY_TIMER
+HEADER_TYPE
+BIST
+BASE_ADDRESS_0
+BASE_ADDRESS_1
+BASE_ADDRESS_2
+BASE_ADDRESS_3
+BASE_ADDRESS_4
+BASE_ADDRESS_5
+CARDBUS_CIS
+SUBSYSTEM_VENDOR_ID
+SUBSYSTEM_ID
+ROM_ADDRESS
+INTERRUPT_LINE
+INTERRUPT_PIN
+MIN_GNT
+MAX_LAT
+PRIMARY_BUS
+SECONDARY_BUS
+SUBORDINATE_BUS
+SEC_LATENCY_TIMER
+IO_BASE
+IO_LIMIT
+SEC_STATUS
+MEMORY_BASE
+MEMORY_LIMIT
+PREF_MEMORY_BASE
+PREF_MEMORY_LIMIT
+PREF_BASE_UPPER32
+PREF_LIMIT_UPPER32
+IO_BASE_UPPER16
+IO_LIMIT_UPPER16
+BRIDGE_ROM_ADDRESS
+BRIDGE_CONTROL
+CB_CARDBUS_BASE
+CB_CAPABILITIES
+CB_SEC_STATUS
+CB_BUS_NUMBER
+CB_CARDBUS_NUMBER
+CB_SUBORDINATE_BUS
+CB_CARDBUS_LATENCY
+CB_MEMORY_BASE_0
+CB_MEMORY_LIMIT_0
+CB_MEMORY_BASE_1
+CB_MEMORY_LIMIT_1
+CB_IO_BASE_0
+CB_IO_BASE_0_HI
+CB_IO_LIMIT_0
+CB_IO_LIMIT_0_HI
+CB_IO_BASE_1
+CB_IO_BASE_1_HI
+CB_IO_LIMIT_1
+CB_IO_LIMIT_1_HI
+CB_SUBSYSTEM_VENDOR_ID
+CB_SUBSYSTEM_ID
+CB_LEGACY_MODE_BASE
+
+.SH SEE ALSO
+.BR lspci (8),
+.BR pcilib (7)
+
+.SH AUTHOR
+The PCI Utilities are maintained by Martin Mares <mj@ucw.cz>.
diff --git a/tests/PCI-X-bridges-and-domains b/tests/PCI-X-bridges-and-domains
new file mode 100644 (file)
index 0000000..94bbcbb
--- /dev/null
@@ -0,0 +1,558 @@
+0000:00:01.0 Co-processor: IBM: Unknown device 00e0 (rev 01)
+00: 14 10 e0 00 46 00 20 02 01 ff 40 0b 00 48 80 00
+10: 08 00 70 fd 08 00 80 fd 08 00 00 f4 08 00 00 f8
+20: 00 00 00 00 00 00 00 00 00 00 00 00 14 10 e1 00
+30: 00 00 00 00 00 00 00 00 00 00 00 00 ff 01 00 00
+40: ff ff ff ff 00 00 00 00 eb 0f 00 00 00 00 00 00
+50: 4d 00 08 00 2f 00 00 00 00 00 00 00 00 00 00 00
+60: 81 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+
+0000:00:03.0 ISA bridge: Symphony Labs W83C553 (rev 10)
+00: ad 10 65 05 07 00 00 02 10 00 01 06 00 00 80 00
+10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+40: 22 04 00 00 00 00 00 00 ff ff 00 00 00 00 01 02
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+80: e0 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00
+90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f0: 00 00 b5 03 01 01 00 00 00 00 00 00 00 00 00 00
+
+0001:00:02.0 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 02)
+00: 14 10 88 01 47 01 30 04 02 0f 04 06 20 f8 81 80
+10: 0c 00 ff ff 00 00 00 00 00 01 10 f8 01 f1 20 04
+20: 00 e0 f0 e3 01 00 01 00 00 00 00 00 00 00 00 00
+30: 00 00 00 00 a0 00 00 00 00 00 00 00 00 01 03 00
+40: 12 00 03 01 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: d1 10 00 00 00 55 55 01 55 aa 55 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 c0 00 04 00 00 00 00
+80: 00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00
+90: 44 44 44 44 00 00 00 00 44 44 44 44 00 00 00 00
+a0: 07 b0 03 00 10 00 03 00 00 00 00 00 00 00 00 00
+b0: 01 b8 0a 76 00 00 00 00 0c 00 00 00 01 00 01 01
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+f0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+
+0001:00:02.2 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 02)
+00: 14 10 88 01 47 01 30 04 02 0f 04 06 20 f8 81 80
+10: 0c 00 00 00 00 00 00 00 00 21 30 f8 01 f1 20 04
+20: 00 e4 f0 e7 01 00 01 00 00 00 00 00 00 00 00 00
+30: 01 00 01 00 a0 00 00 00 00 00 00 00 00 01 03 00
+40: 12 00 03 01 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: d1 30 00 00 00 55 55 01 55 aa 55 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 c0 00 04 00 00 00 00
+80: 00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00
+90: 44 44 44 44 00 00 00 00 44 44 44 44 00 00 00 00
+a0: 07 b0 00 00 12 00 03 00 00 00 00 00 00 00 00 00
+b0: 01 b8 0a 76 00 00 00 00 0c 00 00 00 01 00 01 01
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+f0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+
+0001:00:02.3 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 02)
+00: 14 10 88 01 47 01 30 04 02 0f 04 06 20 f8 81 80
+10: 0c 00 00 00 00 00 00 00 00 31 40 f8 01 f1 20 04
+20: 00 e8 f0 ef 01 00 01 00 00 00 00 00 00 00 00 00
+30: 02 00 02 00 a0 00 00 00 00 00 00 00 00 01 43 00
+40: 12 00 03 01 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: d1 40 00 00 00 55 55 01 55 aa 55 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 c0 00 04 00 00 00 00
+80: 00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00
+90: 44 44 44 44 00 00 00 00 44 44 44 44 00 00 00 00
+a0: 07 b0 00 00 13 00 03 00 00 00 00 00 00 00 00 00
+b0: 01 b8 0a 76 00 00 00 00 0c 00 00 00 01 00 01 01
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+f0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+
+0001:00:02.4 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 02)
+00: 14 10 88 01 47 01 30 04 02 0f 04 06 20 f8 81 80
+10: 0c 00 00 00 00 00 00 00 00 41 50 f8 01 f1 20 04
+20: 00 f0 f0 f7 01 00 01 00 00 00 00 00 00 00 00 00
+30: 03 00 03 00 a0 00 00 00 00 00 00 00 00 01 03 00
+40: 12 00 03 01 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: d1 50 00 00 00 55 55 01 55 aa 55 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 c0 00 04 00 00 00 00
+80: 00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00
+90: 44 44 44 44 00 00 00 00 44 44 44 44 00 00 00 00
+a0: 07 b0 03 00 14 00 03 00 00 00 00 00 00 00 00 00
+b0: 01 b8 0a 76 00 00 00 00 0c 00 00 00 01 00 01 01
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+f0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+
+0001:00:02.6 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 02)
+00: 14 10 88 01 47 01 30 04 02 0f 04 06 20 f8 81 80
+10: 0c 00 00 00 00 00 00 00 00 61 70 f8 01 f1 20 04
+20: 00 f8 e0 ff 01 00 01 00 00 00 00 00 00 00 00 00
+30: 04 00 04 00 a0 00 00 00 00 00 00 00 00 01 03 00
+40: 12 00 03 01 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: d1 70 00 00 00 55 55 01 55 aa 55 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 c0 00 04 00 00 00 00
+80: 00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00
+90: 44 44 44 44 00 00 00 00 44 44 44 44 00 00 00 00
+a0: 07 b0 03 00 16 00 03 00 00 00 00 00 00 00 00 00
+b0: 01 b8 0a 76 00 00 00 00 0c 00 00 00 01 00 01 01
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+f0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+
+0001:01:01.0 SCSI storage controller: LSI Logic / Symbios Logic 53c1010 66MHz  Ultra3 SCSI Adapter (rev 01)
+00: 00 10 21 00 57 01 30 02 01 00 00 01 20 4a 80 00
+10: 01 f8 00 00 04 50 00 e0 00 00 00 00 04 20 00 e0
+20: 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 10
+30: 00 00 00 00 40 00 00 00 00 00 00 00 73 01 11 12
+40: 01 00 02 06 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+
+0001:01:01.1 SCSI storage controller: LSI Logic / Symbios Logic 53c1010 66MHz  Ultra3 SCSI Adapter (rev 01)
+00: 00 10 21 00 57 01 30 02 01 00 00 01 20 4a 80 00
+10: 01 fc 00 00 04 40 00 e0 00 00 00 00 04 00 00 e0
+20: 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 10
+30: 00 00 00 00 40 00 00 00 00 00 00 00 74 02 11 12
+40: 01 00 02 06 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+
+0001:21:01.0 Ethernet controller: Intel Corporation 82557/8/9 [Ethernet Pro 100] (rev 0d)
+00: 86 80 29 12 47 01 90 02 0d 00 00 02 00 4a 00 00
+10: 00 00 03 e4 01 ec 01 00 00 00 00 e4 00 00 00 00
+20: 00 00 00 00 00 00 00 00 00 00 00 00 14 10 ff 01
+30: 00 00 02 e4 dc 00 00 00 00 00 00 00 75 01 08 38
+40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 01 00 22 7e
+e0: 00 40 00 4b 00 00 00 00 00 00 00 00 00 00 00 00
+f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+
+0001:41:01.0 Ethernet controller: Intel Corporation 82557/8/9 [Ethernet Pro 100] (rev 0d)
+00: 86 80 29 12 47 01 90 02 0d 00 00 02 00 4a 00 00
+10: 00 00 03 f0 01 ec 03 00 00 00 00 f0 00 00 00 00
+20: 00 00 00 00 00 00 00 00 00 00 00 00 14 10 ff 01
+30: 00 00 02 f0 dc 00 00 00 00 00 00 00 77 01 08 38
+40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 01 00 22 7e
+e0: 00 40 00 4b 00 00 00 00 00 00 00 00 00 00 00 00
+f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+
+0001:61:01.0 PCI bridge: Hint Corp HB6 Universal PCI-PCI bridge (non-transparent mode) (rev 13)
+00: 88 33 21 00 47 01 90 02 13 00 04 06 08 4a 01 00
+10: 00 00 00 00 00 00 00 00 61 62 62 80 11 01 80 22
+20: 00 f8 00 fb 01 01 f1 00 00 00 00 00 00 00 00 00
+30: 00 01 00 01 80 00 00 00 00 00 00 00 69 00 00 00
+40: 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+80: 01 90 02 f6 00 00 00 00 00 00 00 00 00 00 00 00
+90: 06 a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a0: 03 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00
+b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c0: 00 00 00 00 09 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f0: 88 33 21 00 00 00 00 00 00 00 00 00 00 00 00 00
+
+0001:62:00.0 VGA compatible controller: Matrox Graphics, Inc. G400/G450 (rev 85)
+00: 2b 10 25 05 02 00 90 02 85 00 00 03 20 48 00 00
+10: 08 00 00 f8 00 00 80 fa 00 00 00 fa 00 00 00 00
+20: 00 00 00 00 00 00 00 00 00 00 00 00 14 10 33 02
+30: 00 00 00 fb dc 00 00 00 00 00 00 00 79 01 10 20
+40: 60 15 0a c0 00 3c 00 00 10 ff ff 11 00 00 00 00
+50: 00 ac 00 00 09 a4 90 00 04 00 00 80 00 00 00 00
+60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 01 f0 22 00
+e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f0: 02 00 20 00 03 02 00 1f 00 00 00 00 00 00 00 00
+
+0002:00:02.0 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 02)
+00: 14 10 88 01 47 01 30 04 02 0f 04 06 20 f8 81 80
+10: 0c 00 ff ff 00 00 00 00 00 01 10 f8 01 f1 20 04
+20: 00 e0 f0 e7 01 00 01 00 00 00 00 00 00 00 00 00
+30: 00 00 00 00 a0 00 00 00 00 00 00 00 00 01 03 00
+40: 12 00 03 01 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: f1 11 00 00 00 11 11 01 11 ee 11 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 c0 00 04 00 00 00 00
+80: 00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00
+90: 44 44 44 44 00 00 00 00 44 44 44 44 00 00 00 00
+a0: 07 b0 c3 00 10 00 03 00 00 00 00 00 00 00 00 00
+b0: 01 b8 0a 76 00 00 00 00 0c 00 00 00 01 00 01 01
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+f0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+
+0002:00:02.2 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 02)
+00: 14 10 88 01 47 01 30 04 02 0f 04 06 20 f8 81 80
+10: 0c 00 00 00 00 00 00 00 00 21 30 f8 01 f1 20 04
+20: 00 e8 f0 ef 01 00 01 00 00 00 00 00 00 00 00 00
+30: 01 00 01 00 a0 00 00 00 00 00 00 00 00 01 43 00
+40: 12 00 03 01 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: f1 31 00 00 00 11 11 01 11 ee 11 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 c0 00 04 00 00 00 00
+80: 00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00
+90: 44 44 44 44 00 00 00 00 44 44 44 44 00 00 00 00
+a0: 07 b0 03 00 12 00 03 00 00 00 00 00 00 00 00 00
+b0: 01 b8 0a 76 00 00 00 00 0c 00 00 00 01 00 01 01
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+f0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+
+0002:00:02.4 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 02)
+00: 14 10 88 01 47 01 30 04 02 0f 04 06 20 f8 81 80
+10: 0c 00 00 00 00 00 00 00 00 41 50 f8 01 f1 20 04
+20: 00 f0 f0 f7 01 00 01 00 00 00 00 00 00 00 00 00
+30: 02 00 02 00 a0 00 00 00 00 00 00 00 00 01 03 00
+40: 12 00 03 01 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: f1 51 00 00 00 11 11 01 11 ee 11 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 c0 00 04 00 00 00 00
+80: 00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00
+90: 44 44 44 44 00 00 00 00 44 44 44 44 00 00 00 00
+a0: 07 b0 03 00 14 00 03 00 00 00 00 00 00 00 00 00
+b0: 01 b8 0a 76 00 00 00 00 0c 00 00 00 01 00 01 01
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+f0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+
+0002:00:02.6 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 02)
+00: 14 10 88 01 47 01 30 04 02 0f 04 06 20 f8 81 80
+10: 0c 00 00 00 00 00 00 00 00 61 70 f8 01 f1 20 04
+20: 00 f8 e0 ff 01 00 01 00 00 00 00 00 00 00 00 00
+30: 03 00 03 00 a0 00 00 00 00 00 00 00 00 01 43 00
+40: 12 00 03 01 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: f1 71 00 00 00 11 11 01 11 ee 11 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 c0 00 04 00 00 00 00
+80: 00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00
+90: 44 44 44 44 00 00 00 00 44 44 44 44 00 00 00 00
+a0: 07 b0 03 00 16 00 03 00 00 00 00 00 00 00 00 00
+b0: 01 b8 0a 76 00 00 00 00 0c 00 00 00 01 00 01 01
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+f0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+
+0002:01:01.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01)
+00: 86 80 0f 10 47 01 30 02 01 00 00 02 20 90 00 00
+10: 04 00 08 e0 00 00 00 00 04 00 04 e0 00 00 00 00
+20: 01 fc 00 00 00 00 00 00 00 00 00 00 14 10 69 02
+30: 00 00 00 e0 dc 00 00 00 00 00 00 00 83 01 ff 00
+40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 01 e4 22 00
+e0: 00 00 00 00 07 f0 08 00 08 01 43 04 00 00 00 00
+f0: 05 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00
+
+0002:41:01.0 PCI bridge: Intel Corporation 21154 PCI-to-PCI Bridge
+00: 86 80 54 b1 47 01 90 02 00 00 04 06 20 4a 01 00
+10: 00 00 00 00 00 00 00 00 41 42 42 80 e1 e1 80 22
+20: 00 f0 40 f0 01 01 f1 00 00 00 00 00 00 00 00 00
+30: 02 00 02 00 dc 00 00 00 00 00 00 00 00 00 00 00
+40: 12 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: 00 00 00 00 00 00 00 f0 00 00 00 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 01 00 01 00
+e0: 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00
+f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+
+0002:42:00.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 26)
+00: 23 10 00 20 47 01 80 02 26 00 00 02 00 4a 00 00
+10: 01 e0 02 00 00 30 40 f0 00 00 00 00 00 00 00 00
+20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+30: 00 00 30 f0 00 00 00 00 00 00 00 00 87 01 06 ff
+40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+
+0002:42:01.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 26)
+00: 23 10 00 20 47 01 80 02 26 00 00 02 00 4a 00 00
+10: 01 e4 02 00 00 20 40 f0 00 00 00 00 00 00 00 00
+20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+30: 00 00 20 f0 00 00 00 00 00 00 00 00 88 01 06 ff
+40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+
+0002:42:02.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 26)
+00: 23 10 00 20 47 01 80 02 26 00 00 02 00 4a 00 00
+10: 01 e8 02 00 00 10 40 f0 00 00 00 00 00 00 00 00
+20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+30: 00 00 10 f0 00 00 00 00 00 00 00 00 87 01 06 ff
+40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+
+0002:42:03.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 26)
+00: 23 10 00 20 47 01 80 02 26 00 00 02 00 4a 00 00
+10: 01 ec 02 00 00 00 40 f0 00 00 00 00 00 00 00 00
+20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+30: 00 00 00 f0 00 00 00 00 00 00 00 00 88 01 06 ff
+40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+
+0003:00:02.0 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 02)
+00: 14 10 88 01 47 01 30 04 02 0f 04 06 20 f8 81 80
+10: 0c 00 ff ff 00 00 00 00 00 01 10 f8 01 f1 20 04
+20: 00 e0 f0 e7 01 00 01 00 00 00 00 00 00 00 00 00
+30: 00 00 00 00 a0 00 00 00 00 00 00 00 00 01 43 00
+40: 12 00 03 01 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: f1 11 00 00 00 04 04 00 04 fb 04 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 c0 00 04 00 00 00 00
+80: 00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00
+90: 44 44 44 44 00 00 00 00 44 44 44 44 00 00 00 00
+a0: 07 b0 03 00 10 00 03 00 00 00 00 00 00 00 00 00
+b0: 01 b8 0a 76 00 00 00 00 0c 00 00 00 01 00 01 01
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+f0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+
+0003:00:02.2 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 02)
+00: 14 10 88 01 47 01 30 04 02 0f 04 06 20 f8 81 80
+10: 0c 00 00 00 00 00 00 00 00 21 30 f8 01 f1 20 04
+20: 00 e8 f0 ef 01 00 01 00 00 00 00 00 00 00 00 00
+30: 01 00 01 00 a0 00 00 00 00 00 00 00 00 01 03 00
+40: 12 00 03 01 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: f1 31 00 00 00 04 04 00 04 fb 04 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 c0 00 04 00 00 00 00
+80: 00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00
+90: 44 44 44 44 00 00 00 00 44 44 44 44 00 00 00 00
+a0: 07 b0 03 00 12 00 03 00 00 00 00 00 00 00 00 00
+b0: 01 b8 0a 76 00 00 00 00 0c 00 00 00 01 00 01 01
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+f0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+
+0003:00:02.6 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 02)
+00: 14 10 88 01 47 01 30 04 02 0f 04 06 20 f8 81 80
+10: 0c 00 00 00 00 00 00 00 00 61 70 f8 01 f1 20 04
+20: 00 f0 f0 f7 01 00 01 00 00 00 00 00 00 00 00 00
+30: 02 00 02 00 a0 00 00 00 00 00 00 00 00 01 43 00
+40: 12 00 03 01 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: f1 71 00 00 00 04 04 00 04 fb 04 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 c0 00 04 00 00 00 00
+80: 00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00
+90: 44 44 44 44 00 00 00 00 44 44 44 44 00 00 00 00
+a0: 07 b0 03 00 16 00 03 00 00 00 00 00 00 00 00 00
+b0: 01 b8 0a 76 00 00 00 00 0c 00 00 00 01 00 01 01
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+f0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+
+0003:21:01.0 Ethernet controller: Intel Corporation 82557/8/9 [Ethernet Pro 100] (rev 0d)
+00: 86 80 29 12 47 01 90 02 0d 00 00 02 00 4a 00 00
+10: 00 00 03 e8 01 ec 01 00 00 00 00 e8 00 00 00 00
+20: 00 00 00 00 00 00 00 00 00 00 00 00 14 10 ff 01
+30: 00 00 02 e8 dc 00 00 00 00 00 00 00 a5 01 08 38
+40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 01 00 22 7e
+e0: 00 40 00 4b 00 00 00 00 00 00 00 00 00 00 00 00
+f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+
+0004:00:02.0 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 02)
+00: 14 10 88 01 47 01 30 04 02 0f 04 06 20 f8 81 80
+10: 0c 00 ff ff 00 00 00 00 00 01 10 f8 01 f1 20 04
+20: 00 e0 f0 e7 01 00 01 00 00 00 00 00 00 00 00 00
+30: 00 00 00 00 a0 00 00 00 00 00 00 00 00 01 03 00
+40: 12 00 03 01 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: f1 12 00 00 00 01 01 00 01 fe 01 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 c0 00 04 00 00 00 00
+80: 00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00
+90: 44 44 44 44 00 00 00 00 44 44 44 44 00 00 00 00
+a0: 07 b0 03 00 10 00 03 00 00 00 00 00 00 00 00 00
+b0: 01 b8 0a 76 00 00 00 00 0c 00 00 00 01 00 01 01
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+f0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+
+0004:00:02.2 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 02)
+00: 14 10 88 01 47 01 30 04 02 0f 04 06 20 f8 81 80
+10: 0c 00 00 00 00 00 00 00 00 21 30 f8 01 f1 20 04
+20: 00 e8 f0 ef 01 00 01 00 00 00 00 00 00 00 00 00
+30: 01 00 01 00 a0 00 00 00 00 00 00 00 00 01 43 00
+40: 12 00 03 01 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: f1 32 00 00 00 01 01 00 01 fe 01 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 c0 00 04 00 00 00 00
+80: 00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00
+90: 44 44 44 44 00 00 00 00 44 44 44 44 00 00 00 00
+a0: 07 b0 03 00 12 00 03 00 00 00 00 00 00 00 00 00
+b0: 01 b8 0a 76 00 00 00 00 0c 00 00 00 01 00 01 01
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+f0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+
+0004:00:02.6 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 02)
+00: 14 10 88 01 47 01 30 04 02 0f 04 06 20 f8 81 80
+10: 0c 00 00 00 00 00 00 00 00 61 70 f8 01 f1 20 04
+20: 00 f0 f0 f7 01 00 01 00 00 00 00 00 00 00 00 00
+30: 02 00 02 00 a0 00 00 00 00 00 00 00 00 01 43 00
+40: 12 00 03 01 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: f1 72 00 00 00 01 01 00 01 fe 01 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 c0 00 04 00 00 00 00
+80: 00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00
+90: 44 44 44 44 00 00 00 00 44 44 44 44 00 00 00 00
+a0: 07 b0 03 00 16 00 03 00 00 00 00 00 00 00 00 00
+b0: 01 b8 0a 76 00 00 00 00 0c 00 00 00 01 00 01 01
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+f0: 00 00 ff ff 00 00 ff ff 00 00 ff ff 00 00 ff ff
+
+0004:01:01.0 Ethernet controller: Intel Corporation 82557/8/9 [Ethernet Pro 100] (rev 0d)
+00: 86 80 29 12 47 01 90 02 0d 00 00 02 00 4a 00 00
+10: 00 00 03 e0 01 fc 00 00 00 00 00 e0 00 00 00 00
+20: 00 00 00 00 00 00 00 00 00 00 00 00 14 10 ff 01
+30: 00 00 02 e0 dc 00 00 00 00 00 00 00 b3 01 08 38
+40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 01 00 22 7e
+e0: 00 40 00 4b 00 00 00 00 00 00 00 00 00 00 00 00
+f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+
diff --git a/tests/cap-MSI-mapping b/tests/cap-MSI-mapping
new file mode 100644 (file)
index 0000000..30bd01d
--- /dev/null
@@ -0,0 +1,17 @@
+0a:01.0 PCI bridge: Broadcom HT2100 PCI-Express Bridge (rev a2) (prog-if 01 [Subtractive decode])
+00: 66 11 40 01 47 00 10 00 a2 01 04 06 40 00 01 00
+10: 00 00 00 00 00 00 00 00 0a 0b 0b 00 51 51 00 20
+20: 60 ff 60 ff f1 ff 01 00 ff ff ff ff 00 00 00 00
+30: 00 00 00 00 a0 00 00 00 00 00 00 00 00 01 01 00
+40: 00 00 00 00 01 00 01 00 01 00 00 00 00 00 01 00
+50: 08 00 a1 00 20 00 11 11 40 00 11 77 40 05 75 00
+60: 02 00 75 00 00 00 00 00 00 00 00 00 0c 05 03 03
+70: 00 00 00 00 00 00 00 00 0d 50 00 00 00 00 00 00
+80: 05 78 82 00 00 00 00 00 00 00 00 00 00 00 00 00
+90: 00 00 00 00 00 00 00 00 01 80 03 c8 08 00 00 00
+a0: 08 b0 01 a8 00 00 e0 fe 0f 00 00 00 00 00 00 00
+b0: 10 98 41 00 02 80 00 00 10 08 00 00 01 6d 1a 01
+c0: 08 00 81 20 00 00 08 00 c0 03 48 01 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f0: 01 00 08 01 00 00 00 00 00 00 00 00 00 00 00 03
diff --git a/tests/cap-debug-port b/tests/cap-debug-port
new file mode 100644 (file)
index 0000000..7b785ee
--- /dev/null
@@ -0,0 +1,17 @@
+0000:00:02.1 USB Controller: nVidia Corporation CK804 USB Controller (rev a3)
+00: de 10 5b 00 06 00 b0 00 a3 20 03 0c 00 00 80 00
+10: 00 00 b0 fe 00 00 00 00 00 00 00 00 00 00 00 00
+20: 00 00 00 00 00 00 00 00 00 00 00 00 62 14 85 71
+30: 00 00 00 00 44 00 00 00 00 00 00 00 03 02 03 01
+40: 62 14 85 71 0a 80 98 20 00 00 00 00 00 00 00 00
+50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+60: 20 20 01 00 00 60 18 85 03 3c 3f 01 00 00 00 00
+70: 00 00 08 05 00 10 20 80 89 3d b6 22 77 25 04 00
+80: 01 00 02 fe 00 00 00 00 00 00 00 00 15 16 00 00
+90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+a0: 01 00 00 00 00 00 08 c0 00 00 00 00 00 00 00 00
+b0: 00 11 22 33 44 00 00 00 ff 03 00 00 00 00 00 00
+c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+f0: 00 00 00 00 00 00 00 00 10 ff ff ff 00 00 30 07
diff --git a/update-pciids.man b/update-pciids.man
new file mode 100644 (file)
index 0000000..6b1d65c
--- /dev/null
@@ -0,0 +1,34 @@
+.TH update-pciids 8 "@TODAY@" "@VERSION@" "The PCI Utilities"
+.IX update-pciids
+
+.SH NAME
+update-pciids \- download new version of the PCI ID list
+
+.SH SYNOPSIS
+.B update-pciids
+.RB [ -q ]
+
+.SH DESCRIPTION
+.B update-pciids
+fetches the current version of the pci.ids file from the primary distribution
+site and installs it.
+
+This utility requires curl, wget or lynx to be installed. If gzip or bzip2
+are available, it automatically downloads the compressed version of the list.
+
+.SH OPTIONS
+.TP
+.B -q
+Be quiet and do not report anything except errors.
+
+.SH FILES
+.TP
+.B @IDSDIR@/pci.ids
+Here we install the new list.
+
+.SH SEE ALSO
+.BR lspci (8),
+.BR setpci (8)
+
+.SH AUTHOR
+The PCI Utilities are maintained by Martin Mares <mj@ucw.cz>.
diff --git a/update-pciids.sh b/update-pciids.sh
new file mode 100755 (executable)
index 0000000..34ed2c8
--- /dev/null
@@ -0,0 +1,128 @@
+#!/bin/sh
+
+# update-pciids.sh is licensed under the GNU General Public License
+# (GPL) version 2 or above.
+# 
+# Copyright (C) 2008  Anibal Monsalve Salazar <anibal@debian.org>
+# 
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# Please read the "COPYING" file in the archive root, or visit
+# http://www.gnu.org/licenses/gpl.html, for information about the GPL.
+#
+# This scipt is a rewrite of a script with the same name by
+# Martin Mares.
+
+set -e
+
+#URL="http://pci-ids.ucw.cz/pci.ids"
+URL="http://pciids.sourceforge.net/v2.2/pci.ids"
+FILE="pci.ids"
+
+RM="/bin/rm"
+MV="/bin/mv"
+SED="/bin/sed"
+GREP="/bin/grep"
+GZIP="/bin/gzip"
+ECHO="/bin/echo"
+CHMOD="/bin/chmod"
+GUNZIP="/bin/gunzip"
+BUNZIP2="/bin/bunzip2"
+TOUCH="/usr/bin/touch"
+WGET="/usr/bin/wget"
+CURL="/usr/bin/curl"
+LYNX="/usr/bin/lynx"
+
+NEWFILE="$FILE.new"
+OLDFILE="$FILE.old"
+
+if [ "$1" = "-q" ]
+then
+    quiet="yes"
+else
+    quiet="no"
+fi
+
+if ! $TOUCH $NEWFILE > /dev/null 2>&1
+then
+    $ECHO >&2 "update-pciids: $NEWFILE is read-only"
+    exit 1
+fi
+
+[ -f $NEWFILE ]     && $RM $NEWFILE
+[ -f $NEWFILE.bz2 ] && $RM $NEWFILE.bz2
+[ -f $NEWFILE.gz ]  && $RM $NEWFILE.gz
+
+if [ -x $BUNZIP2 ]
+then
+    EXT=".bz2"
+    UNZIP=$BUNZIP2
+elif [ -x $GUNZIP ]
+then
+    EXT=".gz"
+    UNZIP=$GUNZIP
+else
+    $ECHO >&2 "update-pciids: cannot find bunzip2 or gunzip"
+    exit 1
+fi
+
+if [ -x $WGET ]
+then
+    $WGET -nv -O $NEWFILE$EXT $URL$EXT > /dev/null 2>&1
+elif [ -x $CURL ]
+then
+    $CURL -o $NEWFILE$EXT $URL$EXT > /dev/null 2>&1
+elif [ -x $LYNX ]
+then
+    $LYNX -source $URL$EXT > $NEWFILE$EXT
+else
+    $ECHO >&2 "update-pciids: cannot find wget, curl or lynx"
+    exit 1
+fi
+
+$UNZIP < $NEWFILE$EXT > $NEWFILE
+$RM $NEWFILE$EXT
+
+if ! $GREP > /dev/null "^C " $NEWFILE
+then
+    $ECHO >&2 "update-pciids: missing class info, probably truncated file"
+    exit 1
+fi
+
+date=$( $GREP -E "^#[[:space:]]Date:[[:space:]]*" $NEWFILE 2> /dev/null | $SED "s/^#[[:space:]]Date:[[:space:]]*//" )
+
+if [ -z "$date" ]
+then
+    $ECHO >&2 "update-pciids: missing snapshot date, probably truncated file"
+    exit 1
+fi 
+
+if [ -f $FILE ]
+then
+    [ -f $OLDFILE ] && $RM $OLDFILE
+    $MV $FILE $OLDFILE
+fi
+
+$MV $NEWFILE $FILE
+$TOUCH -d "$date" $FILE
+
+if [ -f $FILE.gz ]
+then
+    [ -f $OLDFILE.gz ] && $RM $OLDFILE.gz
+    $MV $FILE.gz $OLDFILE.gz
+fi
+
+if [ $quiet = "no" ]
+then
+    $ECHO "Downloaded daily snapshot dated $date"
+fi
+
+exit 0
diff --git a/win32/config.h b/win32/config.h
new file mode 100644 (file)
index 0000000..7df065c
--- /dev/null
@@ -0,0 +1,6 @@
+#define PCI_ARCH_I386
+#define PCI_OS_WINDOWS
+#define PCI_HAVE_PM_INTEL_CONF
+#define PCI_IDS "pci.ids"
+#define PCI_PATH_IDS_DIR "."
+#define PCILIB_VERSION "3.0.0"
diff --git a/win32/config.mk b/win32/config.mk
new file mode 100644 (file)
index 0000000..98240c0
--- /dev/null
@@ -0,0 +1,10 @@
+# TOOLPREFIX is for cross compiling
+
+CC=$(TOOLPREFIX)gcc
+LD=$(TOOLPREFIX)ld
+AR=$(TOOLPREFIX)ar
+RANLIB=$(TOOLPREFIX)ranlib
+
+PCI_ARCH_I386=yes
+PCI_OS_WINDOWS=yes
+PCI_HAVE_PM_INTEL_CONF=yes