[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <aKznsxvFqW_2jJkv@archiso>
Date: Mon, 25 Aug 2025 22:47:40 +0000
From: Elle Rhumsaa <elle@...thered-steel.dev>
To: John Hubbard <jhubbard@...dia.com>
Cc: Danilo Krummrich <dakr@...nel.org>,
Alexandre Courbot <acourbot@...dia.com>,
Joel Fernandes <joelagnelf@...dia.com>,
Timur Tabi <ttabi@...dia.com>, Alistair Popple <apopple@...dia.com>,
David Airlie <airlied@...il.com>, Simona Vetter <simona@...ll.ch>,
Bjorn Helgaas <bhelgaas@...gle.com>,
Krzysztof Wilczyński <kwilczynski@...nel.org>,
Miguel Ojeda <ojeda@...nel.org>,
Alex Gaynor <alex.gaynor@...il.com>,
Boqun Feng <boqun.feng@...il.com>, Gary Guo <gary@...yguo.net>,
Björn Roy Baron <bjorn3_gh@...tonmail.com>,
Benno Lossin <lossin@...nel.org>,
Andreas Hindborg <a.hindborg@...nel.org>,
Alice Ryhl <aliceryhl@...gle.com>, Trevor Gross <tmgross@...ch.edu>,
nouveau@...ts.freedesktop.org, linux-pci@...r.kernel.org,
rust-for-linux@...r.kernel.org, LKML <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH v5 2/4] rust: pci: provide access to PCI Vendor values
On Wed, Aug 20, 2025 at 09:42:05PM -0700, John Hubbard wrote:
> This allows callers to write Vendor::SOME_COMPANY instead of
> bindings::PCI_VENDOR_ID_SOME_COMPANY.
>
> New APIs:
> Vendor::SOME_COMPANY
> Vendor::as_raw()
> Vendor: From<u32> for Vendor
>
> Cc: Danilo Krummrich <dakr@...nel.org>
> Cc: Alexandre Courbot <acourbot@...dia.com>
> Cc: Elle Rhumsaa <elle@...thered-steel.dev>
> Signed-off-by: John Hubbard <jhubbard@...dia.com>
> ---
> rust/kernel/pci.rs | 2 +-
> rust/kernel/pci/id.rs | 355 +++++++++++++++++++++++++++++++++++++++++-
> 2 files changed, 355 insertions(+), 2 deletions(-)
>
> diff --git a/rust/kernel/pci.rs b/rust/kernel/pci.rs
> index 0faec49bf8a2..d4675b7d4a86 100644
> --- a/rust/kernel/pci.rs
> +++ b/rust/kernel/pci.rs
> @@ -25,7 +25,7 @@
>
> mod id;
>
> -pub use self::id::{Class, ClassMask};
> +pub use self::id::{Class, ClassMask, Vendor};
>
> /// An adapter for the registration of PCI drivers.
> pub struct Adapter<T: Driver>(T);
> diff --git a/rust/kernel/pci/id.rs b/rust/kernel/pci/id.rs
> index 1291553b4e15..dd91e25a6890 100644
> --- a/rust/kernel/pci/id.rs
> +++ b/rust/kernel/pci/id.rs
> @@ -2,7 +2,7 @@
>
> //! PCI device identifiers and related types.
> //!
> -//! This module contains PCI class codes and supporting types.
> +//! This module contains PCI class codes, Vendor IDs, and supporting types.
>
> use crate::{bindings, error::code::EINVAL, error::Error, prelude::*};
> use core::fmt;
> @@ -115,6 +115,74 @@ fn try_from(value: u32) -> Result<Self, Self::Error> {
> }
> }
>
> +/// PCI vendor IDs.
> +///
> +/// Each entry contains the 16-bit PCI vendor ID as assigned by the PCI SIG.
> +///
> +/// # Examples
> +///
> +/// ```
> +/// # use kernel::{device::Core, pci::{self, Vendor}, prelude::*};
> +/// fn log_device_info(pdev: &pci::Device<Core>) -> Result<()> {
> +/// // Get the raw PCI vendor ID and convert to Vendor
> +/// let vendor_id = pdev.vendor_id();
> +/// let vendor = Vendor::new(vendor_id.into());
> +/// dev_info!(
> +/// pdev.as_ref(),
> +/// "Device: Vendor={}, Device=0x{:x}\n",
> +/// vendor,
> +/// pdev.device_id()
> +/// );
> +/// Ok(())
> +/// }
> +/// ```
> +#[derive(Debug, Clone, Copy, PartialEq, Eq)]
> +#[repr(transparent)]
> +pub struct Vendor(u32);
> +
> +macro_rules! define_all_pci_vendors {
> + (
> + $($variant:ident = $binding:expr,)+
> + ) => {
> +
> + impl Vendor {
> + $(
> + #[allow(missing_docs)]
> + pub const $variant: Self = Self($binding as u32);
> + )+
> + }
> +
> + /// Convert a raw 16-bit vendor ID to a `Vendor`.
> + impl From<u32> for Vendor {
> + fn from(value: u32) -> Self {
> + match value {
> + $(x if x == Self::$variant.0 => Self::$variant,)+
> + _ => Self::UNKNOWN,
> + }
> + }
> + }
> + };
> +}
> +
> +/// Once constructed, a `Vendor` contains a valid PCI Vendor ID.
> +impl Vendor {
> + /// Create a new Vendor from a raw 16-bit vendor ID.
> + pub fn new(vendor_id: u32) -> Self {
> + Self::from(vendor_id)
> + }
Reversing this implementation would allow for a signature:
```rust
pub const fn new(vendor_id: u32) -> Self {
...
}
```
Which would allow use in `const` contexts. Until we get a stable
`const-trait` impl, this is kind of the best workaround.
Then, the `From<u32>` implementation can call `Self::new`.
Not really applicable here, but you can also provide a `Default`
implementation for `Self::new` with no parameters.
> +
> + /// Get the raw 16-bit vendor ID value.
> + pub const fn as_raw(self) -> u32 {
> + self.0
> + }
> +}
> +
> +impl fmt::Display for Vendor {
> + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
> + write!(f, "0x{:04x}", self.0)
> + }
> +}
> +
> define_all_pci_classes! {
> NOT_DEFINED = bindings::PCI_CLASS_NOT_DEFINED, // 0x000000
> NOT_DEFINED_VGA = bindings::PCI_CLASS_NOT_DEFINED_VGA, // 0x000100
> @@ -237,3 +305,288 @@ fn try_from(value: u32) -> Result<Self, Self::Error> {
> OTHERS = bindings::PCI_CLASS_OTHERS, // 0xff0000
> UNKNOWN = 0xffffff,
> }
> +
> +define_all_pci_vendors! {
> + PCI_SIG = bindings::PCI_VENDOR_ID_PCI_SIG, // 0x0001
> + LOONGSON = bindings::PCI_VENDOR_ID_LOONGSON, // 0x0014
> + SOLIDIGM = bindings::PCI_VENDOR_ID_SOLIDIGM, // 0x025e
> + TTTECH = bindings::PCI_VENDOR_ID_TTTECH, // 0x0357
> + DYNALINK = bindings::PCI_VENDOR_ID_DYNALINK, // 0x0675
> + UBIQUITI = bindings::PCI_VENDOR_ID_UBIQUITI, // 0x0777
> + BERKOM = bindings::PCI_VENDOR_ID_BERKOM, // 0x0871
> + ITTIM = bindings::PCI_VENDOR_ID_ITTIM, // 0x0b48
> + COMPAQ = bindings::PCI_VENDOR_ID_COMPAQ, // 0x0e11
> + LSI_LOGIC = bindings::PCI_VENDOR_ID_LSI_LOGIC, // 0x1000
> + ATI = bindings::PCI_VENDOR_ID_ATI, // 0x1002
> + VLSI = bindings::PCI_VENDOR_ID_VLSI, // 0x1004
> + ADL = bindings::PCI_VENDOR_ID_ADL, // 0x1005
> + NS = bindings::PCI_VENDOR_ID_NS, // 0x100b
> + TSENG = bindings::PCI_VENDOR_ID_TSENG, // 0x100c
> + WEITEK = bindings::PCI_VENDOR_ID_WEITEK, // 0x100e
> + DEC = bindings::PCI_VENDOR_ID_DEC, // 0x1011
> + CIRRUS = bindings::PCI_VENDOR_ID_CIRRUS, // 0x1013
> + IBM = bindings::PCI_VENDOR_ID_IBM, // 0x1014
> + UNISYS = bindings::PCI_VENDOR_ID_UNISYS, // 0x1018
> + COMPEX2 = bindings::PCI_VENDOR_ID_COMPEX2, // 0x101a
> + WD = bindings::PCI_VENDOR_ID_WD, // 0x101c
> + AMI = bindings::PCI_VENDOR_ID_AMI, // 0x101e
> + AMD = bindings::PCI_VENDOR_ID_AMD, // 0x1022
> + TRIDENT = bindings::PCI_VENDOR_ID_TRIDENT, // 0x1023
> + AI = bindings::PCI_VENDOR_ID_AI, // 0x1025
> + DELL = bindings::PCI_VENDOR_ID_DELL, // 0x1028
> + MATROX = bindings::PCI_VENDOR_ID_MATROX, // 0x102B
> + MOBILITY_ELECTRONICS = bindings::PCI_VENDOR_ID_MOBILITY_ELECTRONICS, // 0x14f2
> + CT = bindings::PCI_VENDOR_ID_CT, // 0x102c
> + MIRO = bindings::PCI_VENDOR_ID_MIRO, // 0x1031
> + NEC = bindings::PCI_VENDOR_ID_NEC, // 0x1033
> + FD = bindings::PCI_VENDOR_ID_FD, // 0x1036
> + SI = bindings::PCI_VENDOR_ID_SI, // 0x1039
> + HP = bindings::PCI_VENDOR_ID_HP, // 0x103c
> + HP_3PAR = bindings::PCI_VENDOR_ID_HP_3PAR, // 0x1590
> + PCTECH = bindings::PCI_VENDOR_ID_PCTECH, // 0x1042
> + ASUSTEK = bindings::PCI_VENDOR_ID_ASUSTEK, // 0x1043
> + DPT = bindings::PCI_VENDOR_ID_DPT, // 0x1044
> + OPTI = bindings::PCI_VENDOR_ID_OPTI, // 0x1045
> + ELSA = bindings::PCI_VENDOR_ID_ELSA, // 0x1048
> + STMICRO = bindings::PCI_VENDOR_ID_STMICRO, // 0x104A
> + BUSLOGIC = bindings::PCI_VENDOR_ID_BUSLOGIC, // 0x104B
> + TI = bindings::PCI_VENDOR_ID_TI, // 0x104c
> + SONY = bindings::PCI_VENDOR_ID_SONY, // 0x104d
> + WINBOND2 = bindings::PCI_VENDOR_ID_WINBOND2, // 0x1050
> + ANIGMA = bindings::PCI_VENDOR_ID_ANIGMA, // 0x1051
> + EFAR = bindings::PCI_VENDOR_ID_EFAR, // 0x1055
> + MOTOROLA = bindings::PCI_VENDOR_ID_MOTOROLA, // 0x1057
> + PROMISE = bindings::PCI_VENDOR_ID_PROMISE, // 0x105a
> + FOXCONN = bindings::PCI_VENDOR_ID_FOXCONN, // 0x105b
> + UMC = bindings::PCI_VENDOR_ID_UMC, // 0x1060
> + PICOPOWER = bindings::PCI_VENDOR_ID_PICOPOWER, // 0x1066
> + MYLEX = bindings::PCI_VENDOR_ID_MYLEX, // 0x1069
> + APPLE = bindings::PCI_VENDOR_ID_APPLE, // 0x106b
> + YAMAHA = bindings::PCI_VENDOR_ID_YAMAHA, // 0x1073
> + QLOGIC = bindings::PCI_VENDOR_ID_QLOGIC, // 0x1077
> + CYRIX = bindings::PCI_VENDOR_ID_CYRIX, // 0x1078
> + CONTAQ = bindings::PCI_VENDOR_ID_CONTAQ, // 0x1080
> + OLICOM = bindings::PCI_VENDOR_ID_OLICOM, // 0x108d
> + SUN = bindings::PCI_VENDOR_ID_SUN, // 0x108e
> + NI = bindings::PCI_VENDOR_ID_NI, // 0x1093
> + CMD = bindings::PCI_VENDOR_ID_CMD, // 0x1095
> + BROOKTREE = bindings::PCI_VENDOR_ID_BROOKTREE, // 0x109e
> + SGI = bindings::PCI_VENDOR_ID_SGI, // 0x10a9
> + WINBOND = bindings::PCI_VENDOR_ID_WINBOND, // 0x10ad
> + PLX = bindings::PCI_VENDOR_ID_PLX, // 0x10b5
> + MADGE = bindings::PCI_VENDOR_ID_MADGE, // 0x10b6
> + THREECOM = bindings::PCI_VENDOR_ID_3COM, // 0x10b7
> + AL = bindings::PCI_VENDOR_ID_AL, // 0x10b9
> + NEOMAGIC = bindings::PCI_VENDOR_ID_NEOMAGIC, // 0x10c8
> + TCONRAD = bindings::PCI_VENDOR_ID_TCONRAD, // 0x10da
> + ROHM = bindings::PCI_VENDOR_ID_ROHM, // 0x10db
> + NVIDIA = bindings::PCI_VENDOR_ID_NVIDIA, // 0x10de
> + IMS = bindings::PCI_VENDOR_ID_IMS, // 0x10e0
> + AMCC = bindings::PCI_VENDOR_ID_AMCC, // 0x10e8
> + AMPERE = bindings::PCI_VENDOR_ID_AMPERE, // 0x1def
> + INTERG = bindings::PCI_VENDOR_ID_INTERG, // 0x10ea
> + REALTEK = bindings::PCI_VENDOR_ID_REALTEK, // 0x10ec
> + XILINX = bindings::PCI_VENDOR_ID_XILINX, // 0x10ee
> + INIT = bindings::PCI_VENDOR_ID_INIT, // 0x1101
> + CREATIVE = bindings::PCI_VENDOR_ID_CREATIVE, // 0x1102
> + TTI = bindings::PCI_VENDOR_ID_TTI, // 0x1103
> + SIGMA = bindings::PCI_VENDOR_ID_SIGMA, // 0x1105
> + VIA = bindings::PCI_VENDOR_ID_VIA, // 0x1106
> + SIEMENS = bindings::PCI_VENDOR_ID_SIEMENS, // 0x110A
> + VORTEX = bindings::PCI_VENDOR_ID_VORTEX, // 0x1119
> + EF = bindings::PCI_VENDOR_ID_EF, // 0x111a
> + IDT = bindings::PCI_VENDOR_ID_IDT, // 0x111d
> + FORE = bindings::PCI_VENDOR_ID_FORE, // 0x1127
> + PHILIPS = bindings::PCI_VENDOR_ID_PHILIPS, // 0x1131
> + EICON = bindings::PCI_VENDOR_ID_EICON, // 0x1133
> + CISCO = bindings::PCI_VENDOR_ID_CISCO, // 0x1137
> + ZIATECH = bindings::PCI_VENDOR_ID_ZIATECH, // 0x1138
> + SYSKONNECT = bindings::PCI_VENDOR_ID_SYSKONNECT, // 0x1148
> + DIGI = bindings::PCI_VENDOR_ID_DIGI, // 0x114f
> + XIRCOM = bindings::PCI_VENDOR_ID_XIRCOM, // 0x115d
> + SERVERWORKS = bindings::PCI_VENDOR_ID_SERVERWORKS, // 0x1166
> + ALTERA = bindings::PCI_VENDOR_ID_ALTERA, // 0x1172
> + SBE = bindings::PCI_VENDOR_ID_SBE, // 0x1176
> + TOSHIBA = bindings::PCI_VENDOR_ID_TOSHIBA, // 0x1179
> + TOSHIBA_2 = bindings::PCI_VENDOR_ID_TOSHIBA_2, // 0x102f
> + ATTO = bindings::PCI_VENDOR_ID_ATTO, // 0x117c
> + RICOH = bindings::PCI_VENDOR_ID_RICOH, // 0x1180
> + DLINK = bindings::PCI_VENDOR_ID_DLINK, // 0x1186
> + ARTOP = bindings::PCI_VENDOR_ID_ARTOP, // 0x1191
> + ZEITNET = bindings::PCI_VENDOR_ID_ZEITNET, // 0x1193
> + FUJITSU_ME = bindings::PCI_VENDOR_ID_FUJITSU_ME, // 0x119e
> + MARVELL = bindings::PCI_VENDOR_ID_MARVELL, // 0x11ab
> + MARVELL_EXT = bindings::PCI_VENDOR_ID_MARVELL_EXT, // 0x1b4b
> + V3 = bindings::PCI_VENDOR_ID_V3, // 0x11b0
> + ATT = bindings::PCI_VENDOR_ID_ATT, // 0x11c1
> + SPECIALIX = bindings::PCI_VENDOR_ID_SPECIALIX, // 0x11cb
> + ANALOG_DEVICES = bindings::PCI_VENDOR_ID_ANALOG_DEVICES, // 0x11d4
> + ZORAN = bindings::PCI_VENDOR_ID_ZORAN, // 0x11de
> + COMPEX = bindings::PCI_VENDOR_ID_COMPEX, // 0x11f6
> + MICROSEMI = bindings::PCI_VENDOR_ID_MICROSEMI, // 0x11f8
> + RP = bindings::PCI_VENDOR_ID_RP, // 0x11fe
> + CYCLADES = bindings::PCI_VENDOR_ID_CYCLADES, // 0x120e
> + ESSENTIAL = bindings::PCI_VENDOR_ID_ESSENTIAL, // 0x120f
> + O2 = bindings::PCI_VENDOR_ID_O2, // 0x1217
> + THREEDX = bindings::PCI_VENDOR_ID_3DFX, // 0x121a
> + AVM = bindings::PCI_VENDOR_ID_AVM, // 0x1244
> + STALLION = bindings::PCI_VENDOR_ID_STALLION, // 0x124d
> + AT = bindings::PCI_VENDOR_ID_AT, // 0x1259
> + ASIX = bindings::PCI_VENDOR_ID_ASIX, // 0x125b
> + ESS = bindings::PCI_VENDOR_ID_ESS, // 0x125d
> + SATSAGEM = bindings::PCI_VENDOR_ID_SATSAGEM, // 0x1267
> + ENSONIQ = bindings::PCI_VENDOR_ID_ENSONIQ, // 0x1274
> + TRANSMETA = bindings::PCI_VENDOR_ID_TRANSMETA, // 0x1279
> + ROCKWELL = bindings::PCI_VENDOR_ID_ROCKWELL, // 0x127A
> + ITE = bindings::PCI_VENDOR_ID_ITE, // 0x1283
> + ALTEON = bindings::PCI_VENDOR_ID_ALTEON, // 0x12ae
> + NVIDIA_SGS = bindings::PCI_VENDOR_ID_NVIDIA_SGS, // 0x12d2
> + PERICOM = bindings::PCI_VENDOR_ID_PERICOM, // 0x12D8
> + AUREAL = bindings::PCI_VENDOR_ID_AUREAL, // 0x12eb
> + ELECTRONICDESIGNGMBH = bindings::PCI_VENDOR_ID_ELECTRONICDESIGNGMBH, // 0x12f8
> + ESDGMBH = bindings::PCI_VENDOR_ID_ESDGMBH, // 0x12fe
> + CB = bindings::PCI_VENDOR_ID_CB, // 0x1307
> + SIIG = bindings::PCI_VENDOR_ID_SIIG, // 0x131f
> + RADISYS = bindings::PCI_VENDOR_ID_RADISYS, // 0x1331
> + MICRO_MEMORY = bindings::PCI_VENDOR_ID_MICRO_MEMORY, // 0x1332
> + DOMEX = bindings::PCI_VENDOR_ID_DOMEX, // 0x134a
> + INTASHIELD = bindings::PCI_VENDOR_ID_INTASHIELD, // 0x135a
> + QUATECH = bindings::PCI_VENDOR_ID_QUATECH, // 0x135C
> + SEALEVEL = bindings::PCI_VENDOR_ID_SEALEVEL, // 0x135e
> + HYPERCOPE = bindings::PCI_VENDOR_ID_HYPERCOPE, // 0x1365
> + DIGIGRAM = bindings::PCI_VENDOR_ID_DIGIGRAM, // 0x1369
> + KAWASAKI = bindings::PCI_VENDOR_ID_KAWASAKI, // 0x136b
> + CNET = bindings::PCI_VENDOR_ID_CNET, // 0x1371
> + LMC = bindings::PCI_VENDOR_ID_LMC, // 0x1376
> + NETGEAR = bindings::PCI_VENDOR_ID_NETGEAR, // 0x1385
> + APPLICOM = bindings::PCI_VENDOR_ID_APPLICOM, // 0x1389
> + MOXA = bindings::PCI_VENDOR_ID_MOXA, // 0x1393
> + CCD = bindings::PCI_VENDOR_ID_CCD, // 0x1397
> + EXAR = bindings::PCI_VENDOR_ID_EXAR, // 0x13a8
> + MICROGATE = bindings::PCI_VENDOR_ID_MICROGATE, // 0x13c0
> + THREEWARE = bindings::PCI_VENDOR_ID_3WARE, // 0x13C1
> + IOMEGA = bindings::PCI_VENDOR_ID_IOMEGA, // 0x13ca
> + ABOCOM = bindings::PCI_VENDOR_ID_ABOCOM, // 0x13D1
> + SUNDANCE = bindings::PCI_VENDOR_ID_SUNDANCE, // 0x13f0
> + CMEDIA = bindings::PCI_VENDOR_ID_CMEDIA, // 0x13f6
> + ADVANTECH = bindings::PCI_VENDOR_ID_ADVANTECH, // 0x13fe
> + MEILHAUS = bindings::PCI_VENDOR_ID_MEILHAUS, // 0x1402
> + LAVA = bindings::PCI_VENDOR_ID_LAVA, // 0x1407
> + TIMEDIA = bindings::PCI_VENDOR_ID_TIMEDIA, // 0x1409
> + ICE = bindings::PCI_VENDOR_ID_ICE, // 0x1412
> + MICROSOFT = bindings::PCI_VENDOR_ID_MICROSOFT, // 0x1414
> + OXSEMI = bindings::PCI_VENDOR_ID_OXSEMI, // 0x1415
> + CHELSIO = bindings::PCI_VENDOR_ID_CHELSIO, // 0x1425
> + EDIMAX = bindings::PCI_VENDOR_ID_EDIMAX, // 0x1432
> + ADLINK = bindings::PCI_VENDOR_ID_ADLINK, // 0x144a
> + SAMSUNG = bindings::PCI_VENDOR_ID_SAMSUNG, // 0x144d
> + GIGABYTE = bindings::PCI_VENDOR_ID_GIGABYTE, // 0x1458
> + AMBIT = bindings::PCI_VENDOR_ID_AMBIT, // 0x1468
> + MYRICOM = bindings::PCI_VENDOR_ID_MYRICOM, // 0x14c1
> + MEDIATEK = bindings::PCI_VENDOR_ID_MEDIATEK, // 0x14c3
> + TITAN = bindings::PCI_VENDOR_ID_TITAN, // 0x14D2
> + PANACOM = bindings::PCI_VENDOR_ID_PANACOM, // 0x14d4
> + SIPACKETS = bindings::PCI_VENDOR_ID_SIPACKETS, // 0x14d9
> + AFAVLAB = bindings::PCI_VENDOR_ID_AFAVLAB, // 0x14db
> + AMPLICON = bindings::PCI_VENDOR_ID_AMPLICON, // 0x14dc
> + BCM_GVC = bindings::PCI_VENDOR_ID_BCM_GVC, // 0x14a4
> + BROADCOM = bindings::PCI_VENDOR_ID_BROADCOM, // 0x14e4
> + TOPIC = bindings::PCI_VENDOR_ID_TOPIC, // 0x151f
> + MAINPINE = bindings::PCI_VENDOR_ID_MAINPINE, // 0x1522
> + ENE = bindings::PCI_VENDOR_ID_ENE, // 0x1524
> + SYBA = bindings::PCI_VENDOR_ID_SYBA, // 0x1592
> + MORETON = bindings::PCI_VENDOR_ID_MORETON, // 0x15aa
> + VMWARE = bindings::PCI_VENDOR_ID_VMWARE, // 0x15ad
> + ZOLTRIX = bindings::PCI_VENDOR_ID_ZOLTRIX, // 0x15b0
> + MELLANOX = bindings::PCI_VENDOR_ID_MELLANOX, // 0x15b3
> + DFI = bindings::PCI_VENDOR_ID_DFI, // 0x15bd
> + QUICKNET = bindings::PCI_VENDOR_ID_QUICKNET, // 0x15e2
> + ADDIDATA = bindings::PCI_VENDOR_ID_ADDIDATA, // 0x15B8
> + PDC = bindings::PCI_VENDOR_ID_PDC, // 0x15e9
> + FARSITE = bindings::PCI_VENDOR_ID_FARSITE, // 0x1619
> + ARIMA = bindings::PCI_VENDOR_ID_ARIMA, // 0x161f
> + BROCADE = bindings::PCI_VENDOR_ID_BROCADE, // 0x1657
> + SIBYTE = bindings::PCI_VENDOR_ID_SIBYTE, // 0x166d
> + ATHEROS = bindings::PCI_VENDOR_ID_ATHEROS, // 0x168c
> + NETCELL = bindings::PCI_VENDOR_ID_NETCELL, // 0x169c
> + CENATEK = bindings::PCI_VENDOR_ID_CENATEK, // 0x16CA
> + SYNOPSYS = bindings::PCI_VENDOR_ID_SYNOPSYS, // 0x16c3
> + USR = bindings::PCI_VENDOR_ID_USR, // 0x16ec
> + VITESSE = bindings::PCI_VENDOR_ID_VITESSE, // 0x1725
> + LINKSYS = bindings::PCI_VENDOR_ID_LINKSYS, // 0x1737
> + ALTIMA = bindings::PCI_VENDOR_ID_ALTIMA, // 0x173b
> + CAVIUM = bindings::PCI_VENDOR_ID_CAVIUM, // 0x177d
> + TECHWELL = bindings::PCI_VENDOR_ID_TECHWELL, // 0x1797
> + BELKIN = bindings::PCI_VENDOR_ID_BELKIN, // 0x1799
> + RDC = bindings::PCI_VENDOR_ID_RDC, // 0x17f3
> + GLI = bindings::PCI_VENDOR_ID_GLI, // 0x17a0
> + LENOVO = bindings::PCI_VENDOR_ID_LENOVO, // 0x17aa
> + QCOM = bindings::PCI_VENDOR_ID_QCOM, // 0x17cb
> + CDNS = bindings::PCI_VENDOR_ID_CDNS, // 0x17cd
> + ARECA = bindings::PCI_VENDOR_ID_ARECA, // 0x17d3
> + S2IO = bindings::PCI_VENDOR_ID_S2IO, // 0x17d5
> + SITECOM = bindings::PCI_VENDOR_ID_SITECOM, // 0x182d
> + TOPSPIN = bindings::PCI_VENDOR_ID_TOPSPIN, // 0x1867
> + COMMTECH = bindings::PCI_VENDOR_ID_COMMTECH, // 0x18f7
> + SILAN = bindings::PCI_VENDOR_ID_SILAN, // 0x1904
> + RENESAS = bindings::PCI_VENDOR_ID_RENESAS, // 0x1912
> + SOLARFLARE = bindings::PCI_VENDOR_ID_SOLARFLARE, // 0x1924
> + TDI = bindings::PCI_VENDOR_ID_TDI, // 0x192E
> + NXP = bindings::PCI_VENDOR_ID_NXP, // 0x1957
> + PASEMI = bindings::PCI_VENDOR_ID_PASEMI, // 0x1959
> + ATTANSIC = bindings::PCI_VENDOR_ID_ATTANSIC, // 0x1969
> + JMICRON = bindings::PCI_VENDOR_ID_JMICRON, // 0x197B
> + KORENIX = bindings::PCI_VENDOR_ID_KORENIX, // 0x1982
> + HUAWEI = bindings::PCI_VENDOR_ID_HUAWEI, // 0x19e5
> + NETRONOME = bindings::PCI_VENDOR_ID_NETRONOME, // 0x19ee
> + QMI = bindings::PCI_VENDOR_ID_QMI, // 0x1a32
> + AZWAVE = bindings::PCI_VENDOR_ID_AZWAVE, // 0x1a3b
> + REDHAT_QUMRANET = bindings::PCI_VENDOR_ID_REDHAT_QUMRANET, // 0x1af4
> + ASMEDIA = bindings::PCI_VENDOR_ID_ASMEDIA, // 0x1b21
> + REDHAT = bindings::PCI_VENDOR_ID_REDHAT, // 0x1b36
> + WCHIC = bindings::PCI_VENDOR_ID_WCHIC, // 0x1c00
> + SILICOM_DENMARK = bindings::PCI_VENDOR_ID_SILICOM_DENMARK, // 0x1c2c
> + AMAZON_ANNAPURNA_LABS = bindings::PCI_VENDOR_ID_AMAZON_ANNAPURNA_LABS, // 0x1c36
> + CIRCUITCO = bindings::PCI_VENDOR_ID_CIRCUITCO, // 0x1cc8
> + AMAZON = bindings::PCI_VENDOR_ID_AMAZON, // 0x1d0f
> + ZHAOXIN = bindings::PCI_VENDOR_ID_ZHAOXIN, // 0x1d17
> + ROCKCHIP = bindings::PCI_VENDOR_ID_ROCKCHIP, // 0x1d87
> + HYGON = bindings::PCI_VENDOR_ID_HYGON, // 0x1d94
> + META = bindings::PCI_VENDOR_ID_META, // 0x1d9b
> + FUNGIBLE = bindings::PCI_VENDOR_ID_FUNGIBLE, // 0x1dad
> + HXT = bindings::PCI_VENDOR_ID_HXT, // 0x1dbf
> + TEKRAM = bindings::PCI_VENDOR_ID_TEKRAM, // 0x1de1
> + RPI = bindings::PCI_VENDOR_ID_RPI, // 0x1de4
> + ALIBABA = bindings::PCI_VENDOR_ID_ALIBABA, // 0x1ded
> + CXL = bindings::PCI_VENDOR_ID_CXL, // 0x1e98
> + TEHUTI = bindings::PCI_VENDOR_ID_TEHUTI, // 0x1fc9
> + SUNIX = bindings::PCI_VENDOR_ID_SUNIX, // 0x1fd4
> + HINT = bindings::PCI_VENDOR_ID_HINT, // 0x3388
> + THREEDLABS = bindings::PCI_VENDOR_ID_3DLABS, // 0x3d3d
> + NETXEN = bindings::PCI_VENDOR_ID_NETXEN, // 0x4040
> + AKS = bindings::PCI_VENDOR_ID_AKS, // 0x416c
> + WCHCN = bindings::PCI_VENDOR_ID_WCHCN, // 0x4348
> + ACCESSIO = bindings::PCI_VENDOR_ID_ACCESSIO, // 0x494f
> + S3 = bindings::PCI_VENDOR_ID_S3, // 0x5333
> + DUNORD = bindings::PCI_VENDOR_ID_DUNORD, // 0x5544
> + DCI = bindings::PCI_VENDOR_ID_DCI, // 0x6666
> + GLENFLY = bindings::PCI_VENDOR_ID_GLENFLY, // 0x6766
> + INTEL = bindings::PCI_VENDOR_ID_INTEL, // 0x8086
> + WANGXUN = bindings::PCI_VENDOR_ID_WANGXUN, // 0x8088
> + SCALEMP = bindings::PCI_VENDOR_ID_SCALEMP, // 0x8686
> + COMPUTONE = bindings::PCI_VENDOR_ID_COMPUTONE, // 0x8e0e
> + KTI = bindings::PCI_VENDOR_ID_KTI, // 0x8e2e
> + ADAPTEC = bindings::PCI_VENDOR_ID_ADAPTEC, // 0x9004
> + ADAPTEC2 = bindings::PCI_VENDOR_ID_ADAPTEC2, // 0x9005
> + HOLTEK = bindings::PCI_VENDOR_ID_HOLTEK, // 0x9412
> + NETMOS = bindings::PCI_VENDOR_ID_NETMOS, // 0x9710
> + THREECOM_2 = bindings::PCI_VENDOR_ID_3COM_2, // 0xa727
> + SOLIDRUN = bindings::PCI_VENDOR_ID_SOLIDRUN, // 0xd063
> + DIGIUM = bindings::PCI_VENDOR_ID_DIGIUM, // 0xd161
> + TIGERJET = bindings::PCI_VENDOR_ID_TIGERJET, // 0xe159
> + XILINX_RME = bindings::PCI_VENDOR_ID_XILINX_RME, // 0xea60
> + XEN = bindings::PCI_VENDOR_ID_XEN, // 0x5853
> + OCZ = bindings::PCI_VENDOR_ID_OCZ, // 0x1b85
> + NCUBE = bindings::PCI_VENDOR_ID_NCUBE, // 0x10ff
> + UNKNOWN = 0xffff,
> +}
> --
> 2.50.1
Reviewed-by: Elle Rhumsaa <elle@...thered-steel.dev>
Powered by blists - more mailing lists