Source :


* Copyright (c) 2002 University of Notre Dame du Lac
* Copyright (c) 2002 University of Utah
* Copyright (c) 1982, 1986, 1989, 1991, 1992, 1993
* The Regents of the University of California. All rights reserved.
* (c) UNIX System Laboratories, Inc.
* Portions of this file developed by:
* Lambert Schaelicke, University of Utah and University of Notre Dame du Lac
* Mike Parker, University of Utah
* All or some portions of this file are derived from material licensed
* to the University of California by American Telephone and Telegraph
* Co. or Unix System Laboratories, Inc. and are reproduced herein with
* the permission of UNIX System Laboratories, Inc.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley, the University of Notre Dame du Lac, the
* University of Utah and their contributors.
* 4. Neither the name of the Universities nor the names of their
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.

/* $NetBSD: pcidevs,v 1.530 2003/04/28 08:29:52 haya Exp $ */

* Copyright (c) 1995, 1996 Christopher G. Demetriou
* All rights reserved.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by Christopher G. Demetriou
* for the NetBSD Project.
* 4. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission

* NOTE: a fairly complete list of PCI codes can be found at:
* which replaces the database found at
* (but it doesn't always seem to match vendor documentation)

* List of known PCI vendors

vendor PEAK 0x001c Peak System Technik
vendor MARTINMARIETTA 0x003d Martin-Marietta Corporation
vendor HAUPPAUGE 0x0070 Hauppauge Computer Works
vendor DYNALINK 0x0675 Dynalink
vendor COMPAQ 0x0e11 Compaq
vendor SYMBIOS 0x1000 Symbios Logic
vendor ATI 0x1002 ATI Technologies
vendor ULSI 0x1003 ULSI Systems
vendor VLSI 0x1004 VLSI Technology
vendor AVANCE 0x1005 Avance Logic
vendor REPLY 0x1006 Reply Group
vendor NETFRAME 0x1007 NetFrame Systems
vendor EPSON 0x1008 Epson
vendor PHOENIX 0x100a Phoenix Technologies
vendor NS 0x100b National Semiconductor
vendor TSENG 0x100c Tseng Labs
vendor AST 0x100d AST Research
vendor WEITEK 0x100e Weitek
vendor VIDEOLOGIC 0x1010 Video Logic
vendor DEC 0x1011 Digital Equipment
vendor MICRONICS 0x1012 Micronics Computers
vendor CIRRUS 0x1013 Cirrus Logic
vendor IBM 0x1014 IBM
vendor LSIL 0x1015 LSI Logic Corp of Canada
vendor ICLPERSONAL 0x1016 ICL Personal Systems
vendor SPEA 0x1017 SPEA Software
vendor UNISYS 0x1018 Unisys Systems
vendor ELITEGROUP 0x1019 Elitegroup Computer Systems
vendor NCR 0x101a AT&T Global Information Systems
vendor VITESSE 0x101b Vitesse Semiconductor
vendor WD 0x101c Western Digital
vendor AMI 0x101e American Megatrends
vendor PICTURETEL 0x101f PictureTel
vendor HITACHICOMP 0x1020 Hitachi Computer Products
vendor OKI 0x1021 OKI Electric Industry
vendor AMD 0x1022 Advanced Micro Devices
vendor TRIDENT 0x1023 Trident Microsystems
vendor ZENITH 0x1024 Zenith Data Systems
vendor ACER 0x1025 Acer
vendor DELL 0x1028 Dell Computer
vendor SNI 0x1029 Siemens Nixdorf AG
vendor LSILOGIC 0x102a LSI Logic, Headland div.
vendor MATROX 0x102b Matrox
vendor CHIPS 0x102c Chips and Technologies
vendor WYSE 0x102d WYSE Technology
vendor OLIVETTI 0x102e Olivetti Advanced Technology
vendor TOSHIBA 0x102f Toshiba America
vendor TMCRESEARCH 0x1030 TMC Research
vendor MIRO 0x1031 Miro Computer Products
vendor COMPAQ2 0x1032 Compaq (2nd PCI Vendor ID)
vendor NEC 0x1033 NEC
vendor BURNDY 0x1034 Burndy
vendor COMPCOMM 0x1035 Comp. & Comm. Research Lab
vendor FUTUREDOMAIN 0x1036 Future Domain
vendor HITACHIMICRO 0x1037 Hitach Microsystems
vendor AMP 0x1038 AMP
vendor SIS 0x1039 Silicon Integrated System
vendor SEIKOEPSON 0x103a Seiko Epson
vendor TATUNGAMERICA 0x103b Tatung Co. of America
vendor HP 0x103c Hewlett-Packard
vendor SOLLIDAY 0x103e Solliday Engineering
vendor LOGICMODELLING 0x103f Logic Modeling
vendor KPC 0x1040 Kubota Pacific
vendor COMPUTREND 0x1041 Computrend
vendor PCTECH 0x1042 PC Technology
vendor ASUSTEK 0x1043 Asustek Computer
vendor DPT 0x1044 Distributed Processing Technology
vendor OPTI 0x1045 Opti
vendor IPCCORP 0x1046 IPC Corporation
vendor GENOA 0x1047 Genoa Systems
vendor ELSA 0x1048 Elsa
vendor FOUNTAINTECH 0x1049 Fountain Technology
vendor SGSTHOMSON 0x104a SGS Thomson Microelectric
vendor BUSLOGIC 0x104b BusLogic
vendor TI 0x104c Texas Instruments
vendor SONY 0x104d Sony
vendor OAKTECH 0x104e Oak Technology
vendor COTIME 0x104f Co-time Computer
vendor WINBOND 0x1050 Winbond Electronics
vendor ANIGMA 0x1051 Anigma
vendor YOUNGMICRO 0x1052 Young Micro Systems
vendor HITACHI 0x1054 Hitachi
vendor EFARMICRO 0x1055 Efar Microsystems
vendor ICL 0x1056 ICL
vendor MOT 0x1057 Motorola
vendor ETR 0x1058 Electronics & Telec. RSH
vendor TEKNOR 0x1059 Teknor Microsystems
vendor PROMISE 0x105a Promise Technology
vendor FOXCONN 0x105b Foxconn International
vendor WIPRO 0x105c Wipro Infotech
vendor NUMBER9 0x105d Number 9 Computer Company
vendor VTECH 0x105e Vtech Computers
vendor INFOTRONIC 0x105f Infotronic America
vendor UMC 0x1060 United Microelectronics
vendor ITT 0x1061 I. T. T.
vendor MASPAR 0x1062 MasPar Computer
vendor OCEANOA 0x1063 Ocean Office Automation
vendor ALCATEL 0x1064 Alcatel CIT
vendor TEXASMICRO 0x1065 Texas Microsystems
vendor PICOPOWER 0x1066 Picopower Technology
vendor MITSUBISHI 0x1067 Mitsubishi Electronics
vendor DIVERSIFIED 0x1068 Diversified Technology
vendor MYLEX 0x1069 Mylex
vendor ATEN 0x106a Aten Research
vendor APPLE 0x106b Apple Computer
vendor HYUNDAI 0x106c Hyundai Electronics America
vendor SEQUENT 0x106d Sequent
vendor DFI 0x106e DFI
vendor CITYGATE 0x106f City Gate Development
vendor DAEWOO 0x1070 Daewoo Telecom
vendor MITAC 0x1071 Mitac
vendor GIT 0x1072 GIT Co.
vendor YAMAHA 0x1073 Yamaha
vendor NEXGEN 0x1074 NexGen Microsystems
vendor AIR 0x1075 Advanced Integration Research
vendor CHAINTECH 0x1076 Chaintech Computer
vendor QLOGIC 0x1077 Q Logic
vendor CYRIX 0x1078 Cyrix Corporation
vendor IBUS 0x1079 I-Bus
vendor NETWORTH 0x107a NetWorth
vendor GATEWAY 0x107b Gateway 2000
vendor GOLDSTART 0x107c Goldstar
vendor LEADTEK 0x107d LeadTek Research
vendor INTERPHASE 0x107e Interphase
vendor DATATECH 0x107f Data Technology Corporation
vendor CONTAQ 0x1080 Contaq Microsystems
vendor SUPERMAC 0x1081 Supermac Technology
vendor EFA 0x1082 EFA Corporation of America
vendor FOREX 0x1083 Forex Computer
vendor PARADOR 0x1084 Parador
vendor TULIP 0x1085 Tulip Computers
vendor JBOND 0x1086 J. Bond Computer Systems
vendor CACHECOMP 0x1087 Cache Computer
vendor MICROCOMP 0x1088 Microcomputer Systems
vendor DG 0x1089 Data General Corporation
vendor BIT3 0x108a Bit3 Computer Corp.
vendor ELONEX 0x108c Elonex PLC c/o Oakleigh Systems
vendor OLICOM 0x108d Olicom
vendor SUN 0x108e Sun Microsystems, Inc.
vendor SYSTEMSOFT 0x108f Systemsoft
vendor ENCORE 0x1090 Encore Computer
vendor INTERGRAPH 0x1091 Intergraph
vendor DIAMOND 0x1092 Diamond Computer Systems
vendor NATIONALINST 0x1093 National Instruments
vendor FICOMP 0x1094 First Int'l Computers
vendor CMDTECH 0x1095 CMD Technology
vendor ALACRON 0x1096 Alacron
vendor APPIAN 0x1097 Appian Technology
vendor QUANTUMDESIGNS 0x1098 Quantum Designs
vendor SAMSUNGELEC 0x1099 Samsung Electronics
vendor PACKARDBELL 0x109a Packard Bell
vendor GEMLIGHT 0x109b Gemlight Computer
vendor MEGACHIPS 0x109c Megachips
vendor ZIDA 0x109d Zida Technologies
vendor BROOKTREE 0x109e Brooktree
vendor TRIGEM 0x109f Trigem Computer
vendor MEIDENSHA 0x10a0 Meidensha
vendor JUKO 0x10a1 Juko Electronics
vendor QUANTUM 0x10a2 Quantum
vendor EVEREX 0x10a3 Everex Systems
vendor GLOBE 0x10a4 Globe Manufacturing Sales
vendor RACAL 0x10a5 Racal Interlan
vendor INFORMTECH 0x10a6 Informtech Industrial
vendor BENCHMARQ 0x10a7 Benchmarq Microelectronics
vendor SIERRA 0x10a8 Sierra Semiconductor
vendor SGI 0x10a9 Silicon Graphics
vendor ACC 0x10aa ACC Microelectronics
vendor DIGICOM 0x10ab Digicom
vendor HONEYWELL 0x10ac Honeywell IASD
vendor SYMPHONY 0x10ad Symphony Labs
vendor CORNERSTONE 0x10ae Cornerstone Technology
vendor MICROCOMPSON 0x10af Micro Computer Sysytems (M) SON
vendor CARDEXPER 0x10b0 CardExpert Technology
vendor CABLETRON 0x10b1 Cabletron Systems
vendor RAYETHON 0x10b2 Raytheon
vendor DATABOOK 0x10b3 Databook
vendor STB 0x10b4 STB Systems
vendor PLX 0x10b5 PLX Technology
vendor MADGE 0x10b6 Madge Networks
vendor 3COM 0x10b7 3Com
vendor SMC 0x10b8 Standard Microsystems
vendor ALI 0x10b9 Acer Labs
vendor MITSUBISHIELEC 0x10ba Mitsubishi Electronics
vendor DAPHA 0x10bb Dapha Electronics
vendor ALR 0x10bc Advanced Logic Research
vendor SURECOM 0x10bd Surecom Technology
vendor TSENGLABS 0x10be Tseng Labs International
vendor MOST 0x10bf Most
vendor BOCA 0x10c0 Boca Research
vendor ICM 0x10c1 ICM
vendor AUSPEX 0x10c2 Auspex Systems
vendor SAMSUNGSEMI 0x10c3 Samsung Semiconductors
vendor AWARD 0x10c4 Award Software Int'l
vendor XEROX 0x10c5 Xerox
vendor RAMBUS 0x10c6 Rambus
vendor MEDIAVIS 0x10c7 Media Vision
vendor NEOMAGIC 0x10c8 Neomagic
vendor DATAEXPERT 0x10c9 Dataexpert
vendor FUJITSU 0x10ca Fujitsu
vendor OMRON 0x10cb Omron
vendor MENTOR 0x10cc Mentor ARC
vendor ADVSYS 0x10cd Advanced System Products
vendor RADIUS 0x10ce Radius
vendor CITICORP 0x10cf Citicorp TTI
vendor FUJITSU2 0x10d0 Fujitsu Limited (2nd PCI Vendor ID)
vendor FUTUREPLUS 0x10d1 Future+ Systems
vendor MOLEX 0x10d2 Molex
vendor JABIL 0x10d3 Jabil Circuit
vendor HAULON 0x10d4 Hualon Microelectronics
vendor AUTOLOGIC 0x10d5 Autologic
vendor CETIA 0x10d6 Cetia
vendor BCM 0x10d7 BCM Advanced
vendor APL 0x10d8 Advanced Peripherals Labs
vendor MACRONIX 0x10d9 Macronix
vendor THOMASCONRAD 0x10da Thomas-Conrad
vendor ROHM 0x10db Rohm Research
vendor CERN 0x10dc CERN/ECP/EDU
vendor ES 0x10dd Evans & Sutherland
vendor NVIDIA 0x10de Nvidia Corporation
vendor EMULEX 0x10df Emulex
vendor IMS 0x10e0 Integrated Micro Solutions
vendor TEKRAM 0x10e1 Tekram Technology (1st PCI Vendor ID)
vendor APTIX 0x10e2 Aptix Corporation
vendor NEWBRIDGE 0x10e3 Newbridge Microsystems / Tundra Semiconductor
vendor TANDEM 0x10e4 Tandem Computers
vendor MICROINDUSTRIES 0x10e5 Micro Industries
vendor GAINBERY 0x10e6 Gainbery Computer Products
vendor VADEM 0x10e7 Vadem
vendor AMCIRCUITS 0x10e8 Applied Micro Circuits
vendor ALPSELECTIC 0x10e9 Alps Electric
vendor INTEGRAPHICS 0x10ea Integraphics Systems
vendor ARTISTSGRAPHICS 0x10eb Artists Graphics
vendor REALTEK 0x10ec Realtek Semiconductor
vendor ASCIICORP 0x10ed ASCII Corporation
vendor XILINX 0x10ee Xilinx
vendor RACORE 0x10ef Racore Computer Products
vendor PERITEK 0x10f0 Peritek
vendor TYAN 0x10f1 Tyan Computer
vendor ACHME 0x10f2 Achme Computer
vendor ALARIS 0x10f3 Alaris
vendor SMOS 0x10f4 S-MOS Systems
vendor NKK 0x10f5 NKK Corporation
vendor CREATIVE 0x10f6 Creative Electronic Systems
vendor MATSUSHITA 0x10f7 Matsushita
vendor ALTOS 0x10f8 Altos India
vendor PCDIRECT 0x10f9 PC Direct
vendor TRUEVISIO 0x10fa Truevision
vendor THESYS 0x10fb Thesys Ges. F. Mikroelektronik
vendor IODATA 0x10fc I-O Data Device
vendor SOYO 0x10fd Soyo Technology
vendor FAST 0x10fe Fast Electronic
vendor NCUBE 0x10ff NCube
vendor JAZZ 0x1100 Jazz Multimedia
vendor INITIO 0x1101 Initio
vendor CREATIVELABS 0x1102 Creative Labs
vendor TRIONES 0x1103 Triones Technologies
vendor RASTEROPS 0x1104 RasterOps
vendor SIGMA 0x1105 Sigma Designs
vendor VIATECH 0x1106 VIA Technologies
vendor STRATIS 0x1107 Stratus Computer
vendor PROTEON 0x1108 Proteon
vendor COGENT 0x1109 Cogent Data Technologies
vendor SIEMENS 0x110a Siemens AG / Siemens Nixdorf AG
vendor XENON 0x110b Xenon Microsystems
vendor MINIMAX 0x110c Mini-Max Technology
vendor ZNYX 0x110d Znyx Advanced Systems
vendor CPUTECH 0x110e CPU Technology
vendor ROSS 0x110f Ross Technology
vendor POWERHOUSE 0x1110 Powerhouse Systems
vendor SCO 0x1111 Santa Cruz Operation
vendor RNS 0x1112 RNS
vendor ACCTON 0x1113 Accton Technology
vendor ATMEL 0x1114 Atmel
vendor DUPONT 0x1115 DuPont Pixel Systems
vendor DATATRANSLATION 0x1116 Data Translation
vendor DATACUBE 0x1117 Datacube
vendor BERG 0x1118 Berg Electronics
vendor VORTEX 0x1119 Vortex Computer Systems
vendor EFFICIENTNETS 0x111a Efficent Networks
vendor TELEDYNE 0x111b Teledyne Electronic Systems
vendor TRICORD 0x111c Tricord Systems
vendor IDT 0x111d IDT
vendor ELDEC 0x111e Eldec
vendor PDI 0x111f Prescision Digital Images
vendor EMC 0x1120 Emc
vendor ZILOG 0x1121 Zilog
vendor MULTITECH 0x1122 Multi-tech Systems
vendor LEUTRON 0x1124 Leutron Vision
vendor EUROCORE 0x1125 Eurocore/Vigra
vendor VIGRA 0x1126 Vigra
vendor FORE 0x1127 FORE Systems
vendor FIRMWORKS 0x1129 Firmworks
vendor HERMES 0x112a Hermes Electronics
vendor LINOTYPE 0x112b Linotype
vendor RAVICAD 0x112d Ravicad
vendor INFOMEDIA 0x112e Infomedia Microelectronics
vendor IMAGINGTECH 0x112f Imaging Technlogy
vendor COMPUTERVISION 0x1130 Computervision
vendor PHILIPS 0x1131 Philips
vendor MITEL 0x1132 Mitel
vendor EICON 0x1133 Eicon Technology
vendor MCS 0x1134 Mercury Computer Systems
vendor FUJIXEROX 0x1135 Fuji Xerox
vendor MOMENTUM 0x1136 Momentum Data Systems
vendor CISCO 0x1137 Cisco Systems
vendor ZIATECH 0x1138 Ziatech
vendor DYNPIC 0x1139 Dynamic Pictures
vendor FWB 0x113a FWB
vendor CYCLONE 0x113c Cyclone Micro
vendor LEADINGEDGE 0x113d Leading Edge
vendor SANYO 0x113e Sanyo Electric
vendor EQUINOX 0x113f Equinox Systems
vendor INTERVOICE 0x1140 Intervoice
vendor CREST 0x1141 Crest Microsystem
vendor ALLIANCE 0x1142 Alliance Semiconductor
vendor NETPOWER 0x1143 NetPower
vendor CINMILACRON 0x1144 Cincinnati Milacron
vendor WORKBIT 0x1145 Workbit
vendor FORCE 0x1146 Force Computers
vendor INTERFACE 0x1147 Interface
vendor SCHNEIDERKOCH 0x1148 Schneider & Koch
vendor WINSYSTEM 0x1149 Win System
vendor VMIC 0x114a VMIC
vendor CANOPUS 0x114b Canopus
vendor ANNABOOKS 0x114c Annabooks
vendor IC 0x114d IC Corporation
vendor NIKON 0x114e Nikon Systems
vendor DIGIINTERNAT 0x114f Digi International
vendor TMC 0x1150 Thinking Machines
vendor JAE 0x1151 JAE Electronics
vendor MEGATEK 0x1152 Megatek
vendor LANDWIN 0x1153 Land Win Electronic
vendor MELCO 0x1154 Melco
vendor PINETECH 0x1155 Pine Technology
vendor PERISCOPE 0x1156 Periscope Engineering
vendor AVSYS 0x1157 Avsys
vendor VOARX 0x1158 Voarx R & D
vendor MUTECH 0x1159 Mutech
vendor HARLEQUIN 0x115a Harlequin
vendor PARALLAX 0x115b Parallax Graphics
vendor XIRCOM 0x115d Xircom
vendor PEERPROTO 0x115e Peer Protocols
vendor MAXTOR 0x115f Maxtor
vendor MEGASOFT 0x1160 Megasoft
vendor PFU 0x1161 PFU Limited
vendor OALAB 0x1162 OA Laboratory
vendor RENDITION 0x1163 Rendition, Inc.
vendor APT 0x1164 Advanced Peripherals Technologies
vendor IMAGRAPH 0x1165 Imagraph
vendor SERVERWORKS 0x1166 ServerWorks
vendor MUTOH 0x1167 Mutoh Industries
vendor THINE 0x1168 Thine Electronics
vendor CDAC 0x1169 Centre for Dev. of Advanced Computing
vendor POLARIS 0x116a Polaris Communications
vendor CONNECTWARE 0x116b Connectware
vendor WSTECH 0x116f Workstation Technology
vendor INVENTEC 0x1170 Inventec
vendor LOUGHSOUND 0x1171 Loughborough Sound Images
vendor ALTERA 0x1172 Altera Corperation
vendor ADOBE 0x1173 Adobe Systems
vendor BRIDGEPORT 0x1174 Bridgeport Machines
vendor MIRTRON 0x1175 Mitron Computer
vendor SBE 0x1176 SBE
vendor SILICONENG 0x1177 Silicon Engineering
vendor ALFA 0x1178 Alfa
vendor TOSHIBA2 0x1179 Toshiba
vendor ATREND 0x117a A-Trend Technology
vendor ATTO 0x117c Atto Technology
vendor TR 0x117e T/R Systems
vendor RICOH 0x1180 Ricoh
vendor TELEMATICS 0x1181 Telematics International
vendor FUJIKURA 0x1183 Fujikura
vendor FORKS 0x1184 Forks
vendor DATAWORLD 0x1185 Dataworld
vendor DLINK 0x1186 D-Link Systems
vendor ATL 0x1187 Advanced Techonoloy Labratories
vendor SHIMA 0x1188 Shima Seiki Manufacturing
vendor MATSUSHITA2 0x1189 Matsushita Electronics (2nd PCI Vendor ID)
vendor HILEVEL 0x118a HiLevel Technology
vendor COROLLARY 0x118c Corrollary
vendor BITFLOW 0x118d BitFlow
vendor HERMSTEDT 0x118e Hermstedt
vendor ACARD 0x1191 Acard
vendor DENSAN 0x1192 Densan
vendor ZEINET 0x1193 Zeinet
vendor TOUCAN 0x1194 Toucan Technology
vendor RATOC 0x1195 Ratoc Systems
vendor HYTEC 0x1196 Hytec Electronic
vendor GAGE 0x1197 Gage Applied Sciences
vendor LAMBDA 0x1198 Lambda Systems
vendor DCA 0x1199 Digital Communications Associates
vendor MINDSHARE 0x119a Mind Share
vendor OMEGA 0x119b Omega Micro
vendor ITI 0x119c Information Technology Institute
vendor BUG 0x119d Bug Sapporo
vendor FUJITSU3 0x119e Fujitsu (3th PCI Vendor ID)
vendor BULL 0x119f Bull Hn Information Systems
vendor CONVEX 0x11a0 Convex Computer
vendor HAMAMATSU 0x11a1 Hamamatsu Photonics
vendor SIERRA2 0x11a2 Sierra Research & Technology (2nd PCI Vendor ID)
vendor BARCO 0x11a4 Barco
vendor MICROUNITY 0x11a5 MicroUnity Systems Engineering
vendor PUREDATA 0x11a6 Pure Data
vendor POWERCC 0x11a7 Power Computing
vendor INNOSYS 0x11a9 InnoSys
vendor ACTEL 0x11aa Actel
vendor GALILEO 0x11ab Galileo Technology
vendor CANNON 0x11ac Cannon IS
vendor LITEON 0x11ad Lite-On Communications
vendor SCITEX 0x11ae Scitex Corporation
vendor PROLOG 0x11af Pro-Log Corporation
vendor V3 0x11b0 V3 Semiconductor
vendor APRICOT 0x11b1 Apricot Computer
vendor KODAK 0x11b2 Eastman Kodak
vendor BARR 0x11b3 Barr Systems
vendor LEITECH 0x11b4 Leitch Technology
vendor RADSTONE 0x11b5 Radstone Technology
vendor UNITEDVIDEO 0x11b6 United Video
vendor MOT2 0x11b7 Motorola (2nd PCI Vendor ID)
vendor XPOINT 0x11b8 Xpoint Technologies
vendor PATHLIGHT 0x11b9 Pathlight Technology
vendor VIDEOTRON 0x11ba VideoTron
vendor PYRAMID 0x11bb Pyramid Technologies
vendor NETPERIPH 0x11bc Network Peripherals
vendor PINNACLE 0x11bd Pinnacle Systems
vendor IMI 0x11be International Microcircuts
vendor LUCENT 0x11c1 Lucent Technologies
vendor NEC2 0x11c3 NEC (2nd PCI Vendor ID)
vendor DOCTECH 0x11c4 Document Technologies
vendor SHIVA 0x11c5 Shiva
vendor DCMDATA 0x11c7 DCM Data Systems
vendor DOLPHIN 0x11c8 Dolphin Interconnect Solutions
vendor MRTMAGMA 0x11c9 Mesa Ridge Technologies (MAGMA)
vendor LSISYS 0x11ca LSI Systems
vendor SPECIALIX 0x11cb Specialix Research
vendor MKC 0x11cc Michels & Kleberhoff Computer
vendor HAL 0x11cd HAL Computer Systems
vendor AURAVISION 0x11d1 Auravision
vendor SEGA 0x11db SEGA Enterprises
vendor ZORAN 0x11de Zoran Corporation
vendor COMPEX 0x11f6 Compex
vendor PMCSIERRA 0x11f8 PMC-Sierra
vendor CYCLADES 0x120e Cyclades
vendor ESSENTIAL 0x120f Essential Communications
vendor O2MICRO 0x1217 O2 Micro, Inc.
vendor 3DFX 0x121a 3Dfx Interactive
vendor ARIEL 0x1220 Ariel
vendor HEURICON 0x1223 Heurikon/Computer Products
vendor AZTECH 0x122d Aztech
vendor 3DO 0x1239 The 3D0 Company
vendor CCUBE 0x123f C-Cube Microsystems
vendor AVM 0x1244 AVM
vendor SAMSUNGELEC2 0x1249 Samsung Electronics Co. Ltd. (2nd vendor ID)
vendor STALLION 0x124d Stallion Technologies
vendor LINEARSYS 0x1254 Linear Systems
vendor ASIX 0x125b ASIX Electronics
vendor AURORA 0x125c Aurora Technologies
vendor ESSTECH 0x125d ESS Technology, Inc.
vendor INTERSIL 0x1260 Intersil
vendor SILMOTION 0x126f Silicon Motion, Inc.
vendor ENSONIQ 0x1274 Ensoniq
vendor NETAPP 0x1275 Network Appliance
vendor TRANSMETA 0x1279 Transmeta Corp
vendor ROCKWELL 0x127a Rockwell Semiconductor Systems
vendor DAVICOM 0x1282 Davicom Semiconductor
vendor ITE 0x1283 Integrated Technology Express, Inc.
vendor ESSTECH2 0x1285 ESS Technology, Inc.
vendor TRITECH 0x1292 TriTech Microelectronics
vendor KOFAX 0x1296 Kofax Image Products
vendor ALTEON 0x12ae Alteon
vendor RISCOM 0x12aa RISCom
vendor USR 0x12b9 US Robotics (3Com)
vendor USR2 0x16ec US Robotics
vendor PICTUREEL 0x12c5 Picture Elements
vendor NVIDIA_SGS 0x12d2 Nvidia Corporation & SGS Thomson Microelectric
vendor RAINBOW 0x12de Rainbow Technologies
vendor AUREAL 0x12eb Aureal Semiconductor
vendor ADMTEK 0x1317 ADMtek
vendor FORTEMEDIA 0x1319 Forte Media
vendor SIIG 0x131f Siig, Inc.
vendor DOMEX 0x134a Domex
vendor LMC 0x1376 LAN Media Corporation
vendor NETGEAR 0x1385 Netgear
vendor LEVELONE 0x1394 Level One
vendor COLOGNECHIP 0x1397 Cologne Chip Designs
vendor HIFN 0x13a3 Hi/Fn
vendor 3WARE 0x13c1 3ware
vendor SUNDANCETI 0x13f0 Sundance Technology
vendor CMEDIA 0x13f6 C-Media Electronics, Inc.
vendor LAVA 0x1407 Lava Semiconductor Manufacturing, Inc.
vendor ETIMEDIA 0x1409 eTIMedia Technology Co. Ltd.
vendor OXFORDSEMI 0x1415 Oxford Semiconductor Ltd.
vendor TAMARACK 0x143d Tamarack Microelectronics, Inc.
vendor SAMSUNGELEC3 0x144d Samsung Electronics Co. Ltd. (3rd vendor ID)
vendor ASKEY 0x144f Askey Computer Corp.
vendor AVERMEDIA 0x1461 Avermedia Technologies
vendor AIRONET 0x14b9 Aironet Wireless Communications
vendor COMPAL 0x14c0 COMPAL Electronics, Inc.
vendor TITAN 0x14d2 Titan Electronics, Inc.
vendor AVLAB 0x14db Avlab Technology, Inc.
vendor INVERTEX 0x14e1 Invertex
vendor BROADCOM 0x14e4 Broadcom Corporation
vendor CONEXANT 0x14f1 Conexant Systems
vendor DELTA 0x1500 Delta Electronics
vendor ENE 0x1524 ENE Technology, Inc.
vendor TERRATEC 0x153b TerraTec Electronic
vendor SOLIDUM 0x1588 Solidum Systems Corp.
vendor GEOCAST 0x15a1 Geocast Network Systems
vendor EUMITCOM 0x1638 Eumitcom
vendor NETSEC 0x1660 NetSec
vendor SIBYTE 0x166d Broadcom Corp. (SiByte)
vendor ANTARES 0x1754 Antares Microsystems, Inc.
vendor SYMPHONY2 0x1c1c Symphony Labs (2nd PCI Vendor ID)
vendor TEKRAM2 0x1de1 Tekram Technology (2nd PCI Vendor ID)
vendor MYSON 0x1516 Myson-Century Technology
vendor NDC 0x15e8 National Datacomm Corp.
vendor ACTIONTEC 0x1668 Action Tec Electronics, Inc.
vendor ATHEROS 0x168c Atheros Communications, Inc.
vendor GLOBALSUN 0x16ab Global Sun Tech
vendor ALTIMA 0x173b Altima
vendor FZJZEL 0x1796 FZ Juelich / ZEL
vendor SANDBURST 0x17ba Sandburst, Inc.
vendor HINT 0x3388 HiNT
vendor 3DLABS 0x3d3d 3D Labs
vendor AVANCE2 0x4005 Avance Logic (2nd PCI Vendor ID)
vendor ADDTRON 0x4033 Addtron Technology
vendor ICOMPRESSION 0x4444 Conexant (iCompression)
vendor INDCOMPSRC 0x494f Industrial Computer Source
vendor NETVIN 0x4a14 NetVin
vendor BUSLOGIC2 0x4b10 Buslogic (2nd PCI Vendor ID)
vendor MEDIAQ 0x4d51 MediaQ, Inc.
vendor GUILLEMOT 0x5046 Guillemot
vendor S3 0x5333 S3
vendor NETPOWER2 0x5700 NetPower (2nd PCI Vendor ID)
vendor C4T 0x6374 c't Magazin
vendor KURUSUGAWA 0x6809 Kurusugawa Electronics, Inc.
vendor QUANCM 0x8008 Quancm Electronic GmbH
vendor INTEL 0x8086 Intel
vendor TRIGEM2 0x8800 Trigem Computer (2nd PCI Vendor ID)
vendor PROLAN 0x8c4a ProLAN
vendor COMPUTONE 0x8e0e Computone Corperation
vendor KTI 0x8e2e KTI
vendor ADP 0x9004 Adaptec
vendor ADP2 0x9005 Adaptec (2nd PCI Vendor ID)
vendor ATRONICS 0x907f Atronics
vendor NETMOS 0x9710 Netmos
vendor CHRYSALIS 0xcafe Chrysalis-ITS
vendor MIDDLE_DIGITAL 0xdeaf Middle Digital, Inc.
vendor ARC 0xedd8 ARC Logic
vendor MLR 0xefff ML-RSIM

* List of known products. Grouped by vendor.

/* 3COM Products */
product 3COM 3C985 0x0001 3c985 Gigabit Ethernet
product 3COM 3C996 0x0003 3c996 10/100/1000 Ethernet
product 3COM 3C556MODEM 0x1007 3c556 V.90 MiniPCI Modem
product 3COM 3C450TX 0x4500 3c450-TX 10/100 Ethernet
product 3COM 3C590 0x5900 3c590 Ethernet
product 3COM 3C595TX 0x5950 3c595-TX 10/100 Ethernet
product 3COM 3C595T4 0x5951 3c595-T4 10/100 Ethernet
product 3COM 3C595MII 0x5952 3c595-MII 10/100 Ethernet
product 3COM 3C555 0x5055 3c555 10/100 MiniPCI Ethernet
product 3COM 3C556 0x6055 3c556 10/100 MiniPCI Ethernet
product 3COM 3C556B 0x6056 3c556B 10/100 MiniPCI Ethernet
product 3COM 3CSOHO100TX 0x7646 3cSOHO100-TX 10/100 Ethernet
product 3COM 3CRWE777A 0x7770 3crwe777a AirConnect
product 3COM 3C900TPO 0x9000 3c900-TPO Ethernet
product 3COM 3C900COMBO 0x9001 3c900-COMBO Ethernet
product 3COM 3C905TX 0x9050 3c905-TX 10/100 Ethernet
product 3COM 3C905T4 0x9051 3c905-T4 10/100 Ethernet
product 3COM 3C900BTPO 0x9004 3c900B-TPO Ethernet
product 3COM 3C900BCOMBO 0x9005 3c900B-COMBO Ethernet
product 3COM 3C900BTPC 0x9006 3c900B-TPC Ethernet
product 3COM 3C905BTX 0x9055 3c905B-TX 10/100 Ethernet
product 3COM 3C905BT4 0x9056 3c905B-T4 10/100 Ethernet
product 3COM 3C905BCOMBO 0x9058 3c905B-COMBO 10/100 Ethernet
product 3COM 3C905BFX 0x905a 3c905B-FX 100 Ethernet
product 3COM 3C905CTX 0x9200 3c905C-TX 10/100 Ethernet with mngmt
product 3COM 3C905CXTX 0x9201 3c905CX-TX 10/100 Ethernet with mngmt
product 3COM 3C980SRV 0x9800 3c980 Server Adapter 10/100 Ethernet
product 3COM 3C980CTXM 0x9805 3c980C-TXM 10/100 Ethernet
product 3COM 3CR990TX95 0x9902 3CR990-TX-95 10/100 Ethernet with 3XP
product 3COM 3CR990TX97 0x9903 3CR990-TX-97 10/100 Ethernet with 3XP
product 3COM 3CR990SVR95 0x9908 3CR990-SVR-95 10/100 Ethernet with 3XP
product 3COM 3CR990SVR97 0x9909 3CR990-SVR-97 10/100 Ethernet with 3XP

/* 3Dfx Interactive products */
product 3DFX VOODOO 0x0001 Voodoo
product 3DFX VOODOO2 0x0002 Voodoo2
product 3DFX BANSHEE 0x0003 Banshee
product 3DFX VOODOO3 0x0005 Voodoo3
product 3DFX VOODOO5 0x0009 Voodoo 4/5

/* 3D Labs products */
product 3DLABS 300SX 0x0001 GLINT 300SX
product 3DLABS 500TX 0x0002 GLINT 500TX
product 3DLABS PERMEDIA 0x0004 GLINT Permedia
product 3DLABS 500MX 0x0006 GLINT 500MX
product 3DLABS PERMEDIA2 0x0007 GLINT Permedia 2
product 3DLABS PERMEDIA2V 0x0009 GLINT Permedia 2V
product 3DLABS PERMEDIA3 0x000a GLINT Permedia 3

/* 3ware products */
product 3WARE ESCALADE 0x1000 Escalade IDE RAID
product 3WARE ESCALADE_ASIC 0x1001 Escalade IDE RAID (ASIC)

/* ACC Products */
product ACC 2188 0x0000 ACCM 2188 VL-PCI Bridge
product ACC 2051_HB 0x2051 2051 PCI Single Chip Solution (host bridge)
product ACC 2051_ISA 0x5842 2051 PCI Single Chip Solution (ISA bridge)

/* Acard products */
product ACARD ATP850U 0x0005 ATP850U/UF UDMA IDE Controller
product ACARD ATP860 0x0006 ATP860 UDMA IDE Controller
product ACARD ATP860A 0x0007 ATP860-A UDMA IDE Controller
product ACARD ATP865 0x0008 ATP865 UDMA IDE Controller
product ACARD ATP865A 0x0009 ATP865-A UDMA IDE Controller
product ACARD AEC6710 0x8002 AEC6710 SCSI
product ACARD AEC6712UW 0x8010 AEC6712UW SCSI
product ACARD AEC6712U 0x8020 AEC6712U SCSI
product ACARD AEC6712S 0x8030 AEC6712S SCSI
product ACARD AEC6710D 0x8040 AEC6710D SCSI
product ACARD AEC6715UW 0x8050 AEC6715UW SCSI

/* Accton products */
product ACCTON MPX5030 0x1211 MPX 5030/5038 Ethernet
product ACCTON EN2242 0x1216 EN2242 10/100 Ethernet

/* Acer products */
product ACER M1435 0x1435 M1435 VL-PCI Bridge

/* Acer Labs products */
product ALI M1445 0x1445 M1445 VL-PCI Bridge
product ALI M1449 0x1449 M1449 PCI-ISA Bridge
product ALI M1451 0x1451 M1451 Host-PCI Bridge
product ALI M1461 0x1461 M1461 Host-PCI Bridge
product ALI M1531 0x1531 M1531 Host-PCI Bridge
product ALI M1541 0x1541 M1541 Host-PCI Bridge
product ALI M1543 0x1533 M1543 PCI-ISA Bridge
product ALI M3309 0x3309 M3309 MPEG Decoder
product ALI M4803 0x5215 M4803
product ALI M5229 0x5229 M5229 UDMA IDE Controller
product ALI M5237 0x5237 M5237 USB Host Controller
product ALI M5243 0x5243 M5243 PCI-AGP Bridge
product ALI M5451 0x5451 M5451 AC-Link Controller Audio Device
product ALI M5453 0x5453 M5453 AC-Link Controller Modem Device
product ALI M7101 0x7101 M7101 Power Management Controller

/* Adaptec products */
product ADP AIC7850 0x5078 AIC-7850
product ADP AIC7855 0x5578 AIC-7855
product ADP AIC5900 0x5900 AIC-5900 ATM
product ADP AIC5905 0x5905 AIC-5905 ATM
product ADP AIC6915 0x6915 AIC-6915 10/100 Ethernet
product ADP AIC7860 0x6078 AIC-7860
product ADP APA1480 0x6075 APA-1480 Ultra
product ADP 2940AU 0x6178 AHA-2940A Ultra
product ADP AIC7870 0x7078 AIC-7870
product ADP 2940 0x7178 AHA-2940
product ADP 3940 0x7278 AHA-3940
product ADP 3985 0x7378 AHA-3985
product ADP 2944 0x7478 AHA-2944
product ADP AIC7895 0x7895 AIC-7895 Ultra
product ADP AIC7880 0x8078 AIC-7880 Ultra
product ADP 2940U 0x8178 AHA-2940 Ultra
product ADP 3940U 0x8278 AHA-3940 Ultra
product ADP 389XU 0x8378 AHA-389X Ultra
product ADP 2944U 0x8478 AHA-2944 Ultra
product ADP 2940UP 0x8778 AHA-2940 Ultra Pro
product ADP 2945U2W 0x8978 AHA-2945 Ultra-2 wide, ML-RSIM model

product ADP2 2940U2 0x0010 AHA-2940U2 U2
product ADP2 2930U2 0x0011 AHA-2930U2 U2
product ADP2 AIC7890 0x001f AIC-7890/1 U2
product ADP2 3950U2B 0x0050 AHA-3950U2B U2
product ADP2 3950U2D 0x0051 AHA-3950U2D U2
product ADP2 AIC7896 0x005f AIC-7896/7 U2
product ADP2 AIC7892A 0x0080 AIC-7892A U160
product ADP2 AIC7892B 0x0081 AIC-7892B U160
product ADP2 AIC7892D 0x0083 AIC-7892D U160
product ADP2 AIC7892P 0x008f AIC-7892P U160
product ADP2 AIC7899A 0x00c0 AIC-7899A U160
product ADP2 AIC7899B 0x00c1 AIC-7899B U160
product ADP2 AIC7899D 0x00c3 AIC-7899D U160
product ADP2 AIC7899F 0x00c5 AIC-7899F RAID
product ADP2 AIC7899P 0x00cf AIC-7899P U160
product ADP2 AAC2622 0x0282 AAC-2622
product ADP2 ASR2200S 0x0285 ASR-2200S
product ADP2 ASR2120S 0x0286 ASR-2120S
product ADP2 AAC364 0x0364 AAC-364
product ADP2 ASR5400S 0x0365 ASR-5400S
product ADP2 PERC_2QC 0x1364 Dell PERC 2/QC
/* XXX guess */
product ADP2 PERC_3QC 0x1365 Dell PERC 3/QC

/* Addtron Products */
product ADDTRON 8139 0x1360 8139 Ethernet

/* ADMtek products */
product ADMTEK AL981 0x0981 ADMtek AL981 10/100 Ethernet
product ADMTEK AN985 0x0985 ADMtek AN985 10/100 Ethernet

/* Advanced System Products */
product ADVSYS 1200A 0x1100
product ADVSYS 1200B 0x1200
product ADVSYS ULTRA 0x1300 ABP-930/40UA
product ADVSYS WIDE 0x2300 ABP-940UW
product ADVSYS U2W 0x2500 ASB-3940U2W
product ADVSYS U3W 0x2700 ASB-3940U3W

/* Aironet Wireless Communicasions products */
product AIRONET PC4xxx 0x0001 Aironet PC4500/PC4800 Wireless LAN Adapter
product AIRONET 350 0x0350 Aironet 350 Wireless LAN Adapter
product AIRONET PC4500 0x4500 Aironet PC4500 Wireless LAN Adapter
product AIRONET PC4800 0x4800 Aironet PC4800 Wireless LAN Adapter

/* Alliance products */
product ALLIANCE AT24 0x6424 AT24
product ALLIANCE AT25 0x643d AT25

/* Alteon products */
product ALTEON ACENIC 0x0001 ACEnic 1000baseSX Gigabit Ethernet
product ALTEON ACENIC_COPPER 0x0002 ACEnic 1000baseT Gigabit Ethernet
product ALTEON BCM5700 0x0003 ACEnic BCM5700 10/100/1000 Ethernet
product ALTEON BCM5701 0x0004 ACEnic BCM5701 10/100/1000 Ethernet

/* Altima products */
product ALTIMA AC1000 0x03e8 AC1000 Gigabit Ethernet
product ALTIMA AC1001 0x03e9 AC1001 Gigabit Ethernet
product ALTIMA AC9100 0x03ea AC9100 Gigabit Ethernet

/* AMD products */
product AMD AMD64_HT 0x1100 AMD64 HyperTransport configuration
product AMD AMD64_ADDR 0x1101 AMD64 Address Map configuration
product AMD AMD64_DRAM 0x1102 AMD64 DRAM configuration
product AMD AMD64_MISC 0x1103 AMD64 Miscellaneous configuration
product AMD PCNET_PCI 0x2000 PCnet-PCI Ethernet
product AMD PCNET_HOME 0x2001 PCnet-Home HomePNA Ethernet
product AMD PCSCSI_PCI 0x2020 PCscsi-PCI SCSI
product AMD SC520_SC 0x3000 Elan SC520 System Controller
product AMD SC751_SC 0x7006 AMD751 System Controller
product AMD SC751_PPB 0x7007 AMD751 PCI-to-PCI Bridge
product AMD PBC756_ISA 0x7408 AMD756 PCI-to-ISA Bridge
product AMD PBC756_IDE 0x7409 AMD756 IDE controller
product AMD PBC756_PMC 0x740b AMD756 Power Management Controller
product AMD PBC756_USB 0x740c AMD756 USB Host Controller
product AMD SC762_NB 0x700c AMD762 NorthBridge
product AMD SC762_PPB 0x700d AMD762 AGP Bridge
product AMD SC761_SC 0x700e AMD761 System Controller
product AMD SC761_PPB 0x700f AMD761 PCI-to-PCI Bridge
product AMD PBC766_ISA 0x7410 AMD766 SouthBridge
product AMD PBC766_IDE 0x7411 AMD766 IDE controller
product AMD PBC766_PMC 0x7413 AMD766 Power Management Controller
product AMD PBC766_USB 0x7414 AMD766 USB Host Controller
product AMD PBC768_ISA 0x7440 AMD768 PCI to ISA/LPC Bridge
product AMD PBC768_IDE 0x7441 AMD768 EIDE Controller
product AMD PBC768_PMC 0x7443 AMD768 Power Management Controller
product AMD PBC768_AC 0x7445 AMD768 AC97 Audio
product AMD PBC768_MD 0x7446 AMD768 AC97 Modem
product AMD PBC768_PPB 0x7448 AMD768 PCI to PCI Bridge
product AMD PBC768_USB 0x7449 AMD768 USB Controller
product AMD PCIX8131_PPB 0x7450 PCI-X Tunnel
product AMD PCIX8131_APIC 0x7451 IO Apic
product AMD PBC8111 0x7460 AMD8111 I/O Hub
product AMD PBC8111_LPC 0x7468 AMD8111 LPC Controller
product AMD PBC8111_IDE 0x7469 AMD8111 IDE Controller
product AMD PBC8111_AC 0x746d AMD8111 AC97 Audio

/* American Megatrends products */
product AMI MEGARAID 0x9010 MegaRAID
product AMI MEGARAID2 0x9060 MegaRAID 2
product AMI MEGARAID3 0x1960 MegaRAID 3

/* Antares Microsystems, Inc. products */
product ANTARES TC9021 0x1021 Antares Gigabit Ethernet

/* Apple products */
product APPLE BANDIT 0x0001 Bandit Host-PCI Bridge
product APPLE GC 0x0002 Grand Central I/O Controller
product APPLE CONTROL 0x0003 Control
product APPLE PLANB 0x0004 PlanB
product APPLE OHARE 0x0007 OHare I/O Controller
product APPLE BANDIT2 0x0008 Bandit Host-PCI Bridge
product APPLE HEATHROW 0x0010 MAC-IO I/O Controller (Heathrow)
product APPLE PADDINGTON 0x0017 MAC-IO I/O Controller (Paddington)
product APPLE KEYLARGO_USB 0x0019 KeyLargo USB Controller
product APPLE UNINORTH1 0x001e UniNorth Host-PCI Bridge
product APPLE UNINORTH2 0x001f UniNorth Host-PCI Bridge
product APPLE UNINORTH_AGP 0x0020 UniNorth AGP Interface
product APPLE GMAC 0x0021 GMAC Ethernet
product APPLE KEYLARGO 0x0022 MAC-IO I/O Controller (KeyLargo)
product APPLE GMAC2 0x0024 GMAC Ethernet
product APPLE PANGEA_MACIO 0x0025 MAC-IO I/O Controller (Pangea)
product APPLE PANGEA_USB 0x0026 Pangea USB Controller
product APPLE PANGEA_AGP 0x0027 Pangea AGP Interface
product APPLE PANGEA_PCI1 0x0028 Pangea Host-PCI Bridge
product APPLE PANGEA_PCI2 0x0029 Pangea Host-PCI Bridge
product APPLE UNINORTH_AGP2 0x002d UniNorth AGP Interface
product APPLE UNINORTH3 0x002e UniNorth Host-PCI Bridge
product APPLE UNINORTH4 0x002f UniNorth Host-PCI Bridge
product APPLE PANGEA_FW 0x0030 Pangea Firewire
product APPLE UNINORTH_FW 0x0031 UniNorth Firewire
product APPLE GMAC3 0x0032 GMAC Ethernet
product APPLE UNINORTH_AGP3 0x0034 UniNorth AGP Bridge
product APPLE UNINORTH5 0x0035 UniNorth Host-PCI Bridge
product APPLE UNINORTH6 0x0036 UniNorth Host-PCI Bridge
product APPLE KAUAI 0x003b Kauai ATA Controller
product APPLE INTREPID 0x003e MAC-IO I/O Controller (Intrepid)

/* ARC Logic products */
product ARC 1000PV 0xa091 1000PV
product ARC 2000PV 0xa099 2000PV
product ARC 2000MT 0xa0a1 2000MT

/* ASIX Electronics products */
product ASIX AX88140A 0x1400 AX88140A 10/100 Ethernet

/* Asustek products */
product ASUSTEK HFCPCI 0x0675 Asustek ISDN

/* ATI products */
product ATI MACH32 0x4158 Mach32
product ATI MACH64_CT 0x4354 Mach64 CT
product ATI MACH64_CX 0x4358 Mach64 CX
product ATI RAGE_PRO_AGP 0x4742 3D Rage Pro (AGP)
product ATI RAGE_PRO_AGP1X 0x4744 3D Rage Pro (AGP 1x)
product ATI RAGE_PRO_PCI_B 0x4749 3D Rage Pro
product ATI RAGE_XL_AGP 0x474d Rage XL (AGP)
product ATI RAGE_PRO_PCI_P 0x4750 3D Rage Pro
product ATI RAGE_PRO_PCI_L 0x4751 3D Rage Pro (limited 3D)
product ATI RAGE_XL_PCI 0x4752 Rage XL
product ATI RAGE_II 0x4754 3D Rage I/II
product ATI RAGE_IIP 0x4755 3D Rage II+
product ATI RAGE_IIC_PCI 0x4756 3D Rage IIC
product ATI RAGE_IIC_AGP_B 0x4757 3D Rage IIC (AGP)
product ATI MACH64_GX 0x4758 Mach64 GX
product ATI RAGE_IIC_AGP_P 0x475a 3D Rage IIC (AGP)
product ATI RAGE_LT_PRO_AGP 0x4c42 3D Rage LT Pro (AGP)
product ATI RAGE_MOB_M3_PCI 0x4c45 Rage Mobility M3
product ATI RAGE_MOB_M3_AGP 0x4c46 Rage Mobility M3 (AGP)
product ATI RAGE_LT 0x4c47 3D Rage LT
product ATI RAGE_LT_PRO_PCI 0x4c49 3D Rage LT Pro
product ATI RAGE_MOBILITY 0x4c4d Rage Mobility
product ATI RAGE_LT_PRO 0x4c50 3D Rage LT Pro
product ATI RAGE_MOB_M1_PCI 0x4c52 Rage Mobility M1
product ATI RAGEON_M7_AGP 0x4c57 Radeon Mobility M7 LW (AGP)
product ATI RADEON_M9 0x4c66 Radeon Mobility M9
product ATI RAGE1PCI 0x5041 Rage 128 Pro PCI
product ATI RAGE1AGP2X 0x5042 Rage 128 Pro AGP 2x
product ATI RAGE1AGP4X 0x5043 Rage 128 Pro AGP 4x
product ATI RAGE1PCIT 0x5044 Rage 128 Pro PCI (TMDS)
product ATI RAGE1AGP2XT 0x5045 Rage 128 Pro AGP 2x (TMDS)
product ATI RAGE1AGP4XT 0x5046 Rage Fury MAXX AGP 4x (TMDS)
product ATI RAGE2PCI 0x5047 Rage 128 Pro PCI
product ATI RAGE2AGP2X 0x5048 Rage 128 Pro AGP 2x
product ATI RAGE2AGP4X 0x5049 Rage 128 Pro AGP 4x
product ATI RAGE2PCIT 0x504a Rage 128 Pro PCI (TMDS)
product ATI RAGE2AGP2XT 0x504b Rage 128 Pro AGP 2x (TMDS)
product ATI RAGE2AGP4XT 0x504c Rage 128 Pro AGP 4x (TMDS)
product ATI RAGE3PCI 0x504d Rage 128 Pro PCI
product ATI RAGE3AGP2X 0x504e Rage 128 Pro AGP 2x
product ATI RAGE3AGP4X 0x504f Rage 128 Pro AGP 4x
product ATI RAGE3PCIT 0x5050 Rage 128 Pro PCI (TMDS)
product ATI RAGE3AGP2XT 0x5051 Rage 128 Pro AGP 2x (TMDS)
product ATI RAGE3AGP4XT 0x5052 Rage 128 Pro AGP 4x (TMDS)
product ATI RAGE4PCI 0x5053 Rage 128 Pro PCI
product ATI RAGE4AGP2X 0x5054 Rage 128 Pro AGP 2x
product ATI RAGE4AGP4X 0x5055 Rage 128 Pro AGP 4x
product ATI RAGE4PCIT 0x5056 Rage 128 Pro PCI (TMDS)
product ATI RAGE4AGP2XT 0x5057 Rage 128 Pro AGP 2x (TMDS)
product ATI RAGE4AGP4XT 0x5058 Rage 128 Pro AGP 4x (TMDS)
product ATI RADEON_7200 0x5144 Radeon 7200
product ATI RADEON_8500 0x514c Radeon 8500
product ATI RADEON_7500 0x5157 Radeon 7500
product ATI RADEON_7000 0x5159 Radeon 7000/VE
product ATI RAGEGLPCI 0x5245 Rage 128 GL PCI
product ATI RAGEGLAGP 0x5246 Rage 128 GL AGP 2x
product ATI RAGEVRPCI 0x524b Rage 128 VR PCI
product ATI RAGEVRAGP 0x524c Rage 128 VR AGP 2x
product ATI RAGE4XPCI 0x5345 Rage 128 4x PCI
product ATI RAGE4XA2X 0x5346 Rage 128 4x AGP 2x
product ATI RAGE4XA4X 0x5347 Rage 128 4x AGP 4x
product ATI RAGE4X 0x5348 Rage 128 4x
product ATI RAGE24XPCI 0x534b Rage 128 4x PCI
product ATI RAGE24XA2X 0x534c Rage 128 4x AGP 2x
product ATI RAGE24XA4X 0x534d Rage 128 4x AGP 4x
product ATI RAGE24X 0x534e Rage 128 4x
product ATI MACH64_VT 0x5654 Mach64 VT
product ATI MACH64_VTB 0x5655 Mach64 VTB
product ATI MACH64_VT4 0x5656 Mach64 VT4

/* Auravision products */
product AURAVISION VXP524 0x01f7 VxP524 PCI Video Processor

/* Aureal Semiconductor */
product AUREAL AU8820 0x0001 AU8820 Vortex Digital Audio Processor

/* Applied Micro Circuts products */
product AMCIRCUITS S5933 0x4750 S5933 PCI Matchmaker
product AMCIRCUITS LANAI 0x8043 Myrinet LANai Interface
product AMCIRCUITS CAMAC 0x812d FZJ/ZEL CAMAC controller
product AMCIRCUITS VICBUS 0x812e FZJ/ZEL VICBUS interface
product AMCIRCUITS PCISYNC 0x812f FZJ/ZEL Synchronisation module
product AMCIRCUITS S5920 0x5920 S5920 PCI Target

/* Atheros Communications, Inc. products */
product ATHEROS AR5001 0x0012 AR5001 Wireless LAN Reference Card

/* Atronics products */
product ATRONICS IDE_2015PL 0x2015 IDE-2015PL

/* Avance Logic products */
product AVANCE AVL2301 0x2301 AVL2301
product AVANCE AVG2302 0x2302 AVG2302
product AVANCE2 ALG2301 0x2301 ALG2301
product AVANCE2 ALG2302 0x2302 ALG2302
product AVANCE2 ALS4000 0x4000 ALS4000 Audio

/* Avlab Technology products */
product AVLAB LPPCI4S 0x2150 Low Profile PCI 4 Serial

/* CCUBE products */
product CCUBE CINEMASTER 0x8888 Cinemaster C 3.0 DVD Decoder

/* AVM products */
product AVM FRITZ_CARD 0x0a00 Fritz! Card ISDN Interface
product AVM FRITZ_PCI_V2_ISDN 0x0e00 Fritz!PCI v2.0 ISDN Interface
product AVM B1 0x0700 Basic Rate B1 ISDN Interface
product AVM T1 0x1200 Primary Rate T1 ISDN Interface

/* Stallion products */
product STALLION EC8_32 0x0000 EC8/32
product STALLION EC8_64 0x0002 EC8/64
product STALLION EASYIO 0x0003 EasyIO

/* Bit3 products */
product BIT3 PCIVME617 0x0001 PCI-VME Interface Mod. 617
product BIT3 PCIVME618 0x0010 PCI-VME Interface Mod. 618
product BIT3 PCIVME2706 0x0300 PCI-VME Interface Mod. 2706

/* Broadcom Corporation products */
product BROADCOM BCM5700 0x1644 BCM5700 10/100/1000 Ethernet
product BROADCOM BCM5701 0x1645 BCM5701 10/100/1000 Ethernet
product BROADCOM BCM5702 0x1646 BCM5702 10/100/1000 Ethernet
product BROADCOM BCM5702X 0x16a6 BCM5702X 10/100/1000 Ethernet
product BROADCOM BCM5702FE 0x164d BCM5702FE 10/100 Ethernet
product BROADCOM BCM5703 0x1647 BCM5703 10/100/1000 Ethernet
product BROADCOM BCM5703X 0x16a7 BCM5703X 10/100/1000 Ethernet
product BROADCOM BCM5704C 0x1648 BCM5704C Gigabit Ethernet (1000BASE-T)
product BROADCOM BCM5704S 0x16a8 BCM5704S Gigabit Ethernet (1000BASE-X)
product BROADCOM BCM5705 0x1653 BCM5705 10/100/1000 Ethernet
product BROADCOM BCM4401 0x4401 BCM4401 10/100 Ethernet

/* Brooktree products */
product BROOKTREE BT848 0x0350 Bt848 Video Capture
product BROOKTREE BT849 0x0351 Bt849 Video Capture
product BROOKTREE BT878 0x036e Bt878 Video Capture
product BROOKTREE BT879 0x036f Bt879 Video Capture
product BROOKTREE BT8474 0x8474 Bt8474 Multichannel HDLC Controller

/* BusLogic products */
product BUSLOGIC MULTIMASTER_NC 0x0140 MultiMaster NC
product BUSLOGIC MULTIMASTER 0x1040 MultiMaster
product BUSLOGIC FLASHPOINT 0x8130 FlashPoint

/* c't Magazin products */
product C4T GPPCI 0x6773 GPPCI

/* Chips and Technologies products */
product CHIPS 64310 0x00b8 64310
product CHIPS 69000 0x00c0 69000
product CHIPS 65545 0x00d8 65545
product CHIPS 65548 0x00dc 65548
product CHIPS 65550 0x00e0 65550
product CHIPS 65554 0x00e4 65554
product CHIPS 69030 0x0c30 69030

/* Chrysalis products */
product CHRYSALIS LUNAVPN 0x0001 LunaVPN

/* Cirrus Logic products */
product CIRRUS CL_GD7548 0x0038 CL-GD7548
product CIRRUS CL_GD5430 0x00a0 CL-GD5430
product CIRRUS CL_GD5434_4 0x00a4 CL-GD5434-4
product CIRRUS CL_GD5434_8 0x00a8 CL-GD5434-8
product CIRRUS CL_GD5436 0x00ac CL-GD5436
product CIRRUS CL_GD5446 0x00b8 CL-GD5446
product CIRRUS CL_GD5480 0x00bc CL-GD5480
product CIRRUS CL_PD6729 0x1100 CL-PD6729
product CIRRUS CL_PD6832 0x1110 CL-PD6832 PCI-CardBus Bridge
product CIRRUS CL_PD6833 0x1113 CL-PD6833 PCI-CardBus Bridge
product CIRRUS CL_GD7542 0x1200 CL-GD7542
product CIRRUS CL_GD7543 0x1202 CL-GD7543
product CIRRUS CL_GD7541 0x1204 CL-GD7541
product CIRRUS CL_CD4400 0x4400 CL-CD4400 Communications Controller
product CIRRUS CS4610 0x6001 CS4610 SoundFusion Audio Accelerator
product CIRRUS CS4280 0x6003 CS4280 CrystalClear Audio Interface
product CIRRUS CS4281 0x6005 CS4281 CrystalClear Audio Interface

/* CMD Technology products -- info gleaned from their web site */
product CMDTECH 640 0x0640 PCI0640
/* No data on the CMD Tech. web site for the following as of Mar. 3 '98 */
product CMDTECH 642 0x0642 PCI0642
/* datasheets available from for the followings */
product CMDTECH 643 0x0643 PCI0643
product CMDTECH 646 0x0646 PCI0646
product CMDTECH 647 0x0647 PCI0647
product CMDTECH 648 0x0648 PCI0648
product CMDTECH 649 0x0649 PCI0649

/* Inclusion of 'A' in the following entry is probably wrong. */
/* No data on the CMD Tech. web site for the following as of Mar. 3 '98 */
product CMDTECH 650A 0x0650 PCI0650A
product CMDTECH 670 0x0670 USB0670
product CMDTECH 673 0x0673 USB0673
product CMDTECH 680 0x0680 SiI0680
product CMDTECH 3112 0x3112 SiI3112 SATALink

/* C-Media products */
product CMEDIA CMI8338A 0x0100 CMI8338A PCI Audio Device
product CMEDIA CMI8338B 0x0101 CMI8338B PCI Audio Device
product CMEDIA CMI8738 0x0111 CMI8738/C3DX PCI Audio Device
product CMEDIA CMI8738B 0x0112 CMI8738B PCI Audio Device
product CMEDIA HSP56 0x0211 HSP56 Audiomodem Riser

/* Cogent Data Technologies products */
product COGENT EM110TX 0x1400 EX110TX PCI Fast Ethernet Adapter

/* Cologne Chip Designs */
product COLOGNECHIP HFC 0x2bd0 HFC-S

/* COMPAL products */
product COMPAL 38W2 0x0011 COMPAL 38W2 OEM Notebook

/* Compaq products */
product COMPAQ PCI_ISA_BRIDGE 0x0002 PCI-ISA Bridge
product COMPAQ TRIFLEX1 0x1000 Triflex Host-PCI Bridge
product COMPAQ TRIFLEX2 0x2000 Triflex Host-PCI Bridge
product COMPAQ QVISION_V0 0x3032 QVision
product COMPAQ QVISION_1280P 0x3033 QVision 1280/p
product COMPAQ QVISION_V2 0x3034 QVision
product COMPAQ TRIFLEX4 0x4000 Triflex Host-PCI Bridge
product COMPAQ CSA5300 0x4070 Smart Array 5300
product COMPAQ CSA5i 0x4080 Smart Array 5i
product COMPAQ CSA532 0x4082 Smart Array 532
product COMPAQ USB 0x7020 USB Controller
/* MediaGX Cx55x0 built-in OHCI seems to have this ID */
product COMPAQ USB_MEDIAGX 0xa0f8 USB Controller
product COMPAQ N100TX 0xae32 Netelligent 10/100 TX
product COMPAQ N10T 0xae34 Netelligent 10 T
product COMPAQ IntNF3P 0xae35 Integrated NetFlex 3/P
product COMPAQ DPNet100TX 0xae40 Dual Port Netelligent 10/100 TX
product COMPAQ IntPL100TX 0xae43 ProLiant Integrated Netelligent 10/100 TX
product COMPAQ DP4000 0xb011 Deskpro 4000 5233MMX
product COMPAQ M700 0xb112 Armada M700
product COMPAQ NF3P_BNC 0xf150 NetFlex 3/P w/ BNC
product COMPAQ NF3P 0xf130 NetFlex 3/P

/* Compex products - XXX better descriptions */
product COMPEX NE2KETHER 0x1401 Ethernet
product COMPEX RL100ATX 0x2011 RL100-ATX 10/100 Ethernet
product COMPEX RL100TX 0x9881 RL100-TX 10/100 Ethernet

/* Conexant Systems products */
product CONEXANT SOFTK56 0x2443 SoftK56 PCI Software Modem
product CONEXANT 56KFAXMODEM 0x1085 HW 56K Fax Modem

/* Contaq Microsystems products */
product CONTAQ 82C599 0x0600 82C599 PCI-VLB Bridge
product CONTAQ 82C693 0xc693 82C693 PCI-ISA Bridge

/* Corollary Products */
product COROLLARY CBUSII_PCIB 0x0014 "C-Bus II"-PCI Bridge

/* Creative Labs products */
product CREATIVELABS SBLIVE 0x0002 SBLive! EMU 10000
product CREATIVELABS SBJOY 0x7002 PCI Gameport Joystick
product CREATIVELABS EV1938 0x8938 Ectiva 1938

/* Cyclades products */
product CYCLADES CYCLOMY_1 0x0100 Cyclom-Y below 1M
product CYCLADES CYCLOMY_2 0x0101 Cyclom-Y above 1M
product CYCLADES CYCLOM4Y_1 0x0102 Cyclom-4Y below 1M
product CYCLADES CYCLOM4Y_2 0x0103 Cyclom-4Y above 1M
product CYCLADES CYCLOM8Y_1 0x0104 Cyclom-8Y below 1M
product CYCLADES CYCLOM8Y_2 0x0105 Cyclom-8Y above 1M
product CYCLADES CYCLOMZ_1 0x0200 Cyclom-Z below 1M
product CYCLADES CYCLOMZ_2 0x0201 Cyclom-Z above 1M

/* Cyclone Microsystems products */
product CYCLONE PCI_700 0x0700 IQ80310 (PCI-700)

/* Cyrix (now National) products */
product CYRIX MEDIAGX_PCHB 0x0001 MediaGX Built-in PCI Host Controller
product CYRIX CX5520_PCIB 0x0002 Cx5520 I/O Companion
product CYRIX CX5530_PCIB 0x0100 Cx5530 I/O Companion Multi-Function South Bridge
product CYRIX CX5530_SMI 0x0101 Cx5530 I/O Companion (SMI Status and ACPI Timer)
product CYRIX CX5530_IDE 0x0102 Cx5530 I/O Companion (IDE Controller)
product CYRIX CX5530_AUDIO 0x0103 Cx5530 I/O Companion (XpressAUDIO)
product CYRIX CX5530_VIDEO 0x0104 Cx5530 I/O Companion (Video Controller)

/* Davicom Semiconductor products */
product DAVICOM DM9102 0x9102 Davicom DM9102 10/100 Ethernet

/* DEC products */
product DEC 21050 0x0001 DECchip 21050 PCI-PCI Bridge
product DEC 21040 0x0002 DECchip 21040 ("Tulip") Ethernet
product DEC 21030 0x0004 DECchip 21030 ("TGA")
product DEC NVRAM 0x0007 Zephyr NV-RAM
product DEC KZPSA 0x0008 KZPSA
product DEC 21140 0x0009 DECchip 21140 ("FasterNet") 10/100 Ethernet
product DEC PBXGB 0x000d TGA2
product DEC DEFPA 0x000f DEFPA
/* product DEC ??? 0x0010 ??? VME Interface */
product DEC 21041 0x0014 DECchip 21041 ("Tulip Plus") Ethernet
product DEC DGLPB 0x0016 DGLPB ("OPPO")
product DEC 21142 0x0019 DECchip 21142/21143 10/100 Ethernet
product DEC 21052 0x0021 DECchip 21052 PCI-PCI Bridge
product DEC 21150 0x0022 DECchip 21150 PCI-PCI Bridge
product DEC 21152 0x0024 DECchip 21152 PCI-PCI Bridge
product DEC 21153 0x0025 DECchip 21153 PCI-PCI Bridge
product DEC 21154 0x0026 DECchip 21154 PCI-PCI Bridge
product DEC 21554 0x0046 DECchip 21554 PCI-PCI Bridge
product DEC SWXCR 0x1065 SWXCR RAID

/* Dell Computer products */
product DELL PERC_2SI 0x0001 PERC 2/Si
product DELL PERC_3DI 0x0002 PERC 3/Di
product DELL PERC_3SI 0x0003 PERC 3/Si
product DELL PERC_3SI_2 0x0004 PERC 3/Si
product DELL PERC_3DI_2 0x0008 PERC 3/Di
product DELL PERC_3DI_3 0x000a PERC 3/Di
product DELL PERC_3SI 0x0003 PERC 3/Si
product DELL PERC_3DI_2_SUB 0x00cf PERC 3/Di
product DELL PERC_3SI_2_SUB 0x00d0 PERC 3/Si
product DELL PERC_3DI_SUB2 0x00d1 PERC 3/Di
product DELL PERC_3DI_SUB3 0x00d9 PERC 3/Di
product DELL PERC_3DI_3_SUB 0x0106 PERC 3/Di
product DELL PERC_3DI_3_SUB2 0x011b PERC 3/Di
product DELL PERC_3DI_3_SUB3 0x0121 PERC 3/Di

/* Delta products */
product DELTA 8139 0x1360 8139 Ethernet

/* Diamond products */
product DIAMOND VIPER 0x9001 Viper/PCI

/* D-Link Systems products */
product DLINK DL1002 0x1002 DL-1002 10/100 Ethernet
product DLINK DFE530TXPLUS 0x1300 DFE-530TXPLUS 10/100 Ethernet
product DLINK DL4000 0x4000 DL-4000 Gigabit Ethernet

/* Distributed Processing Technology products */
product DPT SC_RAID 0xa400 SmartCache/SmartRAID (EATA)
product DPT I960_PPB 0xa500 PCI-PCI Bridge
product DPT RAID_I2O 0xa501 SmartRAID (I2O)
product DPT RAID_2005S 0xa511 Zero Channel SmartRAID (I2O)
product DPT MEMCTLR 0x1012 Memory Controller

/* Dolphin products */
product DOLPHIN PCISCI 0x0658 PCI-SCI Bridge

/* Domex products */
product DOMEX PCISCSI 0x0001 DMX-3191D

/* Dynalink products */
product DYNALINK IS64PH 0x1702 Dynalink IS64PH ISDN Adapter

/* ELSA products */
product ELSA QS1PCI 0x1000 QuickStep 1000 ISDN card

/* Emulex products */
product EMULEX LPPFC 0x10df "Light Pulse" FibreChannel adapter

/* ENE Technology, Inc. products */
product ENE CB1410 0x1410 CB1410 Cardbus Controller

/* Ensoniq products */
product ENSONIQ AUDIOPCI 0x5000 AudioPCI
product ENSONIQ AUDIOPCI97 0x1371 AudioPCI 97
product ENSONIQ CT5880 0x5880 CT5880

/* Essential Communications products */
product ESSENTIAL RR_HIPPI 0x0001 RoadRunner HIPPI Interface
product ESSENTIAL RR_GIGE 0x0005 RoadRunner Gig-E Interface

/* ESS Technology, Inc. products */
product ESSTECH MAESTRO1 0x0100 Maestro 1 PCI Audio Accelerator
product ESSTECH MAESTRO2 0x1968 Maestro 2 PCI Audio Accelerator
product ESSTECH SOLO1 0x1969 Solo-1 PCI AudioDrive
product ESSTECH MAESTRO2E 0x1978 Maestro 2E PCI Audio Accelerator
product ESSTECH ALLEGRO1 0x1988 Allegro-1 PCI Audio Accelerator
product ESSTECH MAESTRO3 0x1998 Maestro 3 PCI Audio Accelerator
product ESSTECH MAESTRO3MODEM 0x1999 Maestro 3 Modem
product ESSTECH MAESTRO3_2 0x199a Maestro 3 PCI Audio Accelerator

/* ESS Technology, Inc. products */
product ESSTECH2 MAESTRO1 0x0100 Maestro 1 PCI Audio Accelerator

/* Eumitcom products */
product EUMITCOM WL11000P 0x1100 WL11000P PCI WaveLAN/IEEE 802.11

/* O2 Micro, Inc. */
product O2MICRO OZ6729 0x6729 OZ6729 PCI-PCMCIA Bridge
product O2MICRO OZ6730 0x673A OZ6730 PCI-PCMCIA Bridge
product O2MICRO OZ6832 0x6832 OZ6832/OZ6833 PCI-CardBus Bridge
product O2MICRO OZ6836 0x6836 OZ6836/OZ6860 PCI-Cardbus Bridge
product O2MICRO OZ6872 0x6872 OZ6812/OZ6872 PCI-Cardbus Bridge
product O2MICRO OZ6922 0x6925 OZ6922 PCI-Cardbus Bridge
product O2MICRO OZ6933 0x6933 OZ6933 PCI-Cardbus Bridge
product O2MICRO OZ6972 0x6972 OZ6912/OZ6972 PCI-Cardbus Bridge

/* Evans & Sutherland products */
product ES FREEDOM 0x0001 Freedom PCI-GBus Interface

/* FORE products */
product FORE PCA200 0x0210 ATM PCA-200
product FORE PCA200E 0x0300 ATM PCA-200e

/* Forte Media products */
product FORTEMEDIA FM801 0x0801 Forte Media 801 Sound
product FORTEMEDIA PCIJOY 0x0802 PCI Gameport Joystick

/* Future Domain products */
product FUTUREDOMAIN TMC_18C30 0x0000 TMC-18C30 (36C70)

/* FZ Juelich / ZEL products */
product FZJZEL GIGALINK 0x0001 Gigabit link / STR1100
product FZJZEL PLXHOTLINK 0x0002 HOTlink interface
product FZJZEL COUNTTIME 0x0003 Counter / Timer
product FZJZEL PLXCAMAC 0x0004 CAMAC controller
product FZJZEL PROFIBUS 0x0005 PROFIBUS interface
product FZJZEL AMCCHOTLINK 0x0006 old HOTlink interface

/* Efficient Networks products */
product EFFICIENTNETS ENI155PF 0x0000 155P-MF1 ATM (FPGA)
product EFFICIENTNETS ENI155PA 0x0002 155P-MF1 ATM (ASIC)
product EFFICIENTNETS ENI25P 0x0003 SpeedStream ENI-25p
product EFFICIENTNETS SS3000 0x0005 SpeedStream 3000

/* Galileo Technology products */
product GALILEO GT64010A 0x0146 GT-64010A System Controller
product GALILEO GT64115 0x4111 GT-64115 System Controller
product GALILEO GT64011 0x4146 GT-64011 System Controller
product GALILEO GT64120 0x4620 GT-64120 System Controller
product GALILEO GT64130 0x6320 GT-64130 System Controller
product GALILEO GT64260 0x6430 GT-64260 System Controller

/* Global Sun Tech products */
product GLOBALSUN GL24110P 0x1101 GL24110P PCI IEEE 802.11b
product GLOBALSUN GL24110P02 0x1102 GL24110P PCI IEEE 802.11b

/* Guillemot products */

/* Heuricon products */
product HEURICON PMPPC 0x000e PM/PPC

/* Hewlett-Packard products */
product HP A4977A 0x1005 A4977A Visualize EG
product HP J2585A 0x1030 J2585A
product HP J2585B 0x1031 J2585B
product HP 82557B 0x1200 82557B 10/100 NIC
product HP NETRAID_4M 0x10c2 NetRaid-4M

/* Hi/Fn products */
product HIFN 7751 0x0005 7751
product HIFN 6500 0x0006 6500
product HIFN 7811 0x0007 7811
product HIFN 7951 0x0012 7951

/* HiNT products */
product HINT HB1 0x0021 HB1 PCI-PCI Bridge
product HINT HB4 0x0022 HB4 PCI-PCI Bridge

/* IBM products */
product IBM MCABRIDGE 0x0002 MCA Bridge
product IBM ALTALITE 0x0005 CPU Bridge - Alta Lite
product IBM ALTAMP 0x0007 CPU Bridge - Alta MP
product IBM ISABRIDGE 0x000a ISA Bridge w/PnP
product IBM CPUBRIDGE 0x0017 CPU Bridge
product IBM LANSTREAMER 0x0018 Auto LANStreamer
product IBM GXT150P 0x001b GXT-150P 2D Accelerator
product IBM MCABRIDGE2 0x0020 MCA Bridge
product IBM 82351 0x0022 82351 PCI-PCI Bridge
product IBM SERVERAID 0x002e ServeRAID
product IBM OLYMPIC 0x003e Token Ring
product IBM MIAMI 0x0036 Miami/PCI
product IBM 82660 0x0037 82660 PowerPC to PCI Bridge and Memory Controller
product IBM MPIC 0x0046 MPIC
product IBM TURBOWAYS25 0x0053 Turboways 25 ATM
product IBM GXT800P 0x005e GXT-800P
product IBM 405GP 0x0156 PPC 405GP PCI Bridge
product IBM 133PCIX 0x01a7 133 PCI-X Bridge
product IBM MPIC2 0xffff MPIC-II

/* Conexant (iCompression, GlobeSpan) products */
product ICOMPRESSION ITVC15 0x0803 iTVC15 MPEG2 codec

/* IDT products */
product IDT 77201 0x0001 77201/77211 ATM ("NICStAR")
product IDT RC32334 0x0204 RC32334 System Controller
product IDT RC32332 0x0205 RC32332 System Controller

/* Industrial Computer Source */
product INDCOMPSRC WDT50x 0x22c0 PCI-WDT50x Watchdog Timer

/* Initio products */
product INITIO I920 0x0002 INIC-920 SCSI
product INITIO I850 0x0850 INIC-850 SCSI
product INITIO I1060 0x1060 INIC-1060 SCSI
product INITIO I940 0x9400 INIC-940 SCSI
product INITIO I935 0x9401 INIC-935 SCSI
product INITIO I950 0x9500 INIC-950 SCSI

/* Integraphics Systems products */
product INTEGRAPHICS IGA1680 0x1680 IGA 1680
product INTEGRAPHICS IGA1682 0x1682 IGA 1682
product INTEGRAPHICS CYBERPRO2000 0x2000 CyberPro 2000
product INTEGRAPHICS CYBERPRO2010 0x2010 CyberPro 2010

/* Integrated Micro Solutions products */
product IMS 8849 0x8849 8849
product IMS TT128M 0x9128 TwinTurbo 128M

/* Intel products */
product INTEL 80312 0x030d 80312 I/O Companion Chip
product INTEL 80321 0x0319 80321 I/O Processor
product INTEL PCEB 0x0482 82375EB/SB PCI-EISA Bridge (PCEB)
product INTEL CDC 0x0483 82424ZX Cache and DRAM controller (CDC)
product INTEL SIO 0x0484 82378ZB System I/O (SIO)
product INTEL 82426EX 0x0486 82426EX PCI-to-ISA Bridge (PCIB)
product INTEL PCMC 0x04a3 82434LX/NX PCI, Cache and Memory Controller (PCMC)
product INTEL GDT_RAID1 0x0600 GDT RAID
product INTEL GDT_RAID2 0x061f GDT RAID
product INTEL 80960RM 0x0962 i960 RM PCI-PCI
product INTEL 80960RN 0x0964 i960 RN PCI-PCI
product INTEL 82542 0x1000 i82542 Gigabit Ethernet
product INTEL 82543GC_FIBER 0x1001 i82453GC Gigabit Ethernet (1000BASE-X)
product INTEL 82543GC_COPPER 0x1004 i82543GC Gigabit Ethernet (1000BASE-T)
product INTEL 82544EI_COPPER 0x1008 i82544EI Gigabit Ethernet (1000BASE-T)
product INTEL 82544EI_FIBER 0x1009 i82544EI Gigabit Ethernet (1000BASE-X)
product INTEL 82544GC_COPPER 0x100c i82544GC Gigabit Ethernet (1000BASE-T)
product INTEL 82544GC_LOM 0x100d i82544GC (LOM) Gigabit Ethernet
product INTEL 82540EM 0x100e i82540EM Gigabit Ethernet (1000BASE-T)
product INTEL 82545EM_COPPER 0x100f i82545EM Gigabit Ethernet (1000BASE-T)
product INTEL 82546EB_COPPER 0x1010 i82546EB Gigabit Ethernet (1000BASE-T)
product INTEL 82545EM_FIBER 0x1011 i82545EM Gigabit Ethernet (1000BASE-X)
product INTEL 82546EB_FIBER 0x1012 i82546EB Gigabit Ethernet (1000BASE-X)
product INTEL 82540EM_LOM 0x1015 i82540EM (LOM) Gigabit Ethernet
product INTEL 82540EP_LOM 0x1016 i82540EP (LOM) Gigabit Ethernet
product INTEL 82540EP 0x1017 i82540EP Gigabit Ethernet
product INTEL 82540EP_LP 0x101e i82540EP Gigabit Ethernet
product INTEL IN_BUSINESS 0x1030 InBusiness Fast Ethernet LAN Controller
product INTEL PRO_100_VE_0 0x1031 PRO/100 VE Network Controller
product INTEL PRO_100_VE_1 0x1032 PRO/100 VE Network Controller
product INTEL PRO_100_VM_0 0x1033 PRO/100 VM Network Controller
product INTEL PRO_100_VM_1 0x1034 PRO/100 VM Network Controller
product INTEL 82562EH_HPNA_0 0x1035 82562EH HomePNA Network Controller
product INTEL 82562EH_HPNA_1 0x1036 82562EH HomePNA Network Controller
product INTEL 82562EH_HPNA_2 0x1037 82562EH HomePNA Network Controller
product INTEL PRO_100_VM_2 0x1038 PRO/100 VM Network Controller
product INTEL PRO_100_VE_2 0x1039 PRO/100 VE Network Controller with 82562ET/EZ PHY
product INTEL PRO_100_VE_3 0x103a PRO/100 VE Network Controller with 82562ET/EZ (CNR) PHY
product INTEL PRO_100_VM_3 0x103b PRO/100 VM Network Controller with 82562EM/EX PHY
product INTEL PRO_100_VM_4 0x103c PRO/100 VM Network Controller with 82562EM/EX (CNR) PHY
product INTEL PRO_100_VE_4 0x103d PRO/100 VE (MOB) Network Controller
product INTEL PRO_100_VM_5 0x103e PRO/100 VM (MOB) Network Controller
product INTEL PRO_100_M 0x1059 PRO/100 M Network Controller
product INTEL 82815_DC100_HUB 0x1100 82815 Hub
product INTEL 82815_DC100_AGP 0x1101 82815 AGP
product INTEL 82815_DC100_GRAPH 0x1102 82815 Graphics
product INTEL 82815_NOAGP_HUB 0x1110 82815 Hub
product INTEL 82815_NOAGP_GRAPH 0x1112 82815 Graphics
product INTEL 82815_NOGRAPH_HUB 0x1120 82815 Hub
product INTEL 82815_NOGRAPH_AGP 0x1121 82815 AGP
product INTEL 82815_FULL_HUB 0x1130 82815 Hub
product INTEL 82815_FULL_AGP 0x1131 82815 AGP
product INTEL 82815_FULL_GRAPH 0x1132 82815 Graphics
product INTEL 82806AA 0x1161 82806AA PCI64 Hub Advanced Programmable Interrupt Controller
product INTEL ADI_BECC 0x1162 ADI i80200 Big Endian Companion Chip
product INTEL IXP1200 0x1200 IXP1200 Network Processor
product INTEL 82559ER 0x1209 82559ER Fast Ethernet LAN Controller
product INTEL 82092AA 0x1222 82092AA IDE controller
product INTEL SAA7116 0x1223 SAA7116
product INTEL 82452_PB 0x1225 82452KX/GX Orion Extended Express Processor to PCI Bridge
product INTEL 82596 0x1226 82596 LAN Controller
product INTEL EEPRO100 0x1227 EE Pro 100 10/100 Fast Ethernet
product INTEL EEPRO100S 0x1228 EE Pro 100 Smart 10/100 Fast Ethernet
product INTEL 82557 0x1229 82557 Fast Ethernet LAN Controller
product INTEL 82437FX 0x122d 82437FX System Controller (TSC)
product INTEL 82371FB_ISA 0x122e 82371FB PCI-to-ISA Bridge (PIIX)
product INTEL 82371FB_IDE 0x1230 82371FB IDE controller (PIIX)
product INTEL 82371MX 0x1234 82371MX Mobile PCI I/O IDE Xcelerator (MPIIX)
product INTEL 82437MX 0x1235 82437MX Mobile System Controller (MTSC)
product INTEL 82441FX 0x1237 82441FX PCI and Memory Controller (PMC)
product INTEL 82380AB 0x123c 82380AB Mobile PCI-to-ISA Bridge (MISA)
product INTEL 82380FB 0x124b 82380FB Mobile PCI-to-PCI Bridge (MPCI2)
product INTEL 82439HX 0x1250 82439HX System Controller (TXC)
product INTEL 82870P2_PPB 0x1460 82870P2 P64H2 PCI-to-PCI Bridge
product INTEL 82870P2_IOxAPIC 0x1461 82870P2 P64H2 IOxAPIC
product INTEL 82870P2_HPLUG 0x1462 82870P2 P64H2 Hot Plug Controller
product INTEL 80960_RP 0x1960 ROB-in i960RP Microprocessor
product INTEL 82840_HB 0x1a21 82840 Host
product INTEL 82840_AGP 0x1a23 82840 AGP
product INTEL 82840_PCI 0x1a24 82840 PCI
product INTEL 82845_HB 0x1a30 82845 Host
product INTEL 82845_AGP 0x1a31 82845 AGP
product INTEL 82801AA_LPC 0x2410 82801AA LPC Interface Bridge
product INTEL 82801AA_IDE 0x2411 82801AA IDE Controller
product INTEL 82801AA_USB 0x2412 82801AA USB Controller
product INTEL 82801AA_SMB 0x2413 82801AA SMBus Controller
product INTEL 82801AA_ACA 0x2415 82801AA AC-97 Audio Controller
product INTEL 82801AA_ACM 0x2416 82801AA AC-97 PCI Modem
product INTEL 82801AA_HPB 0x2418 82801AA Hub-to-PCI Bridge
product INTEL 82801AB_LPC 0x2420 82801AB LPC Interface Bridge
product INTEL 82801AB_IDE 0x2421 82801AB IDE Controller
product INTEL 82801AB_USB 0x2422 82801AB USB Controller
product INTEL 82801AB_SMB 0x2423 82801AB SMBus Controller
product INTEL 82801AB_ACA 0x2425 82801AB AC-97 Audio Controller
product INTEL 82801AB_ACM 0x2426 82801AB AC-97 PCI Modem
product INTEL 82801AB_HPB 0x2428 82801AB Hub-to-PCI Bridge
product INTEL 82801BA_LPC 0x2440 82801BA LPC Interface Bridge
product INTEL 82801BA_USB1 0x2442 82801BA USB Controller
product INTEL 82801BA_SMB 0x2443 82801BA SMBus Controller
product INTEL 82801BA_USB2 0x2444 82801BA USB Controller
product INTEL 82801BA_ACA 0x2445 82801BA AC-97 Audio Controller
product INTEL 82801BA_ACM 0x2446 82801BA AC-97 PCI Modem
product INTEL 82801BAM_HPB 0x2448 82801BAM Hub-to-PCI Bridge
product INTEL 82801BA_LAN 0x2449 82801BA LAN Controller
product INTEL 82801BAM_IDE 0x244a 82801BAM IDE Controller
product INTEL 82801BA_IDE 0x244b 82801BA IDE Controller
product INTEL 82801BAM_LPC 0x244c 82801BAM LPC Interface Bridge
product INTEL 82801BA_HPB 0x244e 82801BA Hub-to-PCI Bridge
product INTEL 82801E_SMB 0x2453 82801E SMBus Controller
product INTEL 82801E_LAN_1 0x2459 82801E LAN Controller
product INTEL 82801E_LAN_2 0x245d 82801E LAN Controller
product INTEL 82801CA_LPC 0x2480 82801CA LPC Interface
product INTEL 82801CA_USB_1 0x2482 82801CA/CAM USB Controller
product INTEL 82801CA_SMB 0x2483 82801CA/CAM SMBus Controller
product INTEL 82801CA_USB_2 0x2484 82801CA/CAM USB Controller
product INTEL 82801CA_AC 0x2485 82801CA/CAM AC'97 Audio Controller
product INTEL 82801CA_MOD 0x2486 82801CA/CAM Modem
product INTEL 82801CA_USBC 0x2487 82801CA/CAM USB Controller
product INTEL 82801CA_IDE_1 0x248A 82801CA IDE Controller
product INTEL 82801CA_IDE_2 0x248B 82801CA IDE Controller
product INTEL 82801CAM_LPC 0x248C 82801CAM LPC Interface
product INTEL 82801DB_LPC 0x24C0 82801DB LPC Interface Bridge
product INTEL 82801DB_USB_1 0x24C2 82801DB/DBM USB UHCI Controller #1
product INTEL 82801DB_SMB 0x24C3 82801DB/DBM SMBus Controller
product INTEL 82801DB_USB_2 0x24C4 82801DB/DBM USB UHCI Controller #2
product INTEL 82801DB_AC 0x24C5 82801DB/DBM AC97 Audio Controller
product INTEL 82801DB_MOD 0x24C6 82801DB/DBM AC97 Modem Controller
product INTEL 82801DB_USB_3 0x24C7 82801DB/DBM USB UHCI Controller #3
product INTEL 82801DBM_IDE 0x24CA 82801DBM IDE Controller
product INTEL 82801DB_IDE 0x24CB 82801DB IDE Controller (UltraATA/100)
product INTEL 82801DB_USBC 0x24CD 82801DB/DBM USB EHCI Controller
product INTEL 82820_MCH 0x2501 82820 MCH (Camino)
product INTEL 82820_AGP 0x250f 82820 AGP
product INTEL 82850_HB 0x2530 82850 Host
product INTEL 82850_AGP 0x2532 82850/82860 AGP
product INTEL 82860_HB 0x2531 82860 Host
product INTEL 82850_AGP 0x2532 82850/82860 AGP
product INTEL 82860_PCI1 0x2533 82860 PCI-PCI
product INTEL 82860_PCI2 0x2534 82860 PCI-PCI
product INTEL 82860_PCI3 0x2535 82860 PCI-PCI
product INTEL 82860_PCI4 0x2536 82860 PCI-PCI
product INTEL E7500_HB 0x2540 E7500 MCH Host
product INTEL E7500_DRAM 0x2541 E7500 MCH DRAM Controller
product INTEL E7500_HI_B1 0x2543 E7500 MCH HI_B vppb 1
product INTEL E7500_HI_B2 0x2544 E7500 MCH HI_B vppb 2
product INTEL E7500_HI_C1 0x2545 E7500 MCH HI_C vppb 1
product INTEL E7500_HI_C2 0x2546 E7500 MCH HI_C vppb 2
product INTEL E7500_HI_D1 0x2547 E7500 MCH HI_C vppb 1
product INTEL E7500_HI_D2 0x2548 E7500 MCH HI_C vppb 2
product INTEL 82845G_DRAM 0x2560 82845G/GL DRAM Controller / Host-Hub I/F Bridge
product INTEL 82845G_AGP 0x2561 82845G/GL Host-to-AGP Bridge
product INTEL 82845G_IGD 0x2562 82845G/GL Integrated Graphics Device
product INTEL 31244 0x3200 31244 Serial ATA Controller
product INTEL 82830MP_IO_1 0x3575 82830MP CPU to I/O Bridge 1
product INTEL 82830MP_AGP 0x3576 82830MP CPU to AGP Bridge
product INTEL 82830MP_IV 0x3577 82830MP Integrated Video
product INTEL 82830MP_IO_2 0x3578 82830MP CPU to I/O Bridge 2
product INTEL 80312_ATU 0x530d 80310 ATU
product INTEL 82371SB_ISA 0x7000 82371SB PCI-to-ISA Bridge (PIIX3)
product INTEL 82371SB_IDE 0x7010 82371SB IDE Interface (PIIX3)
product INTEL 82371SB_USB 0x7020 82371SB USB Host Controller (PIIX3)
product INTEL 82437VX 0x7030 82437VX System Controller (TVX)
product INTEL 82439TX 0x7100 82439TX System Controller (MTXC)
product INTEL 82371AB_ISA 0x7110 82371AB PCI-to-ISA Bridge (PIIX4)
product INTEL 82371AB_IDE 0x7111 82371AB IDE controller (PIIX4)
product INTEL 82371AB_USB 0x7112 82371AB USB Host Controller (PIIX4)
product INTEL 82371AB_PMC 0x7113 82371AB Power Management Controller (PIIX4)
product INTEL 82810_MCH 0x7120 82810 Memory Controller Hub
product INTEL 82810_GC 0x7121 82810 Graphics Controller
product INTEL 82810_DC100_MCH 0x7122 82810-DC100 Memory Controller Hub
product INTEL 82810_DC100_GC 0x7123 82810-DC100 Graphics Controller
product INTEL 82810E_MCH 0x7124 82810E Memory Controller Hub
product INTEL 82810E_GC 0x7125 82810E Graphics Controller
product INTEL 82443LX 0x7180 82443LX PCI AGP Controller (PAC)
product INTEL 82443LX_AGP 0x7181 82443LX AGP Interface (PAC)
product INTEL 82443BX 0x7190 82443BX Host Bridge/Controller
product INTEL 82443BX_AGP 0x7191 82443BX AGP Interface
product INTEL 82443BX_NOAGP 0x7192 82443BX Host Bridge/Controller (AGP disabled)
product INTEL 82440MX 0x7194 82443MX Host Bridge/Controller
product INTEL 82440MX_ACA 0x7195 82443MX AC-97 Audio Controller
product INTEL 82440MX_ISA 0x7198 82443MX PCI-to-ISA Bridge
product INTEL 82440MX_IDE 0x7199 82443MX IDE Controller
product INTEL 82440MX_USB 0x719a 82443MX USB Host Controller
product INTEL 82440MX_PMC 0x719b 82443MX Power Management Controller
product INTEL 82443GX 0x71a0 82443GX Host Bridge/Controller
product INTEL 82443GX_AGP 0x71a1 82443GX AGP Interface
product INTEL 82443GX_NOAGP 0x71a2 82443GX Host Bridge/Controller (AGP disabled)
product INTEL I740 0x7800 i740 Graphics Accelerator
product INTEL PCI450_PB 0x84c4 82454KX/GX PCI Bridge (PB)
product INTEL PCI450_MC 0x84c5 82451KX/GX Memory Controller (MC)
product INTEL 82451NX_MIOC 0x84ca 82451NX Memory & I/O Controller (MIOC)
product INTEL 82451NX_PXB 0x84cb 82451NX PCI Expander Bridge (PXB)
product INTEL 21152 0xb152 S21152BB PCI to PCI Bridge
product INTEL 21154 0xb154 S21152BA,S21154AE/BE PCI to PCI Bridge
product INTEL 21555 0xb555 21555 Non-Transparent PCI-PCI Bridge

/* Intergraph products */
product INTERGRAPH 4D50T 0x00e4 Powerstorm 4D50T

/* Intersil products */
product INTERSIL MINI_PCI_WLAN 0x3873 Intersil PRISM2.5 Mini-PCI WLAN

/* Invertex */
product INVERTEX AEON 0x0005 AEON

/* ITE products */
product ITE IT8152 0x8152 IT8152 Host Bridge

/* I. T. T. products */
product ITT AGX016 0x0001 AGX016
product ITT ITT3204 0x0002 ITT3204 MPEG Decoder

/* KTI products - XXX better descriptions */
product KTI NE2KETHER 0x3000 Ethernet

/* LAN Media Corporation */
product LMC HSSI 0x0003 HSSI Interface
product LMC DS3 0x0004 DS3 Interface
product LMC SSI 0x0005 SSI
product LMC DS1 0x0006 DS1

/* LeadTek Research */
product LEADTEK S3_805 0x0000 S3 805

/* Level One products */
product LEVELONE LXT1001 0x0001 LXT-1001 10/100/1000 Ethernet

/* Linear Systems / CompuModules */
product LINEARSYS DVB_TX 0x7629 DVB Transmitter
product LINEARSYS DVB_RX 0x7630 DVB Receiver

/* Lite-On products */
product LITEON 82C168 0x0002 82C168/82C169 (PNIC) 10/100 Ethernet
product LITEON 82C115 0xc115 82C115 (PNIC II) 10/100 Ethernet

/* Lucent Technologies products */
product LUCENT LTMODEM_0440 0x0440 K56flex DSVD LTMODEM
product LUCENT LTMODEM_0441 0x0441 LTMODEM
product LUCENT LTMODEM_0442 0x0442 LTMODEM
product LUCENT LTMODEM_0443 0x0443 LTMODEM
product LUCENT LTMODEM_0444 0x0444 LTMODEM
product LUCENT LTMODEM_0445 0x0445 LTMODEM
product LUCENT LTMODEM_0446 0x0446 LTMODEM
product LUCENT LTMODEM_0447 0x0447 LTMODEM
product LUCENT LTMODEM_0448 0x0448 LTMODEM
product LUCENT LTMODEM_0449 0x0449 LTMODEM
product LUCENT LTMODEM_044a 0x044a LTMODEM
product LUCENT LTMODEM_044b 0x044b LTMODEM
product LUCENT LTMODEM_044c 0x044c LTMODEM
product LUCENT LTMODEM_044d 0x044d LTMODEM
product LUCENT LTMODEM_044e 0x044e LTMODEM
product LUCENT LTMODEM_0450 0x0450 LTMODEM
product LUCENT LTMODEM_0451 0x0451 LTMODEM
product LUCENT LTMODEM_0452 0x0452 LTMODEM
product LUCENT LTMODEM_0453 0x0453 LTMODEM
product LUCENT LTMODEM_0454 0x0454 LTMODEM
product LUCENT LTMODEM_0455 0x0455 LTMODEM
product LUCENT LTMODEM_0456 0x0456 LTMODEM
product LUCENT LTMODEM_0457 0x0457 LTMODEM
product LUCENT LTMODEM_0458 0x0458 LTMODEM
product LUCENT LTMODEM_0459 0x0459 LTMODEM
product LUCENT LTMODEM_045a 0x045a LTMODEM
product LUCENT OR3LP26 0x5400 Lucent ORCA FPGA w/32-bit PCI ASIC core
product LUCENT OR3TP12 0x5401 Lucent ORCA FPGA w/64-bit PCI ASIC core
product LUCENT USBHC 0x5801 USB Host Controller
product LUCENT FW322_323 0x5811 FW322/323 IEEE 1394 OHCI Controller

/* Macronix */
product MACRONIX MX98713 0x0512 MX98713 (PMAC) 10/100 Ethernet
product MACRONIX MX987x5 0x0531 MX987x5 (PMAC) 10/100 Ethernet

/* Madge Networks products */
product MADGE SMARTRN2 0x0002 Smart 16/4 PCI Ringnode Mk2
product MADGE COLLAGE25 0x1000 Collage 25 ATM adapter
product MADGE COLLAGE155 0x1001 Collage 155 ATM adapter

/* Matrox products */
product MATROX ATLAS 0x0518 MGA PX2085 ("Atlas")
product MATROX MILLENNIUM 0x0519 MGA Millennium 2064W ("Storm")
product MATROX MYSTIQUE 0x051a MGA Mystique 1064SG
product MATROX MILLENNIUM2 0x051b MGA Millennium II 2164W
product MATROX MILLENNIUM2_AGP 0x051f MGA Millennium II 2164WA-B AGP
product MATROX G200_PCI 0x0520 MGA G200 PCI
product MATROX G200_AGP 0x0521 MGA G200 AGP
product MATROX G400_AGP 0x0525 MGA G400 AGP
product MATROX IMPRESSION 0x0d10 MGA Impression
product MATROX G100_PCI 0x1000 MGA G100 PCI
product MATROX G100_AGP 0x1001 MGA G100 AGP

/* MediaQ, Inc. products */
product MEDIAQ MQ200 0x0200 MQ200

/* Middle Digital, Inc. products */
product MIDDLE_DIGITAL WEASEL_VGA 0x9050 Weasel Virtual VGA
product MIDDLE_DIGITAL WEASEL_SERIAL 0x9051 Weasel Serial Port
product MIDDLE_DIGITAL WEASEL_CONTROL 0x9052 Weasel Control

/* Motorola products */
product MOT MPC105 0x0001 MPC105 "Eagle" Host Bridge
product MOT MPC106 0x0002 MPC106 "Grackle" Host Bridge
product MOT MPC8240 0x0003 MPC8240 "Kahlua" Host Bridge
product MOT MPC107 0x0004 MPC107 "Chaparral" Host Bridge
product MOT MPC8245 0x0006 MPC8245 "Kahlua II" Host Bridge
product MOT RAVEN 0x4801 Raven Host Bridge & Multi-Processor Interrupt Controller
product MOT FALCON 0x4802 Falcon ECC Memory Controller Chip Set
product MOT HAWK 0x4803 Hawk System Memory Controller & PCI Host Bridge

/* Mylex products */
product MYLEX RAID_V2 0x0001 DAC960 RAID (v2 interface)
product MYLEX RAID_V3 0x0002 DAC960 RAID (v3 interface)
product MYLEX RAID_V4 0x0010 DAC960 RAID (v4 interface)
product MYLEX RAID_V5 0x0020 DAC960 RAID (v5 interface)
product MYLEX ACCELERAID 0x0050 AcceleRAID (i960)
product MYLEX EXTREMERAID 0xba56 eXtremeRAID (StrongARM)

/* Mylex subsystem IDs */
product MYLEX ACCELERAID_352 0x0050 AcceleRAID 352
product MYLEX ACCELERAID_170 0x0052 AcceleRAID 170
product MYLEX ACCELERAID_160 0x0054 AcceleRAID 160
product MYLEX EXTREMERAID_2000 0x0040 eXtremeRAID 2000
product MYLEX EXTREMERAID_3000 0x0030 eXtremeRAID 3000

/* Mutech products */
product MUTECH MV1000 0x0001 MV1000

/* Myson-Century Technology products */
product MYSON MTD803 0x0803 MTD803 3-in-1 Fast Ethernet Controller

/* National Datacomm Corp. products */
product NDC NCP130 0x0130 NCP130 Wireless NIC
product NDC NCP130A2 0x0131 NCP130 rev A2 Wireless NIC

/* NetVin products - XXX better descriptions */
product NETVIN 5000 0x5000 5000 Ethernet

/* Newbridge / Tundra products */
product NEWBRIDGE CA91CX42 0x0000 Universe VME bridge
product NEWBRIDGE CA91L826A 0x0826 QSpan II PCI bridge
product NEWBRIDGE CA91L8260 0x8260 PowerSpan PCI bridge
product NEWBRIDGE CA91L8261 0x8261 PowerSpan II PCI bridge

/* National Instruments products */
product NATIONALINST MXI3 0x2c30 MXI-3 PCI extender

/* National Semiconductor products */
product NS DP83810 0x0001 DP83810 10/100 Ethernet
product NS DP83815 0x0020 DP83815 10/100 Ethernet
product NS DP83820 0x0022 DP83820 10/100/1000 Ethernet
product NS NS87410 0xd001 NS87410

/* NCR/Symbios Logic products */
product SYMBIOS 810 0x0001 53c810
product SYMBIOS 820 0x0002 53c820
product SYMBIOS 825 0x0003 53c825
product SYMBIOS 815 0x0004 53c815
product SYMBIOS 810AP 0x0005 53c810AP
product SYMBIOS 860 0x0006 53c860
product SYMBIOS 1510D 0x000a 53c1510D
product SYMBIOS 896 0x000b 53c896
product SYMBIOS 895 0x000c 53c895
product SYMBIOS 885 0x000d 53c885
product SYMBIOS 875 0x000f 53c875/876
product SYMBIOS 1510 0x0010 53c1510
product SYMBIOS 895A 0x0012 53c895A
product SYMBIOS 875A 0x0013 53c875A
product SYMBIOS 1010 0x0020 53c1010
product SYMBIOS 1010_2 0x0021 53c1010 (66MHz)
product SYMBIOS 1030 0x0030 53c1030
product SYMBIOS 1030R 0x1030 53c1030R
product SYMBIOS 875J 0x008f 53c875J
product SYMBIOS FC909 0x0620 FC909
product SYMBIOS FC909A 0x0621 FC909A
product SYMBIOS FC929 0x0622 FC929
product SYMBIOS FC929_1 0x0623 FC929
product SYMBIOS FC919 0x0624 FC919
product SYMBIOS FC919_1 0x0625 FC919

/* Packet Engines products */
product SYMBIOS PE_GNIC 0x0702 Packet Engines G-NIC Ethernet

/* NEC products */
product NEC USB 0x0035 USB Host Controller
product NEC VRC4173_CARDU 0x003e VRC4173 PC-Card Unit
product NEC POWERVR2 0x0046 PowerVR PCX2
product NEC PD72872 0x0063 uPD72872 IEEE 1394 OHCI Host Controller
product NEC VRC4173_BCU 0x00a5 VRC4173 Bus Control Unit
product NEC VRC4173_AC97U 0x00a6 VRC4173 AC97 Unit
product NEC PD72870 0x00cd uPD72870 IEEE 1394 OHCI Host Controller
product NEC PD72871 0x00ce uPD72871 IEEE 1394 OHCI Host Controller
product NEC PD720100A 0x00e0 USB Host Controller
product NEC VA26D 0x803c NEC Versa Pro LX VA26D
product NEC VERSALX 0x8058 NEC Versa LX

/* Neomagic products */
product NEOMAGIC NMMG2070 0x0001 MagicGraph NM2070
product NEOMAGIC NMMG128V 0x0002 MagicGraph 128V
product NEOMAGIC NMMG128ZV 0x0003 MagicGraph 128ZV
product NEOMAGIC NMMG2160 0x0004 MagicGraph 128XD
product NEOMAGIC NMMM256AV_VGA 0x0005 MagicMedia 256AV VGA
product NEOMAGIC NMMM256ZX_VGA 0x0006 MagicMedia 256ZX VGA
product NEOMAGIC NMMM256XLP_AU 0x0016 MagicMedia 256XL+ Audio
product NEOMAGIC NMMM256AV_AU 0x8005 MagicMedia 256AV Audio
product NEOMAGIC NMMM256ZX_AU 0x8006 MagicMedia 256ZX Audio

/* Netgear products */
product NETGEAR GA620 0x620a GA620 1000baseSX Gigabit Ethernet
product NETGEAR GA620T 0x630a GA620 1000baseT Gigabit Ethernet
product NETGEAR MA301 0x4100 MA301 PCI IEEE 802.11b

/* Netmos products */
product NETMOS NM9835 0x9835 Dual UART and 1284 Printer port
product NETMOS NM9845 0x9845 Quad UART and 1284 Printer port

/* Network Security Technologies, Inc. */
product NETSEC 7751 0x7751 7751

/* NexGen products */
product NEXGEN NX82C501 0x4e78 NX82C501 Host-PCI Bridge

/* NKK products */
product NKK NDR4600 0xa001 NDR4600 Host-PCI Bridge

/* Number Nine products */
product NUMBER9 I128 0x2309 Imagine-128
product NUMBER9 I128_2 0x2339 Imagine-128 II

/* Nvidia Corporationn products */
product NVIDIA RIVATNT2 0x0028 RIVA TNT2
product NVIDIA RIVATNT2U 0x0029 RIVA TNT2 Ultra
product NVIDIA VANTA 0x002c Vanta
product NVIDIA RIVATNT2M64 0x002d RIVA TNT2 Model 64
product NVIDIA NFORCE2_ATA133 0x0065 nForce2 ATA133 IDE
product NVIDIA NFORCE2_MCPT_AC 0x006a nForce2 MCP-T AC-97
product NVIDIA ALADDINTNT2 0x00a0 Aladdin TNT2
product NVIDIA GEFORCE256 0x0100 GeForce 256
product NVIDIA GEFORCEDDR 0x0101 GeForce DDR
product NVIDIA QUADRO 0x0103 Quadro
product NVIDIA GEFORCE2MX 0x0110 GeForce2 MX
product NVIDIA GEFORCE2MX200 0x0111 GeForce2 MX 100/200
product NVIDIA GEFORCE2GO 0x0112 GeForce2 Go
product NVIDIA QUADRO2_MXR 0x0113 Quadro2 MXR/EX
product NVIDIA GEFORCE2 0x0150 GeForce2 GTS
product NVIDIA GEFORCE2DDR 0x0151 GeForce2 GTS (DDR)
product NVIDIA GEFORCE2BR 0x0152 GeForce2 GTS
product NVIDIA QUADRO2 0x0153 Quadro2
product NVIDIA GEFORCE4_MX460 0x0170 GeForce4 MX 460
product NVIDIA GEFORCE4_MX440 0x0171 GeForce4 MX 440
product NVIDIA GEFORCE4_MX420 0x0172 GeForce4 MX 420
product NVIDIA GF4_MX440_SE 0x0173 GeForce4 MX 440 SE
product NVIDIA QUADRO4_500XGL 0x0178 Quadro4 500XGL
product NVIDIA QUADRO4_200NVS 0x017a Quadro4 200/400NVS
product NVIDIA GF4_MX440_8X 0x0181 GeForce4 MX 440 (AGP8X)
product NVIDIA GF4_MX440_SE_8X 0x0182 GeForce4 MX 440 SE (AGP8X)
product NVIDIA GF4_MX420_8X 0x0183 GeForce4 MX 420 (AGP8X)
product NVIDIA QUADRO4_580XGL 0x0188 Quadro4 580 XGL
product NVIDIA QUADRO4_280NVS 0x018a Quadro4 280 NVS
product NVIDIA QUADRO4_380XGL 0x018b Quadro4 380 XGL
product NVIDIA GEFORCE2_IGP 0x01a0 GeForce2 Integrated GPU
product NVIDIA NFORCE_MCP_AC 0x01b1 nForce MCP AC-97
product NVIDIA NFORCE_ATA100 0x01bc nForce ATA100 IDE
product NVIDIA GF4_MX_IGP 0x01f0 GeForce4 MX Integrated GPU
product NVIDIA GEFORCE3 0x0200 GeForce3
product NVIDIA GEFORCE3_TI200 0x0201 GeForce3 Ti 200
product NVIDIA GEFORCE3_TI500 0x0202 GeForce3 Ti 500
product NVIDIA QUADRO_DCC 0x0203 Quadro DCC
product NVIDIA GEFORCE4_TI4600 0x0250 GeForce4 Ti 4600
product NVIDIA GEFORCE4_TI4400 0x0251 GeForce4 Ti 4400
product NVIDIA GEFORCE4_TI4200 0x0253 GeForce4 Ti 4200
product NVIDIA QUADRO4_900XGL 0x0258 Quadro4 900XGL
product NVIDIA QUADRO4_750XGL 0x0259 Quadro4 750XGL
product NVIDIA QUADRO4_700XGL 0x025b Quadro4 700XGL
product NVIDIA GF4_TI_4800 0x0280 GeForce4 Ti 4800
product NVIDIA GF4_TI_4200_8X 0x0281 GeForce4 Ti 4200 (AGP8X)
product NVIDIA GF4_TI_4800_SE 0x0282 GeForce4 Ti 4800 SE
product NVIDIA QUADRO4_980_XGL 0x0288 Quadro4 980 XGL
product NVIDIA QUADRO4_780_XGL 0x0289 Quadro4 780 XGL
product NVIDIA GEFORCE_FX5800U 0x0301 GeForce FX 5800 Ultra
product NVIDIA GEFORCE_FX5800 0x0302 GeForce FX 5800
product NVIDIA QUADRO_FX_2000 0x0308 Quadro FX 2000
product NVIDIA QUADRO_FX_1000 0x0309 Quadro FX 1000

/* Nvidia Corporation & SGS Thomson Microelectric */
product NVIDIA_SGS RIVA128 0x0018 Riva 128

/* Oak Technologies products */
product OAKTECH OTI1007 0x0107 OTI107

/* Olicom products */
product OLICOM OC2183 0x0013 Olicom OC-2183/2185 Ethernet
product OLICOM OC2325 0x0012 Olicom OC-2325 Ethernet
product OLICOM OC2326 0x0014 Olicom OC-2326 10/100-TX Ethernet

/* Opti products */
product OPTI 82C557 0xc557 82C557
product OPTI 82C558 0xc558 82C558
product OPTI 82C568 0xc568 82C568
product OPTI 82D568 0xd568 82D568
product OPTI 82C621 0xc621 82C621
product OPTI 82C822 0xc822 82C822
product OPTI RM861HA 0xc861 RM861HA
product OPTI 82C700 0xc700 82C700
product OPTI 82C701 0xc701 82C701

/* PC Tech products */
product PCTECH RZ1000 0x1000 RZ1000

/* Peak System Technik products */
product PEAK PCAN 0x0001 PCAN CAN controller

/* PLX Technology products */
product PLX 9060ES 0x906e 9060ES PCI bus controller
product PLX 9656 0x9656 9656 I/O Accelerator

/* Powerhouse Systems products */
product POWERHOUSE POWERTOP 0x6037 PowerTop PowerPC system controller
product POWERHOUSE POWERPRO 0x6073 PowerPro PowerPC system controller

/* ProLAN products - XXX better descriptions */
product PROLAN NE2KETHER 0x1980 Ethernet

/* Promise products */
product PROMISE ULTRA100X 0x0d30 Ultra100X/ATA Bus Master IDE Accelerator
product PROMISE ULTRA66_0 0x0d38 Ultra66/ATA Bus Master IDE Accelerator
product PROMISE MBULTRA133 0x1275 Ultra133/ATA Bus Master IDE Accelerator (MB)
product PROMISE SATA150TX2PLUSO 0x3375 Serial ATA/150 TX2 Controller plus one parallel IDE bus
product PROMISE SATA150TX2PLUS 0x3376 Serial ATA/150 TX2plus Bus Master IDE Accelerator
product PROMISE SATA150TX4 0x3318 Serial ATA/150 TX4 Controller
product PROMISE ULTRA100 0x4d30 Ultra100/ATA Bus Master IDE Accelerator
product PROMISE ULTRA33 0x4d33 Ultra33/ATA Bus Master IDE Accelerator
product PROMISE ULTRA66 0x4d38 Ultra66/ATA Bus Master IDE Accelerator
product PROMISE ULTRA100TX2 0x4d68 Ultra100TX2/ATA Bus Master IDE Accelerator
product PROMISE ULTRA133 0x4d69 Ultra133/ATA Bus Master IDE Accelerator
product PROMISE ULTRA133TX2 0x5275 Ultra133TX2/ATA Bus Master IDE Accelerator
product PROMISE DC5030 0x5300 DC5030
product PROMISE ULTRA100TX2v2 0x6268 Ultra100TX2v2/ATA Bus Master IDE Accelerator
product PROMISE ULTRA133TX2v2 0x6269 Ultra133TX2v2/ATA Bus Master IDE Accelerator
product PROMISE FASTTRAK133LITE 0x7275 Fasttrak133 Lite Bus Master IDE Accelerator

/* QLogic products */
product QLOGIC ISP1020 0x1020 ISP1020
product QLOGIC ISP1022 0x1022 ISP1022
product QLOGIC ISP1080 0x1080 ISP1080
product QLOGIC ISP1240 0x1240 ISP1240
product QLOGIC ISP2100 0x2100 ISP2100

/* Quantum Designs products */
product QUANTUMDESIGNS 8500 0x0001 8500
product QUANTUMDESIGNS 8580 0x0002 8580

/* Rainbow Technologies products */
product RAINBOW CS200 0x0200 CryptoSwift 200 PKI Accelerator

/* RATOC Systems products */
product RATOC REXPCI31 0x0853 REX PCI-31/33 SCSI

/* Realtek (Creative Labs?) products */
product REALTEK RT8029 0x8029 8029 Ethernet
product REALTEK RT8129 0x8129 8129 10/100 Ethernet
product REALTEK RT8139B 0x8138 8139B 10/100 Ethernet
product REALTEK RT8139 0x8139 8139 10/100 Ethernet

/* RICOH products */
product RICOH Rx5C465 0x0465 5C465 PCI-CardBus bridge
product RICOH Rx5C466 0x0466 5C466 PCI-CardBus bridge
product RICOH Rx5C475 0x0475 5C475 PCI-CardBus bridge
product RICOH RL5C476 0x0476 5C476 PCI-CardBus bridge
product RICOH Rx5C477 0x0477 5C477 PCI-CardBus bridge
product RICOH Rx5C478 0x0478 5C478 PCI-CardBus bridge
product RICOH Rx5C552 0x0552 5C552 PCI-CardBus bridge/Firewire

/* RISCom (SDL Communications, Inc?) products */
product RISCOM N2 0x5568 N2

/* RNS products */
product RNS FDDI 0x2200 2200 FDDI

/* S3 products */
product S3 VIRGE 0x5631 ViRGE
product S3 TRIO32 0x8810 Trio32
product S3 TRIO64 0x8811 Trio32/64
product S3 AURORA64P 0x8812 Aurora64V+
product S3 TRIO64UVP 0x8814 Trio64UV+
product S3 VIRGE_VX 0x883d ViRGE/VX
product S3 868 0x8880 868
product S3 928 0x88b0 86C928
product S3 864_0 0x88c0 86C864-0 ("Vision864")
product S3 864_1 0x88c1 86C864-1 ("Vision864")
product S3 864_2 0x88c2 86C864-2 ("Vision864")
product S3 864_3 0x88c3 86C864-3 ("Vision864")
product S3 964_0 0x88d0 86C964-0 ("Vision964")
product S3 964_1 0x88d1 86C964-1 ("Vision964")
product S3 964_2 0x88d2 86C964-2 ("Vision964")
product S3 964_3 0x88d3 86C964-3 ("Vision964")
product S3 968_0 0x88f0 86C968-0 ("Vision968")
product S3 968_1 0x88f1 86C968-1 ("Vision968")
product S3 968_2 0x88f2 86C968-2 ("Vision968")
product S3 968_3 0x88f3 86C968-3 ("Vision968")
product S3 TRIO64V2_DX 0x8901 Trio64V2/DX
product S3 PLATO_PX 0x8901 Plato/PX
product S3 TRIO3D 0x8904 86C365 Trio3D
product S3 VIRGE_DX 0x8a01 ViRGE/DX
product S3 VIRGE_GX2 0x8a10 ViRGE/GX2
product S3 TRIO3D2X 0x8a13 Trio3D/2X
product S3 SAVAGE3D 0x8a20 Savage3D
product S3 SAVAGE3D_MV 0x8a21 Savage3D+MV
product S3 SAVAGE4 0x8a22 Savage4
product S3 VIRGE_MX 0x8c01 ViRGE/MX
product S3 VIRGE_MXP 0x8c03 ViRGE/MXP
product S3 SAVAGE_MX_MV 0x8c10 Savage/MX+MV
product S3 SAVAGE_MX 0x8c11 Savage/MX
product S3 SAVAGE_IX_MV 0x8c12 Savage/IX+MV
product S3 SAVAGE_IX 0x8c13 Savage/IX
product S3 SAVAGE2000 0x9102 Savage2000
product S3 SONICVIBES 0xca00 SonicVibes

/* Samsung Semiconductor products */
product SAMSUNGSEMI KS8920 0x8920 KS8920 10/100 Ethernet

/* Sandburst products */
product SANDBURST QE1000 0x0180 QE1000
product SANDBURST FE1000 0x0200 FE1000
/*product SANDBURST SE1600 0x0100 SE1600*/

/* SEGA Enterprises products */
product SEGA BROADBAND 0x1234 Broadband Adapter

/* ServerWorks products */
product SERVERWORKS OSB4 0x0200 OSB4 SouthBridge
product SERVERWORKS CSB5 0x0201 CSB5 SouthBridge
product SERVERWORKS XX5 0x0005 PCIHB5
product SERVERWORKS CIOB20 0x0006 I/O Bridge
product SERVERWORKS XX7 0x0007 PCIHB7
product SERVERWORKS CNB20HE 0x0008 CNB20HE Host
product SERVERWORKS CNB20LE 0x0009 CNB20LE Host
product SERVERWORKS CIOB30 0x0010 CIOB30

/* SGI products */
product SGI IOC3 0x0003 IOC3
product SGI RAD1 0x0005 PsiTech RAD1
product SGI TIGON 0x0009 Tigon Gigabit Ethernet

/* SGS Thomson products */
product SGSTHOMSON 2000 0x0008 STG 2000X
product SGSTHOMSON 1764 0x1746 STG 1764X

/* Broadcom Corp. (SiByte) products */
product SIBYTE BCM1250_PCIHB 0x0001 BCM1250 PCI Host Bridge
product SIBYTE BCM1250_LDTHB 0x0002 BCM1250 LDT Host Bridge

/* Sigma Designs products */
product SIGMA HOLLYWOODPLUS 0x8300 REALmagic Hollywood-Plus MPEG-2 Decoder

/* SIIG Inc products */
product SIIG CYBER10_S550 0x1000 Cyber10x Serial 16550 PCI
product SIIG CYBER10_S650 0x1001 Cyber10x Serial 16650 PCI
product SIIG CYBER10_S850 0x1002 Cyber10x Serial 16850 PCI
product SIIG CYBER10_IO550 0x1010 Cyber10x I/O 16550 PCI
product SIIG CYBER10_IO650 0x1011 Cyber10x I/O 16650 PCI
product SIIG CYBER10_IO850 0x1010 Cyber10x I/O 16850 PCI
product SIIG CYBER10_P 0x1020 Cyber10x Parallel PCI
product SIIG CYBER10_2P 0x1021 Cyber10x Parallel Dual PCI
product SIIG CYBER10_2S550 0x1030 Cyber10x Serial Dual 16550 PCI
product SIIG CYBER10_2S650 0x1031 Cyber10x Serial Dual 16650 PCI
product SIIG CYBER10_2S850 0x1032 Cyber10x Serial Dual 16850 PCI
product SIIG CYBER10_2S1P550 0x1034 Cyber10x 2S1P 16550 PCI
product SIIG CYBER10_2S1P650 0x1035 Cyber10x 2S1P 16650 PCI
product SIIG CYBER10_2S1P850 0x1036 Cyber10x 2S1P 16850 PCI
product SIIG CYBER10_4S550 0x1050 Cyber10x 4S 16550 PCI
product SIIG CYBER10_4S650 0x1051 Cyber10x 4S 16650 PCI
product SIIG CYBER10_4S850 0x1052 Cyber10x 4S 16850 PCI
product SIIG CYBER20_S550 0x2000 Cyber20x Serial 16550 PCI
product SIIG CYBER20_S650 0x2001 Cyber20x Serial 16650 PCI
product SIIG CYBER20_S850 0x2002 Cyber20x Serial 16850 PCI
product SIIG CYBER20_IO550 0x2010 Cyber20x I/O 16550 PCI
product SIIG CYBER20_IO650 0x2011 Cyber20x I/O 16650 PCI
product SIIG CYBER20_IO850 0x2010 Cyber20x I/O 16850 PCI
product SIIG CYBER20_P 0x2020 Cyber20x Parallel PCI
product SIIG CYBER20_2P 0x2021 Cyber20x Parallel Dual PCI
product SIIG CYBER20_2S550 0x2030 Cyber20x Serial Dual 16550 PCI
product SIIG CYBER20_2S650 0x2031 Cyber20x Serial Dual 16650 PCI
product SIIG CYBER20_2S850 0x2032 Cyber20x Serial Dual 16850 PCI
product SIIG CYBER20_2P1S550 0x2040 Cyber20x 2P1S 16550 PCI
product SIIG CYBER20_2P1S650 0x2041 Cyber20x 2P1S 16650 PCI
product SIIG CYBER20_2P1S850 0x2042 Cyber20x 2P1S 16850 PCI
product SIIG CYBER20_4S550 0x2050 Cyber20x 4S 16550 PCI
product SIIG CYBER20_4S650 0x2051 Cyber20x 4S 16650 PCI
product SIIG CYBER20_4S850 0x2052 Cyber20x 4S 16850 PCI
product SIIG CYBER20_2S1P550 0x2060 Cyber20x 2S1P 16550 PCI
product SIIG CYBER20_2S1P650 0x2061 Cyber20x 2S1P 16650 PCI
product SIIG CYBER20_2S1P850 0x2062 Cyber20x 2S1P 16850 PCI

/* Silicon Integrated System products */
product SIS 86C201 0x0001 86C201
product SIS 86C202 0x0002 86C202
product SIS 86C205 0x0005 86C205
product SIS 85C503 0x0008 85C503 or 5597/5598 ISA bridge
product SIS 600PMC 0x0009 600 Power Mngmt Controller
product SIS 5597_VGA 0x0200 5597/5598 integrated VGA
product SIS 85C501 0x0406 85C501
product SIS 85C496 0x0496 85C496
product SIS 530HB 0x0530 530 Host to PCI Bridge
product SIS 540HB 0x0540 540 Host to PCI Bridge
product SIS 550HB 0x0550 550 Host to PCI Bridge
product SIS 85C601 0x0601 85C601
product SIS 620 0x0620 SiS 620 Host Bridge
product SIS 630 0x0630 SiS 630 Host Bridge
product SIS 633 0x0633 SiS 633 Host Bridge
product SIS 635 0x0635 SiS 635 Host Bridge
product SIS 640 0x0640 SiS 640 Host Bridge
product SIS 645 0x0645 SiS 645 Host Bridge
product SIS 646 0x0646 SiS 646 Host Bridge
product SIS 648 0x0648 SiS 648 Host Bridge
product SIS 650 0x0650 SiS 650 Host Bridge
product SIS 651 0x0651 SiS 651 Host Bridge
product SIS 652 0x0652 SiS 652 Host Bridge
product SIS 655 0x0655 SiS 655 Host Bridge
product SIS 658 0x0658 SiS 658 Host Bridge
product SIS 730 0x0730 SiS 730 Host Bridge
product SIS 733 0x0733 SiS 733 Host Bridge
product SIS 735 0x0735 SiS 735 Host Bridge
product SIS 740 0x0740 SiS 740 Host Bridge
product SIS 745 0x0745 SiS 745 Host Bridge
product SIS 746 0x0746 SiS 746 Host Bridge
product SIS 748 0x0748 SiS 748 Host Bridge
product SIS 750 0x0750 SiS 750 Host Bridge
product SIS 751 0x0751 SiS 751 Host Bridge
product SIS 752 0x0752 SiS 752 Host Bridge
product SIS 755 0x0755 SiS 755 Host Bridge
product SIS 900 0x0900 SiS 900 10/100 Ethernet
product SIS 961 0x0961 SiS 961 Host Bridge
product SIS 962 0x0962 SiS 962 Host Bridge
product SIS 963 0x0963 SiS 963 Host Bridge
product SIS 5597_IDE 0x5513 5597/5598 IDE controller
product SIS 5597_HB 0x5597 5597/5598 host bridge
product SIS 530VGA 0x6306 530 GUI Accelerator+3D
product SIS 6325 0x6325 6325 AGP VGA
product SIS 6326 0x6326 6326 AGP VGA
product SIS 5597_USB 0x7001 5597/5598 USB host controller
product SIS 7002 0x7002 7002 USB 2.0 host controller
product SIS 7012_AC 0x7012 SiS 7012 AC-97 Sound
product SIS 7016 0x7016 SiS 7016 10/100 Ethernet
product SIS 7018 0x7018 SiS 7018 Sound

/* Silicon Motion, Inc. products */
product SILMOTION SM710 0x0710 LynxEM
product SILMOTION SM712 0x0712 LynxEM+
product SILMOTION SM720 0x0720 Lynx3DM
product SILMOTION SM810 0x0810 LynxE
product SILMOTION SM811 0x0811 LynxE
product SILMOTION SM820 0x0820 Lynx3D
product SILMOTION SM910 0x0910 Lynx

/* SMC products */
product SMC 37C665 0x1000 FDC 37C665
product SMC 37C922 0x1001 FDC 37C922
product SMC 83C170 0x0005 83C170 ("EPIC/100") Fast Ethernet
product SMC 83C175 0x0006 83C175 ("EPIC/100") Fast Ethernet

/* Solidum Systems Corporation */
product SOLIDUM AMD971 0x2000 SNP8023: AMD 971
product SOLIDUM CLASS802 0x8023 SNP8023: Classifier Engine
product SOLIDUM PAXWARE1100 0x1100 PAX.ware 1100 dual Gb Classifier Engine

/* Sony products */
product SONY CXD1947A 0x8009 CXD1947A IEEE 1394 Host Controller
product SONY CXD3222 0x8039 CXD3222 OHCI IEEE 1394 Host Controller
product SONY MEMSTICK 0x808a Memory Stick I/F Controller

/* Sun Microsystems, Inc. products */
product SUN EBUS 0x1000 PCIO Ebus2
product SUN HMENETWORK 0x1001 PCIO Happy Meal Ethernet
product SUN EBUSIII 0x1100 PCIO Ebus2 (US III)
product SUN ERINETWORK 0x1101 ERI Ethernet
product SUN FIREWIRE 0x1102 FireWire controller
product SUN USB 0x1103 USB controller
product SUN GEMNETWORK 0x2bad GEM Gigabit Ethernet
product SUN SIMBA 0x5000 Simba PCI bridge
product SUN PSYCHO 0x8000 psycho PCI controller
product SUN MS_IIep 0x9000 microSPARC IIep PCI
product SUN US_IIi 0xa000 UltraSPARC IIi PCI
product SUN US_IIe 0xa001 UltraSPARC IIe PCI

/* Sundance Technology products */
product SUNDANCETI ST201 0x0201 ST201 10/100 Ethernet
product SUNDANCETI ST2021 0x2021 ST2021 Gigabit Ethernet

/* Surecom Technology products */
product SURECOM NE34 0x0e34 NE-34 Ethernet

/* Symphony Labs products */
product SYMPHONY 82C101 0x0001 82C101
product SYMPHONY 82C103 0x0103 82C103
product SYMPHONY 82C105 0x0105 82C105
product SYMPHONY2 82C101 0x0001 82C101
product SYMPHONY 83C553 0x0565 83C553 PCI-ISA Bridge

/* Schneider & Koch (really SysKonnect) products */
product SCHNEIDERKOCH SK_9DX1 0x4400 SK-NET SK-9DX1 Gigabit Ethernet
/* These next two are are really subsystem IDs */
product SCHNEIDERKOCH SK_9D21 0x4421 SK-9D21 1000BASE-T
product SCHNEIDERKOCH SK_9D41 0x4441 SK-9D41 1000BASE-X

/* Tamarack Microelectronics, Inc. */
product TAMARACK TC9021 0x1021 Tamarack TC9021 Gigabit Ethernet
product TAMARACK TC9021_ALT 0x9021 Tamarack TC9021 Gigabit Ethernet (alt ID)

/* Tekram Technology products (1st PCI Vendor ID)*/
product TEKRAM DC290 0xdc29 DC-290(M)

/* Tekram Technology products (2nd PCI Vendor ID) */
product TEKRAM2 DC690C 0x690c DC-690C
product TEKRAM2 DC315 0x0391 DC-315/DC-395

/* Texas Instruments products */
product TI TLAN 0x0500 TLAN
product TI TVP4020 0x3d07 TVP4020 Permedia 2
product TI TSB12LV21 0x8000 TSB12LV21 IEEE 1394 Host Controller
product TI TSB12LV22 0x8009 TSB12LV22 OHCI IEEE 1394 Host Controller
product TI PCI4450LYNX 0x8011 PCI4450 OHCI IEEE 1394 HOST Controller w/ PCI-CardBus Bridge
product TI PCI4410LYNX 0x8017 PCI4410 OHCI IEEE 1394 HOST Controller w/ PCI-CardBus Bridge
product TI TSB12LV23 0x8019 TSB12LV23 OHCI IEEE 1394 Host Controller
product TI TSB12LV26 0x8020 TSB12LV26 OHCI IEEE 1394 Host Controller
product TI TSB43AA22 0x8021 TSB43AA22 OHCI IEEE 1394 Host Controller
product TI TSB43AA22A 0x8023 TSB43AA22/A OHCI IEEE 1394 Host Controller
product TI TSB43AA23 0x8024 TSB43AA23 OHCI IEEE 1394 Host Controller
product TI TSB43AB21 0x8026 TSB43AA21 OHCI IEEE 1394 Host Controller
product TI PCI4451LYNX 0x8027 PCI4451 OHCI IEEE 1394 HOST Controller w/ PCI-CardBus Bridge
product TI PCI4510LYNX 0x8029 PCI4510 OHCI IEEE 1394 HOST Controller w/ PCI-CardBus Bridge
product TI PCI4520LYNX 0x802A PCI4520 OHCI IEEE 1394 HOST Controller w/ PCI-CardBus Bridge
product TI PCI7410LYNX 0x802B PCI7[4-6]10 OHCI IEEE 1394 HOST Controller w/ PCI-CardBus Bridge
product TI ACX100 0x8400 ACX100 802.11b
product TI PCI1130 0xac12 PCI1130 PCI-CardBus Bridge
product TI PCI1031 0xac13 PCI1031 PCI-PCMCIA Bridge
product TI PCI1131 0xac15 PCI1131 PCI-CardBus Bridge
product TI PCI1250 0xac16 PCI1250 PCI-CardBus Bridge
product TI PCI1220 0xac17 PCI1220 PCI-CardBus Bridge
product TI PCI1221 0xac19 PCI1221 PCI-CardBus Bridge
product TI PCI1210 0xac1a PCI1210 PCI-CardBus Bridge
product TI PCI1450 0xac1b PCI1450 PCI-CardBus Bridge
product TI PCI1225 0xac1c PCI1225 PCI-CardBus Bridge
product TI PCI1251 0xac1d PCI1251 PCI-CardBus Bridge
product TI PCI1211 0xac1e PCI1211 PCI-CardBus Bridge
product TI PCI1251B 0xac1f PCI1251B PCI-CardBus Bridge
product TI PCI2030 0xac20 PCI2030 PCI-PCI Bridge
product TI PCI2050 0xac28 PCI2050 PCI-PCI Bridge
product TI PCI4450YENTA 0xac40 PCI4450 PCI-CardBus Bridge w/ OHCI IEEE 1394 Controller
product TI PCI4410YENTA 0xac41 PCI4410 PCI-CardBus Bridge w/ OHCI IEEE 1394 Controller
product TI PCI4451YENTA 0xac42 PCI4451 PCI-CardBus Bridge w/ OHCI IEEE 1394 Controller
product TI PCI4510YENTA 0xac44 PCI4510 PCI-CardBus Bridge w/ OHCI IEEE 1394 Controller
product TI PCI4520YENTA 0xac46 PCI4520 PCI-CardBus Bridge w/ OHCI IEEE 1394 Controller
product TI PCI7510YENTA 0xac47 PCI7510 PCI-CardBus Bridge w/ OHCI IEEE 1394 Controller
product TI PCI7610YENTA 0xac48 PCI7610 PCI-CardBus Bridge w/ OHCI IEEE 1394 Controller
product TI PCI7410YENTA 0xac49 PCI7410 PCI-CardBus Bridge w/ OHCI IEEE 1394 Controller
product TI PCI7610SM 0xac4A PCI7610 PCI-CardBus Bridge (Smart Card mode)
product TI PCI7410SD 0xac4B PCI7[46]10 PCI-CardBus Bridge (SD/MMC mode)
product TI PCI7410MS 0xac4C PCI7[46]10 PCI-CardBus Bridge (Memory stick mode)
product TI PCI1410 0xac50 PCI1410 PCI-CardBus Bridge
product TI PCI1420 0xac51 PCI1420 PCI-CardBus Bridge
product TI PCI1451 0xac52 PCI1451 PCI-CardBus Bridge
product TI PCI1421 0xac53 PCI1421 PCI-CardBus Bridge
product TI PCI1620 0xac54 PCI1620 PCI-CardBus Bridge
product TI PCI1520 0xac55 PCI1520 PCI-CardBus Bridge
product TI PCI1510 0xac56 PCI1510 PCI-CardBus Bridge
product TI PCI1530 0xac57 PCI1530 PCI-CardBus Bridge
product TI PCI1515 0xac58 PCI1515 PCI-CardBus Bridge
product TI PCI2040 0xac60 PCI2040 PCI-to-DSP Bridge

/* Titan Electronics products */
product TITAN PCI800L 0x8080 PCI-800L
product TITAN PCI800H 0xa003 PCI-800H
product TITAN PCI100H 0xa001 PCI-100H

/* Toshiba America products */
product TOSHIBA R4X00 0x0009 R4x00 Host-PCI Bridge
product TOSHIBA TC35856F 0x0020 TC35856F ATM ("Meteor")

/* Toshiba products */
product TOSHIBA2 PORTEGE 0x0001 Portege Notebook
product TOSHIBA2 HOST 0x0601 Host Bridge/Controller
product TOSHIBA2 ISA 0x0602 ISA Bridge
product TOSHIBA2 ToPIC95 0x0603 ToPIC95 CardBus-PCI Bridge
product TOSHIBA2 ToPIC95B 0x060a ToPIC95B CardBus-PCI Bridge
product TOSHIBA2 ToPIC97 0x060f ToPIC97 CardBus-PCI Bridge
product TOSHIBA2 ToPIC100 0x0617 ToPIC100 CardBus-PCI Bridge
product TOSHIBA2 OBOE 0x0701 Fast Infrared Type O
product TOSHIBA2 DONAUOBOE 0x0d01 Fast Infrared Type DO

/* Transmeta products */
product TRANSMETA NORTHBRIDGE 0x0295 Virtual Northbridge
product TRANSMETA LONGRUN 0x0395 LongRun Northbridge
product TRANSMETA SDRAM 0x0396 SDRAM Controller
product TRANSMETA BIOS_SCRATCH 0x0397 BIOS Scratchpad

/* Trident products */
product TRIDENT 4DWAVE_DX 0x2000 4DWAVE DX
product TRIDENT 4DWAVE_NX 0x2001 4DWAVE NX
product TRIDENT CYBERBLADE_I7 0x8420 CyberBlade i7
product TRIDENT TGUI_9320 0x9320 TGUI 9320
product TRIDENT TGUI_9350 0x9350 TGUI 9350
product TRIDENT TGUI_9360 0x9360 TGUI 9360
product TRIDENT CYBER_9397 0x9397 CYBER 9397
product TRIDENT CYBER_9397DVD 0x939a CYBER 9397DVD
product TRIDENT CYBER_9525 0x9525 CYBER 9525
product TRIDENT TGUI_9420 0x9420 TGUI 9420
product TRIDENT TGUI_9440 0x9440 TGUI 9440
product TRIDENT TGUI_9660 0x9660 TGUI 9660
product TRIDENT TGUI_9680 0x9680 TGUI 9680
product TRIDENT TGUI_9682 0x9682 TGUI 9682
product TRIDENT CYBERBLADE 0x9910 CyberBlade

/* Triones Technologies products */
/* The 366 and 370 controllers have the same product ID */
product TRIONES HPT366 0x0004 HPT366/370 IDE Controller
product TRIONES HPT372 0x0005 HPT372 IDE Controller
product TRIONES HPT374 0x0008 HPT374 IDE Controller

/* TriTech Microelectronics products*/
product TRITECH TR25202 0xfc02 Pyramid3D TR25202

/* Tseng Labs products */
product TSENG ET4000_W32P_A 0x3202 ET4000w32p rev A
product TSENG ET4000_W32P_B 0x3205 ET4000w32p rev B
product TSENG ET4000_W32P_C 0x3206 ET4000w32p rev C
product TSENG ET4000_W32P_D 0x3207 ET4000w32p rev D
product TSENG ET6000 0x3208 ET6000

/* UMC products */
product UMC UM82C881 0x0001 UM82C881 486 Chipset
product UMC UM82C886 0x0002 UM82C886 ISA Bridge
product UMC UM8673F 0x0101 UM8673F EIDE Controller
product UMC UM8881 0x0881 UM8881 HB4 486 PCI Chipset
product UMC UM82C891 0x0891 UM82C891
product UMC UM886A 0x1001 UM886A
product UMC UM8886BF 0x673a UM8886BF
product UMC UM8710 0x8710 UM8710
product UMC UM8886 0x886a UM8886
product UMC UM8881F 0x8881 UM8881F PCI-Host bridge
product UMC UM8886F 0x8886 UM8886F PCI-ISA bridge
product UMC UM8886A 0x888a UM8886A
product UMC UM8891A 0x8891 UM8891A
product UMC UM9017F 0x9017 UM9017F
product UMC UM8886N 0xe88a UM8886N
product UMC UM8891N 0xe891 UM8891N

/* ULSI Systems products */
product ULSI US201 0x0201 US201

/* US Robotics products */
product USR 3C2884A 0x1007 56K Voice Internal PCI Modem (WinModem)
product USR 3CP5609 0x1008 3CP5609 PCI 16550 Modem
product USR2 2415 0x3685 Wireless PCI-PCMCIA adapter

/* V3 Semiconductor products */
product V3 V292PBC 0x0292 V292PBC AMD290x0 Host-PCI Bridge
product V3 V960PBC 0x0960 V960PBC i960 Host-PCI Bridge
product V3 V96DPC 0xc960 V96DPC i960 (Dual) Host-PCI Bridge

/* VIA Technologies products, from */
product VIATECH VT6305 0x0130 VT6305 OHCI IEEE 1394 Controller
product VIATECH VT8363_HB 0x0305 VT8363 KT133 System Controller
product VIATECH VT8371_HB 0x0391 VT8371 (Apollo KX133) Host Bridge
product VIATECH VT8501_MVP4 0x0501 VT8501 MVP4 System Controller
product VIATECH VT82C505 0x0505 VT82C505 (Pluto)
product VIATECH VT82C561 0x0561 VT82C561
product VIATECH VT82C586A_IDE 0x0571 VT82C586A IDE Controller
product VIATECH VT82C576 0x0576 VT82C576 3V
product VIATECH VT82C580VP 0x0585 VT82C580 (Apollo VP) Host-PCI Bridge
product VIATECH VT82C586_ISA 0x0586 VT82C586 (Apollo VP) PCI-ISA Bridge
product VIATECH VT82C595 0x0595 VT82C595 (Apollo VP2) Host-PCI Bridge
product VIATECH VT82C596A 0x0596 VT82C596A (Apollo Pro) PCI-ISA Bridge
product VIATECH VT82C597 0x0597 VT82C597 (Apollo VP3) Host-PCI Bridge
product VIATECH VT82C598PCI 0x0598 VT82C598 (Apollo MVP3) Host-PCI Bridge
product VIATECH VT8605PCI 0x0605 VT8605 (Apollo ProMedia 133) Host-PCI Bridge
product VIATECH VT82C686A_ISA 0x0686 VT82C686A (Apollo KX133) PCI-ISA Bridge
product VIATECH VT82C691 0x0691 VT82C691 (Apollo Pro) Host-PCI
product VIATECH VT82C693 0x0693 VT82C693 (Apollo Pro Plus) Host-PCI
product VIATECH VT86C926 0x0926 VT86C926 Amazon PCI-Ethernet Controller
product VIATECH VT82C570M 0x1000 VT82C570M (Apollo) Host-PCI Bridge
product VIATECH VT82C570MV 0x1006 VT82C570M (Apollo) PCI-ISA Bridge
product VIATECH VT82C586_IDE 0x1571 VT82C586 (Apollo VP) IDE Controller
product VIATECH VT82C595_2 0x1595 VT82C595 (Apollo VP2) Host-PCI Bridge
product VIATECH VT83C572 0x3038 VT83C572 USB Controller
product VIATECH VT82C586_PWR 0x3040 VT82C586 (Apollo VP) Power Management Controller
product VIATECH VT3043 0x3043 VT3043 (Rhine) 10/100 Ethernet
product VIATECH VT6306 0x3044 VT3606 OHCI IEEE 1394 Controller
product VIATECH VT82C686A_SMB 0x3057 VT82C686A SMBus Controller
product VIATECH VT82C686A_AC97 0x3058 VT82C686A AC-97 Audio Controller
product VIATECH VT8233_AC97 0x3059 VT8233/VT8235 AC-97 Audio Controller
product VIATECH VT6102 0x3065 VT6102 (Rhine II) 10/100 Ethernet
product VIATECH VT82C686A_MC97 0x3068 VT82C686A MC-97 Modem Controller
product VIATECH VT8233 0x3074 VT8233 PCI-ISA Bridge
product VIATECH VT8366 0x3099 VT8366 (Apollo KT266) CPU-PCI Bridge
product VIATECH VT8653 0x3101 VT8653 (Apollo Pro 266T) CPU-PCI Bridge
product VIATECH VT8233A 0x3147 VT8233A PCI-ISA Bridge
product VIATECH VT8235 0x3177 VT8235 (Apollo KT400) PCI-ISA Bridge
product VIATECH VT8377 0x3189 VT8377 Apollo KT400 CPU to PCI Bridge
product VIATECH VT86C100A 0x6100 VT86C100A (Rhine-II) 10/100 Ethernet
product VIATECH VT8231 0x8231 VT8231 IDE Controller
product VIATECH VT8363_PPB 0x8305 VT8363 KT133 PCI to AGP Bridge
product VIATECH VT8371_PPB 0x8391 VT8371 (Apollo KX133) PCI-PCI Bridge
product VIATECH VT8501AGP 0x8501 VT8501 CPU-AGP Bridge
product VIATECH VT82C597AGP 0x8597 VT82C597 (Apollo VP3) CPU-AGP Bridge
product VIATECH VT82C598AGP 0x8598 VT82C598 (Apollo MVP3) CPU-AGP Bridge
product VIATECH VT8605AGP 0x8605 VT8605 (Apollo ProMedia 133) Host-AGP Bridge
product VIATECH VT8633AGP 0xb091 VT8633 (Apollo Pro 266) CPU-AGP Bridge
product VIATECH VT8366AGP 0xb099 VT8366 CPU-AGP Bridge
product VIATECH VT8377AGP 0xb168 VT8377 CPU-AGP Bridge

/* Vortex Computer Systems products */
product VORTEX GDT_60x0 0x0000 GDT6000/6020/6050
product VORTEX GDT_6000B 0x0001 GDT6000B/6010
product VORTEX GDT_6x10 0x0002 GDT6110/6510
product VORTEX GDT_6x20 0x0003 GDT6120/6520
product VORTEX GDT_6530 0x0004 GDT6530
product VORTEX GDT_6550 0x0005 GDT6550
product VORTEX GDT_6x17 0x0006 GDT6117/6517
product VORTEX GDT_6x27 0x0007 GDT6127/6527
product VORTEX GDT_6537 0x0008 GDT6537
product VORTEX GDT_6557 0x0009 GDT6557/6557-ECC
product VORTEX GDT_6x15 0x000a GDT6115/6515
product VORTEX GDT_6x25 0x000b GDT6125/6525
product VORTEX GDT_6535 0x000c GDT6535
product VORTEX GDT_6555 0x000d GDT6555/6555-ECC
product VORTEX GDT_6x17RP 0x0100 GDT6[15]17RP
product VORTEX GDT_6x27RP 0x0101 GDT6[15]27RP
product VORTEX GDT_6537RP 0x0102 GDT6537RP
product VORTEX GDT_6557RP 0x0103 GDT6557RP
product VORTEX GDT_6x11RP 0x0104 GDT6[15]11RP
product VORTEX GDT_6x21RP 0x0105 GDT6[15]21RP
product VORTEX GDT_6x17RD 0x0110 GDT6[15]17RD
product VORTEX GDT_6x27RD 0x0111 GDT6[5]127RD
product VORTEX GDT_6537RD 0x0112 GDT6537RD
product VORTEX GDT_6557RD 0x0113 GDT6557RD
product VORTEX GDT_6x11RD 0x0114 GDT6[15]11RD
product VORTEX GDT_6x21RD 0x0115 GDT6[15]21RD
product VORTEX GDT_6x18RD 0x0118 GDT6[156]18RD
product VORTEX GDT_6x28RD 0x0119 GDT6[156]28RD
product VORTEX GDT_6x38RD 0x011a GDT6[56]38RD
product VORTEX GDT_6x58RD 0x011b GDT6[56]58RD
product VORTEX GDT_6x17RP2 0x0120 GDT6[15]17RP2
product VORTEX GDT_6x27RP2 0x0121 GDT6[15]27RP2
product VORTEX GDT_6537RP2 0x0123 GDT6537RP2
product VORTEX GDT_6x11RP2 0x0124 GDT6[15]11RP2
product VORTEX GDT_6x21RP2 0x0125 GDT6[15]21RP2
product VORTEX GDT_6x13RS 0x0136 GDT6513RS
product VORTEX GDT_6x23RS 0x0137 GDT6523RS
product VORTEX GDT_6518RS 0x0138 GDT6518RS
product VORTEX GDT_6x28RS 0x0139 GDT6x28RS
product VORTEX GDT_6x38RS 0x013a GDT6x38RS
product VORTEX GDT_6x58RS 0x013b GDT6x58RS
product VORTEX GDT_6x33RS 0x013c GDT6x33RS
product VORTEX GDT_6x43RS 0x013d GDT6x43RS
product VORTEX GDT_6x53RS 0x013e GDT6x53RS
product VORTEX GDT_6x63RS 0x013f GDT6x63RS
product VORTEX GDT_7x13RN 0x0166 GDT7x13RN
product VORTEX GDT_7x23RN 0x0167 GDT7x23RN
product VORTEX GDT_7x18RN 0x0168 GDT7[156]18RN
product VORTEX GDT_7x28RN 0x0169 GDT7[156]28RN
product VORTEX GDT_7x38RN 0x016a GDT7[56]38RN
product VORTEX GDT_7x58RN 0x016b GDT7[56]58RN
product VORTEX GDT_7x43RN 0x016d GDT7[56]43RN
product VORTEX GDT_7x53RN 0x016E GDT7x53RN
product VORTEX GDT_7x63RN 0x016F GDT7x63RN
product VORTEX GDT_4x13RZ 0x01D6 GDT4x13RZ
product VORTEX GDT_4x23RZ 0x01D7 GDT4x23RZ
product VORTEX GDT_8x13RZ 0x01F6 GDT8x13RZ
product VORTEX GDT_8x23RZ 0x01F7 GDT8x23RZ
product VORTEX GDT_8x33RZ 0x01FC GDT8x33RZ
product VORTEX GDT_8x43RZ 0x01FD GDT8x43RZ
product VORTEX GDT_8x53RZ 0x01FE GDT8x53RZ
product VORTEX GDT_8x63RZ 0x01FF GDT8x63RZ
product VORTEX GDT_6x19RD 0x0210 GDT6[56]19RD
product VORTEX GDT_6x29RD 0x0211 GDT6[56]29RD
product VORTEX GDT_7x19RN 0x0260 GDT7[56]19RN
product VORTEX GDT_7x29RN 0x0261 GDT7[56]29RN
product VORTEX GDT_ICP 0x0300 ICP

/* VLSI products */
product VLSI 82C592 0x0005 82C592 CPU Bridge
product VLSI 82C593 0x0006 82C593 ISA Bridge
product VLSI 82C594 0x0007 82C594 Wildcat System Controller
product VLSI 82C596597 0x0008 82C596/597 Wildcat ISA Bridge
product VLSI 82C541 0x000c 82C541
product VLSI 82C543 0x000d 82C543
product VLSI 82C532 0x0101 82C532
product VLSI 82C534 0x0102 82C534
product VLSI 82C535 0x0104 82C535
product VLSI 82C147 0x0105 82C147
product VLSI 82C975 0x0200 82C975
product VLSI 82C925 0x0280 82C925

/* Weitek products */
product WEITEK P9000 0x9001 P9000
product WEITEK P9100 0x9100 P9100

/* Western Digital products */
product WD WD33C193A 0x0193 WD33C193A
product WD WD33C196A 0x0196 WD33C196A
product WD WD33C197A 0x0197 WD33C197A
product WD WD7193 0x3193 WD7193
product WD WD7197 0x3197 WD7197
product WD WD33C296A 0x3296 WD33C296A
product WD WD34C296 0x4296 WD34C296
product WD 90C 0xc24a 90C

/* Winbond Electronics products */
product WINBOND W83769F 0x0001 W83769F
product WINBOND W83C553F_0 0x0565 W83C553F PCI-ISA Bridge
product WINBOND W83C553F_1 0x0105 W83C553F IDE Controller
product WINBOND W89C840F 0x0840 W89C840F 10/100 Ethernet
product WINBOND W89C940F 0x0940 W89C940F Ethernet
product WINBOND W89C940F_1 0x5a5a W89C940F Ethernet
product WINBOND W6692 0x6692 W6692 ISDN

/* Xircom products */
/* is the `-3' here just indicating revision 3, or is it really part
of the device name? */
product XIRCOM X3201_3 0x0002 X3201-3 Fast Ethernet Controller
/* this is the device id `indicating 21143 driver compatibility' */
product XIRCOM X3201_3_21143 0x0003 X3201-3 Fast Ethernet Controller (21143)
product XIRCOM WINGLOBAL 0x000c WinGlobal Modem

/* Yamaha products */
product YAMAHA YMF724 0x0004 724 Audio
product YAMAHA YMF740 0x000a 740 Audio
product YAMAHA YMF740C 0x000c 740C (DS-1) Audio
product YAMAHA YMF724F 0x000d 724F (DS-1) Audio
product YAMAHA YMF744B 0x0010 744 (DS-1S) Audio
product YAMAHA YMF754 0x0012 754 (DS-1E) Audio

/* Zeinet products */
product ZEINET 1221 0x0001 1221

/* Ziatech products */
product ZIATECH ZT8905 0x8905 PCI-ST32 Bridge

/* Zoran products */
product ZORAN ZR36120 0x6120 Video Controller

/* ML-RSIM products */
product MLR UIO 0x0001 UIO Device

'Hardware' 카테고리의 다른 글

LCID List  (0) 2010.01.26
디지털 방송  (0) 2009.10.29
USB Vendor ID List  (1) 2009.01.06
모니터 색상검사  (0) 2008.08.03
케이블타이를 이용하는 색다른 방법  (2) 2008.06.15
PC에서 사용하는 VGA 규격과 해상도 정리표  (0) 2008.06.15
  1. Penis Enlargement 2009.01.20 21:32 신고

    I think you are thinking like sukrat, but I think you should cover the other side of the topic in the post too...

출처 :




전체적인 모습






UniHigh Firmware v2.7
UniHigh App v2.7

v2.7 Application은 기본적으로 v2.6과 동일하다.
Overlapped I/O에 관련된 코드오류를 바로잡은 것이 다른 점이다.

실험방법은 이전 v2.6의 실험방법과 동일하다.

Firmware v2.7은
v2.6의 8051 코어가 Bulk IN을 수행하던 부분을 GPIF가 대신하도록 바꾼 것이다.

구체적으로는 TD_Poll()의 마지막에 기존의 같은 기능을 하던 부분을 들어내고, 다음의 코드를 추가한 것이다.

if( bConfigured )
    if( GPIFTRIG & 0x80 ) // GPIF is Idle
        if( !bGPIFStart )
            bGPIFStart = TRUE;
            INPKTEND = 0x06;
            bGPIFStart = FALSE;

v1.7의 코드를 약간 수정하여 작성한 부분이다.
Firmwarw v2.7에 오류가 있어서 디버깅 중이다.
(Bulk IN이 한번만 수행됨)
본좌를 똥통에서 건져줄 행자의 구원의 손길을 기다린다.

출처 :

오늘은 Bulk IN transfer를 실험해 보자.

이전 강의 “Bulk IN 실험”을 참조하시라.

우선 아래와 같은 회로를 꾸미자.
이전 강의(Bulk IN 실험)의 회로와 약간 다르니, 이전 강의의 회로도를 참조해서 실험하면서 왜 안되나요? 라고 물으면 대략 즐.


바로 전 실험을 하면서 이미 꾸며져 있는 회로에 Parallel Port와 인터페이스 할 배선만 추가하면 된다.


세부사진1(Parallel Port 쪽)


세부사진2(LED 쪽)


세부사진3(버튼 쪽)


펌웨어는 v2.5에 v1.6을 추가하는 형식으로 수정하였다.
Unihigh Firmware v2.6

어플리케이션 소스
Unihigh App v2.6

새로 추가된 (맴버) 함수는 다음과 같다.

ReadDataArrived( … )

리소스에 새로 추가된 에디트 박스에 읽을 바이트 수를 써 넣고서, “Read” 버튼을 누르면 OnButtonBulkIn() 함수가 호출된다.

OnButtonBulkIn() 함수는 데이터를 기다리는 동안 메인 쓰레드를 홀딩시키지 않기 위해 BulkInThread(…)를 생성 한 후 리턴된다.

BulkInThread(…)에서는 ReadFile(…)을 이용해서 디바이스로부터 데이터를 읽어오는데, 여기서 이전 쓰레드(GetMsgThread)와 다른 점이 있다면
WaitForSingleObject( stOverlapped.hEvent, dwWaitTime );
이전에는 두번째 인자에 INFINITE를 주었었는데, 이번에는 dwWaitTime로 유한한 시간(1분)을 준다.
즉 “Read” 명령을 주고 나서 1분내에 그 ReadFile이 리턴되지 않으면 에러 메시지를 출력하도록 되어 있다.

성공적으로든 아니면 에러가 나든 BulkInThread(…)를 마치면 ReadDataArrived(…)가 호출되는데, 여기서 받아온 데이터를 ListBox에 출력한다.
그리고 데이터를 위한 버퍼를 해제한다.

UpdateListBoxScroll(…)은 리스트 박스의 스크롤을 갱신하기 위한 함수로서 USB 강좌에서 설명할 성질의 것은 아니므로 패쓰.

자. 이제 테스트를 해보자.
이전 강의(Bulk IN 실험)에 썼던 Parallel.exe를 다시 줏어오자.

펌웨어를 UniHigh 보드에 다운로드 시키고,

다음은 Parallel.exe를 실행시켜 놓고 나서, (물론 컴터에 패러렐 포트는 꽂혀 있어야 한다.) 다운로드 할 데이터 파일(data.bin)을 지정해 준다.

그리고 나서, Unihigh App v2.6를 실행시키고 “Read Byte” 에디트 박스에 Parallel.exe에 나타난 데이터의 크기(377, 즉, 우리가 읽어올 데이터의 크기)를 입력한다.
그리고, “Read” 버튼을 누른다.

이제 기다리면 되느냐?
Parallel.exe의 “Transfer” 버튼을 눌러줘야 패러렐 포트를 통해 UniHigh 보드로 데이터가 날아가고, UniHigh 보드는 받은 데이터를 Bulk In USB 파이프를 통해 호스트로 전송한다.


출처 :


오늘은 잠깐 곁가지로 새서, EEPROM에 펌웨어를 구워보자.

이제까지 우리는 작성한 펌웨어를 EZ-USB Control Panel을 써서 CY7C68013으로 다운로드 해 왔다.
하지만 이러한 방법은 개발할 때에나 쓸 수 있는 것이고, USB장치를 사용할 때마다 사용자더러 이렇게 번거로운 절차를 행하라고 시킬 수는 없는 일 아닌가?

따라서 펌웨어를 EEPROM에 구워 넣고, 장치를 USB 포트에 끼워 넣으면 바로 우리가 코딩한 펌웨어에 따라 동작하는 USB 디바이스로 인식되게끔 만들어 보자.

먼저 EEPROM의 시작번지 첫 두 바이트에 0xFF 0xFF를 써 주어야 한다.
요 짓을 왜 하느냐 하면 아래에 설명하겠지만, EEPROM 이미지(xxx.iic 파일)를 EEEPROM(24LC64)에 써 넣는 일도 EZ-USB Control Panel을 사용해서 하는데, 만약 첫 두 바이트가 0xC0 0xXX 요렇게 이미 세팅되어 있다면 EZ-USB Control Panel이 '아! EEPROM이 이미 프로그램 되어 있구나' 하고 알아차리고는 덮어쓰기를 거부해 버린다.
따라서 EEPROM을 굽기 앞서 이 두 바이트를 지워주는 절차로서 “0xFF 0xFF”를 써주는 것이다.

자 어떻게 하는냐?
EEPROM이 소켓에 잘 끼워져 있는지 확인부터 하시라.
끼워져 있는가?
그럼 빼시라. ㅋㅋㅋ
(Tip. 처음 새 EEPROM을 끼울 때에는 접촉불량이 생길 수 있으므로, 그냥 세네번 끼웠다 뺐다를 반복해 주시라. 다리가 휘지 않도록 조심 하면서. 핀셋으로 하면 캡숑 좋다.)

EEPROM을 “뺀” 상태에서 UniHigh 보드를 USB 포트에 꼽는다.
그리고 나서 EEPROM을 끼워라.

이제 EZ-USB Contrrol Panel을 연다.
먼저 EZ-USB Contrrol Panel의 “Download” 버튼을 누른다.


C:CypressUSBExamplesFX2Vend_ax 폴더의 Vend_Ax.hex를 선택해서 다운로드한다.


아래와 같이 세팅하고 “Vend Req” 버튼을 누른다.


이제 24LC64의 첫 두 바이트가 지워졌다.

이제 리셋버튼을 누르거나 USB 포트에서 분리 후 다시 장착해서 장치관리자를 들여다 보자.


위와 같이 나오면 EEPROM이 잘 초기화 된 것이다.

이제 EEPROM을 프로그램 할 차례이다.

EZ-USB Contrrol Panel의 “EEPROM” 버튼을 누른다.


굽고자 하는 펌웨어의 iic파일을 선택해 준다.


확인을 누르면 프로그램이 한 10초정도 응답이 없다가, 다 구워지면 커서가 깜빡거린다.


리셋버튼을 누르거나 USB 포트에서 분리 후 다시 장착해서 장치관리자를 들여다 보자.
우리가 짠 펌웨어대로 장치가 나타날 것이다.

이제는 우리가 만든 USB 디바이스를 아무 컴터에나 꼽기만 하면 인식이 될 것이다.
(물론 드라이버가 깔려있거나, 깔아야 하고, 테스트 프로그램도 있어야 하지만…)

펌웨어 소스를 빌드한 결과물은 hex파일이고, EEPROM이미지는 iic파일이다.
hex파일을 iic파일로 바꾸어주는 툴은 c:cypressusbbin 폴더의 hex2bix.exe이다.

이 hex2bix.exe를 사용한 예는 Keil u-Vision으로 예제 프로젝트를 열고, ( 왼쪽 창에서 “Target 1”이 선택된 상태에서) 메뉴의 Project->Options for Target “Target 1”을 선택한 후에 “Output” 탭을 선택하면 아래와 같이 볼 수 있다.


UniHigh 펌웨어와 BulkLoop 펌웨어의 세팅을 비교해 보시라.
hex2bix를 실행시킬 때 파라메터가 어덯게 다른지.
디바이스 디스크립터의 VID와 PID를 바꾸면 이 파라메터도 같이 바꾸어 주어야 한다.

출처 :


오늘은 Bulk Out Endpoint를 통해 호스트로부터 데이터를 디바이스로 전송하는 것을 연습해 볼 차례이다.

Bulk Endpoint로 데이터 날리기를 참조하여 회로를 꾸미고, 아래의 소스들을 다운로드 받아 설치하자.
참고적으로 다가 얘기하자면 이미 구성되어 있는 회로(Port A.7의 LED, Port A.6의 버튼 )는 떼어내지 말고, 그대로 두고서 Port B에 8개의 LED를 추가로 설치하길 바란다.


UniHigh Firmware v2.5
UniHigh Application v2.5
data.bin <- 전송할 데이터를 담고 있는 파일(이전의 파일과 동일한 파일)

만약 버튼(Port A.6)을 떼어내고 실험하고자 한다면, 펌웨어의 TD_Poll()함수에서 다음의 부분을 주석처리 해줘야 한다.
if(PA6 == 1 && !bButtonMask)

이전 강좌들과 마찬가지로 펌웨어는 unihigh.sys 드라이버와 붙도록 VID, PID만 바꾼 것이다.

UniHigh Application v2.5를 살펴보면 Bulk Out transfer를 위해 버튼 두 개와 에디트 박스 하나를 리소스에 추가 했다.

“File Select” 버튼은 디바이스로 전송할 파일을 선택 하기 위한 대화상자를 열기 위한 버튼이며, 눌렸을 때는 OnButtonSelectFile() 멤버함수가 호출된다.

에디트 박스는 선택된 파일의 경로와 이름을 나타내기 위한 것이며,

“Transfer” 버튼은 앞서 “File Select” 버튼에 의해 선택된 파일을 디바이스로 전송하기 위한 버튼이다.
이 버튼이 눌리면 OnButtonBulkOutTranfer() 멤버함수가 호출된다.
우리가 중점적으로 들여다 보아야 할 곳이 바로 여기다.

이전에는 디바이스와 통신하기 위해 DeviceIoControl을 사용했는데,
여기서는 WriteFile을 사용하고 있다.

hFile = OpenFile( BULKOUT_PIPE );
    bRet = WriteFile( hFile, pcBuffer, m_dwTransferLength, &dwBytesReturned, NULL );
    CloseHandle( hFile );

OpenFile(CreateFile())로 디바이스의 핸들을 얻고, WriteFile로 디바이스로 데이터를 전송하며, CloseFile로 핸들을 반환한다.

DeviceIoControl이 WriteFile로 바뀐 것 밖에 없다.

앞서 강의에서도 언급했듯이 보통 DeviceIoControl은 적은 양의 데이터를 읽거나 쓸 때, 특히 한번에 읽고 쓰려고 할 때 사용되고, ReadFile, WriteFile은 많은 양의 데이터를 한 방향으로 전송할 때 사용된다.

일반적으로 그렇게들 쓴다는 얘기이고, 어떤 함수를 언제 어떻게 사용하느냐는 어플리케이션 개발자와 WDM 드라이버 개발자가 상의해서 정하기 나름이다.

이제 그만.


출처 :


오늘은 Default Control Pipe를 이용하는 마지막 예제를 디벼보고, 버튼입력을 받는 것을 연습해 보자.

그 전에 잠깐. 이전에 다운 받은 예제 중에 UniHigh Application v2.1/v2.2내의 OnButtonLEDBllink()함수에서 파라메터(sizeof(PCONTROL_REQUEST))가 잘못 사용되었다.
이를 수정하여 다시 올렸으니 다운 받으시던지 아니면 그냥 아래의 정정된 예제를 참조하시든지 하시라.

이전 강의 Control Endpoint의 DATA stage 활용 - IN편에서는 IN Data Stage를 이용해서 디바이스로부터 호스트로 데이터를 전송하는 것을 설명하였었다.

이 예제들을 실험하기 위해서는 드라이버를 또 업데이트 해 주어야 한다.
바로 이전 강의를 참조하여 드라이버를 아래의 것으로 업데이트 해 주자.
UniHigh Driver v2.4

UniHigh App 소스코드의 Unihighusr.h에 보면 추가된 control code들을 볼 수 있다.

UniHigh Application v2.3 - Setup Stage를 이용한 IN Tranfer
UniHigh Application v2.4 - Button & Message 받기(IN Interrupt Transfer)

UniHigh Firmware v2.3
UniHigh Firmware v2.4

v2.4는 v2.3의 코드에 새 코드를 추가한 것이므로, v2.4만 다운받아도 된다.

v2.3은 이전 v1.3예제처럼 어플리케이션으로부터 두 값을 입력 받아서 이 값들의 곱을 FX2에서 계산 한 다음 IN Data Stage에 실어 다시 어플리케이션으로 값을 반환하는 예제이다.

OnButtonCalculate() 함수에서 모든 처리가 일어나는데, 이전의 DeicceIoControl의 사용과는 다른 점이 데이터를 받기 위해 다섯 번째와 여섯 번째 인자, 즉, LPVOID lpOutBuffer,와 DWORD nOutBufferSize,를 세팅해 주고 있다는 것이다.

그 이외에는 이전과 특별히 다른 점이 없으므로 행자들이 직접 코드를 디벼보면 별 어려움 없이 이해가 될 것이다.

다음은 디바이스에 있는 버튼이 눌렸을 때, 이를 어플리케이션으로 알리는 v2.4예제.
마찬가지로 UniHigh1.4.zip을 unihigh.sys에 맞추어 바꾼 것이다.

펌웨어는 이전과 마찬가지로 VID, PID만 바뀌었고, 회로도 이전 강의(버튼입력을 받아보자)과 같게 꾸미면 된다.
그 회로에서는 앞서 사용하던 LED 하나가 빠져 있는데, LED를 그냥 두고, 버튼회로만 추가해도 된다.

새로운 드라이버(UniHigh Driver v2.4)는 행자들이 이미 설치했을 것이고, 쫌 설명을 해야 할 것은 UniHigh Application v2.4이다.

기억을 거슬러 올라가서, 이전 강의(버튼입력을 받아보자)에서 우리가 버튼 입력을 받기 위해서 펌웨어 다운로드 -> Get Pipe버튼 누름 -> Pipe 0 선택 -> “Bulk/Int”버튼을 누름 이런 절차를 밟았다.
그런데 -> “Bulk/Int”버튼을 누르면 우리가 UniHigh 디바이스에 달린 버튼을 눌러서, 그 메시지가 EZ-USB Control Panel에 도착하기 전까지 어플리케이션이 잠시 얼어있는 것처럼 보이는데, 그 이유는 어플리케이션의 메인 쓰레드에서 버튼입력을 기다리기 때문이라고 설명 했었다.
기억 나시남?

버튼 입력을 받기 위해 메인 쓰레드를 홀딩 시킬 수는 없으므로, 우리는 이 기능을 위한 쓰레드를 하나 더 생성해야 한다.
UniHigh Application v2.4 프로젝트를 열어 보시라.
UniHighDlg.cpp의 마지막 부분에 있는 GetMsgThread(…)가 바로 버튼(메시지)입력을 받기 위한 쓰레드 본체이다.

OnInitDialog()에서 쓰레드를 시작하고,
m_bMsgThreadWorking = TRUE;
m_pGetMsgThread = AfxBeginThread( GetMsgThread, (LPVOID)this );

프로그램이 종료될 때 호출되는 OnClose에서 쓰레드를 종료한다.
m_bMsgThreadWorking = FALSE;

그리고, CUniHighDlg의 멤버함수인 MsgArrived는 디바이스로부터 버튼입력(메시지)이 도착했을 때 GetMsgThread에서 호출하는 함수이다.

GetMsgThread 내부를 살펴보면 이전의 DeviceIoControl과는 다르게 마지막 인자에 OVERLAPPED 구조체의 주소를 주고 있다.

이것은 이 쓰레드가 메시지가 도착하기 전까지는 pending 되어 있다가, 메시지가 도착했을 때, 이를 알려줄 이벤트를 위한 것이다.

Windows 프로그램을 잘 모르는 행자들를 위해 자세히 설명하려니 양도 만만치 않은게 본 강좌가 윈도우 프로그래밍강좌로 변질 될 것 같고, Windows 프로그램을 잘 아는 행자들을 위해 설렁설렁 설명하려니 다 아는거 리바이벌 밖에 더 되겠낭?

따라서 이 쓰레드 함수의 내부에 대한 설명은 생략한다. ㅋㅋㅋ
난 Windows 프로그램을 잘 모르는데 그래도 꼭 알아야 되겠다 라는 행자들은 Overlapped I/O에 관해 데브파이의 Visual C++ “강좌와 Tip”란을 디벼 보시거나 구글링 하시라.

UniHigh Application v2.4는 종료 시 쓰레드 땜에 메모리 leak이 날지도 모르겠다.
나중에 시간 나면 잡고, 안 나면 말자.
테스트하는 데는 별 지장 없다.

UniHigh Firmware v2.4를 살펴 보면 이전에 본좌가 얘기 했듯이 SendMessage 함수를 디버깅 용도로 사용한 예가 있다.

TD_Poll()함수를 잘 찾아 보시라.
이제 디버깅을 위한 LED 깜빡 신공으로부터 해방이닷.

출처 :


계속해서 Default Control Endpoint를 통해 디바이스와 통신하는 방법을 연습해 보자.
오늘은 이전 강의 SETUPDAT 활용하기
Control Endpoint의 DATA stage 활용 - OUT편
을 unihigh.sys를 이용해서 어플리케이션에서 디바이스로 접근할 수 있도록 고쳐본다.

먼저 새로운 버전의 unihigh.sys를 다운받아서 드라이버 업데이트를 시켜야 한다.
UniHigh Driver v2.1
위의 드라이버를 다운 받아서 원하는 위치에 압축을 풀어 놓자.
(c: 같이 ASCII문자로만 구성되며, 공백이 없는 디렉토리에 풀어 놓는게 안전하다.)

드라이버를 업데이트 시키는 방법은 다음과 같다.
UniHigh 보드를 USB포트에 꽂고, EZ-USB Control Panel로 UniHigh Firmware v2.0을 다운로드 해서 장치관리자에 UniHigh보드가 나타나도록 한다.


장치관리자에 잡힌 UniHigh Board를 선택해서 오른 버튼을 클릭하면 다음과 같은 대화상자가 나타난다.
거기서 “드라이버 업데이트”를 클릭하라.


다음을 누른다.


다운받아 놓은 드라이버의 위치를 지정해 준다.


“드라이버 파일 검색결과” 대화창에 있는 “다른 드라이버 중 하나 설치” 체크박스를 체크하고 다음을 누른다.


리스트 컨트롤 박스에서 새로 다운받은 드라이버를 지정하고, 다음을 누른다.


마침을 누르면, 다음과 같이 장치관리자에 새 버전의 드라이버가 깔린 것이 보일 것이다.



오늘 살펴볼 코드는 두 개 이다.

UniHigh Firmware v2.1
UniHigh Firmware v2.2

UniHigh Application v2.1
UniHigh Application v2.2

UniHigh xxx에 v2.1에 코드를 추가하여 UniHigh xxx v2.2를 만들었으므로 v2.1은 다운 받지 않고 v2.2만 다운 받아도 된다.

위의 펌웨어 코드 밑 어플리케이션은 맨 앞에 언급한 강의에서 사용한 예제들과 완전히 동일한 동작을 하는 예제들이다.
달라진 건 ezusb.sys 대신 unihigh.sys 드라이버를 사용한다는 것이고, 테스트 어플리케이션이 EZ-USB Control Panel에서 UniHigh Application으로 바뀐 것 뿐이다,

펌웨어야 이전 v1.x버전과 VID, PID가 달라진 것 밖에 없으므로 설명을 생략하고, UniHigh Application v2.2만 대략 설명하겠다.

솔직히 설명 할 꺼리도 없다.
각각의 CONTROL_CODE의 경우에 DeviceIoControl을 어떻게 사용하는지만 보고,
나중에 행자들이 자신의 어플리케이션을 만들 때 참고하면 되겠다.

자 UniHigh Application v2.2 프로젝트를 열어보자.

LED Blink 버튼을 누르면 UniHighDlg.cpp의 OnButtonLEDBlink()로 들어오고, LED Signal 버튼을 누르면 OnButtonLEDSignal() 맴버함수로 분기한다.

각 함수에 대한 설명은 코드의 주석으로 대신한다.
그 코드들을 설명하는 것은 본좌가 정의한 어플리케이션과 드라이버간의 인터페이스를 설명하는 것에 불과하므로 USB를 공부하는 데는 별 도움이 안 된다.

다만 본좌가 제공한 예제를 응용해서 스스로 어플리케이션을 만들 때 인터페이스의 사용법을 익히는 정도면 족하다.
따라서 DeviceIoControl의 인자를 어떻게 주는지만 중점적으로 보시면 되겠다.

v2.1예제는 index와 value값만 사용하는 Control Request의 예이고,
v2.2예제는 Control Request의 Data Stage를 활용하는 예이다.

출처 :


오늘은 이전 강좌의 펌웨어 예제 UniHigh v1.0을 본좌가 만든 WDM USB 드라이버인 unihigh.sys를 써서 우리가 만들 어플리케이션에서 동작시키는 연습을 해 보자.

우선 기존의 펌웨어 예제를 살짝 바꿔주어야 한다.
바꿀 부분은 디바이스 디스크립터의 Vendor ID와 Product ID이다.
USB 디바이스가 포트에 꽂히면 운영체제(USB 호스트)는 디바이스 디스크립터 중에 Vendor ID와 Product ID를 읽어, 그에 해당하는 드라이버를 찾아 로딩하고 사용할 준비를 한다.
그 ID들에 해당하는 기존에 깔려있는 드라이버를 찾지 못하면 운영체제는 새 드라이버를 요구하는 대화상자를 띄우게 된다.

물론 UniHigh v1.0에서 사용하는 기존의 VID(Vendor ID), PID(Product ID)를 그냥 써서 unihigh.sys 드라이버를 로딩하게 할수도 있지만, 그렇게 하면 EZ-USB Control Panel을 사용할 수 없게 되므로, 일부러 다른 VID, PID를 사용했다.

다음은 UniHigh v1.0에서 VID, PID를 바꾼 펌웨어 예제이다.
UniHigh Firmware v2.0
(바꾸는 김에 bulkloop.c란 파일 이름도 unihigh.c로 변경했다.)

그리고 다음은 드라이버 예제이다. 다운받아서 적당한 위치에 압축을 풀어 놓으시라.
(c: 같이 ASCII문자로만 구성되며, 공백이 없는 디렉토리에 풀어 놓는게 안전하다.)
UniHigh Driver v2.0

이 UniHigh Firmware v2.0 예제를 EZ-USB Control Panel을 통해 UniHigh모듈로 다운로드 하면, 드라이버 설치를 요구하는 대화창이 뜰 것이다.


그럼 미리 UniHigh Driver v2.0를 다운받아 풀어 놓았던 폴더로 가서 unihigh.inf파일을 지정해 주어라.

이제 드라이버도 깔렸으니 어플리케이션을 실행해서 UniHigh 보드의 LED를 키고, 꺼보자.

UniHigh App v2.0 소스
UniHigh App v2.0 실행프로그램

당근 보드 세팅은 이전처럼 되어 있어야 한다.

어플리케이션 소스에 대한 설명은 내일 계속
*드라이버는 컴터 재부팅시키기 귀찮아서 98se, xp에서는 테스트를 안 해 봤다. -.-; 이상 있으면 얼렁 연락 주시라.

오늘은 UniHigh Application v2.0의 소스를 분석하여 어플리케이션에서 어떻게 드라이버를 통해 디바이스와 통신하는지를 디벼보자.

기본적으로 UniHigh App v2.0은 MFC로 생성한 Dialog Base의 MFC 골격을 만든 후에 리소스 에디터에서 메인 Dialog에 버튼 하나를 추가하고, 그 버튼의 Handling function을 추가한 것이다.

아직 MFC를 모르는 행자들 미리부터 너무 쫄지 마시라.
본좌가 MFC 프로그래밍을 어떻게 하는지 가르쳐 줄 수는 없지만, 그걸 몰라도 전체적인 흐름을 따라잡고, 나중에 필요한 부분의 코드를 손 댈 수 있을 정도는 설명해 준다. 그까이꺼 뭐 대충~.

소스코드를 담고 있는 프로젝트 폴더를 열어보면 MFC 위저드가 생성한 파일들 외에 본좌가 따로 추가해준 파일들이 있다.
그리고 unihighusr.h

맨 아래 파일은 본좌가 만들어 추가해준 헤더파일이고, 그 이외 5개의 헤더파일들은 이 프로젝트 내에서 호출하는 함수들을 위한 헤더파일 들이다.
(DDK에서 복사해 왔다. DDK가 뭔지는 나중에 알려주마.)

그 외에 행자들이 스스로 프로젝트를 생성해서 코딩을 할 때 해주어야 할 것이 하나 있는데, Visual Studio 메뉴의 “Project”->”Settings”->”Link” 탭을 클릭해서, “Object/Library Modules”항목에 “setupapi.lib”를 추가해 주어야 한다.
이 setupapi.lib 파일 역시 프로젝트 내에서 호출하는 함수들을 위한 라이브러리 이다.


빨간 선으로 표시한 부분이 본좌처럼 “Win32 Debug”로 되어 있다면, 이 것을 “Win32 Release” 또는 “All Configurations”로 바꾸어 준 뒤 “Object/Library Modules”항목에 “setupapi.lib”를 추가해 주는 정도의 센.스.는 있어야 하겠다.
안 그럼 릴리즈 버전의 EXE파일을 생성할 때, 링크에러가 떵 하니 나타나버리고 말 것이기 때문이다.

변죽 울리기(I탄)은 끝났고, 본격적으로 코드를 들여다 보자.

딴 파일들은 손댄 것이 없고, UniHighDlg.cpp만 보면 된다.

본좌가 이 파일에 한 짓거리를 연대기 순으로 나열 하면, (이 부분부터 벌써 지겹다고 진저리를 치는 행자들은 반성하시라. 나중에 스스로 프로젝트를 만들려고 하면 이 설명이 필요할 것이다. 본좌가 다 애정이 있어서 그런 거다.)

맨 위에 헤더파일 include문 추가
#include "unihighusr.h"
#include "usbdi.h"

고 밑에 define 문 추가
#define MESSAGE_PIPE ("PIPE00") <- 쓸데 없는 넘

고 밑에 함수 원형 정의
HANDLE OpenFile(…);
BOOL GetUsbDeviceFileName(…);
HANDLE OpenUsbDevice(…);
HANDLE OpenOneDevice(…);

거기다가 전역변수
CHAR szCompleteDeviceName[256];

그리고 마우스를 쭉 끌어 맨 밑으로 가 보면 위에 선언한 함수원형에 해당하는 함수 본체들이 블라~블라~블라~ 있다.

그리고 오늘의 하이라이뚜
void OnButtonLED() 멤버함수 <-“LED ON/OFF 버튼의 핸들링 함수”
가 있다.

맨 마지막 OnButtonLED() 멤버함수를 제외하고 include문을 추가하는 것부터 시작하는 이 일련의 절차들은 행자들이 디바이스를 제어하는 어플리케이션을 작성하기 위해서는 기계적으로 Copy&Paste 신공을 구사해야 하는 대상이다.
이해? 이런 거 필요 없다.
딱 5초 준다. 존내 클릭하는 거다.

그래서 본좌가 같다 붙이기 쉬우라고 szCompleteDeviceName 전역변수와 네 개의 함수들을 멤버변수와 멤버함수로 안 만들고 기냥 같다 붙인 것이다.

본좌는 위의 변수와 함수들을 하나로 묶어 하나의 클래스로 만들어 쓰지만 클래스가 뭐시어라? 하는 행자들도 분명히 있을 것이기에 기냥 평범한 함수로 같다 붙였다.
(이러나 저러나 모냥만 다를 뿐, 하는 일은 같으므로 신경 쓰지 말자.)

여기까지가 변죽 울리기 II탄 이다.

행자들의 이해력을 필요로 하는 부분은 오직 OnButtonLED() 함수 하나 뿐이다.

앞서 말했지만,  “LED ON/OFF” 버튼을 클릭하면 낼롬 이 함수로 뛰어들어온다.


OpenFile함수에서 우리가 접근하고자 하는 디바이스의 핸들을 얻고, DeviceIoControl로 디바이스에 어떤 일을 시키며, 할 일이 다 끝났다면 CloseHandle로 핸들을 반환한다.

이게 줄거리의 전부다.

어라? 저번에는 CreateFile로 핸들을 얻는다며?
또 구라치기냐?
하는 행자들에게는 박수를. 짝짝짝.
나머지는 업드려!
호이짜~ 호이짜~


OpenFile함수를 따라 들어가 보면 거기 CreateFile이 있다.

h = CreateFile ( szCompleteDeviceName,
                         GENERIC_WRITE | GENERIC_READ,
                         FILE_SHARE_WRITE | FILE_SHARE_READ,
                         NULL );

시리얼 통신을 하는 프로그램을 한번이라도 작성해 본 행자들은 CreateFile의 맨 처음 인자에 “.COM1” 이라고 준 것을 기억할 것이다.
근데 이건 뭐 생뚱맞게 szCompleteDeviceName 냥?

디바이스를 오픈할 때, 그 이름을 “.COM1”, “.ezusb-0” 처럼 주는 것을 Symbolic Link를 사용한다고 하고, 본좌처럼 GUID_CLASS_UNIHIGH_TEST (unihighusr.h에 선언돼 있음)같은 GUID를 사용하여 디바이스를 오픈할 수도 있다.

두 가지 방법 다 어플리케이션에서 운영체제에다가 “야! 나는 여기에 명시된 디바이스랑 통신 할 꺼니까 그 다바이스의 Handle을 나한테 넘겨.” 라고 말하는 방법이다.

어느 방법을 사용하느냐 하는 것은 어플리케이션 프로그래머와 디바이스 프로그래머가 상의하기 나름이다.
하지만, ezusb.sys의 사용법처럼 Symbolic Link를 사용하는 것은 다른 장치와 그 이름이 중복될 가능성 때문에 될수록 피하는게 좋다.

씨바. 난 열라 독창적인 이름을 만들어내고 말테야!
라고 우기는 행자들은 말리지 않겠다. 지금 시간 햇빛도 안 나니 말릴 수 가 없다.
근데, 가끔 Symbolic Link가 중복되어 문제가 발생하는 경우가 있다.

따라서 MS에서는 GUIDGEN.exe라 하는 GUID(Globally Unique Identifier)를 만드는 프로그램을 제공한다.
이 프로그램은 확률적으로 중복의 우려가 없는 32bit짜리 GUID를 생성해 내고, 이렇게 생성한 GUID를 사용해 디바이스를 오픈하면

CreateFile할 때에 운영체제가 대략 중복! KIN! 하는 경우는 막을 수 있다.

뭐 이래저래 장황한 설명이 되었지만
HANDLE OpenFile(…);
BOOL GetUsbDeviceFileName(…);
HANDLE OpenUsbDevice(…);
HANDLE OpenOneDevice(…);
이 네 함수는 CreateFile의 맨 처음 인자를 얻기 위해 필요한 함수들이고, 우리가 손댈 필요가 없다.

요 함수들 땜에
usb100.h, usbdi.h, usbioctl.h, usbiodef.h, wdm.h
헤더 파일들과 setupapi.lib를 추가해 준 것이다.

본좌도 예전에 위 함수들이 어떤 동작을 하는지 한번 분석해 보고 난 뒤, 그 이후부터는 그냥 기계적으로 복사해서 쓴다.
이젠 이 함수들이 어떤 짓을 하는지 기억조차 안난다.

관심과 시간이 있는 행자들은 MSDN Library를 참조해 함 디벼 보시라.

이제 파일(디바이스) 핸들을 얻었으니, 그 핸들을 가지고 디바이스와 통신할 차례이다.

bRet = DeviceIoControl( hFile, lLed, NULL, 0, NULL, 0, &dwBytesReturned, NULL );
가 그 코드이다.

이 함수에 대한 설명은 여기를 참조하시라. 꼭 한번 볼 것을 권한다.

다른 인자들은 이 예에서는 사용을 안하고, 두 번째 인자 ( DWORD dwIoControlCode)가 우리가 디바이스에게 이 일을 햐쇼. 라고 명령하는 부분이 되겠다.

이 코드는 unihighusr.h에 선언되어 있는데, IOCTL_UNIHIGH_xxxxx하는 것들이 다 그것들이다.
이 코드들도 어플리케이션 프로그래머와 드라이버 프로그래머가 상의해서 내가 이런 코드 날리면 니가 그런 일 해야되… 라고 입을 맞추면 된다.(동성끼리면 대략 난감. -.-;)

여기까지가 UniHigh Application v2.0의 소스에 대한 설명이다.
정리하자면 변죽울리기 I탄과 II탄은 앞으로도 그냥 따라 Copy&Paste하면 되고, 디바이스를 컨트롤 하기 위해서는 OnButtonLED() 처럼 하면 된다. 이다.

MFC에 익숙하지 않은 행자들은 C 콘솔프로그램에서 프로그램을 시작하면 main()문으로 들어가듯이 버튼을 누르면 OnButtonLED()로 들어온다. 라는 정도만 알고, 그 버튼이 눌렸을 때 처리해야 하는 일은 그 함수 내에서 처리해 주면 되겠다.
변수 및 함수 선언들은 본좌가 했듯이 그냥 C프로그램 작성하듯 해도 된다.
더 자세한 것들은 책 사서 보시라.

'Hardware' 카테고리의 다른 글

IN Setup & 버튼(메시지) 받기  (0) 2008.04.01
UniHigh v2.1 & v2.2 와 드라이버 업데이트  (0) 2008.04.01
UniHigh 2.0 펌웨어, 드라이버, 어플리케이션  (0) 2008.04.01
WDM USB 드라이버  (0) 2008.04.01
UniHigh v1.7 완전정복  (0) 2008.04.01
GPIF  (0) 2008.04.01

출처 :


우리가 인터페이스로 USB를 선택한 이유는 다른 여타의 인터페이스들과 마찬가지로 디바이스가 컴퓨터와 통신할 필요가 있기 때문이다.
다만 USB가 넓은 대역폭, Plug&Play등의 장점을 가지기 때문에 다른 인터페이스들에 비해 선호될 뿐이다.

Serial(RS232)을 이용하여 우리가 만든 디바이스와 컴퓨터(Win32 Application)간의 통신이 어떻게 이루어 질까?

아마 대부분의 행자들이 알고 있겠지만, 파일 입출력을 할 때와 동일하게 ReadFile(…), WriteFile(…)을 이용하여 디바이스에 데이터를 주거나 받는다.
ReadFile이나 WriteFile을 호출하기 위해서는 파일핸들이 필요하므로 CreateFile(.COM1…)을 호출해서 File Handle을 얻은 다음, 위 두 함수에 인자(Parameter)로 넘겨주어야 한다.
물론 더 이상 장치에 접근할 필요가 없을 때에는 CloseHandle(…)을 사용하여 운영체제로 파일 핸들을 반환하는 것도 잊지 말아야 한다.

디바이스와 통신하는데 사용하는 API는 ReadFile과 WriteFile 이외에도 DeviceIoControl(…)이라는 함수도 있다.
ReadFile, WriteFile이 함수의 이름 그대로 데이터를 읽거나 쓰기만을 위한 함수라면, DeviceIoControl은 디바이스에 데이터를 주고, 동시에 데이터를 받을 수 있다.
예를 들면, Default Control Endpoint을 통해 데이터를 주고 받는 연습을 했던 이전 강의에서 두 값을 디바이스에 주고, 디바이스로부터 그 값의 곱을 리턴받을 때 DeviceIoControl을 사용할 수 있다.
물론 WriteFile로 값을 주고, ReadFile로 결과를 읽을 수도 있겠으나 DeviceIoControl로 한번에 처리하는 것이 훨씬 편리할 것이다.
통상 Read/Write파일은 대량의 데이터를 이동시키는데 사용되고, DeviceIoControl은 그 이름이 의미하는대로 디바이스를 컨트롤하기 위한 소량의 데이터를 이동시키는데 사용된다.
꼭 그렇게 해야 된다는 제약은 없지만 말이다.

Serial(RS232)을 이용해 컴퓨터(Win32 Application)와 디바이스와 통신하는 것과 똑같은 방법이 USB에도 사용된다.
CreateFile로 파일 핸들(USB Handle)을 얻고, ReadFile/WriteFile/DeviceIoControl을 통해 USB 디바이스에 접근하며, CloseHandle로 핸들을 반환한다.
졸라 쉽지 않은가?
봐라. 알면 별거 없다.

이제까지 펌웨어를 테스트하면서 썻던 EZ-USB Control Panel도 그 안에서 위의 함수들을 이용해 디바이스와 통신을 한다.

근데 EZ-USB Control Panel이 ezusb.sys라는 드라이버를 사용해서 장치로 접근을 하듯이 디바이스에 접근하기 위해서는 드라이버가 필요하다.
우리는 MS의 Windows에서 장치에 접근하기를 원하기 때문에, 더 정확히 말하자면 WDM(Windows Driver Model) 드라이버가 필요하다.

머리 꼬리 다 띄고, 몸통을 덥썩 물어보자.
어디서 우리가 만든 USB 디바이스와 물릴 USB 드라이버를 구할 것이냐?
세가지 방법이 있다.
첫째, 드라이버를 만들어주는 툴을 이용한다.
둘째, 칩 제조사가 제공하는 드라이버를 사용한다.
셋째, 직접 드라이버를 작성한다.

각기 나름대로의 장단점이 있다.
첫 번째 방법은, 대표적으로 Jungo社의 WinDriver같은 툴을 사용해서 (그들이 주장하는 바로는 초보자도 클릭 몇방으로) WDM 드라이버를 만들 수 있다.
본좌도 예전에 그 광고문구에 혹하여 몇 번 시도를 해 보았으나 번번히 OTL하고 말았다.
분명히 그때 본좌는 쌩초보는 아니었고, 디바이스 드라이버에 대한 개념은 가지고 있다고 자부 했었는데, 고것만 갖고는 부족했었나 보다.
클릭으로 드라이버가 만들어진 것 까지는 좋은데, 어플리케이션이랑 인터페이스 시키는게 졸라 복잡했었다는 기억이 난다.
그래서 결론적으로는 내 클릭으로 드라이버가 제대로 만들어 졌는지 확인도 못해봤다. -.-;
그 이후로 드라이버 공부에 더 용맹정진하여 스스로 드라이버를 짜는 오늘에 이르게 되었으니, 완전히 헛짓은 아니었구나 위안 삼는다.
뭐 정품 사서, 기술지원 받으면서 해보면 안 될 것도 없겠지만, 가격도 만만치 않다.
제일 큰 문제는 드라이버 소스도 감추어져 있어서 드라이버 레벨에서 문제가 생기면 디버깅 할 방법이 없다는 것이다.
( 물론 자동으로 생성되는 드라이버가 잘 검증된 것이기는 하겠지만, 운영체제도 가끔씩 삑사리를 내는 마당에 그 누구를 믿을 수 있으리요.)

두 번째 칩 제조사가 제공하는 드라이버를 이용하는 방법의 장점은 공짜라는 것이다.
우리가 이제까지 써 왔던 ezusb.sys처럼 대부분의 usb칩 vender들이 자기들 칩에 붙는 드라이버를 제공한다.
CYPRESS는 고맙게도 USB 드라이버의 소스코드까지도 제공한다.
(C:CypressUSBDriversezusbdrv에 가보면 구경할 수 있다. 뭐 WDM 드라이버에 대한 지식이 없다면 있으나마나 하지만.)
C:CypressUSBDocEZ-USB GeneralEZ-USB General Purpose Driver Spec.pdf 같이 제공하는 드라이버를 쓸 수 있도록 인터페이스에 관한 문서를 제공하므로 이것을 잘 읽어보면 드라이버에 관한 지식 없이도 USB 장치와 인터페이스 하는데 별 문제 없겠다.
단점이라면 위 첫 번째의 경우도 마찬가지 이겠지만, 범용적인 코드이다 보니 오버헤드가 있어서 최적화가 된 드라이버 보다는 느리다는 것이다.

세 번째 누군가 직접 직접 드라이버를 작성하는 방법은 디바이스를 (운영체제가 정한 범위 안에서) 원하는 대로 제어할 수 있다.
그리고 튜닝을 잘하면 극한의 성능까지 끌어올릴 수 있다.
단점은 WDM 드라이버 프로그래밍을 배우려면 오래 걸린다는 것이다.
물론 그럴 땐 본좌 같은 드라이버 프로그래머를 불러다 쓰면 되지만 말이다.
이 방법의 가장 큰 장점은 디바이스 개발자의 부담이 덜어지고, 개발기간이 절약된다는 것이다.( 드라이버 프로그래머를 갖다 쓸 경우에. )
우리들의 보스들은 항상 토막만한 개발기간을 주고는 쪼아대면서, 눈은 이만치 높다.
하드웨어 만들고 펌웨어 짜기도 바쁜데, 어느 시간에 드라이버를 신경 쓰며, 언제 어플리케이션이랑 아웅다웅 하리요?

요럴 때, USB 드라이버 개발자가 중간에 끼어서 정리를 해주면 개발의 방향이 잡히면서 스트레스 지수가 확 떨어진다.

드라이버를 만드는 방법 중 어느 것이 최선이라 말할 수는 없고, 행자들이 처한 상황에 따라 적절한 방법을 선택하는 것만이 최선이다.

본좌는 앞으로 본좌가 작성한 USB WDM드라이버(unihigh.sys)를 가지고 어플리케이션과 펌웨어간의 인터페이스를 설명할 것이다.
(드라이버 작성법을 강의 한다는 말은 아니다. -.-; 언감생심. 드라이버가 본좌가 재미삼아 강의 할 만큼 만만한 분량과 실력이 아니라서…)

Ezusb.sys를 설명하자니 EZ-USB General Purpose Driver Spec.pdf를 번역하는 것 밖에 안 되겠고, 결정적으로 꽁수스러운 그 코드가 본좌 맘에 안 들기 때문이다.

'Hardware' 카테고리의 다른 글

UniHigh v2.1 & v2.2 와 드라이버 업데이트  (0) 2008.04.01
UniHigh 2.0 펌웨어, 드라이버, 어플리케이션  (0) 2008.04.01
WDM USB 드라이버  (0) 2008.04.01
UniHigh v1.7 완전정복  (0) 2008.04.01
GPIF  (0) 2008.04.01
Bulk In  (0) 2008.03.31

출처 :


gpif waveform을 다 그렸다면, 이제 gpif.c 파일을 생성하여 이를 우리의 프로젝트에 포함시킬 차례이다.

메뉴의 Tools->Export to GPIF.c file을 선택하면 나타나는 대화상자에서 원하는 위치를 지정하고, (프로젝트가 위치한 폴더가 좋으리라.) 파일 이름을 gpif.c로 해서 “저장” 버튼을 누르자.

Keil u-Vision을 열고, 왼쪽 창에서 “Source Group 1”을 선택한 후 마우스 오른버튼을 클릭하면, “Add Files to Group ‘Source Group 1’ ”이란 메뉴가 나타나는데, 이를 클릭하여 앞서 저장한 gpif.c파일을 선택하여 “Add” 버튼을 눌러 준다.

그리고나서 (우리의 경우에는) bulkloop.c파일의 앞부분에 함수의 프로토 타입을 선언해주고, ( UniHigh v1.7 소스 참조 ) TD_Init()에서 GpifInit()함수를 호출해주면 gpif를 사용할 준비절차가 다 마무리 된 것이다.

어떻게 gpif를 시작하느냐?
TD_Poll() 함수를 보시라.

GPIFTRIG = GPIFTRIGRD | GPIF_EP6; 가 gpif 엔진을 구동시키는 키 이다.

위 코드는 세번째 waveform을 시작해서 EP6의 FIFO를 채우겠다는 의미이다.

4개중 어떤 waveform을 가지고 gpif를 동작시켜서 어느 Endpoint의 FIFO에 데이터를 인출할 지 결정하기 위해서는 GPIFWFSELECT 레지스터와 GPIFTRIG(혹은 EPxGPIFTRIG) 레지스터를 세팅해 주어야 한다.
GPIF Designer가 생성하는 기본적인 코드는 그 tab label에도 표시되어 있던 것처럼
첫 번째 waveform은 single read
두 번째는 single write
세 번째는 FIFO read
네 번째는 FIFO write를 위한 것이다.
GPIFWFSELECT = InitData[ 5 ]( = 0x4E )와
T.R.M. p15-83의 GPIFWFSELECT 레지스터 설명을 직접 찾아 보시라.

앞서 강의에서 본좌가 심지어는 모든 waveform을 FIFO read를 위해 쓸 수도 있다고 언급했었다.
어떻게 하느냐?
GPIF Designer로 waveform을 그릴 때, 모두 FIFO read를 위한 각각의 waveform을 그려주고 나서, GPIFWFSELECT의 최하위 두 비트(FIFO read를 위한 waveform을 지정하는 비트)를 상황에 맞게 waveform을 선택하도록 고쳐 줌으로써 우리의 목적을 달성할 수 있다.

gpif가 구동될 때, 어느 Endpoint의 FIFO를 대상으로 하느냐는 GPIFTRIG의 하위 두 비트를 설정하거나, EPxGPIFTRIG에서 x를 선택해 줌으로써 지정할 수 있다.

데이터의 방향 즉, FD포트(Port B)를 통해 데이터가 들어오느냐 나가느냐는 GPIFTRIG의 하위 세 번째 비트를 어떻게 설정하느냐로 결정할 수도 있고,
EPxGPIFTRIG = 0xFF; : gpif write 시작
BYTE cTemp = EPxGPIFTRIG; : gpif read 시작
요렇게 해서 정할 수도 있다.

* GPIFTRIG와 EPxGPIFTRIG는 같은 일을 하는 다른 레지스터이다.
* gpif “read”는 데이터가 FD포트(Port B)를 통해 “FX2로” 들어오는 것이라고 이미 설명했었다.

이제 GPIFTRIG = GPIFTRIGRD | GPIF_EP6;의 의미를 아시것는가?
아직도 모르겠다면 T.R.M.을 잘게 찟어, 달여서 식후 30분, 하루 세 차례 복용하시라.
행자의 내공이 30갑자 증가할 것이다.

UniHigh v1.7의 TD_Poll()에는 본좌가 디버깅을 위해 넣었다가 깜빡 잊고 안 지운 코드들이 있는데 그걸 다 지워버리면 다음과 같다.

if( bConfigured )
if( GPIFTRIG & 0x80 )
while( !( GPIFTRIG & 0x80 ) ); // wait for the transaction to terminate naturally...
INPKTEND = 0x06;

야부리를 풀자면 다음과 같다.
디바이스의 configuration이 끝났다면 gpif가 IDLE 상태인지를 확인하고, gpif 엔진을 구동한다.
그리고 gpif 엔진이 일을 마칠 때까지 기다렸다가 EP6의 FIFO에 남아있는 데이터를 마저 패킷으로 날린다.

마지막 줄의 INPKTEND가 하는 짓을 보아하니 gpif가 작동하는 동안 누군가 데이터가 차면 packet을 자동으로 날리나 보네? 라는 생각이 드셔야 한다.
안 드시면 KIN 사이다 드시라.

TD_Init()에 보면
EP6AUTOINLENH = 0x00; // When AUTOIN=1, core commits IN data
EP6AUTOINLENL = 0x40; // ...when EPxAUTOINLEN value is met
가 그 짓을 하도록 세팅해 놓은 코드 되겠다.
당삼 세팅하는 그 길이가 Endpoint 디스크립터의 맥스패킷사이즈 보다 작거나 같아야 한다.

고것만 하면 되느냐?
EP6FIFOCFG = 0x08; //00001000 : AUTOIN=1, ZEROLEN=0, WORDWIDE=0
도 해 주어야 한다.

바로 FX2의 AUTOIN 기능이 이제까지 설명한 것이다.

FIFORESET = 0x80; // set NAKALL bit to NAK all transfers from host
FIFORESET = 0x06; // reset EP6 FIFO
FIFORESET = 0x00; // clear NAKALL bit to resume normal operation
는 주석 달린 그대로 EP6 FIFO를 리셋하기 위한 코드이고,

EP6의 FIFO가 꽉 차면 “청기를 올리는” 일을 하도록 세팅한 것이다.


우리가 만든 waveform의 세번째 DP.
요걸 아직 잊지 않으셨으리라 믿는다.

* SYNCDELAY에 대한 설명은 이전 강의 참조.

'Hardware' 카테고리의 다른 글

UniHigh 2.0 펌웨어, 드라이버, 어플리케이션  (0) 2008.04.01
WDM USB 드라이버  (0) 2008.04.01
UniHigh v1.7 완전정복  (0) 2008.04.01
GPIF  (0) 2008.04.01
Bulk In  (0) 2008.03.31
Bulk Endpoint로 데이터 날리기  (0) 2008.03.31

+ Recent posts