/drivers/media/video/cx88/cx88-cards.c
C | 3563 lines | 3203 code | 110 blank | 250 comment | 108 complexity | a3966c00081f41d60f2128e627aec482 MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.0, AGPL-1.0
Large files files are truncated, but you can click here to view the full file
1/*
2 *
3 * device driver for Conexant 2388x based TV cards
4 * card-specific stuff.
5 *
6 * (c) 2003 Gerd Knorr <kraxel@bytesex.org> [SuSE Labs]
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21 */
22
23#include <linux/init.h>
24#include <linux/module.h>
25#include <linux/pci.h>
26#include <linux/delay.h>
27#include <linux/slab.h>
28
29#include "cx88.h"
30#include "tea5767.h"
31
32static unsigned int tuner[] = {[0 ... (CX88_MAXBOARDS - 1)] = UNSET };
33static unsigned int radio[] = {[0 ... (CX88_MAXBOARDS - 1)] = UNSET };
34static unsigned int card[] = {[0 ... (CX88_MAXBOARDS - 1)] = UNSET };
35
36module_param_array(tuner, int, NULL, 0444);
37module_param_array(radio, int, NULL, 0444);
38module_param_array(card, int, NULL, 0444);
39
40MODULE_PARM_DESC(tuner,"tuner type");
41MODULE_PARM_DESC(radio,"radio tuner type");
42MODULE_PARM_DESC(card,"card type");
43
44static unsigned int latency = UNSET;
45module_param(latency,int,0444);
46MODULE_PARM_DESC(latency,"pci latency timer");
47
48static int disable_ir;
49module_param(disable_ir, int, 0444);
50MODULE_PARM_DESC(disable_ir, "Disable IR support");
51
52#define info_printk(core, fmt, arg...) \
53 printk(KERN_INFO "%s: " fmt, core->name , ## arg)
54
55#define warn_printk(core, fmt, arg...) \
56 printk(KERN_WARNING "%s: " fmt, core->name , ## arg)
57
58#define err_printk(core, fmt, arg...) \
59 printk(KERN_ERR "%s: " fmt, core->name , ## arg)
60
61
62/* ------------------------------------------------------------------ */
63/* board config info */
64
65/* If radio_type !=UNSET, radio_addr should be specified
66 */
67
68static const struct cx88_board cx88_boards[] = {
69 [CX88_BOARD_UNKNOWN] = {
70 .name = "UNKNOWN/GENERIC",
71 .tuner_type = UNSET,
72 .radio_type = UNSET,
73 .tuner_addr = ADDR_UNSET,
74 .radio_addr = ADDR_UNSET,
75 .input = {{
76 .type = CX88_VMUX_COMPOSITE1,
77 .vmux = 0,
78 },{
79 .type = CX88_VMUX_COMPOSITE2,
80 .vmux = 1,
81 },{
82 .type = CX88_VMUX_COMPOSITE3,
83 .vmux = 2,
84 },{
85 .type = CX88_VMUX_COMPOSITE4,
86 .vmux = 3,
87 }},
88 },
89 [CX88_BOARD_HAUPPAUGE] = {
90 .name = "Hauppauge WinTV 34xxx models",
91 .tuner_type = UNSET,
92 .radio_type = UNSET,
93 .tuner_addr = ADDR_UNSET,
94 .radio_addr = ADDR_UNSET,
95 .tda9887_conf = TDA9887_PRESENT,
96 .input = {{
97 .type = CX88_VMUX_TELEVISION,
98 .vmux = 0,
99 .gpio0 = 0xff00, // internal decoder
100 },{
101 .type = CX88_VMUX_DEBUG,
102 .vmux = 0,
103 .gpio0 = 0xff01, // mono from tuner chip
104 },{
105 .type = CX88_VMUX_COMPOSITE1,
106 .vmux = 1,
107 .gpio0 = 0xff02,
108 },{
109 .type = CX88_VMUX_SVIDEO,
110 .vmux = 2,
111 .gpio0 = 0xff02,
112 }},
113 .radio = {
114 .type = CX88_RADIO,
115 .gpio0 = 0xff01,
116 },
117 },
118 [CX88_BOARD_GDI] = {
119 .name = "GDI Black Gold",
120 .tuner_type = UNSET,
121 .radio_type = UNSET,
122 .tuner_addr = ADDR_UNSET,
123 .radio_addr = ADDR_UNSET,
124 .input = {{
125 .type = CX88_VMUX_TELEVISION,
126 .vmux = 0,
127 },{
128 .type = CX88_VMUX_SVIDEO,
129 .vmux = 2,
130 }},
131 },
132 [CX88_BOARD_PIXELVIEW] = {
133 .name = "PixelView",
134 .tuner_type = TUNER_PHILIPS_PAL,
135 .radio_type = UNSET,
136 .tuner_addr = ADDR_UNSET,
137 .radio_addr = ADDR_UNSET,
138 .input = {{
139 .type = CX88_VMUX_TELEVISION,
140 .vmux = 0,
141 .gpio0 = 0xff00, // internal decoder
142 },{
143 .type = CX88_VMUX_COMPOSITE1,
144 .vmux = 1,
145 },{
146 .type = CX88_VMUX_SVIDEO,
147 .vmux = 2,
148 }},
149 .radio = {
150 .type = CX88_RADIO,
151 .gpio0 = 0xff10,
152 },
153 },
154 [CX88_BOARD_ATI_WONDER_PRO] = {
155 .name = "ATI TV Wonder Pro",
156 .tuner_type = TUNER_PHILIPS_4IN1,
157 .radio_type = UNSET,
158 .tuner_addr = ADDR_UNSET,
159 .radio_addr = ADDR_UNSET,
160 .tda9887_conf = TDA9887_PRESENT | TDA9887_INTERCARRIER,
161 .input = {{
162 .type = CX88_VMUX_TELEVISION,
163 .vmux = 0,
164 .gpio0 = 0x03ff,
165 },{
166 .type = CX88_VMUX_COMPOSITE1,
167 .vmux = 1,
168 .gpio0 = 0x03fe,
169 },{
170 .type = CX88_VMUX_SVIDEO,
171 .vmux = 2,
172 .gpio0 = 0x03fe,
173 }},
174 },
175 [CX88_BOARD_WINFAST2000XP_EXPERT] = {
176 .name = "Leadtek Winfast 2000XP Expert",
177 .tuner_type = TUNER_PHILIPS_4IN1,
178 .radio_type = UNSET,
179 .tuner_addr = ADDR_UNSET,
180 .radio_addr = ADDR_UNSET,
181 .tda9887_conf = TDA9887_PRESENT,
182 .input = {{
183 .type = CX88_VMUX_TELEVISION,
184 .vmux = 0,
185 .gpio0 = 0x00F5e700,
186 .gpio1 = 0x00003004,
187 .gpio2 = 0x00F5e700,
188 .gpio3 = 0x02000000,
189 },{
190 .type = CX88_VMUX_COMPOSITE1,
191 .vmux = 1,
192 .gpio0 = 0x00F5c700,
193 .gpio1 = 0x00003004,
194 .gpio2 = 0x00F5c700,
195 .gpio3 = 0x02000000,
196 },{
197 .type = CX88_VMUX_SVIDEO,
198 .vmux = 2,
199 .gpio0 = 0x00F5c700,
200 .gpio1 = 0x00003004,
201 .gpio2 = 0x00F5c700,
202 .gpio3 = 0x02000000,
203 }},
204 .radio = {
205 .type = CX88_RADIO,
206 .gpio0 = 0x00F5d700,
207 .gpio1 = 0x00003004,
208 .gpio2 = 0x00F5d700,
209 .gpio3 = 0x02000000,
210 },
211 },
212 [CX88_BOARD_AVERTV_STUDIO_303] = {
213 .name = "AverTV Studio 303 (M126)",
214 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
215 .radio_type = UNSET,
216 .tuner_addr = ADDR_UNSET,
217 .radio_addr = ADDR_UNSET,
218 .tda9887_conf = TDA9887_PRESENT,
219 .input = {{
220 .type = CX88_VMUX_TELEVISION,
221 .vmux = 0,
222 .gpio1 = 0xe09f,
223 },{
224 .type = CX88_VMUX_COMPOSITE1,
225 .vmux = 1,
226 .gpio1 = 0xe05f,
227 },{
228 .type = CX88_VMUX_SVIDEO,
229 .vmux = 2,
230 .gpio1 = 0xe05f,
231 }},
232 .radio = {
233 .gpio1 = 0xe0df,
234 .type = CX88_RADIO,
235 },
236 },
237 [CX88_BOARD_MSI_TVANYWHERE_MASTER] = {
238 // added gpio values thanks to Michal
239 // values for PAL from DScaler
240 .name = "MSI TV-@nywhere Master",
241 .tuner_type = TUNER_MT2032,
242 .radio_type = UNSET,
243 .tuner_addr = ADDR_UNSET,
244 .radio_addr = ADDR_UNSET,
245 .tda9887_conf = TDA9887_PRESENT | TDA9887_INTERCARRIER_NTSC,
246 .input = {{
247 .type = CX88_VMUX_TELEVISION,
248 .vmux = 0,
249 .gpio0 = 0x000040bf,
250 .gpio1 = 0x000080c0,
251 .gpio2 = 0x0000ff40,
252 },{
253 .type = CX88_VMUX_COMPOSITE1,
254 .vmux = 1,
255 .gpio0 = 0x000040bf,
256 .gpio1 = 0x000080c0,
257 .gpio2 = 0x0000ff40,
258 },{
259 .type = CX88_VMUX_SVIDEO,
260 .vmux = 2,
261 .gpio0 = 0x000040bf,
262 .gpio1 = 0x000080c0,
263 .gpio2 = 0x0000ff40,
264 }},
265 .radio = {
266 .type = CX88_RADIO,
267 .vmux = 3,
268 .gpio0 = 0x000040bf,
269 .gpio1 = 0x000080c0,
270 .gpio2 = 0x0000ff20,
271 },
272 },
273 [CX88_BOARD_WINFAST_DV2000] = {
274 .name = "Leadtek Winfast DV2000",
275 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
276 .radio_type = UNSET,
277 .tuner_addr = ADDR_UNSET,
278 .radio_addr = ADDR_UNSET,
279 .tda9887_conf = TDA9887_PRESENT,
280 .input = {{
281 .type = CX88_VMUX_TELEVISION,
282 .vmux = 0,
283 .gpio0 = 0x0035e700,
284 .gpio1 = 0x00003004,
285 .gpio2 = 0x0035e700,
286 .gpio3 = 0x02000000,
287 },{
288
289 .type = CX88_VMUX_COMPOSITE1,
290 .vmux = 1,
291 .gpio0 = 0x0035c700,
292 .gpio1 = 0x00003004,
293 .gpio2 = 0x0035c700,
294 .gpio3 = 0x02000000,
295 },{
296 .type = CX88_VMUX_SVIDEO,
297 .vmux = 2,
298 .gpio0 = 0x0035c700,
299 .gpio1 = 0x0035c700,
300 .gpio2 = 0x02000000,
301 .gpio3 = 0x02000000,
302 }},
303 .radio = {
304 .type = CX88_RADIO,
305 .gpio0 = 0x0035d700,
306 .gpio1 = 0x00007004,
307 .gpio2 = 0x0035d700,
308 .gpio3 = 0x02000000,
309 },
310 },
311 [CX88_BOARD_LEADTEK_PVR2000] = {
312 // gpio values for PAL version from regspy by DScaler
313 .name = "Leadtek PVR 2000",
314 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
315 .radio_type = UNSET,
316 .tuner_addr = ADDR_UNSET,
317 .radio_addr = ADDR_UNSET,
318 .tda9887_conf = TDA9887_PRESENT,
319 .input = {{
320 .type = CX88_VMUX_TELEVISION,
321 .vmux = 0,
322 .gpio0 = 0x0000bde2,
323 .audioroute = 1,
324 },{
325 .type = CX88_VMUX_COMPOSITE1,
326 .vmux = 1,
327 .gpio0 = 0x0000bde6,
328 .audioroute = 1,
329 },{
330 .type = CX88_VMUX_SVIDEO,
331 .vmux = 2,
332 .gpio0 = 0x0000bde6,
333 .audioroute = 1,
334 }},
335 .radio = {
336 .type = CX88_RADIO,
337 .gpio0 = 0x0000bd62,
338 .audioroute = 1,
339 },
340 .mpeg = CX88_MPEG_BLACKBIRD,
341 },
342 [CX88_BOARD_IODATA_GVVCP3PCI] = {
343 .name = "IODATA GV-VCP3/PCI",
344 .tuner_type = TUNER_ABSENT,
345 .radio_type = UNSET,
346 .tuner_addr = ADDR_UNSET,
347 .radio_addr = ADDR_UNSET,
348 .input = {{
349 .type = CX88_VMUX_COMPOSITE1,
350 .vmux = 0,
351 },{
352 .type = CX88_VMUX_COMPOSITE2,
353 .vmux = 1,
354 },{
355 .type = CX88_VMUX_SVIDEO,
356 .vmux = 2,
357 }},
358 },
359 [CX88_BOARD_PROLINK_PLAYTVPVR] = {
360 .name = "Prolink PlayTV PVR",
361 .tuner_type = TUNER_PHILIPS_FM1236_MK3,
362 .radio_type = UNSET,
363 .tuner_addr = ADDR_UNSET,
364 .radio_addr = ADDR_UNSET,
365 .tda9887_conf = TDA9887_PRESENT,
366 .input = {{
367 .type = CX88_VMUX_TELEVISION,
368 .vmux = 0,
369 .gpio0 = 0xbff0,
370 },{
371 .type = CX88_VMUX_COMPOSITE1,
372 .vmux = 1,
373 .gpio0 = 0xbff3,
374 },{
375 .type = CX88_VMUX_SVIDEO,
376 .vmux = 2,
377 .gpio0 = 0xbff3,
378 }},
379 .radio = {
380 .type = CX88_RADIO,
381 .gpio0 = 0xbff0,
382 },
383 },
384 [CX88_BOARD_ASUS_PVR_416] = {
385 .name = "ASUS PVR-416",
386 .tuner_type = TUNER_PHILIPS_FM1236_MK3,
387 .radio_type = UNSET,
388 .tuner_addr = ADDR_UNSET,
389 .radio_addr = ADDR_UNSET,
390 .tda9887_conf = TDA9887_PRESENT,
391 .input = {{
392 .type = CX88_VMUX_TELEVISION,
393 .vmux = 0,
394 .gpio0 = 0x0000fde6,
395 },{
396 .type = CX88_VMUX_SVIDEO,
397 .vmux = 2,
398 .gpio0 = 0x0000fde6, // 0x0000fda6 L,R RCA audio in?
399 .audioroute = 1,
400 }},
401 .radio = {
402 .type = CX88_RADIO,
403 .gpio0 = 0x0000fde2,
404 },
405 .mpeg = CX88_MPEG_BLACKBIRD,
406 },
407 [CX88_BOARD_MSI_TVANYWHERE] = {
408 .name = "MSI TV-@nywhere",
409 .tuner_type = TUNER_MT2032,
410 .radio_type = UNSET,
411 .tuner_addr = ADDR_UNSET,
412 .radio_addr = ADDR_UNSET,
413 .tda9887_conf = TDA9887_PRESENT,
414 .input = {{
415 .type = CX88_VMUX_TELEVISION,
416 .vmux = 0,
417 .gpio0 = 0x00000fbf,
418 .gpio2 = 0x0000fc08,
419 },{
420 .type = CX88_VMUX_COMPOSITE1,
421 .vmux = 1,
422 .gpio0 = 0x00000fbf,
423 .gpio2 = 0x0000fc68,
424 },{
425 .type = CX88_VMUX_SVIDEO,
426 .vmux = 2,
427 .gpio0 = 0x00000fbf,
428 .gpio2 = 0x0000fc68,
429 }},
430 },
431 [CX88_BOARD_KWORLD_DVB_T] = {
432 .name = "KWorld/VStream XPert DVB-T",
433 .tuner_type = TUNER_ABSENT,
434 .radio_type = UNSET,
435 .tuner_addr = ADDR_UNSET,
436 .radio_addr = ADDR_UNSET,
437 .input = {{
438 .type = CX88_VMUX_COMPOSITE1,
439 .vmux = 1,
440 .gpio0 = 0x0700,
441 .gpio2 = 0x0101,
442 },{
443 .type = CX88_VMUX_SVIDEO,
444 .vmux = 2,
445 .gpio0 = 0x0700,
446 .gpio2 = 0x0101,
447 }},
448 .mpeg = CX88_MPEG_DVB,
449 },
450 [CX88_BOARD_DVICO_FUSIONHDTV_DVB_T1] = {
451 .name = "DViCO FusionHDTV DVB-T1",
452 .tuner_type = TUNER_ABSENT, /* No analog tuner */
453 .radio_type = UNSET,
454 .tuner_addr = ADDR_UNSET,
455 .radio_addr = ADDR_UNSET,
456 .input = {{
457 .type = CX88_VMUX_COMPOSITE1,
458 .vmux = 1,
459 .gpio0 = 0x000027df,
460 },{
461 .type = CX88_VMUX_SVIDEO,
462 .vmux = 2,
463 .gpio0 = 0x000027df,
464 }},
465 .mpeg = CX88_MPEG_DVB,
466 },
467 [CX88_BOARD_KWORLD_LTV883] = {
468 .name = "KWorld LTV883RF",
469 .tuner_type = TUNER_TNF_8831BGFF,
470 .radio_type = UNSET,
471 .tuner_addr = ADDR_UNSET,
472 .radio_addr = ADDR_UNSET,
473 .input = {{
474 .type = CX88_VMUX_TELEVISION,
475 .vmux = 0,
476 .gpio0 = 0x07f8,
477 },{
478 .type = CX88_VMUX_DEBUG,
479 .vmux = 0,
480 .gpio0 = 0x07f9, // mono from tuner chip
481 },{
482 .type = CX88_VMUX_COMPOSITE1,
483 .vmux = 1,
484 .gpio0 = 0x000007fa,
485 },{
486 .type = CX88_VMUX_SVIDEO,
487 .vmux = 2,
488 .gpio0 = 0x000007fa,
489 }},
490 .radio = {
491 .type = CX88_RADIO,
492 .gpio0 = 0x000007f8,
493 },
494 },
495 [CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_Q] = {
496 .name = "DViCO FusionHDTV 3 Gold-Q",
497 .tuner_type = TUNER_MICROTUNE_4042FI5,
498 .radio_type = UNSET,
499 .tuner_addr = ADDR_UNSET,
500 .radio_addr = ADDR_UNSET,
501 /*
502 GPIO[0] resets DT3302 DTV receiver
503 0 - reset asserted
504 1 - normal operation
505 GPIO[1] mutes analog audio output connector
506 0 - enable selected source
507 1 - mute
508 GPIO[2] selects source for analog audio output connector
509 0 - analog audio input connector on tab
510 1 - analog DAC output from CX23881 chip
511 GPIO[3] selects RF input connector on tuner module
512 0 - RF connector labeled CABLE
513 1 - RF connector labeled ANT
514 GPIO[4] selects high RF for QAM256 mode
515 0 - normal RF
516 1 - high RF
517 */
518 .input = {{
519 .type = CX88_VMUX_TELEVISION,
520 .vmux = 0,
521 .gpio0 = 0x0f0d,
522 },{
523 .type = CX88_VMUX_CABLE,
524 .vmux = 0,
525 .gpio0 = 0x0f05,
526 },{
527 .type = CX88_VMUX_COMPOSITE1,
528 .vmux = 1,
529 .gpio0 = 0x0f00,
530 },{
531 .type = CX88_VMUX_SVIDEO,
532 .vmux = 2,
533 .gpio0 = 0x0f00,
534 }},
535 .mpeg = CX88_MPEG_DVB,
536 },
537 [CX88_BOARD_HAUPPAUGE_DVB_T1] = {
538 .name = "Hauppauge Nova-T DVB-T",
539 .tuner_type = TUNER_ABSENT,
540 .radio_type = UNSET,
541 .tuner_addr = ADDR_UNSET,
542 .radio_addr = ADDR_UNSET,
543 .input = {{
544 .type = CX88_VMUX_DVB,
545 .vmux = 0,
546 }},
547 .mpeg = CX88_MPEG_DVB,
548 },
549 [CX88_BOARD_CONEXANT_DVB_T1] = {
550 .name = "Conexant DVB-T reference design",
551 .tuner_type = TUNER_ABSENT,
552 .radio_type = UNSET,
553 .tuner_addr = ADDR_UNSET,
554 .radio_addr = ADDR_UNSET,
555 .input = {{
556 .type = CX88_VMUX_DVB,
557 .vmux = 0,
558 }},
559 .mpeg = CX88_MPEG_DVB,
560 },
561 [CX88_BOARD_PROVIDEO_PV259] = {
562 .name = "Provideo PV259",
563 .tuner_type = TUNER_PHILIPS_FQ1216ME,
564 .radio_type = UNSET,
565 .tuner_addr = ADDR_UNSET,
566 .radio_addr = ADDR_UNSET,
567 .input = {{
568 .type = CX88_VMUX_TELEVISION,
569 .vmux = 0,
570 .audioroute = 1,
571 }},
572 .mpeg = CX88_MPEG_BLACKBIRD,
573 },
574 [CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_PLUS] = {
575 .name = "DViCO FusionHDTV DVB-T Plus",
576 .tuner_type = TUNER_ABSENT, /* No analog tuner */
577 .radio_type = UNSET,
578 .tuner_addr = ADDR_UNSET,
579 .radio_addr = ADDR_UNSET,
580 .input = {{
581 .type = CX88_VMUX_COMPOSITE1,
582 .vmux = 1,
583 .gpio0 = 0x000027df,
584 },{
585 .type = CX88_VMUX_SVIDEO,
586 .vmux = 2,
587 .gpio0 = 0x000027df,
588 }},
589 .mpeg = CX88_MPEG_DVB,
590 },
591 [CX88_BOARD_DNTV_LIVE_DVB_T] = {
592 .name = "digitalnow DNTV Live! DVB-T",
593 .tuner_type = TUNER_ABSENT,
594 .radio_type = UNSET,
595 .tuner_addr = ADDR_UNSET,
596 .radio_addr = ADDR_UNSET,
597 .input = {{
598 .type = CX88_VMUX_COMPOSITE1,
599 .vmux = 1,
600 .gpio0 = 0x00000700,
601 .gpio2 = 0x00000101,
602 },{
603 .type = CX88_VMUX_SVIDEO,
604 .vmux = 2,
605 .gpio0 = 0x00000700,
606 .gpio2 = 0x00000101,
607 }},
608 .mpeg = CX88_MPEG_DVB,
609 },
610 [CX88_BOARD_PCHDTV_HD3000] = {
611 .name = "pcHDTV HD3000 HDTV",
612 .tuner_type = TUNER_THOMSON_DTT761X,
613 .radio_type = UNSET,
614 .tuner_addr = ADDR_UNSET,
615 .radio_addr = ADDR_UNSET,
616 .tda9887_conf = TDA9887_PRESENT,
617 /* GPIO[2] = audio source for analog audio out connector
618 * 0 = analog audio input connector
619 * 1 = CX88 audio DACs
620 *
621 * GPIO[7] = input to CX88's audio/chroma ADC
622 * 0 = FM 10.7 MHz IF
623 * 1 = Sound 4.5 MHz IF
624 *
625 * GPIO[1,5,6] = Oren 51132 pins 27,35,28 respectively
626 *
627 * GPIO[16] = Remote control input
628 */
629 .input = {{
630 .type = CX88_VMUX_TELEVISION,
631 .vmux = 0,
632 .gpio0 = 0x00008484,
633 },{
634 .type = CX88_VMUX_COMPOSITE1,
635 .vmux = 1,
636 .gpio0 = 0x00008400,
637 },{
638 .type = CX88_VMUX_SVIDEO,
639 .vmux = 2,
640 .gpio0 = 0x00008400,
641 }},
642 .radio = {
643 .type = CX88_RADIO,
644 .gpio0 = 0x00008404,
645 },
646 .mpeg = CX88_MPEG_DVB,
647 },
648 [CX88_BOARD_HAUPPAUGE_ROSLYN] = {
649 // entry added by Kaustubh D. Bhalerao <bhalerao.1@osu.edu>
650 // GPIO values obtained from regspy, courtesy Sean Covel
651 .name = "Hauppauge WinTV 28xxx (Roslyn) models",
652 .tuner_type = UNSET,
653 .radio_type = UNSET,
654 .tuner_addr = ADDR_UNSET,
655 .radio_addr = ADDR_UNSET,
656 .input = {{
657 .type = CX88_VMUX_TELEVISION,
658 .vmux = 0,
659 .gpio0 = 0xed1a,
660 .gpio2 = 0x00ff,
661 },{
662 .type = CX88_VMUX_DEBUG,
663 .vmux = 0,
664 .gpio0 = 0xff01,
665 },{
666 .type = CX88_VMUX_COMPOSITE1,
667 .vmux = 1,
668 .gpio0 = 0xff02,
669 },{
670 .type = CX88_VMUX_SVIDEO,
671 .vmux = 2,
672 .gpio0 = 0xed92,
673 .gpio2 = 0x00ff,
674 }},
675 .radio = {
676 .type = CX88_RADIO,
677 .gpio0 = 0xed96,
678 .gpio2 = 0x00ff,
679 },
680 .mpeg = CX88_MPEG_BLACKBIRD,
681 },
682 [CX88_BOARD_DIGITALLOGIC_MEC] = {
683 .name = "Digital-Logic MICROSPACE Entertainment Center (MEC)",
684 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
685 .radio_type = UNSET,
686 .tuner_addr = ADDR_UNSET,
687 .radio_addr = ADDR_UNSET,
688 .tda9887_conf = TDA9887_PRESENT,
689 .input = {{
690 .type = CX88_VMUX_TELEVISION,
691 .vmux = 0,
692 .gpio0 = 0x00009d80,
693 .audioroute = 1,
694 },{
695 .type = CX88_VMUX_COMPOSITE1,
696 .vmux = 1,
697 .gpio0 = 0x00009d76,
698 .audioroute = 1,
699 },{
700 .type = CX88_VMUX_SVIDEO,
701 .vmux = 2,
702 .gpio0 = 0x00009d76,
703 .audioroute = 1,
704 }},
705 .radio = {
706 .type = CX88_RADIO,
707 .gpio0 = 0x00009d00,
708 .audioroute = 1,
709 },
710 .mpeg = CX88_MPEG_BLACKBIRD,
711 },
712 [CX88_BOARD_IODATA_GVBCTV7E] = {
713 .name = "IODATA GV/BCTV7E",
714 .tuner_type = TUNER_PHILIPS_FQ1286,
715 .radio_type = UNSET,
716 .tuner_addr = ADDR_UNSET,
717 .radio_addr = ADDR_UNSET,
718 .tda9887_conf = TDA9887_PRESENT,
719 .input = {{
720 .type = CX88_VMUX_TELEVISION,
721 .vmux = 1,
722 .gpio1 = 0x0000e03f,
723 },{
724 .type = CX88_VMUX_COMPOSITE1,
725 .vmux = 2,
726 .gpio1 = 0x0000e07f,
727 },{
728 .type = CX88_VMUX_SVIDEO,
729 .vmux = 3,
730 .gpio1 = 0x0000e07f,
731 }}
732 },
733 [CX88_BOARD_PIXELVIEW_PLAYTV_ULTRA_PRO] = {
734 .name = "PixelView PlayTV Ultra Pro (Stereo)",
735 /* May be also TUNER_YMEC_TVF_5533MF for NTSC/M or PAL/M */
736 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
737 .radio_type = UNSET,
738 .tuner_addr = ADDR_UNSET,
739 .radio_addr = ADDR_UNSET,
740 /* Some variants use a tda9874 and so need the tvaudio module. */
741 .audio_chip = V4L2_IDENT_TVAUDIO,
742 .input = {{
743 .type = CX88_VMUX_TELEVISION,
744 .vmux = 0,
745 .gpio0 = 0xbf61, /* internal decoder */
746 },{
747 .type = CX88_VMUX_COMPOSITE1,
748 .vmux = 1,
749 .gpio0 = 0xbf63,
750 },{
751 .type = CX88_VMUX_SVIDEO,
752 .vmux = 2,
753 .gpio0 = 0xbf63,
754 }},
755 .radio = {
756 .type = CX88_RADIO,
757 .gpio0 = 0xbf60,
758 },
759 },
760 [CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_T] = {
761 .name = "DViCO FusionHDTV 3 Gold-T",
762 .tuner_type = TUNER_THOMSON_DTT761X,
763 .radio_type = UNSET,
764 .tuner_addr = ADDR_UNSET,
765 .radio_addr = ADDR_UNSET,
766 .tda9887_conf = TDA9887_PRESENT,
767 .input = {{
768 .type = CX88_VMUX_TELEVISION,
769 .vmux = 0,
770 .gpio0 = 0x97ed,
771 },{
772 .type = CX88_VMUX_COMPOSITE1,
773 .vmux = 1,
774 .gpio0 = 0x97e9,
775 },{
776 .type = CX88_VMUX_SVIDEO,
777 .vmux = 2,
778 .gpio0 = 0x97e9,
779 }},
780 .mpeg = CX88_MPEG_DVB,
781 },
782 [CX88_BOARD_ADSTECH_DVB_T_PCI] = {
783 .name = "ADS Tech Instant TV DVB-T PCI",
784 .tuner_type = TUNER_ABSENT,
785 .radio_type = UNSET,
786 .tuner_addr = ADDR_UNSET,
787 .radio_addr = ADDR_UNSET,
788 .input = {{
789 .type = CX88_VMUX_COMPOSITE1,
790 .vmux = 1,
791 .gpio0 = 0x0700,
792 .gpio2 = 0x0101,
793 },{
794 .type = CX88_VMUX_SVIDEO,
795 .vmux = 2,
796 .gpio0 = 0x0700,
797 .gpio2 = 0x0101,
798 }},
799 .mpeg = CX88_MPEG_DVB,
800 },
801 [CX88_BOARD_TERRATEC_CINERGY_1400_DVB_T1] = {
802 .name = "TerraTec Cinergy 1400 DVB-T",
803 .tuner_type = TUNER_ABSENT,
804 .input = {{
805 .type = CX88_VMUX_DVB,
806 .vmux = 0,
807 },{
808 .type = CX88_VMUX_COMPOSITE1,
809 .vmux = 2,
810 },{
811 .type = CX88_VMUX_SVIDEO,
812 .vmux = 2,
813 }},
814 .mpeg = CX88_MPEG_DVB,
815 },
816 [CX88_BOARD_DVICO_FUSIONHDTV_5_GOLD] = {
817 .name = "DViCO FusionHDTV 5 Gold",
818 .tuner_type = TUNER_LG_TDVS_H06XF, /* TDVS-H062F */
819 .radio_type = UNSET,
820 .tuner_addr = ADDR_UNSET,
821 .radio_addr = ADDR_UNSET,
822 .tda9887_conf = TDA9887_PRESENT,
823 .input = {{
824 .type = CX88_VMUX_TELEVISION,
825 .vmux = 0,
826 .gpio0 = 0x87fd,
827 },{
828 .type = CX88_VMUX_COMPOSITE1,
829 .vmux = 1,
830 .gpio0 = 0x87f9,
831 },{
832 .type = CX88_VMUX_SVIDEO,
833 .vmux = 2,
834 .gpio0 = 0x87f9,
835 }},
836 .mpeg = CX88_MPEG_DVB,
837 },
838 [CX88_BOARD_AVERMEDIA_ULTRATV_MC_550] = {
839 .name = "AverMedia UltraTV Media Center PCI 550",
840 .tuner_type = TUNER_PHILIPS_FM1236_MK3,
841 .radio_type = UNSET,
842 .tuner_addr = ADDR_UNSET,
843 .radio_addr = ADDR_UNSET,
844 .tda9887_conf = TDA9887_PRESENT,
845 .input = {{
846 .type = CX88_VMUX_COMPOSITE1,
847 .vmux = 0,
848 .gpio0 = 0x0000cd73,
849 .audioroute = 1,
850 },{
851 .type = CX88_VMUX_SVIDEO,
852 .vmux = 1,
853 .gpio0 = 0x0000cd73,
854 .audioroute = 1,
855 },{
856 .type = CX88_VMUX_TELEVISION,
857 .vmux = 3,
858 .gpio0 = 0x0000cdb3,
859 .audioroute = 1,
860 }},
861 .radio = {
862 .type = CX88_RADIO,
863 .vmux = 2,
864 .gpio0 = 0x0000cdf3,
865 .audioroute = 1,
866 },
867 .mpeg = CX88_MPEG_BLACKBIRD,
868 },
869 [CX88_BOARD_KWORLD_VSTREAM_EXPERT_DVD] = {
870 /* Alexander Wold <awold@bigfoot.com> */
871 .name = "Kworld V-Stream Xpert DVD",
872 .tuner_type = UNSET,
873 .input = {{
874 .type = CX88_VMUX_COMPOSITE1,
875 .vmux = 1,
876 .gpio0 = 0x03000000,
877 .gpio1 = 0x01000000,
878 .gpio2 = 0x02000000,
879 .gpio3 = 0x00100000,
880 },{
881 .type = CX88_VMUX_SVIDEO,
882 .vmux = 2,
883 .gpio0 = 0x03000000,
884 .gpio1 = 0x01000000,
885 .gpio2 = 0x02000000,
886 .gpio3 = 0x00100000,
887 }},
888 },
889 [CX88_BOARD_ATI_HDTVWONDER] = {
890 .name = "ATI HDTV Wonder",
891 .tuner_type = TUNER_PHILIPS_TUV1236D,
892 .radio_type = UNSET,
893 .tuner_addr = ADDR_UNSET,
894 .radio_addr = ADDR_UNSET,
895 .input = {{
896 .type = CX88_VMUX_TELEVISION,
897 .vmux = 0,
898 .gpio0 = 0x00000ff7,
899 .gpio1 = 0x000000ff,
900 .gpio2 = 0x00000001,
901 .gpio3 = 0x00000000,
902 },{
903 .type = CX88_VMUX_COMPOSITE1,
904 .vmux = 1,
905 .gpio0 = 0x00000ffe,
906 .gpio1 = 0x000000ff,
907 .gpio2 = 0x00000001,
908 .gpio3 = 0x00000000,
909 },{
910 .type = CX88_VMUX_SVIDEO,
911 .vmux = 2,
912 .gpio0 = 0x00000ffe,
913 .gpio1 = 0x000000ff,
914 .gpio2 = 0x00000001,
915 .gpio3 = 0x00000000,
916 }},
917 .mpeg = CX88_MPEG_DVB,
918 },
919 [CX88_BOARD_WINFAST_DTV1000] = {
920 .name = "WinFast DTV1000-T",
921 .tuner_type = TUNER_ABSENT,
922 .radio_type = UNSET,
923 .tuner_addr = ADDR_UNSET,
924 .radio_addr = ADDR_UNSET,
925 .input = {{
926 .type = CX88_VMUX_DVB,
927 .vmux = 0,
928 },{
929 .type = CX88_VMUX_COMPOSITE1,
930 .vmux = 1,
931 },{
932 .type = CX88_VMUX_SVIDEO,
933 .vmux = 2,
934 }},
935 .mpeg = CX88_MPEG_DVB,
936 },
937 [CX88_BOARD_AVERTV_303] = {
938 .name = "AVerTV 303 (M126)",
939 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
940 .radio_type = UNSET,
941 .tuner_addr = ADDR_UNSET,
942 .radio_addr = ADDR_UNSET,
943 .tda9887_conf = TDA9887_PRESENT,
944 .input = {{
945 .type = CX88_VMUX_TELEVISION,
946 .vmux = 0,
947 .gpio0 = 0x00ff,
948 .gpio1 = 0xe09f,
949 .gpio2 = 0x0010,
950 .gpio3 = 0x0000,
951 },{
952 .type = CX88_VMUX_COMPOSITE1,
953 .vmux = 1,
954 .gpio0 = 0x00ff,
955 .gpio1 = 0xe05f,
956 .gpio2 = 0x0010,
957 .gpio3 = 0x0000,
958 },{
959 .type = CX88_VMUX_SVIDEO,
960 .vmux = 2,
961 .gpio0 = 0x00ff,
962 .gpio1 = 0xe05f,
963 .gpio2 = 0x0010,
964 .gpio3 = 0x0000,
965 }},
966 },
967 [CX88_BOARD_HAUPPAUGE_NOVASPLUS_S1] = {
968 .name = "Hauppauge Nova-S-Plus DVB-S",
969 .tuner_type = TUNER_ABSENT,
970 .radio_type = UNSET,
971 .tuner_addr = ADDR_UNSET,
972 .radio_addr = ADDR_UNSET,
973 .audio_chip = V4L2_IDENT_WM8775,
974 .i2sinputcntl = 2,
975 .input = {{
976 .type = CX88_VMUX_DVB,
977 .vmux = 0,
978 /* 2: Line-In */
979 .audioroute = 2,
980 },{
981 .type = CX88_VMUX_COMPOSITE1,
982 .vmux = 1,
983 /* 2: Line-In */
984 .audioroute = 2,
985 },{
986 .type = CX88_VMUX_SVIDEO,
987 .vmux = 2,
988 /* 2: Line-In */
989 .audioroute = 2,
990 }},
991 .mpeg = CX88_MPEG_DVB,
992 },
993 [CX88_BOARD_HAUPPAUGE_NOVASE2_S1] = {
994 .name = "Hauppauge Nova-SE2 DVB-S",
995 .tuner_type = TUNER_ABSENT,
996 .radio_type = UNSET,
997 .tuner_addr = ADDR_UNSET,
998 .radio_addr = ADDR_UNSET,
999 .input = {{
1000 .type = CX88_VMUX_DVB,
1001 .vmux = 0,
1002 }},
1003 .mpeg = CX88_MPEG_DVB,
1004 },
1005 [CX88_BOARD_KWORLD_DVBS_100] = {
1006 .name = "KWorld DVB-S 100",
1007 .tuner_type = TUNER_ABSENT,
1008 .radio_type = UNSET,
1009 .tuner_addr = ADDR_UNSET,
1010 .radio_addr = ADDR_UNSET,
1011 .audio_chip = V4L2_IDENT_WM8775,
1012 .input = {{
1013 .type = CX88_VMUX_DVB,
1014 .vmux = 0,
1015 /* 2: Line-In */
1016 .audioroute = 2,
1017 },{
1018 .type = CX88_VMUX_COMPOSITE1,
1019 .vmux = 1,
1020 /* 2: Line-In */
1021 .audioroute = 2,
1022 },{
1023 .type = CX88_VMUX_SVIDEO,
1024 .vmux = 2,
1025 /* 2: Line-In */
1026 .audioroute = 2,
1027 }},
1028 .mpeg = CX88_MPEG_DVB,
1029 },
1030 [CX88_BOARD_HAUPPAUGE_HVR1100] = {
1031 .name = "Hauppauge WinTV-HVR1100 DVB-T/Hybrid",
1032 .tuner_type = TUNER_PHILIPS_FMD1216ME_MK3,
1033 .radio_type = UNSET,
1034 .tuner_addr = ADDR_UNSET,
1035 .radio_addr = ADDR_UNSET,
1036 .tda9887_conf = TDA9887_PRESENT,
1037 .input = {{
1038 .type = CX88_VMUX_TELEVISION,
1039 .vmux = 0,
1040 },{
1041 .type = CX88_VMUX_COMPOSITE1,
1042 .vmux = 1,
1043 },{
1044 .type = CX88_VMUX_SVIDEO,
1045 .vmux = 2,
1046 }},
1047 /* fixme: Add radio support */
1048 .mpeg = CX88_MPEG_DVB,
1049 },
1050 [CX88_BOARD_HAUPPAUGE_HVR1100LP] = {
1051 .name = "Hauppauge WinTV-HVR1100 DVB-T/Hybrid (Low Profile)",
1052 .tuner_type = TUNER_PHILIPS_FMD1216ME_MK3,
1053 .radio_type = UNSET,
1054 .tuner_addr = ADDR_UNSET,
1055 .radio_addr = ADDR_UNSET,
1056 .tda9887_conf = TDA9887_PRESENT,
1057 .input = {{
1058 .type = CX88_VMUX_TELEVISION,
1059 .vmux = 0,
1060 },{
1061 .type = CX88_VMUX_COMPOSITE1,
1062 .vmux = 1,
1063 }},
1064 /* fixme: Add radio support */
1065 .mpeg = CX88_MPEG_DVB,
1066 },
1067 [CX88_BOARD_DNTV_LIVE_DVB_T_PRO] = {
1068 .name = "digitalnow DNTV Live! DVB-T Pro",
1069 .tuner_type = TUNER_PHILIPS_FMD1216ME_MK3,
1070 .radio_type = UNSET,
1071 .tuner_addr = ADDR_UNSET,
1072 .radio_addr = ADDR_UNSET,
1073 .tda9887_conf = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE |
1074 TDA9887_PORT2_ACTIVE,
1075 .input = {{
1076 .type = CX88_VMUX_TELEVISION,
1077 .vmux = 0,
1078 .gpio0 = 0xf80808,
1079 },{
1080 .type = CX88_VMUX_COMPOSITE1,
1081 .vmux = 1,
1082 .gpio0 = 0xf80808,
1083 },{
1084 .type = CX88_VMUX_SVIDEO,
1085 .vmux = 2,
1086 .gpio0 = 0xf80808,
1087 }},
1088 .radio = {
1089 .type = CX88_RADIO,
1090 .gpio0 = 0xf80808,
1091 },
1092 .mpeg = CX88_MPEG_DVB,
1093 },
1094 [CX88_BOARD_KWORLD_DVB_T_CX22702] = {
1095 /* Kworld V-stream Xpert DVB-T with Thomson tuner */
1096 /* DTT 7579 Conexant CX22702-19 Conexant CX2388x */
1097 /* Manenti Marco <marco_manenti@colman.it> */
1098 .name = "KWorld/VStream XPert DVB-T with cx22702",
1099 .tuner_type = TUNER_ABSENT,
1100 .radio_type = UNSET,
1101 .tuner_addr = ADDR_UNSET,
1102 .radio_addr = ADDR_UNSET,
1103 .input = {{
1104 .type = CX88_VMUX_COMPOSITE1,
1105 .vmux = 1,
1106 .gpio0 = 0x0700,
1107 .gpio2 = 0x0101,
1108 },{
1109 .type = CX88_VMUX_SVIDEO,
1110 .vmux = 2,
1111 .gpio0 = 0x0700,
1112 .gpio2 = 0x0101,
1113 }},
1114 .mpeg = CX88_MPEG_DVB,
1115 },
1116 [CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL] = {
1117 .name = "DViCO FusionHDTV DVB-T Dual Digital",
1118 .tuner_type = TUNER_ABSENT, /* No analog tuner */
1119 .radio_type = UNSET,
1120 .tuner_addr = ADDR_UNSET,
1121 .radio_addr = ADDR_UNSET,
1122 .input = {{
1123 .type = CX88_VMUX_COMPOSITE1,
1124 .vmux = 1,
1125 .gpio0 = 0x000067df,
1126 },{
1127 .type = CX88_VMUX_SVIDEO,
1128 .vmux = 2,
1129 .gpio0 = 0x000067df,
1130 }},
1131 .mpeg = CX88_MPEG_DVB,
1132 },
1133 [CX88_BOARD_KWORLD_HARDWARE_MPEG_TV_XPERT] = {
1134 .name = "KWorld HardwareMpegTV XPert",
1135 .tuner_type = TUNER_PHILIPS_TDA8290,
1136 .radio_type = UNSET,
1137 .tuner_addr = ADDR_UNSET,
1138 .radio_addr = ADDR_UNSET,
1139 .input = {{
1140 .type = CX88_VMUX_TELEVISION,
1141 .vmux = 0,
1142 .gpio0 = 0x3de2,
1143 .gpio2 = 0x00ff,
1144 },{
1145 .type = CX88_VMUX_COMPOSITE1,
1146 .vmux = 1,
1147 .gpio0 = 0x3de6,
1148 .audioroute = 1,
1149 },{
1150 .type = CX88_VMUX_SVIDEO,
1151 .vmux = 2,
1152 .gpio0 = 0x3de6,
1153 .audioroute = 1,
1154 }},
1155 .radio = {
1156 .type = CX88_RADIO,
1157 .gpio0 = 0x3de6,
1158 .gpio2 = 0x00ff,
1159 },
1160 .mpeg = CX88_MPEG_BLACKBIRD,
1161 },
1162 [CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_HYBRID] = {
1163 .name = "DViCO FusionHDTV DVB-T Hybrid",
1164 .tuner_type = TUNER_THOMSON_FE6600,
1165 .radio_type = UNSET,
1166 .tuner_addr = ADDR_UNSET,
1167 .radio_addr = ADDR_UNSET,
1168 .input = {{
1169 .type = CX88_VMUX_TELEVISION,
1170 .vmux = 0,
1171 .gpio0 = 0x0000a75f,
1172 },{
1173 .type = CX88_VMUX_COMPOSITE1,
1174 .vmux = 1,
1175 .gpio0 = 0x0000a75b,
1176 },{
1177 .type = CX88_VMUX_SVIDEO,
1178 .vmux = 2,
1179 .gpio0 = 0x0000a75b,
1180 }},
1181 .mpeg = CX88_MPEG_DVB,
1182 },
1183 [CX88_BOARD_PCHDTV_HD5500] = {
1184 .name = "pcHDTV HD5500 HDTV",
1185 .tuner_type = TUNER_LG_TDVS_H06XF, /* TDVS-H064F */
1186 .radio_type = UNSET,
1187 .tuner_addr = ADDR_UNSET,
1188 .radio_addr = ADDR_UNSET,
1189 .tda9887_conf = TDA9887_PRESENT,
1190 .input = {{
1191 .type = CX88_VMUX_TELEVISION,
1192 .vmux = 0,
1193 .gpio0 = 0x87fd,
1194 },{
1195 .type = CX88_VMUX_COMPOSITE1,
1196 .vmux = 1,
1197 .gpio0 = 0x87f9,
1198 },{
1199 .type = CX88_VMUX_SVIDEO,
1200 .vmux = 2,
1201 .gpio0 = 0x87f9,
1202 }},
1203 .mpeg = CX88_MPEG_DVB,
1204 },
1205 [CX88_BOARD_KWORLD_MCE200_DELUXE] = {
1206 /* FIXME: tested TV input only, disabled composite,
1207 svideo and radio until they can be tested also. */
1208 .name = "Kworld MCE 200 Deluxe",
1209 .tuner_type = TUNER_TENA_9533_DI,
1210 .radio_type = UNSET,
1211 .tda9887_conf = TDA9887_PRESENT,
1212 .tuner_addr = ADDR_UNSET,
1213 .radio_addr = ADDR_UNSET,
1214 .input = {{
1215 .type = CX88_VMUX_TELEVISION,
1216 .vmux = 0,
1217 .gpio0 = 0x0000BDE6
1218 }},
1219 .mpeg = CX88_MPEG_BLACKBIRD,
1220 },
1221 [CX88_BOARD_PIXELVIEW_PLAYTV_P7000] = {
1222 /* FIXME: SVideo, Composite and FM inputs are untested */
1223 .name = "PixelView PlayTV P7000",
1224 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
1225 .radio_type = UNSET,
1226 .tuner_addr = ADDR_UNSET,
1227 .radio_addr = ADDR_UNSET,
1228 .tda9887_conf = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE |
1229 TDA9887_PORT2_ACTIVE,
1230 .input = {{
1231 .type = CX88_VMUX_TELEVISION,
1232 .vmux = 0,
1233 .gpio0 = 0x5da6,
1234 }},
1235 .mpeg = CX88_MPEG_BLACKBIRD,
1236 },
1237 [CX88_BOARD_NPGTECH_REALTV_TOP10FM] = {
1238 .name = "NPG Tech Real TV FM Top 10",
1239 .tuner_type = TUNER_TNF_5335MF, /* Actually a TNF9535 */
1240 .radio_type = UNSET,
1241 .tuner_addr = ADDR_UNSET,
1242 .radio_addr = ADDR_UNSET,
1243 .input = {{
1244 .type = CX88_VMUX_TELEVISION,
1245 .vmux = 0,
1246 .gpio0 = 0x0788,
1247 },{
1248 .type = CX88_VMUX_COMPOSITE1,
1249 .vmux = 1,
1250 .gpio0 = 0x078b,
1251 },{
1252 .type = CX88_VMUX_SVIDEO,
1253 .vmux = 2,
1254 .gpio0 = 0x078b,
1255 }},
1256 .radio = {
1257 .type = CX88_RADIO,
1258 .gpio0 = 0x074a,
1259 },
1260 },
1261 [CX88_BOARD_WINFAST_DTV2000H] = {
1262 .name = "WinFast DTV2000 H",
1263 .tuner_type = TUNER_PHILIPS_FMD1216ME_MK3,
1264 .radio_type = UNSET,
1265 .tuner_addr = ADDR_UNSET,
1266 .radio_addr = ADDR_UNSET,
1267 .tda9887_conf = TDA9887_PRESENT,
1268 .input = {{
1269 .type = CX88_VMUX_TELEVISION,
1270 .vmux = 0,
1271 .gpio0 = 0x00017304,
1272 .gpio1 = 0x00008203,
1273 .gpio2 = 0x00017304,
1274 .gpio3 = 0x02000000,
1275 }, {
1276 .type = CX88_VMUX_COMPOSITE1,
1277 .vmux = 1,
1278 .gpio0 = 0x0001d701,
1279 .gpio1 = 0x0000b207,
1280 .gpio2 = 0x0001d701,
1281 .gpio3 = 0x02000000,
1282 }, {
1283 .type = CX88_VMUX_COMPOSITE2,
1284 .vmux = 2,
1285 .gpio0 = 0x0001d503,
1286 .gpio1 = 0x0000b207,
1287 .gpio2 = 0x0001d503,
1288 .gpio3 = 0x02000000,
1289 }, {
1290 .type = CX88_VMUX_SVIDEO,
1291 .vmux = 3,
1292 .gpio0 = 0x0001d701,
1293 .gpio1 = 0x0000b207,
1294 .gpio2 = 0x0001d701,
1295 .gpio3 = 0x02000000,
1296 }},
1297 .radio = {
1298 .type = CX88_RADIO,
1299 .gpio0 = 0x00015702,
1300 .gpio1 = 0x0000f207,
1301 .gpio2 = 0x00015702,
1302 .gpio3 = 0x02000000,
1303 },
1304 .mpeg = CX88_MPEG_DVB,
1305 },
1306 [CX88_BOARD_WINFAST_DTV2000H_J] = {
1307 .name = "WinFast DTV2000 H rev. J",
1308 .tuner_type = TUNER_PHILIPS_FMD1216ME_MK3,
1309 .radio_type = UNSET,
1310 .tuner_addr = ADDR_UNSET,
1311 .radio_addr = ADDR_UNSET,
1312 .tda9887_conf = TDA9887_PRESENT,
1313 .input = {{
1314 .type = CX88_VMUX_TELEVISION,
1315 .vmux = 0,
1316 .gpio0 = 0x00017300,
1317 .gpio1 = 0x00008207,
1318 .gpio2 = 0x00000000,
1319 .gpio3 = 0x02000000,
1320 },{
1321 .type = CX88_VMUX_TELEVISION,
1322 .vmux = 0,
1323 .gpio0 = 0x00018300,
1324 .gpio1 = 0x0000f207,
1325 .gpio2 = 0x00017304,
1326 .gpio3 = 0x02000000,
1327 },{
1328 .type = CX88_VMUX_COMPOSITE1,
1329 .vmux = 1,
1330 .gpio0 = 0x00018301,
1331 .gpio1 = 0x0000f207,
1332 .gpio2 = 0x00017304,
1333 .gpio3 = 0x02000000,
1334 },{
1335 .type = CX88_VMUX_SVIDEO,
1336 .vmux = 2,
1337 .gpio0 = 0x00018301,
1338 .gpio1 = 0x0000f207,
1339 .gpio2 = 0x00017304,
1340 .gpio3 = 0x02000000,
1341 }},
1342 .radio = {
1343 .type = CX88_RADIO,
1344 .gpio0 = 0x00015702,
1345 .gpio1 = 0x0000f207,
1346 .gpio2 = 0x00015702,
1347 .gpio3 = 0x02000000,
1348 },
1349 .mpeg = CX88_MPEG_DVB,
1350 },
1351 [CX88_BOARD_GENIATECH_DVBS] = {
1352 .name = "Geniatech DVB-S",
1353 .tuner_type = TUNER_ABSENT,
1354 .radio_type = UNSET,
1355 .tuner_addr = ADDR_UNSET,
1356 .radio_addr = ADDR_UNSET,
1357 .input = {{
1358 .type = CX88_VMUX_DVB,
1359 .vmux = 0,
1360 },{
1361 .type = CX88_VMUX_COMPOSITE1,
1362 .vmux = 1,
1363 }},
1364 .mpeg = CX88_MPEG_DVB,
1365 },
1366 [CX88_BOARD_HAUPPAUGE_HVR3000] = {
1367 .name = "Hauppauge WinTV-HVR3000 TriMode Analog/DVB-S/DVB-T",
1368 .tuner_type = TUNER_PHILIPS_FMD1216ME_MK3,
1369 .radio_type = UNSET,
1370 .tuner_addr = ADDR_UNSET,
1371 .radio_addr = ADDR_UNSET,
1372 .tda9887_conf = TDA9887_PRESENT,
1373 .audio_chip = V4L2_IDENT_WM8775,
1374 .input = {{
1375 .type = CX88_VMUX_TELEVISION,
1376 .vmux = 0,
1377 .gpio0 = 0x84bf,
1378 /* 1: TV Audio / FM Mono */
1379 .audioroute = 1,
1380 },{
1381 .type = CX88_VMUX_COMPOSITE1,
1382 .vmux = 1,
1383 .gpio0 = 0x84bf,
1384 /* 2: Line-In */
1385 .audioroute = 2,
1386 },{
1387 .type = CX88_VMUX_SVIDEO,
1388 .vmux = 2,
1389 .gpio0 = 0x84bf,
1390 /* 2: Line-In */
1391 .audioroute = 2,
1392 }},
1393 .radio = {
1394 .type = CX88_RADIO,
1395 .gpio0 = 0x84bf,
1396 /* 4: FM Stereo (untested) */
1397 .audioroute = 8,
1398 },
1399 .mpeg = CX88_MPEG_DVB,
1400 .num_frontends = 2,
1401 },
1402 [CX88_BOARD_NORWOOD_MICRO] = {
1403 .name = "Norwood Micro TV Tuner",
1404 .tuner_type = TUNER_TNF_5335MF,
1405 .radio_type = UNSET,
1406 .tuner_addr = ADDR_UNSET,
1407 .radio_addr = ADDR_UNSET,
1408 .input = {{
1409 .type = CX88_VMUX_TELEVISION,
1410 .vmux = 0,
1411 .gpio0 = 0x0709,
1412 },{
1413 .type = CX88_VMUX_COMPOSITE1,
1414 .vmux = 1,
1415 .gpio0 = 0x070b,
1416 },{
1417 .type = CX88_VMUX_SVIDEO,
1418 .vmux = 2,
1419 .gpio0 = 0x070b,
1420 }},
1421 },
1422 [CX88_BOARD_TE_DTV_250_OEM_SWANN] = {
1423 .name = "Shenzhen Tungsten Ages Tech TE-DTV-250 / Swann OEM",
1424 .tuner_type = TUNER_LG_PAL_NEW_TAPC,
1425 .radio_type = UNSET,
1426 .tuner_addr = ADDR_UNSET,
1427 .radio_addr = ADDR_UNSET,
1428 .input = {{
1429 .type = CX88_VMUX_TELEVISION,
1430 .vmux = 0,
1431 .gpio0 = 0x003fffff,
1432 .gpio1 = 0x00e00000,
1433 .gpio2 = 0x003fffff,
1434 .gpio3 = 0x02000000,
1435 },{
1436 .type = CX88_VMUX_COMPOSITE1,
1437 .vmux = 1,
1438 .gpio0 = 0x003fffff,
1439 .gpio1 = 0x00e00000,
1440 .gpio2 = 0x003fffff,
1441 .gpio3 = 0x02000000,
1442 },{
1443 .type = CX88_VMUX_SVIDEO,
1444 .vmux = 2,
1445 .gpio0 = 0x003fffff,
1446 .gpio1 = 0x00e00000,
1447 .gpio2 = 0x003fffff,
1448 .gpio3 = 0x02000000,
1449 }},
1450 },
1451 [CX88_BOARD_HAUPPAUGE_HVR1300] = {
1452 .name = "Hauppauge WinTV-HVR1300 DVB-T/Hybrid MPEG Encoder",
1453 .tuner_type = TUNER_PHILIPS_FMD1216ME_MK3,
1454 .radio_type = UNSET,
1455 .tuner_addr = ADDR_UNSET,
1456 .radio_addr = ADDR_UNSET,
1457 .tda9887_conf = TDA9887_PRESENT,
1458 .audio_chip = V4L2_IDENT_WM8775,
1459 /*
1460 * gpio0 as reported by Mike Crash <mike AT mikecrash.com>
1461 */
1462 .input = {{
1463 .type = CX88_VMUX_TELEVISION,
1464 .vmux = 0,
1465 .gpio0 = 0xef88,
1466 /* 1: TV Audio / FM Mono */
1467 .audioroute = 1,
1468 },{
1469 .type = CX88_VMUX_COMPOSITE1,
1470 .vmux = 1,
1471 .gpio0 = 0xef88,
1472 /* 2: Line-In */
1473 .audioroute = 2,
1474 },{
1475 .type = CX88_VMUX_SVIDEO,
1476 .vmux = 2,
1477 .gpio0 = 0xef88,
1478 /* 2: Line-In */
1479 .audioroute = 2,
1480 }},
1481 .mpeg = CX88_MPEG_DVB | CX88_MPEG_BLACKBIRD,
1482 .radio = {
1483 .type = CX88_RADIO,
1484 .gpio0 = 0xef88,
1485 /* 4: FM Stereo (untested) */
1486 .audioroute = 8,
1487 },
1488 },
1489 [CX88_BOARD_SAMSUNG_SMT_7020] = {
1490 .name = "Samsung SMT 7020 DVB-S",
1491 .tuner_type = TUNER_ABSENT,
1492 .radio_type = UNSET,
1493 .tuner_addr = ADDR_UNSET,
1494 .radio_addr = ADDR_UNSET,
1495 .input = { {
1496 .type = CX88_VMUX_DVB,
1497 .vmux = 0,
1498 } },
1499 .mpeg = CX88_MPEG_DVB,
1500 },
1501 [CX88_BOARD_ADSTECH_PTV_390] = {
1502 .name = "ADS Tech Instant Video PCI",
1503 .tuner_type = TUNER_ABSENT,
1504 .radio_type = UNSET,
1505 .tuner_addr = ADDR_UNSET,
1506 .radio_addr = ADDR_UNSET,
1507 .input = {{
1508 .type = CX88_VMUX_DEBUG,
1509 .vmux = 3,
1510 .gpio0 = 0x04ff,
1511 },{
1512 .type = CX88_VMUX_COMPOSITE1,
1513 .vmux = 1,
1514 .gpio0 = 0x07fa,
1515 },{
1516 .type = CX88_VMUX_SVIDEO,
1517 .vmux = 2,
1518 .gpio0 = 0x07fa,
1519 }},
1520 },
1521 [CX88_BOARD_PINNACLE_PCTV_HD_800i] = {
1522 .name = "Pinnacle PCTV HD 800i",
1523 .tuner_type = TUNER_XC5000,
1524 .radio_type = UNSET,
1525 .tuner_addr = ADDR_UNSET,
1526 .radio_addr = ADDR_UNSET,
1527 .input = {{
1528 .type = CX88_VMUX_TELEVISION,
1529 .vmux = 0,
1530 .gpio0 = 0x04fb,
1531 .gpio1 = 0x10ff,
1532 },{
1533 .type = CX88_VMUX_COMPOSITE1,
1534 .vmux = 1,
1535 .gpio0 = 0x04fb,
1536 .gpio1 = 0x10ef,
1537 .audioroute = 1,
1538 },{
1539 .type = CX88_VMUX_SVIDEO,
1540 .vmux = 2,
1541 .gpio0 = 0x04fb,
1542 .gpio1 = 0x10ef,
1543 .audioroute = 1,
1544 }},
1545 .mpeg = CX88_MPEG_DVB,
1546 },
1547 [CX88_BOARD_DVICO_FUSIONHDTV_5_PCI_NANO] = {
1548 .name = "DViCO FusionHDTV 5 PCI nano",
1549 /* xc3008 tuner, digital only for now */
1550 .tuner_type = TUNER_ABSENT,
1551 .radio_type = UNSET,
1552 .tuner_addr = ADDR_UNSET,
1553 .radio_addr = ADDR_UNSET,
1554 .input = {{
1555 .type = CX88_VMUX_TELEVISION,
1556 .vmux = 0,
1557 .gpio0 = 0x000027df, /* Unconfirmed */
1558 }, {
1559 .type = CX88_VMUX_COMPOSITE1,
1560 .vmux = 1,
1561 .gpio0 = 0x000027df, /* Unconfirmed */
1562 .audioroute = 1,
1563 }, {
1564 .type = CX88_VMUX_SVIDEO,
1565 .vmux = 2,
1566 .gpio0 = 0x000027df, /* Unconfirmed */
1567 .audioroute = 1,
1568 } },
1569 .mpeg = CX88_MPEG_DVB,
1570 },
1571 [CX88_BOARD_PINNACLE_HYBRID_PCTV] = {
1572 .name = "Pinnacle Hybrid PCTV",
1573 .tuner_type = TUNER_XC2028,
1574 .tuner_addr = 0x61,
1575 .radio_type = TUNER_XC2028,
1576 .radio_addr = 0x61,
1577 .input = { {
1578 .type = CX88_VMUX_TELEVISION,
1579 .vmux = 0,
1580 .gpio0 = 0x004ff,
1581 .gpio1 = 0x010ff,
1582 .gpio2 = 0x00001,
1583 }, {
1584 .type = CX88_VMUX_COMPOSITE1,
1585 .vmux = 1,
1586 .gpio0 = 0x004fb,
1587 .gpio1 = 0x010ef,
1588 .audioroute = 1,
1589 }, {
1590 .type = CX88_VMUX_SVIDEO,
1591 .vmux = 2,
1592 .gpio0 = 0x004fb,
1593 .gpio1 = 0x010ef,
1594 .audioroute = 1,
1595 } },
1596 .radio = {
1597 .type = CX88_RADIO,
1598 .gpio0 = 0x004ff,
1599 .gpio1 = 0x010ff,
1600 .gpio2 = 0x0ff,
1601 },
1602 .mpeg = CX88_MPEG_DVB,
1603 },
1604 /* Terry Wu <terrywu2009@gmail.com> */
1605 /* TV Audio : set GPIO 2, 18, 19 value to 0, 1, 0 */
1606 /* FM Audio : set GPIO 2, 18, 19 value to 0, 0, 0 */
1607 /* Line-in Audio : set GPIO 2, 18, 19 value to 0, 1, 1 */
1608 /* Mute Audio : set GPIO 2 value to 1 */
1609 [CX88_BOARD_WINFAST_TV2000_XP_GLOBAL] = {
1610 .name = "Leadtek TV2000 XP Global",
1611 .tuner_type = TUNER_XC2028,
1612 .tuner_addr = 0x61,
1613 .radio_type = TUNER_XC2028,
1614 .radio_addr = 0x61,
1615 .input = { {
1616 .type = CX88_VMUX_TELEVISION,
1617 .vmux = 0,
1618 .gpio0 = 0x0400, /* pin 2 = 0 */
1619 .gpio1 = 0x0000,
1620 .gpio2 = 0x0C04, /* pin 18 = 1, pin 19 = 0 */
1621 .gpio3 = 0x0000,
1622 }, {
1623 .type = CX88_VMUX_COMPOSITE1,
1624 .vmux = 1,
1625 .gpio0 = 0x0400, /* pin 2 = 0 */
1626 .gpio1 = 0x0000,
1627 .gpio2 = 0x0C0C, /* pin 18 = 1, pin 19 = 1 */
1628 .gpio3 = 0x0000,
1629 }, {
1630 .type = CX88_VMUX_SVIDEO,
1631 .vmux = 2,
1632 .gpio0 = 0x0400, /* pin 2 = 0 */
1633 .gpio1 = 0x0000,
1634 .gpio2 = 0x0C0C, /* pin 18 = 1, pin 19 = 1 */
1635 .gpio3 = 0x0000,
1636 } },
1637 .radio = {
1638 .type = CX88_RADIO,
1639 .gpio0 = 0x0400, /* pin 2 = 0 */
1640 .gpio1 = 0x0000,
1641 .gpio2 = 0x0C00, /* pin 18 = 0, pin 19 = 0 */
1642 .gpio3 = 0x0000,
1643 },
1644 },
1645 [CX88_BOARD_POWERCOLOR_REAL_ANGEL] = {
1646 .name = "PowerColor RA330", /* Long names may confuse LIRC. */
1647 .tuner_type = TUNER_XC2028,
1648 .tuner_addr = 0x61,
1649 .input = { {
1650 .type = CX88_VMUX_DEBUG,
1651 .vmux = 3, /* Due to the way the cx88 driver is written, */
1652 .gpio0 = 0x00ff, /* there is no way to deactivate audio pass- */
1653 .gpio1 = 0xf39d, /* through without this entry. Furthermore, if */
1654 .gpio3 = 0x0000, /* the TV mux entry is first, you get audio */
1655 }, { /* from the tuner on boot for a little while. */
1656 .type = CX88_VMUX_TELEVISION,
1657 .vmux = 0,
1658 .gpio0 = 0x00ff,
1659 .gpio1 = 0xf35d,
1660 .gpio3 = 0x0000,
1661 }, {
1662 .type = CX88_VMUX_COMPOSITE1,
1663 .vmux = 1,
1664 .gpio0 = 0x00ff,
1665 .gpio1 = 0xf37d,
1666 .gpio3 = 0x0000,
1667 }, {
1668 .type = CX88_VMUX_SVIDEO,
1669 .vmux = 2,
1670 .gpio0 = 0x000ff,
1671 .gpio1 = 0x0f37d,
1672 .gpio3 = 0x00000,
1673 } },
1674 .radio = {
1675 .type = CX88_RADIO,
1676 .gpio0 = 0x000ff,
1677 .gpio1 = 0x0f35d,
1678 .gpio3 = 0x00000,
1679 },
1680 },
1681 [CX88_BOARD_GENIATECH_X8000_MT] = {
1682 /* Also PowerColor Real Angel 330 and Geniatech X800 OEM */
1683 .name = "Geniatech X8000-MT DVBT",
1684 .tuner_type = TUNER_XC2028,
1685 .tuner_addr = 0x61,
1686 .input = { {
1687 .type = CX88_VMUX_TELEVISION,
1688 .vmux = 0,
1689 .gpio0 = 0x00000000,
1690 .gpio1 = 0x00e3e341,
1691 .gpio2 = 0x00000000,
1692 .gpio3 = 0x00000000,
1693 }, {
1694 .type = CX88_VMUX_COMPOSITE1,
1695 .vmux = 1,
1696 .gpio0 = 0x00000000,
1697 .gpio1 = 0x00e3e361,
1698 .gpio2 = 0x00000000,
1699 .gpio3 = 0x00000000,
1700 }, {
1701 .type = CX88_VMUX_SVIDEO,
1702 .vmux = 2,
1703 .gpio0 = 0x00000000,
1704 .gpio1 = 0x00e3e361,
1705 .gpio2 = 0x00000000,
1706 .gpio3 = 0x00000000,
1707 } },
1708 .radio = {
1709 .type = CX88_RADIO,
1710 .gpio0 = 0x00000000,
1711 .gpio1 = 0x00e3e341,
1712 .gpio2 = 0x00000000,
1713 .gpio3 = 0x00000000,
1714 },
1715 .mpeg = CX88_MPEG_DVB,
1716 },
1717 [CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_PRO] = {
1718 .name = "DViCO FusionHDTV DVB-T PRO",
1719 .tuner_type = TUNER_XC2028,
1720 .tuner_addr = 0x61,
1721 .radio_type = UNSET,
1722 .radio_addr = ADDR_UNSET,
1723 .input = { {
1724 .type = CX88_VMUX_COMPOSITE1,
1725 .vmux = 1,
1726 .gpio0 = 0x000067df,
1727 }, {
1728 .type = CX88_VMUX_SVIDEO,
1729 .vmux = 2,
1730 .gpio0 = 0x000067df,
1731 } },
1732 .mpeg = CX88_MPEG_DVB,
1733 },
1734 [CX88_BOARD_DVICO_FUSIONHDTV_7_GOLD] = {
1735 .name = "DViCO FusionHDTV 7 Gold",
1736 .tuner_type = TUNER_XC5000,
1737 .radio_type = UNSET,
1738 .tuner_addr = ADDR_UNSET,
1739 .radio_addr = ADDR_UNSET,
1740 .input = {{
1741 .type = CX88_VMUX_TELEVISION,
1742 .vmux = 0,
1743 .gpio0 = 0x10df,
1744 },{
1745 .type = CX88_VMUX_COMPOSITE1,
1746 .vmux = 1,
1747 .gpio0 = 0x16d9,
1748 },{
1749 .type = CX88_VMUX_SVIDEO,
1750 .vmux = 2,
1751 .gpio0 = 0x16d9,
1752 }},
1753 .mpeg = CX88_MPEG_DVB,
1754 },
1755 [CX88_BOARD_PROLINK_PV_8000GT] = {
1756 .name = "Prolink Pixelview MPEG 8000GT",
1757 .tuner_type = TUNER_XC2028,
1758 .tuner_addr = 0x61,
1759 .input = { {
1760 .type = CX88_VMUX_TELEVISION,
1761 .vmux = 0,
1762 .gpio0 = 0x0ff,
1763 .gpio2 = 0x0cfb,
1764 }, {
1765 .type = CX88_VMUX_COMPOSITE1,
1766 .vmux = 1,
1767 .gpio2 = 0x0cfb,
1768 }, {
1769 .type = CX88_VMUX_SVIDEO,
1770 .vmux = 2,
1771 .gpio2 = 0x0cfb,
1772 } },
1773 .radio = {
1774 .type = CX88_RADIO,
1775 .gpio2 = 0x0cfb,
1776 },
1777 },
1778 [CX88_BOARD_PROLINK_PV_GLOBAL_XTREME] = {
1779 .name = "Prolink Pixelview Global Extreme",
1780 .tuner_type = TUNER_XC2028,
1781 .tuner_addr = 0x61,
1782 .input = { {
1783 .type = CX88_VMUX_TELEVISION,
1784 .vmux = 0,
1785 .gpio0 = 0x04fb,
1786 .gpio1 = 0x04080,
1787 .gpio2 = 0x0cf7,
1788 }, {
1789 .type = CX88_VMUX_COMPOSITE1,
1790 .vmux = 1,
1791 .gpio0 = 0x04fb,
1792 .gpio1 = 0x04080,
1793 .gpio2 = 0x0cfb,
1794 }, {
1795 .type = CX88_VMUX_SVIDEO,
1796 .vmux = 2,
1797 .gpio0 = 0x04fb,
1798 .gpio1 = 0x04080,
1799 .gpio2 = 0x0cfb,
1800 } },
1801 .radio = {
1802 .type = CX88_RADIO,
1803 .gpio0 = 0x04ff,
1804 .gpio1 = 0x04080,
1805 .gpio2 = 0x0cf7,
1806 },
1807 },
1808 /* Both radio, analog and ATSC work with this board.
1809 However, for analog to work, s5h1409 gate should be open,
1810 otherwise, tuner-xc3028 won't be detected.
1811 A proper fix require using the newer i2c methods to add
1812 tuner-xc3028 without doing an i2c probe.
1813 */
1814 [CX88_BOARD_KWORLD_ATSC_120] = {
1815 .name = "Kworld PlusTV HD PCI 120 (ATSC 120)",
1816 .tuner_type = TUNER_XC2028,
1817 .radio_type = UNSET,
1818 .tuner_addr = ADDR_UNSET,
1819 .radio_addr = ADDR_UNSET,
1820 .input = { {
1821 .type = CX88_VMUX_TELEVISION,
1822 .vmux = 0,
1823 .gpio0 = 0x000000ff,
1824 .gpio1 = 0x0000f35d,
1825 .gpio2 = 0x00000000,
1826 }, {
1827 .type = CX88_VMUX_COMPOSITE1,
1828 .vmux = 1,
1829 .gpio0 = 0x000000ff,
1830 .gpio1 = 0x0000f37e,
1831 .gpio2 = 0x00000000,
1832 }, {
1833 .type = CX88_VMUX_SVIDEO,
1834 .vmux = 2,
1835 .gpio0 = 0x000000ff,
1836 .gpio1 = 0x0000f37e,
1837 .gpio2 = 0x00000000,
1838 } },
1839 .radio = {
1840 .type = CX88_RADIO,
1841 .gpio0 = 0x000000ff,
1842 .gpio1 = 0x0000f35d,
1843 .gpio2 = 0x00000000,
1844 },
1845 .mpeg = CX88_MPEG_DVB,
1846 },
1847 [CX88_BOARD_HAUPPAUGE_HVR4000] = {
1848 .name = "Hauppauge WinTV-HVR4000 DVB-S/S2/T/Hybrid",
1849 .tuner_type = TUNER_PHILIPS_FMD1216ME_MK3,
1850 .radio_type = UNSET,
1851 .tuner_addr = ADDR_UNSET,
1852 .radio_addr = ADDR_UNSET,
1853 .tda9887_conf = TDA9887_PRESENT,
1854 .audio_chip = V4L2_IDENT_WM8775,
1855 /*
1856 * GPIO0 (WINTV2000)
1857 *
1858 * Analogue SAT DVB-T
1859 * Antenna 0xc4bf 0xc4bb
1860 * Composite 0xc4bf 0xc4bb
1861 * S-Video 0xc4bf 0xc4bb
1862 * Composite1 0xc4ff 0xc4fb
1863 * S-Video1 0xc4ff 0xc4fb
1864 *
1865 * BIT VALUE FUNCTION GP{x}_IO
1866 * 0 1 I:?
1867 * 1 1 I:?
1868 * 2 1 O:MPEG PORT 0=DVB-T 1=DVB-S
1869 * 3 1 I:?
1870 * 4 1 I:?
1871 * 5 1 I:?
1872 * 6 0 O:INPUT SELECTOR 0=INTERNAL 1=EXPANSION
1873 * 7 1 O:DVB-T DEMOD RESET LOW
1874 *
1875 * BIT VALUE FUNCTION GP{x}_OE
1876 * 8 0 I
1877 * 9 0 I
1878 * a 1 O
1879 * b 0 I
1880 * c 0 I
1881 * d 0 I
1882 * e 1 O
1883 * f 1 O
1884 *
1885 * WM8775 ADC
1886 *
1887 * 1: TV Audio / FM Mono
1888 * 2: Line-In
1889 * 3: Line-In Expansion
1890 * 4: FM Stereo
1891 */
1892 .input = {{
1893 .type = CX88_VMUX_TELEVISION,
1894 .vmux = 0,
1895 .gpio0 = 0xc4bf,
1896 /* 1: TV Audio / FM Mono */
1897 .audioroute = 1,
1898 }, {
1899 .type = CX88_VMUX_COMPOSITE1,
1900 .vmux = 1,
1901 .gpio0 = 0xc4bf,
1902 /* 2: Line-In */
1903 .audioroute = 2,
1904 }, {
1905 .type = CX88_VMUX_SVIDEO,
1906 .vmux = 2,
1907 .gpio0 = 0xc4bf,
1908 /* 2: Line-In */
1909 .audioroute = 2,
1910 } },
1911 .radio = {
1912 .type = CX88_RADIO,
1913 .gpio0 = 0xc4bf,
1914 /* 4: FM Stereo */
1915 .audioroute = 8,
1916 },
1917 .mpeg = CX88_MPEG_DVB,
1918 .num_frontends = 2,
1919 },
1920 [CX88_BOARD_HAUPPAUGE_HVR4000LITE] = {
1921 .name = "Hauppauge WinTV-HVR4000(Lite) DVB-S/S2",
1922 .tuner_type = UNSET,
1923 .radio_type = UNSET,
1924 .tuner_addr = ADDR_UNSET,
1925 .radio_addr = ADDR_UNSET,
1926 .input = {{
1927 .type = CX88_VMUX_DVB,
1928 .vmux = 0,
1929 } },
1930 .mpeg = CX88_MPEG_DVB,
1931 },
1932 [CX88_BOARD_TEVII_S420] = {
1933 .name = "TeVii S420 DVB-S",
1934 .tuner_type = UNSET,
1935 .radio_type = UNSET,
1936 .tuner_addr = ADDR_UNSET,
1937 .radio_addr = ADDR_UNSET,
1938 .input = {{
1939 .type = CX88_VMUX_DVB,
1940 .vmux = 0,
1941 } },
1942 .mpeg = CX88_MPEG_DVB,
1943 },
1944 [CX88_BOARD_TEVII_S460] = {
1945 .name = "TeVii S460 DVB-S/S2",
1946 .tuner_type = UNSET,
1947 .radio_type = UNSET,
1948 .tuner_addr = ADDR_UNSET,
1949 .radio_addr = ADDR_UNSET,
1950 .input = {{
1951 .type = CX88_VMUX_DVB,
1952 .vmux = 0,
1953 } },
1954 .mpeg = CX88_MPEG_DVB,
1955 },
1956 [CX88_BOARD_TEVII_S464] = {
1957 .name = "TeVii S464 DVB-S/S2",
1958 .tuner_type = UNSET,
1959 .radio_type = UNSET,
1960 .tuner_addr = ADDR_UNSET,
1961 .radio_addr = ADDR_UNSET,
1962 .input = {{
1963 .type = CX88_VMUX_DVB,
1964 .vmux = 0,
1965 } },
1966 .mpeg = CX88_MPEG_DVB,
1967 },
1968 [CX88_BOARD_OMICOM_SS4_PCI] = {
1969 .name = "Omicom SS4 DVB-S/S2 PCI",
1970 .tuner_type = UNSET,
1971 .radio_type = UNSET,
1972 .tuner_addr = ADDR_UNSET,
1973 .radio_addr = ADDR_UNSET,
1974 .input = {{
1975 .type = CX88_VMUX_DVB,
1976 .vmux = 0,
1977 } },
1978 .mpeg = CX88_MPEG_DVB,
1979 },
1980 [CX88_BOARD_TBS_8910] = {
1981 .name = "TBS 8910 DVB-S",
1982 .tuner_type = UNSET,
1983 .radio_type = UNSET,
1984 .tuner_addr = ADDR_UNSET,
1985 .radio_addr = ADDR_UNSET,
1986 .input = {{
1987 .type = CX88_VMUX_DVB,
1988 .vmux = 0,
1989 } },
1990 .mpeg = CX88_MPEG_DVB,
1991 },
1992 [CX88_BOARD_TBS_8920] = {
1993 .name = "TBS 8920 DVB-S/S2",
1994 .tuner_type = TUNER_ABSENT,
1995 .radio_type = UNSET,
1996 .tuner_addr = ADDR_UNSET,
1997 .radio_addr = ADDR_UNSET,
1998 .input = {{
1999 .type = CX88_VMUX_DVB,
2000 .vmux = 0,
2001 .gpio0 = 0x8080,
2002 } },
2003 .mpeg = CX88_MPEG_DVB,
2004 },
2005 [CX88_BOARD_PROF_6200]…
Large files files are truncated, but you can click here to view the full file