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