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