media updates for v5.8-rc1

-----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEE+QmuaPwR3wnBdVwACF8+vY7k4RUFAl7XUmwACgkQCF8+vY7k
 4RU4zg//fT32wiVAPHCCp+pDZVnWNeipXE1gnpqghd/qZXfzBPiLEC9sPS74VVkA
 jf1hhR33VZpKAKTPg/b074qhRZBywEOdHZnT/0CEE1oNB61shVOnyDYzLGSq95cO
 6V55ovbi5IOkrg0QEJbHpG5YHzt+pq5XeWOkqGNsHwla7N7iMGMVYfHepVVDWPnZ
 0wGYFF9cAJP+X/uxqkZLDVMA/K1I+QKh6vrj/qx53/eRt8VID3+i8ig3guk4PlUq
 7RLw5w/CywtNaGE5zaz7T3i2eoED71JHOTXi6RxdP1z8IDvELZ9mT95GQ+enlwqt
 AS6Ju1sV40wviHMv5prJWQjJkrrtYH3S907lIjwBpQLNGbh2+5crCd/6CwumkGgv
 1cCZ1dVmXpCe++9mU9AXmSkjsjGPStNcmHMOpc1Pwn9jUV3LQOOSDp8+RYdt1WHU
 Iw9cyM8NOpz5Mv/B1/ZPQ1gPb9lr1gE09XyUekxtAI/nl4nNHGWO8QDuX7Odfrv9
 8nfo14lk/p6XCTA8dsWJCgI5B1fgnqD4frHKWO9Uctppc/KBW41c8JpQUjBNlG/T
 MhtlGwYMVgSQxpQ6wK018JUAFoWkn1Sr0zMKRayqCnMjMLHsaMwE6kq+LgmRBqbB
 ersKV/9ZLYqCU1d6PhEVG6xUs6GsWdLcyhALlmHsddPSdpFXdf8=
 =KNAo
 -----END PGP SIGNATURE-----

Merge tag 'media/v5.8-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media

Pull media updates from Mauro Carvalho Chehab:

 - Media documentation is now split into admin-guide, driver-api and
   userspace-api books (a longstanding request from Jon);

 - The media Kconfig was reorganized, in order to make easier to select
   drivers and their dependencies;

 - The testing drivers now has a separate directory;

 - added a new driver for Rockchip Video Decoder IP;

 - The atomisp staging driver was resurrected. It is meant to work with
   4 generations of cameras on Atom-based laptops, tablets and cell
   phones. So, it seems worth investing time to cleanup this driver and
   making it in good shape.

 - Added some V4L2 core ancillary routines to help with h264 codecs;

 - Added an ov2740 image sensor driver;

 - The si2157 gained support for Analog TV, which, in turn, added
   support for some cx231xx and cx23885 boards to also support analog
   standards;

 - Added some V4L2 controls (V4L2_CID_CAMERA_ORIENTATION and
   V4L2_CID_CAMERA_SENSOR_ROTATION) to help identifying where the camera
   is located at the device;

 - VIDIOC_ENUM_FMT was extended to support MC-centric devices;

 - Lots of drivers improvements and cleanups.

* tag 'media/v5.8-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (503 commits)
  media: Documentation: media: Refer to mbus format documentation from CSI-2 docs
  media: s5k5baf: Replace zero-length array with flexible-array
  media: i2c: imx219: Drop <linux/clk-provider.h> and <linux/clkdev.h>
  media: i2c: Add ov2740 image sensor driver
  media: ov8856: Implement sensor module revision identification
  media: ov8856: Add devicetree support
  media: dt-bindings: ov8856: Document YAML bindings
  media: dvb-usb: Add Cinergy S2 PCIe Dual Port support
  media: dvbdev: Fix tuner->demod media controller link
  media: dt-bindings: phy: phy-rockchip-dphy-rx0: move rockchip dphy rx0 bindings out of staging
  media: staging: dt-bindings: phy-rockchip-dphy-rx0: remove non-used reg property
  media: atomisp: unify the version for isp2401 a0 and b0 versions
  media: atomisp: update TODO with the current data
  media: atomisp: adjust some code at sh_css that could be broken
  media: atomisp: don't produce errs for ignored IRQs
  media: atomisp: print IRQ when debugging
  media: atomisp: isp_mmu: don't use kmem_cache
  media: atomisp: add a notice about possible leak resources
  media: atomisp: disable the dynamic and reserved pools
  media: atomisp: turn on camera before setting it
  ...
This commit is contained in:
Linus Torvalds 2020-06-03 20:59:38 -07:00
commit a98f670e41
2181 changed files with 260773 additions and 106152 deletions

View File

@ -37,4 +37,4 @@ when changes are made.
The following CEC error injection implementations exist:
- Documentation/media/uapi/cec/cec-pin-error-inj.rst
- Documentation/userspace-api/media/cec/cec-pin-error-inj.rst

View File

@ -55,15 +55,15 @@ I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
loop_cmd = $(echo-cmd) $(cmd_$(1)) || exit;
# $2 sphinx builder e.g. "html"
# $3 name of the build subfolder / e.g. "media", used as:
# $3 name of the build subfolder / e.g. "userspace-api/media", used as:
# * dest folder relative to $(BUILDDIR) and
# * cache folder relative to $(BUILDDIR)/.doctrees
# $4 dest subfolder e.g. "man" for man pages at media/man
# $4 dest subfolder e.g. "man" for man pages at userspace-api/media/man
# $5 reST source folder relative to $(srctree)/$(src),
# e.g. "media" for the linux-tv book-set at ./Documentation/media
# e.g. "userspace-api/media" for the linux-tv book-set at ./Documentation/userspace-api/media
quiet_cmd_sphinx = SPHINX $@ --> file://$(abspath $(BUILDDIR)/$3/$4)
cmd_sphinx = $(MAKE) BUILDDIR=$(abspath $(BUILDDIR)) $(build)=Documentation/media $2 && \
cmd_sphinx = $(MAKE) BUILDDIR=$(abspath $(BUILDDIR)) $(build)=Documentation/userspace-api/media $2 && \
PYTHONDONTWRITEBYTECODE=1 \
BUILDDIR=$(abspath $(BUILDDIR)) SPHINX_CONF=$(abspath $(srctree)/$(src)/$5/$(SPHINX_CONF)) \
$(PYTHON) $(srctree)/scripts/jobserver-exec \
@ -124,7 +124,7 @@ refcheckdocs:
cleandocs:
$(Q)rm -rf $(BUILDDIR)
$(Q)$(MAKE) BUILDDIR=$(abspath $(BUILDDIR)) $(build)=Documentation/media clean
$(Q)$(MAKE) BUILDDIR=$(abspath $(BUILDDIR)) $(build)=Documentation/userspace-api/media clean
dochelp:
@echo ' Linux kernel internal documentation in different formats from ReST:'

View File

@ -93,6 +93,7 @@ configure specific aspects of kernel behavior to your liking.
lockup-watchdogs
LSM/index
md
media/index
mm/index
module-signing
mono

View File

@ -458,7 +458,7 @@
bttv.card= [HW,V4L] bttv (bt848 + bt878 based grabber cards)
bttv.radio= Most important insmod options are available as
kernel args too.
bttv.pll= See Documentation/media/v4l-drivers/bttv.rst
bttv.pll= See Documentation/admin-guide/media/bttv.rst
bttv.tuner=
bulk_remove=off [PPC] This parameter disables the use of the pSeries
@ -2746,7 +2746,7 @@
See Documentation/admin-guide/pm/sleep-states.rst.
meye.*= [HW] Set MotionEye Camera parameters
See Documentation/media/v4l-drivers/meye.rst.
See Documentation/admin-guide/media/meye.rst.
mfgpt_irq= [IA-32] Specify the IRQ to use for the
Multi-Function General Purpose Timers on AMD Geode

View File

@ -0,0 +1,94 @@
.. SPDX-License-Identifier: GPL-2.0
======================================
Avermedia DVB-T on BT878 Release Notes
======================================
February 14th 2006
.. note::
Several other Avermedia devices are supported. For a more
broader and updated content about that, please check:
https://linuxtv.org/wiki/index.php/AVerMedia
The Avermedia DVB-T
~~~~~~~~~~~~~~~~~~~
The Avermedia DVB-T is a budget PCI DVB card. It has 3 inputs:
* RF Tuner Input
* Composite Video Input (RCA Jack)
* SVIDEO Input (Mini-DIN)
The RF Tuner Input is the input to the tuner module of the
card. The Tuner is otherwise known as the "Frontend" . The
Frontend of the Avermedia DVB-T is a Microtune 7202D. A timely
post to the linux-dvb mailing list ascertained that the
Microtune 7202D is supported by the sp887x driver which is
found in the dvb-hw CVS module.
The DVB-T card is based around the BT878 chip which is a very
common multimedia bridge and often found on Analogue TV cards.
There is no on-board MPEG2 decoder, which means that all MPEG2
decoding must be done in software, or if you have one, on an
MPEG2 hardware decoding card or chipset.
Getting the card going
~~~~~~~~~~~~~~~~~~~~~~
At this stage, it has not been able to ascertain the
functionality of the remaining device nodes in respect of the
Avermedia DVBT. However, full functionality in respect of
tuning, receiving and supplying the MPEG2 data stream is
possible with the currently available versions of the driver.
It may be possible that additional functionality is available
from the card (i.e. viewing the additional analogue inputs
that the card presents), but this has not been tested yet. If
I get around to this, I'll update the document with whatever I
find.
To power up the card, load the following modules in the
following order:
* modprobe bttv (normally loaded automatically)
* modprobe dvb-bt8xx (or place dvb-bt8xx in /etc/modules)
Insertion of these modules into the running kernel will
activate the appropriate DVB device nodes. It is then possible
to start accessing the card with utilities such as scan, tzap,
dvbstream etc.
The frontend module sp887x.o, requires an external firmware.
Please use the command "get_dvb_firmware sp887x" to download
it. Then copy it to /usr/lib/hotplug/firmware or /lib/firmware/
(depending on configuration of firmware hotplug).
Known Limitations
~~~~~~~~~~~~~~~~~
At present I can say with confidence that the frontend tunes
via /dev/dvb/adapter{x}/frontend0 and supplies an MPEG2 stream
via /dev/dvb/adapter{x}/dvr0. I have not tested the
functionality of any other part of the card yet. I will do so
over time and update this document.
There are some limitations in the i2c layer due to a returned
error message inconsistency. Although this generates errors in
dmesg and the system logs, it does not appear to affect the
ability of the frontend to function correctly.
Further Update
~~~~~~~~~~~~~~
dvbstream and VideoLAN Client on windows works a treat with
DVB, in fact this is currently serving as my main way of
viewing DVB-T at the moment. Additionally, VLC is happily
decoding HDTV signals, although the PC is dropping the odd
frame here and there - I assume due to processing capability -
as all the decoding is being done under windows in software.
Many thanks to Nigel Pearson for the updates to this document
since the recent revision of the driver.

View File

@ -0,0 +1,156 @@
.. SPDX-License-Identifier: GPL-2.0
==================================
How to get the bt8xx cards working
==================================
Authors:
Richard Walker,
Jamie Honan,
Michael Hunold,
Manu Abraham,
Uwe Bugla,
Michael Krufky
General information
-------------------
This class of cards has a bt878a as the PCI interface, and require the bttv driver
for accessing the i2c bus and the gpio pins of the bt8xx chipset.
Please see :doc:`bttv-cardlist` for a complete list of Cards based on the
Conexant Bt8xx PCI bridge supported by the Linux Kernel.
In order to be able to compile the kernel, some config options should be
enabled::
./scripts/config -e PCI
./scripts/config -e INPUT
./scripts/config -m I2C
./scripts/config -m MEDIA_SUPPORT
./scripts/config -e MEDIA_PCI_SUPPORT
./scripts/config -e MEDIA_ANALOG_TV_SUPPORT
./scripts/config -e MEDIA_DIGITAL_TV_SUPPORT
./scripts/config -e MEDIA_RADIO_SUPPORT
./scripts/config -e RC_CORE
./scripts/config -m VIDEO_BT848
./scripts/config -m DVB_BT8XX
If you want to automatically support all possible variants of the Bt8xx
cards, you should also do::
./scripts/config -e MEDIA_SUBDRV_AUTOSELECT
.. note::
Please use the following options with care as deselection of drivers which
are in fact necessary may result in DVB devices that cannot be tuned due
to lack of driver support.
If your goal is to just support an specific board, you may, instead,
disable MEDIA_SUBDRV_AUTOSELECT and manually select the frontend drivers
required by your board. With that, you can save some RAM.
You can do that by calling make xconfig/qconfig/menuconfig and look at
the options on those menu options (only enabled if
``Autoselect ancillary drivers`` is disabled:
#) ``Device drivers`` => ``Multimedia support`` => ``Customize TV tuners``
#) ``Device drivers`` => ``Multimedia support`` => ``Customize DVB frontends``
Then, on each of the above menu, please select your card-specific
frontend and tuner modules.
Loading Modules
---------------
Regular case: If the bttv driver detects a bt8xx-based DVB card, all
frontend and backend modules will be loaded automatically.
Exceptions are:
- Old TV cards without EEPROMs, sharing a common PCI subsystem ID;
- Old TwinHan DST cards or clones with or without CA slot and not
containing an Eeprom.
In the following cases overriding the PCI type detection for bttv and
for dvb-bt8xx drivers by passing modprobe parameters may be necessary.
Running TwinHan and Clones
~~~~~~~~~~~~~~~~~~~~~~~~~~
As shown at :doc:`bttv-cardlist`, TwinHan and
clones use ``card=113`` modprobe parameter. So, in order to properly
detect it for devices without EEPROM, you should use::
$ modprobe bttv card=113
$ modprobe dst
Useful parameters for verbosity level and debugging the dst module::
verbose=0: messages are disabled
1: only error messages are displayed
2: notifications are displayed
3: other useful messages are displayed
4: debug setting
dst_addons=0: card is a free to air (FTA) card only
0x20: card has a conditional access slot for scrambled channels
dst_algo=0: (default) Software tuning algorithm
1: Hardware tuning algorithm
The autodetected values are determined by the cards' "response string".
In your logs see f. ex.: dst_get_device_id: Recognize [DSTMCI].
For bug reports please send in a complete log with verbose=4 activated.
Please also see :doc:`ci`.
Running multiple cards
~~~~~~~~~~~~~~~~~~~~~~
See :doc:`bttv-cardlist` for a complete list of
Card ID. Some examples:
=========================== ===
Brand name ID
=========================== ===
Pinnacle PCTV Sat 94
Nebula Electronics Digi TV 104
pcHDTV HD-2000 TV 112
Twinhan DST and clones 113
Avermedia AverTV DVB-T 77: 123
Avermedia AverTV DVB-T 761 124
DViCO FusionHDTV DVB-T Lite 128
DViCO FusionHDTV 5 Lite 135
=========================== ===
.. note::
When you have multiple cards, the order of the card ID should
match the order where they're detected by the system. Please notice
that removing/inserting other PCI cards may change the detection
order.
Example::
$ modprobe bttv card=113 card=135
In case of further problems please subscribe and send questions to
the mailing list: linux-media@vger.kernel.org.
Probing the cards with broken PCI subsystem ID
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
There are some TwinHan cards whose EEPROM has become corrupted for some
reason. The cards do not have a correct PCI subsystem ID.
Still, it is possible to force probing the cards with::
$ echo 109e 0878 $subvendor $subdevice > \
/sys/bus/pci/drivers/bt878/new_id
The two numbers there are::
109e: PCI_VENDOR_ID_BROOKTREE
0878: PCI_DEVICE_ID_BROOKTREE_878

View File

@ -0,0 +1,683 @@
.. SPDX-License-Identifier: GPL-2.0
BTTV cards list
===============
.. tabularcolumns:: |p{1.4cm}|p{11.1cm}|p{4.2cm}|
.. flat-table::
:header-rows: 1
:widths: 2 19 18
:stub-columns: 0
* - Card number
- Card name
- PCI subsystem IDs
* - 0
- *** UNKNOWN/GENERIC ***
-
* - 1
- MIRO PCTV
-
* - 2
- Hauppauge (bt848)
-
* - 3
- STB, Gateway P/N 6000699 (bt848)
-
* - 4
- Intel Create and Share PCI/ Smart Video Recorder III
-
* - 5
- Diamond DTV2000
-
* - 6
- AVerMedia TVPhone
-
* - 7
- MATRIX-Vision MV-Delta
-
* - 8
- Lifeview FlyVideo II (Bt848) LR26 / MAXI TV Video PCI2 LR26
-
* - 9
- IMS/IXmicro TurboTV
-
* - 10
- Hauppauge (bt878)
- 0070:13eb, 0070:3900, 2636:10b4
* - 11
- MIRO PCTV pro
-
* - 12
- ADS Technologies Channel Surfer TV (bt848)
-
* - 13
- AVerMedia TVCapture 98
- 1461:0002, 1461:0004, 1461:0300
* - 14
- Aimslab Video Highway Xtreme (VHX)
-
* - 15
- Zoltrix TV-Max
- a1a0:a0fc
* - 16
- Prolink Pixelview PlayTV (bt878)
-
* - 17
- Leadtek WinView 601
-
* - 18
- AVEC Intercapture
-
* - 19
- Lifeview FlyVideo II EZ /FlyKit LR38 Bt848 (capture only)
-
* - 20
- CEI Raffles Card
-
* - 21
- Lifeview FlyVideo 98/ Lucky Star Image World ConferenceTV LR50
-
* - 22
- Askey CPH050/ Phoebe Tv Master + FM
- 14ff:3002
* - 23
- Modular Technology MM201/MM202/MM205/MM210/MM215 PCTV, bt878
- 14c7:0101
* - 24
- Askey CPH05X/06X (bt878) [many vendors]
- 144f:3002, 144f:3005, 144f:5000, 14ff:3000
* - 25
- Terratec TerraTV+ Version 1.0 (Bt848)/ Terra TValue Version 1.0/ Vobis TV-Boostar
-
* - 26
- Hauppauge WinCam newer (bt878)
-
* - 27
- Lifeview FlyVideo 98/ MAXI TV Video PCI2 LR50
-
* - 28
- Terratec TerraTV+ Version 1.1 (bt878)
- 153b:1127, 1852:1852
* - 29
- Imagenation PXC200
- 1295:200a
* - 30
- Lifeview FlyVideo 98 LR50
- 1f7f:1850
* - 31
- Formac iProTV, Formac ProTV I (bt848)
-
* - 32
- Intel Create and Share PCI/ Smart Video Recorder III
-
* - 33
- Terratec TerraTValue Version Bt878
- 153b:1117, 153b:1118, 153b:1119, 153b:111a, 153b:1134, 153b:5018
* - 34
- Leadtek WinFast 2000/ WinFast 2000 XP
- 107d:6606, 107d:6609, 6606:217d, f6ff:fff6
* - 35
- Lifeview FlyVideo 98 LR50 / Chronos Video Shuttle II
- 1851:1850, 1851:a050
* - 36
- Lifeview FlyVideo 98FM LR50 / Typhoon TView TV/FM Tuner
- 1852:1852
* - 37
- Prolink PixelView PlayTV pro
-
* - 38
- Askey CPH06X TView99
- 144f:3000, 144f:a005, a04f:a0fc
* - 39
- Pinnacle PCTV Studio/Rave
- 11bd:0012, bd11:1200, bd11:ff00, 11bd:ff12
* - 40
- STB TV PCI FM, Gateway P/N 6000704 (bt878), 3Dfx VoodooTV 100
- 10b4:2636, 10b4:2645, 121a:3060
* - 41
- AVerMedia TVPhone 98
- 1461:0001, 1461:0003
* - 42
- ProVideo PV951
- aa0c:146c
* - 43
- Little OnAir TV
-
* - 44
- Sigma TVII-FM
-
* - 45
- MATRIX-Vision MV-Delta 2
-
* - 46
- Zoltrix Genie TV/FM
- 15b0:4000, 15b0:400a, 15b0:400d, 15b0:4010, 15b0:4016
* - 47
- Terratec TV/Radio+
- 153b:1123
* - 48
- Askey CPH03x/ Dynalink Magic TView
-
* - 49
- IODATA GV-BCTV3/PCI
- 10fc:4020
* - 50
- Prolink PV-BT878P+4E / PixelView PlayTV PAK / Lenco MXTV-9578 CP
-
* - 51
- Eagle Wireless Capricorn2 (bt878A)
-
* - 52
- Pinnacle PCTV Studio Pro
-
* - 53
- Typhoon TView RDS + FM Stereo / KNC1 TV Station RDS
-
* - 54
- Lifeview FlyVideo 2000 /FlyVideo A2/ Lifetec LT 9415 TV [LR90]
-
* - 55
- Askey CPH031/ BESTBUY Easy TV
-
* - 56
- Lifeview FlyVideo 98FM LR50
- a051:41a0
* - 57
- GrandTec 'Grand Video Capture' (Bt848)
- 4344:4142
* - 58
- Askey CPH060/ Phoebe TV Master Only (No FM)
-
* - 59
- Askey CPH03x TV Capturer
-
* - 60
- Modular Technology MM100PCTV
-
* - 61
- AG Electronics GMV1
- 15cb:0101
* - 62
- Askey CPH061/ BESTBUY Easy TV (bt878)
-
* - 63
- ATI TV-Wonder
- 1002:0001
* - 64
- ATI TV-Wonder VE
- 1002:0003
* - 65
- Lifeview FlyVideo 2000S LR90
-
* - 66
- Terratec TValueRadio
- 153b:1135, 153b:ff3b
* - 67
- IODATA GV-BCTV4/PCI
- 10fc:4050
* - 68
- 3Dfx VoodooTV FM (Euro)
- 10b4:2637
* - 69
- Active Imaging AIMMS
-
* - 70
- Prolink Pixelview PV-BT878P+ (Rev.4C,8E)
-
* - 71
- Lifeview FlyVideo 98EZ (capture only) LR51
- 1851:1851
* - 72
- Prolink Pixelview PV-BT878P+9B (PlayTV Pro rev.9B FM+NICAM)
- 1554:4011
* - 73
- Sensoray 311/611
- 6000:0311, 6000:0611
* - 74
- RemoteVision MX (RV605)
-
* - 75
- Powercolor MTV878/ MTV878R/ MTV878F
-
* - 76
- Canopus WinDVR PCI (COMPAQ Presario 3524JP, 5112JP)
- 0e11:0079
* - 77
- GrandTec Multi Capture Card (Bt878)
-
* - 78
- Jetway TV/Capture JW-TV878-FBK, Kworld KW-TV878RF
- 0a01:17de
* - 79
- DSP Design TCVIDEO
-
* - 80
- Hauppauge WinTV PVR
- 0070:4500
* - 81
- IODATA GV-BCTV5/PCI
- 10fc:4070, 10fc:d018
* - 82
- Osprey 100/150 (878)
- 0070:ff00
* - 83
- Osprey 100/150 (848)
-
* - 84
- Osprey 101 (848)
-
* - 85
- Osprey 101/151
-
* - 86
- Osprey 101/151 w/ svid
-
* - 87
- Osprey 200/201/250/251
-
* - 88
- Osprey 200/250
- 0070:ff01
* - 89
- Osprey 210/220/230
-
* - 90
- Osprey 500
- 0070:ff02
* - 91
- Osprey 540
- 0070:ff04
* - 92
- Osprey 2000
- 0070:ff03
* - 93
- IDS Eagle
-
* - 94
- Pinnacle PCTV Sat
- 11bd:001c
* - 95
- Formac ProTV II (bt878)
-
* - 96
- MachTV
-
* - 97
- Euresys Picolo
-
* - 98
- ProVideo PV150
- aa00:1460, aa01:1461, aa02:1462, aa03:1463, aa04:1464, aa05:1465, aa06:1466, aa07:1467
* - 99
- AD-TVK503
-
* - 100
- Hercules Smart TV Stereo
-
* - 101
- Pace TV & Radio Card
-
* - 102
- IVC-200
- 0000:a155, 0001:a155, 0002:a155, 0003:a155, 0100:a155, 0101:a155, 0102:a155, 0103:a155, 0800:a155, 0801:a155, 0802:a155, 0803:a155
* - 103
- Grand X-Guard / Trust 814PCI
- 0304:0102
* - 104
- Nebula Electronics DigiTV
- 0071:0101
* - 105
- ProVideo PV143
- aa00:1430, aa00:1431, aa00:1432, aa00:1433, aa03:1433
* - 106
- PHYTEC VD-009-X1 VD-011 MiniDIN (bt878)
-
* - 107
- PHYTEC VD-009-X1 VD-011 Combi (bt878)
-
* - 108
- PHYTEC VD-009 MiniDIN (bt878)
-
* - 109
- PHYTEC VD-009 Combi (bt878)
-
* - 110
- IVC-100
- ff00:a132
* - 111
- IVC-120G
- ff00:a182, ff01:a182, ff02:a182, ff03:a182, ff04:a182, ff05:a182, ff06:a182, ff07:a182, ff08:a182, ff09:a182, ff0a:a182, ff0b:a182, ff0c:a182, ff0d:a182, ff0e:a182, ff0f:a182
* - 112
- pcHDTV HD-2000 TV
- 7063:2000
* - 113
- Twinhan DST + clones
- 11bd:0026, 1822:0001, 270f:fc00, 1822:0026
* - 114
- Winfast VC100
- 107d:6607
* - 115
- Teppro TEV-560/InterVision IV-560
-
* - 116
- SIMUS GVC1100
- aa6a:82b2
* - 117
- NGS NGSTV+
-
* - 118
- LMLBT4
-
* - 119
- Tekram M205 PRO
-
* - 120
- Conceptronic CONTVFMi
-
* - 121
- Euresys Picolo Tetra
- 1805:0105, 1805:0106, 1805:0107, 1805:0108
* - 122
- Spirit TV Tuner
-
* - 123
- AVerMedia AVerTV DVB-T 771
- 1461:0771
* - 124
- AverMedia AverTV DVB-T 761
- 1461:0761
* - 125
- MATRIX Vision Sigma-SQ
-
* - 126
- MATRIX Vision Sigma-SLC
-
* - 127
- APAC Viewcomp 878(AMAX)
-
* - 128
- DViCO FusionHDTV DVB-T Lite
- 18ac:db10, 18ac:db11
* - 129
- V-Gear MyVCD
-
* - 130
- Super TV Tuner
-
* - 131
- Tibet Systems 'Progress DVR' CS16
-
* - 132
- Kodicom 4400R (master)
-
* - 133
- Kodicom 4400R (slave)
-
* - 134
- Adlink RTV24
-
* - 135
- DViCO FusionHDTV 5 Lite
- 18ac:d500
* - 136
- Acorp Y878F
- 9511:1540
* - 137
- Conceptronic CTVFMi v2
- 036e:109e
* - 138
- Prolink Pixelview PV-BT878P+ (Rev.2E)
-
* - 139
- Prolink PixelView PlayTV MPEG2 PV-M4900
-
* - 140
- Osprey 440
- 0070:ff07
* - 141
- Asound Skyeye PCTV
-
* - 142
- Sabrent TV-FM (bttv version)
-
* - 143
- Hauppauge ImpactVCB (bt878)
- 0070:13eb
* - 144
- MagicTV
-
* - 145
- SSAI Security Video Interface
- 4149:5353
* - 146
- SSAI Ultrasound Video Interface
- 414a:5353
* - 147
- VoodooTV 200 (USA)
- 121a:3000
* - 148
- DViCO FusionHDTV 2
- dbc0:d200
* - 149
- Typhoon TV-Tuner PCI (50684)
-
* - 150
- Geovision GV-600
- 008a:763c
* - 151
- Kozumi KTV-01C
-
* - 152
- Encore ENL TV-FM-2
- 1000:1801
* - 153
- PHYTEC VD-012 (bt878)
-
* - 154
- PHYTEC VD-012-X1 (bt878)
-
* - 155
- PHYTEC VD-012-X2 (bt878)
-
* - 156
- IVCE-8784
- 0000:f050, 0001:f050, 0002:f050, 0003:f050
* - 157
- Geovision GV-800(S) (master)
- 800a:763d
* - 158
- Geovision GV-800(S) (slave)
- 800b:763d, 800c:763d, 800d:763d
* - 159
- ProVideo PV183
- 1830:1540, 1831:1540, 1832:1540, 1833:1540, 1834:1540, 1835:1540, 1836:1540, 1837:1540
* - 160
- Tongwei Video Technology TD-3116
- f200:3116
* - 161
- Aposonic W-DVR
- 0279:0228
* - 162
- Adlink MPG24
-
* - 163
- Bt848 Capture 14MHz
-
* - 164
- CyberVision CV06 (SV)
-
* - 165
- Kworld V-Stream Xpert TV PVR878
-
* - 166
- PCI-8604PW
-

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,357 @@
.. SPDX-License-Identifier: GPL-2.0
===================================
Building support for a media device
===================================
The first step is to download the Kernel's source code, either via a
distribution-specific source file or via the Kernel's main git tree\ [1]_.
Please notice, however, that, if:
- you're a braveheart and want to experiment with new stuff;
- if you want to report a bug;
- if you're developing new patches
you should use the main media development tree ``master`` branch:
https://git.linuxtv.org/media_tree.git/
In this case, you may find some useful information at the
`LinuxTv wiki pages <https://linuxtv.org/wiki>`_:
https://linuxtv.org/wiki/index.php/How_to_Obtain,_Build_and_Install_V4L-DVB_Device_Drivers
.. [1] The upstream Linux Kernel development tree is located at
https://git.kernel.org/pub/scm/li nux/kernel/git/torvalds/linux.git/
Configuring the Linux Kernel
============================
You can access a menu of Kernel building options with::
$ make menuconfig
Then, select all desired options and exit it, saving the configuration.
The changed configuration will be at the ``.config`` file. It would
look like::
...
# CONFIG_RC_CORE is not set
# CONFIG_CEC_CORE is not set
CONFIG_MEDIA_SUPPORT=m
CONFIG_MEDIA_SUPPORT_FILTER=y
...
The media subsystem is controlled by those menu configuration options::
Device Drivers --->
<M> Remote Controller support --->
[ ] HDMI CEC RC integration
[ ] Enable CEC error injection support
[*] HDMI CEC drivers --->
<*> Multimedia support --->
The ``Remote Controller support`` option enables the core support for
remote controllers\ [2]_.
The ``HDMI CEC RC integration`` option enables integration of HDMI CEC
with Linux, allowing to receive data via HDMI CEC as if it were produced
by a remote controller directly connected to the machine.
The ``HDMI CEC drivers`` option allow selecting platform and USB drivers
that receives and/or transmits CEC codes via HDMI interfaces\ [3]_.
The last option (``Multimedia support``) enables support for cameras,
audio/video grabbers and TV.
The media subsystem support can either be built together with the main
Kernel or as a module. For most use cases, it is preferred to have it
built as modules.
.. note::
Instead of using a menu, the Kernel provides a script with allows
enabling configuration options directly. To enable media support
and remote controller support using Kernel modules, you could use::
$ scripts/config -m RC_CORE
$ scripts/config -m MEDIA_SUPPORT
.. [2] ``Remote Controller support`` should also be enabled if you
want to use some TV card drivers that may depend on the remote
controller core support.
.. [3] Please notice that the DRM subsystem also have drivers for GPUs
that use the media HDMI CEC support.
Those GPU-specific drivers are selected via the ``Graphics support``
menu, under ``Device Drivers``.
When a GPU driver supports supports HDMI CEC, it will automatically
enable the CEC core support at the media subsystem.
Media dependencies
------------------
It should be noticed that enabling the above from a clean config is
usually not enough. The media subsystem depends on several other Linux
core support in order to work.
For example, most media devices use a serial communication bus in
order to talk with some peripherals. Such bus is called I²C
(Inter-Integrated Circuit). In order to be able to build support
for such hardware, the I²C bus support should be enabled, either via
menu or with::
./scripts/config -m I2C
Another example: the remote controller core requires support for
input devices, with can be enabled with::
./scripts/config -m INPUT
Other core functionality may also be needed (like PCI and/or USB support),
depending on the specific driver(s) you would like to enable.
Enabling Remote Controller Support
----------------------------------
The remote controller menu allows selecting drivers for specific devices.
It's menu looks like this::
--- Remote Controller support
<M> Compile Remote Controller keymap modules
[*] LIRC user interface
[*] Support for eBPF programs attached to lirc devices
[*] Remote controller decoders --->
[*] Remote Controller devices --->
The ``Compile Remote Controller keymap modules`` option creates key maps for
several popular remote controllers.
The ``LIRC user interface`` option adds enhanced functionality when using the
``lirc`` program, by enabling an API that allows userspace to receive raw data
from remote controllers.
The ``Support for eBPF programs attached to lirc devices`` option allows
the usage of special programs (called eBPF) that would allow aplications
to add extra remote controller decoding functionality to the Linux Kernel.
The ``Remote controller decoders`` option allows selecting the
protocols that will be recognized by the Linux Kernel. Except if you
want to disable some specific decoder, it is suggested to keep all
sub-options enabled.
The ``Remote Controller devices`` allows you to select the drivers
that would be needed to support your device.
The same configuration can also be set via the ``script/config``
script. So, for instance, in order to support the ITE remote controller
driver (found on Intel NUCs and on some ASUS x86 desktops), you could do::
$ scripts/config -e INPUT
$ scripts/config -e ACPI
$ scripts/config -e MODULES
$ scripts/config -m RC_CORE
$ scripts/config -e RC_DEVICES
$ scripts/config -e RC_DECODERS
$ scripts/config -m IR_RC5_DECODER
$ scripts/config -m IR_ITE_CIR
Enabling HDMI CEC Support
-------------------------
The HDMI CEC support is set automatically when a driver requires it. So,
all you need to do is to enable support either for a graphics card
that needs it or by one of the existing HDMI drivers.
The HDMI-specific drivers are available at the ``HDMI CEC drivers``
menu\ [4]_::
--- HDMI CEC drivers
< > ChromeOS EC CEC driver
< > Amlogic Meson AO CEC driver
< > Amlogic Meson G12A AO CEC driver
< > Generic GPIO-based CEC driver
< > Samsung S5P CEC driver
< > STMicroelectronics STiH4xx HDMI CEC driver
< > STMicroelectronics STM32 HDMI CEC driver
< > Tegra HDMI CEC driver
< > SECO Boards HDMI CEC driver
[ ] SECO Boards IR RC5 support
< > Pulse Eight HDMI CEC
< > RainShadow Tech HDMI CEC
.. [4] The above contents is just an example. The actual options for
HDMI devices depends on the system's architecture and may vary
on new Kernels.
Enabling Media Support
----------------------
The Media menu has a lot more options than the remote controller menu.
Once selected, you should see the following options::
--- Media support
[ ] Filter media drivers
[*] Autoselect ancillary drivers
Media device types --->
Media core support --->
Video4Linux options --->
Media controller options --->
Digital TV options --->
HDMI CEC options --->
Media drivers --->
Media ancillary drivers --->
Except if you know exactly what you're doing, or if you want to build
a driver for a SoC platform, it is strongly recommended to keep the
``Autoselect ancillary drivers`` option turned on, as it will auto-select
the needed I²C ancillary drivers.
There are now two ways to select media device drivers, as described
below.
``Filter media drivers`` menu
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This menu is meant to easy setup for PC and Laptop hardware. It works
by letting the user to specify what kind of media drivers are desired,
with those options::
[ ] Cameras and video grabbers
[ ] Analog TV
[ ] Digital TV
[ ] AM/FM radio receivers/transmitters
[ ] Software defined radio
[ ] Platform-specific devices
[ ] Test drivers
So, if you want to add support to a camera or video grabber only,
select just the first option. Multiple options are allowed.
Once the options on this menu are selected, the building system will
auto-select the needed core drivers in order to support the selected
functionality.
.. note::
Most TV cards are hybrid: they support both Analog TV and Digital TV.
If you have an hybrid card, you may need to enable both ``Analog TV``
and ``Digital TV`` at the menu.
When using this option, the defaults for the the media support core
functionality are usually good enough to provide the basic functionality
for the driver. Yet, you could manually enable some desired extra (optional)
functionality using the settings under each of the following
``Media support`` sub-menus::
Media core support --->
Video4Linux options --->
Media controller options --->
Digital TV options --->
HDMI CEC options --->
Once you select the desired filters, the drivers that matches the filtering
criteria will be available at the ``Media support->Media drivers`` sub-menu.
``Media Core Support`` menu without filtering
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
If you disable the ``Filter media drivers`` menu, all drivers available
for your system whose dependencies are met should be shown at the
``Media drivers`` menu.
Please notice, however, that you should first ensure that the
``Media Core Support`` menu has all the core functionality your drivers
would need, as otherwise the corresponding device drivers won't be shown.
Example
-------
In order to enable modular support for one of the boards listed on
:doc:`this table <cx231xx-cardlist>`, with modular media core modules, the
``.config`` file should contain those lines::
CONFIG_MODULES=y
CONFIG_USB=y
CONFIG_I2C=y
CONFIG_INPUT=y
CONFIG_RC_CORE=m
CONFIG_MEDIA_SUPPORT=m
CONFIG_MEDIA_SUPPORT_FILTER=y
CONFIG_MEDIA_ANALOG_TV_SUPPORT=y
CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
CONFIG_MEDIA_USB_SUPPORT=y
CONFIG_VIDEO_CX231XX=y
CONFIG_VIDEO_CX231XX_DVB=y
Building and installing a new Kernel
====================================
Once the ``.config`` file has everything needed, all it takes to build
is to run the ``make`` command::
$ make
And then install the new Kernel and its modules::
$ sudo make modules_install
$ sudo make install
Building just the new media drivers and core
============================================
Running a new development Kernel from the development tree is usually risky,
because it may have experimental changes that may have bugs. So, there are
some ways to build just the new drivers, using alternative trees.
There is the `Linux Kernel backports project
<https://backports.wiki.kernel.org/index.php/Main_Page>`_, with contains
newer drivers meant to be compiled against stable Kernels.
The LinuxTV developers, with are responsible for maintaining the media
subsystem also maintains a backport tree, with just the media drivers
daily updated from the newest kernel. Such tree is available at:
https://git.linuxtv.org/media_build.git/
It should be noticed that, while it should be relatively safe to use the
``media_build`` tree for testing purposes, there are not warranties that
it would work (or even build) on a random Kernel. This tree is maintained
using a "best-efforts" principle, as time permits us to fix issues there.
If you notice anything wrong on it, feel free to submit patches at the
Linux media subsystem's mailing list: media@vger.kernel.org. Please
add ``[PATCH media-build]`` at the e-mail's subject if you submit a new
patch for the media-build.
Before using it, you should run::
$ ./build
.. note::
1) you may need to run it twice if the ``media-build`` tree gets
updated;
2) you may need to do a ``make distclean`` if you had built it
in the past for a different Kernel version than the one you're
currently using;
3) by default, it will use the same config options for media as
the ones defined on the Kernel you're running.
In order to select different drivers or different config options,
use::
$ make menuconfig
Then, you can build and install the new drivers::
$ make && sudo make install
This will override the previous media drivers that your Kernel were
using.

View File

@ -0,0 +1,29 @@
.. 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.
You may also take a look at
https://linuxtv.org/wiki/index.php/Hardware_Device_Information
for more details about supported cards.
.. toctree::
:maxdepth: 2
usb-cardlist
pci-cardlist
platform-cardlist
radio-cardlist
i2c-cardlist
misc-cardlist

View File

@ -0,0 +1,10 @@
.. SPDX-License-Identifier: GPL-2.0
=================================
CEC driver-specific documentation
=================================
.. toctree::
:maxdepth: 2
pulse8-cec

View File

@ -0,0 +1,77 @@
.. SPDX-License-Identifier: GPL-2.0
Digital TV Conditional Access Interface
=======================================
.. note::
This documentation is outdated.
This document describes the usage of the high level CI API as
in accordance to the Linux DVB API. This is a not a documentation for the,
existing low level CI API.
.. note::
For the Twinhan/Twinhan clones, the dst_ca module handles the CI
hardware handling. This module is loaded automatically if a CI
(Common Interface, that holds the CAM (Conditional Access Module)
is detected.
ca_zap
~~~~~~
A userspace application, like ``ca_zap`` is required to handle encrypted
MPEG-TS streams.
The ``ca_zap`` userland application is in charge of sending the
descrambling related information to the Conditional Access Module (CAM).
This application requires the following to function properly as of now.
a) Tune to a valid channel, with szap.
eg: $ szap -c channels.conf -r "TMC" -x
b) a channels.conf containing a valid PMT PID
eg: TMC:11996:h:0:27500:278:512:650:321
here 278 is a valid PMT PID. the rest of the values are the
same ones that szap uses.
c) after running a szap, you have to run ca_zap, for the
descrambler to function,
eg: $ ca_zap channels.conf "TMC"
d) Hopefully enjoy your favourite subscribed channel as you do with
a FTA card.
.. note::
Currently ca_zap, and dst_test, both are meant for demonstration
purposes only, they can become full fledged applications if necessary.
Cards that fall in this category
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
At present the cards that fall in this category are the Twinhan and its
clones, these cards are available as VVMER, Tomato, Hercules, Orange and
so on.
CI modules that are supported
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The CI module support is largely dependent upon the firmware on the cards
Some cards do support almost all of the available CI modules. There is
nothing much that can be done in order to make additional CI modules
working with these cards.
Modules that have been tested by this driver at present are
(1) Irdeto 1 and 2 from SCM
(2) Viaccess from SCM
(3) Dragoncam

View File

@ -0,0 +1,145 @@
.. SPDX-License-Identifier: GPL-2.0
The cpia2 driver
================
Authors: Peter Pregler <Peter_Pregler@email.com>,
Scott J. Bertin <scottbertin@yahoo.com>, and
Jarl Totland <Jarl.Totland@bdc.no> for the original cpia driver, which
this one was modelled from.
Introduction
------------
This is a driver for STMicroelectronics's CPiA2 (second generation
Colour Processor Interface ASIC) based cameras. This camera outputs an MJPEG
stream at up to vga size. It implements the Video4Linux interface as much as
possible. Since the V4L interface does not support compressed formats, only
an mjpeg enabled application can be used with the camera. We have modified the
gqcam application to view this stream.
The driver is implemented as two kernel modules. The cpia2 module
contains the camera functions and the V4L interface. The cpia2_usb module
contains usb specific functions. The main reason for this was the size of the
module was getting out of hand, so I separated them. It is not likely that
there will be a parallel port version.
Features
--------
- Supports cameras with the Vision stv6410 (CIF) and stv6500 (VGA) cmos
sensors. I only have the vga sensor, so can't test the other.
- Image formats: VGA, QVGA, CIF, QCIF, and a number of sizes in between.
VGA and QVGA are the native image sizes for the VGA camera. CIF is done
in the coprocessor by scaling QVGA. All other sizes are done by clipping.
- Palette: YCrCb, compressed with MJPEG.
- Some compression parameters are settable.
- Sensor framerate is adjustable (up to 30 fps CIF, 15 fps VGA).
- Adjust brightness, color, contrast while streaming.
- Flicker control settable for 50 or 60 Hz mains frequency.
Making and installing the stv672 driver modules
-----------------------------------------------
Requirements
~~~~~~~~~~~~
Video4Linux must be either compiled into the kernel or
available as a module. Video4Linux2 is automatically detected and made
available at compile time.
Setup
~~~~~
Use ``modprobe cpia2`` to load and ``modprobe -r cpia2`` to unload. This
may be done automatically by your distribution.
Driver options
~~~~~~~~~~~~~~
.. tabularcolumns:: |p{13ex}|L|
============== ========================================================
Option Description
============== ========================================================
video_nr video device to register (0=/dev/video0, etc)
range -1 to 64. default is -1 (first available)
If you have more than 1 camera, this MUST be -1.
buffer_size Size for each frame buffer in bytes (default 68k)
num_buffers Number of frame buffers (1-32, default 3)
alternate USB Alternate (2-7, default 7)
flicker_freq Frequency for flicker reduction(50 or 60, default 60)
flicker_mode 0 to disable, or 1 to enable flicker reduction.
(default 0). This is only effective if the camera
uses a stv0672 coprocessor.
============== ========================================================
Setting the options
~~~~~~~~~~~~~~~~~~~
If you are using modules, edit /etc/modules.conf and add an options
line like this::
options cpia2 num_buffers=3 buffer_size=65535
If the driver is compiled into the kernel, at boot time specify them
like this::
cpia2.num_buffers=3 cpia2.buffer_size=65535
What buffer size should I use?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The maximum image size depends on the alternate you choose, and the
frame rate achieved by the camera. If the compression engine is able to
keep up with the frame rate, the maximum image size is given by the table
below.
The compression engine starts out at maximum compression, and will
increase image quality until it is close to the size in the table. As long
as the compression engine can keep up with the frame rate, after a short time
the images will all be about the size in the table, regardless of resolution.
At low alternate settings, the compression engine may not be able to
compress the image enough and will reduce the frame rate by producing larger
images.
The default of 68k should be good for most users. This will handle
any alternate at frame rates down to 15fps. For lower frame rates, it may
be necessary to increase the buffer size to avoid having frames dropped due
to insufficient space.
========== ========== ======== =====
Alternate bytes/ms 15fps 30fps
========== ========== ======== =====
2 128 8533 4267
3 384 25600 12800
4 640 42667 21333
5 768 51200 25600
6 896 59733 29867
7 1023 68200 34100
========== ========== ======== =====
Table: Image size(bytes)
How many buffers should I use?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
For normal streaming, 3 should give the best results. With only 2,
it is possible for the camera to finish sending one image just after a
program has started reading the other. If this happens, the driver must drop
a frame. The exception to this is if you have a heavily loaded machine. In
this case use 2 buffers. You are probably not reading at the full frame rate.
If the camera can send multiple images before a read finishes, it could
overwrite the third buffer before the read finishes, leading to a corrupt
image. Single and double buffering have extra checks to avoid overwriting.
Using the camera
~~~~~~~~~~~~~~~~
We are providing a modified gqcam application to view the output. In
order to avoid confusion, here it is called mview. There is also the qx5view
program which can also control the lights on the qx5 microscope. MJPEG Tools
(http://mjpeg.sourceforge.net) can also be used to record from the camera.

View File

@ -0,0 +1,17 @@
.. SPDX-License-Identifier: GPL-2.0
CX18 cards list
===============
Those cards are supported by cx18 driver:
- Hauppauge HVR-1600 (ESMT memory)
- Hauppauge HVR-1600 (Samsung memory)
- Compro VideoMate H900
- Yuan MPC718 MiniPCI DVB-T/Analog
- Conexant Raptor PAL/SECAM
- Toshiba Qosmio DVB-T/Analog
- Leadtek WinFast PVR2100
- Leadtek WinFast DVR3100
- GoTView PCI DVD3 Hybrid
- Hauppauge HVR-1600 (s5h1411/tda18271)

View File

@ -0,0 +1,99 @@
.. SPDX-License-Identifier: GPL-2.0
cx231xx cards list
==================
.. tabularcolumns:: |p{1.4cm}|p{10.0cm}|p{6.5cm}|
.. flat-table::
:header-rows: 1
:widths: 2 12 19
:stub-columns: 0
* - Card number
- Card name
- USB IDs
* - 0
- Unknown CX231xx video grabber
- 0572:5A3C
* - 1
- Conexant Hybrid TV - CARRAERA
- 0572:58A2
* - 2
- Conexant Hybrid TV - SHELBY
- 0572:58A1
* - 3
- Conexant Hybrid TV - RDE253S
- 0572:58A4
* - 4
- Conexant Hybrid TV - RDU253S
- 0572:58A5
* - 5
- Conexant VIDEO GRABBER
- 0572:58A6, 07ca:c039
* - 6
- Conexant Hybrid TV - rde 250
- 0572:589E
* - 7
- Conexant Hybrid TV - RDU 250
- 0572:58A0
* - 8
- Hauppauge EXETER
- 2040:b120, 2040:b140
* - 9
- Hauppauge USB Live 2
- 2040:c200
* - 10
- Pixelview PlayTV USB Hybrid
- 4000:4001
* - 11
- Pixelview Xcapture USB
- 1D19:6109, 4000:4001
* - 12
- Kworld UB430 USB Hybrid
- 1b80:e424
* - 13
- Iconbit Analog Stick U100 FM
- 1f4d:0237
* - 14
- Hauppauge WinTV USB2 FM (PAL)
- 2040:b110
* - 15
- Hauppauge WinTV USB2 FM (NTSC)
- 2040:b111
* - 16
- Elgato Video Capture V2
- 0fd9:0037
* - 17
- Geniatech OTG102
- 1f4d:0102
* - 18
- Kworld UB445 USB Hybrid
- 1b80:e421
* - 19
- Hauppauge WinTV 930C-HD (1113xx) / HVR-900H (111xxx) / PCTV QuatroStick 521e
- 2040:b130, 2040:b138, 2013:0259
* - 20
- Hauppauge WinTV 930C-HD (1114xx) / HVR-901H (1114xx) / PCTV QuatroStick 522e
- 2040:b131, 2040:b139, 2013:025e
* - 21
- Hauppauge WinTV-HVR-955Q (111401)
- 2040:b123, 2040:b124
* - 22
- Terratec Grabby
- 1f4d:0102
* - 23
- Evromedia USB Full Hybrid Full HD
- 1b80:d3b2
* - 24
- Astrometa T2hybrid
- 15f4:0135
* - 25
- The Imaging Source DFG/USB2pro
- 199e:8002
* - 26
- Hauppauge WinTV-HVR-935C
- 2040:b151
* - 27
- Hauppauge WinTV-HVR-975
- 2040:b150

View File

@ -0,0 +1,267 @@
.. SPDX-License-Identifier: GPL-2.0
cx23885 cards list
==================
.. tabularcolumns:: |p{1.4cm}|p{11.1cm}|p{4.2cm}|
.. flat-table::
:header-rows: 1
:widths: 2 19 18
:stub-columns: 0
* - Card number
- Card name
- PCI subsystem IDs
* - 0
- UNKNOWN/GENERIC
- 0070:3400
* - 1
- Hauppauge WinTV-HVR1800lp
- 0070:7600
* - 2
- Hauppauge WinTV-HVR1800
- 0070:7800, 0070:7801, 0070:7809
* - 3
- Hauppauge WinTV-HVR1250
- 0070:7911
* - 4
- DViCO FusionHDTV5 Express
- 18ac:d500
* - 5
- Hauppauge WinTV-HVR1500Q
- 0070:7790, 0070:7797
* - 6
- Hauppauge WinTV-HVR1500
- 0070:7710, 0070:7717
* - 7
- Hauppauge WinTV-HVR1200
- 0070:71d1, 0070:71d3
* - 8
- Hauppauge WinTV-HVR1700
- 0070:8101
* - 9
- Hauppauge WinTV-HVR1400
- 0070:8010
* - 10
- DViCO FusionHDTV7 Dual Express
- 18ac:d618
* - 11
- DViCO FusionHDTV DVB-T Dual Express
- 18ac:db78
* - 12
- Leadtek Winfast PxDVR3200 H
- 107d:6681
* - 13
- Compro VideoMate E650F
- 185b:e800
* - 14
- TurboSight TBS 6920
- 6920:8888
* - 15
- TeVii S470
- d470:9022
* - 16
- DVBWorld DVB-S2 2005
- 0001:2005
* - 17
- NetUP Dual DVB-S2 CI
- 1b55:2a2c
* - 18
- Hauppauge WinTV-HVR1270
- 0070:2211
* - 19
- Hauppauge WinTV-HVR1275
- 0070:2215, 0070:221d, 0070:22f2
* - 20
- Hauppauge WinTV-HVR1255
- 0070:2251, 0070:22f1
* - 21
- Hauppauge WinTV-HVR1210
- 0070:2291, 0070:2295, 0070:2299, 0070:229d, 0070:22f0, 0070:22f3, 0070:22f4, 0070:22f5
* - 22
- Mygica X8506 DMB-TH
- 14f1:8651
* - 23
- Magic-Pro ProHDTV Extreme 2
- 14f1:8657
* - 24
- Hauppauge WinTV-HVR1850
- 0070:8541
* - 25
- Compro VideoMate E800
- 1858:e800
* - 26
- Hauppauge WinTV-HVR1290
- 0070:8551
* - 27
- Mygica X8558 PRO DMB-TH
- 14f1:8578
* - 28
- LEADTEK WinFast PxTV1200
- 107d:6f22
* - 29
- GoTView X5 3D Hybrid
- 5654:2390
* - 30
- NetUP Dual DVB-T/C-CI RF
- 1b55:e2e4
* - 31
- Leadtek Winfast PxDVR3200 H XC4000
- 107d:6f39
* - 32
- MPX-885
-
* - 33
- Mygica X8502/X8507 ISDB-T
- 14f1:8502
* - 34
- TerraTec Cinergy T PCIe Dual
- 153b:117e
* - 35
- TeVii S471
- d471:9022
* - 36
- Hauppauge WinTV-HVR1255
- 0070:2259
* - 37
- Prof Revolution DVB-S2 8000
- 8000:3034
* - 38
- Hauppauge WinTV-HVR4400/HVR5500
- 0070:c108, 0070:c138, 0070:c1f8
* - 39
- AVerTV Hybrid Express Slim HC81R
- 1461:d939
* - 40
- TurboSight TBS 6981
- 6981:8888
* - 41
- TurboSight TBS 6980
- 6980:8888
* - 42
- Leadtek Winfast PxPVR2200
- 107d:6f21
* - 43
- Hauppauge ImpactVCB-e
- 0070:7133, 0070:7137
* - 44
- DViCO FusionHDTV DVB-T Dual Express2
- 18ac:db98
* - 45
- DVBSky T9580
- 4254:9580
* - 46
- DVBSky T980C
- 4254:980c
* - 47
- DVBSky S950C
- 4254:950c
* - 48
- Technotrend TT-budget CT2-4500 CI
- 13c2:3013
* - 49
- DVBSky S950
- 4254:0950
* - 50
- DVBSky S952
- 4254:0952
* - 51
- DVBSky T982
- 4254:0982
* - 52
- Hauppauge WinTV-HVR5525
- 0070:f038
* - 53
- Hauppauge WinTV Starburst
- 0070:c12a
* - 54
- ViewCast 260e
- 1576:0260
* - 55
- ViewCast 460e
- 1576:0460
* - 56
- Hauppauge WinTV-QuadHD-DVB
- 0070:6a28, 0070:6b28
* - 57
- Hauppauge WinTV-QuadHD-ATSC
- 0070:6a18, 0070:6b18
* - 58
- Hauppauge WinTV-HVR-1265(161111)
- 0070:2a18
* - 59
- Hauppauge WinTV-Starburst2
- 0070:f02a
* - 60
- Hauppauge WinTV-QuadHD-DVB(885)
-
* - 61
- Hauppauge WinTV-QuadHD-ATSC(885)
-
* - 62
- AVerMedia CE310B
- 1461:3100

View File

@ -0,0 +1,383 @@
.. SPDX-License-Identifier: GPL-2.0
CX88 cards list
===============
.. tabularcolumns:: |p{1.4cm}|p{11.1cm}|p{4.2cm}|
.. flat-table::
:header-rows: 1
:widths: 2 19 18
:stub-columns: 0
* - Card number
- Card name
- PCI subsystem IDs
* - 0
- UNKNOWN/GENERIC
-
* - 1
- Hauppauge WinTV 34xxx models
- 0070:3400, 0070:3401
* - 2
- GDI Black Gold
- 14c7:0106, 14c7:0107
* - 3
- PixelView
- 1554:4811
* - 4
- ATI TV Wonder Pro
- 1002:00f8, 1002:00f9
* - 5
- Leadtek Winfast 2000XP Expert
- 107d:6611, 107d:6613
* - 6
- AverTV Studio 303 (M126)
- 1461:000b
* - 7
- MSI TV-@nywhere Master
- 1462:8606
* - 8
- Leadtek Winfast DV2000
- 107d:6620, 107d:6621
* - 9
- Leadtek PVR 2000
- 107d:663b, 107d:663c, 107d:6632, 107d:6630, 107d:6638, 107d:6631, 107d:6637, 107d:663d
* - 10
- IODATA GV-VCP3/PCI
- 10fc:d003
* - 11
- Prolink PlayTV PVR
-
* - 12
- ASUS PVR-416
- 1043:4823, 1461:c111
* - 13
- MSI TV-@nywhere
-
* - 14
- KWorld/VStream XPert DVB-T
- 17de:08a6
* - 15
- DViCO FusionHDTV DVB-T1
- 18ac:db00
* - 16
- KWorld LTV883RF
-
* - 17
- DViCO FusionHDTV 3 Gold-Q
- 18ac:d810, 18ac:d800
* - 18
- Hauppauge Nova-T DVB-T
- 0070:9002, 0070:9001, 0070:9000
* - 19
- Conexant DVB-T reference design
- 14f1:0187
* - 20
- Provideo PV259
- 1540:2580
* - 21
- DViCO FusionHDTV DVB-T Plus
- 18ac:db10, 18ac:db11
* - 22
- pcHDTV HD3000 HDTV
- 7063:3000
* - 23
- digitalnow DNTV Live! DVB-T
- 17de:a8a6
* - 24
- Hauppauge WinTV 28xxx (Roslyn) models
- 0070:2801
* - 25
- Digital-Logic MICROSPACE Entertainment Center (MEC)
- 14f1:0342
* - 26
- IODATA GV/BCTV7E
- 10fc:d035
* - 27
- PixelView PlayTV Ultra Pro (Stereo)
-
* - 28
- DViCO FusionHDTV 3 Gold-T
- 18ac:d820
* - 29
- ADS Tech Instant TV DVB-T PCI
- 1421:0334
* - 30
- TerraTec Cinergy 1400 DVB-T
- 153b:1166
* - 31
- DViCO FusionHDTV 5 Gold
- 18ac:d500
* - 32
- AverMedia UltraTV Media Center PCI 550
- 1461:8011
* - 33
- Kworld V-Stream Xpert DVD
-
* - 34
- ATI HDTV Wonder
- 1002:a101
* - 35
- WinFast DTV1000-T
- 107d:665f
* - 36
- AVerTV 303 (M126)
- 1461:000a
* - 37
- Hauppauge Nova-S-Plus DVB-S
- 0070:9201, 0070:9202
* - 38
- Hauppauge Nova-SE2 DVB-S
- 0070:9200
* - 39
- KWorld DVB-S 100
- 17de:08b2, 1421:0341
* - 40
- Hauppauge WinTV-HVR1100 DVB-T/Hybrid
- 0070:9400, 0070:9402
* - 41
- Hauppauge WinTV-HVR1100 DVB-T/Hybrid (Low Profile)
- 0070:9800, 0070:9802
* - 42
- digitalnow DNTV Live! DVB-T Pro
- 1822:0025, 1822:0019
* - 43
- KWorld/VStream XPert DVB-T with cx22702
- 17de:08a1, 12ab:2300
* - 44
- DViCO FusionHDTV DVB-T Dual Digital
- 18ac:db50, 18ac:db54
* - 45
- KWorld HardwareMpegTV XPert
- 17de:0840, 1421:0305
* - 46
- DViCO FusionHDTV DVB-T Hybrid
- 18ac:db40, 18ac:db44
* - 47
- pcHDTV HD5500 HDTV
- 7063:5500
* - 48
- Kworld MCE 200 Deluxe
- 17de:0841
* - 49
- PixelView PlayTV P7000
- 1554:4813
* - 50
- NPG Tech Real TV FM Top 10
- 14f1:0842
* - 51
- WinFast DTV2000 H
- 107d:665e
* - 52
- Geniatech DVB-S
- 14f1:0084
* - 53
- Hauppauge WinTV-HVR3000 TriMode Analog/DVB-S/DVB-T
- 0070:1404, 0070:1400, 0070:1401, 0070:1402
* - 54
- Norwood Micro TV Tuner
-
* - 55
- Shenzhen Tungsten Ages Tech TE-DTV-250 / Swann OEM
- c180:c980
* - 56
- Hauppauge WinTV-HVR1300 DVB-T/Hybrid MPEG Encoder
- 0070:9600, 0070:9601, 0070:9602
* - 57
- ADS Tech Instant Video PCI
- 1421:0390
* - 58
- Pinnacle PCTV HD 800i
- 11bd:0051
* - 59
- DViCO FusionHDTV 5 PCI nano
- 18ac:d530
* - 60
- Pinnacle Hybrid PCTV
- 12ab:1788
* - 61
- Leadtek TV2000 XP Global
- 107d:6f18, 107d:6618, 107d:6619
* - 62
- PowerColor RA330
- 14f1:ea3d
* - 63
- Geniatech X8000-MT DVBT
- 14f1:8852
* - 64
- DViCO FusionHDTV DVB-T PRO
- 18ac:db30
* - 65
- DViCO FusionHDTV 7 Gold
- 18ac:d610
* - 66
- Prolink Pixelview MPEG 8000GT
- 1554:4935
* - 67
- Kworld PlusTV HD PCI 120 (ATSC 120)
- 17de:08c1
* - 68
- Hauppauge WinTV-HVR4000 DVB-S/S2/T/Hybrid
- 0070:6900, 0070:6904, 0070:6902
* - 69
- Hauppauge WinTV-HVR4000(Lite) DVB-S/S2
- 0070:6905, 0070:6906
* - 70
- TeVii S460 DVB-S/S2
- d460:9022
* - 71
- Omicom SS4 DVB-S/S2 PCI
- A044:2011
* - 72
- TBS 8920 DVB-S/S2
- 8920:8888
* - 73
- TeVii S420 DVB-S
- d420:9022
* - 74
- Prolink Pixelview Global Extreme
- 1554:4976
* - 75
- PROF 7300 DVB-S/S2
- B033:3033
* - 76
- SATTRADE ST4200 DVB-S/S2
- b200:4200
* - 77
- TBS 8910 DVB-S
- 8910:8888
* - 78
- Prof 6200 DVB-S
- b022:3022
* - 79
- Terratec Cinergy HT PCI MKII
- 153b:1177
* - 80
- Hauppauge WinTV-IR Only
- 0070:9290
* - 81
- Leadtek WinFast DTV1800 Hybrid
- 107d:6654
* - 82
- WinFast DTV2000 H rev. J
- 107d:6f2b
* - 83
- Prof 7301 DVB-S/S2
- b034:3034
* - 84
- Samsung SMT 7020 DVB-S
- 18ac:dc00, 18ac:dccd
* - 85
- Twinhan VP-1027 DVB-S
- 1822:0023
* - 86
- TeVii S464 DVB-S/S2
- d464:9022
* - 87
- Leadtek WinFast DTV2000 H PLUS
- 107d:6f42
* - 88
- Leadtek WinFast DTV1800 H (XC4000)
- 107d:6f38
* - 89
- Leadtek TV2000 XP Global (SC4100)
- 107d:6f36
* - 90
- Leadtek TV2000 XP Global (XC4100)
- 107d:6f43
* - 91
- NotOnlyTV LV3H
-

View File

@ -0,0 +1,58 @@
.. SPDX-License-Identifier: GPL-2.0
The cx88 driver
===============
Author: Gerd Hoffmann
This is a v4l2 device driver for the cx2388x chip.
Current status
--------------
video
- Works.
- Overlay isn't supported.
audio
- Works. The TV standard detection is made by the driver, as the
hardware has bugs to auto-detect.
- audio data dma (i.e. recording without loopback cable to the
sound card) is supported via cx88-alsa.
vbi
- Works.
How to add support for new cards
--------------------------------
The driver needs some config info for the TV cards. This stuff is in
cx88-cards.c. If the driver doesn't work well you likely need a new
entry for your card in that file. Check the kernel log (using dmesg)
to see whenever the driver knows your card or not. There is a line
like this one:
.. code-block:: none
cx8800[0]: subsystem: 0070:3400, board: Hauppauge WinTV \
34xxx models [card=1,autodetected]
If your card is listed as "board: UNKNOWN/GENERIC" it is unknown to
the driver. What to do then?
1) Try upgrading to the latest snapshot, maybe it has been added
meanwhile.
2) You can try to create a new entry yourself, have a look at
cx88-cards.c. If that worked, mail me your changes as unified
diff ("diff -u").
3) Or you can mail me the config information. We need at least the
following information to add the card:
- the PCI Subsystem ID ("0070:3400" from the line above,
"lspci -v" output is fine too).
- the tuner type used by the card. You can try to find one by
trial-and-error using the tuner=<n> insmod option. If you
know which one the card has you can also have a look at the
list in CARDLIST.tuner

View File

@ -0,0 +1,65 @@
.. SPDX-License-Identifier: GPL-2.0
The VPBE V4L2 driver design
===========================
Functional partitioning
-----------------------
Consists of the following:
1. V4L2 display driver
Implements creation of video2 and video3 device nodes and
provides v4l2 device interface to manage VID0 and VID1 layers.
2. Display controller
Loads up VENC, OSD and external encoders such as ths8200. It provides
a set of API calls to V4L2 drivers to set the output/standards
in the VENC or external sub devices. It also provides
a device object to access the services from OSD subdevice
using sub device ops. The connection of external encoders to VENC LCD
controller port is done at init time based on default output and standard
selection or at run time when application change the output through
V4L2 IOCTLs.
When connected to an external encoder, vpbe controller is also responsible
for setting up the interface between VENC and external encoders based on
board specific settings (specified in board-xxx-evm.c). This allows
interfacing external encoders such as ths8200. The setup_if_config()
is implemented for this as well as configure_venc() (part of the next patch)
API to set timings in VENC for a specific display resolution. As of this
patch series, the interconnection and enabling and setting of the external
encoders is not present, and would be a part of the next patch series.
3. VENC subdevice module
Responsible for setting outputs provided through internal DACs and also
setting timings at LCD controller port when external encoders are connected
at the port or LCD panel timings required. When external encoder/LCD panel
is connected, the timings for a specific standard/preset is retrieved from
the board specific table and the values are used to set the timings in
venc using non-standard timing mode.
Support LCD Panel displays using the VENC. For example to support a Logic
PD display, it requires setting up the LCD controller port with a set of
timings for the resolution supported and setting the dot clock. So we could
add the available outputs as a board specific entry (i.e add the "LogicPD"
output name to board-xxx-evm.c). A table of timings for various LCDs
supported can be maintained in the board specific setup file to support
various LCD displays.As of this patch a basic driver is present, and this
support for external encoders and displays forms a part of the next
patch series.
4. OSD module
OSD module implements all OSD layer management and hardware specific
features. The VPBE module interacts with the OSD for enabling and
disabling appropriate features of the OSD.
Current status
--------------
A fully functional working version of the V4L2 driver is available. This
driver has been tested with NTSC and PAL standards and buffer streaming.

View File

@ -0,0 +1,16 @@
.. SPDX-License-Identifier: GPL-2.0
========================================
Digital TV driver-specific documentation
========================================
.. toctree::
:maxdepth: 2
avermedia
bt8xx
lmedm04
opera-firmware
technisat
ttusb-dec
zr364xx

View File

@ -0,0 +1,16 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-a800 cards list
=======================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - AVerMedia AverTV DVB-T USB 2.0 (A800)
- 07ca:a800, 07ca:a801

View File

@ -0,0 +1,20 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-af9005 cards list
=========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - Afatech DVB-T USB1.1 stick
- 15a4:9020
* - Ansonic DVB-T USB1.1 stick
- 10b9:6000
* - TerraTec Cinergy T USB XE
- 0ccd:0055

View File

@ -0,0 +1,80 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-af9015 cards list
=========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - AVerMedia A309
- 07ca:a309
* - AVerMedia AVerTV DVB-T Volar X
- 07ca:a815
* - Afatech AF9015 reference design
- 15a4:9015, 15a4:9016
* - AverMedia AVerTV Red HD+ (A850T)
- 07ca:850b
* - AverMedia AVerTV Volar Black HD (A850)
- 07ca:850a
* - AverMedia AVerTV Volar GPS 805 (A805)
- 07ca:a805
* - AverMedia AVerTV Volar M (A815Mac)
- 07ca:815a
* - Conceptronic USB2.0 DVB-T CTVDIGRCU V3.0
- 1b80:e397
* - DigitalNow TinyTwin
- 13d3:3226
* - DigitalNow TinyTwin v2
- 1b80:e402
* - DigitalNow TinyTwin v3
- 1f4d:9016
* - Fujitsu-Siemens Slim Mobile USB DVB-T
- 07ca:8150
* - Genius TVGo DVB-T03
- 0458:4012
* - KWorld Digital MC-810
- 1b80:c810
* - KWorld PlusTV DVB-T PCI Pro Card (DVB-T PC160-T)
- 1b80:c161
* - KWorld PlusTV Dual DVB-T PCI (DVB-T PC160-2T)
- 1b80:c160
* - KWorld PlusTV Dual DVB-T Stick (DVB-T 399U)
- 1b80:e399, 1b80:e400
* - KWorld USB DVB-T Stick Mobile (UB383-T)
- 1b80:e383
* - KWorld USB DVB-T TV Stick II (VS-DVB-T 395U)
- 1b80:e396, 1b80:e39b, 1b80:e395, 1b80:e39a
* - Leadtek WinFast DTV Dongle Gold
- 0413:6029
* - Leadtek WinFast DTV2000DS
- 0413:6a04
* - MSI DIGIVOX Duo
- 1462:8801
* - MSI Digi VOX mini III
- 1462:8807
* - Pinnacle PCTV 71e
- 2304:022b
* - Sveon STV20 Tuner USB DVB-T HDTV
- 1b80:e39d
* - Sveon STV22 Dual USB DVB-T Tuner HDTV
- 1b80:e401
* - Telestar Starstick 2
- 10b9:8000
* - TerraTec Cinergy T Stick Dual RC
- 0ccd:0099
* - TerraTec Cinergy T Stick RC
- 0ccd:0097
* - TerraTec Cinergy T USB XE
- 0ccd:0069
* - TrekStor DVB-T USB Stick
- 15a4:901b
* - TwinHan AzureWave AD-TU700(704J)
- 13d3:3237
* - Xtensions XD-380
- 1ae7:0381

View File

@ -0,0 +1,74 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-af9035 cards list
=========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - AVerMedia AVerTV Volar HD/PRO (A835)
- 07ca:a835, 07ca:b835
* - AVerMedia HD Volar (A867)
- 07ca:1867, 07ca:a867, 07ca:0337
* - AVerMedia TD310 DVB-T2
- 07ca:1871
* - AVerMedia Twinstar (A825)
- 07ca:0825
* - Afatech AF9035 reference design
- 15a4:9035, 15a4:1000, 15a4:1001, 15a4:1002, 15a4:1003
* - Asus U3100Mini Plus
- 0b05:1779
* - Avermedia A835B(1835)
- 07ca:1835
* - Avermedia A835B(2835)
- 07ca:2835
* - Avermedia A835B(3835)
- 07ca:3835
* - Avermedia A835B(4835)
- 07ca:4835
* - Avermedia AverTV Volar HD 2 (TD110)
- 07ca:a110
* - Avermedia H335
- 07ca:0335
* - Digital Dual TV Receiver CTVDIGDUAL_V2
- 1b80:e410
* - EVOLVEO XtraTV stick
- 1f4d:a115
* - Hauppauge WinTV-MiniStick 2
- 2040:f900
* - ITE 9135 Generic
- 048d:9135
* - ITE 9135(9005) Generic
- 048d:9005
* - ITE 9135(9006) Generic
- 048d:9006
* - ITE 9303 Generic
- 048d:9306
* - Kworld UB499-2T T09
- 1b80:e409
* - Leadtek WinFast DTV Dongle Dual
- 0413:6a05
* - Logilink VG0022A
- 1d19:0100
* - PCTV AndroiDTV (78e)
- 2013:025a
* - PCTV microStick (79e)
- 2013:0262
* - Sveon STV22 Dual DVB-T HDTV
- 1b80:e411
* - TerraTec Cinergy T Stick
- 0ccd:0093
* - TerraTec Cinergy T Stick (rev. 2)
- 0ccd:00aa
* - TerraTec Cinergy T Stick Dual RC (rev. 2)
- 0ccd:0099
* - TerraTec Cinergy TC2 Stick
- 0ccd:10b2
* - TerraTec T1
- 0ccd:10ae

View File

@ -0,0 +1,16 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-anysee cards list
=========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - Anysee
- 04b4:861f, 1c73:861f

View File

@ -0,0 +1,16 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-au6610 cards list
=========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - Sigmatek DVB-110
- 058f:6610

View File

@ -0,0 +1,20 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-az6007 cards list
=========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - Azurewave 6007
- 13d3:0ccd
* - Technisat CableStar Combo HD CI
- 14f7:0003
* - Terratec H7
- 0ccd:10b4, 0ccd:10a3

View File

@ -0,0 +1,24 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-az6027 cards list
=========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - AZUREWAVE DVB-S/S2 USB2.0 (AZ6027)
- 13d3:3275
* - Elgato EyeTV Sat
- 0fd9:002a, 0fd9:0025, 0fd9:0036
* - TERRATEC S7
- 0ccd:10a4
* - TERRATEC S7 MKII
- 0ccd:10ac
* - Technisat SkyStar USB 2 HD CI
- 14f7:0001, 14f7:0002

View File

@ -0,0 +1,18 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-ce6230 cards list
=========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - AVerMedia A310 USB 2.0 DVB-T tuner
- 07ca:a310
* - Intel CE9500 reference design
- 8086:9500

View File

@ -0,0 +1,16 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-cinergyT2 cards list
============================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - TerraTec/qanu USB2.0 Highspeed DVB-T Receiver
- 0ccd:0x0038

View File

@ -0,0 +1,40 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-cxusb cards list
========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - AVerMedia AVerTVHD Volar (A868R)
-
* - Conexant DMB-TH Stick
-
* - DViCO FusionHDTV DVB-T Dual Digital 2
-
* - DViCO FusionHDTV DVB-T Dual Digital 4
-
* - DViCO FusionHDTV DVB-T Dual Digital 4 (rev 2)
-
* - DViCO FusionHDTV DVB-T Dual USB
-
* - DViCO FusionHDTV DVB-T NANO2
-
* - DViCO FusionHDTV DVB-T USB (LGZ201)
-
* - DViCO FusionHDTV DVB-T USB (TH7579)
-
* - DViCO FusionHDTV5 USB Gold
-
* - DigitalNow DVB-T Dual USB
-
* - Medion MD95700 (MDUSBTV-HYBRID)
-
* - Mygica D689 DMB-TH
-

View File

@ -0,0 +1,162 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-dib0700 cards list
==========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - ASUS My Cinema U3000 Mini DVBT Tuner
- 0b05:171f
* - ASUS My Cinema U3100 Mini DVBT Tuner
- 0b05:173f
* - AVerMedia AVerTV DVB-T Express
- 07ca:b568
* - AVerMedia AVerTV DVB-T Volar
- 07ca:a807, 07ca:b808
* - Artec T14BR DVB-T
- 05d8:810f
* - Asus My Cinema-U3000Hybrid
- 0b05:1736
* - Compro Videomate U500
- 185b:1e78, 185b:1e80
* - DiBcom NIM7090 reference design
- 10b8:1bb2
* - DiBcom NIM8096MD reference design
- 10b8:1fa8
* - DiBcom NIM9090MD reference design
- 10b8:2384
* - DiBcom STK7070P reference design
- 10b8:1ebc
* - DiBcom STK7070PD reference design
- 10b8:1ebe
* - DiBcom STK7700D reference design
- 10b8:1ef0
* - DiBcom STK7700P reference design
- 10b8:1e14, 10b8:1e78
* - DiBcom STK7770P reference design
- 10b8:1e80
* - DiBcom STK807xP reference design
- 10b8:1f90
* - DiBcom STK807xPVR reference design
- 10b8:1f98
* - DiBcom STK8096-PVR reference design
- 2013:1faa, 10b8:1faa
* - DiBcom STK8096GP reference design
- 10b8:1fa0
* - DiBcom STK9090M reference design
- 10b8:2383
* - DiBcom TFE7090PVR reference design
- 10b8:1bb4
* - DiBcom TFE7790P reference design
- 10b8:1e6e
* - DiBcom TFE8096P reference design
- 10b8:1f9C
* - Elgato EyeTV DTT
- 0fd9:0021
* - Elgato EyeTV DTT rev. 2
- 0fd9:003f
* - Elgato EyeTV Diversity
- 0fd9:0011
* - Elgato EyeTV Dtt Dlx PD378S
- 0fd9:0020
* - EvolutePC TVWay+
- 1e59:0002
* - Gigabyte U7000
- 1044:7001
* - Gigabyte U8000-RH
- 1044:7002
* - Hama DVB=T Hybrid USB Stick
- 147f:2758
* - Hauppauge ATSC MiniCard (B200)
- 2040:b200
* - Hauppauge ATSC MiniCard (B210)
- 2040:b210
* - Hauppauge Nova-T 500 Dual DVB-T
- 2040:9941, 2040:9950
* - Hauppauge Nova-T MyTV.t
- 2040:7080
* - Hauppauge Nova-T Stick
- 2040:7050, 2040:7060, 2040:7070
* - Hauppauge Nova-TD Stick (52009)
- 2040:5200
* - Hauppauge Nova-TD Stick/Elgato Eye-TV Diversity
- 2040:9580
* - Hauppauge Nova-TD-500 (84xxx)
- 2040:8400
* - Leadtek WinFast DTV Dongle H
- 0413:60f6
* - Leadtek Winfast DTV Dongle (STK7700P based)
- 0413:6f00, 0413:6f01
* - Medion CTX1921 DVB-T USB
- 1660:1921
* - Microsoft Xbox One Digital TV Tuner
- 045e:02d5
* - PCTV 2002e
- 2013:025c
* - PCTV 2002e SE
- 2013:025d
* - Pinnacle Expresscard 320cx
- 2304:022e
* - Pinnacle PCTV 2000e
- 2304:022c
* - Pinnacle PCTV 282e
- 2013:0248, 2304:0248
* - Pinnacle PCTV 340e HD Pro USB Stick
- 2304:023d
* - Pinnacle PCTV 72e
- 2304:0236
* - Pinnacle PCTV 73A
- 2304:0243
* - Pinnacle PCTV 73e
- 2304:0237
* - Pinnacle PCTV 73e SE
- 2013:0245, 2304:0245
* - Pinnacle PCTV DVB-T Flash Stick
- 2304:0228
* - Pinnacle PCTV Dual DVB-T Diversity Stick
- 2304:0229
* - Pinnacle PCTV HD Pro USB Stick
- 2304:023a
* - Pinnacle PCTV HD USB Stick
- 2304:023b
* - Pinnacle PCTV Hybrid Stick Solo
- 2304:023e
* - Prolink Pixelview SBTVD
- 1554:5010
* - Sony PlayTV
- 1415:0003
* - TechniSat AirStar TeleStick 2
- 14f7:0004
* - Terratec Cinergy DT USB XS Diversity/ T5
- 0ccd:0081, 0ccd:10a1
* - Terratec Cinergy DT XS Diversity
- 0ccd:005a
* - Terratec Cinergy HT Express
- 0ccd:0060
* - Terratec Cinergy HT USB XE
- 0ccd:0058
* - Terratec Cinergy T Express
- 0ccd:0062
* - Terratec Cinergy T USB XXS (HD)/ T3
- 0ccd:0078, 0ccd:10a0, 0ccd:00ab
* - Uniwill STK7700P based (Hama and others)
- 1584:6003
* - YUAN High-Tech DiBcom STK7700D
- 1164:1e8c
* - YUAN High-Tech MC770
- 1164:0871
* - YUAN High-Tech STK7700D
- 1164:1efc
* - YUAN High-Tech STK7700PH
- 1164:1f08
* - Yuan EC372S
- 1164:1edc
* - Yuan PD378S
- 1164:2edc

View File

@ -0,0 +1,42 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-dibusb-mb cards list
============================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - AVerMedia AverTV DVBT USB1.1
- 14aa:0001, 14aa:0002
* - Artec T1 USB1.1 TVBOX with AN2135
- 05d8:8105, 05d8:8106
* - Artec T1 USB1.1 TVBOX with AN2235
- 05d8:8107, 05d8:8108
* - Artec T1 USB1.1 TVBOX with AN2235 (faulty USB IDs)
- 0547:2235
* - Artec T1 USB2.0
- 05d8:8109, 05d8:810a
* - Compro Videomate DVB-U2000 - DVB-T USB1.1 (please confirm to linux-dvb)
- 185b:d000, 145f:010c, 185b:d001
* - DiBcom USB1.1 DVB-T reference design (MOD3000)
- 10b8:0bb8, 10b8:0bb9
* - Grandtec USB1.1 DVB-T
- 5032:0fa0, 5032:0bb8, 5032:0fa1, 5032:0bb9
* - KWorld V-Stream XPERT DTV - DVB-T USB1.1
- eb1a:17de, eb1a:17df
* - KWorld Xpert DVB-T USB2.0
- eb2a:17de
* - KWorld/ADSTech Instant DVB-T USB2.0
- 06e1:a333, 06e1:a334
* - TwinhanDTV USB-Ter USB1.1 / Magic Box I / HAMA USB1.1 DVB-T device
- 13d3:3201, 1822:3201, 13d3:3202, 1822:3202
* - Unknown USB1.1 DVB-T device ???? please report the name to the author
- 1025:005e, 1025:005f
* - VideoWalker DVB-T USB
- 0458:701e, 0458:701f

View File

@ -0,0 +1,30 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-dibusb-mc cards list
============================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - Artec T1 USB2.0 TVBOX (please check the warm ID)
- 05d8:8109, 05d8:810a
* - Artec T14 - USB2.0 DVB-T
- 05d8:810b, 05d8:810c
* - DiBcom USB2.0 DVB-T reference design (MOD3000P)
- 10b8:0bc6, 10b8:0bc7
* - GRAND - USB2.0 DVB-T adapter
- 5032:0bc6, 5032:0bc7
* - Humax/Coex DVB-T USB Stick 2.0 High Speed
- 10b9:5000, 10b9:5001
* - LITE-ON USB2.0 DVB-T Tuner
- 04ca:f000, 04ca:f001
* - Leadtek - USB2.0 Winfast DTV dongle
- 0413:6025, 0413:6026
* - MSI Digivox Mini SL
- eb1a:e360, eb1a:e361

View File

@ -0,0 +1,16 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-digitv cards list
=========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - Nebula Electronics uDigiTV DVB-T USB2.0)
- 0547:0201

View File

@ -0,0 +1,22 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-dtt200u cards list
==========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - WideView WT-220U PenType Receiver (Miglia)
- 18f3:0220
* - WideView WT-220U PenType Receiver (Typhoon/Freecom)
- 14aa:0222, 14aa:0220, 14aa:0221, 14aa:0225, 14aa:0226
* - WideView WT-220U PenType Receiver (based on ZL353)
- 14aa:022a, 14aa:022b
* - WideView/Yuan/Yakumo/Hama/Typhoon DVB-T USB2.0 (WT-200U)
- 14aa:0201, 14aa:0301

View File

@ -0,0 +1,16 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-dtv5100 cards list
==========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - AME DTV-5100 USB2.0 DVB-T
- 0x06be:0xa232

View File

@ -0,0 +1,42 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-dvbsky cards list
=========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - DVBSky S960/S860
- 0572:6831
* - DVBSky S960CI
- 0572:960c
* - DVBSky T330
- 0572:0320
* - DVBSky T680CI
- 0572:680c
* - MyGica Mini DVB-T2 USB Stick T230
- 0572:c688
* - MyGica Mini DVB-T2 USB Stick T230C
- 0572:c689
* - MyGica Mini DVB-T2 USB Stick T230C Lite
- 0572:c699
* - MyGica Mini DVB-T2 USB Stick T230C v2
- 0572:c68a
* - TechnoTrend TT-connect CT2-4650 CI
- 0b48:3012
* - TechnoTrend TT-connect CT2-4650 CI v1.1
- 0b48:3015
* - TechnoTrend TT-connect S2-4650 CI
- 0b48:3017
* - TechnoTrend TVStick CT2-4400
- 0b48:3014
* - Terratec Cinergy S2 Rev.4
- 0ccd:0105
* - Terratec H7 Rev.4
- 0ccd:10a5

View File

@ -0,0 +1,52 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-dw2102 cards list
=========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - DVBWorld DVB-C 3101 USB2.0
- 04b4:3101
* - DVBWorld DVB-S 2101 USB2.0
- 04b4:0x2101
* - DVBWorld DVB-S 2102 USB2.0
- 04b4:2102
* - DVBWorld DW2104 USB2.0
- 04b4:2104
* - GOTVIEW Satellite HD
- 0x1FE1:5456
* - Geniatech T220 DVB-T/T2 USB2.0
- 0x1f4d:0xD220
* - SU3000HD DVB-S USB2.0
- 0x1f4d:0x3000
* - TeVii S482 (tuner 1)
- 0x9022:0xd483
* - TeVii S482 (tuner 2)
- 0x9022:0xd484
* - TeVii S630 USB
- 0x9022:d630
* - TeVii S650 USB2.0
- 0x9022:d650
* - TeVii S662
- 0x9022:d662
* - TechnoTrend TT-connect S2-4600
- 0b48:3011
* - TerraTec Cinergy S USB
- 0ccd:0064
* - Terratec Cinergy S2 USB BOX
- 0ccd:0x0105
* - Terratec Cinergy S2 USB HD
- 0ccd:00a8
* - Terratec Cinergy S2 USB HD Rev.2
- 0ccd:00b0
* - Terratec Cinergy S2 USB HD Rev.3
- 0ccd:0102
* - X3M TV SPC1400HD PCI
- 0x1f4d:0x3100

View File

@ -0,0 +1,16 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-ec168 cards list
========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - E3C EC168 reference design
- 18b4:1689, 18b4:fffa, 18b4:fffb, 18b4:1001, 18b4:1002

View File

@ -0,0 +1,20 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-gl861 cards list
========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - 774 Friio White ISDB-T USB2.0
- 7a69:0001
* - A-LINK DTU DVB-T USB2.0
- 05e3:f170
* - MSI Mega Sky 55801 DVB-T USB2.0
- 0db0:5581

View File

@ -0,0 +1,22 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-gp8psk cards list
=========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - Genpix 8PSK-to-USB2 Rev.1 DVB-S receiver
- 09c0:0200, 09c0:0201
* - Genpix 8PSK-to-USB2 Rev.2 DVB-S receiver
- 09c0:0202
* - Genpix SkyWalker-1 DVB-S receiver
- 09c0:0203
* - Genpix SkyWalker-2 DVB-S receiver
- 09c0:0206

View File

@ -0,0 +1,20 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-lmedm04 cards list
==========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - DM04_LME2510C_DVB-S
- 3344:1120
* - DM04_LME2510C_DVB-S RS2000
- 3344:22f0
* - DM04_LME2510_DVB-S
- 3344:1122

View File

@ -0,0 +1,26 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-m920x cards list
========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - DTV-DVB UDTT7049
- 13d3:3219
* - Dposh DVB-T USB2.0
- 1498:9206, 1498:a090
* - LifeView TV Walker Twin DVB-T USB2.0
- 10fd:0514, 10fd:0513
* - MSI DIGI VOX mini II DVB-T USB2.0
- 10fd:1513
* - MSI Mega Sky 580 DVB-T USB2.0
- 0db0:5580
* - Pinnacle PCTV 310e
- 13d3:3211

View File

@ -0,0 +1,36 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-mxl111sf cards list
===========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - HCW 117xxx
- 2040:b702
* - HCW 126xxx
- 2040:c602, 2040:c60a
* - Hauppauge 117xxx ATSC+
- 2040:b700, 2040:b703, 2040:b753, 2040:b763, 2040:b757, 2040:b767
* - Hauppauge 117xxx DVBT
- 2040:b704, 2040:b764
* - Hauppauge 126xxx
- 2040:c612, 2040:c61a
* - Hauppauge 126xxx ATSC
- 2040:c601, 2040:c609, 2040:b701
* - Hauppauge 126xxx ATSC+
- 2040:c600, 2040:c603, 2040:c60b, 2040:c653, 2040:c65b
* - Hauppauge 126xxx DVBT
- 2040:c604, 2040:c60c
* - Hauppauge 138xxx DVBT
- 2040:d854, 2040:d864, 2040:d8d4, 2040:d8e4
* - Hauppauge Mercury
- 2040:d853, 2040:d863, 2040:d8d3, 2040:d8e3, 2040:d8ff
* - Hauppauge WinTV-Aero-M
- 2040:c613, 2040:c61b

View File

@ -0,0 +1,16 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-nova-t-usb2 cards list
==============================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - Hauppauge WinTV-NOVA-T usb2
- 2040:9300, 2040:9301

View File

@ -0,0 +1,16 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-opera1 cards list
=========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - Opera1 DVB-S USB2.0
- 04b4:2830, 695c:3829

View File

@ -0,0 +1,20 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-pctv452e cards list
===========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - PCTV HDTV USB
- 2304:021f
* - Technotrend TT Connect S2-3600
- 0b48:3007
* - Technotrend TT Connect S2-3650-CI
- 0b48:300a

View File

@ -0,0 +1,80 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-rtl28xxu cards list
===========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - ASUS My Cinema-U3100Mini Plus V2
- 1b80:d3a8
* - Astrometa DVB-T2
- 15f4:0131
* - Compro VideoMate U620F
- 185b:0620
* - Compro VideoMate U650F
- 185b:0650
* - Crypto ReDi PC 50 A
- 1f4d:a803
* - Dexatek DK DVB-T Dongle
- 1d19:1101
* - Dexatek DK mini DVB-T Dongle
- 1d19:1102
* - DigitalNow Quad DVB-T Receiver
- 0413:6680
* - Freecom USB2.0 DVB-T
- 14aa:0160, 14aa:0161
* - G-Tek Electronics Group Lifeview LV5TDLX DVB-T
- 1f4d:b803
* - GIGABYTE U7300
- 1b80:d393
* - Genius TVGo DVB-T03
- 0458:707f
* - GoTView MasterHD 3
- 5654:ca42
* - Leadtek WinFast DTV Dongle mini
- 0413:6a03
* - Leadtek WinFast DTV2000DS Plus
- 0413:6f12
* - Leadtek Winfast DTV Dongle Mini D
- 0413:6f0f
* - MSI DIGIVOX Micro HD
- 1d19:1104
* - MaxMedia HU394-T
- 1b80:d394
* - PROlectrix DV107669
- 1f4d:d803
* - Peak DVB-T USB
- 1b80:d395
* - Realtek RTL2831U reference design
- 0bda:2831
* - Realtek RTL2832U reference design
- 0bda:2832, 0bda:2838
* - Sveon STV20
- 1b80:d39d
* - Sveon STV21
- 1b80:d3b0
* - Sveon STV27
- 1b80:d3af
* - TURBO-X Pure TV Tuner DTT-2000
- 1b80:d3a4
* - TerraTec Cinergy T Stick Black
- 0ccd:00a9
* - TerraTec Cinergy T Stick RC (Rev. 3)
- 0ccd:00d3
* - TerraTec Cinergy T Stick+
- 0ccd:00d7
* - TerraTec NOXON DAB Stick
- 0ccd:00b3
* - TerraTec NOXON DAB Stick (rev 2)
- 0ccd:00e0
* - TerraTec NOXON DAB Stick (rev 3)
- 0ccd:00b4
* - Trekstor DVB-T Stick Terres 2.0
- 1f4d:C803

View File

@ -0,0 +1,16 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-technisat-usb2 cards list
=================================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - Technisat SkyStar USB HD (DVB-S/S2)
- 14f7:0500

View File

@ -0,0 +1,24 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-ttusb2 cards list
=========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - Pinnacle 400e DVB-S USB2.0
- 2304:020f
* - Pinnacle 450e DVB-S USB2.0
- 2304:0222
* - Technotrend TT-connect CT-3650
- 0b48:300d
* - Technotrend TT-connect S-2400
- 0b48:3006
* - Technotrend TT-connect S-2400 (8kB EEPROM)
- 0b48:3009

View File

@ -0,0 +1,16 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-umt-010 cards list
==========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - Hanftek UMT-010 DVB-T USB2.0
- 15f4:0001, 15f4:0015

View File

@ -0,0 +1,16 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-vp702x cards list
=========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - TwinhanDTV StarBox DVB-S USB2.0 (VP7021)
- 13d3:3207

View File

@ -0,0 +1,18 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-vp7045 cards list
=========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - DigitalNow TinyUSB 2 DVB-t Receiver
- 13d3:3223, 13d3:3224
* - Twinhan USB2.0 DVB-T receiver (TwinhanDTV Alpha/MagicBox II)
- 13d3:3205, 13d3:3206

View File

@ -0,0 +1,16 @@
.. SPDX-License-Identifier: GPL-2.0
dvb-usb-zd1301 cards list
=========================
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
.. flat-table::
:header-rows: 1
:widths: 7 13
:stub-columns: 0
* - Card name
- USB IDs
* - ZyDAS ZD1301 reference design
- 0ace:13a1

View File

@ -0,0 +1,12 @@
.. SPDX-License-Identifier: GPL-2.0
==========
Digital TV
==========
.. toctree::
dvb_intro
ci
faq
dvb_references

View File

@ -0,0 +1,616 @@
.. SPDX-License-Identifier: GPL-2.0
==============================
Using the Digital TV Framework
==============================
Introduction
~~~~~~~~~~~~
One significant difference between Digital TV and Analogue TV that the
unwary (like myself) should consider is that, although the component
structure of DVB-T cards are substantially similar to Analogue TV cards,
they function in substantially different ways.
The purpose of an Analogue TV is to receive and display an Analogue
Television signal. An Analogue TV signal (otherwise known as composite
video) is an analogue encoding of a sequence of image frames (25 frames
per second in Europe) rasterised using an interlacing technique.
Interlacing takes two fields to represent one frame. Therefore, an
Analogue TV card for a PC has the following purpose:
* Tune the receiver to receive a broadcast signal
* demodulate the broadcast signal
* demultiplex the analogue video signal and analogue audio
signal.
.. note::
some countries employ a digital audio signal
embedded within the modulated composite analogue signal -
using NICAM signaling.)
* digitize the analogue video signal and make the resulting datastream
available to the data bus.
The digital datastream from an Analogue TV card is generated by
circuitry on the card and is often presented uncompressed. For a PAL TV
signal encoded at a resolution of 768x576 24-bit color pixels over 25
frames per second - a fair amount of data is generated and must be
processed by the PC before it can be displayed on the video monitor
screen. Some Analogue TV cards for PCs have onboard MPEG2 encoders which
permit the raw digital data stream to be presented to the PC in an
encoded and compressed form - similar to the form that is used in
Digital TV.
The purpose of a simple budget digital TV card (DVB-T,C or S) is to
simply:
* Tune the received to receive a broadcast signal. * Extract the encoded
digital datastream from the broadcast signal.
* Make the encoded digital datastream (MPEG2) available to the data bus.
The significant difference between the two is that the tuner on the
analogue TV card spits out an Analogue signal, whereas the tuner on the
digital TV card spits out a compressed encoded digital datastream. As
the signal is already digitised, it is trivial to pass this datastream
to the PC databus with minimal additional processing and then extract
the digital video and audio datastreams passing them to the appropriate
software or hardware for decoding and viewing.
Getting the card going
~~~~~~~~~~~~~~~~~~~~~~
The Device Driver API for DVB under Linux will the following
device nodes via the devfs filesystem:
* /dev/dvb/adapter0/demux0
* /dev/dvb/adapter0/dvr0
* /dev/dvb/adapter0/frontend0
The ``/dev/dvb/adapter0/dvr0`` device node is used to read the MPEG2
Data Stream and the ``/dev/dvb/adapter0/frontend0`` device node is used
to tune the frontend tuner module. The ``/dev/dvb/adapter0/demux0`` is
used to control what programs will be received.
Depending on the card's feature set, the Device Driver API could also
expose other device nodes:
* /dev/dvb/adapter0/ca0
* /dev/dvb/adapter0/audio0
* /dev/dvb/adapter0/net0
* /dev/dvb/adapter0/osd0
* /dev/dvb/adapter0/video0
The ``/dev/dvb/adapter0/ca0`` is used to decode encrypted channels. The
other device nodes are found only on devices that use the av7110
driver, with is now obsoleted, together with the extra API whose such
devices use.
Receiving a digital TV channel
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This section attempts to explain how it works and how this affects the
configuration of a Digital TV card.
On this example, we're considering tuning into DVB-T channels in
Australia, at the Melbourne region.
The frequencies broadcast by Mount Dandenong transmitters are,
currently:
Table 1. Transponder Frequencies Mount Dandenong, Vic, Aus.
=========== ===========
Broadcaster Frequency
=========== ===========
Seven 177.500 Mhz
SBS 184.500 Mhz
Nine 191.625 Mhz
Ten 219.500 Mhz
ABC 226.500 Mhz
Channel 31 557.625 Mhz
=========== ===========
The digital TV Scan utilities (like dvbv5-scan) have use a set of
compiled-in defaults for various countries and regions. Those are
currently provided as a separate package, called dtv-scan-tables. It's
git tree is located at LinuxTV.org:
https://git.linuxtv.org/dtv-scan-tables.git/
If none of the tables there suit, you can specify a data file on the
command line which contains the transponder frequencies. Here is a
sample file for the above channel transponders, in the old "channel"
format::
# Data file for DVB scan program
#
# C Frequency SymbolRate FEC QAM
# S Frequency Polarisation SymbolRate FEC
# T Frequency Bandwidth FEC FEC2 QAM Mode Guard Hier
T 177500000 7MHz AUTO AUTO QAM64 8k 1/16 NONE
T 184500000 7MHz AUTO AUTO QAM64 8k 1/8 NONE
T 191625000 7MHz AUTO AUTO QAM64 8k 1/16 NONE
T 219500000 7MHz AUTO AUTO QAM64 8k 1/16 NONE
T 226500000 7MHz AUTO AUTO QAM64 8k 1/16 NONE
T 557625000 7MHz AUTO AUTO QPSK 8k 1/16 NONE
Nowadays, we prefer to use a newer format, with is more verbose and easier
to understand. With the new format, the "Seven" channel transponder's
data is represented by::
[Seven]
DELIVERY_SYSTEM = DVBT
FREQUENCY = 177500000
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = AUTO
CODE_RATE_LP = AUTO
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/16
HIERARCHY = NONE
INVERSION = AUTO
For an updated version of the complete table, please see:
https://git.linuxtv.org/dtv-scan-tables.git/tree/dvb-t/au-Melbourne
When the Digital TV scanning utility runs, it will output a file
containing the information for all the audio and video programs that
exists into each channel's transponders which the card's frontend can
lock onto. (i.e. any whose signal is strong enough at your antenna).
Here's the output of the dvbv5 tools from a channel scan took from
Melburne::
[ABC HDTV]
SERVICE_ID = 560
VIDEO_PID = 2307
AUDIO_PID = 0
DELIVERY_SYSTEM = DVBT
FREQUENCY = 226500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 3/4
CODE_RATE_LP = 3/4
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/16
HIERARCHY = NONE
[ABC TV Melbourne]
SERVICE_ID = 561
VIDEO_PID = 512
AUDIO_PID = 650
DELIVERY_SYSTEM = DVBT
FREQUENCY = 226500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 3/4
CODE_RATE_LP = 3/4
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/16
HIERARCHY = NONE
[ABC TV 2]
SERVICE_ID = 562
VIDEO_PID = 512
AUDIO_PID = 650
DELIVERY_SYSTEM = DVBT
FREQUENCY = 226500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 3/4
CODE_RATE_LP = 3/4
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/16
HIERARCHY = NONE
[ABC TV 3]
SERVICE_ID = 563
VIDEO_PID = 512
AUDIO_PID = 650
DELIVERY_SYSTEM = DVBT
FREQUENCY = 226500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 3/4
CODE_RATE_LP = 3/4
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/16
HIERARCHY = NONE
[ABC TV 4]
SERVICE_ID = 564
VIDEO_PID = 512
AUDIO_PID = 650
DELIVERY_SYSTEM = DVBT
FREQUENCY = 226500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 3/4
CODE_RATE_LP = 3/4
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/16
HIERARCHY = NONE
[ABC DiG Radio]
SERVICE_ID = 566
VIDEO_PID = 0
AUDIO_PID = 2311
DELIVERY_SYSTEM = DVBT
FREQUENCY = 226500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 3/4
CODE_RATE_LP = 3/4
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/16
HIERARCHY = NONE
[TEN Digital]
SERVICE_ID = 1585
VIDEO_PID = 512
AUDIO_PID = 650
DELIVERY_SYSTEM = DVBT
FREQUENCY = 219500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 3/4
CODE_RATE_LP = 1/2
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/16
HIERARCHY = NONE
[TEN Digital 1]
SERVICE_ID = 1586
VIDEO_PID = 512
AUDIO_PID = 650
DELIVERY_SYSTEM = DVBT
FREQUENCY = 219500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 3/4
CODE_RATE_LP = 1/2
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/16
HIERARCHY = NONE
[TEN Digital 2]
SERVICE_ID = 1587
VIDEO_PID = 512
AUDIO_PID = 650
DELIVERY_SYSTEM = DVBT
FREQUENCY = 219500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 3/4
CODE_RATE_LP = 1/2
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/16
HIERARCHY = NONE
[TEN Digital 3]
SERVICE_ID = 1588
VIDEO_PID = 512
AUDIO_PID = 650
DELIVERY_SYSTEM = DVBT
FREQUENCY = 219500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 3/4
CODE_RATE_LP = 1/2
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/16
HIERARCHY = NONE
[TEN Digital]
SERVICE_ID = 1589
VIDEO_PID = 512
AUDIO_PID = 650
DELIVERY_SYSTEM = DVBT
FREQUENCY = 219500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 3/4
CODE_RATE_LP = 1/2
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/16
HIERARCHY = NONE
[TEN Digital 4]
SERVICE_ID = 1590
VIDEO_PID = 512
AUDIO_PID = 650
DELIVERY_SYSTEM = DVBT
FREQUENCY = 219500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 3/4
CODE_RATE_LP = 1/2
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/16
HIERARCHY = NONE
[TEN Digital]
SERVICE_ID = 1591
VIDEO_PID = 512
AUDIO_PID = 650
DELIVERY_SYSTEM = DVBT
FREQUENCY = 219500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 3/4
CODE_RATE_LP = 1/2
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/16
HIERARCHY = NONE
[TEN HD]
SERVICE_ID = 1592
VIDEO_PID = 514
AUDIO_PID = 0
DELIVERY_SYSTEM = DVBT
FREQUENCY = 219500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 3/4
CODE_RATE_LP = 1/2
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/16
HIERARCHY = NONE
[TEN Digital]
SERVICE_ID = 1593
VIDEO_PID = 512
AUDIO_PID = 650
DELIVERY_SYSTEM = DVBT
FREQUENCY = 219500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 3/4
CODE_RATE_LP = 1/2
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/16
HIERARCHY = NONE
[Nine Digital]
SERVICE_ID = 1072
VIDEO_PID = 513
AUDIO_PID = 660
DELIVERY_SYSTEM = DVBT
FREQUENCY = 191625000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 3/4
CODE_RATE_LP = 1/2
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/16
HIERARCHY = NONE
[Nine Digital HD]
SERVICE_ID = 1073
VIDEO_PID = 512
AUDIO_PID = 0
DELIVERY_SYSTEM = DVBT
FREQUENCY = 191625000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 3/4
CODE_RATE_LP = 1/2
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/16
HIERARCHY = NONE
[Nine Guide]
SERVICE_ID = 1074
VIDEO_PID = 514
AUDIO_PID = 670
DELIVERY_SYSTEM = DVBT
FREQUENCY = 191625000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 3/4
CODE_RATE_LP = 1/2
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/16
HIERARCHY = NONE
[7 Digital]
SERVICE_ID = 1328
VIDEO_PID = 769
AUDIO_PID = 770
DELIVERY_SYSTEM = DVBT
FREQUENCY = 177500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 2/3
CODE_RATE_LP = 2/3
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/8
HIERARCHY = NONE
[7 Digital 1]
SERVICE_ID = 1329
VIDEO_PID = 769
AUDIO_PID = 770
DELIVERY_SYSTEM = DVBT
FREQUENCY = 177500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 2/3
CODE_RATE_LP = 2/3
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/8
HIERARCHY = NONE
[7 Digital 2]
SERVICE_ID = 1330
VIDEO_PID = 769
AUDIO_PID = 770
DELIVERY_SYSTEM = DVBT
FREQUENCY = 177500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 2/3
CODE_RATE_LP = 2/3
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/8
HIERARCHY = NONE
[7 Digital 3]
SERVICE_ID = 1331
VIDEO_PID = 769
AUDIO_PID = 770
DELIVERY_SYSTEM = DVBT
FREQUENCY = 177500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 2/3
CODE_RATE_LP = 2/3
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/8
HIERARCHY = NONE
[7 HD Digital]
SERVICE_ID = 1332
VIDEO_PID = 833
AUDIO_PID = 834
DELIVERY_SYSTEM = DVBT
FREQUENCY = 177500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 2/3
CODE_RATE_LP = 2/3
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/8
HIERARCHY = NONE
[7 Program Guide]
SERVICE_ID = 1334
VIDEO_PID = 865
AUDIO_PID = 866
DELIVERY_SYSTEM = DVBT
FREQUENCY = 177500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 2/3
CODE_RATE_LP = 2/3
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/8
HIERARCHY = NONE
[SBS HD]
SERVICE_ID = 784
VIDEO_PID = 102
AUDIO_PID = 103
DELIVERY_SYSTEM = DVBT
FREQUENCY = 536500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 2/3
CODE_RATE_LP = 2/3
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/8
HIERARCHY = NONE
[SBS DIGITAL 1]
SERVICE_ID = 785
VIDEO_PID = 161
AUDIO_PID = 81
DELIVERY_SYSTEM = DVBT
FREQUENCY = 536500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 2/3
CODE_RATE_LP = 2/3
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/8
HIERARCHY = NONE
[SBS DIGITAL 2]
SERVICE_ID = 786
VIDEO_PID = 162
AUDIO_PID = 83
DELIVERY_SYSTEM = DVBT
FREQUENCY = 536500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 2/3
CODE_RATE_LP = 2/3
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/8
HIERARCHY = NONE
[SBS EPG]
SERVICE_ID = 787
VIDEO_PID = 163
AUDIO_PID = 85
DELIVERY_SYSTEM = DVBT
FREQUENCY = 536500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 2/3
CODE_RATE_LP = 2/3
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/8
HIERARCHY = NONE
[SBS RADIO 1]
SERVICE_ID = 798
VIDEO_PID = 0
AUDIO_PID = 201
DELIVERY_SYSTEM = DVBT
FREQUENCY = 536500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 2/3
CODE_RATE_LP = 2/3
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/8
HIERARCHY = NONE
[SBS RADIO 2]
SERVICE_ID = 799
VIDEO_PID = 0
AUDIO_PID = 202
DELIVERY_SYSTEM = DVBT
FREQUENCY = 536500000
INVERSION = OFF
BANDWIDTH_HZ = 7000000
CODE_RATE_HP = 2/3
CODE_RATE_LP = 2/3
MODULATION = QAM/64
TRANSMISSION_MODE = 8K
GUARD_INTERVAL = 1/8
HIERARCHY = NONE

View File

@ -0,0 +1,29 @@
.. SPDX-License-Identifier: GPL-2.0
References
==========
The main development site and GIT repository for Digital TV
drivers is https://linuxtv.org.
The DVB mailing list linux-dvb is hosted at vger. Please see
http://vger.kernel.org/vger-lists.html#linux-media for details.
There are also some other old lists hosted at:
https://linuxtv.org/lists.php. If you're insterested on that for historic
reasons, please check the archive at https://linuxtv.org/pipermail/linux-dvb/.
The media subsystem Wiki is hosted at https://linuxtv.org/wiki/.
There, you'll find lots of information, from both development and usage
of media boards. Please check it before asking newbie questions on the
mailing list or IRC channels.
The API documentation is documented at the Kernel tree. You can find it
in both html and pdf formats, together with other useful documentation at:
- https://linuxtv.org/docs.php.
You may also find useful material at https://linuxtv.org/downloads/.
In order to get the needed firmware for some drivers to work, there's
a script at the kernel tree, at scripts/get_dvb_firmware.

View File

@ -0,0 +1,436 @@
.. SPDX-License-Identifier: GPL-2.0
EM28xx cards list
=================
.. tabularcolumns:: |p{1.4cm}|p{10.0cm}|p{1.9cm}|p{4.2cm}|
.. flat-table::
:header-rows: 1
:widths: 2 12 3 16
:stub-columns: 0
* - Card number
- Card name
- Empia Chip
- USB IDs
* - 0
- Unknown EM2800 video grabber
- em2800
- eb1a:2800
* - 1
- Unknown EM2750/28xx video grabber
- em2820 or em2840
- eb1a:2710, eb1a:2820, eb1a:2821, eb1a:2860, eb1a:2861, eb1a:2862, eb1a:2863, eb1a:2870, eb1a:2881, eb1a:2883, eb1a:2868, eb1a:2875
* - 2
- Terratec Cinergy 250 USB
- em2820 or em2840
- 0ccd:0036
* - 3
- Pinnacle PCTV USB 2
- em2820 or em2840
- 2304:0208
* - 4
- Hauppauge WinTV USB 2
- em2820 or em2840
- 2040:4200, 2040:4201
* - 5
- MSI VOX USB 2.0
- em2820 or em2840
-
* - 6
- Terratec Cinergy 200 USB
- em2800
-
* - 7
- Leadtek Winfast USB II
- em2800
- 0413:6023
* - 8
- Kworld USB2800
- em2800
-
* - 9
- Pinnacle Dazzle DVC 90/100/101/107 / Kaiser Baas Video to DVD maker / Kworld DVD Maker 2 / Plextor ConvertX PX-AV100U
- em2820 or em2840
- 1b80:e302, 1b80:e304, 2304:0207, 2304:021a, 093b:a003
* - 10
- Hauppauge WinTV HVR 900
- em2880
- 2040:6500
* - 11
- Terratec Hybrid XS
- em2880
-
* - 12
- Kworld PVR TV 2800 RF
- em2820 or em2840
-
* - 13
- Terratec Prodigy XS
- em2880
-
* - 14
- SIIG AVTuner-PVR / Pixelview Prolink PlayTV USB 2.0
- em2820 or em2840
-
* - 15
- V-Gear PocketTV
- em2800
-
* - 16
- Hauppauge WinTV HVR 950
- em2883
- 2040:6513, 2040:6517, 2040:651b
* - 17
- Pinnacle PCTV HD Pro Stick
- em2880
- 2304:0227
* - 18
- Hauppauge WinTV HVR 900 (R2)
- em2880
- 2040:6502
* - 19
- EM2860/SAA711X Reference Design
- em2860
-
* - 20
- AMD ATI TV Wonder HD 600
- em2880
- 0438:b002
* - 21
- eMPIA Technology, Inc. GrabBeeX+ Video Encoder
- em2800
- eb1a:2801
* - 22
- EM2710/EM2750/EM2751 webcam grabber
- em2750
- eb1a:2750, eb1a:2751
* - 23
- Huaqi DLCW-130
- em2750
-
* - 24
- D-Link DUB-T210 TV Tuner
- em2820 or em2840
- 2001:f112
* - 25
- Gadmei UTV310
- em2820 or em2840
-
* - 26
- Hercules Smart TV USB 2.0
- em2820 or em2840
-
* - 27
- Pinnacle PCTV USB 2 (Philips FM1216ME)
- em2820 or em2840
-
* - 28
- Leadtek Winfast USB II Deluxe
- em2820 or em2840
-
* - 29
- EM2860/TVP5150 Reference Design
- em2860
- eb1a:5051
* - 30
- Videology 20K14XUSB USB2.0
- em2820 or em2840
-
* - 31
- Usbgear VD204v9
- em2821
-
* - 32
- Supercomp USB 2.0 TV
- em2821
-
* - 33
- Elgato Video Capture
- em2860
- 0fd9:0033
* - 34
- Terratec Cinergy A Hybrid XS
- em2860
- 0ccd:004f
* - 35
- Typhoon DVD Maker
- em2860
-
* - 36
- NetGMBH Cam
- em2860
-
* - 37
- Gadmei UTV330
- em2860
- eb1a:50a6
* - 38
- Yakumo MovieMixer
- em2861
-
* - 39
- KWorld PVRTV 300U
- em2861
- eb1a:e300
* - 40
- Plextor ConvertX PX-TV100U
- em2861
- 093b:a005
* - 41
- Kworld 350 U DVB-T
- em2870
- eb1a:e350
* - 42
- Kworld 355 U DVB-T
- em2870
- eb1a:e355, eb1a:e357, eb1a:e359
* - 43
- Terratec Cinergy T XS
- em2870
-
* - 44
- Terratec Cinergy T XS (MT2060)
- em2870
- 0ccd:0043
* - 45
- Pinnacle PCTV DVB-T
- em2870
-
* - 46
- Compro, VideoMate U3
- em2870
- 185b:2870
* - 47
- KWorld DVB-T 305U
- em2880
- eb1a:e305
* - 48
- KWorld DVB-T 310U
- em2880
-
* - 49
- MSI DigiVox A/D
- em2880
- eb1a:e310
* - 50
- MSI DigiVox A/D II
- em2880
- eb1a:e320
* - 51
- Terratec Hybrid XS Secam
- em2880
- 0ccd:004c
* - 52
- DNT DA2 Hybrid
- em2881
-
* - 53
- Pinnacle Hybrid Pro
- em2881
-
* - 54
- Kworld VS-DVB-T 323UR
- em2882
- eb1a:e323
* - 55
- Terratec Cinergy Hybrid T USB XS (em2882)
- em2882
- 0ccd:005e, 0ccd:0042
* - 56
- Pinnacle Hybrid Pro (330e)
- em2882
- 2304:0226
* - 57
- Kworld PlusTV HD Hybrid 330
- em2883
- eb1a:a316
* - 58
- Compro VideoMate ForYou/Stereo
- em2820 or em2840
- 185b:2041
* - 59
- Pinnacle PCTV HD Mini
- em2874
- 2304:023f
* - 60
- Hauppauge WinTV HVR 850
- em2883
- 2040:651f
* - 61
- Pixelview PlayTV Box 4 USB 2.0
- em2820 or em2840
-
* - 62
- Gadmei TVR200
- em2820 or em2840
-
* - 63
- Kaiomy TVnPC U2
- em2860
- eb1a:e303
* - 64
- Easy Cap Capture DC-60
- em2860
- 1b80:e309
* - 65
- IO-DATA GV-MVP/SZ
- em2820 or em2840
- 04bb:0515
* - 66
- Empire dual TV
- em2880
-
* - 67
- Terratec Grabby
- em2860
- 0ccd:0096, 0ccd:10AF
* - 68
- Terratec AV350
- em2860
- 0ccd:0084
* - 69
- KWorld ATSC 315U HDTV TV Box
- em2882
- eb1a:a313
* - 70
- Evga inDtube
- em2882
-
* - 71
- Silvercrest Webcam 1.3mpix
- em2820 or em2840
-
* - 72
- Gadmei UTV330+
- em2861
-
* - 73
- Reddo DVB-C USB TV Box
- em2870
-
* - 74
- Actionmaster/LinXcel/Digitus VC211A
- em2800
-
* - 75
- Dikom DK300
- em2882
-
* - 76
- KWorld PlusTV 340U or UB435-Q (ATSC)
- em2870
- 1b80:a340
* - 77
- EM2874 Leadership ISDBT
- em2874
-
* - 78
- PCTV nanoStick T2 290e
- em28174
- 2013:024f
* - 79
- Terratec Cinergy H5
- em2884
- eb1a:2885, 0ccd:10a2, 0ccd:10ad, 0ccd:10b6
* - 80
- PCTV DVB-S2 Stick (460e)
- em28174
- 2013:024c
* - 81
- Hauppauge WinTV HVR 930C
- em2884
- 2040:1605
* - 82
- Terratec Cinergy HTC Stick
- em2884
- 0ccd:00b2
* - 83
- Honestech Vidbox NW03
- em2860
- eb1a:5006
* - 84
- MaxMedia UB425-TC
- em2874
- 1b80:e425
* - 85
- PCTV QuatroStick (510e)
- em2884
- 2304:0242
* - 86
- PCTV QuatroStick nano (520e)
- em2884
- 2013:0251
* - 87
- Terratec Cinergy HTC USB XS
- em2884
- 0ccd:008e, 0ccd:00ac
* - 88
- C3 Tech Digital Duo HDTV/SDTV USB
- em2884
- 1b80:e755
* - 89
- Delock 61959
- em2874
- 1b80:e1cc
* - 90
- KWorld USB ATSC TV Stick UB435-Q V2
- em2874
- 1b80:e346
* - 91
- SpeedLink Vicious And Devine Laplace webcam
- em2765
- 1ae7:9003, 1ae7:9004
* - 92
- PCTV DVB-S2 Stick (461e)
- em28178
- 2013:0258
* - 93
- KWorld USB ATSC TV Stick UB435-Q V3
- em2874
- 1b80:e34c
* - 94
- PCTV tripleStick (292e)
- em28178
- 2013:025f, 2013:0264, 2040:0264, 2040:8264, 2040:8268
* - 95
- Leadtek VC100
- em2861
- 0413:6f07
* - 96
- Terratec Cinergy T2 Stick HD
- em28178
- eb1a:8179
* - 97
- Elgato EyeTV Hybrid 2008 INT
- em2884
- 0fd9:0018
* - 98
- PLEX PX-BCUD
- em28178
- 3275:0085
* - 99
- Hauppauge WinTV-dualHD DVB
- em28174
- 2040:0265, 2040:8265
* - 100
- Hauppauge WinTV-dualHD 01595 ATSC/QAM
- em28174
- 2040:026d, 2040:826d
* - 101
- Terratec Cinergy H6 rev. 2
- em2884
- 0ccd:10b2
* - 102
- :ZOLID HYBRID TV STICK
- em2882
-
* - 103
- Magix USB Videowandler-2
- em2861
- 1b80:e349
* - 104
- PCTV DVB-S2 Stick (461e v2)
- em28178
- 2013:0461, 2013:0259

View File

@ -0,0 +1,216 @@
.. SPDX-License-Identifier: GPL-2.0
FAQ
===
.. note::
1. With Digital TV, a single physical channel may have different
contents inside it. The specs call each one as a *service*.
This is what a TV user would call "channel". So, in order to
avoid confusion, we're calling *transponders* as the physical
channel on this FAQ, and *services* for the logical channel.
2. The LinuxTV community maintains some Wiki pages with contain
a lot of information related to the media subsystem. If you
don't find an answer for your needs here, it is likely that
you'll be able to get something useful there. It is hosted
at:
https://www.linuxtv.org/wiki/
Some very frequently asked questions about Linux Digital TV support
1. The signal seems to die a few seconds after tuning.
It's not a bug, it's a feature. Because the frontends have
significant power requirements (and hence get very hot), they
are powered down if they are unused (i.e. if the frontend device
is closed). The ``dvb-core`` module parameter ``dvb_shutdown_timeout``
allow you to change the timeout (default 5 seconds). Setting the
timeout to 0 disables the timeout feature.
2. How can I watch TV?
Together with the Linux Kernel, the Digital TV developers support
some simple utilities which are mainly intended for testing
and to demonstrate how the DVB API works. This is called DVB v5
tools and are grouped together with the ``v4l-utils`` git repository:
https://git.linuxtv.org/v4l-utils.git/
You can find more information at the LinuxTV wiki:
https://www.linuxtv.org/wiki/index.php/DVBv5_Tools
The first step is to get a list of services that are transmitted.
This is done by using several existing tools. You can use
for example the ``dvbv5-scan`` tool. You can find more information
about it at:
https://www.linuxtv.org/wiki/index.php/Dvbv5-scan
There are some other applications like ``w_scan`` [#]_ that do a
blind scan, trying hard to find all possible channels, but
those consumes a large amount of time to run.
.. [#] https://www.linuxtv.org/wiki/index.php/W_scan
Also, some applications like ``kaffeine`` have their own code
to scan for services. So, you don't need to use an external
application to obtain such list.
Most of such tools need a file containing a list of channel
transponders available on your area. So, LinuxTV developers
maintain tables of Digital TV channel transponders, receiving
patches from the community to keep them updated.
This list is hosted at:
https://git.linuxtv.org/dtv-scan-tables.git
And packaged on several distributions.
Kaffeine has some blind scan support for some terrestrial standards.
It also relies on DTV scan tables, although it contains a copy
of it internally (and, if requested by the user, it will download
newer versions of it).
If you are lucky you can just use one of the supplied channel
transponders. If not, you may need to seek for such info at
the Internet and create a new file. There are several sites with
contains physical channel lists. For cable and satellite, usually
knowing how to tune into a single channel is enough for the
scanning tool to identify the other channels. On some places,
this could also work for terrestrial transmissions.
Once you have a transponders list, you need to generate a services
list with a tool like ``dvbv5-scan``.
Almost all modern Digital TV cards don't have built-in hardware
MPEG-decoders. So, it is up to the application to get a MPEG-TS
stream provided by the board, split it into audio, video and other
data and decode.
3. Which Digital TV applications exist?
Several media player applications are capable of tuning into
digital TV channels, including Kaffeine, Vlc, mplayer and MythTV.
Kaffeine aims to be very user-friendly, and it is maintained
by one of the Kernel driver developers.
A comprehensive list of those and other apps can be found at:
https://www.linuxtv.org/wiki/index.php/TV_Related_Software
Some of the most popular ones are linked below:
https://kde.org/applications/multimedia/org.kde.kaffeine
KDE media player, focused on Digital TV support
https://www.linuxtv.org/vdrwiki/index.php/Main_Page
Klaus Schmidinger's Video Disk Recorder
https://linuxtv.org/downloads and https://git.linuxtv.org/
Digital TV and other media-related applications and
Kernel drivers. The ``v4l-utils`` package there contains
several swiss knife tools for using with Digital TV.
http://sourceforge.net/projects/dvbtools/
Dave Chapman's dvbtools package, including
dvbstream and dvbtune
http://www.dbox2.info/
LinuxDVB on the dBox2
http://www.tuxbox.org/
the TuxBox CVS many interesting DVB applications and the dBox2
DVB source
http://www.nenie.org/misc/mpsys/
MPSYS: a MPEG2 system library and tools
https://www.videolan.org/vlc/index.pt.html
Vlc
http://mplayerhq.hu/
MPlayer
http://xine.sourceforge.net/ and http://xinehq.de/
Xine
http://www.mythtv.org/
MythTV - analog TV and digital TV PVR
http://dvbsnoop.sourceforge.net/
DVB sniffer program to monitor, analyze, debug, dump
or view dvb/mpeg/dsm-cc/mhp stream information (TS,
PES, SECTION)
4. Can't get a signal tuned correctly
That could be due to a lot of problems. On my personal experience,
usually TV cards need stronger signals than TV sets, and are more
sensitive to noise. So, perhaps you just need a better antenna or
cabling. Yet, it could also be some hardware or driver issue.
For example, if you are using a Technotrend/Hauppauge DVB-C card
*without* analog module, you might have to use module parameter
adac=-1 (dvb-ttpci.o).
Please see the FAQ page at linuxtv.org, as it could contain some
valuable information:
https://www.linuxtv.org/wiki/index.php/FAQ_%26_Troubleshooting
If that doesn't work, check at the linux-media ML archives, to
see if someone else had a similar problem with your hardware
and/or digital TV service provider:
https://lore.kernel.org/linux-media/
If none of this works, you can try sending an e-mail to the
linux-media ML and see if someone else could shed some light.
The e-mail is linux-media AT vger.kernel.org.
5. The dvb_net device doesn't give me any packets at all
Run ``tcpdump`` on the ``dvb0_0`` interface. This sets the interface
into promiscuous mode so it accepts any packets from the PID
you have configured with the ``dvbnet`` utility. Check if there
are any packets with the IP addr and MAC addr you have
configured with ``ifconfig`` or with ``ip addr``.
If ``tcpdump`` doesn't give you any output, check the statistics
which ``ifconfig`` or ``netstat -ni`` outputs. (Note: If the MAC
address is wrong, ``dvb_net`` won't get any input; thus you have to
run ``tcpdump`` before checking the statistics.) If there are no
packets at all then maybe the PID is wrong. If there are error packets,
then either the PID is wrong or the stream does not conform to
the MPE standard (EN 301 192, http://www.etsi.org/). You can
use e.g. ``dvbsnoop`` for debugging.
6. The ``dvb_net`` device doesn't give me any multicast packets
Check your routes if they include the multicast address range.
Additionally make sure that "source validation by reversed path
lookup" is disabled::
$ "echo 0 > /proc/sys/net/ipv4/conf/dvb0/rp_filter"
7. What are all those modules that need to be loaded?
In order to make it more flexible and support different hardware
combinations, the media subsystem is written on a modular way.
So, besides the Digital TV hardware module for the main chipset,
it also needs to load a frontend driver, plus the Digital TV
core. If the board also has remote controller, it will also
need the remote controller core and the remote controller tables.
The same happens if the board has support for analog TV: the
core support for video4linux need to be loaded.
The actual module names are Linux-kernel version specific, as,
from time to time, things change, in order to make the media
support more flexible.

View File

@ -0,0 +1,153 @@
.. SPDX-License-Identifier: GPL-2.0
.. include:: <isonum.txt>
The Samsung S5P/EXYNOS4 FIMC driver
===================================
Copyright |copy| 2012 - 2013 Samsung Electronics Co., Ltd.
The FIMC (Fully Interactive Mobile Camera) device available in Samsung
SoC Application Processors is an integrated camera host interface, color
space converter, image resizer and rotator. It's also capable of capturing
data from LCD controller (FIMD) through the SoC internal writeback data
path. There are multiple FIMC instances in the SoCs (up to 4), having
slightly different capabilities, like pixel alignment constraints, rotator
availability, LCD writeback support, etc. The driver is located at
drivers/media/platform/exynos4-is directory.
Supported SoCs
--------------
S5PC100 (mem-to-mem only), S5PV210, EXYNOS4210
Supported features
------------------
- camera parallel interface capture (ITU-R.BT601/565);
- camera serial interface capture (MIPI-CSI2);
- memory-to-memory processing (color space conversion, scaling, mirror
and rotation);
- dynamic pipeline re-configuration at runtime (re-attachment of any FIMC
instance to any parallel video input or any MIPI-CSI front-end);
- runtime PM and system wide suspend/resume
Not currently supported
-----------------------
- LCD writeback input
- per frame clock gating (mem-to-mem)
User space interfaces
---------------------
Media device interface
~~~~~~~~~~~~~~~~~~~~~~
The driver supports Media Controller API as defined at :ref:`media_controller`.
The media device driver name is "SAMSUNG S5P FIMC".
The purpose of this interface is to allow changing assignment of FIMC instances
to the SoC peripheral camera input at runtime and optionally to control internal
connections of the MIPI-CSIS device(s) to the FIMC entities.
The media device interface allows to configure the SoC for capturing image
data from the sensor through more than one FIMC instance (e.g. for simultaneous
viewfinder and still capture setup).
Reconfiguration is done by enabling/disabling media links created by the driver
during initialization. The internal device topology can be easily discovered
through media entity and links enumeration.
Memory-to-memory video node
~~~~~~~~~~~~~~~~~~~~~~~~~~~
V4L2 memory-to-memory interface at /dev/video? device node. This is standalone
video device, it has no media pads. However please note the mem-to-mem and
capture video node operation on same FIMC instance is not allowed. The driver
detects such cases but the applications should prevent them to avoid an
undefined behaviour.
Capture video node
~~~~~~~~~~~~~~~~~~
The driver supports V4L2 Video Capture Interface as defined at
:ref:`devices`.
At the capture and mem-to-mem video nodes only the multi-planar API is
supported. For more details see: :ref:`planar-apis`.
Camera capture subdevs
~~~~~~~~~~~~~~~~~~~~~~
Each FIMC instance exports a sub-device node (/dev/v4l-subdev?), a sub-device
node is also created per each available and enabled at the platform level
MIPI-CSI receiver device (currently up to two).
sysfs
~~~~~
In order to enable more precise camera pipeline control through the sub-device
API the driver creates a sysfs entry associated with "s5p-fimc-md" platform
device. The entry path is: /sys/platform/devices/s5p-fimc-md/subdev_conf_mode.
In typical use case there could be a following capture pipeline configuration:
sensor subdev -> mipi-csi subdev -> fimc subdev -> video node
When we configure these devices through sub-device API at user space, the
configuration flow must be from left to right, and the video node is
configured as last one.
When we don't use sub-device user space API the whole configuration of all
devices belonging to the pipeline is done at the video node driver.
The sysfs entry allows to instruct the capture node driver not to configure
the sub-devices (format, crop), to avoid resetting the subdevs' configuration
when the last configuration steps at the video node is performed.
For full sub-device control support (subdevs configured at user space before
starting streaming):
.. code-block:: none
# echo "sub-dev" > /sys/platform/devices/s5p-fimc-md/subdev_conf_mode
For V4L2 video node control only (subdevs configured internally by the host
driver):
.. code-block:: none
# echo "vid-dev" > /sys/platform/devices/s5p-fimc-md/subdev_conf_mode
This is a default option.
5. Device mapping to video and subdev device nodes
--------------------------------------------------
There are associated two video device nodes with each device instance in
hardware - video capture and mem-to-mem and additionally a subdev node for
more precise FIMC capture subsystem control. In addition a separate v4l2
sub-device node is created per each MIPI-CSIS device.
How to find out which /dev/video? or /dev/v4l-subdev? is assigned to which
device?
You can either grep through the kernel log to find relevant information, i.e.
.. code-block:: none
# dmesg | grep -i fimc
(note that udev, if present, might still have rearranged the video nodes),
or retrieve the information from /dev/media? with help of the media-ctl tool:
.. code-block:: none
# media-ctl -p
7. Build
--------
If the driver is built as a loadable kernel module (CONFIG_VIDEO_SAMSUNG_S5P_FIMC=m)
two modules are created (in addition to the core v4l2 modules): s5p-fimc.ko and
optional s5p-csis.ko (MIPI-CSI receiver subdev).

View File

@ -0,0 +1,226 @@
.. SPDX-License-Identifier: GPL-2.0
================
Frontend drivers
================
.. note::
#) There is no guarantee that every frontend driver works
out of the box with every card, because of different wiring.
#) The demodulator chips can be used with a variety of
tuner/PLL chips, and not all combinations are supported. Often
the demodulator and tuner/PLL chip are inside a metal box for
shielding, and the whole metal box has its own part number.
Common Interface (EN50221) controller drivers
=============================================
============== =========================================================
Driver Name
============== =========================================================
cxd2099 Sony CXD2099AR Common Interface driver
sp2 CIMaX SP2
============== =========================================================
ATSC (North American/Korean Terrestrial/Cable DTV) frontends
============================================================
============== =========================================================
Driver Name
============== =========================================================
au8522_dig Auvitek AU8522 based DTV demod
au8522_decoder Auvitek AU8522 based ATV demod
bcm3510 Broadcom BCM3510
lg2160 LG Electronics LG216x based
lgdt3305 LG Electronics LGDT3304 and LGDT3305 based
lgdt3306a LG Electronics LGDT3306A based
lgdt330x LG Electronics LGDT3302/LGDT3303 based
nxt200x NxtWave Communications NXT2002/NXT2004 based
or51132 Oren OR51132 based
or51211 Oren OR51211 based
s5h1409 Samsung S5H1409 based
s5h1411 Samsung S5H1411 based
============== =========================================================
DVB-C (cable) frontends
=======================
============== =========================================================
Driver Name
============== =========================================================
stv0297 ST STV0297 based
tda10021 Philips TDA10021 based
tda10023 Philips TDA10023 based
ves1820 VLSI VES1820 based
============== =========================================================
DVB-S (satellite) frontends
===========================
============== =========================================================
Driver Name
============== =========================================================
cx24110 Conexant CX24110 based
cx24116 Conexant CX24116 based
cx24117 Conexant CX24117 based
cx24120 Conexant CX24120 based
cx24123 Conexant CX24123 based
ds3000 Montage Tehnology DS3000 based
mb86a16 Fujitsu MB86A16 based
mt312 Zarlink VP310/MT312/ZL10313 based
s5h1420 Samsung S5H1420 based
si21xx Silicon Labs SI21XX based
stb6000 ST STB6000 silicon tuner
stv0288 ST STV0288 based
stv0299 ST STV0299 based
stv0900 ST STV0900 based
stv6110 ST STV6110 silicon tuner
tda10071 NXP TDA10071
tda10086 Philips TDA10086 based
tda8083 Philips TDA8083 based
tda8261 Philips TDA8261 based
tda826x Philips TDA826X silicon tuner
ts2020 Montage Tehnology TS2020 based tuners
tua6100 Infineon TUA6100 PLL
cx24113 Conexant CX24113/CX24128 tuner for DVB-S/DSS
itd1000 Integrant ITD1000 Zero IF tuner for DVB-S/DSS
ves1x93 VLSI VES1893 or VES1993 based
zl10036 Zarlink ZL10036 silicon tuner
zl10039 Zarlink ZL10039 silicon tuner
============== =========================================================
DVB-T (terrestrial) frontends
=============================
============== =========================================================
Driver Name
============== =========================================================
af9013 Afatech AF9013 demodulator
cx22700 Conexant CX22700 based
cx22702 Conexant cx22702 demodulator (OFDM)
cxd2820r Sony CXD2820R
cxd2841er Sony CXD2841ER
cxd2880 Sony CXD2880 DVB-T2/T tuner + demodulator
dib3000mb DiBcom 3000M-B
dib3000mc DiBcom 3000P/M-C
dib7000m DiBcom 7000MA/MB/PA/PB/MC
dib7000p DiBcom 7000PC
dib9000 DiBcom 9000
drxd Micronas DRXD driver
ec100 E3C EC100
l64781 LSI L64781
mt352 Zarlink MT352 based
nxt6000 NxtWave Communications NXT6000 based
rtl2830 Realtek RTL2830 DVB-T
rtl2832 Realtek RTL2832 DVB-T
rtl2832_sdr Realtek RTL2832 SDR
s5h1432 Samsung s5h1432 demodulator (OFDM)
si2168 Silicon Labs Si2168
sp8870 Spase sp8870 based
sp887x Spase sp887x based
stv0367 ST STV0367 based
tda10048 Philips TDA10048HN based
tda1004x Philips TDA10045H/TDA10046H based
zd1301_demod ZyDAS ZD1301
zl10353 Zarlink ZL10353 based
============== =========================================================
Digital terrestrial only tuners/PLL
===================================
============== =========================================================
Driver Name
============== =========================================================
dvb-pll Generic I2C PLL based tuners
dib0070 DiBcom DiB0070 silicon base-band tuner
dib0090 DiBcom DiB0090 silicon base-band tuner
============== =========================================================
ISDB-S (satellite) & ISDB-T (terrestrial) frontends
===================================================
============== =========================================================
Driver Name
============== =========================================================
mn88443x Socionext MN88443x
tc90522 Toshiba TC90522
============== =========================================================
ISDB-T (terrestrial) frontends
==============================
============== =========================================================
Driver Name
============== =========================================================
dib8000 DiBcom 8000MB/MC
mb86a20s Fujitsu mb86a20s
s921 Sharp S921 frontend
============== =========================================================
Multistandard (cable + terrestrial) frontends
=============================================
============== =========================================================
Driver Name
============== =========================================================
drxk Micronas DRXK based
mn88472 Panasonic MN88472
mn88473 Panasonic MN88473
si2165 Silicon Labs si2165 based
tda18271c2dd NXP TDA18271C2 silicon tuner
============== =========================================================
Multistandard (satellite) frontends
===================================
============== =========================================================
Driver Name
============== =========================================================
m88ds3103 Montage Technology M88DS3103
mxl5xx MaxLinear MxL5xx based tuner-demodulators
stb0899 STB0899 based
stb6100 STB6100 based tuners
stv090x STV0900/STV0903(A/B) based
stv0910 STV0910 based
stv6110x STV6110/(A) based tuners
stv6111 STV6111 based tuners
============== =========================================================
SEC control devices for DVB-S
=============================
============== =========================================================
Driver Name
============== =========================================================
a8293 Allegro A8293
af9033 Afatech AF9033 DVB-T demodulator
ascot2e Sony Ascot2E tuner
atbm8830 AltoBeam ATBM8830/8831 DMB-TH demodulator
drx39xyj Micronas DRX-J demodulator
helene Sony HELENE Sat/Ter tuner (CXD2858ER)
horus3a Sony Horus3A tuner
isl6405 ISL6405 SEC controller
isl6421 ISL6421 SEC controller
isl6423 ISL6423 SEC controller
ix2505v Sharp IX2505V silicon tuner
lgs8gl5 Silicon Legend LGS-8GL5 demodulator (OFDM)
lgs8gxx Legend Silicon LGS8913/LGS8GL5/LGS8GXX DMB-TH demodulator
lnbh25 LNBH25 SEC controller
lnbh29 LNBH29 SEC controller
lnbp21 LNBP21/LNBH24 SEC controllers
lnbp22 LNBP22 SEC controllers
m88rs2000 M88RS2000 DVB-S demodulator and tuner
tda665x TDA665x tuner
============== =========================================================
Tools to develop new frontends
==============================
============== =========================================================
Driver Name
============== =========================================================
dvb_dummy_fe Dummy frontend driver
============== =========================================================

View File

@ -0,0 +1,290 @@
.. SPDX-License-Identifier: GPL-2.0
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.
The current supported of I²C drivers (not including staging drivers) are
listed below.
Audio decoders, processors and mixers
-------------------------------------
============ ==========================================================
Driver Name
============ ==========================================================
cs3308 Cirrus Logic CS3308 audio ADC
cs5345 Cirrus Logic CS5345 audio ADC
cs53l32a Cirrus Logic CS53L32A audio ADC
msp3400 Micronas MSP34xx audio decoders
sony-btf-mpx Sony BTF's internal MPX
tda1997x NXP TDA1997x HDMI receiver
tda7432 Philips TDA7432 audio processor
tda9840 Philips TDA9840 audio processor
tea6415c Philips TEA6415C audio processor
tea6420 Philips TEA6420 audio processor
tlv320aic23b Texas Instruments TLV320AIC23B audio codec
tvaudio Simple audio decoder chips
uda1342 Philips UDA1342 audio codec
vp27smpx Panasonic VP27's internal MPX
wm8739 Wolfson Microelectronics WM8739 stereo audio ADC
wm8775 Wolfson Microelectronics WM8775 audio ADC with input mixer
============ ==========================================================
Audio/Video compression chips
-----------------------------
============ ==========================================================
Driver Name
============ ==========================================================
saa6752hs Philips SAA6752HS MPEG-2 Audio/Video Encoder
============ ==========================================================
Camera sensor devices
---------------------
============ ==========================================================
Driver Name
============ ==========================================================
et8ek8 ET8EK8 camera sensor
hi556 Hynix Hi-556 sensor
imx214 Sony IMX214 sensor
imx219 Sony IMX219 sensor
imx258 Sony IMX258 sensor
imx274 Sony IMX274 sensor
imx290 Sony IMX290 sensor
imx319 Sony IMX319 sensor
imx355 Sony IMX355 sensor
m5mols Fujitsu M-5MOLS 8MP sensor
mt9m001 mt9m001
mt9m032 MT9M032 camera sensor
mt9m111 mt9m111, mt9m112 and mt9m131
mt9p031 Aptina MT9P031
mt9t001 Aptina MT9T001
mt9t112 Aptina MT9T111/MT9T112
mt9v011 Micron mt9v011 sensor
mt9v032 Micron MT9V032 sensor
mt9v111 Aptina MT9V111 sensor
noon010pc30 Siliconfile NOON010PC30 sensor
ov13858 OmniVision OV13858 sensor
ov2640 OmniVision OV2640 sensor
ov2659 OmniVision OV2659 sensor
ov2680 OmniVision OV2680 sensor
ov2685 OmniVision OV2685 sensor
ov5640 OmniVision OV5640 sensor
ov5645 OmniVision OV5645 sensor
ov5647 OmniVision OV5647 sensor
ov5670 OmniVision OV5670 sensor
ov5675 OmniVision OV5675 sensor
ov5695 OmniVision OV5695 sensor
ov6650 OmniVision OV6650 sensor
ov7251 OmniVision OV7251 sensor
ov7640 OmniVision OV7640 sensor
ov7670 OmniVision OV7670 sensor
ov772x OmniVision OV772x sensor
ov7740 OmniVision OV7740 sensor
ov8856 OmniVision OV8856 sensor
ov9640 OmniVision OV9640 sensor
ov9650 OmniVision OV9650/OV9652 sensor
rj54n1cb0c Sharp RJ54N1CB0C sensor
s5c73m3 Samsung S5C73M3 sensor
s5k4ecgx Samsung S5K4ECGX sensor
s5k5baf Samsung S5K5BAF sensor
s5k6a3 Samsung S5K6A3 sensor
s5k6aa Samsung S5K6AAFX sensor
smiapp SMIA++/SMIA sensor
sr030pc30 Siliconfile SR030PC30 sensor
vs6624 ST VS6624 sensor
============ ==========================================================
Flash devices
-------------
============ ==========================================================
Driver Name
============ ==========================================================
adp1653 ADP1653 flash
lm3560 LM3560 dual flash driver
lm3646 LM3646 dual flash driver
============ ==========================================================
IR I2C driver
-------------
============ ==========================================================
Driver Name
============ ==========================================================
ir-kbd-i2c I2C module for IR
============ ==========================================================
Lens drivers
------------
============ ==========================================================
Driver Name
============ ==========================================================
ad5820 AD5820 lens voice coil
ak7375 AK7375 lens voice coil
dw9714 DW9714 lens voice coil
dw9807-vcm DW9807 lens voice coil
============ ==========================================================
Miscellaneous helper chips
--------------------------
============ ==========================================================
Driver Name
============ ==========================================================
video-i2c I2C transport video
m52790 Mitsubishi M52790 A/V switch
st-mipid02 STMicroelectronics MIPID02 CSI-2 to PARALLEL bridge
ths7303 THS7303/53 Video Amplifier
============ ==========================================================
RDS decoders
------------
============ ==========================================================
Driver Name
============ ==========================================================
saa6588 SAA6588 Radio Chip RDS decoder
============ ==========================================================
SDR tuner chips
---------------
============ ==========================================================
Driver Name
============ ==========================================================
max2175 Maxim 2175 RF to Bits tuner
============ ==========================================================
Video and audio decoders
------------------------
============ ==========================================================
Driver Name
============ ==========================================================
cx25840 Conexant CX2584x audio/video decoders
saa717x Philips SAA7171/3/4 audio/video decoders
============ ==========================================================
Video decoders
--------------
============ ==========================================================
Driver Name
============ ==========================================================
adv7180 Analog Devices ADV7180 decoder
adv7183 Analog Devices ADV7183 decoder
adv748x Analog Devices ADV748x decoder
adv7604 Analog Devices ADV7604 decoder
adv7842 Analog Devices ADV7842 decoder
bt819 BT819A VideoStream decoder
bt856 BT856 VideoStream decoder
bt866 BT866 VideoStream decoder
ks0127 KS0127 video decoder
ml86v7667 OKI ML86V7667 video decoder
saa7110 Philips SAA7110 video decoder
saa7115 Philips SAA7111/3/4/5 video decoders
tc358743 Toshiba TC358743 decoder
tvp514x Texas Instruments TVP514x video decoder
tvp5150 Texas Instruments TVP5150 video decoder
tvp7002 Texas Instruments TVP7002 video decoder
tw2804 Techwell TW2804 multiple video decoder
tw9903 Techwell TW9903 video decoder
tw9906 Techwell TW9906 video decoder
tw9910 Techwell TW9910 video decoder
vpx3220 vpx3220a, vpx3216b & vpx3214c video decoders
============ ==========================================================
Video encoders
--------------
============ ==========================================================
Driver Name
============ ==========================================================
ad9389b Analog Devices AD9389B encoder
adv7170 Analog Devices ADV7170 video encoder
adv7175 Analog Devices ADV7175 video encoder
adv7343 ADV7343 video encoder
adv7393 ADV7393 video encoder
adv7511-v4l2 Analog Devices ADV7511 encoder
ak881x AK8813/AK8814 video encoders
saa7127 Philips SAA7127/9 digital video encoders
saa7185 Philips SAA7185 video encoder
ths8200 Texas Instruments THS8200 video encoder
============ ==========================================================
Video improvement chips
-----------------------
============ ==========================================================
Driver Name
============ ==========================================================
upd64031a NEC Electronics uPD64031A Ghost Reduction
upd64083 NEC Electronics uPD64083 3-Dimensional Y/C separation
============ ==========================================================
Tuner drivers
-------------
============ ==================================================
Driver Name
============ ==================================================
e4000 Elonics E4000 silicon tuner
fc0011 Fitipower FC0011 silicon tuner
fc0012 Fitipower FC0012 silicon tuner
fc0013 Fitipower FC0013 silicon tuner
fc2580 FCI FC2580 silicon tuner
it913x ITE Tech IT913x silicon tuner
m88rs6000t Montage M88RS6000 internal tuner
max2165 Maxim MAX2165 silicon tuner
mc44s803 Freescale MC44S803 Low Power CMOS Broadband tuners
msi001 Mirics MSi001
mt2060 Microtune MT2060 silicon IF tuner
mt2063 Microtune MT2063 silicon IF tuner
mt20xx Microtune 2032 / 2050 tuners
mt2131 Microtune MT2131 silicon tuner
mt2266 Microtune MT2266 silicon tuner
mxl301rf MaxLinear MxL301RF tuner
mxl5005s MaxLinear MSL5005S silicon tuner
mxl5007t MaxLinear MxL5007T silicon tuner
qm1d1b0004 Sharp QM1D1B0004 tuner
qm1d1c0042 Sharp QM1D1C0042 tuner
qt1010 Quantek QT1010 silicon tuner
r820t Rafael Micro R820T silicon tuner
si2157 Silicon Labs Si2157 silicon tuner
tuner-types Simple tuner support
tda18212 NXP TDA18212 silicon tuner
tda18218 NXP TDA18218 silicon tuner
tda18250 NXP TDA18250 silicon tuner
tda18271 NXP TDA18271 silicon tuner
tda827x Philips TDA827X silicon tuner
tda8290 TDA 8290/8295 + 8275(a)/18271 tuner combo
tda9887 TDA 9885/6/7 analog IF demodulator
tea5761 TEA 5761 radio tuner
tea5767 TEA 5767 radio tuner
tua9001 Infineon TUA9001 silicon tuner
tuner-xc2028 XCeive xc2028/xc3028 tuners
xc4000 Xceive XC4000 silicon tuner
xc5000 Xceive XC5000 silicon tuner
============ ==================================================
.. toctree::
:maxdepth: 1
tuner-cardlist
frontend-cardlist

View File

@ -0,0 +1,714 @@
.. SPDX-License-Identifier: GPL-2.0
i.MX Video Capture Driver
=========================
Introduction
------------
The Freescale i.MX5/6 contains an Image Processing Unit (IPU), which
handles the flow of image frames to and from capture devices and
display devices.
For image capture, the IPU contains the following internal subunits:
- Image DMA Controller (IDMAC)
- Camera Serial Interface (CSI)
- Image Converter (IC)
- Sensor Multi-FIFO Controller (SMFC)
- Image Rotator (IRT)
- Video De-Interlacing or Combining Block (VDIC)
The IDMAC is the DMA controller for transfer of image frames to and from
memory. Various dedicated DMA channels exist for both video capture and
display paths. During transfer, the IDMAC is also capable of vertical
image flip, 8x8 block transfer (see IRT description), pixel component
re-ordering (for example UYVY to YUYV) within the same colorspace, and
packed <--> planar conversion. The IDMAC can also perform a simple
de-interlacing by interweaving even and odd lines during transfer
(without motion compensation which requires the VDIC).
The CSI is the backend capture unit that interfaces directly with
camera sensors over Parallel, BT.656/1120, and MIPI CSI-2 buses.
The IC handles color-space conversion, resizing (downscaling and
upscaling), horizontal flip, and 90/270 degree rotation operations.
There are three independent "tasks" within the IC that can carry out
conversions concurrently: pre-process encoding, pre-process viewfinder,
and post-processing. Within each task, conversions are split into three
sections: downsizing section, main section (upsizing, flip, colorspace
conversion, and graphics plane combining), and rotation section.
The IPU time-shares the IC task operations. The time-slice granularity
is one burst of eight pixels in the downsizing section, one image line
in the main processing section, one image frame in the rotation section.
The SMFC is composed of four independent FIFOs that each can transfer
captured frames from sensors directly to memory concurrently via four
IDMAC channels.
The IRT carries out 90 and 270 degree image rotation operations. The
rotation operation is carried out on 8x8 pixel blocks at a time. This
operation is supported by the IDMAC which handles the 8x8 block transfer
along with block reordering, in coordination with vertical flip.
The VDIC handles the conversion of interlaced video to progressive, with
support for different motion compensation modes (low, medium, and high
motion). The deinterlaced output frames from the VDIC can be sent to the
IC pre-process viewfinder task for further conversions. The VDIC also
contains a Combiner that combines two image planes, with alpha blending
and color keying.
In addition to the IPU internal subunits, there are also two units
outside the IPU that are also involved in video capture on i.MX:
- MIPI CSI-2 Receiver for camera sensors with the MIPI CSI-2 bus
interface. This is a Synopsys DesignWare core.
- Two video multiplexers for selecting among multiple sensor inputs
to send to a CSI.
For more info, refer to the latest versions of the i.MX5/6 reference
manuals [#f1]_ and [#f2]_.
Features
--------
Some of the features of this driver include:
- Many different pipelines can be configured via media controller API,
that correspond to the hardware video capture pipelines supported in
the i.MX.
- Supports parallel, BT.565, and MIPI CSI-2 interfaces.
- Concurrent independent streams, by configuring pipelines to multiple
video capture interfaces using independent entities.
- Scaling, color-space conversion, horizontal and vertical flip, and
image rotation via IC task subdevs.
- Many pixel formats supported (RGB, packed and planar YUV, partial
planar YUV).
- The VDIC subdev supports motion compensated de-interlacing, with three
motion compensation modes: low, medium, and high motion. Pipelines are
defined that allow sending frames to the VDIC subdev directly from the
CSI. There is also support in the future for sending frames to the
VDIC from memory buffers via a output/mem2mem devices.
- Includes a Frame Interval Monitor (FIM) that can correct vertical sync
problems with the ADV718x video decoders.
Topology
--------
The following shows the media topologies for the i.MX6Q SabreSD and
i.MX6Q SabreAuto. Refer to these diagrams in the entity descriptions
in the next section.
The i.MX5/6 topologies can differ upstream from the IPUv3 CSI video
multiplexers, but the internal IPUv3 topology downstream from there
is common to all i.MX5/6 platforms. For example, the SabreSD, with the
MIPI CSI-2 OV5640 sensor, requires the i.MX6 MIPI CSI-2 receiver. But
the SabreAuto has only the ADV7180 decoder on a parallel bt.656 bus, and
therefore does not require the MIPI CSI-2 receiver, so it is missing in
its graph.
.. _imx6q_topology_graph:
.. kernel-figure:: imx6q-sabresd.dot
:alt: Diagram of the i.MX6Q SabreSD media pipeline topology
:align: center
Media pipeline graph on i.MX6Q SabreSD
.. kernel-figure:: imx6q-sabreauto.dot
:alt: Diagram of the i.MX6Q SabreAuto media pipeline topology
:align: center
Media pipeline graph on i.MX6Q SabreAuto
Entities
--------
imx6-mipi-csi2
--------------
This is the MIPI CSI-2 receiver entity. It has one sink pad to receive
the MIPI CSI-2 stream (usually from a MIPI CSI-2 camera sensor). It has
four source pads, corresponding to the four MIPI CSI-2 demuxed virtual
channel outputs. Multiple source pads can be enabled to independently
stream from multiple virtual channels.
This entity actually consists of two sub-blocks. One is the MIPI CSI-2
core. This is a Synopsys Designware MIPI CSI-2 core. The other sub-block
is a "CSI-2 to IPU gasket". The gasket acts as a demultiplexer of the
four virtual channels streams, providing four separate parallel buses
containing each virtual channel that are routed to CSIs or video
multiplexers as described below.
On i.MX6 solo/dual-lite, all four virtual channel buses are routed to
two video multiplexers. Both CSI0 and CSI1 can receive any virtual
channel, as selected by the video multiplexers.
On i.MX6 Quad, virtual channel 0 is routed to IPU1-CSI0 (after selected
by a video mux), virtual channels 1 and 2 are hard-wired to IPU1-CSI1
and IPU2-CSI0, respectively, and virtual channel 3 is routed to
IPU2-CSI1 (again selected by a video mux).
ipuX_csiY_mux
-------------
These are the video multiplexers. They have two or more sink pads to
select from either camera sensors with a parallel interface, or from
MIPI CSI-2 virtual channels from imx6-mipi-csi2 entity. They have a
single source pad that routes to a CSI (ipuX_csiY entities).
On i.MX6 solo/dual-lite, there are two video mux entities. One sits
in front of IPU1-CSI0 to select between a parallel sensor and any of
the four MIPI CSI-2 virtual channels (a total of five sink pads). The
other mux sits in front of IPU1-CSI1, and again has five sink pads to
select between a parallel sensor and any of the four MIPI CSI-2 virtual
channels.
On i.MX6 Quad, there are two video mux entities. One sits in front of
IPU1-CSI0 to select between a parallel sensor and MIPI CSI-2 virtual
channel 0 (two sink pads). The other mux sits in front of IPU2-CSI1 to
select between a parallel sensor and MIPI CSI-2 virtual channel 3 (two
sink pads).
ipuX_csiY
---------
These are the CSI entities. They have a single sink pad receiving from
either a video mux or from a MIPI CSI-2 virtual channel as described
above.
This entity has two source pads. The first source pad can link directly
to the ipuX_vdic entity or the ipuX_ic_prp entity, using hardware links
that require no IDMAC memory buffer transfer.
When the direct source pad is routed to the ipuX_ic_prp entity, frames
from the CSI can be processed by one or both of the IC pre-processing
tasks.
When the direct source pad is routed to the ipuX_vdic entity, the VDIC
will carry out motion-compensated de-interlace using "high motion" mode
(see description of ipuX_vdic entity).
The second source pad sends video frames directly to memory buffers
via the SMFC and an IDMAC channel, bypassing IC pre-processing. This
source pad is routed to a capture device node, with a node name of the
format "ipuX_csiY capture".
Note that since the IDMAC source pad makes use of an IDMAC channel,
pixel reordering within the same colorspace can be carried out by the
IDMAC channel. For example, if the CSI sink pad is receiving in UYVY
order, the capture device linked to the IDMAC source pad can capture
in YUYV order. Also, if the CSI sink pad is receiving a packed YUV
format, the capture device can capture a planar YUV format such as
YUV420.
The IDMAC channel at the IDMAC source pad also supports simple
interweave without motion compensation, which is activated if the source
pad's field type is sequential top-bottom or bottom-top, and the
requested capture interface field type is set to interlaced (t-b, b-t,
or unqualified interlaced). The capture interface will enforce the same
field order as the source pad field order (interlaced-bt if source pad
is seq-bt, interlaced-tb if source pad is seq-tb).
For events produced by ipuX_csiY, see ref:`imx_api_ipuX_csiY`.
Cropping in ipuX_csiY
---------------------
The CSI supports cropping the incoming raw sensor frames. This is
implemented in the ipuX_csiY entities at the sink pad, using the
crop selection subdev API.
The CSI also supports fixed divide-by-two downscaling independently in
width and height. This is implemented in the ipuX_csiY entities at
the sink pad, using the compose selection subdev API.
The output rectangle at the ipuX_csiY source pad is the same as
the compose rectangle at the sink pad. So the source pad rectangle
cannot be negotiated, it must be set using the compose selection
API at sink pad (if /2 downscale is desired, otherwise source pad
rectangle is equal to incoming rectangle).
To give an example of crop and /2 downscale, this will crop a
1280x960 input frame to 640x480, and then /2 downscale in both
dimensions to 320x240 (assumes ipu1_csi0 is linked to ipu1_csi0_mux):
.. code-block:: none
media-ctl -V "'ipu1_csi0_mux':2[fmt:UYVY2X8/1280x960]"
media-ctl -V "'ipu1_csi0':0[crop:(0,0)/640x480]"
media-ctl -V "'ipu1_csi0':0[compose:(0,0)/320x240]"
Frame Skipping in ipuX_csiY
---------------------------
The CSI supports frame rate decimation, via frame skipping. Frame
rate decimation is specified by setting the frame intervals at
sink and source pads. The ipuX_csiY entity then applies the best
frame skip setting to the CSI to achieve the desired frame rate
at the source pad.
The following example reduces an assumed incoming 60 Hz frame
rate by half at the IDMAC output source pad:
.. code-block:: none
media-ctl -V "'ipu1_csi0':0[fmt:UYVY2X8/640x480@1/60]"
media-ctl -V "'ipu1_csi0':2[fmt:UYVY2X8/640x480@1/30]"
Frame Interval Monitor in ipuX_csiY
-----------------------------------
See ref:`imx_api_FIM`.
ipuX_vdic
---------
The VDIC carries out motion compensated de-interlacing, with three
motion compensation modes: low, medium, and high motion. The mode is
specified with the menu control V4L2_CID_DEINTERLACING_MODE. The VDIC
has two sink pads and a single source pad.
The direct sink pad receives from an ipuX_csiY direct pad. With this
link the VDIC can only operate in high motion mode.
When the IDMAC sink pad is activated, it receives from an output
or mem2mem device node. With this pipeline, the VDIC can also operate
in low and medium modes, because these modes require receiving
frames from memory buffers. Note that an output or mem2mem device
is not implemented yet, so this sink pad currently has no links.
The source pad routes to the IC pre-processing entity ipuX_ic_prp.
ipuX_ic_prp
-----------
This is the IC pre-processing entity. It acts as a router, routing
data from its sink pad to one or both of its source pads.
This entity has a single sink pad. The sink pad can receive from the
ipuX_csiY direct pad, or from ipuX_vdic.
This entity has two source pads. One source pad routes to the
pre-process encode task entity (ipuX_ic_prpenc), the other to the
pre-process viewfinder task entity (ipuX_ic_prpvf). Both source pads
can be activated at the same time if the sink pad is receiving from
ipuX_csiY. Only the source pad to the pre-process viewfinder task entity
can be activated if the sink pad is receiving from ipuX_vdic (frames
from the VDIC can only be processed by the pre-process viewfinder task).
ipuX_ic_prpenc
--------------
This is the IC pre-processing encode entity. It has a single sink
pad from ipuX_ic_prp, and a single source pad. The source pad is
routed to a capture device node, with a node name of the format
"ipuX_ic_prpenc capture".
This entity performs the IC pre-process encode task operations:
color-space conversion, resizing (downscaling and upscaling),
horizontal and vertical flip, and 90/270 degree rotation. Flip
and rotation are provided via standard V4L2 controls.
Like the ipuX_csiY IDMAC source, this entity also supports simple
de-interlace without motion compensation, and pixel reordering.
ipuX_ic_prpvf
-------------
This is the IC pre-processing viewfinder entity. It has a single sink
pad from ipuX_ic_prp, and a single source pad. The source pad is routed
to a capture device node, with a node name of the format
"ipuX_ic_prpvf capture".
This entity is identical in operation to ipuX_ic_prpenc, with the same
resizing and CSC operations and flip/rotation controls. It will receive
and process de-interlaced frames from the ipuX_vdic if ipuX_ic_prp is
receiving from ipuX_vdic.
Like the ipuX_csiY IDMAC source, this entity supports simple
interweaving without motion compensation. However, note that if the
ipuX_vdic is included in the pipeline (ipuX_ic_prp is receiving from
ipuX_vdic), it's not possible to use interweave in ipuX_ic_prpvf,
since the ipuX_vdic has already carried out de-interlacing (with
motion compensation) and therefore the field type output from
ipuX_vdic can only be none (progressive).
Capture Pipelines
-----------------
The following describe the various use-cases supported by the pipelines.
The links shown do not include the backend sensor, video mux, or mipi
csi-2 receiver links. This depends on the type of sensor interface
(parallel or mipi csi-2). So these pipelines begin with:
sensor -> ipuX_csiY_mux -> ...
for parallel sensors, or:
sensor -> imx6-mipi-csi2 -> (ipuX_csiY_mux) -> ...
for mipi csi-2 sensors. The imx6-mipi-csi2 receiver may need to route
to the video mux (ipuX_csiY_mux) before sending to the CSI, depending
on the mipi csi-2 virtual channel, hence ipuX_csiY_mux is shown in
parenthesis.
Unprocessed Video Capture:
--------------------------
Send frames directly from sensor to camera device interface node, with
no conversions, via ipuX_csiY IDMAC source pad:
-> ipuX_csiY:2 -> ipuX_csiY capture
IC Direct Conversions:
----------------------
This pipeline uses the preprocess encode entity to route frames directly
from the CSI to the IC, to carry out scaling up to 1024x1024 resolution,
CSC, flipping, and image rotation:
-> ipuX_csiY:1 -> 0:ipuX_ic_prp:1 -> 0:ipuX_ic_prpenc:1 -> ipuX_ic_prpenc capture
Motion Compensated De-interlace:
--------------------------------
This pipeline routes frames from the CSI direct pad to the VDIC entity to
support motion-compensated de-interlacing (high motion mode only),
scaling up to 1024x1024, CSC, flip, and rotation:
-> ipuX_csiY:1 -> 0:ipuX_vdic:2 -> 0:ipuX_ic_prp:2 -> 0:ipuX_ic_prpvf:1 -> ipuX_ic_prpvf capture
Usage Notes
-----------
To aid in configuration and for backward compatibility with V4L2
applications that access controls only from video device nodes, the
capture device interfaces inherit controls from the active entities
in the current pipeline, so controls can be accessed either directly
from the subdev or from the active capture device interface. For
example, the FIM controls are available either from the ipuX_csiY
subdevs or from the active capture device.
The following are specific usage notes for the Sabre* reference
boards:
i.MX6Q SabreLite with OV5642 and OV5640
---------------------------------------
This platform requires the OmniVision OV5642 module with a parallel
camera interface, and the OV5640 module with a MIPI CSI-2
interface. Both modules are available from Boundary Devices:
- https://boundarydevices.com/product/nit6x_5mp
- https://boundarydevices.com/product/nit6x_5mp_mipi
Note that if only one camera module is available, the other sensor
node can be disabled in the device tree.
The OV5642 module is connected to the parallel bus input on the i.MX
internal video mux to IPU1 CSI0. It's i2c bus connects to i2c bus 2.
The MIPI CSI-2 OV5640 module is connected to the i.MX internal MIPI CSI-2
receiver, and the four virtual channel outputs from the receiver are
routed as follows: vc0 to the IPU1 CSI0 mux, vc1 directly to IPU1 CSI1,
vc2 directly to IPU2 CSI0, and vc3 to the IPU2 CSI1 mux. The OV5640 is
also connected to i2c bus 2 on the SabreLite, therefore the OV5642 and
OV5640 must not share the same i2c slave address.
The following basic example configures unprocessed video capture
pipelines for both sensors. The OV5642 is routed to ipu1_csi0, and
the OV5640, transmitting on MIPI CSI-2 virtual channel 1 (which is
imx6-mipi-csi2 pad 2), is routed to ipu1_csi1. Both sensors are
configured to output 640x480, and the OV5642 outputs YUYV2X8, the
OV5640 UYVY2X8:
.. code-block:: none
# Setup links for OV5642
media-ctl -l "'ov5642 1-0042':0 -> 'ipu1_csi0_mux':1[1]"
media-ctl -l "'ipu1_csi0_mux':2 -> 'ipu1_csi0':0[1]"
media-ctl -l "'ipu1_csi0':2 -> 'ipu1_csi0 capture':0[1]"
# Setup links for OV5640
media-ctl -l "'ov5640 1-0040':0 -> 'imx6-mipi-csi2':0[1]"
media-ctl -l "'imx6-mipi-csi2':2 -> 'ipu1_csi1':0[1]"
media-ctl -l "'ipu1_csi1':2 -> 'ipu1_csi1 capture':0[1]"
# Configure pads for OV5642 pipeline
media-ctl -V "'ov5642 1-0042':0 [fmt:YUYV2X8/640x480 field:none]"
media-ctl -V "'ipu1_csi0_mux':2 [fmt:YUYV2X8/640x480 field:none]"
media-ctl -V "'ipu1_csi0':2 [fmt:AYUV32/640x480 field:none]"
# Configure pads for OV5640 pipeline
media-ctl -V "'ov5640 1-0040':0 [fmt:UYVY2X8/640x480 field:none]"
media-ctl -V "'imx6-mipi-csi2':2 [fmt:UYVY2X8/640x480 field:none]"
media-ctl -V "'ipu1_csi1':2 [fmt:AYUV32/640x480 field:none]"
Streaming can then begin independently on the capture device nodes
"ipu1_csi0 capture" and "ipu1_csi1 capture". The v4l2-ctl tool can
be used to select any supported YUV pixelformat on the capture device
nodes, including planar.
i.MX6Q SabreAuto with ADV7180 decoder
-------------------------------------
On the i.MX6Q SabreAuto, an on-board ADV7180 SD decoder is connected to the
parallel bus input on the internal video mux to IPU1 CSI0.
The following example configures a pipeline to capture from the ADV7180
video decoder, assuming NTSC 720x480 input signals, using simple
interweave (unconverted and without motion compensation). The adv7180
must output sequential or alternating fields (field type 'seq-bt' for
NTSC, or 'alternate'):
.. code-block:: none
# Setup links
media-ctl -l "'adv7180 3-0021':0 -> 'ipu1_csi0_mux':1[1]"
media-ctl -l "'ipu1_csi0_mux':2 -> 'ipu1_csi0':0[1]"
media-ctl -l "'ipu1_csi0':2 -> 'ipu1_csi0 capture':0[1]"
# Configure pads
media-ctl -V "'adv7180 3-0021':0 [fmt:UYVY2X8/720x480 field:seq-bt]"
media-ctl -V "'ipu1_csi0_mux':2 [fmt:UYVY2X8/720x480]"
media-ctl -V "'ipu1_csi0':2 [fmt:AYUV32/720x480]"
# Configure "ipu1_csi0 capture" interface (assumed at /dev/video4)
v4l2-ctl -d4 --set-fmt-video=field=interlaced_bt
Streaming can then begin on /dev/video4. The v4l2-ctl tool can also be
used to select any supported YUV pixelformat on /dev/video4.
This example configures a pipeline to capture from the ADV7180
video decoder, assuming PAL 720x576 input signals, with Motion
Compensated de-interlacing. The adv7180 must output sequential or
alternating fields (field type 'seq-tb' for PAL, or 'alternate').
.. code-block:: none
# Setup links
media-ctl -l "'adv7180 3-0021':0 -> 'ipu1_csi0_mux':1[1]"
media-ctl -l "'ipu1_csi0_mux':2 -> 'ipu1_csi0':0[1]"
media-ctl -l "'ipu1_csi0':1 -> 'ipu1_vdic':0[1]"
media-ctl -l "'ipu1_vdic':2 -> 'ipu1_ic_prp':0[1]"
media-ctl -l "'ipu1_ic_prp':2 -> 'ipu1_ic_prpvf':0[1]"
media-ctl -l "'ipu1_ic_prpvf':1 -> 'ipu1_ic_prpvf capture':0[1]"
# Configure pads
media-ctl -V "'adv7180 3-0021':0 [fmt:UYVY2X8/720x576 field:seq-tb]"
media-ctl -V "'ipu1_csi0_mux':2 [fmt:UYVY2X8/720x576]"
media-ctl -V "'ipu1_csi0':1 [fmt:AYUV32/720x576]"
media-ctl -V "'ipu1_vdic':2 [fmt:AYUV32/720x576 field:none]"
media-ctl -V "'ipu1_ic_prp':2 [fmt:AYUV32/720x576 field:none]"
media-ctl -V "'ipu1_ic_prpvf':1 [fmt:AYUV32/720x576 field:none]"
# Configure "ipu1_ic_prpvf capture" interface (assumed at /dev/video2)
v4l2-ctl -d2 --set-fmt-video=field=none
Streaming can then begin on /dev/video2. The v4l2-ctl tool can also be
used to select any supported YUV pixelformat on /dev/video2.
This platform accepts Composite Video analog inputs to the ADV7180 on
Ain1 (connector J42).
i.MX6DL SabreAuto with ADV7180 decoder
--------------------------------------
On the i.MX6DL SabreAuto, an on-board ADV7180 SD decoder is connected to the
parallel bus input on the internal video mux to IPU1 CSI0.
The following example configures a pipeline to capture from the ADV7180
video decoder, assuming NTSC 720x480 input signals, using simple
interweave (unconverted and without motion compensation). The adv7180
must output sequential or alternating fields (field type 'seq-bt' for
NTSC, or 'alternate'):
.. code-block:: none
# Setup links
media-ctl -l "'adv7180 4-0021':0 -> 'ipu1_csi0_mux':4[1]"
media-ctl -l "'ipu1_csi0_mux':5 -> 'ipu1_csi0':0[1]"
media-ctl -l "'ipu1_csi0':2 -> 'ipu1_csi0 capture':0[1]"
# Configure pads
media-ctl -V "'adv7180 4-0021':0 [fmt:UYVY2X8/720x480 field:seq-bt]"
media-ctl -V "'ipu1_csi0_mux':5 [fmt:UYVY2X8/720x480]"
media-ctl -V "'ipu1_csi0':2 [fmt:AYUV32/720x480]"
# Configure "ipu1_csi0 capture" interface (assumed at /dev/video0)
v4l2-ctl -d0 --set-fmt-video=field=interlaced_bt
Streaming can then begin on /dev/video0. The v4l2-ctl tool can also be
used to select any supported YUV pixelformat on /dev/video0.
This example configures a pipeline to capture from the ADV7180
video decoder, assuming PAL 720x576 input signals, with Motion
Compensated de-interlacing. The adv7180 must output sequential or
alternating fields (field type 'seq-tb' for PAL, or 'alternate').
.. code-block:: none
# Setup links
media-ctl -l "'adv7180 4-0021':0 -> 'ipu1_csi0_mux':4[1]"
media-ctl -l "'ipu1_csi0_mux':5 -> 'ipu1_csi0':0[1]"
media-ctl -l "'ipu1_csi0':1 -> 'ipu1_vdic':0[1]"
media-ctl -l "'ipu1_vdic':2 -> 'ipu1_ic_prp':0[1]"
media-ctl -l "'ipu1_ic_prp':2 -> 'ipu1_ic_prpvf':0[1]"
media-ctl -l "'ipu1_ic_prpvf':1 -> 'ipu1_ic_prpvf capture':0[1]"
# Configure pads
media-ctl -V "'adv7180 4-0021':0 [fmt:UYVY2X8/720x576 field:seq-tb]"
media-ctl -V "'ipu1_csi0_mux':5 [fmt:UYVY2X8/720x576]"
media-ctl -V "'ipu1_csi0':1 [fmt:AYUV32/720x576]"
media-ctl -V "'ipu1_vdic':2 [fmt:AYUV32/720x576 field:none]"
media-ctl -V "'ipu1_ic_prp':2 [fmt:AYUV32/720x576 field:none]"
media-ctl -V "'ipu1_ic_prpvf':1 [fmt:AYUV32/720x576 field:none]"
# Configure "ipu1_ic_prpvf capture" interface (assumed at /dev/video2)
v4l2-ctl -d2 --set-fmt-video=field=none
Streaming can then begin on /dev/video2. The v4l2-ctl tool can also be
used to select any supported YUV pixelformat on /dev/video2.
This platform accepts Composite Video analog inputs to the ADV7180 on
Ain1 (connector J42).
i.MX6Q SabreSD with MIPI CSI-2 OV5640
-------------------------------------
Similarly to i.MX6Q SabreLite, the i.MX6Q SabreSD supports a parallel
interface OV5642 module on IPU1 CSI0, and a MIPI CSI-2 OV5640
module. The OV5642 connects to i2c bus 1 and the OV5640 to i2c bus 2.
The device tree for SabreSD includes OF graphs for both the parallel
OV5642 and the MIPI CSI-2 OV5640, but as of this writing only the MIPI
CSI-2 OV5640 has been tested, so the OV5642 node is currently disabled.
The OV5640 module connects to MIPI connector J5. The NXP part number
for the OV5640 module that connects to the SabreSD board is H120729.
The following example configures unprocessed video capture pipeline to
capture from the OV5640, transmitting on MIPI CSI-2 virtual channel 0:
.. code-block:: none
# Setup links
media-ctl -l "'ov5640 1-003c':0 -> 'imx6-mipi-csi2':0[1]"
media-ctl -l "'imx6-mipi-csi2':1 -> 'ipu1_csi0_mux':0[1]"
media-ctl -l "'ipu1_csi0_mux':2 -> 'ipu1_csi0':0[1]"
media-ctl -l "'ipu1_csi0':2 -> 'ipu1_csi0 capture':0[1]"
# Configure pads
media-ctl -V "'ov5640 1-003c':0 [fmt:UYVY2X8/640x480]"
media-ctl -V "'imx6-mipi-csi2':1 [fmt:UYVY2X8/640x480]"
media-ctl -V "'ipu1_csi0_mux':0 [fmt:UYVY2X8/640x480]"
media-ctl -V "'ipu1_csi0':0 [fmt:AYUV32/640x480]"
Streaming can then begin on "ipu1_csi0 capture" node. The v4l2-ctl
tool can be used to select any supported pixelformat on the capture
device node.
To determine what is the /dev/video node correspondent to
"ipu1_csi0 capture":
.. code-block:: none
media-ctl -e "ipu1_csi0 capture"
/dev/video0
/dev/video0 is the streaming element in this case.
Starting the streaming via v4l2-ctl:
.. code-block:: none
v4l2-ctl --stream-mmap -d /dev/video0
Starting the streaming via Gstreamer and sending the content to the display:
.. code-block:: none
gst-launch-1.0 v4l2src device=/dev/video0 ! kmssink
The following example configures a direct conversion pipeline to capture
from the OV5640, transmitting on MIPI CSI-2 virtual channel 0. It also
shows colorspace conversion and scaling at IC output.
.. code-block:: none
# Setup links
media-ctl -l "'ov5640 1-003c':0 -> 'imx6-mipi-csi2':0[1]"
media-ctl -l "'imx6-mipi-csi2':1 -> 'ipu1_csi0_mux':0[1]"
media-ctl -l "'ipu1_csi0_mux':2 -> 'ipu1_csi0':0[1]"
media-ctl -l "'ipu1_csi0':1 -> 'ipu1_ic_prp':0[1]"
media-ctl -l "'ipu1_ic_prp':1 -> 'ipu1_ic_prpenc':0[1]"
media-ctl -l "'ipu1_ic_prpenc':1 -> 'ipu1_ic_prpenc capture':0[1]"
# Configure pads
media-ctl -V "'ov5640 1-003c':0 [fmt:UYVY2X8/640x480]"
media-ctl -V "'imx6-mipi-csi2':1 [fmt:UYVY2X8/640x480]"
media-ctl -V "'ipu1_csi0_mux':2 [fmt:UYVY2X8/640x480]"
media-ctl -V "'ipu1_csi0':1 [fmt:AYUV32/640x480]"
media-ctl -V "'ipu1_ic_prp':1 [fmt:AYUV32/640x480]"
media-ctl -V "'ipu1_ic_prpenc':1 [fmt:ARGB8888_1X32/800x600]"
# Set a format at the capture interface
v4l2-ctl -d /dev/video1 --set-fmt-video=pixelformat=RGB3
Streaming can then begin on "ipu1_ic_prpenc capture" node.
To determine what is the /dev/video node correspondent to
"ipu1_ic_prpenc capture":
.. code-block:: none
media-ctl -e "ipu1_ic_prpenc capture"
/dev/video1
/dev/video1 is the streaming element in this case.
Starting the streaming via v4l2-ctl:
.. code-block:: none
v4l2-ctl --stream-mmap -d /dev/video1
Starting the streaming via Gstreamer and sending the content to the display:
.. code-block:: none
gst-launch-1.0 v4l2src device=/dev/video1 ! kmssink
Known Issues
------------
1. When using 90 or 270 degree rotation control at capture resolutions
near the IC resizer limit of 1024x1024, and combined with planar
pixel formats (YUV420, YUV422p), frame capture will often fail with
no end-of-frame interrupts from the IDMAC channel. To work around
this, use lower resolution and/or packed formats (YUYV, RGB3, etc.)
when 90 or 270 rotations are needed.
File list
---------
drivers/staging/media/imx/
include/media/imx.h
include/linux/imx-media.h
References
----------
.. [#f1] http://www.nxp.com/assets/documents/data/en/reference-manuals/IMX6DQRM.pdf
.. [#f2] http://www.nxp.com/assets/documents/data/en/reference-manuals/IMX6SDLRM.pdf
Authors
-------
- Steve Longerbeam <steve_longerbeam@mentor.com>
- Philipp Zabel <kernel@pengutronix.de>
- Russell King <linux@armlinux.org.uk>
Copyright (C) 2012-2017 Mentor Graphics Inc.

View File

@ -0,0 +1,51 @@
digraph board {
rankdir=TB
n00000001 [label="{{<port0> 0} | ipu1_csi0\n/dev/v4l-subdev0 | {<port1> 1 | <port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n00000001:port2 -> n00000005 [style=dashed]
n00000001:port1 -> n0000000f:port0 [style=dashed]
n00000001:port1 -> n0000000b:port0 [style=dashed]
n00000005 [label="ipu1_csi0 capture\n/dev/video0", shape=box, style=filled, fillcolor=yellow]
n0000000b [label="{{<port0> 0 | <port1> 1} | ipu1_vdic\n/dev/v4l-subdev1 | {<port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000000b:port2 -> n0000000f:port0 [style=dashed]
n0000000f [label="{{<port0> 0} | ipu1_ic_prp\n/dev/v4l-subdev2 | {<port1> 1 | <port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000000f:port1 -> n00000013:port0 [style=dashed]
n0000000f:port2 -> n0000001c:port0 [style=dashed]
n00000013 [label="{{<port0> 0} | ipu1_ic_prpenc\n/dev/v4l-subdev3 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n00000013:port1 -> n00000016 [style=dashed]
n00000016 [label="ipu1_ic_prpenc capture\n/dev/video1", shape=box, style=filled, fillcolor=yellow]
n0000001c [label="{{<port0> 0} | ipu1_ic_prpvf\n/dev/v4l-subdev4 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n0000001c:port1 -> n0000001f [style=dashed]
n0000001f [label="ipu1_ic_prpvf capture\n/dev/video2", shape=box, style=filled, fillcolor=yellow]
n0000002f [label="{{<port0> 0} | ipu1_csi1\n/dev/v4l-subdev5 | {<port1> 1 | <port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000002f:port2 -> n00000033 [style=dashed]
n0000002f:port1 -> n0000000f:port0 [style=dashed]
n0000002f:port1 -> n0000000b:port0 [style=dashed]
n00000033 [label="ipu1_csi1 capture\n/dev/video3", shape=box, style=filled, fillcolor=yellow]
n0000003d [label="{{<port0> 0} | ipu2_csi0\n/dev/v4l-subdev6 | {<port1> 1 | <port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000003d:port2 -> n00000041 [style=dashed]
n0000003d:port1 -> n0000004b:port0 [style=dashed]
n0000003d:port1 -> n00000047:port0 [style=dashed]
n00000041 [label="ipu2_csi0 capture\n/dev/video4", shape=box, style=filled, fillcolor=yellow]
n00000047 [label="{{<port0> 0 | <port1> 1} | ipu2_vdic\n/dev/v4l-subdev7 | {<port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n00000047:port2 -> n0000004b:port0 [style=dashed]
n0000004b [label="{{<port0> 0} | ipu2_ic_prp\n/dev/v4l-subdev8 | {<port1> 1 | <port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000004b:port1 -> n0000004f:port0 [style=dashed]
n0000004b:port2 -> n00000058:port0 [style=dashed]
n0000004f [label="{{<port0> 0} | ipu2_ic_prpenc\n/dev/v4l-subdev9 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n0000004f:port1 -> n00000052 [style=dashed]
n00000052 [label="ipu2_ic_prpenc capture\n/dev/video5", shape=box, style=filled, fillcolor=yellow]
n00000058 [label="{{<port0> 0} | ipu2_ic_prpvf\n/dev/v4l-subdev10 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n00000058:port1 -> n0000005b [style=dashed]
n0000005b [label="ipu2_ic_prpvf capture\n/dev/video6", shape=box, style=filled, fillcolor=yellow]
n0000006b [label="{{<port0> 0} | ipu2_csi1\n/dev/v4l-subdev11 | {<port1> 1 | <port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000006b:port2 -> n0000006f [style=dashed]
n0000006b:port1 -> n0000004b:port0 [style=dashed]
n0000006b:port1 -> n00000047:port0 [style=dashed]
n0000006f [label="ipu2_csi1 capture\n/dev/video7", shape=box, style=filled, fillcolor=yellow]
n00000079 [label="{{<port0> 0 | <port1> 1} | ipu1_csi0_mux\n/dev/v4l-subdev12 | {<port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n00000079:port2 -> n00000001:port0 [style=dashed]
n0000007d [label="{{<port0> 0 | <port1> 1} | ipu2_csi1_mux\n/dev/v4l-subdev13 | {<port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000007d:port2 -> n0000006b:port0 [style=dashed]
n00000081 [label="{{} | adv7180 3-0021\n/dev/v4l-subdev14 | {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
n00000081:port0 -> n00000079:port1 [style=dashed]
}

View File

@ -0,0 +1,56 @@
digraph board {
rankdir=TB
n00000001 [label="{{<port0> 0} | ipu1_csi0\n/dev/v4l-subdev0 | {<port1> 1 | <port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n00000001:port2 -> n00000005 [style=dashed]
n00000001:port1 -> n0000000f:port0 [style=dashed]
n00000001:port1 -> n0000000b:port0 [style=dashed]
n00000005 [label="ipu1_csi0 capture\n/dev/video0", shape=box, style=filled, fillcolor=yellow]
n0000000b [label="{{<port0> 0 | <port1> 1} | ipu1_vdic\n/dev/v4l-subdev1 | {<port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000000b:port2 -> n0000000f:port0 [style=dashed]
n0000000f [label="{{<port0> 0} | ipu1_ic_prp\n/dev/v4l-subdev2 | {<port1> 1 | <port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000000f:port1 -> n00000013:port0 [style=dashed]
n0000000f:port2 -> n0000001c:port0 [style=dashed]
n00000013 [label="{{<port0> 0} | ipu1_ic_prpenc\n/dev/v4l-subdev3 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n00000013:port1 -> n00000016 [style=dashed]
n00000016 [label="ipu1_ic_prpenc capture\n/dev/video1", shape=box, style=filled, fillcolor=yellow]
n0000001c [label="{{<port0> 0} | ipu1_ic_prpvf\n/dev/v4l-subdev4 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n0000001c:port1 -> n0000001f [style=dashed]
n0000001f [label="ipu1_ic_prpvf capture\n/dev/video2", shape=box, style=filled, fillcolor=yellow]
n0000002f [label="{{<port0> 0} | ipu1_csi1\n/dev/v4l-subdev5 | {<port1> 1 | <port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000002f:port2 -> n00000033 [style=dashed]
n0000002f:port1 -> n0000000f:port0 [style=dashed]
n0000002f:port1 -> n0000000b:port0 [style=dashed]
n00000033 [label="ipu1_csi1 capture\n/dev/video3", shape=box, style=filled, fillcolor=yellow]
n0000003d [label="{{<port0> 0} | ipu2_csi0\n/dev/v4l-subdev6 | {<port1> 1 | <port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000003d:port2 -> n00000041 [style=dashed]
n0000003d:port1 -> n0000004b:port0 [style=dashed]
n0000003d:port1 -> n00000047:port0 [style=dashed]
n00000041 [label="ipu2_csi0 capture\n/dev/video4", shape=box, style=filled, fillcolor=yellow]
n00000047 [label="{{<port0> 0 | <port1> 1} | ipu2_vdic\n/dev/v4l-subdev7 | {<port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n00000047:port2 -> n0000004b:port0 [style=dashed]
n0000004b [label="{{<port0> 0} | ipu2_ic_prp\n/dev/v4l-subdev8 | {<port1> 1 | <port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000004b:port1 -> n0000004f:port0 [style=dashed]
n0000004b:port2 -> n00000058:port0 [style=dashed]
n0000004f [label="{{<port0> 0} | ipu2_ic_prpenc\n/dev/v4l-subdev9 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n0000004f:port1 -> n00000052 [style=dashed]
n00000052 [label="ipu2_ic_prpenc capture\n/dev/video5", shape=box, style=filled, fillcolor=yellow]
n00000058 [label="{{<port0> 0} | ipu2_ic_prpvf\n/dev/v4l-subdev10 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n00000058:port1 -> n0000005b [style=dashed]
n0000005b [label="ipu2_ic_prpvf capture\n/dev/video6", shape=box, style=filled, fillcolor=yellow]
n0000006b [label="{{<port0> 0} | ipu2_csi1\n/dev/v4l-subdev11 | {<port1> 1 | <port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000006b:port2 -> n0000006f [style=dashed]
n0000006b:port1 -> n0000004b:port0 [style=dashed]
n0000006b:port1 -> n00000047:port0 [style=dashed]
n0000006f [label="ipu2_csi1 capture\n/dev/video7", shape=box, style=filled, fillcolor=yellow]
n00000079 [label="{{<port0> 0} | imx6-mipi-csi2\n/dev/v4l-subdev12 | {<port1> 1 | <port2> 2 | <port3> 3 | <port4> 4}}", shape=Mrecord, style=filled, fillcolor=green]
n00000079:port2 -> n0000002f:port0 [style=dashed]
n00000079:port3 -> n0000003d:port0 [style=dashed]
n00000079:port1 -> n0000007f:port0 [style=dashed]
n00000079:port4 -> n00000083:port0 [style=dashed]
n0000007f [label="{{<port0> 0 | <port1> 1} | ipu1_csi0_mux\n/dev/v4l-subdev13 | {<port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000007f:port2 -> n00000001:port0 [style=dashed]
n00000083 [label="{{<port0> 0 | <port1> 1} | ipu2_csi1_mux\n/dev/v4l-subdev14 | {<port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n00000083:port2 -> n0000006b:port0 [style=dashed]
n00000087 [label="{{} | ov5640 1-003c\n/dev/v4l-subdev15 | {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
n00000087:port0 -> n00000079:port0 [style=dashed]
}

View File

@ -0,0 +1,61 @@
.. SPDX-License-Identifier: GPL-2.0
.. include:: <isonum.txt>
====================================
Media subsystem admin and user guide
====================================
This section contains usage information about media subsystem and
its supported drivers.
Please see:
- :doc:`/userspace-api/media/index`
for the userspace APIs used on media devices.
- :doc:`/driver-api/media/index`
for driver development information and Kernel APIs used by
media devices;
The media subsystem
===================
.. only:: html
.. class:: toc-title
Table of Contents
.. toctree::
:maxdepth: 2
:numbered:
intro
building
remote-controller
dvb
cardlist
v4l-drivers
dvb-drivers
cec-drivers
**Copyright** |copy| 1999-2020 : LinuxTV Developers
::
This documentation is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your option) any
later version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details.
For more details see the file COPYING in the source distribution of Linux.

View File

@ -0,0 +1,27 @@
.. SPDX-License-Identifier: GPL-2.0
============
Introduction
============
The media subsystem consists on Linux support for several different types
of devices:
- Audio and video grabbers;
- PC and Laptop Cameras;
- Complex cameras found on Embedded hardware;
- Analog and digital TV;
- HDMI Customer Electronics Control (CEC);
- Multi-touch input devices;
- Remote Controllers;
- Media encoders and decoders.
Due to the diversity of devices, the subsystem provides several different
APIs:
- Remote Controller API;
- HDMI CEC API;
- Video4Linux API;
- Media controller API;
- Video4Linux Request API (experimental);
- Digital TV API (also known as DVB API).

View File

@ -0,0 +1,591 @@
.. SPDX-License-Identifier: GPL-2.0
.. include:: <isonum.txt>
===============================================================
Intel Image Processing Unit 3 (IPU3) Imaging Unit (ImgU) driver
===============================================================
Copyright |copy| 2018 Intel Corporation
Introduction
============
This file documents the Intel IPU3 (3rd generation Image Processing Unit)
Imaging Unit drivers located under drivers/media/pci/intel/ipu3 (CIO2) as well
as under drivers/staging/media/ipu3 (ImgU).
The Intel IPU3 found in certain Kaby Lake (as well as certain Sky Lake)
platforms (U/Y processor lines) is made up of two parts namely the Imaging Unit
(ImgU) and the CIO2 device (MIPI CSI2 receiver).
The CIO2 device receives the raw Bayer data from the sensors and outputs the
frames in a format that is specific to the IPU3 (for consumption by the IPU3
ImgU). The CIO2 driver is available as drivers/media/pci/intel/ipu3/ipu3-cio2*
and is enabled through the CONFIG_VIDEO_IPU3_CIO2 config option.
The Imaging Unit (ImgU) is responsible for processing images captured
by the IPU3 CIO2 device. The ImgU driver sources can be found under
drivers/staging/media/ipu3 directory. The driver is enabled through the
CONFIG_VIDEO_IPU3_IMGU config option.
The two driver modules are named ipu3_csi2 and ipu3_imgu, respectively.
The drivers has been tested on Kaby Lake platforms (U/Y processor lines).
Both of the drivers implement V4L2, Media Controller and V4L2 sub-device
interfaces. The IPU3 CIO2 driver supports camera sensors connected to the CIO2
MIPI CSI-2 interfaces through V4L2 sub-device sensor drivers.
CIO2
====
The CIO2 is represented as a single V4L2 subdev, which provides a V4L2 subdev
interface to the user space. There is a video node for each CSI-2 receiver,
with a single media controller interface for the entire device.
The CIO2 contains four independent capture channel, each with its own MIPI CSI-2
receiver and DMA engine. Each channel is modelled as a V4L2 sub-device exposed
to userspace as a V4L2 sub-device node and has two pads:
.. tabularcolumns:: |p{0.8cm}|p{4.0cm}|p{4.0cm}|
.. flat-table::
* - pad
- direction
- purpose
* - 0
- sink
- MIPI CSI-2 input, connected to the sensor subdev
* - 1
- source
- Raw video capture, connected to the V4L2 video interface
The V4L2 video interfaces model the DMA engines. They are exposed to userspace
as V4L2 video device nodes.
Capturing frames in raw Bayer format
------------------------------------
CIO2 MIPI CSI2 receiver is used to capture frames (in packed raw Bayer format)
from the raw sensors connected to the CSI2 ports. The captured frames are used
as input to the ImgU driver.
Image processing using IPU3 ImgU requires tools such as raw2pnm [#f1]_, and
yavta [#f2]_ due to the following unique requirements and / or features specific
to IPU3.
-- The IPU3 CSI2 receiver outputs the captured frames from the sensor in packed
raw Bayer format that is specific to IPU3.
-- Multiple video nodes have to be operated simultaneously.
Let us take the example of ov5670 sensor connected to CSI2 port 0, for a
2592x1944 image capture.
Using the media contorller APIs, the ov5670 sensor is configured to send
frames in packed raw Bayer format to IPU3 CSI2 receiver.
# This example assumes /dev/media0 as the CIO2 media device
export MDEV=/dev/media0
# and that ov5670 sensor is connected to i2c bus 10 with address 0x36
export SDEV=$(media-ctl -d $MDEV -e "ov5670 10-0036")
# Establish the link for the media devices using media-ctl [#f3]_
media-ctl -d $MDEV -l "ov5670:0 -> ipu3-csi2 0:0[1]"
# Set the format for the media devices
media-ctl -d $MDEV -V "ov5670:0 [fmt:SGRBG10/2592x1944]"
media-ctl -d $MDEV -V "ipu3-csi2 0:0 [fmt:SGRBG10/2592x1944]"
media-ctl -d $MDEV -V "ipu3-csi2 0:1 [fmt:SGRBG10/2592x1944]"
Once the media pipeline is configured, desired sensor specific settings
(such as exposure and gain settings) can be set, using the yavta tool.
e.g
yavta -w 0x009e0903 444 $SDEV
yavta -w 0x009e0913 1024 $SDEV
yavta -w 0x009e0911 2046 $SDEV
Once the desired sensor settings are set, frame captures can be done as below.
e.g
yavta --data-prefix -u -c10 -n5 -I -s2592x1944 --file=/tmp/frame-#.bin \
-f IPU3_SGRBG10 $(media-ctl -d $MDEV -e "ipu3-cio2 0")
With the above command, 10 frames are captured at 2592x1944 resolution, with
sGRBG10 format and output as IPU3_SGRBG10 format.
The captured frames are available as /tmp/frame-#.bin files.
ImgU
====
The ImgU is represented as two V4L2 subdevs, each of which provides a V4L2
subdev interface to the user space.
Each V4L2 subdev represents a pipe, which can support a maximum of 2 streams.
This helps to support advanced camera features like Continuous View Finder (CVF)
and Snapshot During Video(SDV).
The ImgU contains two independent pipes, each modelled as a V4L2 sub-device
exposed to userspace as a V4L2 sub-device node.
Each pipe has two sink pads and three source pads for the following purpose:
.. tabularcolumns:: |p{0.8cm}|p{4.0cm}|p{4.0cm}|
.. flat-table::
* - pad
- direction
- purpose
* - 0
- sink
- Input raw video stream
* - 1
- sink
- Processing parameters
* - 2
- source
- Output processed video stream
* - 3
- source
- Output viewfinder video stream
* - 4
- source
- 3A statistics
Each pad is connected to a corresponding V4L2 video interface, exposed to
userspace as a V4L2 video device node.
Device operation
----------------
With ImgU, once the input video node ("ipu3-imgu 0/1":0, in
<entity>:<pad-number> format) is queued with buffer (in packed raw Bayer
format), ImgU starts processing the buffer and produces the video output in YUV
format and statistics output on respective output nodes. The driver is expected
to have buffers ready for all of parameter, output and statistics nodes, when
input video node is queued with buffer.
At a minimum, all of input, main output, 3A statistics and viewfinder
video nodes should be enabled for IPU3 to start image processing.
Each ImgU V4L2 subdev has the following set of video nodes.
input, output and viewfinder video nodes
----------------------------------------
The frames (in packed raw Bayer format specific to the IPU3) received by the
input video node is processed by the IPU3 Imaging Unit and are output to 2 video
nodes, with each targeting a different purpose (main output and viewfinder
output).
Details onand the Bayer format specific to the IPU3 can be found in
:ref:`v4l2-pix-fmt-ipu3-sbggr10`.
The driver supports V4L2 Video Capture Interface as defined at :ref:`devices`.
Only the multi-planar API is supported. More details can be found at
:ref:`planar-apis`.
Parameters video node
---------------------
The parameters video node receives the ImgU algorithm parameters that are used
to configure how the ImgU algorithms process the image.
Details on processing parameters specific to the IPU3 can be found in
:ref:`v4l2-meta-fmt-params`.
3A statistics video node
------------------------
3A statistics video node is used by the ImgU driver to output the 3A (auto
focus, auto exposure and auto white balance) statistics for the frames that are
being processed by the ImgU to user space applications. User space applications
can use this statistics data to compute the desired algorithm parameters for
the ImgU.
Configuring the Intel IPU3
==========================
The IPU3 ImgU pipelines can be configured using the Media Controller, defined at
:ref:`media_controller`.
Running mode and firmware binary selection
------------------------------------------
ImgU works based on firmware, currently the ImgU firmware support run 2 pipes in
time-sharing with single input frame data. Each pipe can run at certain mode -
"VIDEO" or "STILL", "VIDEO" mode is commonly used for video frames capture, and
"STILL" is used for still frame capture. However, you can also select "VIDEO" to
capture still frames if you want to capture images with less system load and
power. For "STILL" mode, ImgU will try to use smaller BDS factor and output
larger bayer frame for further YUV processing than "VIDEO" mode to get high
quality images. Besides, "STILL" mode need XNR3 to do noise reduction, hence
"STILL" mode will need more power and memory bandwidth than "VIDEO" mode. TNR
will be enabled in "VIDEO" mode and bypassed by "STILL" mode. ImgU is running at
“VIDEO” mode by default, the user can use v4l2 control V4L2_CID_INTEL_IPU3_MODE
(currently defined in drivers/staging/media/ipu3/include/intel-ipu3.h) to query
and set the running mode. For user, there is no difference for buffer queueing
between the "VIDEO" and "STILL" mode, mandatory input and main output node
should be enabled and buffers need be queued, the statistics and the view-finder
queues are optional.
The firmware binary will be selected according to current running mode, such log
"using binary if_to_osys_striped " or "using binary if_to_osys_primary_striped"
could be observed if you enable the ImgU dynamic debug, the binary
if_to_osys_striped is selected for "VIDEO" and the binary
"if_to_osys_primary_striped" is selected for "STILL".
Processing the image in raw Bayer format
----------------------------------------
Configuring ImgU V4L2 subdev for image processing
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The ImgU V4L2 subdevs have to be configured with media controller APIs to have
all the video nodes setup correctly.
Let us take "ipu3-imgu 0" subdev as an example.
media-ctl -d $MDEV -r
media-ctl -d $MDEV -l "ipu3-imgu 0 input":0 -> "ipu3-imgu 0":0[1]
media-ctl -d $MDEV -l "ipu3-imgu 0":2 -> "ipu3-imgu 0 output":0[1]
media-ctl -d $MDEV -l "ipu3-imgu 0":3 -> "ipu3-imgu 0 viewfinder":0[1]
media-ctl -d $MDEV -l "ipu3-imgu 0":4 -> "ipu3-imgu 0 3a stat":0[1]
Also the pipe mode of the corresponding V4L2 subdev should be set as desired
(e.g 0 for video mode or 1 for still mode) through the control id 0x009819a1 as
below.
yavta -w "0x009819A1 1" /dev/v4l-subdev7
Certain hardware blocks in ImgU pipeline can change the frame resolution by
cropping or scaling, these hardware blocks include Input Feeder(IF), Bayer Down
Scaler (BDS) and Geometric Distortion Correction (GDC).
There is also a block which can change the frame resolution - YUV Scaler, it is
only applicable to the secondary output.
RAW Bayer frames go through these ImgU pipeline hardware blocks and the final
processed image output to the DDR memory.
.. kernel-figure:: ipu3_rcb.svg
:alt: ipu3 resolution blocks image
IPU3 resolution change hardware blocks
**Input Feeder**
Input Feeder gets the Bayer frame data from the sensor, it can enable cropping
of lines and columns from the frame and then store pixels into device's internal
pixel buffer which are ready to readout by following blocks.
**Bayer Down Scaler**
Bayer Down Scaler is capable of performing image scaling in Bayer domain, the
downscale factor can be configured from 1X to 1/4X in each axis with
configuration steps of 0.03125 (1/32).
**Geometric Distortion Correction**
Geometric Distortion Correction is used to performe correction of distortions
and image filtering. It needs some extra filter and envelop padding pixels to
work, so the input resolution of GDC should be larger than the output
resolution.
**YUV Scaler**
YUV Scaler which similar with BDS, but it is mainly do image down scaling in
YUV domain, it can support up to 1/12X down scaling, but it can not be applied
to the main output.
The ImgU V4L2 subdev has to be configured with the supported resolutions in all
the above hardware blocks, for a given input resolution.
For a given supported resolution for an input frame, the Input Feeder, Bayer
Down Scaler and GDC blocks should be configured with the supported resolutions
as each hardware block has its own alignment requirement.
You must configure the output resolution of the hardware blocks smartly to meet
the hardware requirement along with keeping the maximum field of view. The
intermediate resolutions can be generated by specific tool -
https://github.com/intel/intel-ipu3-pipecfg
This tool can be used to generate intermediate resolutions. More information can
be obtained by looking at the following IPU3 ImgU configuration table.
https://chromium.googlesource.com/chromiumos/overlays/board-overlays/+/master
Under baseboard-poppy/media-libs/cros-camera-hal-configs-poppy/files/gcss
directory, graph_settings_ov5670.xml can be used as an example.
The following steps prepare the ImgU pipeline for the image processing.
1. The ImgU V4L2 subdev data format should be set by using the
VIDIOC_SUBDEV_S_FMT on pad 0, using the GDC width and height obtained above.
2. The ImgU V4L2 subdev cropping should be set by using the
VIDIOC_SUBDEV_S_SELECTION on pad 0, with V4L2_SEL_TGT_CROP as the target,
using the input feeder height and width.
3. The ImgU V4L2 subdev composing should be set by using the
VIDIOC_SUBDEV_S_SELECTION on pad 0, with V4L2_SEL_TGT_COMPOSE as the target,
using the BDS height and width.
For the ov5670 example, for an input frame with a resolution of 2592x1944
(which is input to the ImgU subdev pad 0), the corresponding resolutions
for input feeder, BDS and GDC are 2592x1944, 2592x1944 and 2560x1920
respectively.
Once this is done, the received raw Bayer frames can be input to the ImgU
V4L2 subdev as below, using the open source application v4l2n [#f1]_.
For an image captured with 2592x1944 [#f4]_ resolution, with desired output
resolution as 2560x1920 and viewfinder resolution as 2560x1920, the following
v4l2n command can be used. This helps process the raw Bayer frames and produces
the desired results for the main output image and the viewfinder output, in NV12
format.
v4l2n --pipe=4 --load=/tmp/frame-#.bin --open=/dev/video4
--fmt=type:VIDEO_OUTPUT_MPLANE,width=2592,height=1944,pixelformat=0X47337069
--reqbufs=type:VIDEO_OUTPUT_MPLANE,count:1 --pipe=1 --output=/tmp/frames.out
--open=/dev/video5
--fmt=type:VIDEO_CAPTURE_MPLANE,width=2560,height=1920,pixelformat=NV12
--reqbufs=type:VIDEO_CAPTURE_MPLANE,count:1 --pipe=2 --output=/tmp/frames.vf
--open=/dev/video6
--fmt=type:VIDEO_CAPTURE_MPLANE,width=2560,height=1920,pixelformat=NV12
--reqbufs=type:VIDEO_CAPTURE_MPLANE,count:1 --pipe=3 --open=/dev/video7
--output=/tmp/frames.3A --fmt=type:META_CAPTURE,?
--reqbufs=count:1,type:META_CAPTURE --pipe=1,2,3,4 --stream=5
You can also use yavta [#f2]_ command to do same thing as above:
.. code-block:: none
yavta --data-prefix -Bcapture-mplane -c10 -n5 -I -s2592x1944 \
--file=frame-#.out-f NV12 /dev/video5 & \
yavta --data-prefix -Bcapture-mplane -c10 -n5 -I -s2592x1944 \
--file=frame-#.vf -f NV12 /dev/video6 & \
yavta --data-prefix -Bmeta-capture -c10 -n5 -I \
--file=frame-#.3a /dev/video7 & \
yavta --data-prefix -Boutput-mplane -c10 -n5 -I -s2592x1944 \
--file=/tmp/frame-in.cio2 -f IPU3_SGRBG10 /dev/video4
where /dev/video4, /dev/video5, /dev/video6 and /dev/video7 devices point to
input, output, viewfinder and 3A statistics video nodes respectively.
Converting the raw Bayer image into YUV domain
----------------------------------------------
The processed images after the above step, can be converted to YUV domain
as below.
Main output frames
~~~~~~~~~~~~~~~~~~
raw2pnm -x2560 -y1920 -fNV12 /tmp/frames.out /tmp/frames.out.ppm
where 2560x1920 is output resolution, NV12 is the video format, followed
by input frame and output PNM file.
Viewfinder output frames
~~~~~~~~~~~~~~~~~~~~~~~~
raw2pnm -x2560 -y1920 -fNV12 /tmp/frames.vf /tmp/frames.vf.ppm
where 2560x1920 is output resolution, NV12 is the video format, followed
by input frame and output PNM file.
Example user space code for IPU3
================================
User space code that configures and uses IPU3 is available here.
https://chromium.googlesource.com/chromiumos/platform/arc-camera/+/master/
The source can be located under hal/intel directory.
Overview of IPU3 pipeline
=========================
IPU3 pipeline has a number of image processing stages, each of which takes a
set of parameters as input. The major stages of pipelines are shown here:
.. kernel-render:: DOT
:alt: IPU3 ImgU Pipeline
:caption: IPU3 ImgU Pipeline Diagram
digraph "IPU3 ImgU" {
node [shape=box]
splines="ortho"
rankdir="LR"
a [label="Raw pixels"]
b [label="Bayer Downscaling"]
c [label="Optical Black Correction"]
d [label="Linearization"]
e [label="Lens Shading Correction"]
f [label="White Balance / Exposure / Focus Apply"]
g [label="Bayer Noise Reduction"]
h [label="ANR"]
i [label="Demosaicing"]
j [label="Color Correction Matrix"]
k [label="Gamma correction"]
l [label="Color Space Conversion"]
m [label="Chroma Down Scaling"]
n [label="Chromatic Noise Reduction"]
o [label="Total Color Correction"]
p [label="XNR3"]
q [label="TNR"]
r [label="DDR", style=filled, fillcolor=yellow, shape=cylinder]
s [label="YUV Downscaling"]
t [label="DDR", style=filled, fillcolor=yellow, shape=cylinder]
{ rank=same; a -> b -> c -> d -> e -> f -> g -> h -> i }
{ rank=same; j -> k -> l -> m -> n -> o -> p -> q -> s -> t}
a -> j [style=invis, weight=10]
i -> j
q -> r
}
The table below presents a description of the above algorithms.
======================== =======================================================
Name Description
======================== =======================================================
Optical Black Correction Optical Black Correction block subtracts a pre-defined
value from the respective pixel values to obtain better
image quality.
Defined in :c:type:`ipu3_uapi_obgrid_param`.
Linearization This algo block uses linearization parameters to
address non-linearity sensor effects. The Lookup table
table is defined in
:c:type:`ipu3_uapi_isp_lin_vmem_params`.
SHD Lens shading correction is used to correct spatial
non-uniformity of the pixel response due to optical
lens shading. This is done by applying a different gain
for each pixel. The gain, black level etc are
configured in :c:type:`ipu3_uapi_shd_config_static`.
BNR Bayer noise reduction block removes image noise by
applying a bilateral filter.
See :c:type:`ipu3_uapi_bnr_static_config` for details.
ANR Advanced Noise Reduction is a block based algorithm
that performs noise reduction in the Bayer domain. The
convolution matrix etc can be found in
:c:type:`ipu3_uapi_anr_config`.
DM Demosaicing converts raw sensor data in Bayer format
into RGB (Red, Green, Blue) presentation. Then add
outputs of estimation of Y channel for following stream
processing by Firmware. The struct is defined as
:c:type:`ipu3_uapi_dm_config`.
Color Correction Color Correction algo transforms sensor specific color
space to the standard "sRGB" color space. This is done
by applying 3x3 matrix defined in
:c:type:`ipu3_uapi_ccm_mat_config`.
Gamma correction Gamma correction :c:type:`ipu3_uapi_gamma_config` is a
basic non-linear tone mapping correction that is
applied per pixel for each pixel component.
CSC Color space conversion transforms each pixel from the
RGB primary presentation to YUV (Y: brightness,
UV: Luminance) presentation. This is done by applying
a 3x3 matrix defined in
:c:type:`ipu3_uapi_csc_mat_config`
CDS Chroma down sampling
After the CSC is performed, the Chroma Down Sampling
is applied for a UV plane down sampling by a factor
of 2 in each direction for YUV 4:2:0 using a 4x2
configurable filter :c:type:`ipu3_uapi_cds_params`.
CHNR Chroma noise reduction
This block processes only the chrominance pixels and
performs noise reduction by cleaning the high
frequency noise.
See struct :c:type:`ipu3_uapi_yuvp1_chnr_config`.
TCC Total color correction as defined in struct
:c:type:`ipu3_uapi_yuvp2_tcc_static_config`.
XNR3 eXtreme Noise Reduction V3 is the third revision of
noise reduction algorithm used to improve image
quality. This removes the low frequency noise in the
captured image. Two related structs are being defined,
:c:type:`ipu3_uapi_isp_xnr3_params` for ISP data memory
and :c:type:`ipu3_uapi_isp_xnr3_vmem_params` for vector
memory.
TNR Temporal Noise Reduction block compares successive
frames in time to remove anomalies / noise in pixel
values. :c:type:`ipu3_uapi_isp_tnr3_vmem_params` and
:c:type:`ipu3_uapi_isp_tnr3_params` are defined for ISP
vector and data memory respectively.
======================== =======================================================
Other often encountered acronyms not listed in above table:
ACC
Accelerator cluster
AWB_FR
Auto white balance filter response statistics
BDS
Bayer downscaler parameters
CCM
Color correction matrix coefficients
IEFd
Image enhancement filter directed
Obgrid
Optical black level compensation
OSYS
Output system configuration
ROI
Region of interest
YDS
Y down sampling
YTM
Y-tone mapping
A few stages of the pipeline will be executed by firmware running on the ISP
processor, while many others will use a set of fixed hardware blocks also
called accelerator cluster (ACC) to crunch pixel data and produce statistics.
ACC parameters of individual algorithms, as defined by
:c:type:`ipu3_uapi_acc_param`, can be chosen to be applied by the user
space through struct :c:type:`ipu3_uapi_flags` embedded in
:c:type:`ipu3_uapi_params` structure. For parameters that are configured as
not enabled by the user space, the corresponding structs are ignored by the
driver, in which case the existing configuration of the algorithm will be
preserved.
References
==========
.. [#f5] drivers/staging/media/ipu3/include/intel-ipu3.h
.. [#f1] https://github.com/intel/nvt
.. [#f2] http://git.ideasonboard.org/yavta.git
.. [#f3] http://git.ideasonboard.org/?p=media-ctl.git;a=summary
.. [#f4] ImgU limitation requires an additional 16x16 for all input resolutions

View File

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 76 KiB

View File

@ -0,0 +1,139 @@
.. SPDX-License-Identifier: GPL-2.0
IVTV cards list
===============
.. tabularcolumns:: |p{1.4cm}|p{12.7cm}|p{3.4cm}|
.. flat-table::
:header-rows: 1
:widths: 2 19 18
:stub-columns: 0
* - Card number
- Card name
- PCI subsystem IDs
* - 0
- Hauppauge WinTV PVR-250
- IVTV16 104d:813d
* - 1
- Hauppauge WinTV PVR-350
- IVTV16 104d:813d
* - 2
- Hauppauge WinTV PVR-150
- IVTV16 104d:813d
* - 3
- AVerMedia M179
- IVTV15 1461:a3cf, IVTV15 1461:a3ce
* - 4
- Yuan MPG600, Kuroutoshikou ITVC16-STVLP
- IVTV16 12ab:fff3, IVTV16 12ab:ffff
* - 5
- YUAN MPG160, Kuroutoshikou ITVC15-STVLP, I/O Data GV-M2TV/PCI
- IVTV15 10fc:40a0
* - 6
- Yuan PG600, Diamond PVR-550
- IVTV16 ff92:0070, IVTV16 ffab:0600
* - 7
- Adaptec VideOh! AVC-2410
- IVTV16 9005:0093
* - 8
- Adaptec VideOh! AVC-2010
- IVTV16 9005:0092
* - 9
- Nagase Transgear 5000TV
- IVTV16 1461:bfff
* - 10
- AOpen VA2000MAX-SNT6
- IVTV16 0000:ff5f
* - 11
- Yuan MPG600GR, Kuroutoshikou CX23416GYC-STVLP
- IVTV16 12ab:0600, IVTV16 fbab:0600, IVTV16 1154:0523
* - 12
- I/O Data GV-MVP/RX, GV-MVP/RX2W (dual tuner)
- IVTV16 10fc:d01e, IVTV16 10fc:d038, IVTV16 10fc:d039
* - 13
- I/O Data GV-MVP/RX2E
- IVTV16 10fc:d025
* - 14
- GotView PCI DVD
- IVTV16 12ab:0600
* - 15
- GotView PCI DVD2 Deluxe
- IVTV16 ffac:0600
* - 16
- Yuan MPC622
- IVTV16 ff01:d998
* - 17
- Digital Cowboy DCT-MTVP1
- IVTV16 1461:bfff
* - 18
- Yuan PG600-2, GotView PCI DVD Lite
- IVTV16 ffab:0600, IVTV16 ffad:0600
* - 19
- Club3D ZAP-TV1x01
- IVTV16 ffab:0600
* - 20
- AVerTV MCE 116 Plus
- IVTV16 1461:c439
* - 21
- ASUS Falcon2
- IVTV16 1043:4b66, IVTV16 1043:462e, IVTV16 1043:4b2e
* - 22
- AVerMedia PVR-150 Plus / AVerTV M113 Partsnic (Daewoo) Tuner
- IVTV16 1461:c034, IVTV16 1461:c035
* - 23
- AVerMedia EZMaker PCI Deluxe
- IVTV16 1461:c03f
* - 24
- AVerMedia M104
- IVTV16 1461:c136
* - 25
- Buffalo PC-MV5L/PCI
- IVTV16 1154:052b
* - 26
- AVerMedia UltraTV 1500 MCE / AVerTV M113 Philips Tuner
- IVTV16 1461:c019, IVTV16 1461:c01b
* - 27
- Sony VAIO Giga Pocket (ENX Kikyou)
- IVTV16 104d:813d
* - 28
- Hauppauge WinTV PVR-350 (V1)
- IVTV16 104d:813d
* - 29
- Yuan MPG600GR, Kuroutoshikou CX23416GYC-STVLP (no GR)
- IVTV16 104d:813d
* - 30
- Yuan MPG600GR, Kuroutoshikou CX23416GYC-STVLP (no GR/YCS)
- IVTV16 104d:813d

View File

@ -0,0 +1,93 @@
.. SPDX-License-Identifier: GPL-2.0
.. include:: <isonum.txt>
Vaio Picturebook Motion Eye Camera Driver
=========================================
Copyright |copy| 2001-2004 Stelian Pop <stelian@popies.net>
Copyright |copy| 2001-2002 Alcôve <www.alcove.com>
Copyright |copy| 2000 Andrew Tridgell <tridge@samba.org>
This driver enable the use of video4linux compatible applications with the
Motion Eye camera. This driver requires the "Sony Laptop Extras" driver (which
can be found in the "Misc devices" section of the kernel configuration utility)
to be compiled and installed (using its "camera=1" parameter).
It can do at maximum 30 fps @ 320x240 or 15 fps @ 640x480.
Grabbing is supported in packed YUV colorspace only.
MJPEG hardware grabbing is supported via a private API (see below).
Hardware supported
------------------
This driver supports the 'second' version of the MotionEye camera :)
The first version was connected directly on the video bus of the Neomagic
video card and is unsupported.
The second one, made by Kawasaki Steel is fully supported by this
driver (PCI vendor/device is 0x136b/0xff01)
The third one, present in recent (more or less last year) Picturebooks
(C1M* models), is not supported. The manufacturer has given the specs
to the developers under a NDA (which allows the development of a GPL
driver however), but things are not moving very fast (see
http://r-engine.sourceforge.net/) (PCI vendor/device is 0x10cf/0x2011).
There is a forth model connected on the USB bus in TR1* Vaio laptops.
This camera is not supported at all by the current driver, in fact
little information if any is available for this camera
(USB vendor/device is 0x054c/0x0107).
Driver options
--------------
Several options can be passed to the meye driver using the standard
module argument syntax (<param>=<value> when passing the option to the
module or meye.<param>=<value> on the kernel boot line when meye is
statically linked into the kernel). Those options are:
.. code-block:: none
gbuffers: number of capture buffers, default is 2 (32 max)
gbufsize: size of each capture buffer, default is 614400
video_nr: video device to register (0 = /dev/video0, etc)
Module use
----------
In order to automatically load the meye module on use, you can put those lines
in your /etc/modprobe.d/meye.conf file:
.. code-block:: none
alias char-major-81 videodev
alias char-major-81-0 meye
options meye gbuffers=32
Usage:
------
.. code-block:: none
xawtv >= 3.49 (<http://bytesex.org/xawtv/>)
for display and uncompressed video capture:
xawtv -c /dev/video0 -geometry 640x480
or
xawtv -c /dev/video0 -geometry 320x240
motioneye (<http://popies.net/meye/>)
for getting ppm or jpg snapshots, mjpeg video
Bugs / Todo
-----------
- 'motioneye' still uses the meye private v4l1 API extensions.

View File

@ -0,0 +1,28 @@
.. SPDX-License-Identifier: GPL-2.0
Firewire driver
===============
The media subsystem also provides a firewire driver for digital TV:
======= =====================
Driver Name
======= =====================
firedtv FireDTV and FloppyDTV
======= =====================
Test drivers
============
In order to test userspace applications, there's a number of virtual
drivers, with provide test functionality, simulating real hardware
devices:
======= ======================================
Driver Name
======= ======================================
vicodec Virtual Codec Driver
vim2m Virtual Memory-to-Memory Driver
vimc Virtual Media Controller Driver (VIMC)
vivid Virtual Video Test Driver
======= ======================================

View File

@ -0,0 +1,92 @@
.. SPDX-License-Identifier: GPL-2.0
.. include:: <isonum.txt>
OMAP 3 Image Signal Processor (ISP) driver
==========================================
Copyright |copy| 2010 Nokia Corporation
Copyright |copy| 2009 Texas Instruments, Inc.
Contacts: Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
Sakari Ailus <sakari.ailus@iki.fi>, David Cohen <dacohen@gmail.com>
Introduction
------------
This file documents the Texas Instruments OMAP 3 Image Signal Processor (ISP)
driver located under drivers/media/platform/omap3isp. The original driver was
written by Texas Instruments but since that it has been rewritten (twice) at
Nokia.
The driver has been successfully used on the following versions of OMAP 3:
- 3430
- 3530
- 3630
The driver implements V4L2, Media controller and v4l2_subdev interfaces.
Sensor, lens and flash drivers using the v4l2_subdev interface in the kernel
are supported.
Split to subdevs
----------------
The OMAP 3 ISP is split into V4L2 subdevs, each of the blocks inside the ISP
having one subdev to represent it. Each of the subdevs provide a V4L2 subdev
interface to userspace.
- OMAP3 ISP CCP2
- OMAP3 ISP CSI2a
- OMAP3 ISP CCDC
- OMAP3 ISP preview
- OMAP3 ISP resizer
- OMAP3 ISP AEWB
- OMAP3 ISP AF
- OMAP3 ISP histogram
Each possible link in the ISP is modelled by a link in the Media controller
interface. For an example program see [#]_.
Controlling the OMAP 3 ISP
--------------------------
In general, the settings given to the OMAP 3 ISP take effect at the beginning
of the following frame. This is done when the module becomes idle during the
vertical blanking period on the sensor. In memory-to-memory operation the pipe
is run one frame at a time. Applying the settings is done between the frames.
All the blocks in the ISP, excluding the CSI-2 and possibly the CCP2 receiver,
insist on receiving complete frames. Sensors must thus never send the ISP
partial frames.
Autoidle does have issues with some ISP blocks on the 3430, at least.
Autoidle is only enabled on 3630 when the omap3isp module parameter autoidle
is non-zero.
Technical reference manuals (TRMs) and other documentation
----------------------------------------------------------
OMAP 3430 TRM:
<URL:http://focus.ti.com/pdfs/wtbu/OMAP34xx_ES3.1.x_PUBLIC_TRM_vZM.zip>
Referenced 2011-03-05.
OMAP 35xx TRM:
<URL:http://www.ti.com/litv/pdf/spruf98o> Referenced 2011-03-05.
OMAP 3630 TRM:
<URL:http://focus.ti.com/pdfs/wtbu/OMAP36xx_ES1.x_PUBLIC_TRM_vQ.zip>
Referenced 2011-03-05.
DM 3730 TRM:
<URL:http://www.ti.com/litv/pdf/sprugn4h> Referenced 2011-03-06.
References
----------
.. [#] http://git.ideasonboard.org/?p=media-ctl.git;a=summary

View File

@ -0,0 +1,92 @@
.. SPDX-License-Identifier: GPL-2.0
Other USB cards list
====================
================ ====================================== =====================
Driver Card name USB IDs
================ ====================================== =====================
airspy Airspy 1d50:60a1
dvb-as102 Abilis Systems DVB-Titan 1BA6:0001
dvb-as102 PCTV Systems picoStick (74e) 2013:0246
dvb-as102 Elgato EyeTV DTT Deluxe 0fd9:002c
dvb-as102 nBox DVB-T Dongle 0b89:0007
dvb-as102 Sky IT Digital Key (green led) 2137:0001
b2c2-flexcop-usb Technisat/B2C2 FlexCop II/IIb/III 0af7:0101
Digital TV
cpia2 Vision's CPiA2 cameras 0553:0100, 0553:0140,
such as the Digital Blue QX5 0553:0151
go7007 WIS GO7007 MPEG encoder 1943:a250, 093b:a002,
093b:a004, 0eb1:6666,
0eb1:6668
hackrf HackRF Software Decoder Radio 1d50:6089
hdpvr Hauppauge HD PVR 2040:4900, 2040:4901,
2040:4902, 2040:4982,
2040:4903
msi2500 Mirics MSi3101 SDR Dongle 1df7:2500, 2040:d300
pvrusb2 Hauppauge WinTV-PVR USB2 2040:2900, 2040:2950,
2040:2400, 1164:0622,
1164:0602, 11ba:1003,
11ba:1001, 2040:7300,
2040:7500, 2040:7501,
0ccd:0039, 2040:7502,
2040:7510
pwc Creative Webcam 5 041E:400C
pwc Creative Webcam Pro Ex 041E:4011
pwc Logitech QuickCam 3000 Pro 046D:08B0
pwc Logitech QuickCam Notebook Pro 046D:08B1
pwc Logitech QuickCam 4000 Pro 046D:08B2
pwc Logitech QuickCam Zoom (old model) 046D:08B3
pwc Logitech QuickCam Zoom (new model) 046D:08B4
pwc Logitech QuickCam Orbit/Sphere 046D:08B5
pwc Logitech/Cisco VT Camera 046D:08B6
pwc Logitech ViewPort AV 100 046D:08B7
pwc Logitech QuickCam 046D:08B8
pwc Philips PCA645VC 0471:0302
pwc Philips PCA646VC 0471:0303
pwc Askey VC010 type 2 0471:0304
pwc Philips PCVC675K (Vesta) 0471:0307
pwc Philips PCVC680K (Vesta Pro) 0471:0308
pwc Philips PCVC690K (Vesta Pro Scan) 0471:030C
pwc Philips PCVC730K (ToUCam Fun), 0471:0310
PCVC830 (ToUCam II)
pwc Philips PCVC740K (ToUCam Pro), 0471:0311
PCVC840 (ToUCam II)
pwc Philips PCVC750K (ToUCam Pro Scan) 0471:0312
pwc Philips PCVC720K/40 (ToUCam XS) 0471:0313
pwc Philips SPC 900NC 0471:0329
pwc Philips SPC 880NC 0471:032C
pwc Sotec Afina Eye 04CC:8116
pwc Samsung MPC-C10 055D:9000
pwc Samsung MPC-C30 055D:9001
pwc Samsung SNC-35E (Ver3.0) 055D:9002
pwc Askey VC010 type 1 069A:0001
pwc AME Co. Afina Eye 06BE:8116
pwc Visionite VCS-UC300 0d81:1900
pwc Visionite VCS-UM100 0d81:1910
s2255drv Sensoray 2255 1943:2255, 1943:2257
stk1160 STK1160 USB video capture dongle 05e1:0408
stkwebcam Syntek DC1125 174f:a311, 05e1:0501
dvb-ttusb-budget Technotrend/Hauppauge Nova-USB devices 0b48:1003, 0b48:1004,
0b48:1005
dvb-ttusb_dec Technotrend/Hauppauge MPEG decoder 0b48:1006
DEC3000-s
dvb-ttusb_dec Technotrend/Hauppauge MPEG decoder 0b48:1007
dvb-ttusb_dec Technotrend/Hauppauge MPEG decoder 0b48:1008
DEC2000-t
dvb-ttusb_dec Technotrend/Hauppauge MPEG decoder
DEC2540-t 0b48:1009
usbtv Fushicai USBTV007 Audio-Video Grabber 1b71:3002, 1f71:3301,
1f71:3306
zr364xx USB ZR364XX Camera 08ca:0109, 041e:4024,
0d64:0108, 0546:3187,
0d64:3108, 0595:4343,
0bb0:500d, 0feb:2004,
055f:b500, 08ca:2062,
052b:1a18, 04c8:0729,
04f2:a208, 0784:0040,
06d6:0034, 0a17:0062,
06d6:003b, 0a17:004e,
041e:405d, 08ca:2102,
06d6:003d
================ ====================================== =====================

View File

@ -0,0 +1,107 @@
.. SPDX-License-Identifier: GPL-2.0
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:
.. code-block:: none
:emphasize-lines: 3
$ 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``
.. code-block:: none
:emphasize-lines: 4
$ 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 :doc:`Saa7134 card list<saa7134-cardlist>`).
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\ [#]_.
.. [#] 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
================ ========================================================
Some of those drivers support multiple devices, as shown at the card
lists below:
.. toctree::
:maxdepth: 1
bttv-cardlist
cx18-cardlist
cx23885-cardlist
cx88-cardlist
ivtv-cardlist
saa7134-cardlist
saa7164-cardlist

View File

@ -0,0 +1,90 @@
.. SPDX-License-Identifier: GPL-2.0
Platform drivers
================
There are several drivers that are focused on providing support for
functionality that are already included at the main board, and don't
use neither USB nor PCI bus. Those drivers are called platform
drivers, and are very popular on embedded devices.
The current supported of platform drivers (not including staging drivers) are
listed below
================= ============================================================
Driver Name
================= ============================================================
am437x-vpfe TI AM437x VPFE
aspeed-video Aspeed AST2400 and AST2500
atmel-isc ATMEL Image Sensor Controller (ISC)
atmel-isi ATMEL Image Sensor Interface (ISI)
c8sectpfe SDR platform devices
c8sectpfe SDR platform devices
cafe_ccic Marvell 88ALP01 (Cafe) CMOS Camera Controller
cdns-csi2rx Cadence MIPI-CSI2 RX Controller
cdns-csi2tx Cadence MIPI-CSI2 TX Controller
coda-vpu Chips&Media Coda multi-standard codec IP
dm355_ccdc TI DM355 CCDC video capture
dm644x_ccdc TI DM6446 CCDC video capture
exynos-fimc-is EXYNOS4x12 FIMC-IS (Imaging Subsystem)
exynos-fimc-lite EXYNOS FIMC-LITE camera interface
exynos-gsc Samsung Exynos G-Scaler
exy Samsung S5P/EXYNOS4 SoC series Camera Subsystem
fsl-viu Freescale VIU
imx-pxp i.MX Pixel Pipeline (PXP)
isdf TI DM365 ISIF video capture
mmp_camera Marvell Armada 610 integrated camera controller
mtk_jpeg Mediatek JPEG Codec
mtk-mdp Mediatek MDP
mtk-vcodec-dec Mediatek Video Codec
mtk-vpu Mediatek Video Processor Unit
mx2_emmaprp MX2 eMMa-PrP
omap3-isp OMAP 3 Camera
omap-vout OMAP2/OMAP3 V4L2-Display
pxa_camera PXA27x Quick Capture Interface
qcom-camss Qualcomm V4L2 Camera Subsystem
rcar-csi2 R-Car MIPI CSI-2 Receiver
rcar_drif Renesas Digital Radio Interface (DRIF)
rcar-fcp Renesas Frame Compression Processor
rcar_fdp1 Renesas Fine Display Processor
rcar_jpu Renesas JPEG Processing Unit
rcar-vin R-Car Video Input (VIN)
renesas-ceu Renesas Capture Engine Unit (CEU)
rockchip-rga Rockchip Raster 2d Graphic Acceleration Unit
s3c-camif Samsung S3C24XX/S3C64XX SoC Camera Interface
s5p-csis S5P/EXYNOS MIPI-CSI2 receiver (MIPI-CSIS)
s5p-fimc S5P/EXYNOS4 FIMC/CAMIF camera interface
s5p-g2d Samsung S5P and EXYNOS4 G2D 2d graphics accelerator
s5p-jpeg Samsung S5P/Exynos3250/Exynos4 JPEG codec
s5p-mfc Samsung S5P MFC Video Codec
sh_veu SuperH VEU mem2mem video processing
sh_vou SuperH VOU video output
stm32-dcmi STM32 Digital Camera Memory Interface (DCMI)
sun4i-csi Allwinner A10 CMOS Sensor Interface Support
sun6i-csi Allwinner V3s Camera Sensor Interface
sun8i-di Allwinner Deinterlace
sun8i-rotate Allwinner DE2 rotation
ti-cal TI Memory-to-memory multimedia devices
ti-csc TI DVB platform devices
ti-vpe TI VPE (Video Processing Engine)
venus-enc Qualcomm Venus V4L2 encoder/decoder
via-camera VIAFB camera controller
video-mux Video Multiplexer
vpif_display TI DaVinci VPIF V4L2-Display
vpif_capture TI DaVinci VPIF video capture
vpss TI DaVinci VPBE V4L2-Display
vsp1 Renesas VSP1 Video Processing Engine
xilinx-tpg Xilinx Video Test Pattern Generator
xilinx-video Xilinx Video IP (EXPERIMENTAL)
xilinx-vtc Xilinx Video Timing Controller
================= ============================================================
MMC/SDIO DVB adapters
---------------------
======= ===========================================
Driver Name
======= ===========================================
smssdio Siano SMS1xxx based MDTV via SDIO interface
======= ===========================================

View File

@ -0,0 +1,44 @@
.. SPDX-License-Identifier: GPL-2.0
Radio drivers
=============
There is also support for pure AM/FM radio, and even for some FM radio
transmitters:
===================== =========================================================
Driver Name
===================== =========================================================
si4713 Silicon Labs Si4713 FM Radio Transmitter
radio-aztech Aztech/Packard Bell Radio
radio-cadet ADS Cadet AM/FM Tuner
radio-gemtek GemTek Radio card (or compatible)
radio-maxiradio Guillemot MAXI Radio FM 2000 radio
radio-miropcm20 miroSOUND PCM20 radio
radio-aimslab AIMSlab RadioTrack (aka RadioReveal)
radio-rtrack2 AIMSlab RadioTrack II
saa7706h SAA7706H Car Radio DSP
radio-sf16fmi SF16-FMI/SF16-FMP/SF16-FMD Radio
radio-sf16fmr2 SF16-FMR2/SF16-FMD2 Radio
radio-shark Griffin radioSHARK USB radio receiver
shark2 Griffin radioSHARK2 USB radio receiver
radio-si470x-common Silicon Labs Si470x FM Radio Receiver
radio-si476x Silicon Laboratories Si476x I2C FM Radio
radio-tea5764 TEA5764 I2C FM radio
tef6862 TEF6862 Car Radio Enhanced Selectivity Tuner
radio-terratec TerraTec ActiveRadio ISA Standalone
radio-timb Enable the Timberdale radio driver
radio-trust Trust FM radio card
radio-typhoon Typhoon Radio (a.k.a. EcoRadio)
radio-wl1273 Texas Instruments WL1273 I2C FM Radio
fm_drv ISA radio devices
fm_drv ISA radio devices
radio-zoltrix Zoltrix Radio
dsbr100 D-Link/GemTek USB FM radio
radio-keene Keene FM Transmitter USB
radio-ma901 Masterkit MA901 USB FM radio
radio-mr800 AverMedia MR 800 USB FM radio
radio-raremono Thanko's Raremono AM/FM/SW radio
radio-si470x-usb Silicon Labs Si470x FM Radio Receiver support with USB
radio-usb-si4713 Silicon Labs Si4713 FM Radio Transmitter support with USB
===================== =========================================================

View File

@ -0,0 +1,76 @@
.. SPDX-License-Identifier: GPL-2.0
======================================================
Infrared remote control support in video4linux drivers
======================================================
Authors: Gerd Hoffmann, Mauro Carvalho Chehab
Basics
======
Most analog and digital TV boards support remote controllers. Several of
them have a microprocessor that receives the IR carriers, convert into
pulse/space sequences and then to scan codes, returning such codes to
userspace ("scancode mode"). Other boards return just the pulse/space
sequences ("raw mode").
The support for remote controller in scancode mode is provided by the
standard Linux input layer. The support for raw mode is provided via LIRC.
In order to check the support and test it, it is suggested to download
the `v4l-utils <https://git.linuxtv.org/v4l-utils.git/>`_. It provides
two tools to handle remote controllers:
- ir-keytable: provides a way to query the remote controller, list the
protocols it supports, enable in-kernel support for IR decoder or
switch the protocol and to test the reception of scan codes;
- ir-ctl: provide tools to handle remote controllers that support raw mode
via LIRC interface.
Usually, the remote controller module is auto-loaded when the TV card is
detected. However, for a few devices, you need to manually load the
ir-kbd-i2c module.
How it works
============
The modules register the remote as keyboard within the linux input
layer, i.e. you'll see the keys of the remote as normal key strokes
(if CONFIG_INPUT_KEYBOARD is enabled).
Using the event devices (CONFIG_INPUT_EVDEV) it is possible for
applications to access the remote via /dev/input/event<n> devices.
The udev/systemd will automatically create the devices. If you install
the `v4l-utils <https://git.linuxtv.org/v4l-utils.git/>`_, it may also
automatically load a different keytable than the default one. Please see
`v4l-utils <https://git.linuxtv.org/v4l-utils.git/>`_ ir-keytable.1
man page for details.
The ir-keytable tool is nice for trouble shooting, i.e. to check
whenever the input device is really present, which of the devices it
is, check whenever pressing keys on the remote actually generates
events and the like. You can also use any other input utility that changes
the keymaps, like the input kbd utility.
Using with lircd
----------------
The latest versions of the lircd daemon supports reading events from the
linux input layer (via event device). It also supports receiving IR codes
in lirc mode.
Using without lircd
-------------------
Xorg recognizes several IR keycodes that have its numerical value lower
than 247. With the advent of Wayland, the input driver got updated too,
and should now accept all keycodes. Yet, you may want to just reasign
the keycodes to something that your favorite media application likes.
This can be done by setting
`v4l-utils <https://git.linuxtv.org/v4l-utils.git/>`_ to load your own
keytable in runtime. Please read ir-keytable.1 man page for details.

View File

@ -0,0 +1,803 @@
.. SPDX-License-Identifier: GPL-2.0
SAA7134 cards list
==================
.. tabularcolumns:: |p{1.4cm}|p{11.1cm}|p{4.2cm}|
.. flat-table::
:header-rows: 1
:widths: 2 19 18
:stub-columns: 0
* - Card number
- Card name
- PCI subsystem IDs
* - 0
- UNKNOWN/GENERIC
-
* - 1
- Proteus Pro [philips reference design]
- 1131:2001, 1131:2001
* - 2
- LifeView FlyVIDEO3000
- 5168:0138, 4e42:0138
* - 3
- LifeView/Typhoon FlyVIDEO2000
- 5168:0138, 4e42:0138
* - 4
- EMPRESS
- 1131:6752
* - 5
- SKNet Monster TV
- 1131:4e85
* - 6
- Tevion MD 9717
-
* - 7
- KNC One TV-Station RDS / Typhoon TV Tuner RDS
- 1131:fe01, 1894:fe01
* - 8
- Terratec Cinergy 400 TV
- 153b:1142
* - 9
- Medion 5044
-
* - 10
- Kworld/KuroutoShikou SAA7130-TVPCI
-
* - 11
- Terratec Cinergy 600 TV
- 153b:1143
* - 12
- Medion 7134
- 16be:0003, 16be:5000
* - 13
- Typhoon TV+Radio 90031
-
* - 14
- ELSA EX-VISION 300TV
- 1048:226b
* - 15
- ELSA EX-VISION 500TV
- 1048:226a
* - 16
- ASUS TV-FM 7134
- 1043:4842, 1043:4830, 1043:4840
* - 17
- AOPEN VA1000 POWER
- 1131:7133
* - 18
- BMK MPEX No Tuner
-
* - 19
- Compro VideoMate TV
- 185b:c100
* - 20
- Matrox CronosPlus
- 102B:48d0
* - 21
- 10MOONS PCI TV CAPTURE CARD
- 1131:2001
* - 22
- AverMedia M156 / Medion 2819
- 1461:a70b
* - 23
- BMK MPEX Tuner
-
* - 24
- KNC One TV-Station DVR
- 1894:a006
* - 25
- ASUS TV-FM 7133
- 1043:4843
* - 26
- Pinnacle PCTV Stereo (saa7134)
- 11bd:002b
* - 27
- Manli MuchTV M-TV002
-
* - 28
- Manli MuchTV M-TV001
-
* - 29
- Nagase Sangyo TransGear 3000TV
- 1461:050c
* - 30
- Elitegroup ECS TVP3XP FM1216 Tuner Card(PAL-BG,FM)
- 1019:4cb4
* - 31
- Elitegroup ECS TVP3XP FM1236 Tuner Card (NTSC,FM)
- 1019:4cb5
* - 32
- AVACS SmartTV
-
* - 33
- AVerMedia DVD EZMaker
- 1461:10ff
* - 34
- Noval Prime TV 7133
-
* - 35
- AverMedia AverTV Studio 305
- 1461:2115
* - 36
- UPMOST PURPLE TV
- 12ab:0800
* - 37
- Items MuchTV Plus / IT-005
-
* - 38
- Terratec Cinergy 200 TV
- 153b:1152
* - 39
- LifeView FlyTV Platinum Mini
- 5168:0212, 4e42:0212, 5169:1502
* - 40
- Compro VideoMate TV PVR/FM
- 185b:c100
* - 41
- Compro VideoMate TV Gold+
- 185b:c100
* - 42
- Sabrent SBT-TVFM (saa7130)
-
* - 43
- :Zolid Xpert TV7134
-
* - 44
- Empire PCI TV-Radio LE
-
* - 45
- Avermedia AVerTV Studio 307
- 1461:9715
* - 46
- AVerMedia Cardbus TV/Radio (E500)
- 1461:d6ee
* - 47
- Terratec Cinergy 400 mobile
- 153b:1162
* - 48
- Terratec Cinergy 600 TV MK3
- 153b:1158
* - 49
- Compro VideoMate Gold+ Pal
- 185b:c200
* - 50
- Pinnacle PCTV 300i DVB-T + PAL
- 11bd:002d
* - 51
- ProVideo PV952
- 1540:9524
* - 52
- AverMedia AverTV/305
- 1461:2108
* - 53
- ASUS TV-FM 7135
- 1043:4845
* - 54
- LifeView FlyTV Platinum FM / Gold
- 5168:0214, 5168:5214, 1489:0214, 5168:0304
* - 55
- LifeView FlyDVB-T DUO / MSI TV@nywhere Duo
- 5168:0306, 4E42:0306
* - 56
- Avermedia AVerTV 307
- 1461:a70a
* - 57
- Avermedia AVerTV GO 007 FM
- 1461:f31f
* - 58
- ADS Tech Instant TV (saa7135)
- 1421:0350, 1421:0351, 1421:0370, 1421:1370
* - 59
- Kworld/Tevion V-Stream Xpert TV PVR7134
-
* - 60
- LifeView/Typhoon/Genius FlyDVB-T Duo Cardbus
- 5168:0502, 4e42:0502, 1489:0502
* - 61
- Philips TOUGH DVB-T reference design
- 1131:2004
* - 62
- Compro VideoMate TV Gold+II
-
* - 63
- Kworld Xpert TV PVR7134
-
* - 64
- FlyTV mini Asus Digimatrix
- 1043:0210
* - 65
- V-Stream Studio TV Terminator
-
* - 66
- Yuan TUN-900 (saa7135)
-
* - 67
- Beholder BeholdTV 409 FM
- 0000:4091
* - 68
- GoTView 7135 PCI
- 5456:7135
* - 69
- Philips EUROPA V3 reference design
- 1131:2004
* - 70
- Compro Videomate DVB-T300
- 185b:c900
* - 71
- Compro Videomate DVB-T200
- 185b:c901
* - 72
- RTD Embedded Technologies VFG7350
- 1435:7350
* - 73
- RTD Embedded Technologies VFG7330
- 1435:7330
* - 74
- LifeView FlyTV Platinum Mini2
- 14c0:1212
* - 75
- AVerMedia AVerTVHD MCE A180
- 1461:1044
* - 76
- SKNet MonsterTV Mobile
- 1131:4ee9
* - 77
- Pinnacle PCTV 40i/50i/110i (saa7133)
- 11bd:002e
* - 78
- ASUSTeK P7131 Dual
- 1043:4862
* - 79
- Sedna/MuchTV PC TV Cardbus TV/Radio (ITO25 Rev:2B)
-
* - 80
- ASUS Digimatrix TV
- 1043:0210
* - 81
- Philips Tiger reference design
- 1131:2018
* - 82
- MSI TV@Anywhere plus
- 1462:6231, 1462:8624
* - 83
- Terratec Cinergy 250 PCI TV
- 153b:1160
* - 84
- LifeView FlyDVB Trio
- 5168:0319
* - 85
- AverTV DVB-T 777
- 1461:2c05, 1461:2c05
* - 86
- LifeView FlyDVB-T / Genius VideoWonder DVB-T
- 5168:0301, 1489:0301
* - 87
- ADS Instant TV Duo Cardbus PTV331
- 0331:1421
* - 88
- Tevion/KWorld DVB-T 220RF
- 17de:7201
* - 89
- ELSA EX-VISION 700TV
- 1048:226c
* - 90
- Kworld ATSC110/115
- 17de:7350, 17de:7352
* - 91
- AVerMedia A169 B
- 1461:7360
* - 92
- AVerMedia A169 B1
- 1461:6360
* - 93
- Medion 7134 Bridge #2
- 16be:0005
* - 94
- LifeView FlyDVB-T Hybrid Cardbus/MSI TV @nywhere A/D NB
- 5168:3306, 5168:3502, 5168:3307, 4e42:3502
* - 95
- LifeView FlyVIDEO3000 (NTSC)
- 5169:0138
* - 96
- Medion Md8800 Quadro
- 16be:0007, 16be:0008, 16be:000d
* - 97
- LifeView FlyDVB-S /Acorp TV134DS
- 5168:0300, 4e42:0300
* - 98
- Proteus Pro 2309
- 0919:2003
* - 99
- AVerMedia TV Hybrid A16AR
- 1461:2c00
* - 100
- Asus Europa2 OEM
- 1043:4860
* - 101
- Pinnacle PCTV 310i
- 11bd:002f
* - 102
- Avermedia AVerTV Studio 507
- 1461:9715
* - 103
- Compro Videomate DVB-T200A
-
* - 104
- Hauppauge WinTV-HVR1110 DVB-T/Hybrid
- 0070:6700, 0070:6701, 0070:6702, 0070:6703, 0070:6704, 0070:6705
* - 105
- Terratec Cinergy HT PCMCIA
- 153b:1172
* - 106
- Encore ENLTV
- 1131:2342, 1131:2341, 3016:2344
* - 107
- Encore ENLTV-FM
- 1131:230f
* - 108
- Terratec Cinergy HT PCI
- 153b:1175
* - 109
- Philips Tiger - S Reference design
-
* - 110
- Avermedia M102
- 1461:f31e
* - 111
- ASUS P7131 4871
- 1043:4871
* - 112
- ASUSTeK P7131 Hybrid
- 1043:4876
* - 113
- Elitegroup ECS TVP3XP FM1246 Tuner Card (PAL,FM)
- 1019:4cb6
* - 114
- KWorld DVB-T 210
- 17de:7250
* - 115
- Sabrent PCMCIA TV-PCB05
- 0919:2003
* - 116
- 10MOONS TM300 TV Card
- 1131:2304
* - 117
- Avermedia Super 007
- 1461:f01d
* - 118
- Beholder BeholdTV 401
- 0000:4016
* - 119
- Beholder BeholdTV 403
- 0000:4036
* - 120
- Beholder BeholdTV 403 FM
- 0000:4037
* - 121
- Beholder BeholdTV 405
- 0000:4050
* - 122
- Beholder BeholdTV 405 FM
- 0000:4051
* - 123
- Beholder BeholdTV 407
- 0000:4070
* - 124
- Beholder BeholdTV 407 FM
- 0000:4071
* - 125
- Beholder BeholdTV 409
- 0000:4090
* - 126
- Beholder BeholdTV 505 FM
- 5ace:5050
* - 127
- Beholder BeholdTV 507 FM / BeholdTV 509 FM
- 5ace:5070, 5ace:5090
* - 128
- Beholder BeholdTV Columbus TV/FM
- 0000:5201
* - 129
- Beholder BeholdTV 607 FM
- 5ace:6070
* - 130
- Beholder BeholdTV M6
- 5ace:6190
* - 131
- Twinhan Hybrid DTV-DVB 3056 PCI
- 1822:0022
* - 132
- Genius TVGO AM11MCE
-
* - 133
- NXP Snake DVB-S reference design
-
* - 134
- Medion/Creatix CTX953 Hybrid
- 16be:0010
* - 135
- MSI TV@nywhere A/D v1.1
- 1462:8625
* - 136
- AVerMedia Cardbus TV/Radio (E506R)
- 1461:f436
* - 137
- AVerMedia Hybrid TV/Radio (A16D)
- 1461:f936
* - 138
- Avermedia M115
- 1461:a836
* - 139
- Compro VideoMate T750
- 185b:c900
* - 140
- Avermedia DVB-S Pro A700
- 1461:a7a1
* - 141
- Avermedia DVB-S Hybrid+FM A700
- 1461:a7a2
* - 142
- Beholder BeholdTV H6
- 5ace:6290
* - 143
- Beholder BeholdTV M63
- 5ace:6191
* - 144
- Beholder BeholdTV M6 Extra
- 5ace:6193
* - 145
- AVerMedia MiniPCI DVB-T Hybrid M103
- 1461:f636, 1461:f736
* - 146
- ASUSTeK P7131 Analog
-
* - 147
- Asus Tiger 3in1
- 1043:4878
* - 148
- Encore ENLTV-FM v5.3
- 1a7f:2008
* - 149
- Avermedia PCI pure analog (M135A)
- 1461:f11d
* - 150
- Zogis Real Angel 220
-
* - 151
- ADS Tech Instant HDTV
- 1421:0380
* - 152
- Asus Tiger Rev:1.00
- 1043:4857
* - 153
- Kworld Plus TV Analog Lite PCI
- 17de:7128
* - 154
- Avermedia AVerTV GO 007 FM Plus
- 1461:f31d
* - 155
- Hauppauge WinTV-HVR1150 ATSC/QAM-Hybrid
- 0070:6706, 0070:6708
* - 156
- Hauppauge WinTV-HVR1120 DVB-T/Hybrid
- 0070:6707, 0070:6709, 0070:670a
* - 157
- Avermedia AVerTV Studio 507UA
- 1461:a11b
* - 158
- AVerMedia Cardbus TV/Radio (E501R)
- 1461:b7e9
* - 159
- Beholder BeholdTV 505 RDS
- 0000:505B
* - 160
- Beholder BeholdTV 507 RDS
- 0000:5071
* - 161
- Beholder BeholdTV 507 RDS
- 0000:507B
* - 162
- Beholder BeholdTV 607 FM
- 5ace:6071
* - 163
- Beholder BeholdTV 609 FM
- 5ace:6090
* - 164
- Beholder BeholdTV 609 FM
- 5ace:6091
* - 165
- Beholder BeholdTV 607 RDS
- 5ace:6072
* - 166
- Beholder BeholdTV 607 RDS
- 5ace:6073
* - 167
- Beholder BeholdTV 609 RDS
- 5ace:6092
* - 168
- Beholder BeholdTV 609 RDS
- 5ace:6093
* - 169
- Compro VideoMate S350/S300
- 185b:c900
* - 170
- AverMedia AverTV Studio 505
- 1461:a115
* - 171
- Beholder BeholdTV X7
- 5ace:7595
* - 172
- RoverMedia TV Link Pro FM
- 19d1:0138
* - 173
- Zolid Hybrid TV Tuner PCI
- 1131:2004
* - 174
- Asus Europa Hybrid OEM
- 1043:4847
* - 175
- Leadtek Winfast DTV1000S
- 107d:6655
* - 176
- Beholder BeholdTV 505 RDS
- 0000:5051
* - 177
- Hawell HW-404M7
-
* - 178
- Beholder BeholdTV H7
- 5ace:7190
* - 179
- Beholder BeholdTV A7
- 5ace:7090
* - 180
- Avermedia PCI M733A
- 1461:4155, 1461:4255
* - 181
- TechoTrend TT-budget T-3000
- 13c2:2804
* - 182
- Kworld PCI SBTVD/ISDB-T Full-Seg Hybrid
- 17de:b136
* - 183
- Compro VideoMate Vista M1F
- 185b:c900
* - 184
- Encore ENLTV-FM 3
- 1a7f:2108
* - 185
- MagicPro ProHDTV Pro2 DMB-TH/Hybrid
- 17de:d136
* - 186
- Beholder BeholdTV 501
- 5ace:5010
* - 187
- Beholder BeholdTV 503 FM
- 5ace:5030
* - 188
- Sensoray 811/911
- 6000:0811, 6000:0911
* - 189
- Kworld PC150-U
- 17de:a134
* - 190
- Asus My Cinema PS3-100
- 1043:48cd
* - 191
- Hawell HW-9004V1
-
* - 192
- AverMedia AverTV Satellite Hybrid+FM A706
- 1461:2055
* - 193
- WIS Voyager or compatible
- 1905:7007
* - 194
- AverMedia AverTV/505
- 1461:a10a
* - 195
- Leadtek Winfast TV2100 FM
- 107d:6f3a
* - 196
- SnaZio* TVPVR PRO
- 1779:13cf

View File

@ -0,0 +1,88 @@
.. SPDX-License-Identifier: GPL-2.0
The saa7134 driver
==================
Author Gerd Hoffmann
This is a v4l2/oss device driver for saa7130/33/34/35 based capture / TV
boards.
Status
------
Almost everything is working. video, sound, tuner, radio, mpeg ts, ...
As with bttv, card-specific tweaks are needed. Check CARDLIST for a
list of known TV cards and saa7134-cards.c for the drivers card
configuration info.
Build
-----
Once you pick up a Kernel source, you should configure, build,
install and boot the new kernel. You'll need at least
these config options::
./scripts/config -e PCI
./scripts/config -e INPUT
./scripts/config -m I2C
./scripts/config -m MEDIA_SUPPORT
./scripts/config -e MEDIA_PCI_SUPPORT
./scripts/config -e MEDIA_ANALOG_TV_SUPPORT
./scripts/config -e MEDIA_DIGITAL_TV_SUPPORT
./scripts/config -e MEDIA_RADIO_SUPPORT
./scripts/config -e RC_CORE
./scripts/config -e MEDIA_SUBDRV_AUTOSELECT
./scripts/config -m VIDEO_SAA7134
./scripts/config -e SAA7134_ALSA
./scripts/config -e VIDEO_SAA7134_RC
./scripts/config -e VIDEO_SAA7134_DVB
./scripts/config -e VIDEO_SAA7134_GO7007
To build and install, you should run::
make && make modules_install && make install
Once the new Kernel is booted, saa7134 driver should be loaded automatically.
Depending on the card you might have to pass ``card=<nr>`` as insmod option.
If so, please check :doc:`saa7134-cardlist` for valid choices.
Once you have your card type number, you can pass a modules configuration
via a file (usually, it is either ``/etc/modules.conf`` or some file at
``/etc/modules-load.d/``, but the actual place depends on your
distribution), with this content::
options saa7134 card=13 # Assuming that your card type is #13
Changes / Fixes
---------------
Please mail to linux-media AT vger.kernel.org unified diffs against
the linux media git tree:
https://git.linuxtv.org/media_tree.git/
This is done by committing a patch at a clone of the git tree and
submitting the patch using ``git send-email``. Don't forget to
describe at the lots what it changes / which problem it fixes / whatever
it is good for ...
Known Problems
--------------
* The tuner for the flyvideos isn't detected automatically and the
default might not work for you depending on which version you have.
There is a ``tuner=`` insmod option to override the driver's default.
Credits
-------
andrew.stevens@philips.com + werner.leeb@philips.com for providing
saa7134 hardware specs and sample board.

View File

@ -0,0 +1,71 @@
.. SPDX-License-Identifier: GPL-2.0
SAA7164 cards list
==================
.. tabularcolumns:: |p{1.4cm}|p{11.1cm}|p{4.2cm}|
.. flat-table::
:header-rows: 1
:widths: 2 19 18
:stub-columns: 0
* - Card number
- Card name
- PCI subsystem IDs
* - 0
- Unknown
-
* - 1
- Generic Rev2
-
* - 2
- Generic Rev3
-
* - 3
- Hauppauge WinTV-HVR2250
- 0070:8880, 0070:8810
* - 4
- Hauppauge WinTV-HVR2200
- 0070:8980
* - 5
- Hauppauge WinTV-HVR2200
- 0070:8900
* - 6
- Hauppauge WinTV-HVR2200
- 0070:8901
* - 7
- Hauppauge WinTV-HVR2250
- 0070:8891, 0070:8851
* - 8
- Hauppauge WinTV-HVR2250
- 0070:88A1
* - 9
- Hauppauge WinTV-HVR2200
- 0070:8940
* - 10
- Hauppauge WinTV-HVR2200
- 0070:8953
* - 11
- Hauppauge WinTV-HVR2255(proto)
- 0070:f111
* - 12
- Hauppauge WinTV-HVR2255
- 0070:f111
* - 13
- Hauppauge WinTV-HVR2205
- 0070:f123, 0070:f120

View File

@ -0,0 +1,56 @@
.. SPDX-License-Identifier: GPL-2.0
Siano cards list
================
.. tabularcolumns:: p{13.3cm}|p{4.2cm}|
.. flat-table::
:header-rows: 1
:widths: 17 16
:stub-columns: 0
* - Card name
- USB IDs
* - Hauppauge Catamount
- 2040:1700
* - Hauppauge Okemo-A
- 2040:1800
* - Hauppauge Okemo-B
- 2040:1801
* - Hauppauge WinTV MiniCard
- 2040:2000, 2040:200a, 2040:2010, 2040:2011, 2040:2019
* - Hauppauge WinTV MiniCard
- 2040:2009
* - Hauppauge WinTV MiniStick
- 2040:5500, 2040:5510, 2040:5520, 2040:5530, 2040:5580, 2040:5590, 2040:b900, 2040:b910, 2040:b980, 2040:b990, 2040:c000, 2040:c010, 2040:c080, 2040:c090, 2040:c0a0, 2040:f5a0
* - Hauppauge microStick 77e
- 2013:0257
* - ONDA Data Card Digital Receiver
- 19D2:0078
* - Siano Denver (ATSC-M/H) Digital Receiver
- 187f:0800
* - Siano Denver (TDMB) Digital Receiver
- 187f:0700
* - Siano Ming Digital Receiver
- 187f:0310
* - Siano Nice Digital Receiver
- 187f:0202, 187f:0202
* - Siano Nova A Digital Receiver
- 187f:0200
* - Siano Nova B Digital Receiver
- 187f:0201
* - Siano Pele Digital Receiver
- 187f:0500
* - Siano Rio Digital Receiver
- 187f:0600, 3275:0080
* - Siano Stellar Digital Receiver
- 187f:0100
* - Siano Stellar Digital Receiver ROM
- 187f:0010
* - Siano Vega Digital Receiver
- 187f:0300
* - Siano Venice Digital Receiver
- 187f:0301, 187f:0301, 187f:0302
* - ZTE Data Card Digital Receiver
- 19D2:0086

Some files were not shown because too many files have changed in this diff Show More