088376d3c95bb9464ee50213dbd1a2efa8424c9f
[firefly-linux-kernel-4.4.55.git] / drivers / media / video / saa7134 / saa7134-cards.c
1 /*
2  *
3  * device driver for philips saa7134 based TV cards
4  * card-specific stuff.
5  *
6  * (c) 2001-04 Gerd Knorr <kraxel@bytesex.org> [SuSE Labs]
7  *
8  *  This program is free software; you can redistribute it and/or modify
9  *  it under the terms of the GNU General Public License as published by
10  *  the Free Software Foundation; either version 2 of the License, or
11  *  (at your option) any later version.
12  *
13  *  This program is distributed in the hope that it will be useful,
14  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  *  GNU General Public License for more details.
17  *
18  *  You should have received a copy of the GNU General Public License
19  *  along with this program; if not, write to the Free Software
20  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21  */
22
23 #include <linux/init.h>
24 #include <linux/module.h>
25
26 #include "saa7134-reg.h"
27 #include "saa7134.h"
28
29 /* commly used strings */
30 static char name_mute[]    = "mute";
31 static char name_radio[]   = "Radio";
32 static char name_tv[]      = "Television";
33 static char name_tv_mono[] = "TV (mono only)";
34 static char name_comp1[]   = "Composite1";
35 static char name_comp2[]   = "Composite2";
36 static char name_comp3[]   = "Composite3";
37 static char name_comp4[]   = "Composite4";
38 static char name_svideo[]  = "S-Video";
39
40 /* ------------------------------------------------------------------ */
41 /* board config info                                                  */
42
43 struct saa7134_board saa7134_boards[] = {
44         [SAA7134_BOARD_UNKNOWN] = {
45                 .name           = "UNKNOWN/GENERIC",
46                 .audio_clock    = 0x00187de7,
47                 .tuner_type     = TUNER_ABSENT,
48                 .radio_type     = UNSET,
49                 .tuner_addr     = ADDR_UNSET,
50                 .radio_addr     = ADDR_UNSET,
51
52                 .inputs         = {{
53                         .name = "default",
54                         .vmux = 0,
55                         .amux = LINE1,
56                 }},
57         },
58         [SAA7134_BOARD_PROTEUS_PRO] = {
59                 /* /me */
60                 .name           = "Proteus Pro [philips reference design]",
61                 .audio_clock    = 0x00187de7,
62                 .tuner_type     = TUNER_PHILIPS_PAL,
63                 .radio_type     = UNSET,
64                 .tuner_addr     = ADDR_UNSET,
65                 .radio_addr     = ADDR_UNSET,
66
67                 .inputs         = {{
68                         .name = name_comp1,
69                         .vmux = 0,
70                         .amux = LINE1,
71                 },{
72                         .name = name_tv,
73                         .vmux = 1,
74                         .amux = TV,
75                         .tv   = 1,
76                 },{
77                         .name = name_tv_mono,
78                         .vmux = 1,
79                         .amux = LINE2,
80                         .tv   = 1,
81                 }},
82                 .radio = {
83                         .name = name_radio,
84                         .amux = LINE2,
85                 },
86         },
87         [SAA7134_BOARD_FLYVIDEO3000] = {
88                 /* "Marco d'Itri" <md@Linux.IT> */
89                 .name           = "LifeView FlyVIDEO3000",
90                 .audio_clock    = 0x00200000,
91                 .tuner_type     = TUNER_PHILIPS_PAL,
92                 .radio_type     = UNSET,
93                 .tuner_addr     = ADDR_UNSET,
94                 .radio_addr     = ADDR_UNSET,
95
96                 .gpiomask       = 0xe000,
97                 .inputs         = {{
98                         .name = name_tv,
99                         .vmux = 1,
100                         .amux = TV,
101                         .gpio = 0x8000,
102                         .tv   = 1,
103                 },{
104                         .name = name_tv_mono,
105                         .vmux = 1,
106                         .amux = LINE2,
107                         .gpio = 0x0000,
108                         .tv   = 1,
109                 },{
110                         .name = name_comp1,
111                         .vmux = 0,
112                         .amux = LINE2,
113                         .gpio = 0x4000,
114                 },{
115                         .name = name_comp2,
116                         .vmux = 3,
117                         .amux = LINE2,
118                         .gpio = 0x4000,
119                 },{
120                         .name = name_svideo,
121                         .vmux = 8,
122                         .amux = LINE2,
123                         .gpio = 0x4000,
124                 }},
125                 .radio = {
126                         .name = name_radio,
127                         .amux = LINE2,
128                         .gpio = 0x2000,
129                 },
130                 .mute = {
131                         .name = name_mute,
132                         .amux = TV,
133                         .gpio = 0x8000,
134                 },
135         },
136         [SAA7134_BOARD_FLYVIDEO2000] = {
137                 /* "TC Wan" <tcwan@cs.usm.my> */
138                 .name           = "LifeView FlyVIDEO2000",
139                 .audio_clock    = 0x00200000,
140                 .tuner_type     = TUNER_LG_PAL_NEW_TAPC,
141                 .radio_type     = UNSET,
142                 .tuner_addr     = ADDR_UNSET,
143                 .radio_addr     = ADDR_UNSET,
144
145                 .gpiomask       = 0xe000,
146                 .inputs         = {{
147                         .name = name_tv,
148                         .vmux = 1,
149                         .amux = LINE2,
150                         .gpio = 0x0000,
151                         .tv   = 1,
152                 },{
153                         .name = name_comp1,
154                         .vmux = 0,
155                         .amux = LINE2,
156                         .gpio = 0x4000,
157                 },{
158                         .name = name_comp2,
159                         .vmux = 3,
160                         .amux = LINE2,
161                         .gpio = 0x4000,
162                 },{
163                         .name = name_svideo,
164                         .vmux = 8,
165                         .amux = LINE2,
166                         .gpio = 0x4000,
167                 }},
168                 .radio = {
169                         .name = name_radio,
170                         .amux = LINE2,
171                         .gpio = 0x2000,
172                 },
173                 .mute = {
174                         .name = name_mute,
175                         .amux = LINE2,
176                         .gpio = 0x8000,
177                 },
178         },
179         [SAA7134_BOARD_FLYTVPLATINUM_MINI] = {
180                 /* "Arnaud Quette" <aquette@free.fr> */
181                 .name           = "LifeView FlyTV Platinum Mini",
182                 .audio_clock    = 0x00200000,
183                 .tuner_type     = TUNER_PHILIPS_TDA8290,
184                 .radio_type     = UNSET,
185                 .tuner_addr     = ADDR_UNSET,
186                 .radio_addr     = ADDR_UNSET,
187
188                 .inputs         = {{
189                         .name = name_tv,
190                         .vmux = 1,
191                         .amux = TV,
192                         .tv   = 1,
193                 },{
194                         .name = name_comp1,     /* Composite signal on S-Video input */
195                         .vmux = 0,
196                         .amux = LINE2,
197                 },{
198                         .name = name_comp2,     /* Composite input */
199                         .vmux = 3,
200                         .amux = LINE2,
201                 },{
202                         .name = name_svideo,
203                         .vmux = 8,
204                         .amux = LINE2,
205                 }},
206         },
207         [SAA7134_BOARD_FLYTVPLATINUM_FM] = {
208                 /* LifeView FlyTV Platinum FM (LR214WF) */
209                 /* "Peter Missel <peter.missel@onlinehome.de> */
210                 .name           = "LifeView FlyTV Platinum FM",
211                 .audio_clock    = 0x00200000,
212                 .tuner_type     = TUNER_PHILIPS_TDA8290,
213                 .radio_type     = UNSET,
214                 .tuner_addr     = ADDR_UNSET,
215                 .radio_addr     = ADDR_UNSET,
216
217                 .gpiomask       = 0x1E000,      /* Set GP16 and unused 15,14,13 to Output */
218                 .inputs         = {{
219                         .name = name_tv,
220                         .vmux = 1,
221                         .amux = TV,
222                         .gpio = 0x10000,        /* GP16=1 selects TV input */
223                         .tv   = 1,
224                 },{
225 /*                      .name = name_tv_mono,
226                         .vmux = 1,
227                         .amux = LINE2,
228                         .gpio = 0x0000,
229                         .tv   = 1,
230                 },{
231 */                      .name = name_comp1,     /* Composite signal on S-Video input */
232                         .vmux = 0,
233                         .amux = LINE2,
234 /*                      .gpio = 0x4000,         */
235                 },{
236                         .name = name_comp2,     /* Composite input */
237                         .vmux = 3,
238                         .amux = LINE2,
239 /*                      .gpio = 0x4000,         */
240                 },{
241                         .name = name_svideo,    /* S-Video signal on S-Video input */
242                         .vmux = 8,
243                         .amux = LINE2,
244 /*                      .gpio = 0x4000,         */
245                 }},
246                 .radio = {
247                         .name = name_radio,
248                         .amux = TV,
249                         .gpio = 0x00000,        /* GP16=0 selects FM radio antenna */
250                 },
251                 .mute = {
252                         .name = name_mute,
253                         .amux = TV,
254                         .gpio = 0x10000,
255                 },
256         },
257         [SAA7134_BOARD_EMPRESS] = {
258                 /* "Gert Vervoort" <gert.vervoort@philips.com> */
259                 .name           = "EMPRESS",
260                 .audio_clock    = 0x00187de7,
261                 .tuner_type     = TUNER_PHILIPS_PAL,
262                 .radio_type     = UNSET,
263                 .tuner_addr     = ADDR_UNSET,
264                 .radio_addr     = ADDR_UNSET,
265
266                 .inputs         = {{
267                         .name = name_comp1,
268                         .vmux = 0,
269                         .amux = LINE1,
270                 },{
271                         .name = name_svideo,
272                         .vmux = 8,
273                         .amux = LINE1,
274                 },{
275                         .name = name_tv,
276                         .vmux = 1,
277                         .amux = LINE2,
278                         .tv   = 1,
279                 }},
280                 .radio = {
281                         .name = name_radio,
282                         .amux = LINE2,
283                 },
284                 .mpeg      = SAA7134_MPEG_EMPRESS,
285                 .video_out = CCIR656,
286         },
287         [SAA7134_BOARD_MONSTERTV] = {
288                 /* "K.Ohta" <alpha292@bremen.or.jp> */
289                 .name           = "SKNet Monster TV",
290                 .audio_clock    = 0x00187de7,
291                 .tuner_type     = TUNER_PHILIPS_NTSC_M,
292                 .radio_type     = UNSET,
293                 .tuner_addr     = ADDR_UNSET,
294                 .radio_addr     = ADDR_UNSET,
295
296                 .inputs         = {{
297                         .name = name_tv,
298                         .vmux = 1,
299                         .amux = TV,
300                         .tv   = 1,
301                 },{
302                         .name = name_comp1,
303                         .vmux = 0,
304                         .amux = LINE1,
305                 },{
306                         .name = name_svideo,
307                         .vmux = 8,
308                         .amux = LINE1,
309                 }},
310                 .radio = {
311                         .name = name_radio,
312                         .amux = LINE2,
313                 },
314         },
315         [SAA7134_BOARD_MD9717] = {
316                 .name           = "Tevion MD 9717",
317                 .audio_clock    = 0x00200000,
318                 .tuner_type     = TUNER_PHILIPS_PAL,
319                 .radio_type     = UNSET,
320                 .tuner_addr     = ADDR_UNSET,
321                 .radio_addr     = ADDR_UNSET,
322                 .inputs         = {{
323                         .name = name_tv,
324                         .vmux = 1,
325                         .amux = TV,
326                         .tv   = 1,
327                 },{
328                         /* workaround for problems with normal TV sound */
329                         .name = name_tv_mono,
330                         .vmux = 1,
331                         .amux = LINE2,
332                         .tv   = 1,
333                 },{
334                         .name = name_comp1,
335                         .vmux = 2,
336                         .amux = LINE1,
337                 },{
338                         .name = name_comp2,
339                         .vmux = 3,
340                         .amux = LINE1,
341                 },{
342                         .name = name_svideo,
343                         .vmux = 8,
344                         .amux = LINE1,
345                 }},
346                 .radio = {
347                         .name = name_radio,
348                         .amux = LINE2,
349                 },
350         },
351         [SAA7134_BOARD_TVSTATION_RDS] = {
352                 /* Typhoon TV Tuner RDS: Art.Nr. 50694 */
353                 .name           = "KNC One TV-Station RDS / Typhoon TV Tuner RDS",
354                 .audio_clock    = 0x00200000,
355                 .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
356                 .radio_type     = UNSET,
357                 .tuner_addr     = ADDR_UNSET,
358                 .radio_addr     = ADDR_UNSET,
359                 .tda9887_conf   = TDA9887_PRESENT,
360                 .inputs         = {{
361                         .name = name_tv,
362                         .vmux = 1,
363                         .amux = TV,
364                         .tv   = 1,
365                 },{
366                         .name = name_tv_mono,
367                         .vmux = 1,
368                         .amux   = LINE2,
369                         .tv   = 1,
370                 },{
371
372                         .name = name_svideo,
373                         .vmux = 8,
374                         .amux = LINE1,
375                 },{
376                         .name = name_comp1,
377                         .vmux = 3,
378                         .amux = LINE1,
379                 },{
380
381                         .name = "CVid over SVid",
382                         .vmux = 0,
383                         .amux = LINE1,
384                 }},
385                 .radio = {
386                         .name = name_radio,
387                         .amux = LINE2,
388                 },
389         },
390         [SAA7134_BOARD_TVSTATION_DVR] = {
391                 .name           = "KNC One TV-Station DVR",
392                 .audio_clock    = 0x00200000,
393                 .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
394                 .radio_type     = UNSET,
395                 .tuner_addr     = ADDR_UNSET,
396                 .radio_addr     = ADDR_UNSET,
397                 .tda9887_conf   = TDA9887_PRESENT,
398                 .gpiomask       = 0x820000,
399                 .inputs         = {{
400                         .name = name_tv,
401                         .vmux = 1,
402                         .amux = LINE2,
403                         .tv   = 1,
404                         .gpio = 0x20000,
405                 },{
406                         .name = name_svideo,
407                         .vmux = 8,
408                         .amux = LINE1,
409                         .gpio = 0x20000,
410                 },{
411                         .name = name_comp1,
412                         .vmux = 3,
413                         .amux = LINE1,
414                         .gpio = 0x20000,
415                 }},
416                 .radio          = {
417                         .name = name_radio,
418                         .amux = LINE2,
419                         .gpio = 0x20000,
420                 },
421                 .mpeg           = SAA7134_MPEG_EMPRESS,
422                 .video_out      = CCIR656,
423         },
424         [SAA7134_BOARD_CINERGY400] = {
425                 .name           = "Terratec Cinergy 400 TV",
426                 .audio_clock    = 0x00200000,
427                 .tuner_type     = TUNER_PHILIPS_PAL,
428                 .radio_type     = UNSET,
429                 .tuner_addr     = ADDR_UNSET,
430                 .radio_addr     = ADDR_UNSET,
431                 .inputs         = {{
432                         .name = name_tv,
433                         .vmux = 1,
434                         .amux = TV,
435                         .tv   = 1,
436                 },{
437                         .name = name_comp1,
438                         .vmux = 4,
439                         .amux = LINE1,
440                 },{
441                         .name = name_svideo,
442                         .vmux = 8,
443                         .amux = LINE1,
444                 },{
445                         .name = name_comp2, /* CVideo over SVideo Connector */
446                         .vmux = 0,
447                         .amux = LINE1,
448                 }}
449         },
450         [SAA7134_BOARD_MD5044] = {
451                 .name           = "Medion 5044",
452                 .audio_clock    = 0x00187de7, /* was: 0x00200000, */
453                 .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
454                 .radio_type     = UNSET,
455                 .tuner_addr     = ADDR_UNSET,
456                 .radio_addr     = ADDR_UNSET,
457                 .tda9887_conf   = TDA9887_PRESENT,
458                 .inputs         = {{
459                         .name = name_tv,
460                         .vmux = 1,
461                         .amux = TV,
462                         .tv   = 1,
463                 },{
464                         /* workaround for problems with normal TV sound */
465                         .name = name_tv_mono,
466                         .vmux = 1,
467                         .amux = LINE2,
468                         .tv   = 1,
469                 },{
470                         .name = name_comp1,
471                         .vmux = 0,
472                         .amux = LINE2,
473                 },{
474                         .name = name_comp2,
475                         .vmux = 3,
476                         .amux = LINE2,
477                 },{
478                         .name = name_svideo,
479                         .vmux = 8,
480                         .amux = LINE2,
481                 }},
482                 .radio = {
483                         .name = name_radio,
484                         .amux = LINE2,
485                 },
486         },
487         [SAA7134_BOARD_KWORLD] = {
488                 .name           = "Kworld/KuroutoShikou SAA7130-TVPCI",
489                 .audio_clock    = 0x00187de7,
490                 .tuner_type     = TUNER_PHILIPS_NTSC_M,
491                 .radio_type     = UNSET,
492                 .tuner_addr     = ADDR_UNSET,
493                 .radio_addr     = ADDR_UNSET,
494                 .inputs         = {{
495                         .name = name_svideo,
496                         .vmux = 8,
497                         .amux = LINE1,
498                 },{
499                         .name = name_comp1,
500                         .vmux = 3,
501                         .amux = LINE1,
502                 },{
503                         .name = name_tv,
504                         .vmux = 1,
505                         .amux = LINE2,
506                         .tv   = 1,
507                 }},
508         },
509         [SAA7134_BOARD_CINERGY600] = {
510                 .name           = "Terratec Cinergy 600 TV",
511                 .audio_clock    = 0x00200000,
512                 .tuner_type     = TUNER_PHILIPS_PAL,
513                 .radio_type     = UNSET,
514                 .tuner_addr     = ADDR_UNSET,
515                 .radio_addr     = ADDR_UNSET,
516                 .tda9887_conf   = TDA9887_PRESENT,
517                 .inputs         = {{
518                         .name = name_tv,
519                         .vmux = 1,
520                         .amux = TV,
521                         .tv   = 1,
522                 },{
523                         .name = name_comp1,
524                         .vmux = 4,
525                         .amux = LINE1,
526                 },{
527                         .name = name_svideo,
528                         .vmux = 8,
529                         .amux = LINE1,
530                 },{
531                         .name = name_comp2, /* CVideo over SVideo Connector */
532                         .vmux = 0,
533                         .amux = LINE1,
534                 }},
535                 .radio = {
536                         .name = name_radio,
537                         .amux = LINE2,
538         },
539         },
540         [SAA7134_BOARD_MD7134] = {
541                 .name           = "Medion 7134",
542                 .audio_clock    = 0x00187de7,
543                 .tuner_type     = TUNER_PHILIPS_FMD1216ME_MK3,
544                 .radio_type     = UNSET,
545                 .tuner_addr     = ADDR_UNSET,
546                 .radio_addr     = ADDR_UNSET,
547                 .tda9887_conf   = TDA9887_PRESENT,
548                 .mpeg           = SAA7134_MPEG_DVB,
549                 .inputs = {{
550                         .name   = name_tv,
551                         .vmux   = 1,
552                         .amux   = TV,
553                         .tv     = 1,
554                 },{
555                         .name   = name_comp1,
556                         .vmux   = 0,
557                         .amux   = LINE1,
558                 },{
559                         .name   = name_svideo,
560                         .vmux   = 8,
561                         .amux   = LINE1,
562                 }},
563                 .radio = {
564                         .name   = name_radio,
565                         .amux   = LINE2,
566                 },
567         },
568         [SAA7134_BOARD_TYPHOON_90031] = {
569                 /* aka Typhoon "TV+Radio", Art.Nr 90031 */
570                 /* Tom Zoerner <tomzo at users sourceforge net> */
571                 .name           = "Typhoon TV+Radio 90031",
572                 .audio_clock    = 0x00200000,
573                 .tuner_type     = TUNER_PHILIPS_PAL,
574                 .radio_type     = UNSET,
575                 .tuner_addr     = ADDR_UNSET,
576                 .radio_addr     = ADDR_UNSET,
577                 .tda9887_conf   = TDA9887_PRESENT,
578                 .inputs         = {{
579                         .name   = name_tv,
580                         .vmux   = 1,
581                         .amux   = TV,
582                         .tv     = 1,
583                 },{
584                         .name   = name_comp1,
585                         .vmux   = 3,
586                         .amux   = LINE1,
587                 },{
588                         .name   = name_svideo,
589                         .vmux   = 8,
590                         .amux   = LINE1,
591                 }},
592                 .radio = {
593                         .name   = name_radio,
594                         .amux   = LINE2,
595                 },
596         },
597         [SAA7134_BOARD_ELSA] = {
598                 .name           = "ELSA EX-VISION 300TV",
599                 .audio_clock    = 0x00187de7,
600                 .tuner_type     = TUNER_HITACHI_NTSC,
601                 .radio_type     = UNSET,
602                 .tuner_addr     = ADDR_UNSET,
603                 .radio_addr     = ADDR_UNSET,
604                 .inputs         = {{
605                         .name = name_svideo,
606                         .vmux = 8,
607                         .amux = LINE1,
608                 },{
609                         .name   = name_comp1,
610                         .vmux   = 0,
611                         .amux   = LINE1,
612                 },{
613                         .name = name_tv,
614                         .vmux = 4,
615                         .amux = LINE2,
616                         .tv   = 1,
617                 }},
618         },
619         [SAA7134_BOARD_ELSA_500TV] = {
620                 .name           = "ELSA EX-VISION 500TV",
621                 .audio_clock    = 0x00187de7,
622                 .tuner_type     = TUNER_HITACHI_NTSC,
623                 .radio_type     = UNSET,
624                 .tuner_addr     = ADDR_UNSET,
625                 .radio_addr     = ADDR_UNSET,
626                 .inputs         = {{
627                         .name = name_svideo,
628                         .vmux = 7,
629                         .amux = LINE1,
630                 },{
631                         .name = name_tv,
632                         .vmux = 8,
633                         .amux = TV,
634                         .tv   = 1,
635                 },{
636                         .name = name_tv_mono,
637                         .vmux = 8,
638                         .amux = LINE2,
639                         .tv   = 1,
640                 }},
641         },
642         [SAA7134_BOARD_ASUSTeK_TVFM7134] = {
643                 .name           = "ASUS TV-FM 7134",
644                 .audio_clock    = 0x00187de7,
645                 .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
646                 .radio_type     = UNSET,
647                 .tuner_addr     = ADDR_UNSET,
648                 .radio_addr     = ADDR_UNSET,
649                 .tda9887_conf   = TDA9887_PRESENT,
650                 .inputs         = {{
651                         .name = name_tv,
652                         .vmux = 1,
653                         .amux = TV,
654                         .tv   = 1,
655                 },{
656                         .name = name_comp1,
657                         .vmux = 4,
658                         .amux = LINE2,
659                 },{
660                         .name = name_svideo,
661                         .vmux = 6,
662                         .amux = LINE2,
663                 }},
664                 .radio = {
665                         .name = name_radio,
666                         .amux = LINE1,
667                 },
668         },
669         [SAA7134_BOARD_ASUSTeK_TVFM7135] = {
670                 .name           = "ASUS TV-FM 7135",
671                 .audio_clock    = 0x00187de7,
672                 .tuner_type     = TUNER_PHILIPS_TDA8290,
673                 .radio_type     = UNSET,
674                 .tuner_addr     = ADDR_UNSET,
675                 .radio_addr     = ADDR_UNSET,
676                 .gpiomask       = 0x200000,
677                 .inputs         = {{
678                         .name = name_tv,
679                         .vmux = 1,
680                         .amux = TV,
681                         .gpio = 0x0000,
682                         .tv   = 1,
683                 },{
684                         .name = name_comp1,
685                         .vmux = 4,
686                         .amux = LINE2,
687                         .gpio = 0x0000,
688                 },{
689                         .name = name_svideo,
690                         .vmux = 6,
691                         .amux = LINE2,
692                         .gpio = 0x0000,
693                 }},
694                 .radio = {
695                         .name = name_radio,
696                         .amux = TV,
697                         .gpio = 0x200000,
698                 },
699                 .mute  = {
700                         .name = name_mute,
701                         .gpio = 0x0000,
702                 },
703
704         },
705         [SAA7134_BOARD_VA1000POWER] = {
706                 .name           = "AOPEN VA1000 POWER",
707                 .audio_clock    = 0x00187de7,
708                 .tuner_type     = TUNER_PHILIPS_NTSC,
709                 .radio_type     = UNSET,
710                 .tuner_addr     = ADDR_UNSET,
711                 .radio_addr     = ADDR_UNSET,
712                 .inputs         = {{
713                         .name = name_svideo,
714                         .vmux = 8,
715                         .amux = LINE1,
716                 },{
717                         .name = name_comp1,
718                         .vmux = 3,
719                         .amux = LINE1,
720                 },{
721                         .name = name_tv,
722                         .vmux = 1,
723                         .amux = LINE2,
724                         .tv   = 1,
725                 }},
726         },
727         [SAA7134_BOARD_10MOONSTVMASTER] = {
728                 /* "lilicheng" <llc@linuxfans.org> */
729                 .name           = "10MOONS PCI TV CAPTURE CARD",
730                 .audio_clock    = 0x00200000,
731                 .tuner_type     = TUNER_LG_PAL_NEW_TAPC,
732                 .radio_type     = UNSET,
733                 .tuner_addr     = ADDR_UNSET,
734                 .radio_addr     = ADDR_UNSET,
735                 .gpiomask       = 0xe000,
736                 .inputs         = {{
737                         .name = name_tv,
738                         .vmux = 1,
739                         .amux = LINE2,
740                         .gpio = 0x0000,
741                         .tv   = 1,
742                 },{
743                         .name = name_comp1,
744                         .vmux = 0,
745                         .amux = LINE2,
746                         .gpio = 0x4000,
747                 },{
748                         .name = name_comp2,
749                         .vmux = 3,
750                         .amux = LINE2,
751                         .gpio = 0x4000,
752                 },{
753                         .name = name_svideo,
754                         .vmux = 8,
755                         .amux = LINE2,
756                         .gpio = 0x4000,
757                 }},
758                 .radio = {
759                         .name = name_radio,
760                         .amux = LINE2,
761                         .gpio = 0x2000,
762                 },
763                 .mute = {
764                         .name = name_mute,
765                         .amux = LINE2,
766                         .gpio = 0x8000,
767                 },
768         },
769         [SAA7134_BOARD_BMK_MPEX_NOTUNER] = {
770                 /* "Andrew de Quincey" <adq@lidskialf.net> */
771                 .name           = "BMK MPEX No Tuner",
772                 .audio_clock    = 0x200000,
773                 .tuner_type     = TUNER_ABSENT,
774                 .radio_type     = UNSET,
775                 .tuner_addr     = ADDR_UNSET,
776                 .radio_addr     = ADDR_UNSET,
777                 .inputs         = {{
778                         .name = name_comp1,
779                         .vmux = 4,
780                         .amux = LINE1,
781                 },{
782                         .name = name_comp2,
783                         .vmux = 3,
784                         .amux = LINE1,
785                 },{
786                         .name = name_comp3,
787                         .vmux = 0,
788                         .amux = LINE1,
789                 },{
790                         .name = name_comp4,
791                         .vmux = 1,
792                         .amux = LINE1,
793                 },{
794                         .name = name_svideo,
795                         .vmux = 8,
796                         .amux = LINE1,
797                 }},
798                 .mpeg      = SAA7134_MPEG_EMPRESS,
799                 .video_out = CCIR656,
800         },
801         [SAA7134_BOARD_VIDEOMATE_TV] = {
802                 .name           = "Compro VideoMate TV",
803                 .audio_clock    = 0x00187de7,
804                 .tuner_type     = TUNER_PHILIPS_NTSC_M,
805                 .radio_type     = UNSET,
806                 .tuner_addr     = ADDR_UNSET,
807                 .radio_addr     = ADDR_UNSET,
808                 .inputs         = {{
809                         .name = name_svideo,
810                         .vmux = 8,
811                         .amux = LINE1,
812                 },{
813                         .name = name_comp1,
814                         .vmux = 3,
815                         .amux = LINE1,
816                 },{
817                         .name = name_tv,
818                         .vmux = 1,
819                         .amux = LINE2,
820                         .tv   = 1,
821                 }},
822         },
823         [SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUS] = {
824                 .name           = "Compro VideoMate TV Gold+",
825                 .audio_clock    = 0x00187de7,
826                 .tuner_type     = TUNER_PHILIPS_NTSC_M,
827                 .gpiomask       = 0x800c0000,
828                 .radio_type     = UNSET,
829                 .tuner_addr     = ADDR_UNSET,
830                 .radio_addr     = ADDR_UNSET,
831                 .inputs         = {{
832                         .name = name_svideo,
833                         .vmux = 8,
834                         .amux = LINE1,
835                         .gpio = 0x06c00012,
836                 },{
837                         .name = name_comp1,
838                         .vmux = 3,
839                         .amux = LINE1,
840                         .gpio = 0x0ac20012,
841                 },{
842                         .name = name_tv,
843                         .vmux = 1,
844                         .amux = LINE2,
845                         .gpio = 0x08c20012,
846                         .tv   = 1,
847                 }},                             /* radio and probably mute is missing */
848         },
849         [SAA7134_BOARD_CRONOS_PLUS] = {
850                 /*
851                 gpio pins:
852                         0  .. 3   BASE_ID
853                         4  .. 7   PROTECT_ID
854                         8  .. 11  USER_OUT
855                         12 .. 13  USER_IN
856                         14 .. 15  VIDIN_SEL
857                 */
858                 .name           = "Matrox CronosPlus",
859                 .tuner_type     = TUNER_ABSENT,
860                 .radio_type     = UNSET,
861                 .tuner_addr     = ADDR_UNSET,
862                 .radio_addr     = ADDR_UNSET,
863                 .gpiomask       = 0xcf00,
864                 .inputs         = {{
865                         .name = name_comp1,
866                         .vmux = 0,
867                         .gpio = 2 << 14,
868                 },{
869                         .name = name_comp2,
870                         .vmux = 0,
871                         .gpio = 1 << 14,
872                 },{
873                         .name = name_comp3,
874                         .vmux = 0,
875                         .gpio = 0 << 14,
876                 },{
877                         .name = name_comp4,
878                         .vmux = 0,
879                         .gpio = 3 << 14,
880                 },{
881                         .name = name_svideo,
882                         .vmux = 8,
883                         .gpio = 2 << 14,
884                 }},
885         },
886         [SAA7134_BOARD_MD2819] = {
887                 .name           = "AverMedia M156 / Medion 2819",
888                 .audio_clock    = 0x00187de7,
889                 .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
890                 .radio_type     = UNSET,
891                 .tuner_addr     = ADDR_UNSET,
892                 .radio_addr     = ADDR_UNSET,
893                 .tda9887_conf   = TDA9887_PRESENT,
894                 .inputs         = {{
895                         .name = name_tv,
896                         .vmux = 1,
897                         .amux = TV,
898                         .tv   = 1,
899                 },{
900                         .name = name_comp1,
901                         .vmux = 0,
902                         .amux = LINE2,
903                 },{
904                         .name = name_comp2,
905                         .vmux = 3,
906                         .amux = LINE2,
907                 },{
908                         .name = name_svideo,
909                         .vmux = 8,
910                         .amux = LINE2,
911                 }},
912                 .radio = {
913                         .name = name_radio,
914                         .amux = LINE2,
915                 },
916         },
917         [SAA7134_BOARD_BMK_MPEX_TUNER] = {
918                 /* "Greg Wickham <greg.wickham@grangenet.net> */
919                 .name           = "BMK MPEX Tuner",
920                 .audio_clock    = 0x200000,
921                 .tuner_type     = TUNER_PHILIPS_PAL,
922                 .radio_type     = UNSET,
923                 .tuner_addr     = ADDR_UNSET,
924                 .radio_addr     = ADDR_UNSET,
925                 .inputs         = {{
926                         .name = name_comp1,
927                         .vmux = 1,
928                         .amux = LINE1,
929                 },{
930                         .name = name_svideo,
931                         .vmux = 8,
932                         .amux = LINE1,
933                 },{
934                         .name = name_tv,
935                         .vmux = 3,
936                         .amux = TV,
937                         .tv   = 1,
938                 }},
939                 .mpeg      = SAA7134_MPEG_EMPRESS,
940                 .video_out = CCIR656,
941         },
942         [SAA7134_BOARD_ASUSTEK_TVFM7133] = {
943                 .name           = "ASUS TV-FM 7133",
944                 .audio_clock    = 0x00187de7,
945                 /* probably wrong, the 7133 one is the NTSC version ...
946                 * .tuner_type  = TUNER_PHILIPS_FM1236_MK3 */
947                 .tuner_type     = TUNER_LG_NTSC_NEW_TAPC,
948                 .radio_type     = UNSET,
949                 .tuner_addr     = ADDR_UNSET,
950                 .radio_addr     = ADDR_UNSET,
951                 .tda9887_conf   = TDA9887_PRESENT,
952                 .inputs         = {{
953                         .name = name_tv,
954                         .vmux = 1,
955                         .amux = TV,
956                         .tv   = 1,
957
958                 },{
959                         .name = name_comp1,
960                         .vmux = 4,
961                         .amux = LINE2,
962                 },{
963                         .name = name_svideo,
964                         .vmux = 6,
965                         .amux = LINE2,
966                 }},
967                 .radio = {
968                         .name = name_radio,
969                         .amux = LINE1,
970                 },
971         },
972         [SAA7134_BOARD_PINNACLE_PCTV_STEREO] = {
973                 .name           = "Pinnacle PCTV Stereo (saa7134)",
974                 .audio_clock    = 0x00187de7,
975                 .tuner_type     = TUNER_MT2032,
976                 .radio_type     = UNSET,
977                 .tuner_addr     = ADDR_UNSET,
978                 .radio_addr     = ADDR_UNSET,
979                 .tda9887_conf   = TDA9887_PRESENT | TDA9887_INTERCARRIER,
980                 .inputs         = {{
981                         .name = name_tv,
982                         .vmux = 3,
983                         .amux = TV,
984                         .tv   = 1,
985                 },{
986                         .name = name_comp1,
987                         .vmux = 0,
988                         .amux = LINE2,
989                 },{
990                         .name = name_comp2,
991                         .vmux = 1,
992                         .amux = LINE2,
993                 },{
994                         .name = name_svideo,
995                         .vmux = 8,
996                         .amux = LINE2,
997                 }},
998         },
999         [SAA7134_BOARD_MANLI_MTV002] = {
1000                 /* Ognjen Nastic <ognjen@logosoft.ba> */
1001                 .name           = "Manli MuchTV M-TV002/Behold TV 403 FM",
1002                 .audio_clock    = 0x00200000,
1003                 .tuner_type     = TUNER_PHILIPS_PAL,
1004                 .radio_type     = UNSET,
1005                 .tuner_addr     = ADDR_UNSET,
1006                 .radio_addr     = ADDR_UNSET,
1007                 .inputs         = {{
1008                         .name = name_svideo,
1009                         .vmux = 8,
1010                         .amux = LINE1,
1011                 },{
1012                         .name   = name_comp1,
1013                         .vmux   = 1,
1014                         .amux   = LINE1,
1015                 },{
1016                         .name = name_tv,
1017                         .vmux = 3,
1018                         .amux = LINE2,
1019                         .tv   = 1,
1020                 }},
1021                 .radio = {
1022                         .name = name_radio,
1023                         .amux = LINE2,
1024                 },
1025         },
1026         [SAA7134_BOARD_MANLI_MTV001] = {
1027                 /* Ognjen Nastic <ognjen@logosoft.ba> UNTESTED */
1028                 .name           = "Manli MuchTV M-TV001/Behold TV 401",
1029                 .audio_clock    = 0x00200000,
1030                 .tuner_type     = TUNER_PHILIPS_PAL,
1031                 .radio_type     = UNSET,
1032                 .tuner_addr     = ADDR_UNSET,
1033                 .radio_addr     = ADDR_UNSET,
1034                 .inputs         = {{
1035                         .name = name_svideo,
1036                         .vmux = 8,
1037                         .amux = LINE1,
1038                 },{
1039                         .name = name_comp1,
1040                         .vmux = 1,
1041                         .amux = LINE1,
1042                 },{
1043                         .name = name_tv,
1044                         .vmux = 3,
1045                         .amux = LINE2,
1046                         .tv   = 1,
1047                 }},
1048                 .mute = {
1049                         .name = name_mute,
1050                         .amux = LINE1,
1051                 },
1052         },
1053         [SAA7134_BOARD_TG3000TV] = {
1054                 /* TransGear 3000TV */
1055                 .name           = "Nagase Sangyo TransGear 3000TV",
1056                 .audio_clock    = 0x00187de7,
1057                 .tuner_type     = TUNER_PHILIPS_NTSC_M,
1058                 .radio_type     = UNSET,
1059                 .tuner_addr     = ADDR_UNSET,
1060                 .radio_addr     = ADDR_UNSET,
1061                 .inputs         = {{
1062                         .name = name_tv,
1063                         .vmux = 1,
1064                         .amux = LINE2,
1065                         .tv   = 1,
1066                 },{
1067                         .name = name_comp1,
1068                         .vmux = 3,
1069                         .amux = LINE2,
1070                 },{
1071                         .name = name_svideo,
1072                         .vmux = 8,
1073                         .amux = LINE2,
1074                 }},
1075         },
1076         [SAA7134_BOARD_ECS_TVP3XP] = {
1077                 .name           = "Elitegroup ECS TVP3XP FM1216 Tuner Card(PAL-BG,FM) ",
1078                 .audio_clock    = 0x187de7,  /* xtal 32.1 MHz */
1079                 .tuner_type     = TUNER_PHILIPS_PAL,
1080                 .radio_type     = UNSET,
1081                 .tuner_addr     = ADDR_UNSET,
1082                 .radio_addr     = ADDR_UNSET,
1083                 .inputs         = {{
1084                         .name   = name_tv,
1085                         .vmux   = 1,
1086                         .amux   = TV,
1087                         .tv     = 1,
1088                 },{
1089                         .name   = name_tv_mono,
1090                         .vmux   = 1,
1091                         .amux   = LINE2,
1092                         .tv     = 1,
1093                 },{
1094                         .name   = name_comp1,
1095                         .vmux   = 3,
1096                         .amux   = LINE1,
1097                 },{
1098                         .name   = name_svideo,
1099                         .vmux   = 8,
1100                         .amux   = LINE1,
1101                 },{
1102                         .name   = "CVid over SVid",
1103                         .vmux   = 0,
1104                         .amux   = LINE1,
1105                 }},
1106                 .radio = {
1107                         .name   = name_radio,
1108                         .amux   = LINE2,
1109                 },
1110         },
1111         [SAA7134_BOARD_ECS_TVP3XP_4CB5] = {
1112                 .name           = "Elitegroup ECS TVP3XP FM1236 Tuner Card (NTSC,FM)",
1113                 .audio_clock    = 0x187de7,
1114                 .tuner_type     = TUNER_PHILIPS_NTSC,
1115                 .radio_type     = UNSET,
1116                 .tuner_addr     = ADDR_UNSET,
1117                 .radio_addr     = ADDR_UNSET,
1118                 .inputs         = {{
1119                         .name   = name_tv,
1120                         .vmux   = 1,
1121                         .amux   = TV,
1122                         .tv     = 1,
1123                 },{
1124                         .name   = name_tv_mono,
1125                         .vmux   = 1,
1126                         .amux   = LINE2,
1127                         .tv     = 1,
1128                 },{
1129                         .name   = name_comp1,
1130                         .vmux   = 3,
1131                         .amux   = LINE1,
1132                 },{
1133                         .name   = name_svideo,
1134                         .vmux   = 8,
1135                         .amux   = LINE1,
1136                 },{
1137                         .name   = "CVid over SVid",
1138                         .vmux   = 0,
1139                         .amux   = LINE1,
1140                 }},
1141                 .radio = {
1142                         .name   = name_radio,
1143                         .amux   = LINE2,
1144                 },
1145         },
1146         [SAA7134_BOARD_AVACSSMARTTV] = {
1147                 /* Roman Pszonczenko <romka@kolos.math.uni.lodz.pl> */
1148                 .name           = "AVACS SmartTV",
1149                 .audio_clock    = 0x00187de7,
1150                 .tuner_type     = TUNER_PHILIPS_PAL,
1151                 .radio_type     = UNSET,
1152                 .tuner_addr     = ADDR_UNSET,
1153                 .radio_addr     = ADDR_UNSET,
1154                 .inputs         = {{
1155                         .name = name_tv,
1156                         .vmux = 1,
1157                         .amux = TV,
1158                         .tv   = 1,
1159                 },{
1160                         .name = name_tv_mono,
1161                         .vmux = 1,
1162                         .amux = LINE2,
1163                         .tv   = 1,
1164                 },{
1165                         .name = name_comp1,
1166                         .vmux = 0,
1167                         .amux = LINE2,
1168                 },{
1169                         .name = name_comp2,
1170                         .vmux = 3,
1171                         .amux = LINE2,
1172                 },{
1173                         .name = name_svideo,
1174                         .vmux = 8,
1175                         .amux = LINE2,
1176                 }},
1177                 .radio = {
1178                         .name = name_radio,
1179                         .amux = LINE2,
1180                         .gpio = 0x200000,
1181                 },
1182         },
1183         [SAA7134_BOARD_AVERMEDIA_DVD_EZMAKER] = {
1184                 /* Michael Smith <msmith@cbnco.com> */
1185                 .name           = "AVerMedia DVD EZMaker",
1186                 .audio_clock    = 0x00187de7,
1187                 .tuner_type     = TUNER_ABSENT,
1188                 .radio_type     = UNSET,
1189                 .tuner_addr     = ADDR_UNSET,
1190                 .radio_addr     = ADDR_UNSET,
1191                 .inputs         = {{
1192                         .name = name_comp1,
1193                         .vmux = 3,
1194                 },{
1195                         .name = name_svideo,
1196                         .vmux = 8,
1197                 }},
1198         },
1199         [SAA7134_BOARD_NOVAC_PRIMETV7133] = {
1200                 /* toshii@netbsd.org */
1201                 .name           = "Noval Prime TV 7133",
1202                 .audio_clock    = 0x00200000,
1203                 .tuner_type     = TUNER_ALPS_TSBH1_NTSC,
1204                 .radio_type     = UNSET,
1205                 .tuner_addr     = ADDR_UNSET,
1206                 .radio_addr     = ADDR_UNSET,
1207                 .inputs         = {{
1208                         .name = name_comp1,
1209                         .vmux = 3,
1210                 },{
1211                         .name = name_tv,
1212                         .vmux = 1,
1213                         .amux = TV,
1214                         .tv   = 1,
1215                 },{
1216                         .name = name_svideo,
1217                         .vmux = 8,
1218                 }},
1219         },
1220         [SAA7134_BOARD_AVERMEDIA_STUDIO_305] = {
1221                 .name           = "AverMedia AverTV Studio 305",
1222                 .audio_clock    = 0x00187de7,
1223                 .tuner_type     = TUNER_PHILIPS_FM1256_IH3,
1224                 .radio_type     = UNSET,
1225                 .tuner_addr     = ADDR_UNSET,
1226                 .radio_addr     = ADDR_UNSET,
1227                 .tda9887_conf   = TDA9887_PRESENT,
1228                 .inputs         = {{
1229                         .name = name_tv,
1230                         .vmux = 1,
1231                         .amux = LINE2,
1232                         .tv   = 1,
1233                 },{
1234                         .name = name_comp1,
1235                         .vmux = 0,
1236                         .amux = LINE2,
1237                 },{
1238                         .name = name_comp2,
1239                         .vmux = 3,
1240                         .amux = LINE2,
1241                 },{
1242                         .name = name_svideo,
1243                         .vmux = 8,
1244                         .amux = LINE2,
1245                 }},
1246                 .radio = {
1247                         .name = name_radio,
1248                         .amux = LINE2,
1249                 },
1250                 .mute = {
1251                         .name = name_mute,
1252                         .amux = LINE1,
1253                 },
1254         },
1255         [SAA7134_BOARD_UPMOST_PURPLE_TV] = {
1256                 .name           = "UPMOST PURPLE TV",
1257                 .audio_clock    = 0x00187de7,
1258                 .tuner_type     = TUNER_PHILIPS_FM1236_MK3,
1259                 .radio_type     = UNSET,
1260                 .tuner_addr     = ADDR_UNSET,
1261                 .radio_addr     = ADDR_UNSET,
1262                 .tda9887_conf   = TDA9887_PRESENT,
1263                 .inputs         = {{
1264                         .name = name_tv,
1265                         .vmux = 7,
1266                         .amux = TV,
1267                         .tv   = 1,
1268                 },{
1269                         .name = name_svideo,
1270                         .vmux = 7,
1271                         .amux = LINE1,
1272                 }},
1273         },
1274         [SAA7134_BOARD_ITEMS_MTV005] = {
1275                 /* Norman Jonas <normanjonas@arcor.de> */
1276                 .name           = "Items MuchTV Plus / IT-005",
1277                 .audio_clock    = 0x00187de7,
1278                 .tuner_type     = TUNER_PHILIPS_PAL,
1279                 .radio_type     = UNSET,
1280                 .tuner_addr     = ADDR_UNSET,
1281                 .radio_addr     = ADDR_UNSET,
1282                 .inputs         = {{
1283                         .name = name_tv,
1284                         .vmux = 3,
1285                         .amux = TV,
1286                         .tv   = 1,
1287                 },{
1288                         .name   = name_comp1,
1289                         .vmux   = 1,
1290                         .amux   = LINE1,
1291                 },{
1292                         .name = name_svideo,
1293                         .vmux = 8,
1294                         .amux = LINE1,
1295                 }},
1296                 .radio = {
1297                         .name = name_radio,
1298                         .amux = LINE2,
1299                 },
1300         },
1301         [SAA7134_BOARD_CINERGY200] = {
1302                 .name           = "Terratec Cinergy 200 TV",
1303                 .audio_clock    = 0x00200000,
1304                 .tuner_type     = TUNER_PHILIPS_PAL,
1305                 .radio_type     = UNSET,
1306                 .tuner_addr     = ADDR_UNSET,
1307                 .radio_addr     = ADDR_UNSET,
1308                 .inputs         = {{
1309                         .name = name_tv,
1310                         .vmux = 1,
1311                         .amux = LINE2,
1312                         .tv   = 1,
1313                 },{
1314                         .name = name_comp1,
1315                         .vmux = 4,
1316                         .amux = LINE1,
1317                 },{
1318                         .name = name_svideo,
1319                         .vmux = 8,
1320                         .amux = LINE1,
1321                 },{
1322                         .name = name_comp2, /* CVideo over SVideo Connector */
1323                         .vmux = 0,
1324                         .amux = LINE1,
1325                 }},
1326                 .mute = {
1327                         .name = name_mute,
1328                         .amux = LINE2,
1329                 },
1330         },
1331         [SAA7134_BOARD_VIDEOMATE_TV_PVR] = {
1332                 /* Alain St-Denis <alain@topaze.homeip.net> */
1333                 .name           = "Compro VideoMate TV PVR/FM",
1334                 .audio_clock    = 0x00187de7,
1335                 .tuner_type     = TUNER_PHILIPS_NTSC_M,
1336                 .radio_type     = UNSET,
1337                 .tuner_addr     = ADDR_UNSET,
1338                 .radio_addr     = ADDR_UNSET,
1339                 .gpiomask       = 0x808c0080,
1340                 .inputs         = {{
1341                         .name = name_svideo,
1342                         .vmux = 8,
1343                         .amux = LINE1,
1344                         .gpio = 0x00080,
1345                 },{
1346                         .name = name_comp1,
1347                         .vmux = 3,
1348                         .amux = LINE1,
1349                         .gpio = 0x00080,
1350                 },{
1351                         .name = name_tv,
1352                         .vmux = 1,
1353                         .amux = LINE2_LEFT,
1354                         .tv   = 1,
1355                         .gpio = 0x00080,
1356                 }},
1357                 .radio = {
1358                         .name = name_radio,
1359                         .amux = LINE2,
1360                         .gpio = 0x80000,
1361                 },
1362                 .mute = {
1363                         .name = name_mute,
1364                         .amux = LINE2,
1365                         .gpio = 0x40000,
1366                 },
1367         },
1368         [SAA7134_BOARD_SABRENT_SBTTVFM] = {
1369                 /* Michael Rodriguez-Torrent <mrtorrent@asu.edu> */
1370                 .name           = "Sabrent SBT-TVFM (saa7130)",
1371                 .audio_clock    = 0x00187de7,
1372                 .tuner_type     = TUNER_PHILIPS_NTSC_M,
1373                 .radio_type     = UNSET,
1374                 .tuner_addr     = ADDR_UNSET,
1375                 .radio_addr     = ADDR_UNSET,
1376                 .inputs         = {{
1377                         .name = name_comp1,
1378                         .vmux = 1,
1379                         .amux = LINE1,
1380                 },{
1381                         .name = name_tv,
1382                         .vmux = 3,
1383                         .amux = LINE2,
1384                         .tv   = 1,
1385                 },{
1386                         .name = name_svideo,
1387                         .vmux = 8,
1388                         .amux = LINE1,
1389                 }},
1390                 .radio = {
1391                         .name   = name_radio,
1392                         .amux   = LINE2,
1393                 },
1394         },
1395         [SAA7134_BOARD_ZOLID_XPERT_TV7134] = {
1396                 /* Helge Jensen <helge.jensen@slog.dk> */
1397                 .name           = ":Zolid Xpert TV7134",
1398                 .audio_clock    = 0x00187de7,
1399                 .tuner_type     = TUNER_PHILIPS_NTSC,
1400                 .radio_type     = UNSET,
1401                 .tuner_addr     = ADDR_UNSET,
1402                 .radio_addr     = ADDR_UNSET,
1403                 .inputs         = {{
1404                         .name = name_svideo,
1405                         .vmux = 8,
1406                         .amux = LINE1,
1407                 },{
1408                         .name = name_comp1,
1409                         .vmux = 3,
1410                         .amux = LINE1,
1411                 },{
1412                         .name = name_tv,
1413                         .vmux = 1,
1414                         .amux = LINE2,
1415                         .tv   = 1,
1416                 }},
1417         },
1418         [SAA7134_BOARD_EMPIRE_PCI_TV_RADIO_LE] = {
1419                 /* "Matteo Az" <matte.az@nospam.libero.it> ;-) */
1420                 .name           = "Empire PCI TV-Radio LE",
1421                 .audio_clock    = 0x00187de7,
1422                 .tuner_type     = TUNER_PHILIPS_PAL,
1423                 .radio_type     = UNSET,
1424                 .tuner_addr     = ADDR_UNSET,
1425                 .radio_addr     = ADDR_UNSET,
1426                 .gpiomask       = 0x4000,
1427                 .inputs         = {{
1428                         .name = name_tv_mono,
1429                         .vmux = 1,
1430                         .amux = LINE2,
1431                         .gpio = 0x8000,
1432                         .tv   = 1,
1433                 },{
1434                         .name = name_comp1,
1435                         .vmux = 3,
1436                         .amux = LINE1,
1437                         .gpio = 0x8000,
1438                 },{
1439                         .name = name_svideo,
1440                         .vmux = 6,
1441                         .amux = LINE1,
1442                         .gpio = 0x8000,
1443                 }},
1444                 .radio = {
1445                         .name = name_radio,
1446                         .amux = LINE1,
1447                         .gpio = 0x8000,
1448                 },
1449                 .mute = {
1450                         .name = name_mute,
1451                         .amux = TV,
1452                         .gpio =0x8000,
1453                 }
1454         },
1455         [SAA7134_BOARD_AVERMEDIA_STUDIO_307] = {
1456                 /*
1457                 Nickolay V. Shmyrev <nshmyrev@yandex.ru>
1458                 Lots of thanks to Andrey Zolotarev <zolotarev_andrey@mail.ru>
1459                 */
1460                 .name           = "Avermedia AVerTV Studio 307",
1461                 .audio_clock    = 0x00187de7,
1462                 .tuner_type     = TUNER_PHILIPS_FM1256_IH3,
1463                 .radio_type     = UNSET,
1464                 .tuner_addr     = ADDR_UNSET,
1465                 .radio_addr     = ADDR_UNSET,
1466                 .tda9887_conf   = TDA9887_PRESENT,
1467                 .gpiomask       = 0x03,
1468                 .inputs         = {{
1469                         .name = name_tv,
1470                         .vmux = 1,
1471                         .amux = TV,
1472                         .tv   = 1,
1473                         .gpio = 0x00,
1474                 },{
1475                         .name = name_comp1,
1476                         .vmux = 0,
1477                         .amux = LINE2,
1478                         .gpio = 0x00,
1479                 },{
1480                         .name = name_comp2,
1481                         .vmux = 3,
1482                         .amux = LINE2,
1483                         .gpio = 0x00,
1484                 },{
1485                         .name = name_svideo,
1486                         .vmux = 8,
1487                         .amux = LINE2,
1488                         .gpio = 0x00,
1489                 }},
1490                 .radio = {
1491                         .name = name_radio,
1492                         .amux = LINE1,
1493                         .gpio = 0x01,
1494                 },
1495                 .mute  = {
1496                         .name = name_mute,
1497                         .amux = LINE1,
1498                         .gpio = 0x00,
1499                 },
1500         },
1501         [SAA7134_BOARD_AVERMEDIA_GO_007_FM] = {
1502                 .name           = "Avermedia AVerTV GO 007 FM",
1503                 .audio_clock    = 0x00187de7,
1504                 .tuner_type     = TUNER_PHILIPS_TDA8290,
1505                 .radio_type     = UNSET,
1506                 .tuner_addr     = ADDR_UNSET,
1507                 .radio_addr     = ADDR_UNSET,
1508                 .gpiomask       = 0x00300003,
1509                 /* .gpiomask       = 0x8c240003, */
1510                 .inputs         = {{
1511                         .name = name_tv,
1512                         .vmux = 1,
1513                         .amux = TV,
1514                         .tv   = 1,
1515                         .gpio = 0x01,
1516                 },{
1517                         .name = name_comp1,
1518                         .vmux = 0,
1519                         .amux = LINE2,
1520                         .gpio = 0x02,
1521                 },{
1522                         .name = name_svideo,
1523                         .vmux = 6,
1524                         .amux = LINE2,
1525                         .gpio = 0x02,
1526                 }},
1527                 .radio = {
1528                         .name = name_radio,
1529                         .amux = LINE1,
1530                         .gpio = 0x00300001,
1531                 },
1532                 .mute = {
1533                         .name = name_mute,
1534                         .amux = TV,
1535                         .gpio = 0x01,
1536                 },
1537         },
1538         [SAA7134_BOARD_AVERMEDIA_CARDBUS] = {
1539                 /* Kees.Blom@cwi.nl */
1540                 .name           = "AVerMedia Cardbus TV/Radio (E500)",
1541                 .audio_clock    = 0x187de7,
1542                 .tuner_type     = TUNER_PHILIPS_TDA8290,
1543                 .radio_type     = UNSET,
1544                 .tuner_addr     = ADDR_UNSET,
1545                 .radio_addr     = ADDR_UNSET,
1546                 .inputs         = {{
1547                         .name = name_tv,
1548                         .vmux = 1,
1549                         .amux = TV,
1550                         .tv   = 1,
1551                 },{
1552                         .name = name_comp1,
1553                         .vmux = 3,
1554                         .amux = LINE2,
1555                 },{
1556                         .name = name_svideo,
1557                         .vmux = 8,
1558                         .amux = LINE1,
1559                 }},
1560                 .radio = {
1561                         .name = name_radio,
1562                         .amux = LINE1,
1563                 },
1564         },
1565         [SAA7134_BOARD_CINERGY400_CARDBUS] = {
1566                 .name           = "Terratec Cinergy 400 mobile",
1567                 .audio_clock    = 0x187de7,
1568                 .tuner_type     = TUNER_ALPS_TSBE5_PAL,
1569                 .radio_type     = UNSET,
1570                 .tuner_addr     = ADDR_UNSET,
1571                 .radio_addr     = ADDR_UNSET,
1572                 .tda9887_conf   = TDA9887_PRESENT,
1573                 .inputs         = {{
1574                         .name = name_tv,
1575                         .vmux = 1,
1576                         .amux = TV,
1577                         .tv   = 1,
1578                 },{
1579                         .name = name_tv_mono,
1580                         .vmux = 1,
1581                         .amux = LINE2,
1582                         .tv   = 1,
1583                 },{
1584                         .name = name_comp1,
1585                         .vmux = 3,
1586                         .amux = LINE1,
1587                 },{
1588                         .name = name_svideo,
1589                         .vmux = 8,
1590                         .amux = LINE1,
1591                 }},
1592         },
1593         [SAA7134_BOARD_CINERGY600_MK3] = {
1594                 .name           = "Terratec Cinergy 600 TV MK3",
1595                 .audio_clock    = 0x00200000,
1596                 .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
1597                 .radio_type     = UNSET,
1598                 .tuner_addr     = ADDR_UNSET,
1599                 .radio_addr     = ADDR_UNSET,
1600                 .tda9887_conf   = TDA9887_PRESENT,
1601                 .inputs         = {{
1602                         .name = name_tv,
1603                         .vmux = 1,
1604                         .amux = TV,
1605                         .tv   = 1,
1606                 },{
1607                         .name = name_comp1,
1608                         .vmux = 4,
1609                         .amux = LINE1,
1610                 },{
1611                         .name = name_svideo,
1612                         .vmux = 8,
1613                         .amux = LINE1,
1614                 },{
1615                         .name = name_comp2, /* CVideo over SVideo Connector */
1616                         .vmux = 0,
1617                         .amux = LINE1,
1618                 }},
1619                 .radio = {
1620                         .name = name_radio,
1621                         .amux = LINE2,
1622                 },
1623         },
1624         [SAA7134_BOARD_VIDEOMATE_GOLD_PLUS] = {
1625                 /* Dylan Walkden <dylan_walkden@hotmail.com> */
1626                 .name           = "Compro VideoMate Gold+ Pal",
1627                 .audio_clock    = 0x00187de7,
1628                 .tuner_type     = TUNER_PHILIPS_PAL,
1629                 .radio_type     = UNSET,
1630                 .tuner_addr     = ADDR_UNSET,
1631                 .radio_addr     = ADDR_UNSET,
1632                 .gpiomask       = 0x1ce780,
1633                 .inputs         = {{
1634                         .name = name_svideo,
1635                         .vmux = 0,              /* CVideo over SVideo Connector - ok? */
1636                         .amux = LINE1,
1637                         .gpio = 0x008080,
1638                 },{
1639                         .name = name_comp1,
1640                         .vmux = 3,
1641                         .amux = LINE1,
1642                         .gpio = 0x008080,
1643                 },{
1644                         .name = name_tv,
1645                         .vmux = 1,
1646                         .amux = TV,
1647                         .tv   = 1,
1648                         .gpio = 0x008080,
1649                 }},
1650                 .radio = {
1651                         .name = name_radio,
1652                         .amux = LINE2,
1653                         .gpio = 0x80000,
1654                 },
1655                 .mute = {
1656                         .name = name_mute,
1657                         .amux = LINE2,
1658                         .gpio = 0x0c8000,
1659                 },
1660         },
1661         [SAA7134_BOARD_PINNACLE_300I_DVBT_PAL] = {
1662                 .name           = "Pinnacle PCTV 300i DVB-T + PAL",
1663                 .audio_clock    = 0x00187de7,
1664                 .tuner_type     = TUNER_MT2032,
1665                 .radio_type     = UNSET,
1666                 .tuner_addr     = ADDR_UNSET,
1667                 .radio_addr     = ADDR_UNSET,
1668                 .tda9887_conf   = TDA9887_PRESENT | TDA9887_INTERCARRIER,
1669                 .mpeg           = SAA7134_MPEG_DVB,
1670                 .inputs         = {{
1671                         .name = name_tv,
1672                         .vmux = 3,
1673                         .amux = TV,
1674                         .tv   = 1,
1675                 },{
1676                         .name = name_comp1,
1677                         .vmux = 0,
1678                         .amux = LINE2,
1679                 },{
1680                         .name = name_comp2,
1681                         .vmux = 1,
1682                         .amux = LINE2,
1683                 },{
1684                         .name = name_svideo,
1685                         .vmux = 8,
1686                         .amux = LINE2,
1687                 }},
1688         },
1689         [SAA7134_BOARD_PROVIDEO_PV952] = {
1690                 /* andreas.kretschmer@web.de */
1691                 .name           = "ProVideo PV952",
1692                 .audio_clock    = 0x00187de7,
1693                 .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
1694                 .radio_type     = UNSET,
1695                 .tuner_addr     = ADDR_UNSET,
1696                 .radio_addr     = ADDR_UNSET,
1697                 .tda9887_conf   = TDA9887_PRESENT,
1698                 .inputs         = {{
1699                         .name = name_comp1,
1700                         .vmux = 0,
1701                         .amux = LINE1,
1702                 },{
1703                         .name = name_tv,
1704                         .vmux = 1,
1705                         .amux = TV,
1706                         .tv   = 1,
1707                 },{
1708                         .name = name_tv_mono,
1709                         .vmux = 1,
1710                         .amux = LINE2,
1711                         .tv   = 1,
1712                 }},
1713                 .radio = {
1714                         .name = name_radio,
1715                         .amux = LINE2,
1716                 },
1717         },
1718         [SAA7134_BOARD_AVERMEDIA_305] = {
1719                 /* much like the "studio" version but without radio
1720                 * and another tuner (sirspiritus@yandex.ru) */
1721                 .name           = "AverMedia AverTV/305",
1722                 .audio_clock    = 0x00187de7,
1723                 .tuner_type     = TUNER_PHILIPS_FQ1216ME,
1724                 .radio_type     = UNSET,
1725                 .tuner_addr     = ADDR_UNSET,
1726                 .radio_addr     = ADDR_UNSET,
1727                 .tda9887_conf   = TDA9887_PRESENT,
1728                 .inputs         = {{
1729                         .name = name_tv,
1730                         .vmux = 1,
1731                         .amux = LINE2,
1732                         .tv   = 1,
1733                 },{
1734                         .name = name_comp1,
1735                         .vmux = 0,
1736                         .amux = LINE2,
1737                 },{
1738                         .name = name_comp2,
1739                         .vmux = 3,
1740                         .amux = LINE2,
1741                 },{
1742                         .name = name_svideo,
1743                         .vmux = 8,
1744                         .amux = LINE2,
1745                 }},
1746                 .mute = {
1747                         .name = name_mute,
1748                         .amux = LINE1,
1749                 },
1750         },
1751         [SAA7134_BOARD_FLYDVBTDUO] = {
1752                 /* LifeView FlyDVB-T DUO */
1753                 /* "Nico Sabbi <nsabbi@tiscali.it>  Hartmut Hackmann hartmut.hackmann@t-online.de*/
1754                 .name           = "LifeView FlyDVB-T DUO",
1755                 .audio_clock    = 0x00200000,
1756                 .tuner_type     = TUNER_PHILIPS_TDA8290,
1757                 .radio_type     = UNSET,
1758                 .tuner_addr     = ADDR_UNSET,
1759                 .radio_addr     = ADDR_UNSET,
1760                 .mpeg           = SAA7134_MPEG_DVB,
1761                 .inputs         = {{
1762                         .name = name_tv,
1763                         .vmux = 1,
1764                         .amux = TV,
1765                         .tv   = 1,
1766                 },{
1767                         .name = name_comp1,     /* Composite signal on S-Video input */
1768                         .vmux = 0,
1769                         .amux = LINE2,
1770                 },{
1771                         .name = name_comp2,     /* Composite input */
1772                         .vmux = 3,
1773                         .amux = LINE2,
1774                 },{
1775                         .name = name_svideo,    /* S-Video signal on S-Video input */
1776                         .vmux = 8,
1777                         .amux = LINE2,
1778                 }},
1779         },
1780         [SAA7134_BOARD_PHILIPS_TOUGH] = {
1781                 .name           = "Philips TOUGH DVB-T reference design",
1782                 .tuner_type     = TUNER_ABSENT,
1783                 .audio_clock    = 0x00187de7,
1784                 .radio_type     = UNSET,
1785                 .tuner_addr     = ADDR_UNSET,
1786                 .radio_addr     = ADDR_UNSET,
1787                 .mpeg           = SAA7134_MPEG_DVB,
1788                 .inputs = {{
1789                         .name   = name_comp1,
1790                         .vmux   = 0,
1791                         .amux   = LINE1,
1792                 },{
1793                         .name   = name_svideo,
1794                         .vmux   = 8,
1795                         .amux   = LINE1,
1796                 }},
1797         },
1798         [SAA7134_BOARD_AVERMEDIA_307] = {
1799                 /*
1800                 Davydov Vladimir <vladimir@iqmedia.com>
1801                 */
1802                 .name           = "Avermedia AVerTV 307",
1803                 .audio_clock    = 0x00187de7,
1804                 .tuner_type     = TUNER_PHILIPS_FQ1216ME,
1805                 .radio_type     = UNSET,
1806                 .tuner_addr     = ADDR_UNSET,
1807                 .radio_addr     = ADDR_UNSET,
1808                 .tda9887_conf   = TDA9887_PRESENT,
1809                 .inputs         = {{
1810                         .name = name_tv,
1811                         .vmux = 1,
1812                         .amux = TV,
1813                         .tv   = 1,
1814                 },{
1815                         .name = name_comp1,
1816                         .vmux = 0,
1817                         .amux = LINE1,
1818                 },{
1819                         .name = name_comp2,
1820                         .vmux = 3,
1821                         .amux = LINE1,
1822                 },{
1823                         .name = name_svideo,
1824                         .vmux = 8,
1825                         .amux = LINE1,
1826                 }},
1827         },
1828         [SAA7134_BOARD_ADS_INSTANT_TV] = {
1829                 .name           = "ADS Tech Instant TV (saa7135)",
1830                 .audio_clock    = 0x00187de7,
1831                 .tuner_type     = TUNER_PHILIPS_TDA8290,
1832                 .radio_type     = UNSET,
1833                 .tuner_addr     = ADDR_UNSET,
1834                 .radio_addr     = ADDR_UNSET,
1835                 .inputs         = {{
1836                         .name = name_tv,
1837                         .vmux = 1,
1838                         .amux = TV,
1839                         .tv   = 1,
1840                 },{
1841                         .name = name_comp1,
1842                         .vmux = 3,
1843                         .amux = LINE2,
1844                 },{
1845                         .name = name_svideo,
1846                         .vmux = 8,
1847                         .amux = LINE2,
1848                 }},
1849         },
1850         [SAA7134_BOARD_KWORLD_VSTREAM_XPERT] = {
1851                 .name           = "Kworld/Tevion V-Stream Xpert TV PVR7134",
1852                 .audio_clock    = 0x00187de7,
1853                 .tuner_type     = TUNER_PHILIPS_PAL_I,
1854                 .radio_type     = UNSET,
1855                 .tuner_addr     = ADDR_UNSET,
1856                 .radio_addr     = ADDR_UNSET,
1857                 .gpiomask       = 0x0700,
1858                 .inputs = {{
1859                         .name   = name_tv,
1860                         .vmux   = 1,
1861                         .amux   = TV,
1862                         .tv     = 1,
1863                         .gpio   = 0x000,
1864                 },{
1865                         .name   = name_comp1,
1866                         .vmux   = 3,
1867                         .amux   = LINE1,
1868                         .gpio   = 0x200,                /* gpio by DScaler */
1869                 },{
1870                         .name   = name_svideo,
1871                         .vmux   = 0,
1872                         .amux   = LINE1,
1873                         .gpio   = 0x200,
1874                 }},
1875                 .radio = {
1876                         .name   = name_radio,
1877                         .amux   = LINE1,
1878                         .gpio   = 0x100,
1879                 },
1880                 .mute  = {
1881                         .name = name_mute,
1882                         .amux = TV,
1883                         .gpio = 0x000,
1884                 },
1885         },
1886         [SAA7134_BOARD_THYPHOON_DVBT_DUO_CARDBUS] = {
1887                 .name           = "Typhoon DVB-T Duo Digital/Analog Cardbus",
1888                 .audio_clock    = 0x00200000,
1889                 .tuner_type     = TUNER_PHILIPS_TDA8290,
1890                 .radio_type     = UNSET,
1891                 .tuner_addr     = ADDR_UNSET,
1892                 .radio_addr     = ADDR_UNSET,
1893                 .mpeg           = SAA7134_MPEG_DVB,
1894                 /* .gpiomask       = 0xe000, */
1895                 .inputs         = {{
1896                         .name = name_tv,
1897                         .vmux = 1,
1898                         .amux = TV,
1899                 /*      .gpio = 0x0000,      */
1900                         .tv   = 1,
1901                 },{
1902                         .name = name_comp1,     /* Composite signal on S-Video input */
1903                         .vmux = 0,
1904                         .amux = LINE2,
1905                 /*      .gpio = 0x4000,      */
1906                 },{
1907                         .name = name_comp2,     /* Composite input */
1908                         .vmux = 3,
1909                         .amux = LINE2,
1910                 /*      .gpio = 0x4000,      */
1911                 },{
1912                         .name = name_svideo,    /* S-Video signal on S-Video input */
1913                         .vmux = 8,
1914                         .amux = LINE2,
1915                 /*      .gpio = 0x4000,      */
1916                 }},
1917                 .radio = {
1918                         .name = name_radio,
1919                         .amux = LINE2,
1920                 },
1921                 .mute = {
1922                         .name = name_mute,
1923                         .amux = LINE1,
1924                 },
1925         },
1926         [SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUSII] = {
1927                 .name           = "Compro VideoMate TV Gold+II",
1928                 .audio_clock    = 0x002187de7,
1929                 .tuner_type     = TUNER_LG_PAL_NEW_TAPC,
1930                 .radio_type     = TUNER_TEA5767,
1931                 .tuner_addr     = 0x63,
1932                 .radio_addr     = 0x60,
1933                 .gpiomask       = 0x8c1880,
1934                 .inputs         = {{
1935                         .name = name_svideo,
1936                         .vmux = 0,
1937                         .amux = LINE1,
1938                         .gpio = 0x800800,
1939                 },{
1940                         .name = name_comp1,
1941                         .vmux = 3,
1942                         .amux = LINE1,
1943                         .gpio = 0x801000,
1944                 },{
1945                         .name = name_tv,
1946                         .vmux = 1,
1947                         .amux = TV,
1948                         .tv   = 1,
1949                         .gpio = 0x800000,
1950                 }},
1951                 .radio = {
1952                         .name = name_radio,
1953                         .amux = TV,
1954                         .gpio = 0x880000,
1955                 },
1956                 .mute = {
1957                         .name = name_mute,
1958                         .amux = LINE2,
1959                         .gpio = 0x840000,
1960                 },
1961         },
1962         [SAA7134_BOARD_KWORLD_XPERT] = {
1963                 /*
1964                 FIXME:
1965                 - Remote control doesn't initialize properly.
1966                 - Audio volume starts muted,
1967                 then gradually increases after channel change.
1968                 - Overlay scaling problems (application error?)
1969                 - Composite S-Video untested.
1970                 From: Konrad Rzepecki <hannibal@megapolis.pl>
1971                 */
1972                 .name           = "Kworld Xpert TV PVR7134",
1973                 .audio_clock    = 0x00187de7,
1974                 .tuner_type     = TUNER_TENA_9533_DI,
1975                 .radio_type     = TUNER_TEA5767,
1976                 .tuner_addr     = 0x61,
1977                 .radio_addr     = 0x60,
1978                 .gpiomask       = 0x0700,
1979                 .inputs = {{
1980                         .name   = name_tv,
1981                         .vmux   = 1,
1982                         .amux   = TV,
1983                         .tv     = 1,
1984                         .gpio   = 0x000,
1985                 },{
1986                         .name   = name_comp1,
1987                         .vmux   = 3,
1988                         .amux   = LINE1,
1989                         .gpio   = 0x200,                /* gpio by DScaler */
1990                 },{
1991                         .name   = name_svideo,
1992                         .vmux   = 0,
1993                         .amux   = LINE1,
1994                         .gpio   = 0x200,
1995                 }},
1996                 .radio = {
1997                         .name   = name_radio,
1998                         .amux   = LINE1,
1999                         .gpio   = 0x100,
2000                 },
2001                 .mute = {
2002                         .name = name_mute,
2003                         .amux = TV,
2004                         .gpio = 0x000,
2005                 },
2006         },
2007         [SAA7134_BOARD_FLYTV_DIGIMATRIX] = {
2008                 .name           = "FlyTV mini Asus Digimatrix",
2009                 .audio_clock    = 0x00200000,
2010                 .tuner_type     = TUNER_LG_NTSC_TALN_MINI,
2011                 .radio_type     = UNSET,
2012                 .tuner_addr     = ADDR_UNSET,
2013                 .radio_addr     = ADDR_UNSET,
2014                 .inputs         = {{
2015                         .name = name_tv,
2016                         .vmux = 1,
2017                         .amux = TV,
2018                         .tv   = 1,
2019                 },{
2020                         .name = name_tv_mono,
2021                         .vmux = 1,
2022                         .amux = LINE2,
2023                         .tv   = 1,
2024                 },{
2025                         .name = name_comp1,
2026                         .vmux = 0,
2027                         .amux = LINE2,
2028                 },{
2029                         .name = name_comp2,
2030                         .vmux = 3,
2031                         .amux = LINE2,
2032                 },{
2033                         .name = name_svideo,
2034                         .vmux = 8,
2035                         .amux = LINE2,
2036                 }},
2037                 .radio = {
2038                         .name = name_radio,             /* radio unconfirmed */
2039                         .amux = LINE2,
2040                 },
2041         },
2042         [SAA7134_BOARD_KWORLD_TERMINATOR] = {
2043                 /* Kworld V-Stream Studio TV Terminator */
2044                 /* "James Webb <jrwebb@qwest.net> */
2045                 .name           = "V-Stream Studio TV Terminator",
2046                 .audio_clock    = 0x00187de7,
2047                 .tuner_type     = TUNER_PHILIPS_TDA8290,
2048                 .radio_type     = UNSET,
2049                 .tuner_addr     = ADDR_UNSET,
2050                 .radio_addr     = ADDR_UNSET,
2051                 .gpiomask       = 1 << 21,
2052                 .inputs         = {{
2053                         .name = name_tv,
2054                         .vmux = 1,
2055                         .amux = TV,
2056                         .gpio = 0x0000000,
2057                         .tv   = 1,
2058                 },{
2059                         .name = name_comp1,     /* Composite input */
2060                         .vmux = 3,
2061                         .amux = LINE2,
2062                         .gpio = 0x0000000,
2063                 },{
2064                         .name = name_svideo,    /* S-Video input */
2065                         .vmux = 8,
2066                         .amux = LINE2,
2067                         .gpio = 0x0000000,
2068                 }},
2069                 .radio = {
2070                         .name = name_radio,
2071                         .amux = TV,
2072                         .gpio = 0x0200000,
2073                 },
2074         },
2075         [SAA7134_BOARD_YUAN_TUN900] = {
2076                 /* FIXME:
2077                  * S-Video and composite sources untested.
2078                  * Radio not working.
2079                  * Remote control not yet implemented.
2080                  * From : codemaster@webgeeks.be */
2081                 .name           = "Yuan TUN-900 (saa7135)",
2082                 .audio_clock    = 0x00187de7,
2083                 .tuner_type     = TUNER_PHILIPS_TDA8290,
2084                 .radio_type     = UNSET,
2085                 .tuner_addr= ADDR_UNSET,
2086                 .radio_addr= ADDR_UNSET,
2087                 .gpiomask       = 0x00010003,
2088                 .inputs         = {{
2089                         .name = name_tv,
2090                         .vmux = 1,
2091                         .amux = TV,
2092                         .tv   = 1,
2093                         .gpio = 0x01,
2094                 },{
2095                         .name = name_comp1,
2096                         .vmux = 0,
2097                         .amux = LINE2,
2098                         .gpio = 0x02,
2099                 },{
2100                         .name = name_svideo,
2101                         .vmux = 6,
2102                         .amux = LINE2,
2103                         .gpio = 0x02,
2104                 }},
2105                 .radio = {
2106                         .name = name_radio,
2107                         .amux = LINE1,
2108                         .gpio = 0x00010003,
2109                 },
2110                 .mute = {
2111                         .name = name_mute,
2112                         .amux = TV,
2113                         .gpio = 0x01,
2114                 },
2115         },
2116         [SAA7134_BOARD_BEHOLD_409FM] = {
2117                 /* <http://tuner.beholder.ru>, Sergey <skiv@orel.ru> */
2118                 .name           = "Beholder BeholdTV 409 FM",
2119                 .audio_clock    = 0x00187de7,
2120                 .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
2121                 .radio_type     = UNSET,
2122                 .tuner_addr     = ADDR_UNSET,
2123                 .radio_addr     = ADDR_UNSET,
2124                 .tda9887_conf   = TDA9887_PRESENT,
2125                 .inputs         = {{
2126                           .name = name_tv,
2127                           .vmux = 3,
2128                           .amux = TV,
2129                           .tv   = 1,
2130                 },{
2131                           .name = name_comp1,
2132                           .vmux = 1,
2133                           .amux = LINE1,
2134                 },{
2135                           .name = name_svideo,
2136                           .vmux = 8,
2137                           .amux = LINE1,
2138                 }},
2139                 .radio = {
2140                           .name = name_radio,
2141                           .amux = LINE2,
2142                 },
2143         },
2144         [SAA7134_BOARD_GOTVIEW_7135] = {
2145                 /* Mike Baikov <lists@baikov.com> */
2146                 /* Andrey Cvetcov <ays14@yandex.ru> */
2147                 .name            = "GoTView 7135 PCI",
2148                 .audio_clock     = 0x00187de7,
2149                 .tuner_type      = TUNER_PHILIPS_FM1216ME_MK3,
2150                 .radio_type      = UNSET,
2151                 .tuner_addr      = ADDR_UNSET,
2152                 .radio_addr      = ADDR_UNSET,
2153                 .tda9887_conf    = TDA9887_PRESENT,
2154                 .gpiomask        = 0x00200003,
2155                 .inputs          = {{
2156                         .name = name_tv,
2157                         .vmux = 1,
2158                         .amux = TV,
2159                         .tv   = 1,
2160                         .gpio = 0x00200003,
2161                 },{
2162                         .name = name_tv_mono,
2163                         .vmux = 1,
2164                         .amux = LINE2,
2165                         .gpio = 0x00200003,
2166                 },{
2167                         .name = name_comp1,
2168                         .vmux = 3,
2169                         .amux = LINE1,
2170                         .gpio = 0x00200003,
2171                 },{
2172                         .name = name_svideo,
2173                         .vmux = 8,
2174                         .amux = LINE1,
2175                         .gpio = 0x00200003,
2176                 }},
2177                 .radio = {
2178                         .name = name_radio,
2179                         .amux = LINE2,
2180                         .gpio = 0x00200003,
2181                 },
2182                 .mute = {
2183                         .name = name_mute,
2184                         .amux = TV,
2185                         .gpio = 0x00200003,
2186                 },
2187         },
2188 };
2189
2190 const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards);
2191
2192 /* ------------------------------------------------------------------ */
2193 /* PCI ids + subsystem IDs                                            */
2194
2195 struct pci_device_id saa7134_pci_tbl[] = {
2196         {
2197                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2198                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2199                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
2200                 .subdevice    = 0x2001,
2201                 .driver_data  = SAA7134_BOARD_PROTEUS_PRO,
2202         },{
2203                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2204                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2205                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
2206                 .subdevice    = 0x2001,
2207                 .driver_data  = SAA7134_BOARD_PROTEUS_PRO,
2208         },{
2209                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2210                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2211                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
2212                 .subdevice    = 0x6752,
2213                 .driver_data  = SAA7134_BOARD_EMPRESS,
2214         },{
2215                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2216                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2217                 .subvendor    = 0x1131,
2218                 .subdevice    = 0x4e85,
2219                 .driver_data  = SAA7134_BOARD_MONSTERTV,
2220         },{
2221                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2222                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2223                 .subvendor    = 0x153b,
2224                 .subdevice    = 0x1142,
2225                 .driver_data  = SAA7134_BOARD_CINERGY400,
2226         },{
2227                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2228                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2229                 .subvendor    = 0x153b,
2230                 .subdevice    = 0x1143,
2231                 .driver_data  = SAA7134_BOARD_CINERGY600,
2232         },{
2233                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2234                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2235                 .subvendor    = 0x153b,
2236                 .subdevice    = 0x1158,
2237                 .driver_data  = SAA7134_BOARD_CINERGY600_MK3,
2238         },{
2239                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2240                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2241                 .subvendor    = 0x153b,
2242                 .subdevice    = 0x1162,
2243                 .driver_data  = SAA7134_BOARD_CINERGY400_CARDBUS,
2244         },{
2245                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2246                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2247                 .subvendor    = 0x5168,
2248                 .subdevice    = 0x0138,
2249                 .driver_data  = SAA7134_BOARD_FLYVIDEO3000,
2250         },{
2251                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2252                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2253                 .subvendor    = 0x4e42,                         /* "Typhoon PCI Capture TV Card" Art.No. 50673 */
2254                 .subdevice    = 0x0138,
2255                 .driver_data  = SAA7134_BOARD_FLYVIDEO3000,
2256         },{
2257                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2258                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2259                 .subvendor    = 0x5168,
2260                 .subdevice    = 0x0138,
2261                 .driver_data  = SAA7134_BOARD_FLYVIDEO2000,
2262         },{
2263                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2264                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2265                 .subvendor    = 0x5168,
2266                 .subdevice    = 0x0212, /* minipci, LR212 */
2267                 .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_MINI,
2268         },{
2269                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2270                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2271                 .subvendor    = 0x4e42,
2272                 .subdevice    = 0x0212, /* OEM minipci, LR212 */
2273                 .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_MINI,
2274         },{
2275                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2276                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2277                 .subvendor    = 0x5168, /* Animation Technologies (LifeView) */
2278                 .subdevice    = 0x0214, /* Standard PCI, LR214WF */
2279                 .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_FM,
2280         },{
2281                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2282                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2283                 .subvendor    = 0x1489, /* KYE */
2284                 .subdevice    = 0x0214, /* Genius VideoWonder ProTV */
2285                 .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_FM, /* is an LR214WF actually */
2286         },{
2287                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2288                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2289                 .subvendor    = 0x16be,
2290                 .subdevice    = 0x0003,
2291                 .driver_data  = SAA7134_BOARD_MD7134,
2292         },{
2293                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2294                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2295                 .subvendor    = 0x1048,
2296                 .subdevice    = 0x226b,
2297                 .driver_data  = SAA7134_BOARD_ELSA,
2298         },{
2299                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2300                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2301                 .subvendor    = 0x1048,
2302                 .subdevice    = 0x226b,
2303                 .driver_data  = SAA7134_BOARD_ELSA_500TV,
2304         },{
2305                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2306                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2307                 .subvendor    = PCI_VENDOR_ID_ASUSTEK,
2308                 .subdevice    = 0x4842,
2309                 .driver_data  = SAA7134_BOARD_ASUSTeK_TVFM7134,
2310         },{
2311                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2312                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2313                 .subvendor    = PCI_VENDOR_ID_ASUSTEK,
2314                 .subdevice    = 0x4845,
2315                 .driver_data  = SAA7134_BOARD_ASUSTeK_TVFM7135,
2316         },{
2317                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2318                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2319                 .subvendor    = PCI_VENDOR_ID_ASUSTEK,
2320                 .subdevice    = 0x4830,
2321                 .driver_data  = SAA7134_BOARD_ASUSTeK_TVFM7134,
2322         },{
2323                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2324                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2325                 .subvendor    = PCI_VENDOR_ID_ASUSTEK,
2326                 .subdevice    = 0x4843,
2327                 .driver_data  = SAA7134_BOARD_ASUSTEK_TVFM7133,
2328         },{
2329                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2330                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2331                 .subvendor    = PCI_VENDOR_ID_ASUSTEK,
2332                 .subdevice    = 0x4840,
2333                 .driver_data  = SAA7134_BOARD_ASUSTeK_TVFM7134,
2334         },{
2335                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2336                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2337                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
2338                 .subdevice    = 0xfe01,
2339                 .driver_data  = SAA7134_BOARD_TVSTATION_RDS,
2340         },{
2341                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2342                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2343                 .subvendor    = 0x1894,
2344                 .subdevice    = 0xfe01,
2345                 .driver_data  = SAA7134_BOARD_TVSTATION_RDS,
2346         },{
2347                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2348                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2349                 .subvendor    = 0x1894,
2350                 .subdevice    = 0xa006,
2351                 .driver_data  = SAA7134_BOARD_TVSTATION_DVR,
2352         },{
2353                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2354                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2355                 .subvendor    = 0x1131,
2356                 .subdevice    = 0x7133,
2357                 .driver_data  = SAA7134_BOARD_VA1000POWER,
2358         },{
2359                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2360                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2361                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
2362                 .subdevice    = 0x2001,
2363                 .driver_data  = SAA7134_BOARD_10MOONSTVMASTER,
2364         },{
2365                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2366                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2367                 .subvendor    = 0x185b,
2368                 .subdevice    = 0xc100,
2369                 .driver_data  = SAA7134_BOARD_VIDEOMATE_TV,
2370         },{
2371                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2372                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2373                 .subvendor    = 0x185b,
2374                 .subdevice    = 0xc100,
2375                 .driver_data  = SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUS,
2376         },{
2377                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2378                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2379                 .subvendor    = PCI_VENDOR_ID_MATROX,
2380                 .subdevice    = 0x48d0,
2381                 .driver_data  = SAA7134_BOARD_CRONOS_PLUS,
2382         },{
2383                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2384                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2385                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
2386                 .subdevice    = 0xa70b,
2387                 .driver_data  = SAA7134_BOARD_MD2819,
2388         },{
2389                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2390                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2391                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
2392                 .subdevice    = 0x2115,
2393                 .driver_data  = SAA7134_BOARD_AVERMEDIA_STUDIO_305,
2394         },{
2395                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2396                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2397                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
2398                 .subdevice    = 0x2108,
2399                 .driver_data  = SAA7134_BOARD_AVERMEDIA_305,
2400         },{
2401                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2402                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2403                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
2404                 .subdevice    = 0x10ff,
2405                 .driver_data  = SAA7134_BOARD_AVERMEDIA_DVD_EZMAKER,
2406         },{
2407                 /* AVerMedia CardBus */
2408                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2409                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2410                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
2411                 .subdevice    = 0xd6ee,
2412                 .driver_data  = SAA7134_BOARD_AVERMEDIA_CARDBUS,
2413         },{
2414                 /* TransGear 3000TV */
2415                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2416                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2417                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
2418                 .subdevice    = 0x050c,
2419                 .driver_data  = SAA7134_BOARD_TG3000TV,
2420         },{
2421                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2422                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2423                 .subvendor    = 0x11bd,
2424                 .subdevice    = 0x002b,
2425                 .driver_data  = SAA7134_BOARD_PINNACLE_PCTV_STEREO,
2426         },{
2427                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2428                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2429                 .subvendor    = 0x11bd,
2430                 .subdevice    = 0x002d,
2431                 .driver_data  = SAA7134_BOARD_PINNACLE_300I_DVBT_PAL,
2432         },{
2433                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2434                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2435                 .subvendor    = 0x1019,
2436                 .subdevice    = 0x4cb4,
2437                 .driver_data  = SAA7134_BOARD_ECS_TVP3XP,
2438         },{
2439                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2440                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2441                 .subvendor    = 0x1019,
2442                 .subdevice    = 0x4cb5,
2443                 .driver_data  = SAA7134_BOARD_ECS_TVP3XP_4CB5,
2444         },{
2445                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2446                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2447                 .subvendor    = 0x12ab,
2448                 .subdevice    = 0x0800,
2449                 .driver_data  = SAA7134_BOARD_UPMOST_PURPLE_TV,
2450         },{
2451                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2452                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2453                 .subvendor    = 0x153b,
2454                 .subdevice    = 0x1152,
2455                 .driver_data  = SAA7134_BOARD_CINERGY200,
2456         },{
2457                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2458                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2459                 .subvendor    = 0x185b,
2460                 .subdevice    = 0xc100,
2461                 .driver_data  = SAA7134_BOARD_VIDEOMATE_TV_PVR,
2462         },{
2463                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2464                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2465                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
2466                 .subdevice    = 0x9715,
2467                 .driver_data  = SAA7134_BOARD_AVERMEDIA_STUDIO_307,
2468         },{
2469                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2470                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2471                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
2472                 .subdevice    = 0xa70a,
2473                 .driver_data  = SAA7134_BOARD_AVERMEDIA_307,
2474         },{
2475                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2476                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2477                 .subvendor    = 0x185b,
2478                 .subdevice    = 0xc200,
2479                 .driver_data  = SAA7134_BOARD_VIDEOMATE_GOLD_PLUS,
2480         },{
2481                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2482                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2483                 .subvendor    = 0x1540,
2484                 .subdevice    = 0x9524,
2485                 .driver_data  = SAA7134_BOARD_PROVIDEO_PV952,
2486
2487         },{
2488                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2489                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2490                 .subvendor    = 0x5168,
2491                 .subdevice    = 0x0502,                /* Cardbus version */
2492                 .driver_data  = SAA7134_BOARD_FLYDVBTDUO,
2493         },{
2494                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2495                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2496                 .subvendor    = 0x5168,
2497                 .subdevice    = 0x0306,                /* PCI version */
2498                 .driver_data  = SAA7134_BOARD_FLYDVBTDUO,
2499         },{
2500                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2501                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2502                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
2503                 .subdevice    = 0xf31f,
2504                 .driver_data  = SAA7134_BOARD_AVERMEDIA_GO_007_FM,
2505
2506         },{
2507                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2508                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2509                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
2510                 .subdevice    = 0x2004,
2511                 .driver_data  = SAA7134_BOARD_PHILIPS_TOUGH,
2512         },{
2513                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2514                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2515                 .subvendor    = 0x1421,
2516                 .subdevice    = 0x0350,         /* PCI version */
2517                 .driver_data  = SAA7134_BOARD_ADS_INSTANT_TV,
2518
2519         },{
2520                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2521                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2522                 .subvendor    = 0x1421,
2523                 .subdevice    = 0x0370,         /* cardbus version */
2524                 .driver_data  = SAA7134_BOARD_ADS_INSTANT_TV,
2525
2526         },{     /* Typhoon DVB-T Duo Digital/Analog Cardbus */
2527                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2528                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2529                 .subvendor    = 0x4e42,
2530                 .subdevice    = 0x0502,
2531                 .driver_data  = SAA7134_BOARD_THYPHOON_DVBT_DUO_CARDBUS,
2532         },{
2533                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2534                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2535                 .subvendor    = 0x1043,
2536                 .subdevice    = 0x0210,         /* mini pci NTSC version */
2537                 .driver_data  = SAA7134_BOARD_FLYTV_DIGIMATRIX,
2538         },{
2539                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2540                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2541                 .subvendor    = 0x1043,
2542                 .subdevice    = 0x0210,         /* mini pci PAL/SECAM version */
2543                 .driver_data  = SAA7134_BOARD_FLYTV_DIGIMATRIX,
2544
2545         },{
2546                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2547                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2548                 .subvendor    = 0x0000, /* It shouldn't break anything, since subdevice id seems unique */
2549                 .subdevice    = 0x4091,
2550                 .driver_data  = SAA7134_BOARD_BEHOLD_409FM,
2551         },{
2552                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2553                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2554                 .subvendor    = 0x5456, /* GoTView */
2555                 .subdevice    = 0x7135,
2556                 .driver_data  = SAA7134_BOARD_GOTVIEW_7135,
2557         },{
2558                 /* --- boards without eeprom + subsystem ID --- */
2559                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2560                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2561                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
2562                 .subdevice    = 0,
2563                 .driver_data  = SAA7134_BOARD_NOAUTO,
2564         },{
2565                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2566                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2567                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
2568                 .subdevice    = 0,
2569                 .driver_data  = SAA7134_BOARD_NOAUTO,
2570         },{
2571
2572                 /* --- default catch --- */
2573                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2574                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2575                 .subvendor    = PCI_ANY_ID,
2576                 .subdevice    = PCI_ANY_ID,
2577                 .driver_data  = SAA7134_BOARD_UNKNOWN,
2578         },{
2579                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2580                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2581                 .subvendor    = PCI_ANY_ID,
2582                 .subdevice    = PCI_ANY_ID,
2583                 .driver_data  = SAA7134_BOARD_UNKNOWN,
2584         },{
2585                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2586                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2587                 .subvendor    = PCI_ANY_ID,
2588                 .subdevice    = PCI_ANY_ID,
2589                 .driver_data  = SAA7134_BOARD_UNKNOWN,
2590         },{
2591                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2592                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7135,
2593                 .subvendor    = PCI_ANY_ID,
2594                 .subdevice    = PCI_ANY_ID,
2595                 .driver_data  = SAA7134_BOARD_UNKNOWN,
2596         },{
2597                 /* --- end of list --- */
2598         }
2599 };
2600 MODULE_DEVICE_TABLE(pci, saa7134_pci_tbl);
2601
2602 /* ----------------------------------------------------------- */
2603 /* flyvideo tweaks                                             */
2604
2605
2606 static void board_flyvideo(struct saa7134_dev *dev)
2607 {
2608         printk("%s: there are different flyvideo cards with different tuners\n"
2609                "%s: out there, you might have to use the tuner=<nr> insmod\n"
2610                "%s: option to override the default value.\n",
2611                dev->name, dev->name, dev->name);
2612 }
2613
2614 /* ----------------------------------------------------------- */
2615
2616 int saa7134_board_init1(struct saa7134_dev *dev)
2617 {
2618         /* Always print gpio, often manufacturers encode tuner type and other info. */
2619         saa_writel(SAA7134_GPIO_GPMODE0 >> 2, 0);
2620         dev->gpio_value = saa_readl(SAA7134_GPIO_GPSTATUS0 >> 2);
2621         printk(KERN_INFO "%s: board init: gpio is %x\n", dev->name, dev->gpio_value);
2622
2623         switch (dev->board) {
2624         case SAA7134_BOARD_FLYVIDEO2000:
2625         case SAA7134_BOARD_FLYVIDEO3000:
2626                 dev->has_remote = 1;
2627                 board_flyvideo(dev);
2628                 break;
2629         case SAA7134_BOARD_FLYTVPLATINUM_FM:
2630         case SAA7134_BOARD_CINERGY400:
2631         case SAA7134_BOARD_CINERGY600:
2632         case SAA7134_BOARD_CINERGY600_MK3:
2633         case SAA7134_BOARD_ECS_TVP3XP:
2634         case SAA7134_BOARD_ECS_TVP3XP_4CB5:
2635         case SAA7134_BOARD_MD2819:
2636         case SAA7134_BOARD_KWORLD_VSTREAM_XPERT:
2637         case SAA7134_BOARD_KWORLD_XPERT:
2638         case SAA7134_BOARD_AVERMEDIA_STUDIO_305:
2639         case SAA7134_BOARD_AVERMEDIA_305:
2640         case SAA7134_BOARD_AVERMEDIA_STUDIO_307:
2641         case SAA7134_BOARD_AVERMEDIA_307:
2642         case SAA7134_BOARD_AVERMEDIA_GO_007_FM:
2643 /*      case SAA7134_BOARD_SABRENT_SBTTVFM:  */ /* not finished yet */
2644         case SAA7134_BOARD_VIDEOMATE_TV_PVR:
2645         case SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUSII:
2646         case SAA7134_BOARD_MANLI_MTV001:
2647         case SAA7134_BOARD_MANLI_MTV002:
2648         case SAA7134_BOARD_BEHOLD_409FM:
2649         case SAA7134_BOARD_AVACSSMARTTV:
2650         case SAA7134_BOARD_GOTVIEW_7135:
2651                 dev->has_remote = 1;
2652                 break;
2653         case SAA7134_BOARD_MD5044:
2654                 printk("%s: seems there are two different versions of the MD5044\n"
2655                 "%s: (with the same ID) out there.  If sound doesn't work for\n"
2656                 "%s: you try the audio_clock_override=0x200000 insmod option.\n",
2657                 dev->name,dev->name,dev->name);
2658                 break;
2659         case SAA7134_BOARD_CINERGY400_CARDBUS:
2660                 /* power-up tuner chip */
2661                 saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0x00040000, 0x00040000);
2662                 saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00040000, 0x00000000);
2663                 msleep(1);
2664                 break;
2665         case SAA7134_BOARD_FLYDVBTDUO:
2666         case SAA7134_BOARD_THYPHOON_DVBT_DUO_CARDBUS:
2667                 /* turn the fan on */
2668                 saa_writeb(SAA7134_GPIO_GPMODE3, 0x08);
2669                 saa_writeb(SAA7134_GPIO_GPSTATUS3, 0x06);
2670                 break;
2671         case SAA7134_BOARD_AVERMEDIA_CARDBUS:
2672                 /* power-up tuner chip */
2673                 saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0xffffffff, 0xffffffff);
2674                 saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0xffffffff, 0xffffffff);
2675                 msleep(1);
2676                 break;
2677         }
2678         return 0;
2679 }
2680
2681 /* stuff which needs working i2c */
2682 int saa7134_board_init2(struct saa7134_dev *dev)
2683 {
2684         unsigned char buf;
2685         int board;
2686
2687         switch (dev->board) {
2688         case SAA7134_BOARD_BMK_MPEX_NOTUNER:
2689         case SAA7134_BOARD_BMK_MPEX_TUNER:
2690                 dev->i2c_client.addr = 0x60;
2691                 board = (i2c_master_recv(&dev->i2c_client,&buf,0) < 0)
2692                         ? SAA7134_BOARD_BMK_MPEX_NOTUNER
2693                         : SAA7134_BOARD_BMK_MPEX_TUNER;
2694                 if (board == dev->board)
2695                         break;
2696                 dev->board = board;
2697                 printk("%s: board type fixup: %s\n", dev->name,
2698                 saa7134_boards[dev->board].name);
2699                 dev->tuner_type = saa7134_boards[dev->board].tuner_type;
2700
2701                 if (TUNER_ABSENT != dev->tuner_type) {
2702                                 struct tuner_setup tun_setup;
2703
2704                                 tun_setup.mode_mask = T_RADIO | T_ANALOG_TV | T_DIGITAL_TV;
2705                                 tun_setup.type = dev->tuner_type;
2706                                 tun_setup.addr = ADDR_UNSET;
2707
2708                                 saa7134_i2c_call_clients (dev, TUNER_SET_TYPE_ADDR, &tun_setup);
2709                 }
2710                 break;
2711 case SAA7134_BOARD_MD7134:
2712                 {
2713                 struct tuner_setup tun_setup;
2714                 u8 subaddr;
2715                 u8 data[3];
2716                 int ret, tuner_t;
2717
2718                 struct i2c_msg msg[] = {{.addr=0x50, .flags=0, .buf=&subaddr, .len = 1},
2719                                         {.addr=0x50, .flags=I2C_M_RD, .buf=data, .len = 3}};
2720                 subaddr= 0x14;
2721                 tuner_t = 0;
2722                 ret = i2c_transfer(&dev->i2c_adap, msg, 2);
2723                 if (ret != 2) {
2724                         printk(KERN_ERR "EEPROM read failure\n");
2725                 } else if ((data[0] != 0) && (data[0] != 0xff)) {
2726                         /* old config structure */
2727                         subaddr = data[0] + 2;
2728                         msg[1].len = 2;
2729                         i2c_transfer(&dev->i2c_adap, msg, 2);
2730                         tuner_t = (data[0] << 8) + data[1];
2731                         switch (tuner_t){
2732                         case 0x0103:
2733                                 dev->tuner_type = TUNER_PHILIPS_PAL;
2734                                 break;
2735                         case 0x010C:
2736                                 dev->tuner_type = TUNER_PHILIPS_FM1216ME_MK3;
2737                                 break;
2738                         default:
2739                                 printk(KERN_ERR "%s Cant determine tuner type %x from EEPROM\n", dev->name, tuner_t);
2740                         }
2741                 } else if ((data[1] != 0) && (data[1] != 0xff)) {
2742                         /* new config structure */
2743                         subaddr = data[1] + 1;
2744                         msg[1].len = 1;
2745                         i2c_transfer(&dev->i2c_adap, msg, 2);
2746                         subaddr = data[0] + 1;
2747                         msg[1].len = 2;
2748                         i2c_transfer(&dev->i2c_adap, msg, 2);
2749                         tuner_t = (data[1] << 8) + data[0];
2750                         switch (tuner_t) {
2751                         case 0x0005:
2752                                 dev->tuner_type = TUNER_PHILIPS_FM1216ME_MK3;
2753                                 break;
2754                         case 0x001d:
2755                                 dev->tuner_type = TUNER_PHILIPS_FMD1216ME_MK3;
2756                                         printk(KERN_INFO "%s Board has DVB-T\n", dev->name);
2757                                 break;
2758                         default:
2759                                 printk(KERN_ERR "%s Cant determine tuner type %x from EEPROM\n", dev->name, tuner_t);
2760                         }
2761                 } else {
2762                         printk(KERN_ERR "%s unexpected config structure\n", dev->name);
2763                 }
2764
2765                 printk(KERN_INFO "%s Tuner type is %d\n", dev->name, dev->tuner_type);
2766                 if (dev->tuner_type == TUNER_PHILIPS_FMD1216ME_MK3) {
2767                         dev->tda9887_conf = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE | TDA9887_PORT2_ACTIVE;
2768                         saa7134_i2c_call_clients(dev,TDA9887_SET_CONFIG, &dev->tda9887_conf);
2769                 }
2770
2771                 tun_setup.mode_mask = T_RADIO | T_ANALOG_TV | T_DIGITAL_TV;
2772                 tun_setup.type = dev->tuner_type;
2773                 tun_setup.addr = ADDR_UNSET;
2774
2775                 saa7134_i2c_call_clients (dev, TUNER_SET_TYPE_ADDR,&tun_setup);
2776                 }
2777                 break;
2778         }
2779         return 0;
2780 }
2781
2782 /* ----------------------------------------------------------- */
2783 /*
2784  * Local variables:
2785  * c-basic-offset: 8
2786  * End:
2787  */