blob: 180d3175ea5b9c0e81b0df4dd461db23a3d74c56 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001
2/*
3 * $Id: saa7134-cards.c,v 1.54 2005/03/07 12:01:51 kraxel Exp $
4 *
5 * device driver for philips saa7134 based TV cards
6 * card-specific stuff.
7 *
8 * (c) 2001-04 Gerd Knorr <kraxel@bytesex.org> [SuSE Labs]
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
14 *
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public License
21 * along with this program; if not, write to the Free Software
22 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
23 */
24
25#include <linux/init.h>
26#include <linux/module.h>
27
28#include "saa7134-reg.h"
29#include "saa7134.h"
30
31/* commly used strings */
32static char name_mute[] = "mute";
33static char name_radio[] = "Radio";
34static char name_tv[] = "Television";
35static char name_tv_mono[] = "TV (mono only)";
36static char name_comp1[] = "Composite1";
37static char name_comp2[] = "Composite2";
38static char name_comp3[] = "Composite3";
39static char name_comp4[] = "Composite4";
40static char name_svideo[] = "S-Video";
41
42/* ------------------------------------------------------------------ */
43/* board config info */
44
45struct saa7134_board saa7134_boards[] = {
46 [SAA7134_BOARD_UNKNOWN] = {
47 .name = "UNKNOWN/GENERIC",
48 .audio_clock = 0x00187de7,
49 .tuner_type = TUNER_ABSENT,
50 .inputs = {{
51 .name = "default",
52 .vmux = 0,
53 .amux = LINE1,
54 }},
55 },
56 [SAA7134_BOARD_PROTEUS_PRO] = {
57 /* /me */
58 .name = "Proteus Pro [philips reference design]",
59 .audio_clock = 0x00187de7,
60 .tuner_type = TUNER_PHILIPS_PAL,
61 .inputs = {{
62 .name = name_comp1,
63 .vmux = 0,
64 .amux = LINE1,
65 },{
66 .name = name_tv,
67 .vmux = 1,
68 .amux = TV,
69 .tv = 1,
70 },{
71 .name = name_tv_mono,
72 .vmux = 1,
73 .amux = LINE2,
74 .tv = 1,
75 }},
76 .radio = {
77 .name = name_radio,
78 .amux = LINE2,
79 },
80 },
81 [SAA7134_BOARD_FLYVIDEO3000] = {
82 /* "Marco d'Itri" <md@Linux.IT> */
83 .name = "LifeView FlyVIDEO3000",
84 .audio_clock = 0x00200000,
85 .tuner_type = TUNER_PHILIPS_PAL,
86 .gpiomask = 0xe000,
87 .inputs = {{
88 .name = name_tv,
89 .vmux = 1,
90 .amux = TV,
91 .gpio = 0x8000,
92 .tv = 1,
93 },{
94 .name = name_tv_mono,
95 .vmux = 1,
96 .amux = LINE2,
97 .gpio = 0x0000,
98 .tv = 1,
99 },{
100 .name = name_comp1,
101 .vmux = 0,
102 .amux = LINE2,
103 .gpio = 0x4000,
104 },{
105 .name = name_comp2,
106 .vmux = 3,
107 .amux = LINE2,
108 .gpio = 0x4000,
109 },{
110 .name = name_svideo,
111 .vmux = 8,
112 .amux = LINE2,
113 .gpio = 0x4000,
114 }},
115 .radio = {
116 .name = name_radio,
117 .amux = LINE2,
118 .gpio = 0x2000,
119 },
120 },
121 [SAA7134_BOARD_FLYVIDEO2000] = {
122 /* "TC Wan" <tcwan@cs.usm.my> */
123 .name = "LifeView FlyVIDEO2000",
124 .audio_clock = 0x00200000,
125 .tuner_type = TUNER_LG_PAL_NEW_TAPC,
126 .gpiomask = 0xe000,
127 .inputs = {{
128 .name = name_tv,
129 .vmux = 1,
130 .amux = LINE2,
131 .gpio = 0x0000,
132 .tv = 1,
133 },{
134 .name = name_comp1,
135 .vmux = 0,
136 .amux = LINE2,
137 .gpio = 0x4000,
138 },{
139 .name = name_comp2,
140 .vmux = 3,
141 .amux = LINE2,
142 .gpio = 0x4000,
143 },{
144 .name = name_svideo,
145 .vmux = 8,
146 .amux = LINE2,
147 .gpio = 0x4000,
148 }},
149 .radio = {
150 .name = name_radio,
151 .amux = LINE2,
152 .gpio = 0x2000,
153 },
154 .mute = {
155 .name = name_mute,
156 .amux = LINE2,
157 .gpio = 0x8000,
158 },
159 },
160 [SAA7134_BOARD_FLYTVPLATINUM_MINI] = {
161 /* "Arnaud Quette" <aquette@free.fr> */
162 .name = "LifeView FlyTV Platinum Mini",
163 .audio_clock = 0x00200000,
164 .tuner_type = TUNER_PHILIPS_TDA8290,
165 .inputs = {{
166 .name = name_tv,
167 .vmux = 1,
168 .amux = LINE2,
169 .tv = 1,
170 },{
171 .name = name_comp1,
172 .vmux = 0,
173 .amux = LINE2,
174 },{
175 .name = name_svideo,
176 .vmux = 8,
177 .amux = LINE2,
178 }},
179 },
180 [SAA7134_BOARD_FLYTVPLATINUM_FM] = {
181 /* LifeView FlyTV Platinum FM (LR214WF) */
182 /* "Peter Missel <peter.missel@onlinehome.de> */
183 .name = "LifeView FlyTV Platinum FM",
184 .audio_clock = 0x00200000,
185 .tuner_type = TUNER_PHILIPS_TDA8290,
186// .gpiomask = 0xe000,
187 .inputs = {{
188 .name = name_tv,
189 .vmux = 1,
190 .amux = TV,
191// .gpio = 0x0000,
192 .tv = 1,
193 },{
194/* .name = name_tv_mono,
195 .vmux = 1,
196 .amux = LINE2,
197 .gpio = 0x0000,
198 .tv = 1,
199 },{
200*/ .name = name_comp1, /* Composite signal on S-Video input */
201 .vmux = 0,
202 .amux = LINE2,
203// .gpio = 0x4000,
204 },{
205 .name = name_comp2, /* Composite input */
206 .vmux = 3,
207 .amux = LINE2,
208// .gpio = 0x4000,
209 },{
210 .name = name_svideo, /* S-Video signal on S-Video input */
211 .vmux = 8,
212 .amux = LINE2,
213// .gpio = 0x4000,
214 }},
215/* .radio = {
216 .name = name_radio,
217 .amux = LINE2,
218 .gpio = 0x2000,
219 },
220*/ },
221 [SAA7134_BOARD_EMPRESS] = {
222 /* "Gert Vervoort" <gert.vervoort@philips.com> */
223 .name = "EMPRESS",
224 .audio_clock = 0x00187de7,
225 .tuner_type = TUNER_PHILIPS_PAL,
226 .inputs = {{
227 .name = name_comp1,
228 .vmux = 0,
229 .amux = LINE1,
230 },{
231 .name = name_svideo,
232 .vmux = 8,
233 .amux = LINE1,
234 },{
235 .name = name_tv,
236 .vmux = 1,
237 .amux = LINE2,
238 .tv = 1,
239 }},
240 .radio = {
241 .name = name_radio,
242 .amux = LINE2,
243 },
244 .mpeg = SAA7134_MPEG_EMPRESS,
245 .video_out = CCIR656,
246 },
247 [SAA7134_BOARD_MONSTERTV] = {
248 /* "K.Ohta" <alpha292@bremen.or.jp> */
249 .name = "SKNet Monster TV",
250 .audio_clock = 0x00187de7,
251 .tuner_type = TUNER_PHILIPS_NTSC_M,
252 .inputs = {{
253 .name = name_tv,
254 .vmux = 1,
255 .amux = TV,
256 .tv = 1,
257 },{
258 .name = name_comp1,
259 .vmux = 0,
260 .amux = LINE1,
261 },{
262 .name = name_svideo,
263 .vmux = 8,
264 .amux = LINE1,
265 }},
266 .radio = {
267 .name = name_radio,
268 .amux = LINE2,
269 },
270 },
271 [SAA7134_BOARD_MD9717] = {
272 .name = "Tevion MD 9717",
273 .audio_clock = 0x00200000,
274 .tuner_type = TUNER_PHILIPS_PAL,
275 .inputs = {{
276 .name = name_tv,
277 .vmux = 1,
278 .amux = TV,
279 .tv = 1,
280 },{
281 /* workaround for problems with normal TV sound */
282 .name = name_tv_mono,
283 .vmux = 1,
284 .amux = LINE2,
285 .tv = 1,
286 },{
287 .name = name_comp1,
288 .vmux = 2,
289 .amux = LINE1,
290 },{
291 .name = name_comp2,
292 .vmux = 3,
293 .amux = LINE1,
294 },{
295 .name = name_svideo,
296 .vmux = 8,
297 .amux = LINE1,
298 }},
299 .radio = {
300 .name = name_radio,
301 .amux = LINE2,
302 },
303 },
304 [SAA7134_BOARD_TVSTATION_RDS] = {
305 /* Typhoon TV Tuner RDS: Art.Nr. 50694 */
306 .name = "KNC One TV-Station RDS / Typhoon TV Tuner RDS",
307 .audio_clock = 0x00200000,
308 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
309 .tda9887_conf = TDA9887_PRESENT,
310 .inputs = {{
311 .name = name_tv,
312 .vmux = 1,
313 .amux = TV,
314 .tv = 1,
315 },{
316 .name = name_tv_mono,
317 .vmux = 1,
318 .amux = LINE2,
319 .tv = 1,
320 },{
321
322 .name = name_svideo,
323 .vmux = 8,
324 .amux = LINE1,
325 },{
326 .name = name_comp1,
327 .vmux = 3,
328 .amux = LINE1,
329 },{
330
331 .name = "CVid over SVid",
332 .vmux = 0,
333 .amux = LINE1,
334 }},
335 .radio = {
336 .name = name_radio,
337 .amux = LINE2,
338 },
339 },
340 [SAA7134_BOARD_TVSTATION_DVR] = {
341 .name = "KNC One TV-Station DVR",
342 .audio_clock = 0x00200000,
343 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
344 .tda9887_conf = TDA9887_PRESENT,
345 .gpiomask = 0x820000,
346 .inputs = {{
347 .name = name_tv,
348 .vmux = 1,
349 .amux = LINE2,
350 .tv = 1,
351 .gpio = 0x20000,
352 },{
353 .name = name_svideo,
354 .vmux = 8,
355 .amux = LINE1,
356 .gpio = 0x20000,
357 },{
358 .name = name_comp1,
359 .vmux = 3,
360 .amux = LINE1,
361 .gpio = 0x20000,
362 }},
363 .radio = {
364 .name = name_radio,
365 .amux = LINE2,
366 .gpio = 0x20000,
367 },
368 .mpeg = SAA7134_MPEG_EMPRESS,
369 .video_out = CCIR656,
370 },
371 [SAA7134_BOARD_CINERGY400] = {
372 .name = "Terratec Cinergy 400 TV",
373 .audio_clock = 0x00200000,
374 .tuner_type = TUNER_PHILIPS_PAL,
375 .inputs = {{
376 .name = name_tv,
377 .vmux = 1,
378 .amux = TV,
379 .tv = 1,
380 },{
381 .name = name_comp1,
382 .vmux = 4,
383 .amux = LINE1,
384 },{
385 .name = name_svideo,
386 .vmux = 8,
387 .amux = LINE1,
388 },{
389 .name = name_comp2, // CVideo over SVideo Connector
390 .vmux = 0,
391 .amux = LINE1,
392 }}
393 },
394 [SAA7134_BOARD_MD5044] = {
395 .name = "Medion 5044",
396 .audio_clock = 0x00187de7, // was: 0x00200000,
397 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
398 .tda9887_conf = TDA9887_PRESENT,
399 .inputs = {{
400 .name = name_tv,
401 .vmux = 1,
402 .amux = TV,
403 .tv = 1,
404 },{
405 /* workaround for problems with normal TV sound */
406 .name = name_tv_mono,
407 .vmux = 1,
408 .amux = LINE2,
409 .tv = 1,
410 },{
411 .name = name_comp1,
412 .vmux = 0,
413 .amux = LINE2,
414 },{
415 .name = name_comp2,
416 .vmux = 3,
417 .amux = LINE2,
418 },{
419 .name = name_svideo,
420 .vmux = 8,
421 .amux = LINE2,
422 }},
423 .radio = {
424 .name = name_radio,
425 .amux = LINE2,
426 },
427 },
428 [SAA7134_BOARD_KWORLD] = {
429 .name = "Kworld/KuroutoShikou SAA7130-TVPCI",
430 .audio_clock = 0x00187de7,
431 .tuner_type = TUNER_PHILIPS_NTSC_M,
432 .inputs = {{
433 .name = name_svideo,
434 .vmux = 8,
435 .amux = LINE1,
436 },{
437 .name = name_comp1,
438 .vmux = 3,
439 .amux = LINE1,
440 },{
441 .name = name_tv,
442 .vmux = 1,
443 .amux = LINE2,
444 .tv = 1,
445 }},
446 },
447 [SAA7134_BOARD_CINERGY600] = {
448 .name = "Terratec Cinergy 600 TV",
449 .audio_clock = 0x00200000,
450 .tuner_type = TUNER_PHILIPS_PAL,
451 .tda9887_conf = TDA9887_PRESENT,
452 .inputs = {{
453 .name = name_tv,
454 .vmux = 1,
455 .amux = TV,
456 .tv = 1,
457 },{
458 .name = name_comp1,
459 .vmux = 4,
460 .amux = LINE1,
461 },{
462 .name = name_svideo,
463 .vmux = 8,
464 .amux = LINE1,
465 },{
466 .name = name_comp2, // CVideo over SVideo Connector
467 .vmux = 0,
468 .amux = LINE1,
469 }},
470 .radio = {
471 .name = name_radio,
472 .amux = LINE2,
473 },
474 },
475 [SAA7134_BOARD_MD7134] = {
476 .name = "Medion 7134",
477 //.audio_clock = 0x00200000,
478 .audio_clock = 0x00187de7,
479 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
480 .tda9887_conf = TDA9887_PRESENT,
481 .mpeg = SAA7134_MPEG_DVB,
482 .inputs = {{
483 .name = name_tv,
484 .vmux = 1,
485 .amux = TV,
486 .tv = 1,
487 },{
488 .name = name_comp1,
489 .vmux = 0,
490 .amux = LINE1,
491 },{
492 .name = name_svideo,
493 .vmux = 8,
494 .amux = LINE1,
495 }},
496 .radio = {
497 .name = name_radio,
498 .amux = LINE2,
499 },
500 },
501 [SAA7134_BOARD_TYPHOON_90031] = {
502 /* aka Typhoon "TV+Radio", Art.Nr 90031 */
503 /* Tom Zoerner <tomzo at users sourceforge net> */
504 .name = "Typhoon TV+Radio 90031",
505 .audio_clock = 0x00200000,
506 .tuner_type = TUNER_PHILIPS_PAL,
507 .tda9887_conf = TDA9887_PRESENT,
508 .inputs = {{
509 .name = name_tv,
510 .vmux = 1,
511 .amux = TV,
512 .tv = 1,
513 },{
514 .name = name_comp1,
515 .vmux = 3,
516 .amux = LINE1,
517 },{
518 .name = name_svideo,
519 .vmux = 8,
520 .amux = LINE1,
521 }},
522 .radio = {
523 .name = name_radio,
524 .amux = LINE2,
525 },
526 },
527 [SAA7134_BOARD_ELSA] = {
528 .name = "ELSA EX-VISION 300TV",
529 .audio_clock = 0x00187de7,
530 .tuner_type = TUNER_HITACHI_NTSC,
531 .inputs = {{
532 .name = name_svideo,
533 .vmux = 8,
534 .amux = LINE1,
535 },{
536 .name = name_comp1,
537 .vmux = 0,
538 .amux = LINE1,
539 },{
540 .name = name_tv,
541 .vmux = 4,
542 .amux = LINE2,
543 .tv = 1,
544 }},
545 },
546 [SAA7134_BOARD_ELSA_500TV] = {
547 .name = "ELSA EX-VISION 500TV",
548 .audio_clock = 0x00187de7,
549 .tuner_type = TUNER_HITACHI_NTSC,
550 .inputs = {{
551 .name = name_svideo,
552 .vmux = 7,
553 .amux = LINE1,
554 },{
555 .name = name_tv,
556 .vmux = 8,
557 .amux = TV,
558 .tv = 1,
559 },{
560 .name = name_tv_mono,
561 .vmux = 8,
562 .amux = LINE2,
563 .tv = 1,
564 }},
565 },
566 [SAA7134_BOARD_ASUSTeK_TVFM7134] = {
567 .name = "ASUS TV-FM 7134",
568 .audio_clock = 0x00187de7,
569 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
570 .tda9887_conf = TDA9887_PRESENT,
571 .inputs = {{
572 .name = name_tv,
573 .vmux = 1,
574 .amux = TV,
575 .tv = 1,
576 },{
577 .name = name_comp1,
578 .vmux = 4,
579 .amux = LINE2,
580 },{
581 .name = name_svideo,
582 .vmux = 6,
583 .amux = LINE2,
584 }},
585 .radio = {
586 .name = name_radio,
587 .amux = LINE1,
588 },
589 },
590 [SAA7135_BOARD_ASUSTeK_TVFM7135] = {
591 .name = "ASUS TV-FM 7135",
592 .audio_clock = 0x00187de7,
593 .tuner_type = TUNER_PHILIPS_TDA8290,
594 .gpiomask = 0x200000,
595 .inputs = {{
596 .name = name_tv,
597 .vmux = 1,
598 .amux = TV,
599 .gpio = 0x0000,
600 .tv = 1,
601 },{
602 .name = name_comp1,
603 .vmux = 4,
604 .amux = LINE2,
605 .gpio = 0x0000,
606 },{
607 .name = name_svideo,
608 .vmux = 6,
609 .amux = LINE2,
610 .gpio = 0x0000,
611 }},
612 .radio = {
613 .name = name_radio,
614 .amux = TV,
615 .gpio = 0x200000,
616 },
617 },
618 [SAA7134_BOARD_VA1000POWER] = {
619 .name = "AOPEN VA1000 POWER",
620 .audio_clock = 0x00187de7,
621 .tuner_type = TUNER_PHILIPS_NTSC,
622 .inputs = {{
623 .name = name_svideo,
624 .vmux = 8,
625 .amux = LINE1,
626 },{
627 .name = name_comp1,
628 .vmux = 3,
629 .amux = LINE1,
630 },{
631 .name = name_tv,
632 .vmux = 1,
633 .amux = LINE2,
634 .tv = 1,
635 }},
636 },
637 [SAA7134_BOARD_10MOONSTVMASTER] = {
638 /* "lilicheng" <llc@linuxfans.org> */
639 .name = "10MOONS PCI TV CAPTURE CARD",
640 .audio_clock = 0x00200000,
641 .tuner_type = TUNER_LG_PAL_NEW_TAPC,
642 .gpiomask = 0xe000,
643 .inputs = {{
644 .name = name_tv,
645 .vmux = 1,
646 .amux = LINE2,
647 .gpio = 0x0000,
648 .tv = 1,
649 },{
650 .name = name_comp1,
651 .vmux = 0,
652 .amux = LINE2,
653 .gpio = 0x4000,
654 },{
655 .name = name_comp2,
656 .vmux = 3,
657 .amux = LINE2,
658 .gpio = 0x4000,
659 },{
660 .name = name_svideo,
661 .vmux = 8,
662 .amux = LINE2,
663 .gpio = 0x4000,
664 }},
665 .radio = {
666 .name = name_radio,
667 .amux = LINE2,
668 .gpio = 0x2000,
669 },
670 .mute = {
671 .name = name_mute,
672 .amux = LINE2,
673 .gpio = 0x8000,
674 },
675 },
676 [SAA7134_BOARD_BMK_MPEX_NOTUNER] = {
677 /* "Andrew de Quincey" <adq@lidskialf.net> */
678 .name = "BMK MPEX No Tuner",
679 .audio_clock = 0x200000,
680 .tuner_type = TUNER_ABSENT,
681 .inputs = {{
682 .name = name_comp1,
683 .vmux = 4,
684 .amux = LINE1,
685 },{
686 .name = name_comp2,
687 .vmux = 3,
688 .amux = LINE1,
689 },{
690 .name = name_comp3,
691 .vmux = 0,
692 .amux = LINE1,
693 },{
694 .name = name_comp4,
695 .vmux = 1,
696 .amux = LINE1,
697 },{
698 .name = name_svideo,
699 .vmux = 8,
700 .amux = LINE1,
701 }},
702 .mpeg = SAA7134_MPEG_EMPRESS,
703 .video_out = CCIR656,
704 },
705 [SAA7134_BOARD_VIDEOMATE_TV] = {
706 .name = "Compro VideoMate TV",
707 .audio_clock = 0x00187de7,
708 .tuner_type = TUNER_PHILIPS_NTSC_M,
709 .inputs = {{
710 .name = name_svideo,
711 .vmux = 8,
712 .amux = LINE1,
713 },{
714 .name = name_comp1,
715 .vmux = 3,
716 .amux = LINE1,
717 },{
718 .name = name_tv,
719 .vmux = 1,
720 .amux = LINE2,
721 .tv = 1,
722 }},
723 },
724 [SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUS] = {
725 .name = "Compro VideoMate TV Gold+",
726 .audio_clock = 0x00187de7,
727 .tuner_type = TUNER_PHILIPS_NTSC_M,
728 .gpiomask = 0x800c0000,
729 .inputs = {{
730 .name = name_svideo,
731 .vmux = 8,
732 .amux = LINE1,
733 .gpio = 0x06c00012,
734 },{
735 .name = name_comp1,
736 .vmux = 3,
737 .amux = LINE1,
738 .gpio = 0x0ac20012,
739 },{
740 .name = name_tv,
741 .vmux = 1,
742 .amux = LINE2,
743 .gpio = 0x08c20012,
744 .tv = 1,
745 }},
746 },
747 [SAA7134_BOARD_CRONOS_PLUS] = {
748 /* gpio pins:
749 0 .. 3 BASE_ID
750 4 .. 7 PROTECT_ID
751 8 .. 11 USER_OUT
752 12 .. 13 USER_IN
753 14 .. 15 VIDIN_SEL */
754 .name = "Matrox CronosPlus",
755 .tuner_type = TUNER_ABSENT,
756 .gpiomask = 0xcf00,
757 .inputs = {{
758 .name = name_comp1,
759 .vmux = 0,
760 .gpio = 2 << 14,
761 },{
762 .name = name_comp2,
763 .vmux = 0,
764 .gpio = 1 << 14,
765 },{
766 .name = name_comp3,
767 .vmux = 0,
768 .gpio = 0 << 14,
769 },{
770 .name = name_comp4,
771 .vmux = 0,
772 .gpio = 3 << 14,
773 },{
774 .name = name_svideo,
775 .vmux = 8,
776 .gpio = 2 << 14,
777 }},
778 },
779 [SAA7134_BOARD_MD2819] = {
780 .name = "AverMedia M156 / Medion 2819",
781 .audio_clock = 0x00187de7,
782 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
783 .tda9887_conf = TDA9887_PRESENT,
784 .inputs = {{
785 .name = name_tv,
786 .vmux = 1,
787 .amux = TV,
788 .tv = 1,
789 },{
790 .name = name_comp1,
791 .vmux = 0,
792 .amux = LINE2,
793 },{
794 .name = name_comp2,
795 .vmux = 3,
796 .amux = LINE2,
797 },{
798 .name = name_svideo,
799 .vmux = 8,
800 .amux = LINE2,
801 }},
802 .radio = {
803 .name = name_radio,
804 .amux = LINE2,
805 },
806 },
807 [SAA7134_BOARD_BMK_MPEX_TUNER] = {
808 /* "Greg Wickham <greg.wickham@grangenet.net> */
809 .name = "BMK MPEX Tuner",
810 .audio_clock = 0x200000,
811 .tuner_type = TUNER_PHILIPS_PAL,
812 .inputs = {{
813 .name = name_comp1,
814 .vmux = 1,
815 .amux = LINE1,
816 },{
817 .name = name_svideo,
818 .vmux = 8,
819 .amux = LINE1,
820 },{
821 .name = name_tv,
822 .vmux = 3,
823 .amux = TV,
824 .tv = 1,
825 }},
826 .mpeg = SAA7134_MPEG_EMPRESS,
827 .video_out = CCIR656,
828 },
829 [SAA7134_BOARD_ASUSTEK_TVFM7133] = {
830 .name = "ASUS TV-FM 7133",
831 .audio_clock = 0x00187de7,
832 // probably wrong, the 7133 one is the NTSC version ...
833 // .tuner_type = TUNER_PHILIPS_FM1236_MK3
834 .tuner_type = TUNER_LG_NTSC_NEW_TAPC,
835 .tda9887_conf = TDA9887_PRESENT,
836 .inputs = {{
837 .name = name_tv,
838 .vmux = 1,
839 .amux = TV,
840 .tv = 1,
841 },{
842 .name = name_comp1,
843 .vmux = 4,
844 .amux = LINE2,
845 },{
846 .name = name_svideo,
847 .vmux = 6,
848 .amux = LINE2,
849 }},
850 .radio = {
851 .name = name_radio,
852 .amux = LINE1,
853 },
854 },
855 [SAA7134_BOARD_PINNACLE_PCTV_STEREO] = {
856 .name = "Pinnacle PCTV Stereo (saa7134)",
857 .audio_clock = 0x00187de7,
858 .tuner_type = TUNER_MT2032,
859 .tda9887_conf = TDA9887_PRESENT | TDA9887_INTERCARRIER,
860 .inputs = {{
861 .name = name_tv,
862 .vmux = 3,
863 .amux = TV,
864 .tv = 1,
865 },{
866 .name = name_comp1,
867 .vmux = 0,
868 .amux = LINE2,
869 },{
870 .name = name_comp2,
871 .vmux = 1,
872 .amux = LINE2,
873 },{
874 .name = name_svideo,
875 .vmux = 8,
876 .amux = LINE2,
877 }},
878 },
879 [SAA7134_BOARD_MANLI_MTV002] = {
880 /* Ognjen Nastic <ognjen@logosoft.ba> */
881 .name = "Manli MuchTV M-TV002",
882 .audio_clock = 0x00200000,
883 .tuner_type = TUNER_PHILIPS_PAL,
884 .inputs = {{
885 .name = name_svideo,
886 .vmux = 8,
887 .amux = LINE1,
888 },{
889 .name = name_comp1,
890 .vmux = 1,
891 .amux = LINE1,
892 },{
893 .name = name_tv,
894 .vmux = 3,
895 .amux = LINE2,
896 .tv = 1,
897 }},
898 .radio = {
899 .name = name_radio,
900 .amux = LINE2,
901 },
902 .mute = {
903 .name = name_mute,
904 .amux = LINE1,
905 },
906 },
907 [SAA7134_BOARD_MANLI_MTV001] = {
908 /* Ognjen Nastic <ognjen@logosoft.ba> UNTESTED */
909 .name = "Manli MuchTV M-TV001",
910 .audio_clock = 0x00200000,
911 .tuner_type = TUNER_PHILIPS_PAL,
912 .inputs = {{
913 .name = name_svideo,
914 .vmux = 8,
915 .amux = LINE1,
916 },{
917 .name = name_comp1,
918 .vmux = 1,
919 .amux = LINE1,
920 },{
921 .name = name_tv,
922 .vmux = 3,
923 .amux = LINE2,
924 .tv = 1,
925 }},
926 },
927 [SAA7134_BOARD_TG3000TV] = {
928 /* TransGear 3000TV */
929 .name = "Nagase Sangyo TransGear 3000TV",
930 .audio_clock = 0x00187de7,
931 .tuner_type = TUNER_PHILIPS_NTSC_M,
932 .inputs = {{
933 .name = name_tv,
934 .vmux = 1,
935 .amux = LINE2,
936 .tv = 1,
937 },{
938 .name = name_comp1,
939 .vmux = 3,
940 .amux = LINE2,
941 },{
942 .name = name_svideo,
943 .vmux = 8,
944 .amux = LINE2,
945 }},
946 },
947 [SAA7134_BOARD_ECS_TVP3XP] = {
948 .name = "Elitegroup ECS TVP3XP FM1216 Tuner Card(PAL-BG,FM) ",
949 .audio_clock = 0x187de7, // xtal 32.1 MHz
950 .tuner_type = TUNER_PHILIPS_PAL,
951 .inputs = {{
952 .name = name_tv,
953 .vmux = 1,
954 .amux = TV,
955 .tv = 1,
956 },{
957 .name = name_tv_mono,
958 .vmux = 1,
959 .amux = LINE2,
960 .tv = 1,
961 },{
962 .name = name_comp1,
963 .vmux = 3,
964 .amux = LINE1,
965 },{
966 .name = name_svideo,
967 .vmux = 8,
968 .amux = LINE1,
969 },{
970 .name = "CVid over SVid",
971 .vmux = 0,
972 .amux = LINE1,
973 }},
974 .radio = {
975 .name = name_radio,
976 .amux = LINE2,
977 },
978 },
979 [SAA7134_BOARD_ECS_TVP3XP_4CB5] = {
980 .name = "Elitegroup ECS TVP3XP FM1236 Tuner Card (NTSC,FM)",
981 .audio_clock = 0x187de7,
982 .tuner_type = TUNER_PHILIPS_NTSC,
983 .inputs = {{
984 .name = name_tv,
985 .vmux = 1,
986 .amux = TV,
987 .tv = 1,
988 },{
989 .name = name_tv_mono,
990 .vmux = 1,
991 .amux = LINE2,
992 .tv = 1,
993 },{
994 .name = name_comp1,
995 .vmux = 3,
996 .amux = LINE1,
997 },{
998 .name = name_svideo,
999 .vmux = 8,
1000 .amux = LINE1,
1001 },{
1002 .name = "CVid over SVid",
1003 .vmux = 0,
1004 .amux = LINE1,
1005 }},
1006 .radio = {
1007 .name = name_radio,
1008 .amux = LINE2,
1009 },
1010 },
1011 [SAA7134_BOARD_AVACSSMARTTV] = {
1012 /* Roman Pszonczenko <romka@kolos.math.uni.lodz.pl> */
1013 .name = "AVACS SmartTV",
1014 .audio_clock = 0x00187de7,
1015 .tuner_type = TUNER_PHILIPS_PAL,
1016 .inputs = {{
1017 .name = name_tv,
1018 .vmux = 1,
1019 .amux = TV,
1020 .tv = 1,
1021 },{
1022 .name = name_tv_mono,
1023 .vmux = 1,
1024 .amux = LINE2,
1025 .tv = 1,
1026 },{
1027 .name = name_comp1,
1028 .vmux = 0,
1029 .amux = LINE2,
1030 },{
1031 .name = name_comp2,
1032 .vmux = 3,
1033 .amux = LINE2,
1034 },{
1035 .name = name_svideo,
1036 .vmux = 8,
1037 .amux = LINE2,
1038 }},
1039 .radio = {
1040 .name = name_radio,
1041 .amux = LINE2,
1042 .gpio = 0x200000,
1043 },
1044 },
1045 [SAA7134_BOARD_AVERMEDIA_DVD_EZMAKER] = {
1046 /* Michael Smith <msmith@cbnco.com> */
1047 .name = "AVerMedia DVD EZMaker",
1048 .audio_clock = 0x00187de7,
1049 .tuner_type = TUNER_ABSENT,
1050 .inputs = {{
1051 .name = name_comp1,
1052 .vmux = 3,
1053 },{
1054 .name = name_svideo,
1055 .vmux = 8,
1056 }},
1057 },
1058 [SAA7134_BOARD_NOVAC_PRIMETV7133] = {
1059 /* toshii@netbsd.org */
1060 .name = "Noval Prime TV 7133",
1061 .audio_clock = 0x00200000,
1062 .tuner_type = TUNER_ALPS_TSBH1_NTSC,
1063 .inputs = {{
1064 .name = name_comp1,
1065 .vmux = 3,
1066 },{
1067 .name = name_tv,
1068 .vmux = 1,
1069 .amux = TV,
1070 .tv = 1,
1071 },{
1072 .name = name_svideo,
1073 .vmux = 8,
1074 }},
1075 },
1076 [SAA7134_BOARD_AVERMEDIA_STUDIO_305] = {
1077 .name = "AverMedia AverTV Studio 305",
1078 .audio_clock = 0x00187de7,
1079 .tuner_type = TUNER_PHILIPS_FM1256_IH3,
1080 .tda9887_conf = TDA9887_PRESENT,
1081 .gpiomask = 0x3,
1082 .inputs = {{
1083 .name = name_tv,
1084 .vmux = 1,
1085 .amux = LINE2,
1086 .tv = 1,
1087 },{
1088 .name = name_comp1,
1089 .vmux = 0,
1090 .amux = LINE2,
1091 },{
1092 .name = name_comp2,
1093 .vmux = 3,
1094 .amux = LINE2,
1095 },{
1096 .name = name_svideo,
1097 .vmux = 8,
1098 .amux = LINE2,
1099 }},
1100 .radio = {
1101 .name = name_radio,
1102 .amux = LINE2,
1103 },
1104 .mute = {
1105 .name = name_mute,
1106 .amux = LINE1,
1107 },
1108 },
1109 [SAA7133_BOARD_UPMOST_PURPLE_TV] = {
1110 .name = "UPMOST PURPLE TV",
1111 .audio_clock = 0x00187de7,
1112 .tuner_type = TUNER_PHILIPS_FM1236_MK3,
1113 .tda9887_conf = TDA9887_PRESENT,
1114 .inputs = {{
1115 .name = name_tv,
1116 .vmux = 7,
1117 .amux = TV,
1118 .tv = 1,
1119 },{
1120 .name = name_svideo,
1121 .vmux = 7,
1122 .amux = LINE1,
1123 }},
1124 },
1125 [SAA7134_BOARD_ITEMS_MTV005] = {
1126 /* Norman Jonas <normanjonas@arcor.de> */
1127 .name = "Items MuchTV Plus / IT-005",
1128 .audio_clock = 0x00187de7,
1129 .tuner_type = TUNER_PHILIPS_PAL,
1130 .inputs = {{
1131 .name = name_tv,
1132 .vmux = 3,
1133 .amux = TV,
1134 .tv = 1,
1135 },{
1136 .name = name_comp1,
1137 .vmux = 1,
1138 .amux = LINE1,
1139 },{
1140 .name = name_svideo,
1141 .vmux = 8,
1142 .amux = LINE1,
1143 }},
1144 .radio = {
1145 .name = name_radio,
1146 .amux = LINE2,
1147 },
1148 },
1149 [SAA7134_BOARD_CINERGY200] = {
1150 .name = "Terratec Cinergy 200 TV",
1151 .audio_clock = 0x00200000,
1152 .tuner_type = TUNER_PHILIPS_PAL,
1153 .inputs = {{
1154 .name = name_tv,
1155 .vmux = 1,
1156 .amux = LINE2,
1157 .tv = 1,
1158 },{
1159 .name = name_comp1,
1160 .vmux = 4,
1161 .amux = LINE1,
1162 },{
1163 .name = name_svideo,
1164 .vmux = 8,
1165 .amux = LINE1,
1166 },{
1167 .name = name_comp2, // CVideo over SVideo Connector
1168 .vmux = 0,
1169 .amux = LINE1,
1170 }},
1171 .mute = {
1172 .name = name_mute,
1173 .amux = LINE2,
1174 },
1175 },
1176 [SAA7134_BOARD_VIDEOMATE_TV_PVR] = {
1177 /* Alain St-Denis <alain@topaze.homeip.net> */
1178 .name = "Compro VideoMate TV PVR/FM",
1179 .audio_clock = 0x00187de7,
1180 .tuner_type = TUNER_PHILIPS_NTSC_M,
1181 .gpiomask = 0x808c0080,
1182 .inputs = {{
1183 .name = name_svideo,
1184 .vmux = 8,
1185 .amux = LINE1,
1186 .gpio = 0x00080,
1187 },{
1188 .name = name_comp1,
1189 .vmux = 3,
1190 .amux = LINE1,
1191 .gpio = 0x00080,
1192 },{
1193 .name = name_tv,
1194 .vmux = 1,
1195 .amux = LINE2_LEFT,
1196 .tv = 1,
1197 .gpio = 0x00080,
1198 }},
1199 .radio = {
1200 .name = name_radio,
1201 .amux = LINE2,
1202 .gpio = 0x80000,
1203 },
1204 .mute = {
1205 .name = name_mute,
1206 .amux = LINE2,
1207 .gpio = 0x40000,
1208 },
1209 },
1210 [SAA7134_BOARD_SABRENT_SBTTVFM] = {
1211 /* Michael Rodriguez-Torrent <mrtorrent@asu.edu> */
1212 .name = "Sabrent SBT-TVFM (saa7130)",
1213 .audio_clock = 0x00187de7,
1214 .tuner_type = TUNER_PHILIPS_NTSC_M,
1215 .inputs = {{
1216 .name = name_comp1,
1217 .vmux = 1,
1218 .amux = LINE2,
1219 },{
1220 .name = name_tv,
1221 .vmux = 3,
1222 .amux = LINE2,
1223 .tv = 1,
1224 },{
1225 .name = name_svideo,
1226 .vmux = 8,
1227 .amux = LINE2,
1228 }},
1229 .radio = {
1230 .name = name_radio,
1231 .amux = LINE2,
1232 },
1233 },
1234 [SAA7134_BOARD_ZOLID_XPERT_TV7134] = {
1235 /* Helge Jensen <helge.jensen@slog.dk> */
1236 .name = ":Zolid Xpert TV7134",
1237 .audio_clock = 0x00187de7,
1238 .tuner_type = TUNER_PHILIPS_NTSC,
1239 .inputs = {{
1240 .name = name_svideo,
1241 .vmux = 8,
1242 .amux = LINE1,
1243 },{
1244 .name = name_comp1,
1245 .vmux = 3,
1246 .amux = LINE1,
1247 },{
1248 .name = name_tv,
1249 .vmux = 1,
1250 .amux = LINE2,
1251 .tv = 1,
1252 }},
1253 },
1254 [SAA7134_BOARD_EMPIRE_PCI_TV_RADIO_LE] = {
1255 /* "Matteo Az" <matte.az@nospam.libero.it> ;-) */
1256 .name = "Empire PCI TV-Radio LE",
1257 .audio_clock = 0x00187de7,
1258 .tuner_type = TUNER_PHILIPS_PAL,
1259 .gpiomask = 0x4000,
1260 .inputs = {{
1261 .name = name_tv_mono,
1262 .vmux = 1,
1263 .amux = LINE2,
1264 .gpio = 0x8000,
1265 .tv = 1,
1266 },{
1267 .name = name_comp1,
1268 .vmux = 3,
1269 .amux = LINE1,
1270 .gpio = 0x8000,
1271 },{
1272 .name = name_svideo,
1273 .vmux = 6,
1274 .amux = LINE1,
1275 .gpio = 0x8000,
1276 }},
1277 .radio = {
1278 .name = name_radio,
1279 .amux = LINE1,
1280 .gpio = 0x8000,
1281 },
1282 .mute = {
1283 .name = name_mute,
1284 .amux = TV,
1285 .gpio =0x8000,
1286 }
1287 },
1288 [SAA7134_BOARD_AVERMEDIA_307] = {
1289 /*
1290 Nickolay V. Shmyrev <nshmyrev@yandex.ru>
1291 Lots of thanks to Andrey Zolotarev <zolotarev_andrey@mail.ru>
1292 */
1293 .name = "Avermedia AVerTV Studio 307",
1294 .audio_clock = 0x00187de7,
1295 .tuner_type = TUNER_PHILIPS_FM1256_IH3,
1296 .tda9887_conf = TDA9887_PRESENT,
1297 .gpiomask = 0x03,
1298 .inputs = {{
1299 .name = name_tv,
1300 .vmux = 1,
1301 .amux = TV,
1302 .tv = 1,
1303 .gpio = 0x00,
1304 },{
1305 .name = name_comp1,
1306 .vmux = 0,
1307 .amux = LINE2,
1308 .gpio = 0x00,
1309 },{
1310 .name = name_comp2,
1311 .vmux = 3,
1312 .amux = LINE2,
1313 .gpio = 0x00,
1314 },{
1315 .name = name_svideo,
1316 .vmux = 8,
1317 .amux = LINE2,
1318 .gpio = 0x00,
1319 }},
1320 .radio = {
1321 .name = name_radio,
1322 .amux = LINE1,
1323 .gpio = 0x01,
1324 },
1325 },
1326 [SAA7134_BOARD_AVERMEDIA_CARDBUS] = {
1327 /* Jon Westgate <oryn@oryn.fsck.tv> */
1328 .name = "AVerMedia Cardbus TV/Radio",
1329 .audio_clock = 0x00200000,
1330 .tuner_type = TUNER_PHILIPS_PAL,
1331 .inputs = {{
1332 .name = name_tv,
1333 .vmux = 1,
1334 .amux = LINE2,
1335 .tv = 1,
1336 },{
1337 .name = name_comp1,
1338 .vmux = 3,
1339 .amux = LINE2,
1340 },{
1341 .name = name_svideo,
1342 .vmux = 8,
1343 .amux = LINE2,
1344 }},
1345 .radio = {
1346 .name = name_radio,
1347 .amux = LINE1,
1348 },
1349 },
1350 [SAA7134_BOARD_CINERGY400_CARDBUS] = {
1351 .name = "Terratec Cinergy 400 mobile",
1352 .audio_clock = 0x187de7,
1353 .tuner_type = TUNER_ALPS_TSBE5_PAL,
1354 .tda9887_conf = TDA9887_PRESENT,
1355 .inputs = {{
1356 .name = name_tv,
1357 .vmux = 1,
1358 .amux = TV,
1359 .tv = 1,
1360 },{
1361 .name = name_tv_mono,
1362 .vmux = 1,
1363 .amux = LINE2,
1364 .tv = 1,
1365 },{
1366 .name = name_comp1,
1367 .vmux = 3,
1368 .amux = LINE1,
1369 },{
1370 .name = name_svideo,
1371 .vmux = 8,
1372 .amux = LINE1,
1373 }},
1374 },
1375 [SAA7134_BOARD_CINERGY600_MK3] = {
1376 .name = "Terratec Cinergy 600 TV MK3",
1377 .audio_clock = 0x00200000,
1378 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
1379 .tda9887_conf = TDA9887_PRESENT,
1380 .inputs = {{
1381 .name = name_tv,
1382 .vmux = 1,
1383 .amux = TV,
1384 .tv = 1,
1385 },{
1386 .name = name_comp1,
1387 .vmux = 4,
1388 .amux = LINE1,
1389 },{
1390 .name = name_svideo,
1391 .vmux = 8,
1392 .amux = LINE1,
1393 },{
1394 .name = name_comp2, // CVideo over SVideo Connector
1395 .vmux = 0,
1396 .amux = LINE1,
1397 }},
1398 .radio = {
1399 .name = name_radio,
1400 .amux = LINE2,
1401 },
1402 },
1403 [SAA7134_BOARD_VIDEOMATE_GOLD_PLUS] = {
1404 /* Dylan Walkden <dylan_walkden@hotmail.com> */
1405 .name = "Compro VideoMate Gold+ Pal",
1406 .audio_clock = 0x00187de7,
1407 .tuner_type = TUNER_PHILIPS_PAL,
1408 .gpiomask = 0x1ce780,
1409 .inputs = {{
1410 .name = name_svideo,
1411 .vmux = 0, // CVideo over SVideo Connector - ok?
1412 .amux = LINE1,
1413 .gpio = 0x008080,
1414 },{
1415 .name = name_comp1,
1416 .vmux = 3,
1417 .amux = LINE1,
1418 .gpio = 0x008080,
1419 },{
1420 .name = name_tv,
1421 .vmux = 1,
1422 .amux = TV,
1423 .tv = 1,
1424 .gpio = 0x008080,
1425 }},
1426 .radio = {
1427 .name = name_radio,
1428 .amux = LINE2,
1429 .gpio = 0x80000,
1430 },
1431 .mute = {
1432 .name = name_mute,
1433 .amux = LINE2,
1434 .gpio = 0x0c8000,
1435 },
1436 },
1437 [SAA7134_BOARD_PINNACLE_300I_DVBT_PAL] = {
1438 .name = "Pinnacle PCTV 300i DVB-T + PAL",
1439 .audio_clock = 0x00187de7,
1440 .tuner_type = TUNER_MT2032,
1441 .tda9887_conf = TDA9887_PRESENT | TDA9887_INTERCARRIER,
1442 .mpeg = SAA7134_MPEG_DVB,
1443 .inputs = {{
1444 .name = name_tv,
1445 .vmux = 3,
1446 .amux = TV,
1447 .tv = 1,
1448 },{
1449 .name = name_comp1,
1450 .vmux = 0,
1451 .amux = LINE2,
1452 },{
1453 .name = name_comp2,
1454 .vmux = 1,
1455 .amux = LINE2,
1456 },{
1457 .name = name_svideo,
1458 .vmux = 8,
1459 .amux = LINE2,
1460 }},
1461 },
1462 [SAA7134_BOARD_PROVIDEO_PV952] = {
1463 /* andreas.kretschmer@web.de */
1464 .name = "ProVideo PV952",
1465 .audio_clock = 0x00187de7,
1466 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
1467 .tda9887_conf = TDA9887_PRESENT,
1468 .inputs = {{
1469 .name = name_comp1,
1470 .vmux = 0,
1471 .amux = LINE1,
1472 },{
1473 .name = name_tv,
1474 .vmux = 1,
1475 .amux = TV,
1476 .tv = 1,
1477 },{
1478 .name = name_tv_mono,
1479 .vmux = 1,
1480 .amux = LINE2,
1481 .tv = 1,
1482 }},
1483 .radio = {
1484 .name = name_radio,
1485 .amux = LINE2,
1486 },
1487 },
1488 [SAA7134_BOARD_AVERMEDIA_305] = {
1489 /* much like the "studio" version but without radio
1490 * and another tuner (sirspiritus@yandex.ru) */
1491 .name = "AverMedia AverTV/305",
1492 .audio_clock = 0x00187de7,
1493 .tuner_type = TUNER_PHILIPS_FQ1216ME,
1494 .tda9887_conf = TDA9887_PRESENT,
1495 .gpiomask = 0x3,
1496 .inputs = {{
1497 .name = name_tv,
1498 .vmux = 1,
1499 .amux = LINE2,
1500 .tv = 1,
1501 },{
1502 .name = name_comp1,
1503 .vmux = 0,
1504 .amux = LINE2,
1505 },{
1506 .name = name_comp2,
1507 .vmux = 3,
1508 .amux = LINE2,
1509 },{
1510 .name = name_svideo,
1511 .vmux = 8,
1512 .amux = LINE2,
1513 }},
1514 .mute = {
1515 .name = name_mute,
1516 .amux = LINE1,
1517 },
1518 },
1519 [SAA7134_BOARD_FLYDVBTDUO] = {
1520 /* LifeView FlyDVB-T DUO */
1521 /* "Nico Sabbi <nsabbi@tiscali.it> */
1522 .name = "LifeView FlyDVB-T DUO",
1523 .audio_clock = 0x00200000,
1524 .tuner_type = TUNER_PHILIPS_TDA8290,
1525// .gpiomask = 0xe000,
1526 .inputs = {{
1527 .name = name_tv,
1528 .vmux = 1,
1529 .amux = TV,
1530// .gpio = 0x0000,
1531 .tv = 1,
1532 },{
1533 .name = name_comp1, /* Composite signal on S-Video input */
1534 .vmux = 0,
1535 .amux = LINE2,
1536// .gpio = 0x4000,
1537 },{
1538 .name = name_comp2, /* Composite input */
1539 .vmux = 3,
1540 .amux = LINE2,
1541// .gpio = 0x4000,
1542 },{
1543 .name = name_svideo, /* S-Video signal on S-Video input */
1544 .vmux = 8,
1545 .amux = LINE2,
1546// .gpio = 0x4000,
1547 }},
1548 },
1549};
1550const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards);
1551
1552/* ------------------------------------------------------------------ */
1553/* PCI ids + subsystem IDs */
1554
1555struct pci_device_id saa7134_pci_tbl[] = {
1556 {
1557 .vendor = PCI_VENDOR_ID_PHILIPS,
1558 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1559 .subvendor = PCI_VENDOR_ID_PHILIPS,
1560 .subdevice = 0x2001,
1561 .driver_data = SAA7134_BOARD_PROTEUS_PRO,
1562 },{
1563 .vendor = PCI_VENDOR_ID_PHILIPS,
1564 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
1565 .subvendor = PCI_VENDOR_ID_PHILIPS,
1566 .subdevice = 0x2001,
1567 .driver_data = SAA7134_BOARD_PROTEUS_PRO,
1568 },{
1569 .vendor = PCI_VENDOR_ID_PHILIPS,
1570 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1571 .subvendor = PCI_VENDOR_ID_PHILIPS,
1572 .subdevice = 0x6752,
1573 .driver_data = SAA7134_BOARD_EMPRESS,
1574 },{
1575 .vendor = PCI_VENDOR_ID_PHILIPS,
1576 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1577 .subvendor = 0x1131,
1578 .subdevice = 0x4e85,
1579 .driver_data = SAA7134_BOARD_MONSTERTV,
1580 },{
1581 .vendor = PCI_VENDOR_ID_PHILIPS,
1582 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1583 .subvendor = 0x153B,
1584 .subdevice = 0x1142,
1585 .driver_data = SAA7134_BOARD_CINERGY400,
1586 },{
1587 .vendor = PCI_VENDOR_ID_PHILIPS,
1588 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1589 .subvendor = 0x153B,
1590 .subdevice = 0x1143,
1591 .driver_data = SAA7134_BOARD_CINERGY600,
1592 },{
1593 .vendor = PCI_VENDOR_ID_PHILIPS,
1594 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1595 .subvendor = 0x153B,
1596 .subdevice = 0x1158,
1597 .driver_data = SAA7134_BOARD_CINERGY600_MK3,
1598 },{
1599 .vendor = PCI_VENDOR_ID_PHILIPS,
1600 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
1601 .subvendor = 0x153b,
1602 .subdevice = 0x1162,
1603 .driver_data = SAA7134_BOARD_CINERGY400_CARDBUS,
1604 },{
1605 .vendor = PCI_VENDOR_ID_PHILIPS,
1606 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1607 .subvendor = 0x5168,
1608 .subdevice = 0x0138,
1609 .driver_data = SAA7134_BOARD_FLYVIDEO3000,
1610 },{
1611 .vendor = PCI_VENDOR_ID_PHILIPS,
1612 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1613 .subvendor = 0x4e42, //"Typhoon PCI Capture TV Card" Art.No. 50673
1614 .subdevice = 0x0138,
1615 .driver_data = SAA7134_BOARD_FLYVIDEO3000,
1616 },{
1617 .vendor = PCI_VENDOR_ID_PHILIPS,
1618 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1619 .subvendor = 0x5168,
1620 .subdevice = 0x0138,
1621 .driver_data = SAA7134_BOARD_FLYVIDEO2000,
1622 },{
1623 .vendor = PCI_VENDOR_ID_PHILIPS,
1624 .device = PCI_DEVICE_ID_PHILIPS_SAA7135,
1625 .subvendor = 0x5168,
1626 .subdevice = 0x0212, /* minipci, LR212 */
1627 .driver_data = SAA7134_BOARD_FLYTVPLATINUM_MINI,
1628 },{
1629 .vendor = PCI_VENDOR_ID_PHILIPS,
1630 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
1631 .subvendor = 0x5168,
1632 .subdevice = 0x0214, /* Standard PCI, LR214WF */
1633 .driver_data = SAA7134_BOARD_FLYTVPLATINUM_FM,
1634 },{
1635 .vendor = PCI_VENDOR_ID_PHILIPS,
1636 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1637 .subvendor = 0x16be,
1638 .subdevice = 0x0003,
1639 .driver_data = SAA7134_BOARD_MD7134,
1640 },{
1641 .vendor = PCI_VENDOR_ID_PHILIPS,
1642 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1643 .subvendor = 0x1048,
1644 .subdevice = 0x226b,
1645 .driver_data = SAA7134_BOARD_ELSA,
1646 },{
1647 .vendor = PCI_VENDOR_ID_PHILIPS,
1648 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1649 .subvendor = 0x1048,
1650 .subdevice = 0x226b,
1651 .driver_data = SAA7134_BOARD_ELSA_500TV,
1652 },{
1653 .vendor = PCI_VENDOR_ID_PHILIPS,
1654 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1655 .subvendor = PCI_VENDOR_ID_ASUSTEK,
1656 .subdevice = 0x4842,
1657 .driver_data = SAA7134_BOARD_ASUSTeK_TVFM7134,
1658 },{
1659 .vendor = PCI_VENDOR_ID_PHILIPS,
1660 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
1661 .subvendor = PCI_VENDOR_ID_ASUSTEK,
1662 .subdevice = 0x4845,
1663 .driver_data = SAA7135_BOARD_ASUSTeK_TVFM7135,
1664 },{
1665 .vendor = PCI_VENDOR_ID_PHILIPS,
1666 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1667 .subvendor = PCI_VENDOR_ID_ASUSTEK,
1668 .subdevice = 0x4830,
1669 .driver_data = SAA7134_BOARD_ASUSTeK_TVFM7134,
1670 },{
1671 .vendor = PCI_VENDOR_ID_PHILIPS,
1672 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
1673 .subvendor = PCI_VENDOR_ID_ASUSTEK,
1674 .subdevice = 0x4843,
1675 .driver_data = SAA7134_BOARD_ASUSTEK_TVFM7133,
1676 },{
1677 .vendor = PCI_VENDOR_ID_PHILIPS,
1678 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1679 .subvendor = PCI_VENDOR_ID_ASUSTEK,
1680 .subdevice = 0x4840,
1681 .driver_data = SAA7134_BOARD_ASUSTeK_TVFM7134,
1682 },{
1683 .vendor = PCI_VENDOR_ID_PHILIPS,
1684 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1685 .subvendor = PCI_VENDOR_ID_PHILIPS,
1686 .subdevice = 0xfe01,
1687 .driver_data = SAA7134_BOARD_TVSTATION_RDS,
1688 },{
1689 .vendor = PCI_VENDOR_ID_PHILIPS,
1690 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1691 .subvendor = 0x1894,
1692 .subdevice = 0xfe01,
1693 .driver_data = SAA7134_BOARD_TVSTATION_RDS,
1694 },{
1695 .vendor = PCI_VENDOR_ID_PHILIPS,
1696 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1697 .subvendor = 0x1894,
1698 .subdevice = 0xa006,
1699 .driver_data = SAA7134_BOARD_TVSTATION_DVR,
1700 },{
1701 .vendor = PCI_VENDOR_ID_PHILIPS,
1702 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1703 .subvendor = 0x1131,
1704 .subdevice = 0x7133,
1705 .driver_data = SAA7134_BOARD_VA1000POWER,
1706 },{
1707 .vendor = PCI_VENDOR_ID_PHILIPS,
1708 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1709 .subvendor = PCI_VENDOR_ID_PHILIPS,
1710 .subdevice = 0x2001,
1711 .driver_data = SAA7134_BOARD_10MOONSTVMASTER,
1712 },{
1713 .vendor = PCI_VENDOR_ID_PHILIPS,
1714 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
1715 .subvendor = 0x185b,
1716 .subdevice = 0xc100,
1717 .driver_data = SAA7134_BOARD_VIDEOMATE_TV,
1718 },{
1719 .vendor = PCI_VENDOR_ID_PHILIPS,
1720 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
1721 .subvendor = 0x185b,
1722 .subdevice = 0xc100,
1723 .driver_data = SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUS,
1724 },{
1725 .vendor = PCI_VENDOR_ID_PHILIPS,
1726 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1727 .subvendor = PCI_VENDOR_ID_MATROX,
1728 .subdevice = 0x48d0,
1729 .driver_data = SAA7134_BOARD_CRONOS_PLUS,
1730 },{
1731 .vendor = PCI_VENDOR_ID_PHILIPS,
1732 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1733 .subvendor = 0x1461, /* Avermedia Technologies Inc */
1734 .subdevice = 0xa70b,
1735 .driver_data = SAA7134_BOARD_MD2819,
1736 },{
1737 .vendor = PCI_VENDOR_ID_PHILIPS,
1738 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1739 .subvendor = 0x1461, /* Avermedia Technologies Inc */
1740 .subdevice = 0x2115,
1741 .driver_data = SAA7134_BOARD_AVERMEDIA_STUDIO_305,
1742 },{
1743 .vendor = PCI_VENDOR_ID_PHILIPS,
1744 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1745 .subvendor = 0x1461, /* Avermedia Technologies Inc */
1746 .subdevice = 0x2108,
1747 .driver_data = SAA7134_BOARD_AVERMEDIA_305,
1748 },{
1749 .vendor = PCI_VENDOR_ID_PHILIPS,
1750 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1751 .subvendor = 0x1461, /* Avermedia Technologies Inc */
1752 .subdevice = 0x10ff,
1753 .driver_data = SAA7134_BOARD_AVERMEDIA_DVD_EZMAKER,
1754 },{
1755 /* AVerMedia CardBus */
1756 .vendor = PCI_VENDOR_ID_PHILIPS,
1757 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1758 .subvendor = 0x1461, /* Avermedia Technologies Inc */
1759 .subdevice = 0xd6ee,
1760 .driver_data = SAA7134_BOARD_AVERMEDIA_CARDBUS,
1761 },{
1762 /* TransGear 3000TV */
1763 .vendor = PCI_VENDOR_ID_PHILIPS,
1764 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1765 .subvendor = 0x1461, /* Avermedia Technologies Inc */
1766 .subdevice = 0x050c,
1767 .driver_data = SAA7134_BOARD_TG3000TV,
1768 },{
1769 .vendor = PCI_VENDOR_ID_PHILIPS,
1770 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1771 .subvendor = 0x11bd,
1772 .subdevice = 0x002b,
1773 .driver_data = SAA7134_BOARD_PINNACLE_PCTV_STEREO,
1774 },{
1775 .vendor = PCI_VENDOR_ID_PHILIPS,
1776 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1777 .subvendor = 0x11bd,
1778 .subdevice = 0x002d,
1779 .driver_data = SAA7134_BOARD_PINNACLE_300I_DVBT_PAL,
1780 },{
1781 .vendor = PCI_VENDOR_ID_PHILIPS,
1782 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1783 .subvendor = 0x1019,
1784 .subdevice = 0x4cb4,
1785 .driver_data = SAA7134_BOARD_ECS_TVP3XP,
1786 },{
1787 .vendor = PCI_VENDOR_ID_PHILIPS,
1788 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
1789 .subvendor = 0x1019,
1790 .subdevice = 0x4cb5,
1791 .driver_data = SAA7134_BOARD_ECS_TVP3XP_4CB5,
1792 },{
1793 .vendor = PCI_VENDOR_ID_PHILIPS,
1794 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
1795 .subvendor = 0x12ab,
1796 .subdevice = 0x0800,
1797 .driver_data = SAA7133_BOARD_UPMOST_PURPLE_TV,
1798 },{
1799 .vendor = PCI_VENDOR_ID_PHILIPS,
1800 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1801 .subvendor = 0x153B,
1802 .subdevice = 0x1152,
1803 .driver_data = SAA7134_BOARD_CINERGY200,
1804 },{
1805 .vendor = PCI_VENDOR_ID_PHILIPS,
1806 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1807 .subvendor = 0x185b,
1808 .subdevice = 0xc100,
1809 .driver_data = SAA7134_BOARD_VIDEOMATE_TV_PVR,
1810 },{
1811 .vendor = PCI_VENDOR_ID_PHILIPS,
1812 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1813 .subvendor = 0x1131,
1814 .subdevice = 0,
1815 .driver_data = SAA7134_BOARD_SABRENT_SBTTVFM,
1816 },{
1817 .vendor = PCI_VENDOR_ID_PHILIPS,
1818 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1819 .subvendor = 0x1461, /* Avermedia Technologies Inc */
1820 .subdevice = 0x9715,
1821 .driver_data = SAA7134_BOARD_AVERMEDIA_307,
1822 },{
1823 .vendor = PCI_VENDOR_ID_PHILIPS,
1824 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1825 .subvendor = 0x185b,
1826 .subdevice = 0xc200,
1827 .driver_data = SAA7134_BOARD_VIDEOMATE_GOLD_PLUS,
1828 },{
1829 .vendor = PCI_VENDOR_ID_PHILIPS,
1830 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1831 .subvendor = 0x1540,
1832 .subdevice = 0x9524,
1833 .driver_data = SAA7134_BOARD_PROVIDEO_PV952,
1834
1835 },{
1836 .vendor = PCI_VENDOR_ID_PHILIPS,
1837 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
1838 .subvendor = 0x5168,
1839 .subdevice = 0x0306,
1840 .driver_data = SAA7134_BOARD_FLYDVBTDUO,
1841
1842 },{
1843 /* --- boards without eeprom + subsystem ID --- */
1844 .vendor = PCI_VENDOR_ID_PHILIPS,
1845 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1846 .subvendor = PCI_VENDOR_ID_PHILIPS,
1847 .subdevice = 0,
1848 .driver_data = SAA7134_BOARD_NOAUTO,
1849 },{
1850 .vendor = PCI_VENDOR_ID_PHILIPS,
1851 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1852 .subvendor = PCI_VENDOR_ID_PHILIPS,
1853 .subdevice = 0,
1854 .driver_data = SAA7134_BOARD_NOAUTO,
1855 },{
1856
1857 /* --- default catch --- */
1858 .vendor = PCI_VENDOR_ID_PHILIPS,
1859 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1860 .subvendor = PCI_ANY_ID,
1861 .subdevice = PCI_ANY_ID,
1862 .driver_data = SAA7134_BOARD_UNKNOWN,
1863 },{
1864 .vendor = PCI_VENDOR_ID_PHILIPS,
1865 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
1866 .subvendor = PCI_ANY_ID,
1867 .subdevice = PCI_ANY_ID,
1868 .driver_data = SAA7134_BOARD_UNKNOWN,
1869 },{
1870 .vendor = PCI_VENDOR_ID_PHILIPS,
1871 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1872 .subvendor = PCI_ANY_ID,
1873 .subdevice = PCI_ANY_ID,
1874 .driver_data = SAA7134_BOARD_UNKNOWN,
1875 },{
1876 .vendor = PCI_VENDOR_ID_PHILIPS,
1877 .device = PCI_DEVICE_ID_PHILIPS_SAA7135,
1878 .subvendor = PCI_ANY_ID,
1879 .subdevice = PCI_ANY_ID,
1880 .driver_data = SAA7134_BOARD_UNKNOWN,
1881 },{
1882 /* --- end of list --- */
1883 }
1884};
1885MODULE_DEVICE_TABLE(pci, saa7134_pci_tbl);
1886
1887/* ----------------------------------------------------------- */
1888/* flyvideo tweaks */
1889
1890#if 0
1891static struct {
1892 char *model;
1893 int tuner_type;
1894} fly_list[0x20] = {
1895 /* default catch ... */
1896 [ 0 ... 0x1f ] = {
1897 .model = "UNKNOWN",
1898 .tuner_type = TUNER_ABSENT,
1899 },
1900 /* ... the ones known so far */
1901 [ 0x05 ] = {
1902 .model = "PAL-BG",
1903 .tuner_type = TUNER_LG_PAL_NEW_TAPC,
1904 },
1905 [ 0x10 ] = {
1906 .model = "PAL-BG / PAL-DK",
1907 .tuner_type = TUNER_PHILIPS_PAL,
1908 },
1909 [ 0x15 ] = {
1910 .model = "NTSC",
1911 .tuner_type = TUNER_ABSENT /* FIXME */,
1912 },
1913};
1914#endif
1915
1916static void board_flyvideo(struct saa7134_dev *dev)
1917{
1918#if 0
1919 /* non-working attempt to detect the correct tuner type ... */
1920 u32 value;
1921 int index;
1922
1923 value = dev->gpio_value;
1924 index = (value & 0x1f00) >> 8;
1925 printk(KERN_INFO "%s: flyvideo: gpio is 0x%x [model=%s,tuner=%d]\n",
1926 dev->name, value, fly_list[index].model,
1927 fly_list[index].tuner_type);
1928 dev->tuner_type = fly_list[index].tuner_type;
1929#endif
1930 printk("%s: there are different flyvideo cards with different tuners\n"
1931 "%s: out there, you might have to use the tuner=<nr> insmod\n"
1932 "%s: option to override the default value.\n",
1933 dev->name, dev->name, dev->name);
1934}
1935
1936/* ----------------------------------------------------------- */
1937
1938int saa7134_board_init1(struct saa7134_dev *dev)
1939{
1940 // Always print gpio, often manufacturers encode tuner type and other info.
1941 saa_writel(SAA7134_GPIO_GPMODE0 >> 2, 0);
1942 dev->gpio_value = saa_readl(SAA7134_GPIO_GPSTATUS0 >> 2);
1943 printk(KERN_INFO "%s: board init: gpio is %x\n", dev->name, dev->gpio_value);
1944
1945 switch (dev->board) {
1946 case SAA7134_BOARD_FLYVIDEO2000:
1947 case SAA7134_BOARD_FLYVIDEO3000:
1948 dev->has_remote = 1;
1949 board_flyvideo(dev);
1950 break;
1951 case SAA7134_BOARD_CINERGY400:
1952 case SAA7134_BOARD_CINERGY600:
1953 case SAA7134_BOARD_CINERGY600_MK3:
1954 case SAA7134_BOARD_ECS_TVP3XP:
1955 case SAA7134_BOARD_ECS_TVP3XP_4CB5:
1956 case SAA7134_BOARD_MD2819:
1957 case SAA7134_BOARD_AVERMEDIA_STUDIO_305:
1958 case SAA7134_BOARD_AVERMEDIA_305:
1959 case SAA7134_BOARD_AVERMEDIA_307:
1960// case SAA7134_BOARD_SABRENT_SBTTVFM: /* not finished yet */
1961 case SAA7134_BOARD_VIDEOMATE_TV_PVR:
1962 dev->has_remote = 1;
1963 break;
1964 case SAA7134_BOARD_AVACSSMARTTV:
1965 dev->has_remote = 1;
1966 break;
1967 case SAA7134_BOARD_MD5044:
1968 printk("%s: seems there are two different versions of the MD5044\n"
1969 "%s: (with the same ID) out there. If sound doesn't work for\n"
1970 "%s: you try the audio_clock_override=0x200000 insmod option.\n",
1971 dev->name,dev->name,dev->name);
1972 break;
1973 case SAA7134_BOARD_CINERGY400_CARDBUS:
1974 /* power-up tuner chip */
1975 saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x00040000, 0x00040000);
1976 saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00040000, 0x00000000);
1977 msleep(1);
1978 break;
1979 }
1980 if (dev->has_remote)
1981 dev->irq2_mask |= (SAA7134_IRQ2_INTE_GPIO18 |
1982 SAA7134_IRQ2_INTE_GPIO18A |
1983 SAA7134_IRQ2_INTE_GPIO16 );
1984 return 0;
1985}
1986
1987/* stuff which needs working i2c */
1988int saa7134_board_init2(struct saa7134_dev *dev)
1989{
1990 unsigned char buf;
1991 int board;
1992
1993 switch (dev->board) {
1994 case SAA7134_BOARD_BMK_MPEX_NOTUNER:
1995 case SAA7134_BOARD_BMK_MPEX_TUNER:
1996 dev->i2c_client.addr = 0x60;
1997 board = (i2c_master_recv(&dev->i2c_client,&buf,0) < 0)
1998 ? SAA7134_BOARD_BMK_MPEX_NOTUNER
1999 : SAA7134_BOARD_BMK_MPEX_TUNER;
2000 if (board == dev->board)
2001 break;
2002 dev->board = board;
2003 printk("%s: board type fixup: %s\n", dev->name,
2004 saa7134_boards[dev->board].name);
2005 dev->tuner_type = saa7134_boards[dev->board].tuner_type;
2006 if (TUNER_ABSENT != dev->tuner_type)
2007 saa7134_i2c_call_clients(dev,TUNER_SET_TYPE,&dev->tuner_type);
2008 break;
2009 }
2010 return 0;
2011}
2012
2013/* ----------------------------------------------------------- */
2014/*
2015 * Local variables:
2016 * c-basic-offset: 8
2017 * End:
2018 */