1.. SPDX-License-Identifier: GPL-2.0
2
3==================================
4How to get the bt8xx cards working
5==================================
6
7Authors:
8	 Richard Walker,
9	 Jamie Honan,
10	 Michael Hunold,
11	 Manu Abraham,
12	 Uwe Bugla,
13	 Michael Krufky
14
15General information
16-------------------
17
18This class of cards has a bt878a as the PCI interface, and require the bttv
19driver for accessing the i2c bus and the gpio pins of the bt8xx chipset.
20
21Please see Documentation/admin-guide/media/bttv-cardlist.rst for a complete
22list of Cards based on the Conexant Bt8xx PCI bridge supported by the
23Linux Kernel.
24
25In order to be able to compile the kernel, some config options should be
26enabled::
27
28    ./scripts/config -e PCI
29    ./scripts/config -e INPUT
30    ./scripts/config -m I2C
31    ./scripts/config -m MEDIA_SUPPORT
32    ./scripts/config -e MEDIA_PCI_SUPPORT
33    ./scripts/config -e MEDIA_ANALOG_TV_SUPPORT
34    ./scripts/config -e MEDIA_DIGITAL_TV_SUPPORT
35    ./scripts/config -e MEDIA_RADIO_SUPPORT
36    ./scripts/config -e RC_CORE
37    ./scripts/config -m VIDEO_BT848
38    ./scripts/config -m DVB_BT8XX
39
40If you want to automatically support all possible variants of the Bt8xx
41cards, you should also do::
42
43    ./scripts/config -e MEDIA_SUBDRV_AUTOSELECT
44
45.. note::
46
47   Please use the following options with care as deselection of drivers which
48   are in fact necessary may result in DVB devices that cannot be tuned due
49   to lack of driver support.
50
51If your goal is to just support an specific board, you may, instead,
52disable MEDIA_SUBDRV_AUTOSELECT and manually select the frontend drivers
53required by your board. With that, you can save some RAM.
54
55You can do that by calling make xconfig/qconfig/menuconfig and look at
56the options on those menu options (only enabled if
57``Autoselect ancillary drivers`` is disabled:
58
59#) ``Device drivers`` => ``Multimedia support`` => ``Customize TV tuners``
60#) ``Device drivers`` => ``Multimedia support`` => ``Customize DVB frontends``
61
62Then, on each of the above menu, please select your card-specific
63frontend and tuner modules.
64
65
66Loading Modules
67---------------
68
69Regular case: If the bttv driver detects a bt8xx-based DVB card, all
70frontend and backend modules will be loaded automatically.
71
72Exceptions are:
73
74- Old TV cards without EEPROMs, sharing a common PCI subsystem ID;
75- Old TwinHan DST cards or clones with or without CA slot and not
76  containing an Eeprom.
77
78In the following cases overriding the PCI type detection for bttv and
79for dvb-bt8xx drivers by passing modprobe parameters may be necessary.
80
81Running TwinHan and Clones
82~~~~~~~~~~~~~~~~~~~~~~~~~~
83
84As shown at Documentation/admin-guide/media/bttv-cardlist.rst, TwinHan and
85clones use ``card=113`` modprobe parameter. So, in order to properly
86detect it for devices without EEPROM, you should use::
87
88	$ modprobe bttv card=113
89	$ modprobe dst
90
91Useful parameters for verbosity level and debugging the dst module::
92
93	verbose=0:		messages are disabled
94		1:		only error messages are displayed
95		2:		notifications are displayed
96		3:		other useful messages are displayed
97		4:		debug setting
98	dst_addons=0:		card is a free to air (FTA) card only
99		0x20:	card has a conditional access slot for scrambled channels
100	dst_algo=0:		(default) Software tuning algorithm
101	         1:		Hardware tuning algorithm
102
103
104The autodetected values are determined by the cards' "response string".
105
106In your logs see f. ex.: dst_get_device_id: Recognize [DSTMCI].
107
108For bug reports please send in a complete log with verbose=4 activated.
109Please also see Documentation/admin-guide/media/ci.rst.
110
111Running multiple cards
112~~~~~~~~~~~~~~~~~~~~~~
113
114See Documentation/admin-guide/media/bttv-cardlist.rst for a complete list of
115Card ID. Some examples:
116
117	===========================	===
118	Brand name			ID
119	===========================	===
120	Pinnacle PCTV Sat		 94
121	Nebula Electronics Digi TV	104
122	pcHDTV HD-2000 TV		112
123	Twinhan DST and clones		113
124	Avermedia AverTV DVB-T 77:	123
125	Avermedia AverTV DVB-T 761	124
126	DViCO FusionHDTV DVB-T Lite	128
127	DViCO FusionHDTV 5 Lite		135
128	===========================	===
129
130.. note::
131
132   When you have multiple cards, the order of the card ID should
133   match the order where they're detected by the system. Please notice
134   that removing/inserting other PCI cards may change the detection
135   order.
136
137Example::
138
139	$ modprobe bttv card=113 card=135
140
141In case of further problems please subscribe and send questions to
142the mailing list: linux-media@vger.kernel.org.
143
144Probing the cards with broken PCI subsystem ID
145~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
146
147There are some TwinHan cards whose EEPROM has become corrupted for some
148reason. The cards do not have a correct PCI subsystem ID.
149Still, it is possible to force probing the cards with::
150
151	$ echo 109e 0878 $subvendor $subdevice > \
152		/sys/bus/pci/drivers/bt878/new_id
153
154The two numbers there are::
155
156	109e: PCI_VENDOR_ID_BROOKTREE
157	0878: PCI_DEVICE_ID_BROOKTREE_878
158