5.2. PCI drivers — The Linux Kernel 5.18.5-gnu-1 documentation

# 5.2. PCI drivers

The PCI boards are identified by an identification called PCI ID. The PCI ID is actually composed by two parts:

> - Vendor ID and device ID;

> - Subsystem ID and Subsystem device ID;

The `lspci -nn` command allows identifying the vendor/device PCI IDs:

     $ lspci -nn
     ...
     00:0a.0 Multimedia controller [0480]: Philips Semiconductors SAA7131/SAA7133/SAA7135 Video Broadcast Decoder [1131:7133] (rev d1)
     00:0b.0 Multimedia controller [0480]: Brooktree Corporation Bt878 Audio Capture [109e:0878] (rev 11)
     01:00.0 Multimedia video controller [0400]: Conexant Systems, Inc. CX23887/8 PCIe Broadcast Audio and Video Decoder with 3D Comb [14f1:8880] (rev 0f)
     02:01.0 Multimedia video controller [0400]: Internext Compression Inc iTVC15 (CX23415) Video Decoder [4444:0803] (rev 01)
     02:02.0 Multimedia video controller [0400]: Conexant Systems, Inc. CX23418 Single-Chip MPEG-2 Encoder with Integrated Analog Video/Broadcast Audio Decoder [14f1:5b7a]
     02:03.0 Multimedia video controller [0400]: Brooktree Corporation Bt878 Video Capture [109e:036e] (rev 11)
     ...

The subsystem IDs can be obtained using `lspci -vn`

     $ lspci -vn
     ...
         00:0a.0 0480: 1131:7133 (rev d1)
                 Subsystem: 1461:f01d
                 Flags: bus master, medium devsel, latency 32, IRQ 209
                 Memory at e2002000 (32-bit, non-prefetchable) [size=2K]
                 Capabilities: [40] Power Management version 2
     ...

At the above example, the first card uses the `saa7134` driver, and has a vendor/device PCI ID equal to `1131:7133` and a PCI subsystem ID equal to `1461:f01d` (see Saa7134 card list).

Unfortunately, sometimes the same PCI subsystem ID is used by different products. So, several media drivers allow passing a `card=` parameter, in order to setup a card number that would match the correct settings for an specific board.

The current supported PCI/PCIe cards (not including staging drivers) are listed below[1].

[1]

some of the drivers have sub-drivers, not shown at this table

Driver | Name
--- | ---
altera-ci | Altera FPGA based CI module
b2c2-flexcop-pci | Technisat/B2C2 Air/Sky/Cable2PC PCI
bt878 | DVB/ATSC Support for bt878 based TV cards
bttv | BT8x8 Video For Linux
cobalt | Cisco Cobalt
cx18 | Conexant cx23418 MPEG encoder
cx23885 | Conexant cx23885 (2388x successor)
cx25821 | Conexant cx25821
cx88xx | Conexant 2388x (bt878 successor)
ddbridge | Digital Devices bridge
dm1105 | SDMC DM1105 based PCI cards
dt3155 | DT3155 frame grabber
dvb-ttpci | AV7110 cards
earth-pt1 | PT1 cards
earth-pt3 | Earthsoft PT3 cards
hexium_gemini | Hexium Gemini frame grabber
hexium_orion | Hexium HV-PCI6 and Orion frame grabber
hopper | HOPPER based cards
ipu3-cio2 | Intel ipu3-cio2 driver
ivtv | Conexant cx23416/cx23415 MPEG encoder/decoder
ivtvfb | Conexant cx23415 framebuffer
mantis | MANTIS based cards
meye | Sony Vaio Picturebook Motion Eye
mxb | Siemens-Nixdorf ‘Multimedia eXtension Board’
netup-unidvb | NetUP Universal DVB card
ngene | Micronas nGene
pluto2 | Pluto2 cards
saa7134 | Philips SAA7134
saa7164 | NXP SAA7164
smipcie | SMI PCIe DVBSky cards
solo6x10 | Bluecherry / Softlogic 6x10 capture cards (MPEG-4/H.264)
sta2x11_vip | STA2X11 VIP Video For Linux
tw5864 | Techwell TW5864 video/audio grabber and encoder
tw686x | Intersil/Techwell TW686x
tw68 | Techwell tw68x Video For Linux
zoran | Zoran-36057/36067 JPEG codec

Some of those drivers support multiple devices, as shown at the card lists below:

- 5.2.1. BTTV cards list
- 5.2.2. CX18 cards list
- 5.2.3. cx23885 cards list
- 5.2.4. CX88 cards list
- 5.2.5. IVTV cards list
- 5.2.6. SAA7134 cards list
- 5.2.7. SAA7164 cards list
- 5.2.8. Zoran cards list