]> git.kernelconcepts.de Git - karo-tx-linux.git/blob - drivers/media/video/saa7134/saa7134-cards.c
Merge 'drm-3264' branch of rsync://rsync.kernel.org/pub/scm/linux/kernel/git/airlied...
[karo-tx-linux.git] / drivers / media / video / saa7134 / saa7134-cards.c
1
2 /*
3  * $Id: saa7134-cards.c,v 1.58 2005/06/07 18:05:00 nsh Exp $
4  *
5  * device driver for philips saa7134 based TV cards
6  * card-specific stuff.
7  *
8  * (c) 2001-04 Gerd Knorr <kraxel@bytesex.org> [SuSE Labs]
9  *
10  *  This program is free software; you can redistribute it and/or modify
11  *  it under the terms of the GNU General Public License as published by
12  *  the Free Software Foundation; either version 2 of the License, or
13  *  (at your option) any later version.
14  *
15  *  This program is distributed in the hope that it will be useful,
16  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
17  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  *  GNU General Public License for more details.
19  *
20  *  You should have received a copy of the GNU General Public License
21  *  along with this program; if not, write to the Free Software
22  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
23  */
24
25 #include <linux/init.h>
26 #include <linux/module.h>
27
28 #include "saa7134-reg.h"
29 #include "saa7134.h"
30
31 /* commly used strings */
32 static char name_mute[]    = "mute";
33 static char name_radio[]   = "Radio";
34 static char name_tv[]      = "Television";
35 static char name_tv_mono[] = "TV (mono only)";
36 static char name_comp1[]   = "Composite1";
37 static char name_comp2[]   = "Composite2";
38 static char name_comp3[]   = "Composite3";
39 static char name_comp4[]   = "Composite4";
40 static char name_svideo[]  = "S-Video";
41
42 /* ------------------------------------------------------------------ */
43 /* board config info                                                  */
44
45 struct saa7134_board saa7134_boards[] = {
46         [SAA7134_BOARD_UNKNOWN] = {
47                 .name           = "UNKNOWN/GENERIC",
48                 .audio_clock    = 0x00187de7,
49                 .tuner_type     = TUNER_ABSENT,
50                 .inputs         = {{
51                         .name = "default",
52                         .vmux = 0,
53                         .amux = LINE1,
54                 }},
55         },
56         [SAA7134_BOARD_PROTEUS_PRO] = {
57                 /* /me */
58                 .name           = "Proteus Pro [philips reference design]",
59                 .audio_clock    = 0x00187de7,
60                 .tuner_type     = TUNER_PHILIPS_PAL,
61                 .inputs         = {{
62                         .name = name_comp1,
63                         .vmux = 0,
64                         .amux = LINE1,
65                 },{
66                         .name = name_tv,
67                         .vmux = 1,
68                         .amux = TV,
69                         .tv   = 1,
70                 },{
71                         .name = name_tv_mono,
72                         .vmux = 1,
73                         .amux = LINE2,
74                         .tv   = 1,
75                 }},
76                 .radio = {
77                         .name = name_radio,
78                         .amux = LINE2,
79                 },
80         },
81         [SAA7134_BOARD_FLYVIDEO3000] = {
82                 /* "Marco d'Itri" <md@Linux.IT> */
83                 .name           = "LifeView FlyVIDEO3000",
84                 .audio_clock    = 0x00200000,
85                 .tuner_type     = TUNER_PHILIPS_PAL,
86                 .gpiomask       = 0xe000,
87                 .inputs         = {{
88                         .name = name_tv,
89                         .vmux = 1,
90                         .amux = TV,
91                         .gpio = 0x8000,
92                         .tv   = 1,
93                 },{
94                         .name = name_tv_mono,
95                         .vmux = 1,
96                         .amux = LINE2,
97                         .gpio = 0x0000,
98                         .tv   = 1,
99                 },{
100                         .name = name_comp1,
101                         .vmux = 0,
102                         .amux = LINE2,
103                         .gpio = 0x4000,
104                 },{
105                         .name = name_comp2,
106                         .vmux = 3,
107                         .amux = LINE2,
108                         .gpio = 0x4000,
109                 },{
110                         .name = name_svideo,
111                         .vmux = 8,
112                         .amux = LINE2,
113                         .gpio = 0x4000,
114                 }},
115                 .radio = {
116                         .name = name_radio,
117                         .amux = LINE2,
118                         .gpio = 0x2000,
119                 },
120         },
121         [SAA7134_BOARD_FLYVIDEO2000] = {
122                 /* "TC Wan" <tcwan@cs.usm.my> */
123                 .name           = "LifeView FlyVIDEO2000",
124                 .audio_clock    = 0x00200000,
125                 .tuner_type     = TUNER_LG_PAL_NEW_TAPC,
126                 .gpiomask       = 0xe000,
127                 .inputs         = {{
128                         .name = name_tv,
129                         .vmux = 1,
130                         .amux = LINE2,
131                         .gpio = 0x0000,
132                         .tv   = 1,
133                 },{
134                         .name = name_comp1,
135                         .vmux = 0,
136                         .amux = LINE2,
137                         .gpio = 0x4000,
138                 },{
139                         .name = name_comp2,
140                         .vmux = 3,
141                         .amux = LINE2,
142                         .gpio = 0x4000,
143                 },{
144                         .name = name_svideo,
145                         .vmux = 8,
146                         .amux = LINE2,
147                         .gpio = 0x4000,
148                 }},
149                 .radio = {
150                         .name = name_radio,
151                         .amux = LINE2,
152                         .gpio = 0x2000,
153                 },
154                 .mute = {
155                         .name = name_mute,
156                         .amux = LINE2,
157                         .gpio = 0x8000,
158                 },
159         },
160         [SAA7134_BOARD_FLYTVPLATINUM_MINI] = {
161                 /* "Arnaud Quette" <aquette@free.fr> */
162                 .name           = "LifeView FlyTV Platinum Mini",
163                 .audio_clock    = 0x00200000,
164                 .tuner_type     = TUNER_PHILIPS_TDA8290,
165                 .inputs         = {{
166                         .name = name_tv,
167                         .vmux = 1,
168                         .amux = TV,
169                         .tv   = 1,
170                 },{
171                         .name = name_comp1,
172                         .vmux = 0,
173                         .amux = LINE2,
174                 },{
175                         .name = name_svideo,
176                         .vmux = 8,
177                         .amux = LINE2,
178                 }},
179         },
180         [SAA7134_BOARD_FLYTVPLATINUM_FM] = {
181                 /* LifeView FlyTV Platinum FM (LR214WF) */
182                 /* "Peter Missel <peter.missel@onlinehome.de> */
183                 .name           = "LifeView FlyTV Platinum FM",
184                 .audio_clock    = 0x00200000,
185                 .tuner_type     = TUNER_PHILIPS_TDA8290,
186                 .gpiomask       = 0x1E000,      /* Set GP16 and unused 15,14,13 to Output */
187                 .inputs         = {{
188                         .name = name_tv,
189                         .vmux = 1,
190                         .amux = TV,
191                         .gpio = 0x10000,        /* GP16=1 selects TV input */
192                         .tv   = 1,
193                 },{
194 /*                      .name = name_tv_mono,
195                         .vmux = 1,
196                         .amux = LINE2,
197                         .gpio = 0x0000,
198                         .tv   = 1,
199                 },{
200 */                      .name = name_comp1,     /* Composite signal on S-Video input */
201                         .vmux = 0,
202                         .amux = LINE2,
203 //                      .gpio = 0x4000,
204                 },{
205                         .name = name_comp2,     /* Composite input */
206                         .vmux = 3,
207                         .amux = LINE2,
208 //                      .gpio = 0x4000,
209                 },{
210                         .name = name_svideo,    /* S-Video signal on S-Video input */
211                         .vmux = 8,
212                         .amux = LINE2,
213 //                      .gpio = 0x4000,
214                 }},
215                 .radio = {
216                         .name = name_radio,
217                         .amux = TV,
218                         .gpio = 0x00000,        /* GP16=0 selects FM radio antenna */
219                 },
220         },
221         [SAA7134_BOARD_EMPRESS] = {
222                 /* "Gert Vervoort" <gert.vervoort@philips.com> */
223                 .name           = "EMPRESS",
224                 .audio_clock    = 0x00187de7,
225                 .tuner_type     = TUNER_PHILIPS_PAL,
226                 .inputs         = {{
227                         .name = name_comp1,
228                         .vmux = 0,
229                         .amux = LINE1,
230                 },{
231                         .name = name_svideo,
232                         .vmux = 8,
233                         .amux = LINE1,
234                 },{
235                         .name = name_tv,
236                         .vmux = 1,
237                         .amux = LINE2,
238                         .tv   = 1,
239                 }},
240                 .radio = {
241                         .name = name_radio,
242                         .amux = LINE2,
243                 },
244                 .mpeg      = SAA7134_MPEG_EMPRESS,
245                 .video_out = CCIR656,
246         },
247         [SAA7134_BOARD_MONSTERTV] = {
248                /* "K.Ohta" <alpha292@bremen.or.jp> */
249                .name           = "SKNet Monster TV",
250                .audio_clock    = 0x00187de7,
251                .tuner_type     = TUNER_PHILIPS_NTSC_M,
252                .inputs         = {{
253                        .name = name_tv,
254                        .vmux = 1,
255                        .amux = TV,
256                        .tv   = 1,
257                },{
258                        .name = name_comp1,
259                        .vmux = 0,
260                        .amux = LINE1,
261                },{
262                        .name = name_svideo,
263                        .vmux = 8,
264                        .amux = LINE1,
265                }},
266                .radio = {
267                        .name = name_radio,
268                        .amux = LINE2,
269                },
270         },
271         [SAA7134_BOARD_MD9717] = {
272                 .name           = "Tevion MD 9717",
273                 .audio_clock    = 0x00200000,
274                 .tuner_type     = TUNER_PHILIPS_PAL,
275                 .inputs         = {{
276                         .name = name_tv,
277                         .vmux = 1,
278                         .amux = TV,
279                         .tv   = 1,
280                 },{
281                         /* workaround for problems with normal TV sound */
282                         .name = name_tv_mono,
283                         .vmux = 1,
284                         .amux = LINE2,
285                         .tv   = 1,
286                 },{
287                         .name = name_comp1,
288                         .vmux = 2,
289                         .amux = LINE1,
290                 },{
291                         .name = name_comp2,
292                         .vmux = 3,
293                         .amux = LINE1,
294                 },{
295                         .name = name_svideo,
296                         .vmux = 8,
297                         .amux = LINE1,
298                 }},
299                 .radio = {
300                         .name = name_radio,
301                         .amux = LINE2,
302                 },
303         },
304         [SAA7134_BOARD_TVSTATION_RDS] = {
305                 /* Typhoon TV Tuner RDS: Art.Nr. 50694 */
306                 .name           = "KNC One TV-Station RDS / Typhoon TV Tuner RDS",
307                 .audio_clock    = 0x00200000,
308                 .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
309                 .tda9887_conf   = TDA9887_PRESENT,
310                 .inputs         = {{
311                         .name = name_tv,
312                         .vmux = 1,
313                         .amux = TV,
314                         .tv   = 1,
315                 },{
316                         .name = name_tv_mono,
317                         .vmux = 1,
318                         .amux   = LINE2,
319                         .tv   = 1,
320                 },{
321
322                         .name = name_svideo,
323                         .vmux = 8,
324                         .amux = LINE1,
325                 },{
326                         .name = name_comp1,
327                         .vmux = 3,
328                         .amux = LINE1,
329                 },{
330
331                         .name = "CVid over SVid",
332                         .vmux = 0,
333                         .amux = LINE1,
334                 }},
335                 .radio = {
336                         .name = name_radio,
337                         .amux = LINE2,
338                 },
339         },
340         [SAA7134_BOARD_TVSTATION_DVR] = {
341                 .name           = "KNC One TV-Station DVR",
342                 .audio_clock    = 0x00200000,
343                 .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
344                 .tda9887_conf   = TDA9887_PRESENT,
345                 .gpiomask       = 0x820000,
346                 .inputs         = {{
347                         .name = name_tv,
348                         .vmux = 1,
349                         .amux = LINE2,
350                         .tv   = 1,
351                         .gpio = 0x20000,
352                 },{
353                         .name = name_svideo,
354                         .vmux = 8,
355                         .amux = LINE1,
356                         .gpio = 0x20000,
357                 },{
358                         .name = name_comp1,
359                         .vmux = 3,
360                         .amux = LINE1,
361                         .gpio = 0x20000,
362                 }},
363                 .radio          = {
364                         .name = name_radio,
365                         .amux = LINE2,
366                         .gpio = 0x20000,
367                 },
368                 .mpeg           = SAA7134_MPEG_EMPRESS,
369                 .video_out      = CCIR656,
370         },
371         [SAA7134_BOARD_CINERGY400] = {
372                 .name           = "Terratec Cinergy 400 TV",
373                 .audio_clock    = 0x00200000,
374                 .tuner_type     = TUNER_PHILIPS_PAL,
375                 .inputs         = {{
376                         .name = name_tv,
377                         .vmux = 1,
378                         .amux = TV,
379                         .tv   = 1,
380                 },{
381                         .name = name_comp1,
382                         .vmux = 4,
383                         .amux = LINE1,
384                 },{
385                         .name = name_svideo,
386                         .vmux = 8,
387                         .amux = LINE1,
388                 },{
389                         .name = name_comp2, // CVideo over SVideo Connector
390                         .vmux = 0,
391                         .amux = LINE1,
392                 }}
393         },
394         [SAA7134_BOARD_MD5044] = {
395                 .name           = "Medion 5044",
396                 .audio_clock    = 0x00187de7, // was: 0x00200000,
397                 .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
398                 .tda9887_conf   = TDA9887_PRESENT,
399                 .inputs         = {{
400                         .name = name_tv,
401                         .vmux = 1,
402                         .amux = TV,
403                         .tv   = 1,
404                 },{
405                         /* workaround for problems with normal TV sound */
406                         .name = name_tv_mono,
407                         .vmux = 1,
408                         .amux = LINE2,
409                         .tv   = 1,
410                 },{
411                         .name = name_comp1,
412                         .vmux = 0,
413                         .amux = LINE2,
414                 },{
415                         .name = name_comp2,
416                         .vmux = 3,
417                         .amux = LINE2,
418                 },{
419                         .name = name_svideo,
420                         .vmux = 8,
421                         .amux = LINE2,
422                 }},
423                 .radio = {
424                         .name = name_radio,
425                         .amux = LINE2,
426                 },
427         },
428         [SAA7134_BOARD_KWORLD] = {
429                 .name           = "Kworld/KuroutoShikou SAA7130-TVPCI",
430                 .audio_clock    = 0x00187de7,
431                 .tuner_type     = TUNER_PHILIPS_NTSC_M,
432                 .inputs         = {{
433                         .name = name_svideo,
434                         .vmux = 8,
435                         .amux = LINE1,
436                 },{
437                         .name = name_comp1,
438                         .vmux = 3,
439                         .amux = LINE1,
440                 },{
441                         .name = name_tv,
442                         .vmux = 1,
443                         .amux = LINE2,
444                         .tv   = 1,
445                 }},
446         },
447         [SAA7134_BOARD_CINERGY600] = {
448                 .name           = "Terratec Cinergy 600 TV",
449                 .audio_clock    = 0x00200000,
450                 .tuner_type     = TUNER_PHILIPS_PAL,
451                 .tda9887_conf   = TDA9887_PRESENT,
452                 .inputs         = {{
453                         .name = name_tv,
454                         .vmux = 1,
455                         .amux = TV,
456                         .tv   = 1,
457                 },{
458                         .name = name_comp1,
459                         .vmux = 4,
460                         .amux = LINE1,
461                 },{
462                         .name = name_svideo,
463                         .vmux = 8,
464                         .amux = LINE1,
465                 },{
466                         .name = name_comp2, // CVideo over SVideo Connector
467                         .vmux = 0,
468                         .amux = LINE1,
469                 }},
470                 .radio = {
471                         .name = name_radio,
472                         .amux = LINE2,
473                },
474         },
475         [SAA7134_BOARD_MD7134] = {
476                 .name           = "Medion 7134",
477                 //.audio_clock    = 0x00200000,
478                 .audio_clock    = 0x00187de7,
479                 .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
480                 .tda9887_conf   = TDA9887_PRESENT,
481                 .mpeg           = SAA7134_MPEG_DVB,
482                 .inputs = {{
483                         .name   = name_tv,
484                         .vmux   = 1,
485                         .amux   = TV,
486                         .tv     = 1,
487                 },{
488                         .name   = name_comp1,
489                         .vmux   = 0,
490                         .amux   = LINE1,
491                 },{
492                         .name   = name_svideo,
493                         .vmux   = 8,
494                         .amux   = LINE1,
495                 }},
496                 .radio = {
497                         .name   = name_radio,
498                         .amux   = LINE2,
499                 },
500         },
501         [SAA7134_BOARD_TYPHOON_90031] = {
502                 /* aka Typhoon "TV+Radio", Art.Nr 90031 */
503                 /* Tom Zoerner <tomzo at users sourceforge net> */
504                 .name           = "Typhoon TV+Radio 90031",
505                 .audio_clock    = 0x00200000,
506                 .tuner_type     = TUNER_PHILIPS_PAL,
507                 .tda9887_conf   = TDA9887_PRESENT,
508                 .inputs         = {{
509                         .name   = name_tv,
510                         .vmux   = 1,
511                         .amux   = TV,
512                         .tv     = 1,
513                 },{
514                         .name   = name_comp1,
515                         .vmux   = 3,
516                         .amux   = LINE1,
517                 },{
518                         .name   = name_svideo,
519                         .vmux   = 8,
520                         .amux   = LINE1,
521                 }},
522                 .radio = {
523                         .name   = name_radio,
524                         .amux   = LINE2,
525                 },
526         },
527         [SAA7134_BOARD_ELSA] = {
528                 .name           = "ELSA EX-VISION 300TV",
529                 .audio_clock    = 0x00187de7,
530                 .tuner_type     = TUNER_HITACHI_NTSC,
531                 .inputs         = {{
532                         .name = name_svideo,
533                         .vmux = 8,
534                         .amux = LINE1,
535                 },{
536                         .name   = name_comp1,
537                         .vmux   = 0,
538                         .amux   = LINE1,
539                 },{
540                         .name = name_tv,
541                         .vmux = 4,
542                         .amux = LINE2,
543                         .tv   = 1,
544                 }},
545         },
546         [SAA7134_BOARD_ELSA_500TV] = {
547                 .name           = "ELSA EX-VISION 500TV",
548                 .audio_clock    = 0x00187de7,
549                 .tuner_type     = TUNER_HITACHI_NTSC,
550                 .inputs         = {{
551                         .name = name_svideo,
552                         .vmux = 7,
553                         .amux = LINE1,
554                 },{
555                         .name = name_tv,
556                         .vmux = 8,
557                         .amux = TV,
558                         .tv   = 1,
559                 },{
560                         .name = name_tv_mono,
561                         .vmux = 8,
562                         .amux = LINE2,
563                         .tv   = 1,
564                 }},
565         },
566         [SAA7134_BOARD_ASUSTeK_TVFM7134] = {
567                 .name           = "ASUS TV-FM 7134",
568                 .audio_clock    = 0x00187de7,
569                 .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
570                 .tda9887_conf   = TDA9887_PRESENT,
571                 .inputs         = {{
572                         .name = name_tv,
573                         .vmux = 1,
574                         .amux = TV,
575                         .tv   = 1,
576                 },{
577                         .name = name_comp1,
578                         .vmux = 4,
579                         .amux = LINE2,
580                 },{
581                         .name = name_svideo,
582                         .vmux = 6,
583                         .amux = LINE2,
584                 }},
585                 .radio = {
586                         .name = name_radio,
587                         .amux = LINE1,
588                 },
589         },
590         [SAA7135_BOARD_ASUSTeK_TVFM7135] = {
591                 .name           = "ASUS TV-FM 7135",
592                 .audio_clock    = 0x00187de7,
593                 .tuner_type     = TUNER_PHILIPS_TDA8290,
594                 .gpiomask       = 0x200000,
595                 .inputs         = {{
596                         .name = name_tv,
597                         .vmux = 1,
598                         .amux = TV,
599                         .gpio = 0x0000,
600                         .tv   = 1,
601                 },{
602                         .name = name_comp1,
603                         .vmux = 4,
604                         .amux = LINE2,
605                         .gpio = 0x0000,
606                 },{
607                         .name = name_svideo,
608                         .vmux = 6,
609                         .amux = LINE2,
610                         .gpio = 0x0000,
611                 }},
612                 .radio = {
613                         .name = name_radio,
614                         .amux = TV,
615                         .gpio = 0x200000,
616                 },
617         },
618         [SAA7134_BOARD_VA1000POWER] = {
619                 .name           = "AOPEN VA1000 POWER",
620                 .audio_clock    = 0x00187de7,
621                 .tuner_type     = TUNER_PHILIPS_NTSC,
622                 .inputs         = {{
623                         .name = name_svideo,
624                         .vmux = 8,
625                         .amux = LINE1,
626                 },{
627                         .name = name_comp1,
628                         .vmux = 3,
629                         .amux = LINE1,
630                 },{
631                         .name = name_tv,
632                         .vmux = 1,
633                         .amux = LINE2,
634                         .tv   = 1,
635                 }},
636         },
637         [SAA7134_BOARD_10MOONSTVMASTER] = {
638                 /* "lilicheng" <llc@linuxfans.org> */
639                 .name           = "10MOONS PCI TV CAPTURE CARD",
640                 .audio_clock    = 0x00200000,
641                 .tuner_type     = TUNER_LG_PAL_NEW_TAPC,
642                 .gpiomask       = 0xe000,
643                 .inputs         = {{
644                         .name = name_tv,
645                         .vmux = 1,
646                         .amux = LINE2,
647                         .gpio = 0x0000,
648                         .tv   = 1,
649                 },{
650                         .name = name_comp1,
651                         .vmux = 0,
652                         .amux = LINE2,
653                         .gpio = 0x4000,
654                 },{
655                         .name = name_comp2,
656                         .vmux = 3,
657                         .amux = LINE2,
658                         .gpio = 0x4000,
659                 },{
660                         .name = name_svideo,
661                         .vmux = 8,
662                         .amux = LINE2,
663                         .gpio = 0x4000,
664                 }},
665                 .radio = {
666                         .name = name_radio,
667                         .amux = LINE2,
668                         .gpio = 0x2000,
669                 },
670                 .mute = {
671                         .name = name_mute,
672                         .amux = LINE2,
673                         .gpio = 0x8000,
674                 },
675         },
676         [SAA7134_BOARD_BMK_MPEX_NOTUNER] = {
677                 /* "Andrew de Quincey" <adq@lidskialf.net> */
678                 .name           = "BMK MPEX No Tuner",
679                 .audio_clock    = 0x200000,
680                 .tuner_type     = TUNER_ABSENT,
681                 .inputs         = {{
682                         .name = name_comp1,
683                         .vmux = 4,
684                         .amux = LINE1,
685                 },{
686                         .name = name_comp2,
687                         .vmux = 3,
688                         .amux = LINE1,
689                 },{
690                         .name = name_comp3,
691                         .vmux = 0,
692                         .amux = LINE1,
693                 },{
694                         .name = name_comp4,
695                         .vmux = 1,
696                         .amux = LINE1,
697                 },{
698                         .name = name_svideo,
699                         .vmux = 8,
700                         .amux = LINE1,
701                 }},
702                 .mpeg      = SAA7134_MPEG_EMPRESS,
703                 .video_out = CCIR656,
704         },
705         [SAA7134_BOARD_VIDEOMATE_TV] = {
706                 .name           = "Compro VideoMate TV",
707                 .audio_clock    = 0x00187de7,
708                 .tuner_type     = TUNER_PHILIPS_NTSC_M,
709                 .inputs         = {{
710                         .name = name_svideo,
711                         .vmux = 8,
712                         .amux = LINE1,
713                 },{
714                         .name = name_comp1,
715                         .vmux = 3,
716                         .amux = LINE1,
717                 },{
718                         .name = name_tv,
719                         .vmux = 1,
720                         .amux = LINE2,
721                         .tv   = 1,
722                 }},
723         },
724     [SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUS] = {
725                 .name           = "Compro VideoMate TV Gold+",
726                 .audio_clock    = 0x00187de7,
727                 .tuner_type     = TUNER_PHILIPS_NTSC_M,
728                 .gpiomask       = 0x800c0000,
729                 .inputs         = {{
730                         .name = name_svideo,
731                         .vmux = 8,
732                         .amux = LINE1,
733                         .gpio = 0x06c00012,
734                 },{
735                         .name = name_comp1,
736                         .vmux = 3,
737                         .amux = LINE1,
738                         .gpio = 0x0ac20012,
739                 },{
740                         .name = name_tv,
741                         .vmux = 1,
742                         .amux = LINE2,
743                         .gpio = 0x08c20012,
744                         .tv   = 1,
745                 }},
746         },
747         [SAA7134_BOARD_CRONOS_PLUS] = {
748                 /* gpio pins:
749                    0  .. 3   BASE_ID
750                    4  .. 7   PROTECT_ID
751                    8  .. 11  USER_OUT
752                    12 .. 13  USER_IN
753                    14 .. 15  VIDIN_SEL */
754                 .name           = "Matrox CronosPlus",
755                 .tuner_type     = TUNER_ABSENT,
756                 .gpiomask       = 0xcf00,
757                 .inputs         = {{
758                         .name = name_comp1,
759                         .vmux = 0,
760                         .gpio = 2 << 14,
761                 },{
762                         .name = name_comp2,
763                         .vmux = 0,
764                         .gpio = 1 << 14,
765                 },{
766                         .name = name_comp3,
767                         .vmux = 0,
768                         .gpio = 0 << 14,
769                 },{
770                         .name = name_comp4,
771                         .vmux = 0,
772                         .gpio = 3 << 14,
773                 },{
774                         .name = name_svideo,
775                         .vmux = 8,
776                         .gpio = 2 << 14,
777                 }},
778         },
779         [SAA7134_BOARD_MD2819] = {
780                 .name           = "AverMedia M156 / Medion 2819",
781                 .audio_clock    = 0x00187de7,
782                 .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
783                 .tda9887_conf   = TDA9887_PRESENT,
784                 .inputs         = {{
785                         .name = name_tv,
786                         .vmux = 1,
787                         .amux = TV,
788                         .tv   = 1,
789                 },{
790                         .name = name_comp1,
791                         .vmux = 0,
792                         .amux = LINE2,
793                 },{
794                         .name = name_comp2,
795                         .vmux = 3,
796                         .amux = LINE2,
797                 },{
798                         .name = name_svideo,
799                         .vmux = 8,
800                         .amux = LINE2,
801                 }},
802                 .radio = {
803                         .name = name_radio,
804                         .amux = LINE2,
805                 },
806         },
807         [SAA7134_BOARD_BMK_MPEX_TUNER] = {
808                 /* "Greg Wickham <greg.wickham@grangenet.net> */
809                 .name           = "BMK MPEX Tuner",
810                 .audio_clock    = 0x200000,
811                 .tuner_type     = TUNER_PHILIPS_PAL,
812                 .inputs         = {{
813                         .name = name_comp1,
814                         .vmux = 1,
815                         .amux = LINE1,
816                 },{
817                         .name = name_svideo,
818                         .vmux = 8,
819                         .amux = LINE1,
820                 },{
821                         .name = name_tv,
822                         .vmux = 3,
823                         .amux = TV,
824                         .tv   = 1,
825                 }},
826                 .mpeg      = SAA7134_MPEG_EMPRESS,
827                 .video_out = CCIR656,
828         },
829         [SAA7134_BOARD_ASUSTEK_TVFM7133] = {
830                 .name           = "ASUS TV-FM 7133",
831                 .audio_clock    = 0x00187de7,
832                 // probably wrong, the 7133 one is the NTSC version ...
833                 // .tuner_type     = TUNER_PHILIPS_FM1236_MK3
834                 .tuner_type     = TUNER_LG_NTSC_NEW_TAPC,
835                 .tda9887_conf   = TDA9887_PRESENT,
836                 .inputs         = {{
837                         .name = name_tv,
838                         .vmux = 1,
839                         .amux = TV,
840                         .tv   = 1,
841                 },{
842                         .name = name_comp1,
843                         .vmux = 4,
844                         .amux = LINE2,
845                 },{
846                         .name = name_svideo,
847                         .vmux = 6,
848                         .amux = LINE2,
849                 }},
850                 .radio = {
851                         .name = name_radio,
852                         .amux = LINE1,
853                 },
854         },
855         [SAA7134_BOARD_PINNACLE_PCTV_STEREO] = {
856                 .name           = "Pinnacle PCTV Stereo (saa7134)",
857                 .audio_clock    = 0x00187de7,
858                 .tuner_type     = TUNER_MT2032,
859                 .tda9887_conf   = TDA9887_PRESENT | TDA9887_INTERCARRIER,
860                 .inputs         = {{
861                         .name = name_tv,
862                         .vmux = 3,
863                         .amux = TV,
864                         .tv   = 1,
865                 },{
866                         .name = name_comp1,
867                         .vmux = 0,
868                         .amux = LINE2,
869                 },{
870                         .name = name_comp2,
871                         .vmux = 1,
872                         .amux = LINE2,
873                 },{
874                         .name = name_svideo,
875                         .vmux = 8,
876                         .amux = LINE2,
877                 }},
878         },
879         [SAA7134_BOARD_MANLI_MTV002] = {
880                 /* Ognjen Nastic <ognjen@logosoft.ba> */
881                 .name           = "Manli MuchTV M-TV002/Behold TV 403 FM",
882                 .audio_clock    = 0x00200000,
883                 .tuner_type     = TUNER_PHILIPS_PAL,
884                 .inputs         = {{
885                         .name = name_svideo,
886                         .vmux = 8,
887                         .amux = LINE1,
888                 },{
889                         .name   = name_comp1,
890                         .vmux   = 1,
891                         .amux   = LINE1,
892                 },{
893                         .name = name_tv,
894                         .vmux = 3,
895                         .amux = LINE2,
896                         .tv   = 1,
897                 }},
898                 .radio = {
899                         .name = name_radio,
900                         .amux = LINE2,
901                 },
902         },
903         [SAA7134_BOARD_MANLI_MTV001] = {
904                 /* Ognjen Nastic <ognjen@logosoft.ba> UNTESTED */
905                 .name           = "Manli MuchTV M-TV001/Behold TV 401",
906                 .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                 }},
922                 .mute = {
923                         .name = name_mute,
924                         .amux = LINE1,
925                 },
926         },
927         [SAA7134_BOARD_TG3000TV] = {
928                 /* TransGear 3000TV */
929                 .name           = "Nagase Sangyo TransGear 3000TV",
930                 .audio_clock    = 0x00187de7,
931                 .tuner_type     = TUNER_PHILIPS_NTSC_M,
932                 .inputs         = {{
933                         .name = name_tv,
934                         .vmux = 1,
935                         .amux = LINE2,
936                         .tv   = 1,
937                 },{
938                         .name = name_comp1,
939                         .vmux = 3,
940                         .amux = LINE2,
941                 },{
942                         .name = name_svideo,
943                         .vmux = 8,
944                         .amux = LINE2,
945                 }},
946         },
947         [SAA7134_BOARD_ECS_TVP3XP] = {
948                 .name           = "Elitegroup ECS TVP3XP FM1216 Tuner Card(PAL-BG,FM) ",
949                 .audio_clock    = 0x187de7,  // xtal 32.1 MHz
950                 .tuner_type     = TUNER_PHILIPS_PAL,
951                 .inputs         = {{
952                         .name   = name_tv,
953                         .vmux   = 1,
954                         .amux   = TV,
955                         .tv     = 1,
956                 },{
957                         .name   = name_tv_mono,
958                         .vmux   = 1,
959                         .amux   = LINE2,
960                         .tv     = 1,
961                 },{
962                         .name   = name_comp1,
963                         .vmux   = 3,
964                         .amux   = LINE1,
965                 },{
966                         .name   = name_svideo,
967                         .vmux   = 8,
968                         .amux   = LINE1,
969                 },{
970                         .name   = "CVid over SVid",
971                         .vmux   = 0,
972                         .amux   = LINE1,
973                 }},
974                 .radio = {
975                         .name   = name_radio,
976                         .amux   = LINE2,
977                 },
978         },
979         [SAA7134_BOARD_ECS_TVP3XP_4CB5] = {
980                 .name           = "Elitegroup ECS TVP3XP FM1236 Tuner Card (NTSC,FM)",
981                 .audio_clock    = 0x187de7,
982                 .tuner_type     = TUNER_PHILIPS_NTSC,
983                 .inputs         = {{
984                         .name   = name_tv,
985                         .vmux   = 1,
986                         .amux   = TV,
987                         .tv     = 1,
988                 },{
989                         .name   = name_tv_mono,
990                         .vmux   = 1,
991                         .amux   = LINE2,
992                         .tv     = 1,
993                 },{
994                         .name   = name_comp1,
995                         .vmux   = 3,
996                         .amux   = LINE1,
997                 },{
998                         .name   = name_svideo,
999                         .vmux   = 8,
1000                         .amux   = LINE1,
1001                 },{
1002                         .name   = "CVid over SVid",
1003                         .vmux   = 0,
1004                         .amux   = LINE1,
1005                 }},
1006                 .radio = {
1007                         .name   = name_radio,
1008                         .amux   = LINE2,
1009                 },
1010         },
1011         [SAA7134_BOARD_AVACSSMARTTV] = {
1012                 /* Roman Pszonczenko <romka@kolos.math.uni.lodz.pl> */
1013                 .name           = "AVACS SmartTV",
1014                 .audio_clock    = 0x00187de7,
1015                 .tuner_type     = TUNER_PHILIPS_PAL,
1016                 .inputs         = {{
1017                         .name = name_tv,
1018                         .vmux = 1,
1019                         .amux = TV,
1020                         .tv   = 1,
1021                 },{
1022                         .name = name_tv_mono,
1023                         .vmux = 1,
1024                         .amux = LINE2,
1025                         .tv   = 1,
1026                 },{
1027                         .name = name_comp1,
1028                         .vmux = 0,
1029                         .amux = LINE2,
1030                 },{
1031                         .name = name_comp2,
1032                         .vmux = 3,
1033                         .amux = LINE2,
1034                 },{
1035                         .name = name_svideo,
1036                         .vmux = 8,
1037                         .amux = LINE2,
1038                 }},
1039                 .radio = {
1040                         .name = name_radio,
1041                         .amux = LINE2,
1042                         .gpio = 0x200000,
1043                 },
1044         },
1045         [SAA7134_BOARD_AVERMEDIA_DVD_EZMAKER] = {
1046                 /* Michael Smith <msmith@cbnco.com> */
1047                 .name           = "AVerMedia DVD EZMaker",
1048                 .audio_clock    = 0x00187de7,
1049                 .tuner_type     = TUNER_ABSENT,
1050                 .inputs         = {{
1051                         .name = name_comp1,
1052                         .vmux = 3,
1053                 },{
1054                         .name = name_svideo,
1055                         .vmux = 8,
1056                 }},
1057         },
1058         [SAA7134_BOARD_NOVAC_PRIMETV7133] = {
1059                 /* toshii@netbsd.org */
1060                 .name           = "Noval Prime TV 7133",
1061                 .audio_clock    = 0x00200000,
1062                 .tuner_type     = TUNER_ALPS_TSBH1_NTSC,
1063                 .inputs         = {{
1064                         .name = name_comp1,
1065                         .vmux = 3,
1066                 },{
1067                         .name = name_tv,
1068                         .vmux = 1,
1069                         .amux = TV,
1070                         .tv   = 1,
1071                 },{
1072                         .name = name_svideo,
1073                         .vmux = 8,
1074                 }},
1075         },
1076         [SAA7134_BOARD_AVERMEDIA_STUDIO_305] = {
1077                 .name           = "AverMedia AverTV Studio 305",
1078                 .audio_clock    = 0x00187de7,
1079                 .tuner_type     = TUNER_PHILIPS_FM1256_IH3,
1080                 .tda9887_conf   = TDA9887_PRESENT,
1081                 .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         },
1287         [SAA7134_BOARD_AVERMEDIA_STUDIO_307] = {
1288                 /*
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         },
1325         [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         },
1354         [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,
1523                 .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         },
1576         [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
1652 const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards);
1653
1654 /* ------------------------------------------------------------------ */
1655 /* PCI ids + subsystem IDs                                            */
1656
1657 struct 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,
1733                 .subvendor    = 0x5168, /* Animation Technologies (LifeView) */
1734                 .subdevice    = 0x0214, /* Standard PCI, LR214WF */
1735                 .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_FM,
1736         },{
1737                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1738                 .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,
1744                 .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,
1768                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7135,
1769                 .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,
1929                 .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,
1935                 .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,
1955         },{
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,
1975
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 };
2019 MODULE_DEVICE_TABLE(pci, saa7134_pci_tbl);
2020
2021 /* ----------------------------------------------------------- */
2022 /* flyvideo tweaks                                             */
2023
2024 #if 0
2025 static 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
2050 static 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
2072 int 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;
2085         case SAA7134_BOARD_FLYTVPLATINUM_FM:
2086         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:
2092         case SAA7134_BOARD_KWORLD_VSTREAM_XPERT:
2093         case SAA7134_BOARD_AVERMEDIA_STUDIO_305:
2094         case SAA7134_BOARD_AVERMEDIA_305:
2095         case SAA7134_BOARD_AVERMEDIA_STUDIO_307:
2096         case SAA7134_BOARD_AVERMEDIA_307:
2097         case SAA7134_BOARD_AVERMEDIA_GO_007_FM:
2098 //      case SAA7134_BOARD_SABRENT_SBTTVFM:  /* not finished yet */
2099         case SAA7134_BOARD_VIDEOMATE_TV_PVR:
2100         case SAA7134_BOARD_MANLI_MTV001:
2101         case SAA7134_BOARD_MANLI_MTV002:
2102         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 */
2126 int 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  */