media: admin-guide: improve cardlist.rst documentation

The cardlist section is important for some boards, because they
may require extra modprobe parameters.

Improve the docs to mention that.

Thanks-to: Hans Verkuil <hverkuil-cisco@xs4all.nl> # for providing me some PCI IDs
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
Mauro Carvalho Chehab 2020-04-16 14:20:54 +02:00
parent 2aca74c8b1
commit 17ce5e6d72

View File

@ -1,22 +1,128 @@
.. SPDX-License-Identifier: GPL-2.0
==========
Cards List
==========
The media subsystem provide support for lots of PCI and USB drivers, plus
platform-specific drivers. It also contains several ancillary I²C drivers.
The platform-specific drivers are usually present on embedded systems,
or are supported by the main board. Usually, setting them is done via
OpenFirmware or ACPI.
The PCI and USB drivers, however, are independent of the system's board,
and may be added/removed by the user.
This section contains a list of supported PCI and USB boards.
Please notice that this list is not exaustive.
USB drivers
===========
The USB boards are identified by an identification called USB ID.
The ``lsusb`` command allows identifying the USB IDs::
$ lsusb
...
Bus 001 Device 015: ID 046d:082d Logitech, Inc. HD Pro Webcam C920
Bus 001 Device 074: ID 2040:b131 Hauppauge
Bus 001 Device 075: ID 2013:024f PCTV Systems nanoStick T2 290e
...
Newer camera devices use a standard way to expose themselves as such,
via USB Video Class. Those cameras are automatically supported by the
``uvc-driver``.
Older cameras and TV USB devices uses USB Vendor Classes: each vendor
defines its own way to access the device. This section contains
card lists for such vendor-class devices.
While this is not as common as on PCI, sometimes the same USB 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 product type.
.. toctree::
:maxdepth: 1
au0828-cardlist
cx231xx-cardlist
em28xx-cardlist
tm6000-cardlist
usbvision-cardlist
gspca-cardlist
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: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)
01:01.0 Multimedia controller [0480]: Philips Semiconductors SAA7131/SAA7133/SAA7135 Video Broadcast Decoder [1131:7133] (rev d1)
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``
.. code-block:: none
:emphasize-lines: 4
$ lspci -vn
...
01:01.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
...
Unfortunately, sometimes the same PCI 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.
.. toctree::
:maxdepth: 1
bttv-cardlist
cx18-cardlist
cx231xx-cardlist
cx23885-cardlist
cx88-cardlist
em28xx-cardlist
ivtv-cardlist
saa7134-cardlist
saa7164-cardlist
tm6000-cardlist
I²C drivers
===========
The I²C (Inter-Integrated Circuit) bus is a three-wires bus used internally
at the media cards for communication between different chips. While the bus
is not visible to the Linux Kernel, drivers need to send and receive
commands via the bus. The Linux Kernel driver abstraction has support to
implement different drivers for each component inside an I²C bus, as if
the bus were visible to the main system board.
One of the problems with I²C devices is that sometimes the same device may
work with different I²C hardware. This is common, for example, on devices
that comes with a tuner for North America market, and another one for
Europe. Some drivers have a ``tuner=`` modprobe parameter to allow using a
different tuner number in order to address such issue.
.. toctree::
:maxdepth: 1
tuner-cardlist
usbvision-cardlist
gspca-cardlist