xref: /linux/rust/kernel/pci/id.rs (revision d53ea977adf913a6e5024323e6b7e02326d4453c)
1ed78a018SJohn Hubbard // SPDX-License-Identifier: GPL-2.0
2ed78a018SJohn Hubbard 
3ed78a018SJohn Hubbard //! PCI device identifiers and related types.
4ed78a018SJohn Hubbard //!
55e20962aSJohn Hubbard //! This module contains PCI class codes, Vendor IDs, and supporting types.
6ed78a018SJohn Hubbard 
7ed78a018SJohn Hubbard use crate::{bindings, error::code::EINVAL, error::Error, prelude::*};
8ed78a018SJohn Hubbard use core::fmt;
9ed78a018SJohn Hubbard 
10ed78a018SJohn Hubbard /// PCI device class codes.
11ed78a018SJohn Hubbard ///
12ed78a018SJohn Hubbard /// Each entry contains the full 24-bit PCI class code (base class in bits
13ed78a018SJohn Hubbard /// 23-16, subclass in bits 15-8, programming interface in bits 7-0).
14ed78a018SJohn Hubbard ///
15ed78a018SJohn Hubbard /// # Examples
16ed78a018SJohn Hubbard ///
17ed78a018SJohn Hubbard /// ```
18ed78a018SJohn Hubbard /// # use kernel::{device::Core, pci::{self, Class}, prelude::*};
19ed78a018SJohn Hubbard /// fn probe_device(pdev: &pci::Device<Core>) -> Result {
20ed78a018SJohn Hubbard ///     let pci_class = pdev.pci_class();
21ed78a018SJohn Hubbard ///     dev_info!(
22ed78a018SJohn Hubbard ///         pdev.as_ref(),
23ed78a018SJohn Hubbard ///         "Detected PCI class: {}\n",
24ed78a018SJohn Hubbard ///         pci_class
25ed78a018SJohn Hubbard ///     );
26ed78a018SJohn Hubbard ///     Ok(())
27ed78a018SJohn Hubbard /// }
28ed78a018SJohn Hubbard /// ```
29ed78a018SJohn Hubbard #[derive(Clone, Copy, PartialEq, Eq)]
30ed78a018SJohn Hubbard #[repr(transparent)]
31ed78a018SJohn Hubbard pub struct Class(u32);
32ed78a018SJohn Hubbard 
33ed78a018SJohn Hubbard /// PCI class mask constants for matching [`Class`] codes.
34ed78a018SJohn Hubbard #[repr(u32)]
35ed78a018SJohn Hubbard #[derive(Debug, Clone, Copy, PartialEq, Eq)]
36ed78a018SJohn Hubbard pub enum ClassMask {
37ed78a018SJohn Hubbard     /// Match the full 24-bit class code.
38ed78a018SJohn Hubbard     Full = 0xffffff,
39ed78a018SJohn Hubbard     /// Match the upper 16 bits of the class code (base class and subclass only)
40ed78a018SJohn Hubbard     ClassSubclass = 0xffff00,
41ed78a018SJohn Hubbard }
42ed78a018SJohn Hubbard 
43ed78a018SJohn Hubbard macro_rules! define_all_pci_classes {
44ed78a018SJohn Hubbard     (
45ed78a018SJohn Hubbard         $($variant:ident = $binding:expr,)+
46ed78a018SJohn Hubbard     ) => {
47ed78a018SJohn Hubbard         impl Class {
48ed78a018SJohn Hubbard             $(
49ed78a018SJohn Hubbard                 #[allow(missing_docs)]
50ed78a018SJohn Hubbard                 pub const $variant: Self = Self(Self::to_24bit_class($binding));
51ed78a018SJohn Hubbard             )+
52ed78a018SJohn Hubbard         }
53*d53ea977SJohn Hubbard 
54*d53ea977SJohn Hubbard         impl fmt::Display for Class {
55*d53ea977SJohn Hubbard             fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
56*d53ea977SJohn Hubbard                 match self {
57*d53ea977SJohn Hubbard                     $(
58*d53ea977SJohn Hubbard                         &Self::$variant => write!(f, stringify!($variant)),
59*d53ea977SJohn Hubbard                     )+
60*d53ea977SJohn Hubbard                     _ => <Self as fmt::Debug>::fmt(self, f),
61*d53ea977SJohn Hubbard                 }
62*d53ea977SJohn Hubbard             }
63*d53ea977SJohn Hubbard         }
64ed78a018SJohn Hubbard     };
65ed78a018SJohn Hubbard }
66ed78a018SJohn Hubbard 
67ed78a018SJohn Hubbard /// Once constructed, a [`Class`] contains a valid PCI class code.
68ed78a018SJohn Hubbard impl Class {
69ed78a018SJohn Hubbard     /// Create a [`Class`] from a raw 24-bit class code.
70ed78a018SJohn Hubbard     #[inline]
71ed78a018SJohn Hubbard     pub(super) fn from_raw(class_code: u32) -> Self {
72ed78a018SJohn Hubbard         Self(class_code)
73ed78a018SJohn Hubbard     }
74ed78a018SJohn Hubbard 
75ed78a018SJohn Hubbard     /// Get the raw 24-bit class code value.
76ed78a018SJohn Hubbard     #[inline]
77ed78a018SJohn Hubbard     pub const fn as_raw(self) -> u32 {
78ed78a018SJohn Hubbard         self.0
79ed78a018SJohn Hubbard     }
80ed78a018SJohn Hubbard 
81ed78a018SJohn Hubbard     // Converts a PCI class constant to 24-bit format.
82ed78a018SJohn Hubbard     //
83ed78a018SJohn Hubbard     // Many device drivers use only the upper 16 bits (base class and subclass),
84ed78a018SJohn Hubbard     // but some use the full 24 bits. In order to support both cases, store the
85ed78a018SJohn Hubbard     // class code as a 24-bit value, where 16-bit values are shifted up 8 bits.
86ed78a018SJohn Hubbard     const fn to_24bit_class(val: u32) -> u32 {
87ed78a018SJohn Hubbard         if val > 0xFFFF {
88ed78a018SJohn Hubbard             val
89ed78a018SJohn Hubbard         } else {
90ed78a018SJohn Hubbard             val << 8
91ed78a018SJohn Hubbard         }
92ed78a018SJohn Hubbard     }
93ed78a018SJohn Hubbard }
94ed78a018SJohn Hubbard 
95ed78a018SJohn Hubbard impl fmt::Debug for Class {
96ed78a018SJohn Hubbard     fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
97ed78a018SJohn Hubbard         write!(f, "0x{:06x}", self.0)
98ed78a018SJohn Hubbard     }
99ed78a018SJohn Hubbard }
100ed78a018SJohn Hubbard 
101ed78a018SJohn Hubbard impl ClassMask {
102ed78a018SJohn Hubbard     /// Get the raw mask value.
103ed78a018SJohn Hubbard     #[inline]
104ed78a018SJohn Hubbard     pub const fn as_raw(self) -> u32 {
105ed78a018SJohn Hubbard         self as u32
106ed78a018SJohn Hubbard     }
107ed78a018SJohn Hubbard }
108ed78a018SJohn Hubbard 
109ed78a018SJohn Hubbard impl TryFrom<u32> for ClassMask {
110ed78a018SJohn Hubbard     type Error = Error;
111ed78a018SJohn Hubbard 
112ed78a018SJohn Hubbard     fn try_from(value: u32) -> Result<Self, Self::Error> {
113ed78a018SJohn Hubbard         match value {
114ed78a018SJohn Hubbard             0xffffff => Ok(ClassMask::Full),
115ed78a018SJohn Hubbard             0xffff00 => Ok(ClassMask::ClassSubclass),
116ed78a018SJohn Hubbard             _ => Err(EINVAL),
117ed78a018SJohn Hubbard         }
118ed78a018SJohn Hubbard     }
119ed78a018SJohn Hubbard }
120ed78a018SJohn Hubbard 
1215e20962aSJohn Hubbard /// PCI vendor IDs.
1225e20962aSJohn Hubbard ///
1235e20962aSJohn Hubbard /// Each entry contains the 16-bit PCI vendor ID as assigned by the PCI SIG.
1245e20962aSJohn Hubbard #[derive(Clone, Copy, PartialEq, Eq)]
1255e20962aSJohn Hubbard #[repr(transparent)]
1265e20962aSJohn Hubbard pub struct Vendor(u16);
1275e20962aSJohn Hubbard 
1285e20962aSJohn Hubbard macro_rules! define_all_pci_vendors {
1295e20962aSJohn Hubbard     (
1305e20962aSJohn Hubbard         $($variant:ident = $binding:expr,)+
1315e20962aSJohn Hubbard     ) => {
1325e20962aSJohn Hubbard         impl Vendor {
1335e20962aSJohn Hubbard             $(
1345e20962aSJohn Hubbard                 #[allow(missing_docs)]
1355e20962aSJohn Hubbard                 pub const $variant: Self = Self($binding as u16);
1365e20962aSJohn Hubbard             )+
1375e20962aSJohn Hubbard         }
1385e20962aSJohn Hubbard     };
1395e20962aSJohn Hubbard }
1405e20962aSJohn Hubbard 
1415e20962aSJohn Hubbard /// Once constructed, a `Vendor` contains a valid PCI Vendor ID.
1425e20962aSJohn Hubbard impl Vendor {
1435e20962aSJohn Hubbard     /// Create a Vendor from a raw 16-bit vendor ID.
1445e20962aSJohn Hubbard     #[inline]
1455e20962aSJohn Hubbard     pub(super) fn from_raw(vendor_id: u16) -> Self {
1465e20962aSJohn Hubbard         Self(vendor_id)
1475e20962aSJohn Hubbard     }
1485e20962aSJohn Hubbard 
1495e20962aSJohn Hubbard     /// Get the raw 16-bit vendor ID value.
1505e20962aSJohn Hubbard     #[inline]
1515e20962aSJohn Hubbard     pub const fn as_raw(self) -> u16 {
1525e20962aSJohn Hubbard         self.0
1535e20962aSJohn Hubbard     }
1545e20962aSJohn Hubbard }
1555e20962aSJohn Hubbard 
1565e20962aSJohn Hubbard impl fmt::Debug for Vendor {
1575e20962aSJohn Hubbard     #[inline]
1585e20962aSJohn Hubbard     fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
1595e20962aSJohn Hubbard         write!(f, "0x{:04x}", self.0)
1605e20962aSJohn Hubbard     }
1615e20962aSJohn Hubbard }
1625e20962aSJohn Hubbard 
1635e20962aSJohn Hubbard impl fmt::Display for Vendor {
1645e20962aSJohn Hubbard     #[inline]
1655e20962aSJohn Hubbard     fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
1665e20962aSJohn Hubbard         <Self as fmt::Debug>::fmt(self, f)
1675e20962aSJohn Hubbard     }
1685e20962aSJohn Hubbard }
1695e20962aSJohn Hubbard 
170ed78a018SJohn Hubbard define_all_pci_classes! {
171ed78a018SJohn Hubbard     NOT_DEFINED                = bindings::PCI_CLASS_NOT_DEFINED,                // 0x000000
172ed78a018SJohn Hubbard     NOT_DEFINED_VGA            = bindings::PCI_CLASS_NOT_DEFINED_VGA,            // 0x000100
173ed78a018SJohn Hubbard 
174ed78a018SJohn Hubbard     STORAGE_SCSI               = bindings::PCI_CLASS_STORAGE_SCSI,               // 0x010000
175ed78a018SJohn Hubbard     STORAGE_IDE                = bindings::PCI_CLASS_STORAGE_IDE,                // 0x010100
176ed78a018SJohn Hubbard     STORAGE_FLOPPY             = bindings::PCI_CLASS_STORAGE_FLOPPY,             // 0x010200
177ed78a018SJohn Hubbard     STORAGE_IPI                = bindings::PCI_CLASS_STORAGE_IPI,                // 0x010300
178ed78a018SJohn Hubbard     STORAGE_RAID               = bindings::PCI_CLASS_STORAGE_RAID,               // 0x010400
179ed78a018SJohn Hubbard     STORAGE_SATA               = bindings::PCI_CLASS_STORAGE_SATA,               // 0x010600
180ed78a018SJohn Hubbard     STORAGE_SATA_AHCI          = bindings::PCI_CLASS_STORAGE_SATA_AHCI,          // 0x010601
181ed78a018SJohn Hubbard     STORAGE_SAS                = bindings::PCI_CLASS_STORAGE_SAS,                // 0x010700
182ed78a018SJohn Hubbard     STORAGE_EXPRESS            = bindings::PCI_CLASS_STORAGE_EXPRESS,            // 0x010802
183ed78a018SJohn Hubbard     STORAGE_OTHER              = bindings::PCI_CLASS_STORAGE_OTHER,              // 0x018000
184ed78a018SJohn Hubbard 
185ed78a018SJohn Hubbard     NETWORK_ETHERNET           = bindings::PCI_CLASS_NETWORK_ETHERNET,           // 0x020000
186ed78a018SJohn Hubbard     NETWORK_TOKEN_RING         = bindings::PCI_CLASS_NETWORK_TOKEN_RING,         // 0x020100
187ed78a018SJohn Hubbard     NETWORK_FDDI               = bindings::PCI_CLASS_NETWORK_FDDI,               // 0x020200
188ed78a018SJohn Hubbard     NETWORK_ATM                = bindings::PCI_CLASS_NETWORK_ATM,                // 0x020300
189ed78a018SJohn Hubbard     NETWORK_OTHER              = bindings::PCI_CLASS_NETWORK_OTHER,              // 0x028000
190ed78a018SJohn Hubbard 
191ed78a018SJohn Hubbard     DISPLAY_VGA                = bindings::PCI_CLASS_DISPLAY_VGA,                // 0x030000
192ed78a018SJohn Hubbard     DISPLAY_XGA                = bindings::PCI_CLASS_DISPLAY_XGA,                // 0x030100
193ed78a018SJohn Hubbard     DISPLAY_3D                 = bindings::PCI_CLASS_DISPLAY_3D,                 // 0x030200
194ed78a018SJohn Hubbard     DISPLAY_OTHER              = bindings::PCI_CLASS_DISPLAY_OTHER,              // 0x038000
195ed78a018SJohn Hubbard 
196ed78a018SJohn Hubbard     MULTIMEDIA_VIDEO           = bindings::PCI_CLASS_MULTIMEDIA_VIDEO,           // 0x040000
197ed78a018SJohn Hubbard     MULTIMEDIA_AUDIO           = bindings::PCI_CLASS_MULTIMEDIA_AUDIO,           // 0x040100
198ed78a018SJohn Hubbard     MULTIMEDIA_PHONE           = bindings::PCI_CLASS_MULTIMEDIA_PHONE,           // 0x040200
199ed78a018SJohn Hubbard     MULTIMEDIA_HD_AUDIO        = bindings::PCI_CLASS_MULTIMEDIA_HD_AUDIO,        // 0x040300
200ed78a018SJohn Hubbard     MULTIMEDIA_OTHER           = bindings::PCI_CLASS_MULTIMEDIA_OTHER,           // 0x048000
201ed78a018SJohn Hubbard 
202ed78a018SJohn Hubbard     MEMORY_RAM                 = bindings::PCI_CLASS_MEMORY_RAM,                 // 0x050000
203ed78a018SJohn Hubbard     MEMORY_FLASH               = bindings::PCI_CLASS_MEMORY_FLASH,               // 0x050100
204ed78a018SJohn Hubbard     MEMORY_CXL                 = bindings::PCI_CLASS_MEMORY_CXL,                 // 0x050200
205ed78a018SJohn Hubbard     MEMORY_OTHER               = bindings::PCI_CLASS_MEMORY_OTHER,               // 0x058000
206ed78a018SJohn Hubbard 
207ed78a018SJohn Hubbard     BRIDGE_HOST                = bindings::PCI_CLASS_BRIDGE_HOST,                // 0x060000
208ed78a018SJohn Hubbard     BRIDGE_ISA                 = bindings::PCI_CLASS_BRIDGE_ISA,                 // 0x060100
209ed78a018SJohn Hubbard     BRIDGE_EISA                = bindings::PCI_CLASS_BRIDGE_EISA,                // 0x060200
210ed78a018SJohn Hubbard     BRIDGE_MC                  = bindings::PCI_CLASS_BRIDGE_MC,                  // 0x060300
211ed78a018SJohn Hubbard     BRIDGE_PCI_NORMAL          = bindings::PCI_CLASS_BRIDGE_PCI_NORMAL,          // 0x060400
212ed78a018SJohn Hubbard     BRIDGE_PCI_SUBTRACTIVE     = bindings::PCI_CLASS_BRIDGE_PCI_SUBTRACTIVE,     // 0x060401
213ed78a018SJohn Hubbard     BRIDGE_PCMCIA              = bindings::PCI_CLASS_BRIDGE_PCMCIA,              // 0x060500
214ed78a018SJohn Hubbard     BRIDGE_NUBUS               = bindings::PCI_CLASS_BRIDGE_NUBUS,               // 0x060600
215ed78a018SJohn Hubbard     BRIDGE_CARDBUS             = bindings::PCI_CLASS_BRIDGE_CARDBUS,             // 0x060700
216ed78a018SJohn Hubbard     BRIDGE_RACEWAY             = bindings::PCI_CLASS_BRIDGE_RACEWAY,             // 0x060800
217ed78a018SJohn Hubbard     BRIDGE_OTHER               = bindings::PCI_CLASS_BRIDGE_OTHER,               // 0x068000
218ed78a018SJohn Hubbard 
219ed78a018SJohn Hubbard     COMMUNICATION_SERIAL       = bindings::PCI_CLASS_COMMUNICATION_SERIAL,       // 0x070000
220ed78a018SJohn Hubbard     COMMUNICATION_PARALLEL     = bindings::PCI_CLASS_COMMUNICATION_PARALLEL,     // 0x070100
221ed78a018SJohn Hubbard     COMMUNICATION_MULTISERIAL  = bindings::PCI_CLASS_COMMUNICATION_MULTISERIAL,  // 0x070200
222ed78a018SJohn Hubbard     COMMUNICATION_MODEM        = bindings::PCI_CLASS_COMMUNICATION_MODEM,        // 0x070300
223ed78a018SJohn Hubbard     COMMUNICATION_OTHER        = bindings::PCI_CLASS_COMMUNICATION_OTHER,        // 0x078000
224ed78a018SJohn Hubbard 
225ed78a018SJohn Hubbard     SYSTEM_PIC                 = bindings::PCI_CLASS_SYSTEM_PIC,                 // 0x080000
226ed78a018SJohn Hubbard     SYSTEM_PIC_IOAPIC          = bindings::PCI_CLASS_SYSTEM_PIC_IOAPIC,          // 0x080010
227ed78a018SJohn Hubbard     SYSTEM_PIC_IOXAPIC         = bindings::PCI_CLASS_SYSTEM_PIC_IOXAPIC,         // 0x080020
228ed78a018SJohn Hubbard     SYSTEM_DMA                 = bindings::PCI_CLASS_SYSTEM_DMA,                 // 0x080100
229ed78a018SJohn Hubbard     SYSTEM_TIMER               = bindings::PCI_CLASS_SYSTEM_TIMER,               // 0x080200
230ed78a018SJohn Hubbard     SYSTEM_RTC                 = bindings::PCI_CLASS_SYSTEM_RTC,                 // 0x080300
231ed78a018SJohn Hubbard     SYSTEM_PCI_HOTPLUG         = bindings::PCI_CLASS_SYSTEM_PCI_HOTPLUG,         // 0x080400
232ed78a018SJohn Hubbard     SYSTEM_SDHCI               = bindings::PCI_CLASS_SYSTEM_SDHCI,               // 0x080500
233ed78a018SJohn Hubbard     SYSTEM_RCEC                = bindings::PCI_CLASS_SYSTEM_RCEC,                // 0x080700
234ed78a018SJohn Hubbard     SYSTEM_OTHER               = bindings::PCI_CLASS_SYSTEM_OTHER,               // 0x088000
235ed78a018SJohn Hubbard 
236ed78a018SJohn Hubbard     INPUT_KEYBOARD             = bindings::PCI_CLASS_INPUT_KEYBOARD,             // 0x090000
237ed78a018SJohn Hubbard     INPUT_PEN                  = bindings::PCI_CLASS_INPUT_PEN,                  // 0x090100
238ed78a018SJohn Hubbard     INPUT_MOUSE                = bindings::PCI_CLASS_INPUT_MOUSE,                // 0x090200
239ed78a018SJohn Hubbard     INPUT_SCANNER              = bindings::PCI_CLASS_INPUT_SCANNER,              // 0x090300
240ed78a018SJohn Hubbard     INPUT_GAMEPORT             = bindings::PCI_CLASS_INPUT_GAMEPORT,             // 0x090400
241ed78a018SJohn Hubbard     INPUT_OTHER                = bindings::PCI_CLASS_INPUT_OTHER,                // 0x098000
242ed78a018SJohn Hubbard 
243ed78a018SJohn Hubbard     DOCKING_GENERIC            = bindings::PCI_CLASS_DOCKING_GENERIC,            // 0x0a0000
244ed78a018SJohn Hubbard     DOCKING_OTHER              = bindings::PCI_CLASS_DOCKING_OTHER,              // 0x0a8000
245ed78a018SJohn Hubbard 
246ed78a018SJohn Hubbard     PROCESSOR_386              = bindings::PCI_CLASS_PROCESSOR_386,              // 0x0b0000
247ed78a018SJohn Hubbard     PROCESSOR_486              = bindings::PCI_CLASS_PROCESSOR_486,              // 0x0b0100
248ed78a018SJohn Hubbard     PROCESSOR_PENTIUM          = bindings::PCI_CLASS_PROCESSOR_PENTIUM,          // 0x0b0200
249ed78a018SJohn Hubbard     PROCESSOR_ALPHA            = bindings::PCI_CLASS_PROCESSOR_ALPHA,            // 0x0b1000
250ed78a018SJohn Hubbard     PROCESSOR_POWERPC          = bindings::PCI_CLASS_PROCESSOR_POWERPC,          // 0x0b2000
251ed78a018SJohn Hubbard     PROCESSOR_MIPS             = bindings::PCI_CLASS_PROCESSOR_MIPS,             // 0x0b3000
252ed78a018SJohn Hubbard     PROCESSOR_CO               = bindings::PCI_CLASS_PROCESSOR_CO,               // 0x0b4000
253ed78a018SJohn Hubbard 
254ed78a018SJohn Hubbard     SERIAL_FIREWIRE            = bindings::PCI_CLASS_SERIAL_FIREWIRE,            // 0x0c0000
255ed78a018SJohn Hubbard     SERIAL_FIREWIRE_OHCI       = bindings::PCI_CLASS_SERIAL_FIREWIRE_OHCI,       // 0x0c0010
256ed78a018SJohn Hubbard     SERIAL_ACCESS              = bindings::PCI_CLASS_SERIAL_ACCESS,              // 0x0c0100
257ed78a018SJohn Hubbard     SERIAL_SSA                 = bindings::PCI_CLASS_SERIAL_SSA,                 // 0x0c0200
258ed78a018SJohn Hubbard     SERIAL_USB_UHCI            = bindings::PCI_CLASS_SERIAL_USB_UHCI,            // 0x0c0300
259ed78a018SJohn Hubbard     SERIAL_USB_OHCI            = bindings::PCI_CLASS_SERIAL_USB_OHCI,            // 0x0c0310
260ed78a018SJohn Hubbard     SERIAL_USB_EHCI            = bindings::PCI_CLASS_SERIAL_USB_EHCI,            // 0x0c0320
261ed78a018SJohn Hubbard     SERIAL_USB_XHCI            = bindings::PCI_CLASS_SERIAL_USB_XHCI,            // 0x0c0330
262ed78a018SJohn Hubbard     SERIAL_USB_CDNS            = bindings::PCI_CLASS_SERIAL_USB_CDNS,            // 0x0c0380
263ed78a018SJohn Hubbard     SERIAL_USB_DEVICE          = bindings::PCI_CLASS_SERIAL_USB_DEVICE,          // 0x0c03fe
264ed78a018SJohn Hubbard     SERIAL_FIBER               = bindings::PCI_CLASS_SERIAL_FIBER,               // 0x0c0400
265ed78a018SJohn Hubbard     SERIAL_SMBUS               = bindings::PCI_CLASS_SERIAL_SMBUS,               // 0x0c0500
266ed78a018SJohn Hubbard     SERIAL_IPMI_SMIC           = bindings::PCI_CLASS_SERIAL_IPMI_SMIC,           // 0x0c0700
267ed78a018SJohn Hubbard     SERIAL_IPMI_KCS            = bindings::PCI_CLASS_SERIAL_IPMI_KCS,            // 0x0c0701
268ed78a018SJohn Hubbard     SERIAL_IPMI_BT             = bindings::PCI_CLASS_SERIAL_IPMI_BT,             // 0x0c0702
269ed78a018SJohn Hubbard 
270ed78a018SJohn Hubbard     WIRELESS_RF_CONTROLLER     = bindings::PCI_CLASS_WIRELESS_RF_CONTROLLER,     // 0x0d1000
271ed78a018SJohn Hubbard     WIRELESS_WHCI              = bindings::PCI_CLASS_WIRELESS_WHCI,              // 0x0d1010
272ed78a018SJohn Hubbard 
273ed78a018SJohn Hubbard     INTELLIGENT_I2O            = bindings::PCI_CLASS_INTELLIGENT_I2O,            // 0x0e0000
274ed78a018SJohn Hubbard 
275ed78a018SJohn Hubbard     SATELLITE_TV               = bindings::PCI_CLASS_SATELLITE_TV,               // 0x0f0000
276ed78a018SJohn Hubbard     SATELLITE_AUDIO            = bindings::PCI_CLASS_SATELLITE_AUDIO,            // 0x0f0100
277ed78a018SJohn Hubbard     SATELLITE_VOICE            = bindings::PCI_CLASS_SATELLITE_VOICE,            // 0x0f0300
278ed78a018SJohn Hubbard     SATELLITE_DATA             = bindings::PCI_CLASS_SATELLITE_DATA,             // 0x0f0400
279ed78a018SJohn Hubbard 
280ed78a018SJohn Hubbard     CRYPT_NETWORK              = bindings::PCI_CLASS_CRYPT_NETWORK,              // 0x100000
281ed78a018SJohn Hubbard     CRYPT_ENTERTAINMENT        = bindings::PCI_CLASS_CRYPT_ENTERTAINMENT,        // 0x100100
282ed78a018SJohn Hubbard     CRYPT_OTHER                = bindings::PCI_CLASS_CRYPT_OTHER,                // 0x108000
283ed78a018SJohn Hubbard 
284ed78a018SJohn Hubbard     SP_DPIO                    = bindings::PCI_CLASS_SP_DPIO,                    // 0x110000
285ed78a018SJohn Hubbard     SP_OTHER                   = bindings::PCI_CLASS_SP_OTHER,                   // 0x118000
286ed78a018SJohn Hubbard 
287ed78a018SJohn Hubbard     ACCELERATOR_PROCESSING     = bindings::PCI_CLASS_ACCELERATOR_PROCESSING,     // 0x120000
288ed78a018SJohn Hubbard 
289ed78a018SJohn Hubbard     OTHERS                     = bindings::PCI_CLASS_OTHERS,                     // 0xff0000
290ed78a018SJohn Hubbard }
2915e20962aSJohn Hubbard 
2925e20962aSJohn Hubbard define_all_pci_vendors! {
2935e20962aSJohn Hubbard     PCI_SIG                  = bindings::PCI_VENDOR_ID_PCI_SIG,                  // 0x0001
2945e20962aSJohn Hubbard     LOONGSON                 = bindings::PCI_VENDOR_ID_LOONGSON,                 // 0x0014
2955e20962aSJohn Hubbard     SOLIDIGM                 = bindings::PCI_VENDOR_ID_SOLIDIGM,                 // 0x025e
2965e20962aSJohn Hubbard     TTTECH                   = bindings::PCI_VENDOR_ID_TTTECH,                   // 0x0357
2975e20962aSJohn Hubbard     DYNALINK                 = bindings::PCI_VENDOR_ID_DYNALINK,                 // 0x0675
2985e20962aSJohn Hubbard     UBIQUITI                 = bindings::PCI_VENDOR_ID_UBIQUITI,                 // 0x0777
2995e20962aSJohn Hubbard     BERKOM                   = bindings::PCI_VENDOR_ID_BERKOM,                   // 0x0871
3005e20962aSJohn Hubbard     ITTIM                    = bindings::PCI_VENDOR_ID_ITTIM,                    // 0x0b48
3015e20962aSJohn Hubbard     COMPAQ                   = bindings::PCI_VENDOR_ID_COMPAQ,                   // 0x0e11
3025e20962aSJohn Hubbard     LSI_LOGIC                = bindings::PCI_VENDOR_ID_LSI_LOGIC,                // 0x1000
3035e20962aSJohn Hubbard     ATI                      = bindings::PCI_VENDOR_ID_ATI,                      // 0x1002
3045e20962aSJohn Hubbard     VLSI                     = bindings::PCI_VENDOR_ID_VLSI,                     // 0x1004
3055e20962aSJohn Hubbard     ADL                      = bindings::PCI_VENDOR_ID_ADL,                      // 0x1005
3065e20962aSJohn Hubbard     NS                       = bindings::PCI_VENDOR_ID_NS,                       // 0x100b
3075e20962aSJohn Hubbard     TSENG                    = bindings::PCI_VENDOR_ID_TSENG,                    // 0x100c
3085e20962aSJohn Hubbard     WEITEK                   = bindings::PCI_VENDOR_ID_WEITEK,                   // 0x100e
3095e20962aSJohn Hubbard     DEC                      = bindings::PCI_VENDOR_ID_DEC,                      // 0x1011
3105e20962aSJohn Hubbard     CIRRUS                   = bindings::PCI_VENDOR_ID_CIRRUS,                   // 0x1013
3115e20962aSJohn Hubbard     IBM                      = bindings::PCI_VENDOR_ID_IBM,                      // 0x1014
3125e20962aSJohn Hubbard     UNISYS                   = bindings::PCI_VENDOR_ID_UNISYS,                   // 0x1018
3135e20962aSJohn Hubbard     COMPEX2                  = bindings::PCI_VENDOR_ID_COMPEX2,                  // 0x101a
3145e20962aSJohn Hubbard     WD                       = bindings::PCI_VENDOR_ID_WD,                       // 0x101c
3155e20962aSJohn Hubbard     AMI                      = bindings::PCI_VENDOR_ID_AMI,                      // 0x101e
3165e20962aSJohn Hubbard     AMD                      = bindings::PCI_VENDOR_ID_AMD,                      // 0x1022
3175e20962aSJohn Hubbard     TRIDENT                  = bindings::PCI_VENDOR_ID_TRIDENT,                  // 0x1023
3185e20962aSJohn Hubbard     AI                       = bindings::PCI_VENDOR_ID_AI,                       // 0x1025
3195e20962aSJohn Hubbard     DELL                     = bindings::PCI_VENDOR_ID_DELL,                     // 0x1028
3205e20962aSJohn Hubbard     MATROX                   = bindings::PCI_VENDOR_ID_MATROX,                   // 0x102B
3215e20962aSJohn Hubbard     MOBILITY_ELECTRONICS     = bindings::PCI_VENDOR_ID_MOBILITY_ELECTRONICS,     // 0x14f2
3225e20962aSJohn Hubbard     CT                       = bindings::PCI_VENDOR_ID_CT,                       // 0x102c
3235e20962aSJohn Hubbard     MIRO                     = bindings::PCI_VENDOR_ID_MIRO,                     // 0x1031
3245e20962aSJohn Hubbard     NEC                      = bindings::PCI_VENDOR_ID_NEC,                      // 0x1033
3255e20962aSJohn Hubbard     FD                       = bindings::PCI_VENDOR_ID_FD,                       // 0x1036
3265e20962aSJohn Hubbard     SI                       = bindings::PCI_VENDOR_ID_SI,                       // 0x1039
3275e20962aSJohn Hubbard     HP                       = bindings::PCI_VENDOR_ID_HP,                       // 0x103c
3285e20962aSJohn Hubbard     HP_3PAR                  = bindings::PCI_VENDOR_ID_HP_3PAR,                  // 0x1590
3295e20962aSJohn Hubbard     PCTECH                   = bindings::PCI_VENDOR_ID_PCTECH,                   // 0x1042
3305e20962aSJohn Hubbard     ASUSTEK                  = bindings::PCI_VENDOR_ID_ASUSTEK,                  // 0x1043
3315e20962aSJohn Hubbard     DPT                      = bindings::PCI_VENDOR_ID_DPT,                      // 0x1044
3325e20962aSJohn Hubbard     OPTI                     = bindings::PCI_VENDOR_ID_OPTI,                     // 0x1045
3335e20962aSJohn Hubbard     ELSA                     = bindings::PCI_VENDOR_ID_ELSA,                     // 0x1048
3345e20962aSJohn Hubbard     STMICRO                  = bindings::PCI_VENDOR_ID_STMICRO,                  // 0x104A
3355e20962aSJohn Hubbard     BUSLOGIC                 = bindings::PCI_VENDOR_ID_BUSLOGIC,                 // 0x104B
3365e20962aSJohn Hubbard     TI                       = bindings::PCI_VENDOR_ID_TI,                       // 0x104c
3375e20962aSJohn Hubbard     SONY                     = bindings::PCI_VENDOR_ID_SONY,                     // 0x104d
3385e20962aSJohn Hubbard     WINBOND2                 = bindings::PCI_VENDOR_ID_WINBOND2,                 // 0x1050
3395e20962aSJohn Hubbard     ANIGMA                   = bindings::PCI_VENDOR_ID_ANIGMA,                   // 0x1051
3405e20962aSJohn Hubbard     EFAR                     = bindings::PCI_VENDOR_ID_EFAR,                     // 0x1055
3415e20962aSJohn Hubbard     MOTOROLA                 = bindings::PCI_VENDOR_ID_MOTOROLA,                 // 0x1057
3425e20962aSJohn Hubbard     PROMISE                  = bindings::PCI_VENDOR_ID_PROMISE,                  // 0x105a
3435e20962aSJohn Hubbard     FOXCONN                  = bindings::PCI_VENDOR_ID_FOXCONN,                  // 0x105b
3445e20962aSJohn Hubbard     UMC                      = bindings::PCI_VENDOR_ID_UMC,                      // 0x1060
3455e20962aSJohn Hubbard     PICOPOWER                = bindings::PCI_VENDOR_ID_PICOPOWER,                // 0x1066
3465e20962aSJohn Hubbard     MYLEX                    = bindings::PCI_VENDOR_ID_MYLEX,                    // 0x1069
3475e20962aSJohn Hubbard     APPLE                    = bindings::PCI_VENDOR_ID_APPLE,                    // 0x106b
3485e20962aSJohn Hubbard     YAMAHA                   = bindings::PCI_VENDOR_ID_YAMAHA,                   // 0x1073
3495e20962aSJohn Hubbard     QLOGIC                   = bindings::PCI_VENDOR_ID_QLOGIC,                   // 0x1077
3505e20962aSJohn Hubbard     CYRIX                    = bindings::PCI_VENDOR_ID_CYRIX,                    // 0x1078
3515e20962aSJohn Hubbard     CONTAQ                   = bindings::PCI_VENDOR_ID_CONTAQ,                   // 0x1080
3525e20962aSJohn Hubbard     OLICOM                   = bindings::PCI_VENDOR_ID_OLICOM,                   // 0x108d
3535e20962aSJohn Hubbard     SUN                      = bindings::PCI_VENDOR_ID_SUN,                      // 0x108e
3545e20962aSJohn Hubbard     NI                       = bindings::PCI_VENDOR_ID_NI,                       // 0x1093
3555e20962aSJohn Hubbard     CMD                      = bindings::PCI_VENDOR_ID_CMD,                      // 0x1095
3565e20962aSJohn Hubbard     BROOKTREE                = bindings::PCI_VENDOR_ID_BROOKTREE,                // 0x109e
3575e20962aSJohn Hubbard     SGI                      = bindings::PCI_VENDOR_ID_SGI,                      // 0x10a9
3585e20962aSJohn Hubbard     WINBOND                  = bindings::PCI_VENDOR_ID_WINBOND,                  // 0x10ad
3595e20962aSJohn Hubbard     PLX                      = bindings::PCI_VENDOR_ID_PLX,                      // 0x10b5
3605e20962aSJohn Hubbard     MADGE                    = bindings::PCI_VENDOR_ID_MADGE,                    // 0x10b6
3615e20962aSJohn Hubbard     THREECOM                 = bindings::PCI_VENDOR_ID_3COM,                     // 0x10b7
3625e20962aSJohn Hubbard     AL                       = bindings::PCI_VENDOR_ID_AL,                       // 0x10b9
3635e20962aSJohn Hubbard     NEOMAGIC                 = bindings::PCI_VENDOR_ID_NEOMAGIC,                 // 0x10c8
3645e20962aSJohn Hubbard     TCONRAD                  = bindings::PCI_VENDOR_ID_TCONRAD,                  // 0x10da
3655e20962aSJohn Hubbard     ROHM                     = bindings::PCI_VENDOR_ID_ROHM,                     // 0x10db
3665e20962aSJohn Hubbard     NVIDIA                   = bindings::PCI_VENDOR_ID_NVIDIA,                   // 0x10de
3675e20962aSJohn Hubbard     IMS                      = bindings::PCI_VENDOR_ID_IMS,                      // 0x10e0
3685e20962aSJohn Hubbard     AMCC                     = bindings::PCI_VENDOR_ID_AMCC,                     // 0x10e8
3695e20962aSJohn Hubbard     AMPERE                   = bindings::PCI_VENDOR_ID_AMPERE,                   // 0x1def
3705e20962aSJohn Hubbard     INTERG                   = bindings::PCI_VENDOR_ID_INTERG,                   // 0x10ea
3715e20962aSJohn Hubbard     REALTEK                  = bindings::PCI_VENDOR_ID_REALTEK,                  // 0x10ec
3725e20962aSJohn Hubbard     XILINX                   = bindings::PCI_VENDOR_ID_XILINX,                   // 0x10ee
3735e20962aSJohn Hubbard     INIT                     = bindings::PCI_VENDOR_ID_INIT,                     // 0x1101
3745e20962aSJohn Hubbard     CREATIVE                 = bindings::PCI_VENDOR_ID_CREATIVE,                 // 0x1102
3755e20962aSJohn Hubbard     TTI                      = bindings::PCI_VENDOR_ID_TTI,                      // 0x1103
3765e20962aSJohn Hubbard     SIGMA                    = bindings::PCI_VENDOR_ID_SIGMA,                    // 0x1105
3775e20962aSJohn Hubbard     VIA                      = bindings::PCI_VENDOR_ID_VIA,                      // 0x1106
3785e20962aSJohn Hubbard     SIEMENS                  = bindings::PCI_VENDOR_ID_SIEMENS,                  // 0x110A
3795e20962aSJohn Hubbard     VORTEX                   = bindings::PCI_VENDOR_ID_VORTEX,                   // 0x1119
3805e20962aSJohn Hubbard     EF                       = bindings::PCI_VENDOR_ID_EF,                       // 0x111a
3815e20962aSJohn Hubbard     IDT                      = bindings::PCI_VENDOR_ID_IDT,                      // 0x111d
3825e20962aSJohn Hubbard     FORE                     = bindings::PCI_VENDOR_ID_FORE,                     // 0x1127
3835e20962aSJohn Hubbard     PHILIPS                  = bindings::PCI_VENDOR_ID_PHILIPS,                  // 0x1131
3845e20962aSJohn Hubbard     EICON                    = bindings::PCI_VENDOR_ID_EICON,                    // 0x1133
3855e20962aSJohn Hubbard     CISCO                    = bindings::PCI_VENDOR_ID_CISCO,                    // 0x1137
3865e20962aSJohn Hubbard     ZIATECH                  = bindings::PCI_VENDOR_ID_ZIATECH,                  // 0x1138
3875e20962aSJohn Hubbard     SYSKONNECT               = bindings::PCI_VENDOR_ID_SYSKONNECT,               // 0x1148
3885e20962aSJohn Hubbard     DIGI                     = bindings::PCI_VENDOR_ID_DIGI,                     // 0x114f
3895e20962aSJohn Hubbard     XIRCOM                   = bindings::PCI_VENDOR_ID_XIRCOM,                   // 0x115d
3905e20962aSJohn Hubbard     SERVERWORKS              = bindings::PCI_VENDOR_ID_SERVERWORKS,              // 0x1166
3915e20962aSJohn Hubbard     ALTERA                   = bindings::PCI_VENDOR_ID_ALTERA,                   // 0x1172
3925e20962aSJohn Hubbard     SBE                      = bindings::PCI_VENDOR_ID_SBE,                      // 0x1176
3935e20962aSJohn Hubbard     TOSHIBA                  = bindings::PCI_VENDOR_ID_TOSHIBA,                  // 0x1179
3945e20962aSJohn Hubbard     TOSHIBA_2                = bindings::PCI_VENDOR_ID_TOSHIBA_2,                // 0x102f
3955e20962aSJohn Hubbard     ATTO                     = bindings::PCI_VENDOR_ID_ATTO,                     // 0x117c
3965e20962aSJohn Hubbard     RICOH                    = bindings::PCI_VENDOR_ID_RICOH,                    // 0x1180
3975e20962aSJohn Hubbard     DLINK                    = bindings::PCI_VENDOR_ID_DLINK,                    // 0x1186
3985e20962aSJohn Hubbard     ARTOP                    = bindings::PCI_VENDOR_ID_ARTOP,                    // 0x1191
3995e20962aSJohn Hubbard     ZEITNET                  = bindings::PCI_VENDOR_ID_ZEITNET,                  // 0x1193
4005e20962aSJohn Hubbard     FUJITSU_ME               = bindings::PCI_VENDOR_ID_FUJITSU_ME,               // 0x119e
4015e20962aSJohn Hubbard     MARVELL                  = bindings::PCI_VENDOR_ID_MARVELL,                  // 0x11ab
4025e20962aSJohn Hubbard     MARVELL_EXT              = bindings::PCI_VENDOR_ID_MARVELL_EXT,              // 0x1b4b
4035e20962aSJohn Hubbard     V3                       = bindings::PCI_VENDOR_ID_V3,                       // 0x11b0
4045e20962aSJohn Hubbard     ATT                      = bindings::PCI_VENDOR_ID_ATT,                      // 0x11c1
4055e20962aSJohn Hubbard     SPECIALIX                = bindings::PCI_VENDOR_ID_SPECIALIX,                // 0x11cb
4065e20962aSJohn Hubbard     ANALOG_DEVICES           = bindings::PCI_VENDOR_ID_ANALOG_DEVICES,           // 0x11d4
4075e20962aSJohn Hubbard     ZORAN                    = bindings::PCI_VENDOR_ID_ZORAN,                    // 0x11de
4085e20962aSJohn Hubbard     COMPEX                   = bindings::PCI_VENDOR_ID_COMPEX,                   // 0x11f6
4095e20962aSJohn Hubbard     MICROSEMI                = bindings::PCI_VENDOR_ID_MICROSEMI,                // 0x11f8
4105e20962aSJohn Hubbard     RP                       = bindings::PCI_VENDOR_ID_RP,                       // 0x11fe
4115e20962aSJohn Hubbard     CYCLADES                 = bindings::PCI_VENDOR_ID_CYCLADES,                 // 0x120e
4125e20962aSJohn Hubbard     ESSENTIAL                = bindings::PCI_VENDOR_ID_ESSENTIAL,                // 0x120f
4135e20962aSJohn Hubbard     O2                       = bindings::PCI_VENDOR_ID_O2,                       // 0x1217
4145e20962aSJohn Hubbard     THREEDX                  = bindings::PCI_VENDOR_ID_3DFX,                     // 0x121a
4155e20962aSJohn Hubbard     AVM                      = bindings::PCI_VENDOR_ID_AVM,                      // 0x1244
4165e20962aSJohn Hubbard     STALLION                 = bindings::PCI_VENDOR_ID_STALLION,                 // 0x124d
4175e20962aSJohn Hubbard     AT                       = bindings::PCI_VENDOR_ID_AT,                       // 0x1259
4185e20962aSJohn Hubbard     ASIX                     = bindings::PCI_VENDOR_ID_ASIX,                     // 0x125b
4195e20962aSJohn Hubbard     ESS                      = bindings::PCI_VENDOR_ID_ESS,                      // 0x125d
4205e20962aSJohn Hubbard     SATSAGEM                 = bindings::PCI_VENDOR_ID_SATSAGEM,                 // 0x1267
4215e20962aSJohn Hubbard     ENSONIQ                  = bindings::PCI_VENDOR_ID_ENSONIQ,                  // 0x1274
4225e20962aSJohn Hubbard     TRANSMETA                = bindings::PCI_VENDOR_ID_TRANSMETA,                // 0x1279
4235e20962aSJohn Hubbard     ROCKWELL                 = bindings::PCI_VENDOR_ID_ROCKWELL,                 // 0x127A
4245e20962aSJohn Hubbard     ITE                      = bindings::PCI_VENDOR_ID_ITE,                      // 0x1283
4255e20962aSJohn Hubbard     ALTEON                   = bindings::PCI_VENDOR_ID_ALTEON,                   // 0x12ae
4265e20962aSJohn Hubbard     NVIDIA_SGS               = bindings::PCI_VENDOR_ID_NVIDIA_SGS,               // 0x12d2
4275e20962aSJohn Hubbard     PERICOM                  = bindings::PCI_VENDOR_ID_PERICOM,                  // 0x12D8
4285e20962aSJohn Hubbard     AUREAL                   = bindings::PCI_VENDOR_ID_AUREAL,                   // 0x12eb
4295e20962aSJohn Hubbard     ELECTRONICDESIGNGMBH     = bindings::PCI_VENDOR_ID_ELECTRONICDESIGNGMBH,     // 0x12f8
4305e20962aSJohn Hubbard     ESDGMBH                  = bindings::PCI_VENDOR_ID_ESDGMBH,                  // 0x12fe
4315e20962aSJohn Hubbard     CB                       = bindings::PCI_VENDOR_ID_CB,                       // 0x1307
4325e20962aSJohn Hubbard     SIIG                     = bindings::PCI_VENDOR_ID_SIIG,                     // 0x131f
4335e20962aSJohn Hubbard     RADISYS                  = bindings::PCI_VENDOR_ID_RADISYS,                  // 0x1331
4345e20962aSJohn Hubbard     MICRO_MEMORY             = bindings::PCI_VENDOR_ID_MICRO_MEMORY,             // 0x1332
4355e20962aSJohn Hubbard     DOMEX                    = bindings::PCI_VENDOR_ID_DOMEX,                    // 0x134a
4365e20962aSJohn Hubbard     INTASHIELD               = bindings::PCI_VENDOR_ID_INTASHIELD,               // 0x135a
4375e20962aSJohn Hubbard     QUATECH                  = bindings::PCI_VENDOR_ID_QUATECH,                  // 0x135C
4385e20962aSJohn Hubbard     SEALEVEL                 = bindings::PCI_VENDOR_ID_SEALEVEL,                 // 0x135e
4395e20962aSJohn Hubbard     HYPERCOPE                = bindings::PCI_VENDOR_ID_HYPERCOPE,                // 0x1365
4405e20962aSJohn Hubbard     DIGIGRAM                 = bindings::PCI_VENDOR_ID_DIGIGRAM,                 // 0x1369
4415e20962aSJohn Hubbard     KAWASAKI                 = bindings::PCI_VENDOR_ID_KAWASAKI,                 // 0x136b
4425e20962aSJohn Hubbard     CNET                     = bindings::PCI_VENDOR_ID_CNET,                     // 0x1371
4435e20962aSJohn Hubbard     LMC                      = bindings::PCI_VENDOR_ID_LMC,                      // 0x1376
4445e20962aSJohn Hubbard     NETGEAR                  = bindings::PCI_VENDOR_ID_NETGEAR,                  // 0x1385
4455e20962aSJohn Hubbard     APPLICOM                 = bindings::PCI_VENDOR_ID_APPLICOM,                 // 0x1389
4465e20962aSJohn Hubbard     MOXA                     = bindings::PCI_VENDOR_ID_MOXA,                     // 0x1393
4475e20962aSJohn Hubbard     CCD                      = bindings::PCI_VENDOR_ID_CCD,                      // 0x1397
4485e20962aSJohn Hubbard     EXAR                     = bindings::PCI_VENDOR_ID_EXAR,                     // 0x13a8
4495e20962aSJohn Hubbard     MICROGATE                = bindings::PCI_VENDOR_ID_MICROGATE,                // 0x13c0
4505e20962aSJohn Hubbard     THREEWARE                = bindings::PCI_VENDOR_ID_3WARE,                    // 0x13C1
4515e20962aSJohn Hubbard     IOMEGA                   = bindings::PCI_VENDOR_ID_IOMEGA,                   // 0x13ca
4525e20962aSJohn Hubbard     ABOCOM                   = bindings::PCI_VENDOR_ID_ABOCOM,                   // 0x13D1
4535e20962aSJohn Hubbard     SUNDANCE                 = bindings::PCI_VENDOR_ID_SUNDANCE,                 // 0x13f0
4545e20962aSJohn Hubbard     CMEDIA                   = bindings::PCI_VENDOR_ID_CMEDIA,                   // 0x13f6
4555e20962aSJohn Hubbard     ADVANTECH                = bindings::PCI_VENDOR_ID_ADVANTECH,                // 0x13fe
4565e20962aSJohn Hubbard     MEILHAUS                 = bindings::PCI_VENDOR_ID_MEILHAUS,                 // 0x1402
4575e20962aSJohn Hubbard     LAVA                     = bindings::PCI_VENDOR_ID_LAVA,                     // 0x1407
4585e20962aSJohn Hubbard     TIMEDIA                  = bindings::PCI_VENDOR_ID_TIMEDIA,                  // 0x1409
4595e20962aSJohn Hubbard     ICE                      = bindings::PCI_VENDOR_ID_ICE,                      // 0x1412
4605e20962aSJohn Hubbard     MICROSOFT                = bindings::PCI_VENDOR_ID_MICROSOFT,                // 0x1414
4615e20962aSJohn Hubbard     OXSEMI                   = bindings::PCI_VENDOR_ID_OXSEMI,                   // 0x1415
4625e20962aSJohn Hubbard     CHELSIO                  = bindings::PCI_VENDOR_ID_CHELSIO,                  // 0x1425
4635e20962aSJohn Hubbard     EDIMAX                   = bindings::PCI_VENDOR_ID_EDIMAX,                   // 0x1432
4645e20962aSJohn Hubbard     ADLINK                   = bindings::PCI_VENDOR_ID_ADLINK,                   // 0x144a
4655e20962aSJohn Hubbard     SAMSUNG                  = bindings::PCI_VENDOR_ID_SAMSUNG,                  // 0x144d
4665e20962aSJohn Hubbard     GIGABYTE                 = bindings::PCI_VENDOR_ID_GIGABYTE,                 // 0x1458
4675e20962aSJohn Hubbard     AMBIT                    = bindings::PCI_VENDOR_ID_AMBIT,                    // 0x1468
4685e20962aSJohn Hubbard     MYRICOM                  = bindings::PCI_VENDOR_ID_MYRICOM,                  // 0x14c1
4695e20962aSJohn Hubbard     MEDIATEK                 = bindings::PCI_VENDOR_ID_MEDIATEK,                 // 0x14c3
4705e20962aSJohn Hubbard     TITAN                    = bindings::PCI_VENDOR_ID_TITAN,                    // 0x14D2
4715e20962aSJohn Hubbard     PANACOM                  = bindings::PCI_VENDOR_ID_PANACOM,                  // 0x14d4
4725e20962aSJohn Hubbard     SIPACKETS                = bindings::PCI_VENDOR_ID_SIPACKETS,                // 0x14d9
4735e20962aSJohn Hubbard     AFAVLAB                  = bindings::PCI_VENDOR_ID_AFAVLAB,                  // 0x14db
4745e20962aSJohn Hubbard     AMPLICON                 = bindings::PCI_VENDOR_ID_AMPLICON,                 // 0x14dc
4755e20962aSJohn Hubbard     BCM_GVC                  = bindings::PCI_VENDOR_ID_BCM_GVC,                  // 0x14a4
4765e20962aSJohn Hubbard     BROADCOM                 = bindings::PCI_VENDOR_ID_BROADCOM,                 // 0x14e4
4775e20962aSJohn Hubbard     TOPIC                    = bindings::PCI_VENDOR_ID_TOPIC,                    // 0x151f
4785e20962aSJohn Hubbard     MAINPINE                 = bindings::PCI_VENDOR_ID_MAINPINE,                 // 0x1522
4795e20962aSJohn Hubbard     ENE                      = bindings::PCI_VENDOR_ID_ENE,                      // 0x1524
4805e20962aSJohn Hubbard     SYBA                     = bindings::PCI_VENDOR_ID_SYBA,                     // 0x1592
4815e20962aSJohn Hubbard     MORETON                  = bindings::PCI_VENDOR_ID_MORETON,                  // 0x15aa
4825e20962aSJohn Hubbard     VMWARE                   = bindings::PCI_VENDOR_ID_VMWARE,                   // 0x15ad
4835e20962aSJohn Hubbard     ZOLTRIX                  = bindings::PCI_VENDOR_ID_ZOLTRIX,                  // 0x15b0
4845e20962aSJohn Hubbard     MELLANOX                 = bindings::PCI_VENDOR_ID_MELLANOX,                 // 0x15b3
4855e20962aSJohn Hubbard     DFI                      = bindings::PCI_VENDOR_ID_DFI,                      // 0x15bd
4865e20962aSJohn Hubbard     QUICKNET                 = bindings::PCI_VENDOR_ID_QUICKNET,                 // 0x15e2
4875e20962aSJohn Hubbard     ADDIDATA                 = bindings::PCI_VENDOR_ID_ADDIDATA,                 // 0x15B8
4885e20962aSJohn Hubbard     PDC                      = bindings::PCI_VENDOR_ID_PDC,                      // 0x15e9
4895e20962aSJohn Hubbard     FARSITE                  = bindings::PCI_VENDOR_ID_FARSITE,                  // 0x1619
4905e20962aSJohn Hubbard     ARIMA                    = bindings::PCI_VENDOR_ID_ARIMA,                    // 0x161f
4915e20962aSJohn Hubbard     BROCADE                  = bindings::PCI_VENDOR_ID_BROCADE,                  // 0x1657
4925e20962aSJohn Hubbard     SIBYTE                   = bindings::PCI_VENDOR_ID_SIBYTE,                   // 0x166d
4935e20962aSJohn Hubbard     ATHEROS                  = bindings::PCI_VENDOR_ID_ATHEROS,                  // 0x168c
4945e20962aSJohn Hubbard     NETCELL                  = bindings::PCI_VENDOR_ID_NETCELL,                  // 0x169c
4955e20962aSJohn Hubbard     CENATEK                  = bindings::PCI_VENDOR_ID_CENATEK,                  // 0x16CA
4965e20962aSJohn Hubbard     SYNOPSYS                 = bindings::PCI_VENDOR_ID_SYNOPSYS,                 // 0x16c3
4975e20962aSJohn Hubbard     USR                      = bindings::PCI_VENDOR_ID_USR,                      // 0x16ec
4985e20962aSJohn Hubbard     VITESSE                  = bindings::PCI_VENDOR_ID_VITESSE,                  // 0x1725
4995e20962aSJohn Hubbard     LINKSYS                  = bindings::PCI_VENDOR_ID_LINKSYS,                  // 0x1737
5005e20962aSJohn Hubbard     ALTIMA                   = bindings::PCI_VENDOR_ID_ALTIMA,                   // 0x173b
5015e20962aSJohn Hubbard     CAVIUM                   = bindings::PCI_VENDOR_ID_CAVIUM,                   // 0x177d
5025e20962aSJohn Hubbard     TECHWELL                 = bindings::PCI_VENDOR_ID_TECHWELL,                 // 0x1797
5035e20962aSJohn Hubbard     BELKIN                   = bindings::PCI_VENDOR_ID_BELKIN,                   // 0x1799
5045e20962aSJohn Hubbard     RDC                      = bindings::PCI_VENDOR_ID_RDC,                      // 0x17f3
5055e20962aSJohn Hubbard     GLI                      = bindings::PCI_VENDOR_ID_GLI,                      // 0x17a0
5065e20962aSJohn Hubbard     LENOVO                   = bindings::PCI_VENDOR_ID_LENOVO,                   // 0x17aa
5075e20962aSJohn Hubbard     QCOM                     = bindings::PCI_VENDOR_ID_QCOM,                     // 0x17cb
5085e20962aSJohn Hubbard     CDNS                     = bindings::PCI_VENDOR_ID_CDNS,                     // 0x17cd
5095e20962aSJohn Hubbard     ARECA                    = bindings::PCI_VENDOR_ID_ARECA,                    // 0x17d3
5105e20962aSJohn Hubbard     S2IO                     = bindings::PCI_VENDOR_ID_S2IO,                     // 0x17d5
5115e20962aSJohn Hubbard     SITECOM                  = bindings::PCI_VENDOR_ID_SITECOM,                  // 0x182d
5125e20962aSJohn Hubbard     TOPSPIN                  = bindings::PCI_VENDOR_ID_TOPSPIN,                  // 0x1867
5135e20962aSJohn Hubbard     COMMTECH                 = bindings::PCI_VENDOR_ID_COMMTECH,                 // 0x18f7
5145e20962aSJohn Hubbard     SILAN                    = bindings::PCI_VENDOR_ID_SILAN,                    // 0x1904
5155e20962aSJohn Hubbard     RENESAS                  = bindings::PCI_VENDOR_ID_RENESAS,                  // 0x1912
5165e20962aSJohn Hubbard     SOLARFLARE               = bindings::PCI_VENDOR_ID_SOLARFLARE,               // 0x1924
5175e20962aSJohn Hubbard     TDI                      = bindings::PCI_VENDOR_ID_TDI,                      // 0x192E
5185e20962aSJohn Hubbard     NXP                      = bindings::PCI_VENDOR_ID_NXP,                      // 0x1957
5195e20962aSJohn Hubbard     PASEMI                   = bindings::PCI_VENDOR_ID_PASEMI,                   // 0x1959
5205e20962aSJohn Hubbard     ATTANSIC                 = bindings::PCI_VENDOR_ID_ATTANSIC,                 // 0x1969
5215e20962aSJohn Hubbard     JMICRON                  = bindings::PCI_VENDOR_ID_JMICRON,                  // 0x197B
5225e20962aSJohn Hubbard     KORENIX                  = bindings::PCI_VENDOR_ID_KORENIX,                  // 0x1982
5235e20962aSJohn Hubbard     HUAWEI                   = bindings::PCI_VENDOR_ID_HUAWEI,                   // 0x19e5
5245e20962aSJohn Hubbard     NETRONOME                = bindings::PCI_VENDOR_ID_NETRONOME,                // 0x19ee
5255e20962aSJohn Hubbard     QMI                      = bindings::PCI_VENDOR_ID_QMI,                      // 0x1a32
5265e20962aSJohn Hubbard     AZWAVE                   = bindings::PCI_VENDOR_ID_AZWAVE,                   // 0x1a3b
5275e20962aSJohn Hubbard     REDHAT_QUMRANET          = bindings::PCI_VENDOR_ID_REDHAT_QUMRANET,          // 0x1af4
5285e20962aSJohn Hubbard     ASMEDIA                  = bindings::PCI_VENDOR_ID_ASMEDIA,                  // 0x1b21
5295e20962aSJohn Hubbard     REDHAT                   = bindings::PCI_VENDOR_ID_REDHAT,                   // 0x1b36
5305e20962aSJohn Hubbard     WCHIC                    = bindings::PCI_VENDOR_ID_WCHIC,                    // 0x1c00
5315e20962aSJohn Hubbard     SILICOM_DENMARK          = bindings::PCI_VENDOR_ID_SILICOM_DENMARK,          // 0x1c2c
5325e20962aSJohn Hubbard     AMAZON_ANNAPURNA_LABS    = bindings::PCI_VENDOR_ID_AMAZON_ANNAPURNA_LABS,    // 0x1c36
5335e20962aSJohn Hubbard     CIRCUITCO                = bindings::PCI_VENDOR_ID_CIRCUITCO,                // 0x1cc8
5345e20962aSJohn Hubbard     AMAZON                   = bindings::PCI_VENDOR_ID_AMAZON,                   // 0x1d0f
5355e20962aSJohn Hubbard     ZHAOXIN                  = bindings::PCI_VENDOR_ID_ZHAOXIN,                  // 0x1d17
5365e20962aSJohn Hubbard     ROCKCHIP                 = bindings::PCI_VENDOR_ID_ROCKCHIP,                 // 0x1d87
5375e20962aSJohn Hubbard     HYGON                    = bindings::PCI_VENDOR_ID_HYGON,                    // 0x1d94
5385e20962aSJohn Hubbard     META                     = bindings::PCI_VENDOR_ID_META,                     // 0x1d9b
5395e20962aSJohn Hubbard     FUNGIBLE                 = bindings::PCI_VENDOR_ID_FUNGIBLE,                 // 0x1dad
5405e20962aSJohn Hubbard     HXT                      = bindings::PCI_VENDOR_ID_HXT,                      // 0x1dbf
5415e20962aSJohn Hubbard     TEKRAM                   = bindings::PCI_VENDOR_ID_TEKRAM,                   // 0x1de1
5425e20962aSJohn Hubbard     RPI                      = bindings::PCI_VENDOR_ID_RPI,                      // 0x1de4
5435e20962aSJohn Hubbard     ALIBABA                  = bindings::PCI_VENDOR_ID_ALIBABA,                  // 0x1ded
5445e20962aSJohn Hubbard     CXL                      = bindings::PCI_VENDOR_ID_CXL,                      // 0x1e98
5455e20962aSJohn Hubbard     TEHUTI                   = bindings::PCI_VENDOR_ID_TEHUTI,                   // 0x1fc9
5465e20962aSJohn Hubbard     SUNIX                    = bindings::PCI_VENDOR_ID_SUNIX,                    // 0x1fd4
5475e20962aSJohn Hubbard     HINT                     = bindings::PCI_VENDOR_ID_HINT,                     // 0x3388
5485e20962aSJohn Hubbard     THREEDLABS               = bindings::PCI_VENDOR_ID_3DLABS,                   // 0x3d3d
5495e20962aSJohn Hubbard     NETXEN                   = bindings::PCI_VENDOR_ID_NETXEN,                   // 0x4040
5505e20962aSJohn Hubbard     AKS                      = bindings::PCI_VENDOR_ID_AKS,                      // 0x416c
5515e20962aSJohn Hubbard     WCHCN                    = bindings::PCI_VENDOR_ID_WCHCN,                    // 0x4348
5525e20962aSJohn Hubbard     ACCESSIO                 = bindings::PCI_VENDOR_ID_ACCESSIO,                 // 0x494f
5535e20962aSJohn Hubbard     S3                       = bindings::PCI_VENDOR_ID_S3,                       // 0x5333
5545e20962aSJohn Hubbard     DUNORD                   = bindings::PCI_VENDOR_ID_DUNORD,                   // 0x5544
5555e20962aSJohn Hubbard     DCI                      = bindings::PCI_VENDOR_ID_DCI,                      // 0x6666
5565e20962aSJohn Hubbard     GLENFLY                  = bindings::PCI_VENDOR_ID_GLENFLY,                  // 0x6766
5575e20962aSJohn Hubbard     INTEL                    = bindings::PCI_VENDOR_ID_INTEL,                    // 0x8086
5585e20962aSJohn Hubbard     WANGXUN                  = bindings::PCI_VENDOR_ID_WANGXUN,                  // 0x8088
5595e20962aSJohn Hubbard     SCALEMP                  = bindings::PCI_VENDOR_ID_SCALEMP,                  // 0x8686
5605e20962aSJohn Hubbard     COMPUTONE                = bindings::PCI_VENDOR_ID_COMPUTONE,                // 0x8e0e
5615e20962aSJohn Hubbard     KTI                      = bindings::PCI_VENDOR_ID_KTI,                      // 0x8e2e
5625e20962aSJohn Hubbard     ADAPTEC                  = bindings::PCI_VENDOR_ID_ADAPTEC,                  // 0x9004
5635e20962aSJohn Hubbard     ADAPTEC2                 = bindings::PCI_VENDOR_ID_ADAPTEC2,                 // 0x9005
5645e20962aSJohn Hubbard     HOLTEK                   = bindings::PCI_VENDOR_ID_HOLTEK,                   // 0x9412
5655e20962aSJohn Hubbard     NETMOS                   = bindings::PCI_VENDOR_ID_NETMOS,                   // 0x9710
5665e20962aSJohn Hubbard     THREECOM_2               = bindings::PCI_VENDOR_ID_3COM_2,                   // 0xa727
5675e20962aSJohn Hubbard     SOLIDRUN                 = bindings::PCI_VENDOR_ID_SOLIDRUN,                 // 0xd063
5685e20962aSJohn Hubbard     DIGIUM                   = bindings::PCI_VENDOR_ID_DIGIUM,                   // 0xd161
5695e20962aSJohn Hubbard     TIGERJET                 = bindings::PCI_VENDOR_ID_TIGERJET,                 // 0xe159
5705e20962aSJohn Hubbard     XILINX_RME               = bindings::PCI_VENDOR_ID_XILINX_RME,               // 0xea60
5715e20962aSJohn Hubbard     XEN                      = bindings::PCI_VENDOR_ID_XEN,                      // 0x5853
5725e20962aSJohn Hubbard     OCZ                      = bindings::PCI_VENDOR_ID_OCZ,                      // 0x1b85
5735e20962aSJohn Hubbard     NCUBE                    = bindings::PCI_VENDOR_ID_NCUBE,                    // 0x10ff
5745e20962aSJohn Hubbard }
575