blob: 0c781e24c4466c94fff090c63cce868a7f51e13c [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001
2/*
Mauro Carvalho Chehabac19ecc2005-06-23 22:05:09 -07003 * $Id: saa7134-cards.c,v 1.58 2005/06/07 18:05:00 nsh Exp $
Linus Torvalds1da177e2005-04-16 15:20:36 -07004 *
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,
Mauro Carvalho Chehabac19ecc2005-06-23 22:05:09 -0700168 .amux = TV,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700169 .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,
Peter Missel6c9e7372005-05-01 08:59:05 -0700186 .gpiomask = 0x1E000, /* Set GP16 and unused 15,14,13 to Output */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700187 .inputs = {{
188 .name = name_tv,
189 .vmux = 1,
190 .amux = TV,
Peter Missel6c9e7372005-05-01 08:59:05 -0700191 .gpio = 0x10000, /* GP16=1 selects TV input */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700192 .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 }},
Peter Missel6c9e7372005-05-01 08:59:05 -0700215 .radio = {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700216 .name = name_radio,
Peter Missel6c9e7372005-05-01 08:59:05 -0700217 .amux = TV,
218 .gpio = 0x00000, /* GP16=0 selects FM radio antenna */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700219 },
Peter Missel6c9e7372005-05-01 08:59:05 -0700220 },
Linus Torvalds1da177e2005-04-16 15:20:36 -0700221 [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> */
Mauro Carvalho Chehabac19ecc2005-06-23 22:05:09 -0700881 .name = "Manli MuchTV M-TV002/Behold TV 403 FM",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700882 .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 },
Linus Torvalds1da177e2005-04-16 15:20:36 -0700902 },
903 [SAA7134_BOARD_MANLI_MTV001] = {
904 /* Ognjen Nastic <ognjen@logosoft.ba> UNTESTED */
Mauro Carvalho Chehabac19ecc2005-06-23 22:05:09 -0700905 .name = "Manli MuchTV M-TV001/Behold TV 401",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700906 .audio_clock = 0x00200000,
907 .tuner_type = TUNER_PHILIPS_PAL,
908 .inputs = {{
909 .name = name_svideo,
910 .vmux = 8,
911 .amux = LINE1,
912 },{
913 .name = name_comp1,
914 .vmux = 1,
915 .amux = LINE1,
916 },{
917 .name = name_tv,
918 .vmux = 3,
919 .amux = LINE2,
920 .tv = 1,
921 }},
Mauro Carvalho Chehabac19ecc2005-06-23 22:05:09 -0700922 .mute = {
923 .name = name_mute,
924 .amux = LINE1,
925 },
Linus Torvalds1da177e2005-04-16 15:20:36 -0700926 },
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,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001081 .inputs = {{
1082 .name = name_tv,
1083 .vmux = 1,
1084 .amux = LINE2,
1085 .tv = 1,
1086 },{
1087 .name = name_comp1,
1088 .vmux = 0,
1089 .amux = LINE2,
1090 },{
1091 .name = name_comp2,
1092 .vmux = 3,
1093 .amux = LINE2,
1094 },{
1095 .name = name_svideo,
1096 .vmux = 8,
1097 .amux = LINE2,
1098 }},
1099 .radio = {
1100 .name = name_radio,
1101 .amux = LINE2,
1102 },
1103 .mute = {
1104 .name = name_mute,
1105 .amux = LINE1,
1106 },
1107 },
1108 [SAA7133_BOARD_UPMOST_PURPLE_TV] = {
1109 .name = "UPMOST PURPLE TV",
1110 .audio_clock = 0x00187de7,
1111 .tuner_type = TUNER_PHILIPS_FM1236_MK3,
1112 .tda9887_conf = TDA9887_PRESENT,
1113 .inputs = {{
1114 .name = name_tv,
1115 .vmux = 7,
1116 .amux = TV,
1117 .tv = 1,
1118 },{
1119 .name = name_svideo,
1120 .vmux = 7,
1121 .amux = LINE1,
1122 }},
1123 },
1124 [SAA7134_BOARD_ITEMS_MTV005] = {
1125 /* Norman Jonas <normanjonas@arcor.de> */
1126 .name = "Items MuchTV Plus / IT-005",
1127 .audio_clock = 0x00187de7,
1128 .tuner_type = TUNER_PHILIPS_PAL,
1129 .inputs = {{
1130 .name = name_tv,
1131 .vmux = 3,
1132 .amux = TV,
1133 .tv = 1,
1134 },{
1135 .name = name_comp1,
1136 .vmux = 1,
1137 .amux = LINE1,
1138 },{
1139 .name = name_svideo,
1140 .vmux = 8,
1141 .amux = LINE1,
1142 }},
1143 .radio = {
1144 .name = name_radio,
1145 .amux = LINE2,
1146 },
1147 },
1148 [SAA7134_BOARD_CINERGY200] = {
1149 .name = "Terratec Cinergy 200 TV",
1150 .audio_clock = 0x00200000,
1151 .tuner_type = TUNER_PHILIPS_PAL,
1152 .inputs = {{
1153 .name = name_tv,
1154 .vmux = 1,
1155 .amux = LINE2,
1156 .tv = 1,
1157 },{
1158 .name = name_comp1,
1159 .vmux = 4,
1160 .amux = LINE1,
1161 },{
1162 .name = name_svideo,
1163 .vmux = 8,
1164 .amux = LINE1,
1165 },{
1166 .name = name_comp2, // CVideo over SVideo Connector
1167 .vmux = 0,
1168 .amux = LINE1,
1169 }},
1170 .mute = {
1171 .name = name_mute,
1172 .amux = LINE2,
1173 },
1174 },
1175 [SAA7134_BOARD_VIDEOMATE_TV_PVR] = {
1176 /* Alain St-Denis <alain@topaze.homeip.net> */
1177 .name = "Compro VideoMate TV PVR/FM",
1178 .audio_clock = 0x00187de7,
1179 .tuner_type = TUNER_PHILIPS_NTSC_M,
1180 .gpiomask = 0x808c0080,
1181 .inputs = {{
1182 .name = name_svideo,
1183 .vmux = 8,
1184 .amux = LINE1,
1185 .gpio = 0x00080,
1186 },{
1187 .name = name_comp1,
1188 .vmux = 3,
1189 .amux = LINE1,
1190 .gpio = 0x00080,
1191 },{
1192 .name = name_tv,
1193 .vmux = 1,
1194 .amux = LINE2_LEFT,
1195 .tv = 1,
1196 .gpio = 0x00080,
1197 }},
1198 .radio = {
1199 .name = name_radio,
1200 .amux = LINE2,
1201 .gpio = 0x80000,
1202 },
1203 .mute = {
1204 .name = name_mute,
1205 .amux = LINE2,
1206 .gpio = 0x40000,
1207 },
1208 },
1209 [SAA7134_BOARD_SABRENT_SBTTVFM] = {
1210 /* Michael Rodriguez-Torrent <mrtorrent@asu.edu> */
1211 .name = "Sabrent SBT-TVFM (saa7130)",
1212 .audio_clock = 0x00187de7,
1213 .tuner_type = TUNER_PHILIPS_NTSC_M,
1214 .inputs = {{
1215 .name = name_comp1,
1216 .vmux = 1,
1217 .amux = LINE2,
1218 },{
1219 .name = name_tv,
1220 .vmux = 3,
1221 .amux = LINE2,
1222 .tv = 1,
1223 },{
1224 .name = name_svideo,
1225 .vmux = 8,
1226 .amux = LINE2,
1227 }},
1228 .radio = {
1229 .name = name_radio,
1230 .amux = LINE2,
1231 },
1232 },
1233 [SAA7134_BOARD_ZOLID_XPERT_TV7134] = {
1234 /* Helge Jensen <helge.jensen@slog.dk> */
1235 .name = ":Zolid Xpert TV7134",
1236 .audio_clock = 0x00187de7,
1237 .tuner_type = TUNER_PHILIPS_NTSC,
1238 .inputs = {{
1239 .name = name_svideo,
1240 .vmux = 8,
1241 .amux = LINE1,
1242 },{
1243 .name = name_comp1,
1244 .vmux = 3,
1245 .amux = LINE1,
1246 },{
1247 .name = name_tv,
1248 .vmux = 1,
1249 .amux = LINE2,
1250 .tv = 1,
1251 }},
1252 },
1253 [SAA7134_BOARD_EMPIRE_PCI_TV_RADIO_LE] = {
1254 /* "Matteo Az" <matte.az@nospam.libero.it> ;-) */
1255 .name = "Empire PCI TV-Radio LE",
1256 .audio_clock = 0x00187de7,
1257 .tuner_type = TUNER_PHILIPS_PAL,
1258 .gpiomask = 0x4000,
1259 .inputs = {{
1260 .name = name_tv_mono,
1261 .vmux = 1,
1262 .amux = LINE2,
1263 .gpio = 0x8000,
1264 .tv = 1,
1265 },{
1266 .name = name_comp1,
1267 .vmux = 3,
1268 .amux = LINE1,
1269 .gpio = 0x8000,
1270 },{
1271 .name = name_svideo,
1272 .vmux = 6,
1273 .amux = LINE1,
1274 .gpio = 0x8000,
1275 }},
1276 .radio = {
1277 .name = name_radio,
1278 .amux = LINE1,
1279 .gpio = 0x8000,
1280 },
1281 .mute = {
1282 .name = name_mute,
1283 .amux = TV,
1284 .gpio =0x8000,
1285 }
1286 },
Mauro Carvalho Chehabac19ecc2005-06-23 22:05:09 -07001287 [SAA7134_BOARD_AVERMEDIA_STUDIO_307] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07001288 /*
1289 Nickolay V. Shmyrev <nshmyrev@yandex.ru>
1290 Lots of thanks to Andrey Zolotarev <zolotarev_andrey@mail.ru>
1291 */
1292 .name = "Avermedia AVerTV Studio 307",
1293 .audio_clock = 0x00187de7,
1294 .tuner_type = TUNER_PHILIPS_FM1256_IH3,
1295 .tda9887_conf = TDA9887_PRESENT,
1296 .gpiomask = 0x03,
1297 .inputs = {{
1298 .name = name_tv,
1299 .vmux = 1,
1300 .amux = TV,
1301 .tv = 1,
1302 .gpio = 0x00,
1303 },{
1304 .name = name_comp1,
1305 .vmux = 0,
1306 .amux = LINE2,
1307 .gpio = 0x00,
1308 },{
1309 .name = name_comp2,
1310 .vmux = 3,
1311 .amux = LINE2,
1312 .gpio = 0x00,
1313 },{
1314 .name = name_svideo,
1315 .vmux = 8,
1316 .amux = LINE2,
1317 .gpio = 0x00,
1318 }},
1319 .radio = {
1320 .name = name_radio,
1321 .amux = LINE1,
1322 .gpio = 0x01,
1323 },
1324 },
Mauro Carvalho Chehabac19ecc2005-06-23 22:05:09 -07001325 [SAA7134_BOARD_AVERMEDIA_GO_007_FM] = {
1326 .name = "Avermedia AVerTV GO 007 FM",
1327 .audio_clock = 0x00187de7,
1328 .tuner_type = TUNER_PHILIPS_TDA8290,
1329 .gpiomask = 0x00300003,
1330// .gpiomask = 0x8c240003,
1331 .inputs = {{
1332 .name = name_tv,
1333 .vmux = 1,
1334 .amux = TV,
1335 .tv = 1,
1336 .gpio = 0x01,
1337 },{
1338 .name = name_comp1,
1339 .vmux = 0,
1340 .amux = LINE2,
1341 .gpio = 0x02,
1342 },{
1343 .name = name_svideo,
1344 .vmux = 6,
1345 .amux = LINE2,
1346 .gpio = 0x02,
1347 }},
1348 .radio = {
1349 .name = name_radio,
1350 .amux = LINE1,
1351 .gpio = 0x00300001,
1352 },
1353 },
Linus Torvalds1da177e2005-04-16 15:20:36 -07001354 [SAA7134_BOARD_AVERMEDIA_CARDBUS] = {
1355 /* Jon Westgate <oryn@oryn.fsck.tv> */
1356 .name = "AVerMedia Cardbus TV/Radio",
1357 .audio_clock = 0x00200000,
1358 .tuner_type = TUNER_PHILIPS_PAL,
1359 .inputs = {{
1360 .name = name_tv,
1361 .vmux = 1,
1362 .amux = LINE2,
1363 .tv = 1,
1364 },{
1365 .name = name_comp1,
1366 .vmux = 3,
1367 .amux = LINE2,
1368 },{
1369 .name = name_svideo,
1370 .vmux = 8,
1371 .amux = LINE2,
1372 }},
1373 .radio = {
1374 .name = name_radio,
1375 .amux = LINE1,
1376 },
1377 },
1378 [SAA7134_BOARD_CINERGY400_CARDBUS] = {
1379 .name = "Terratec Cinergy 400 mobile",
1380 .audio_clock = 0x187de7,
1381 .tuner_type = TUNER_ALPS_TSBE5_PAL,
1382 .tda9887_conf = TDA9887_PRESENT,
1383 .inputs = {{
1384 .name = name_tv,
1385 .vmux = 1,
1386 .amux = TV,
1387 .tv = 1,
1388 },{
1389 .name = name_tv_mono,
1390 .vmux = 1,
1391 .amux = LINE2,
1392 .tv = 1,
1393 },{
1394 .name = name_comp1,
1395 .vmux = 3,
1396 .amux = LINE1,
1397 },{
1398 .name = name_svideo,
1399 .vmux = 8,
1400 .amux = LINE1,
1401 }},
1402 },
1403 [SAA7134_BOARD_CINERGY600_MK3] = {
1404 .name = "Terratec Cinergy 600 TV MK3",
1405 .audio_clock = 0x00200000,
1406 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
1407 .tda9887_conf = TDA9887_PRESENT,
1408 .inputs = {{
1409 .name = name_tv,
1410 .vmux = 1,
1411 .amux = TV,
1412 .tv = 1,
1413 },{
1414 .name = name_comp1,
1415 .vmux = 4,
1416 .amux = LINE1,
1417 },{
1418 .name = name_svideo,
1419 .vmux = 8,
1420 .amux = LINE1,
1421 },{
1422 .name = name_comp2, // CVideo over SVideo Connector
1423 .vmux = 0,
1424 .amux = LINE1,
1425 }},
1426 .radio = {
1427 .name = name_radio,
1428 .amux = LINE2,
1429 },
1430 },
1431 [SAA7134_BOARD_VIDEOMATE_GOLD_PLUS] = {
1432 /* Dylan Walkden <dylan_walkden@hotmail.com> */
1433 .name = "Compro VideoMate Gold+ Pal",
1434 .audio_clock = 0x00187de7,
1435 .tuner_type = TUNER_PHILIPS_PAL,
1436 .gpiomask = 0x1ce780,
1437 .inputs = {{
1438 .name = name_svideo,
1439 .vmux = 0, // CVideo over SVideo Connector - ok?
1440 .amux = LINE1,
1441 .gpio = 0x008080,
1442 },{
1443 .name = name_comp1,
1444 .vmux = 3,
1445 .amux = LINE1,
1446 .gpio = 0x008080,
1447 },{
1448 .name = name_tv,
1449 .vmux = 1,
1450 .amux = TV,
1451 .tv = 1,
1452 .gpio = 0x008080,
1453 }},
1454 .radio = {
1455 .name = name_radio,
1456 .amux = LINE2,
1457 .gpio = 0x80000,
1458 },
1459 .mute = {
1460 .name = name_mute,
1461 .amux = LINE2,
1462 .gpio = 0x0c8000,
1463 },
1464 },
1465 [SAA7134_BOARD_PINNACLE_300I_DVBT_PAL] = {
1466 .name = "Pinnacle PCTV 300i DVB-T + PAL",
1467 .audio_clock = 0x00187de7,
1468 .tuner_type = TUNER_MT2032,
1469 .tda9887_conf = TDA9887_PRESENT | TDA9887_INTERCARRIER,
1470 .mpeg = SAA7134_MPEG_DVB,
1471 .inputs = {{
1472 .name = name_tv,
1473 .vmux = 3,
1474 .amux = TV,
1475 .tv = 1,
1476 },{
1477 .name = name_comp1,
1478 .vmux = 0,
1479 .amux = LINE2,
1480 },{
1481 .name = name_comp2,
1482 .vmux = 1,
1483 .amux = LINE2,
1484 },{
1485 .name = name_svideo,
1486 .vmux = 8,
1487 .amux = LINE2,
1488 }},
1489 },
1490 [SAA7134_BOARD_PROVIDEO_PV952] = {
1491 /* andreas.kretschmer@web.de */
1492 .name = "ProVideo PV952",
1493 .audio_clock = 0x00187de7,
1494 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
1495 .tda9887_conf = TDA9887_PRESENT,
1496 .inputs = {{
1497 .name = name_comp1,
1498 .vmux = 0,
1499 .amux = LINE1,
1500 },{
1501 .name = name_tv,
1502 .vmux = 1,
1503 .amux = TV,
1504 .tv = 1,
1505 },{
1506 .name = name_tv_mono,
1507 .vmux = 1,
1508 .amux = LINE2,
1509 .tv = 1,
1510 }},
1511 .radio = {
1512 .name = name_radio,
1513 .amux = LINE2,
1514 },
1515 },
1516 [SAA7134_BOARD_AVERMEDIA_305] = {
1517 /* much like the "studio" version but without radio
1518 * and another tuner (sirspiritus@yandex.ru) */
1519 .name = "AverMedia AverTV/305",
1520 .audio_clock = 0x00187de7,
1521 .tuner_type = TUNER_PHILIPS_FQ1216ME,
1522 .tda9887_conf = TDA9887_PRESENT,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001523 .inputs = {{
1524 .name = name_tv,
1525 .vmux = 1,
1526 .amux = LINE2,
1527 .tv = 1,
1528 },{
1529 .name = name_comp1,
1530 .vmux = 0,
1531 .amux = LINE2,
1532 },{
1533 .name = name_comp2,
1534 .vmux = 3,
1535 .amux = LINE2,
1536 },{
1537 .name = name_svideo,
1538 .vmux = 8,
1539 .amux = LINE2,
1540 }},
1541 .mute = {
1542 .name = name_mute,
1543 .amux = LINE1,
1544 },
1545 },
1546 [SAA7134_BOARD_FLYDVBTDUO] = {
1547 /* LifeView FlyDVB-T DUO */
1548 /* "Nico Sabbi <nsabbi@tiscali.it> */
1549 .name = "LifeView FlyDVB-T DUO",
1550 .audio_clock = 0x00200000,
1551 .tuner_type = TUNER_PHILIPS_TDA8290,
1552// .gpiomask = 0xe000,
1553 .inputs = {{
1554 .name = name_tv,
1555 .vmux = 1,
1556 .amux = TV,
1557// .gpio = 0x0000,
1558 .tv = 1,
1559 },{
1560 .name = name_comp1, /* Composite signal on S-Video input */
1561 .vmux = 0,
1562 .amux = LINE2,
1563// .gpio = 0x4000,
1564 },{
1565 .name = name_comp2, /* Composite input */
1566 .vmux = 3,
1567 .amux = LINE2,
1568// .gpio = 0x4000,
1569 },{
1570 .name = name_svideo, /* S-Video signal on S-Video input */
1571 .vmux = 8,
1572 .amux = LINE2,
1573// .gpio = 0x4000,
1574 }},
1575 },
Mauro Carvalho Chehabac19ecc2005-06-23 22:05:09 -07001576 [SAA7134_BOARD_AVERMEDIA_307] = {
1577 /*
1578 Davydov Vladimir <vladimir@iqmedia.com>
1579 */
1580 .name = "Avermedia AVerTV 307",
1581 .audio_clock = 0x00187de7,
1582 .tuner_type = TUNER_PHILIPS_FQ1216ME,
1583 .tda9887_conf = TDA9887_PRESENT,
1584 .inputs = {{
1585 .name = name_tv,
1586 .vmux = 1,
1587 .amux = TV,
1588 .tv = 1,
1589 },{
1590 .name = name_comp1,
1591 .vmux = 0,
1592 .amux = LINE1,
1593 },{
1594 .name = name_comp2,
1595 .vmux = 3,
1596 .amux = LINE1,
1597 },{
1598 .name = name_svideo,
1599 .vmux = 8,
1600 .amux = LINE1,
1601 }},
1602 },
1603 [SAA7134_BOARD_ADS_INSTANT_TV] = {
1604 .name = "ADS Tech Instant TV (saa7135)",
1605 .audio_clock = 0x00187de7,
1606 .tuner_type = TUNER_PHILIPS_TDA8290,
1607 .inputs = {{
1608 .name = name_tv,
1609 .vmux = 1,
1610 .amux = TV,
1611 .tv = 1,
1612 },{
1613 .name = name_comp1,
1614 .vmux = 3,
1615 .amux = LINE2,
1616 },{
1617 .name = name_svideo,
1618 .vmux = 8,
1619 .amux = LINE2,
1620 }},
1621 },
1622 [SAA7134_BOARD_KWORLD_VSTREAM_XPERT] = {
1623 .name = "Kworld/Tevion V-Stream Xpert TV PVR7134",
1624 .audio_clock = 0x00187de7,
1625 .tuner_type = TUNER_PHILIPS_PAL_I,
1626 .gpiomask = 0x0700,
1627 .inputs = {{
1628 .name = name_tv,
1629 .vmux = 1,
1630 .amux = TV,
1631 .tv = 1,
1632 .gpio = 0x000,
1633 },{
1634 .name = name_comp1,
1635 .vmux = 3,
1636 .amux = LINE1,
1637 .gpio = 0x200, //gpio by DScaler
1638 },{
1639 .name = name_svideo,
1640 .vmux = 0,
1641 .amux = LINE1,
1642 .gpio = 0x200,
1643 }},
1644 .radio = {
1645 .name = name_radio,
1646 .amux = LINE1,
1647 .gpio = 0x100,
1648 },
1649 },
1650 };
1651
Linus Torvalds1da177e2005-04-16 15:20:36 -07001652const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards);
1653
1654/* ------------------------------------------------------------------ */
1655/* PCI ids + subsystem IDs */
1656
1657struct pci_device_id saa7134_pci_tbl[] = {
1658 {
1659 .vendor = PCI_VENDOR_ID_PHILIPS,
1660 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1661 .subvendor = PCI_VENDOR_ID_PHILIPS,
1662 .subdevice = 0x2001,
1663 .driver_data = SAA7134_BOARD_PROTEUS_PRO,
1664 },{
1665 .vendor = PCI_VENDOR_ID_PHILIPS,
1666 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
1667 .subvendor = PCI_VENDOR_ID_PHILIPS,
1668 .subdevice = 0x2001,
1669 .driver_data = SAA7134_BOARD_PROTEUS_PRO,
1670 },{
1671 .vendor = PCI_VENDOR_ID_PHILIPS,
1672 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1673 .subvendor = PCI_VENDOR_ID_PHILIPS,
1674 .subdevice = 0x6752,
1675 .driver_data = SAA7134_BOARD_EMPRESS,
1676 },{
1677 .vendor = PCI_VENDOR_ID_PHILIPS,
1678 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1679 .subvendor = 0x1131,
1680 .subdevice = 0x4e85,
1681 .driver_data = SAA7134_BOARD_MONSTERTV,
1682 },{
1683 .vendor = PCI_VENDOR_ID_PHILIPS,
1684 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1685 .subvendor = 0x153B,
1686 .subdevice = 0x1142,
1687 .driver_data = SAA7134_BOARD_CINERGY400,
1688 },{
1689 .vendor = PCI_VENDOR_ID_PHILIPS,
1690 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1691 .subvendor = 0x153B,
1692 .subdevice = 0x1143,
1693 .driver_data = SAA7134_BOARD_CINERGY600,
1694 },{
1695 .vendor = PCI_VENDOR_ID_PHILIPS,
1696 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1697 .subvendor = 0x153B,
1698 .subdevice = 0x1158,
1699 .driver_data = SAA7134_BOARD_CINERGY600_MK3,
1700 },{
1701 .vendor = PCI_VENDOR_ID_PHILIPS,
1702 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
1703 .subvendor = 0x153b,
1704 .subdevice = 0x1162,
1705 .driver_data = SAA7134_BOARD_CINERGY400_CARDBUS,
1706 },{
1707 .vendor = PCI_VENDOR_ID_PHILIPS,
1708 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1709 .subvendor = 0x5168,
1710 .subdevice = 0x0138,
1711 .driver_data = SAA7134_BOARD_FLYVIDEO3000,
1712 },{
1713 .vendor = PCI_VENDOR_ID_PHILIPS,
1714 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1715 .subvendor = 0x4e42, //"Typhoon PCI Capture TV Card" Art.No. 50673
1716 .subdevice = 0x0138,
1717 .driver_data = SAA7134_BOARD_FLYVIDEO3000,
1718 },{
1719 .vendor = PCI_VENDOR_ID_PHILIPS,
1720 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1721 .subvendor = 0x5168,
1722 .subdevice = 0x0138,
1723 .driver_data = SAA7134_BOARD_FLYVIDEO2000,
1724 },{
1725 .vendor = PCI_VENDOR_ID_PHILIPS,
1726 .device = PCI_DEVICE_ID_PHILIPS_SAA7135,
1727 .subvendor = 0x5168,
1728 .subdevice = 0x0212, /* minipci, LR212 */
1729 .driver_data = SAA7134_BOARD_FLYTVPLATINUM_MINI,
1730 },{
1731 .vendor = PCI_VENDOR_ID_PHILIPS,
1732 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
Peter Missel10e92062005-05-01 08:59:21 -07001733 .subvendor = 0x5168, /* Animation Technologies (LifeView) */
Linus Torvalds1da177e2005-04-16 15:20:36 -07001734 .subdevice = 0x0214, /* Standard PCI, LR214WF */
1735 .driver_data = SAA7134_BOARD_FLYTVPLATINUM_FM,
1736 },{
1737 .vendor = PCI_VENDOR_ID_PHILIPS,
Peter Missel10e92062005-05-01 08:59:21 -07001738 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
1739 .subvendor = 0x1489, /* KYE */
1740 .subdevice = 0x0214, /* Genius VideoWonder ProTV */
1741 .driver_data = SAA7134_BOARD_FLYTVPLATINUM_FM, /* is an LR214WF actually */
1742 },{
1743 .vendor = PCI_VENDOR_ID_PHILIPS,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001744 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1745 .subvendor = 0x16be,
1746 .subdevice = 0x0003,
1747 .driver_data = SAA7134_BOARD_MD7134,
1748 },{
1749 .vendor = PCI_VENDOR_ID_PHILIPS,
1750 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1751 .subvendor = 0x1048,
1752 .subdevice = 0x226b,
1753 .driver_data = SAA7134_BOARD_ELSA,
1754 },{
1755 .vendor = PCI_VENDOR_ID_PHILIPS,
1756 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1757 .subvendor = 0x1048,
1758 .subdevice = 0x226b,
1759 .driver_data = SAA7134_BOARD_ELSA_500TV,
1760 },{
1761 .vendor = PCI_VENDOR_ID_PHILIPS,
1762 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1763 .subvendor = PCI_VENDOR_ID_ASUSTEK,
1764 .subdevice = 0x4842,
1765 .driver_data = SAA7134_BOARD_ASUSTeK_TVFM7134,
1766 },{
1767 .vendor = PCI_VENDOR_ID_PHILIPS,
Mauro Carvalho Chehabac19ecc2005-06-23 22:05:09 -07001768 .device = PCI_DEVICE_ID_PHILIPS_SAA7135,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001769 .subvendor = PCI_VENDOR_ID_ASUSTEK,
1770 .subdevice = 0x4845,
1771 .driver_data = SAA7135_BOARD_ASUSTeK_TVFM7135,
1772 },{
1773 .vendor = PCI_VENDOR_ID_PHILIPS,
1774 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1775 .subvendor = PCI_VENDOR_ID_ASUSTEK,
1776 .subdevice = 0x4830,
1777 .driver_data = SAA7134_BOARD_ASUSTeK_TVFM7134,
1778 },{
1779 .vendor = PCI_VENDOR_ID_PHILIPS,
1780 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
1781 .subvendor = PCI_VENDOR_ID_ASUSTEK,
1782 .subdevice = 0x4843,
1783 .driver_data = SAA7134_BOARD_ASUSTEK_TVFM7133,
1784 },{
1785 .vendor = PCI_VENDOR_ID_PHILIPS,
1786 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1787 .subvendor = PCI_VENDOR_ID_ASUSTEK,
1788 .subdevice = 0x4840,
1789 .driver_data = SAA7134_BOARD_ASUSTeK_TVFM7134,
1790 },{
1791 .vendor = PCI_VENDOR_ID_PHILIPS,
1792 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1793 .subvendor = PCI_VENDOR_ID_PHILIPS,
1794 .subdevice = 0xfe01,
1795 .driver_data = SAA7134_BOARD_TVSTATION_RDS,
1796 },{
1797 .vendor = PCI_VENDOR_ID_PHILIPS,
1798 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1799 .subvendor = 0x1894,
1800 .subdevice = 0xfe01,
1801 .driver_data = SAA7134_BOARD_TVSTATION_RDS,
1802 },{
1803 .vendor = PCI_VENDOR_ID_PHILIPS,
1804 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1805 .subvendor = 0x1894,
1806 .subdevice = 0xa006,
1807 .driver_data = SAA7134_BOARD_TVSTATION_DVR,
1808 },{
1809 .vendor = PCI_VENDOR_ID_PHILIPS,
1810 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1811 .subvendor = 0x1131,
1812 .subdevice = 0x7133,
1813 .driver_data = SAA7134_BOARD_VA1000POWER,
1814 },{
1815 .vendor = PCI_VENDOR_ID_PHILIPS,
1816 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1817 .subvendor = PCI_VENDOR_ID_PHILIPS,
1818 .subdevice = 0x2001,
1819 .driver_data = SAA7134_BOARD_10MOONSTVMASTER,
1820 },{
1821 .vendor = PCI_VENDOR_ID_PHILIPS,
1822 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
1823 .subvendor = 0x185b,
1824 .subdevice = 0xc100,
1825 .driver_data = SAA7134_BOARD_VIDEOMATE_TV,
1826 },{
1827 .vendor = PCI_VENDOR_ID_PHILIPS,
1828 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
1829 .subvendor = 0x185b,
1830 .subdevice = 0xc100,
1831 .driver_data = SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUS,
1832 },{
1833 .vendor = PCI_VENDOR_ID_PHILIPS,
1834 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1835 .subvendor = PCI_VENDOR_ID_MATROX,
1836 .subdevice = 0x48d0,
1837 .driver_data = SAA7134_BOARD_CRONOS_PLUS,
1838 },{
1839 .vendor = PCI_VENDOR_ID_PHILIPS,
1840 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1841 .subvendor = 0x1461, /* Avermedia Technologies Inc */
1842 .subdevice = 0xa70b,
1843 .driver_data = SAA7134_BOARD_MD2819,
1844 },{
1845 .vendor = PCI_VENDOR_ID_PHILIPS,
1846 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1847 .subvendor = 0x1461, /* Avermedia Technologies Inc */
1848 .subdevice = 0x2115,
1849 .driver_data = SAA7134_BOARD_AVERMEDIA_STUDIO_305,
1850 },{
1851 .vendor = PCI_VENDOR_ID_PHILIPS,
1852 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1853 .subvendor = 0x1461, /* Avermedia Technologies Inc */
1854 .subdevice = 0x2108,
1855 .driver_data = SAA7134_BOARD_AVERMEDIA_305,
1856 },{
1857 .vendor = PCI_VENDOR_ID_PHILIPS,
1858 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1859 .subvendor = 0x1461, /* Avermedia Technologies Inc */
1860 .subdevice = 0x10ff,
1861 .driver_data = SAA7134_BOARD_AVERMEDIA_DVD_EZMAKER,
1862 },{
1863 /* AVerMedia CardBus */
1864 .vendor = PCI_VENDOR_ID_PHILIPS,
1865 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1866 .subvendor = 0x1461, /* Avermedia Technologies Inc */
1867 .subdevice = 0xd6ee,
1868 .driver_data = SAA7134_BOARD_AVERMEDIA_CARDBUS,
1869 },{
1870 /* TransGear 3000TV */
1871 .vendor = PCI_VENDOR_ID_PHILIPS,
1872 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1873 .subvendor = 0x1461, /* Avermedia Technologies Inc */
1874 .subdevice = 0x050c,
1875 .driver_data = SAA7134_BOARD_TG3000TV,
1876 },{
1877 .vendor = PCI_VENDOR_ID_PHILIPS,
1878 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1879 .subvendor = 0x11bd,
1880 .subdevice = 0x002b,
1881 .driver_data = SAA7134_BOARD_PINNACLE_PCTV_STEREO,
1882 },{
1883 .vendor = PCI_VENDOR_ID_PHILIPS,
1884 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1885 .subvendor = 0x11bd,
1886 .subdevice = 0x002d,
1887 .driver_data = SAA7134_BOARD_PINNACLE_300I_DVBT_PAL,
1888 },{
1889 .vendor = PCI_VENDOR_ID_PHILIPS,
1890 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1891 .subvendor = 0x1019,
1892 .subdevice = 0x4cb4,
1893 .driver_data = SAA7134_BOARD_ECS_TVP3XP,
1894 },{
1895 .vendor = PCI_VENDOR_ID_PHILIPS,
1896 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
1897 .subvendor = 0x1019,
1898 .subdevice = 0x4cb5,
1899 .driver_data = SAA7134_BOARD_ECS_TVP3XP_4CB5,
1900 },{
1901 .vendor = PCI_VENDOR_ID_PHILIPS,
1902 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
1903 .subvendor = 0x12ab,
1904 .subdevice = 0x0800,
1905 .driver_data = SAA7133_BOARD_UPMOST_PURPLE_TV,
1906 },{
1907 .vendor = PCI_VENDOR_ID_PHILIPS,
1908 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1909 .subvendor = 0x153B,
1910 .subdevice = 0x1152,
1911 .driver_data = SAA7134_BOARD_CINERGY200,
1912 },{
1913 .vendor = PCI_VENDOR_ID_PHILIPS,
1914 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1915 .subvendor = 0x185b,
1916 .subdevice = 0xc100,
1917 .driver_data = SAA7134_BOARD_VIDEOMATE_TV_PVR,
1918 },{
1919 .vendor = PCI_VENDOR_ID_PHILIPS,
1920 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1921 .subvendor = 0x1131,
1922 .subdevice = 0,
1923 .driver_data = SAA7134_BOARD_SABRENT_SBTTVFM,
1924 },{
1925 .vendor = PCI_VENDOR_ID_PHILIPS,
1926 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1927 .subvendor = 0x1461, /* Avermedia Technologies Inc */
1928 .subdevice = 0x9715,
Mauro Carvalho Chehabac19ecc2005-06-23 22:05:09 -07001929 .driver_data = SAA7134_BOARD_AVERMEDIA_STUDIO_307,
1930 },{
1931 .vendor = PCI_VENDOR_ID_PHILIPS,
1932 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1933 .subvendor = 0x1461, /* Avermedia Technologies Inc */
1934 .subdevice = 0xa70a,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001935 .driver_data = SAA7134_BOARD_AVERMEDIA_307,
1936 },{
1937 .vendor = PCI_VENDOR_ID_PHILIPS,
1938 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1939 .subvendor = 0x185b,
1940 .subdevice = 0xc200,
1941 .driver_data = SAA7134_BOARD_VIDEOMATE_GOLD_PLUS,
1942 },{
1943 .vendor = PCI_VENDOR_ID_PHILIPS,
1944 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1945 .subvendor = 0x1540,
1946 .subdevice = 0x9524,
1947 .driver_data = SAA7134_BOARD_PROVIDEO_PV952,
1948
1949 },{
1950 .vendor = PCI_VENDOR_ID_PHILIPS,
1951 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
1952 .subvendor = 0x5168,
1953 .subdevice = 0x0306,
1954 .driver_data = SAA7134_BOARD_FLYDVBTDUO,
Mauro Carvalho Chehabac19ecc2005-06-23 22:05:09 -07001955 },{
1956 .vendor = PCI_VENDOR_ID_PHILIPS,
1957 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
1958 .subvendor = 0x1461, /* Avermedia Technologies Inc */
1959 .subdevice = 0xf31f,
1960 .driver_data = SAA7134_BOARD_AVERMEDIA_GO_007_FM,
1961
1962 },{
1963 .vendor = PCI_VENDOR_ID_PHILIPS,
1964 .device = PCI_DEVICE_ID_PHILIPS_SAA7135,
1965 .subvendor = 0x1421,
1966 .subdevice = 0x0350, /* PCI version */
1967 .driver_data = SAA7134_BOARD_ADS_INSTANT_TV,
1968
1969 },{
1970 .vendor = PCI_VENDOR_ID_PHILIPS,
1971 .device = PCI_DEVICE_ID_PHILIPS_SAA7135,
1972 .subvendor = 0x1421,
1973 .subdevice = 0x0370, /* cardbus version */
1974 .driver_data = SAA7134_BOARD_ADS_INSTANT_TV,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001975
1976 },{
1977 /* --- boards without eeprom + subsystem ID --- */
1978 .vendor = PCI_VENDOR_ID_PHILIPS,
1979 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1980 .subvendor = PCI_VENDOR_ID_PHILIPS,
1981 .subdevice = 0,
1982 .driver_data = SAA7134_BOARD_NOAUTO,
1983 },{
1984 .vendor = PCI_VENDOR_ID_PHILIPS,
1985 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1986 .subvendor = PCI_VENDOR_ID_PHILIPS,
1987 .subdevice = 0,
1988 .driver_data = SAA7134_BOARD_NOAUTO,
1989 },{
1990
1991 /* --- default catch --- */
1992 .vendor = PCI_VENDOR_ID_PHILIPS,
1993 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1994 .subvendor = PCI_ANY_ID,
1995 .subdevice = PCI_ANY_ID,
1996 .driver_data = SAA7134_BOARD_UNKNOWN,
1997 },{
1998 .vendor = PCI_VENDOR_ID_PHILIPS,
1999 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
2000 .subvendor = PCI_ANY_ID,
2001 .subdevice = PCI_ANY_ID,
2002 .driver_data = SAA7134_BOARD_UNKNOWN,
2003 },{
2004 .vendor = PCI_VENDOR_ID_PHILIPS,
2005 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
2006 .subvendor = PCI_ANY_ID,
2007 .subdevice = PCI_ANY_ID,
2008 .driver_data = SAA7134_BOARD_UNKNOWN,
2009 },{
2010 .vendor = PCI_VENDOR_ID_PHILIPS,
2011 .device = PCI_DEVICE_ID_PHILIPS_SAA7135,
2012 .subvendor = PCI_ANY_ID,
2013 .subdevice = PCI_ANY_ID,
2014 .driver_data = SAA7134_BOARD_UNKNOWN,
2015 },{
2016 /* --- end of list --- */
2017 }
2018};
2019MODULE_DEVICE_TABLE(pci, saa7134_pci_tbl);
2020
2021/* ----------------------------------------------------------- */
2022/* flyvideo tweaks */
2023
2024#if 0
2025static struct {
2026 char *model;
2027 int tuner_type;
2028} fly_list[0x20] = {
2029 /* default catch ... */
2030 [ 0 ... 0x1f ] = {
2031 .model = "UNKNOWN",
2032 .tuner_type = TUNER_ABSENT,
2033 },
2034 /* ... the ones known so far */
2035 [ 0x05 ] = {
2036 .model = "PAL-BG",
2037 .tuner_type = TUNER_LG_PAL_NEW_TAPC,
2038 },
2039 [ 0x10 ] = {
2040 .model = "PAL-BG / PAL-DK",
2041 .tuner_type = TUNER_PHILIPS_PAL,
2042 },
2043 [ 0x15 ] = {
2044 .model = "NTSC",
2045 .tuner_type = TUNER_ABSENT /* FIXME */,
2046 },
2047};
2048#endif
2049
2050static void board_flyvideo(struct saa7134_dev *dev)
2051{
2052#if 0
2053 /* non-working attempt to detect the correct tuner type ... */
2054 u32 value;
2055 int index;
2056
2057 value = dev->gpio_value;
2058 index = (value & 0x1f00) >> 8;
2059 printk(KERN_INFO "%s: flyvideo: gpio is 0x%x [model=%s,tuner=%d]\n",
2060 dev->name, value, fly_list[index].model,
2061 fly_list[index].tuner_type);
2062 dev->tuner_type = fly_list[index].tuner_type;
2063#endif
2064 printk("%s: there are different flyvideo cards with different tuners\n"
2065 "%s: out there, you might have to use the tuner=<nr> insmod\n"
2066 "%s: option to override the default value.\n",
2067 dev->name, dev->name, dev->name);
2068}
2069
2070/* ----------------------------------------------------------- */
2071
2072int saa7134_board_init1(struct saa7134_dev *dev)
2073{
2074 // Always print gpio, often manufacturers encode tuner type and other info.
2075 saa_writel(SAA7134_GPIO_GPMODE0 >> 2, 0);
2076 dev->gpio_value = saa_readl(SAA7134_GPIO_GPSTATUS0 >> 2);
2077 printk(KERN_INFO "%s: board init: gpio is %x\n", dev->name, dev->gpio_value);
2078
2079 switch (dev->board) {
2080 case SAA7134_BOARD_FLYVIDEO2000:
2081 case SAA7134_BOARD_FLYVIDEO3000:
2082 dev->has_remote = 1;
2083 board_flyvideo(dev);
2084 break;
Mauro Carvalho Chehabac19ecc2005-06-23 22:05:09 -07002085 case SAA7134_BOARD_FLYTVPLATINUM_FM:
Linus Torvalds1da177e2005-04-16 15:20:36 -07002086 case SAA7134_BOARD_CINERGY400:
2087 case SAA7134_BOARD_CINERGY600:
2088 case SAA7134_BOARD_CINERGY600_MK3:
2089 case SAA7134_BOARD_ECS_TVP3XP:
2090 case SAA7134_BOARD_ECS_TVP3XP_4CB5:
2091 case SAA7134_BOARD_MD2819:
Mauro Carvalho Chehabac19ecc2005-06-23 22:05:09 -07002092 case SAA7134_BOARD_KWORLD_VSTREAM_XPERT:
Linus Torvalds1da177e2005-04-16 15:20:36 -07002093 case SAA7134_BOARD_AVERMEDIA_STUDIO_305:
2094 case SAA7134_BOARD_AVERMEDIA_305:
Mauro Carvalho Chehabac19ecc2005-06-23 22:05:09 -07002095 case SAA7134_BOARD_AVERMEDIA_STUDIO_307:
Linus Torvalds1da177e2005-04-16 15:20:36 -07002096 case SAA7134_BOARD_AVERMEDIA_307:
Mauro Carvalho Chehabac19ecc2005-06-23 22:05:09 -07002097 case SAA7134_BOARD_AVERMEDIA_GO_007_FM:
Linus Torvalds1da177e2005-04-16 15:20:36 -07002098// case SAA7134_BOARD_SABRENT_SBTTVFM: /* not finished yet */
2099 case SAA7134_BOARD_VIDEOMATE_TV_PVR:
Mauro Carvalho Chehabac19ecc2005-06-23 22:05:09 -07002100 case SAA7134_BOARD_MANLI_MTV001:
2101 case SAA7134_BOARD_MANLI_MTV002:
Linus Torvalds1da177e2005-04-16 15:20:36 -07002102 case SAA7134_BOARD_AVACSSMARTTV:
2103 dev->has_remote = 1;
2104 break;
2105 case SAA7134_BOARD_MD5044:
2106 printk("%s: seems there are two different versions of the MD5044\n"
2107 "%s: (with the same ID) out there. If sound doesn't work for\n"
2108 "%s: you try the audio_clock_override=0x200000 insmod option.\n",
2109 dev->name,dev->name,dev->name);
2110 break;
2111 case SAA7134_BOARD_CINERGY400_CARDBUS:
2112 /* power-up tuner chip */
2113 saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x00040000, 0x00040000);
2114 saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00040000, 0x00000000);
2115 msleep(1);
2116 break;
2117 }
2118 if (dev->has_remote)
2119 dev->irq2_mask |= (SAA7134_IRQ2_INTE_GPIO18 |
2120 SAA7134_IRQ2_INTE_GPIO18A |
2121 SAA7134_IRQ2_INTE_GPIO16 );
2122 return 0;
2123}
2124
2125/* stuff which needs working i2c */
2126int saa7134_board_init2(struct saa7134_dev *dev)
2127{
2128 unsigned char buf;
2129 int board;
2130
2131 switch (dev->board) {
2132 case SAA7134_BOARD_BMK_MPEX_NOTUNER:
2133 case SAA7134_BOARD_BMK_MPEX_TUNER:
2134 dev->i2c_client.addr = 0x60;
2135 board = (i2c_master_recv(&dev->i2c_client,&buf,0) < 0)
2136 ? SAA7134_BOARD_BMK_MPEX_NOTUNER
2137 : SAA7134_BOARD_BMK_MPEX_TUNER;
2138 if (board == dev->board)
2139 break;
2140 dev->board = board;
2141 printk("%s: board type fixup: %s\n", dev->name,
2142 saa7134_boards[dev->board].name);
2143 dev->tuner_type = saa7134_boards[dev->board].tuner_type;
2144 if (TUNER_ABSENT != dev->tuner_type)
2145 saa7134_i2c_call_clients(dev,TUNER_SET_TYPE,&dev->tuner_type);
2146 break;
2147 }
2148 return 0;
2149}
2150
2151/* ----------------------------------------------------------- */
2152/*
2153 * Local variables:
2154 * c-basic-offset: 8
2155 * End:
2156 */