[PATCH] v4l: 663: add new rtd cards
[pandora-kernel.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 <mike@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         [SAA7134_BOARD_PHILIPS_EUROPA] = {
2189                 .name           = "Philips EUROPA V3 reference design",
2190                 .audio_clock    = 0x00187de7,
2191                 .tuner_type     = TUNER_PHILIPS_TD1316,
2192                 .radio_type     = UNSET,
2193                 .tuner_addr     = 0x61,
2194                 .radio_addr     = ADDR_UNSET,
2195                 .tda9887_conf   = TDA9887_PRESENT,
2196                 .mpeg           = SAA7134_MPEG_DVB,
2197                 .inputs = {{
2198                         .name   = name_tv,
2199                         .vmux   = 3,
2200                         .amux   = TV,
2201                         .tv     = 1,
2202                 },{
2203                         .name   = name_comp1,
2204                         .vmux   = 0,
2205                         .amux   = LINE2,
2206                 },{
2207                         .name   = name_svideo,
2208                         .vmux   = 8,
2209                         .amux   = LINE2,
2210                 }},
2211         },
2212         [SAA7134_BOARD_VIDEOMATE_DVBT_300] = {
2213                 .name           = "Compro Videomate DVB-T300",
2214                 .audio_clock    = 0x00187de7,
2215                 .tuner_type     = TUNER_PHILIPS_TD1316,
2216                 .radio_type     = UNSET,
2217                 .tuner_addr     = 0x61,
2218                 .radio_addr     = ADDR_UNSET,
2219                 .tda9887_conf   = TDA9887_PRESENT,
2220                 .mpeg           = SAA7134_MPEG_DVB,
2221                 .inputs = {{
2222                         .name   = name_tv,
2223                         .vmux   = 3,
2224                         .amux   = TV,
2225                         .tv     = 1,
2226                 },{
2227                         .name   = name_comp1,
2228                         .vmux   = 1,
2229                         .amux   = LINE2,
2230                 },{
2231                         .name   = name_svideo,
2232                         .vmux   = 8,
2233                         .amux   = LINE2,
2234                 }},
2235         },
2236         [SAA7134_BOARD_VIDEOMATE_DVBT_200] = {
2237                 .name           = "Compro Videomate DVB-T200",
2238                 .tuner_type     = TUNER_ABSENT,
2239                 .audio_clock    = 0x00187de7,
2240                 .radio_type     = UNSET,
2241                 .tuner_addr     = ADDR_UNSET,
2242                 .radio_addr     = ADDR_UNSET,
2243                 .mpeg           = SAA7134_MPEG_DVB,
2244                 .inputs = {{
2245                         .name   = name_comp1,
2246                         .vmux   = 0,
2247                         .amux   = LINE1,
2248                 },{
2249                         .name   = name_svideo,
2250                         .vmux   = 8,
2251                         .amux   = LINE1,
2252                 }},
2253         },
2254         [SAA7134_BOARD_RTD_VFG7350] = {
2255                 .name           = "RTD Embedded Technologies VFG7350",
2256                 .audio_clock    = 0x00200000,
2257                 .tuner_type     = TUNER_ABSENT,
2258                 .radio_type     = UNSET,
2259                 .tuner_addr     = ADDR_UNSET,
2260                 .radio_addr     = ADDR_UNSET,
2261                 .inputs         = {{
2262                         .name   = "Composite 0",
2263                         .vmux   = 0,
2264                         .amux   = LINE1,
2265                 },{
2266                         .name   = "Composite 1",
2267                         .vmux   = 1,
2268                         .amux   = LINE2,
2269                 },{
2270                         .name   = "Composite 2",
2271                         .vmux   = 2,
2272                         .amux   = LINE1,
2273                 },{
2274                         .name   = "Composite 3",
2275                         .vmux   = 3,
2276                         .amux   = LINE2,
2277                 },{
2278                         .name   = "S-Video 0",
2279                         .vmux   = 8,
2280                         .amux   = LINE1,
2281                 },{
2282                         .name   = "S-Video 1",
2283                         .vmux   = 9,
2284                         .amux   = LINE2,
2285                 }},
2286                 .mpeg           = SAA7134_MPEG_EMPRESS,
2287                 .video_out      = CCIR656,
2288         },
2289         [SAA7134_BOARD_RTD_VFG7330] = {
2290                 .name           = "RTD Embedded Technologies VFG7330",
2291                 .audio_clock    = 0x00200000,
2292                 .tuner_type     = TUNER_ABSENT,
2293                 .radio_type     = UNSET,
2294                 .tuner_addr     = ADDR_UNSET,
2295                 .radio_addr     = ADDR_UNSET,
2296                 .inputs         = {{
2297                         .name   = "Composite 0",
2298                         .vmux   = 0,
2299                         .amux   = LINE1,
2300                 },{
2301                         .name   = "Composite 1",
2302                         .vmux   = 1,
2303                         .amux   = LINE2,
2304                 },{
2305                         .name   = "Composite 2",
2306                         .vmux   = 2,
2307                         .amux   = LINE1,
2308                 },{
2309                         .name   = "Composite 3",
2310                         .vmux   = 3,
2311                         .amux   = LINE2,
2312                 },{
2313                         .name   = "S-Video 0",
2314                         .vmux   = 8,
2315                         .amux   = LINE1,
2316                 },{
2317                         .name   = "S-Video 1",
2318                         .vmux   = 9,
2319                         .amux   = LINE2,
2320                 }},
2321         },
2322 };
2323
2324 const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards);
2325
2326 /* ------------------------------------------------------------------ */
2327 /* PCI ids + subsystem IDs                                            */
2328
2329 struct pci_device_id saa7134_pci_tbl[] = {
2330         {
2331                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2332                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2333                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
2334                 .subdevice    = 0x2001,
2335                 .driver_data  = SAA7134_BOARD_PROTEUS_PRO,
2336         },{
2337                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2338                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2339                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
2340                 .subdevice    = 0x2001,
2341                 .driver_data  = SAA7134_BOARD_PROTEUS_PRO,
2342         },{
2343                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2344                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2345                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
2346                 .subdevice    = 0x6752,
2347                 .driver_data  = SAA7134_BOARD_EMPRESS,
2348         },{
2349                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2350                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2351                 .subvendor    = 0x1131,
2352                 .subdevice    = 0x4e85,
2353                 .driver_data  = SAA7134_BOARD_MONSTERTV,
2354         },{
2355                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2356                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2357                 .subvendor    = 0x153b,
2358                 .subdevice    = 0x1142,
2359                 .driver_data  = SAA7134_BOARD_CINERGY400,
2360         },{
2361                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2362                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2363                 .subvendor    = 0x153b,
2364                 .subdevice    = 0x1143,
2365                 .driver_data  = SAA7134_BOARD_CINERGY600,
2366         },{
2367                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2368                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2369                 .subvendor    = 0x153b,
2370                 .subdevice    = 0x1158,
2371                 .driver_data  = SAA7134_BOARD_CINERGY600_MK3,
2372         },{
2373                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2374                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2375                 .subvendor    = 0x153b,
2376                 .subdevice    = 0x1162,
2377                 .driver_data  = SAA7134_BOARD_CINERGY400_CARDBUS,
2378         },{
2379                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2380                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2381                 .subvendor    = 0x5168,
2382                 .subdevice    = 0x0138,
2383                 .driver_data  = SAA7134_BOARD_FLYVIDEO3000,
2384         },{
2385                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2386                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2387                 .subvendor    = 0x4e42,                         /* "Typhoon PCI Capture TV Card" Art.No. 50673 */
2388                 .subdevice    = 0x0138,
2389                 .driver_data  = SAA7134_BOARD_FLYVIDEO3000,
2390         },{
2391                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2392                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2393                 .subvendor    = 0x5168,
2394                 .subdevice    = 0x0138,
2395                 .driver_data  = SAA7134_BOARD_FLYVIDEO2000,
2396         },{
2397                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2398                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2399                 .subvendor    = 0x5168,
2400                 .subdevice    = 0x0212, /* minipci, LR212 */
2401                 .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_MINI,
2402         },{
2403                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2404                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2405                 .subvendor    = 0x4e42,
2406                 .subdevice    = 0x0212, /* OEM minipci, LR212 */
2407                 .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_MINI,
2408         },{
2409                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2410                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2411                 .subvendor    = 0x5168, /* Animation Technologies (LifeView) */
2412                 .subdevice    = 0x0214, /* Standard PCI, LR214WF */
2413                 .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_FM,
2414         },{
2415                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2416                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2417                 .subvendor    = 0x1489, /* KYE */
2418                 .subdevice    = 0x0214, /* Genius VideoWonder ProTV */
2419                 .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_FM, /* is an LR214WF actually */
2420         },{
2421                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2422                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2423                 .subvendor    = 0x16be,
2424                 .subdevice    = 0x0003,
2425                 .driver_data  = SAA7134_BOARD_MD7134,
2426         },{
2427                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2428                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2429                 .subvendor    = 0x1048,
2430                 .subdevice    = 0x226b,
2431                 .driver_data  = SAA7134_BOARD_ELSA,
2432         },{
2433                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2434                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2435                 .subvendor    = 0x1048,
2436                 .subdevice    = 0x226b,
2437                 .driver_data  = SAA7134_BOARD_ELSA_500TV,
2438         },{
2439                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2440                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2441                 .subvendor    = PCI_VENDOR_ID_ASUSTEK,
2442                 .subdevice    = 0x4842,
2443                 .driver_data  = SAA7134_BOARD_ASUSTeK_TVFM7134,
2444         },{
2445                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2446                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2447                 .subvendor    = PCI_VENDOR_ID_ASUSTEK,
2448                 .subdevice    = 0x4845,
2449                 .driver_data  = SAA7134_BOARD_ASUSTeK_TVFM7135,
2450         },{
2451                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2452                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2453                 .subvendor    = PCI_VENDOR_ID_ASUSTEK,
2454                 .subdevice    = 0x4830,
2455                 .driver_data  = SAA7134_BOARD_ASUSTeK_TVFM7134,
2456         },{
2457                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2458                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2459                 .subvendor    = PCI_VENDOR_ID_ASUSTEK,
2460                 .subdevice    = 0x4843,
2461                 .driver_data  = SAA7134_BOARD_ASUSTEK_TVFM7133,
2462         },{
2463                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2464                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2465                 .subvendor    = PCI_VENDOR_ID_ASUSTEK,
2466                 .subdevice    = 0x4840,
2467                 .driver_data  = SAA7134_BOARD_ASUSTeK_TVFM7134,
2468         },{
2469                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2470                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2471                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
2472                 .subdevice    = 0xfe01,
2473                 .driver_data  = SAA7134_BOARD_TVSTATION_RDS,
2474         },{
2475                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2476                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2477                 .subvendor    = 0x1894,
2478                 .subdevice    = 0xfe01,
2479                 .driver_data  = SAA7134_BOARD_TVSTATION_RDS,
2480         },{
2481                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2482                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2483                 .subvendor    = 0x1894,
2484                 .subdevice    = 0xa006,
2485                 .driver_data  = SAA7134_BOARD_TVSTATION_DVR,
2486         },{
2487                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2488                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2489                 .subvendor    = 0x1131,
2490                 .subdevice    = 0x7133,
2491                 .driver_data  = SAA7134_BOARD_VA1000POWER,
2492         },{
2493                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2494                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2495                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
2496                 .subdevice    = 0x2001,
2497                 .driver_data  = SAA7134_BOARD_10MOONSTVMASTER,
2498         },{
2499                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2500                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2501                 .subvendor    = 0x185b,
2502                 .subdevice    = 0xc100,
2503                 .driver_data  = SAA7134_BOARD_VIDEOMATE_TV,
2504         },{
2505                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2506                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2507                 .subvendor    = 0x185b,
2508                 .subdevice    = 0xc100,
2509                 .driver_data  = SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUS,
2510         },{
2511                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2512                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2513                 .subvendor    = PCI_VENDOR_ID_MATROX,
2514                 .subdevice    = 0x48d0,
2515                 .driver_data  = SAA7134_BOARD_CRONOS_PLUS,
2516         },{
2517                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2518                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2519                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
2520                 .subdevice    = 0xa70b,
2521                 .driver_data  = SAA7134_BOARD_MD2819,
2522         },{
2523                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2524                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2525                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
2526                 .subdevice    = 0x2115,
2527                 .driver_data  = SAA7134_BOARD_AVERMEDIA_STUDIO_305,
2528         },{
2529                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2530                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2531                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
2532                 .subdevice    = 0x2108,
2533                 .driver_data  = SAA7134_BOARD_AVERMEDIA_305,
2534         },{
2535                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2536                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2537                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
2538                 .subdevice    = 0x10ff,
2539                 .driver_data  = SAA7134_BOARD_AVERMEDIA_DVD_EZMAKER,
2540         },{
2541                 /* AVerMedia CardBus */
2542                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2543                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2544                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
2545                 .subdevice    = 0xd6ee,
2546                 .driver_data  = SAA7134_BOARD_AVERMEDIA_CARDBUS,
2547         },{
2548                 /* TransGear 3000TV */
2549                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2550                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2551                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
2552                 .subdevice    = 0x050c,
2553                 .driver_data  = SAA7134_BOARD_TG3000TV,
2554         },{
2555                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2556                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2557                 .subvendor    = 0x11bd,
2558                 .subdevice    = 0x002b,
2559                 .driver_data  = SAA7134_BOARD_PINNACLE_PCTV_STEREO,
2560         },{
2561                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2562                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2563                 .subvendor    = 0x11bd,
2564                 .subdevice    = 0x002d,
2565                 .driver_data  = SAA7134_BOARD_PINNACLE_300I_DVBT_PAL,
2566         },{
2567                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2568                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2569                 .subvendor    = 0x1019,
2570                 .subdevice    = 0x4cb4,
2571                 .driver_data  = SAA7134_BOARD_ECS_TVP3XP,
2572         },{
2573                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2574                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2575                 .subvendor    = 0x1019,
2576                 .subdevice    = 0x4cb5,
2577                 .driver_data  = SAA7134_BOARD_ECS_TVP3XP_4CB5,
2578         },{
2579                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2580                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2581                 .subvendor    = 0x12ab,
2582                 .subdevice    = 0x0800,
2583                 .driver_data  = SAA7134_BOARD_UPMOST_PURPLE_TV,
2584         },{
2585                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2586                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2587                 .subvendor    = 0x153b,
2588                 .subdevice    = 0x1152,
2589                 .driver_data  = SAA7134_BOARD_CINERGY200,
2590         },{
2591                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2592                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2593                 .subvendor    = 0x185b,
2594                 .subdevice    = 0xc100,
2595                 .driver_data  = SAA7134_BOARD_VIDEOMATE_TV_PVR,
2596         },{
2597                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2598                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2599                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
2600                 .subdevice    = 0x9715,
2601                 .driver_data  = SAA7134_BOARD_AVERMEDIA_STUDIO_307,
2602         },{
2603                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2604                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2605                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
2606                 .subdevice    = 0xa70a,
2607                 .driver_data  = SAA7134_BOARD_AVERMEDIA_307,
2608         },{
2609                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2610                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2611                 .subvendor    = 0x185b,
2612                 .subdevice    = 0xc200,
2613                 .driver_data  = SAA7134_BOARD_VIDEOMATE_GOLD_PLUS,
2614         },{
2615                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2616                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2617                 .subvendor    = 0x1540,
2618                 .subdevice    = 0x9524,
2619                 .driver_data  = SAA7134_BOARD_PROVIDEO_PV952,
2620
2621         },{
2622                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2623                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2624                 .subvendor    = 0x5168,
2625                 .subdevice    = 0x0502,                /* Cardbus version */
2626                 .driver_data  = SAA7134_BOARD_FLYDVBTDUO,
2627         },{
2628                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2629                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2630                 .subvendor    = 0x5168,
2631                 .subdevice    = 0x0306,                /* PCI version */
2632                 .driver_data  = SAA7134_BOARD_FLYDVBTDUO,
2633         },{
2634                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2635                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2636                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
2637                 .subdevice    = 0xf31f,
2638                 .driver_data  = SAA7134_BOARD_AVERMEDIA_GO_007_FM,
2639
2640         },{
2641                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2642                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2643                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
2644                 .subdevice    = 0x2004,
2645                 .driver_data  = SAA7134_BOARD_PHILIPS_TOUGH,
2646         },{
2647                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2648                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2649                 .subvendor    = 0x1421,
2650                 .subdevice    = 0x0350,         /* PCI version */
2651                 .driver_data  = SAA7134_BOARD_ADS_INSTANT_TV,
2652
2653         },{
2654                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2655                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2656                 .subvendor    = 0x1421,
2657                 .subdevice    = 0x0370,         /* cardbus version */
2658                 .driver_data  = SAA7134_BOARD_ADS_INSTANT_TV,
2659
2660         },{     /* Typhoon DVB-T Duo Digital/Analog Cardbus */
2661                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2662                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2663                 .subvendor    = 0x4e42,
2664                 .subdevice    = 0x0502,
2665                 .driver_data  = SAA7134_BOARD_THYPHOON_DVBT_DUO_CARDBUS,
2666         },{
2667                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2668                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2669                 .subvendor    = 0x1043,
2670                 .subdevice    = 0x0210,         /* mini pci NTSC version */
2671                 .driver_data  = SAA7134_BOARD_FLYTV_DIGIMATRIX,
2672         },{
2673                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2674                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2675                 .subvendor    = 0x1043,
2676                 .subdevice    = 0x0210,         /* mini pci PAL/SECAM version */
2677                 .driver_data  = SAA7134_BOARD_FLYTV_DIGIMATRIX,
2678
2679         },{
2680                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2681                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2682                 .subvendor    = 0x0000, /* It shouldn't break anything, since subdevice id seems unique */
2683                 .subdevice    = 0x4091,
2684                 .driver_data  = SAA7134_BOARD_BEHOLD_409FM,
2685         },{
2686                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2687                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2688                 .subvendor    = 0x5456, /* GoTView */
2689                 .subdevice    = 0x7135,
2690                 .driver_data  = SAA7134_BOARD_GOTVIEW_7135,
2691         },{
2692                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2693                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2694                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
2695                 .subdevice    = 0x2004,
2696                 .driver_data  = SAA7134_BOARD_PHILIPS_EUROPA,
2697         },{
2698                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2699                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2700                 .subvendor    = 0x185b,
2701                 .subdevice    = 0xc900,
2702                 .driver_data  = SAA7134_BOARD_VIDEOMATE_DVBT_300,
2703         },{
2704                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2705                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2706                 .subvendor    = 0x185b,
2707                 .subdevice    = 0xc901,
2708                 .driver_data  = SAA7134_BOARD_VIDEOMATE_DVBT_200,
2709         },{
2710                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2711                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2712                 .subvendor    = 0x1435,
2713                 .subdevice    = 0x7350,
2714                 .driver_data  = SAA7134_BOARD_RTD_VFG7350,
2715         },{
2716                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2717                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2718                 .subvendor    = 0x1435,
2719                 .subdevice    = 0x7330,
2720                 .driver_data  = SAA7134_BOARD_RTD_VFG7330,
2721         },{
2722                 /* --- boards without eeprom + subsystem ID --- */
2723                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2724                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2725                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
2726                 .subdevice    = 0,
2727                 .driver_data  = SAA7134_BOARD_NOAUTO,
2728         },{
2729                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2730                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2731                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
2732                 .subdevice    = 0,
2733                 .driver_data  = SAA7134_BOARD_NOAUTO,
2734         },{
2735
2736                 /* --- default catch --- */
2737                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2738                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2739                 .subvendor    = PCI_ANY_ID,
2740                 .subdevice    = PCI_ANY_ID,
2741                 .driver_data  = SAA7134_BOARD_UNKNOWN,
2742         },{
2743                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2744                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2745                 .subvendor    = PCI_ANY_ID,
2746                 .subdevice    = PCI_ANY_ID,
2747                 .driver_data  = SAA7134_BOARD_UNKNOWN,
2748         },{
2749                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2750                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2751                 .subvendor    = PCI_ANY_ID,
2752                 .subdevice    = PCI_ANY_ID,
2753                 .driver_data  = SAA7134_BOARD_UNKNOWN,
2754         },{
2755                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2756                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7135,
2757                 .subvendor    = PCI_ANY_ID,
2758                 .subdevice    = PCI_ANY_ID,
2759                 .driver_data  = SAA7134_BOARD_UNKNOWN,
2760         },{
2761                 /* --- end of list --- */
2762         }
2763 };
2764 MODULE_DEVICE_TABLE(pci, saa7134_pci_tbl);
2765
2766 /* ----------------------------------------------------------- */
2767 /* flyvideo tweaks                                             */
2768
2769
2770 static void board_flyvideo(struct saa7134_dev *dev)
2771 {
2772         printk("%s: there are different flyvideo cards with different tuners\n"
2773                "%s: out there, you might have to use the tuner=<nr> insmod\n"
2774                "%s: option to override the default value.\n",
2775                dev->name, dev->name, dev->name);
2776 }
2777
2778 /* ----------------------------------------------------------- */
2779
2780 int saa7134_board_init1(struct saa7134_dev *dev)
2781 {
2782         /* Always print gpio, often manufacturers encode tuner type and other info. */
2783         saa_writel(SAA7134_GPIO_GPMODE0 >> 2, 0);
2784         dev->gpio_value = saa_readl(SAA7134_GPIO_GPSTATUS0 >> 2);
2785         printk(KERN_INFO "%s: board init: gpio is %x\n", dev->name, dev->gpio_value);
2786
2787         switch (dev->board) {
2788         case SAA7134_BOARD_FLYVIDEO2000:
2789         case SAA7134_BOARD_FLYVIDEO3000:
2790                 dev->has_remote = 1;
2791                 board_flyvideo(dev);
2792                 break;
2793         case SAA7134_BOARD_FLYTVPLATINUM_FM:
2794         case SAA7134_BOARD_CINERGY400:
2795         case SAA7134_BOARD_CINERGY600:
2796         case SAA7134_BOARD_CINERGY600_MK3:
2797         case SAA7134_BOARD_ECS_TVP3XP:
2798         case SAA7134_BOARD_ECS_TVP3XP_4CB5:
2799         case SAA7134_BOARD_MD2819:
2800         case SAA7134_BOARD_KWORLD_VSTREAM_XPERT:
2801         case SAA7134_BOARD_KWORLD_XPERT:
2802         case SAA7134_BOARD_AVERMEDIA_STUDIO_305:
2803         case SAA7134_BOARD_AVERMEDIA_305:
2804         case SAA7134_BOARD_AVERMEDIA_STUDIO_307:
2805         case SAA7134_BOARD_AVERMEDIA_307:
2806         case SAA7134_BOARD_AVERMEDIA_GO_007_FM:
2807 /*      case SAA7134_BOARD_SABRENT_SBTTVFM:  */ /* not finished yet */
2808         case SAA7134_BOARD_VIDEOMATE_TV_PVR:
2809         case SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUSII:
2810         case SAA7134_BOARD_MANLI_MTV001:
2811         case SAA7134_BOARD_MANLI_MTV002:
2812         case SAA7134_BOARD_BEHOLD_409FM:
2813         case SAA7134_BOARD_AVACSSMARTTV:
2814         case SAA7134_BOARD_GOTVIEW_7135:
2815                 dev->has_remote = 1;
2816                 break;
2817         case SAA7134_BOARD_MD5044:
2818                 printk("%s: seems there are two different versions of the MD5044\n"
2819                 "%s: (with the same ID) out there.  If sound doesn't work for\n"
2820                 "%s: you try the audio_clock_override=0x200000 insmod option.\n",
2821                 dev->name,dev->name,dev->name);
2822                 break;
2823         case SAA7134_BOARD_CINERGY400_CARDBUS:
2824                 /* power-up tuner chip */
2825                 saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0x00040000, 0x00040000);
2826                 saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00040000, 0x00000000);
2827                 msleep(1);
2828                 break;
2829         case SAA7134_BOARD_FLYDVBTDUO:
2830         case SAA7134_BOARD_THYPHOON_DVBT_DUO_CARDBUS:
2831                 /* turn the fan on */
2832                 saa_writeb(SAA7134_GPIO_GPMODE3, 0x08);
2833                 saa_writeb(SAA7134_GPIO_GPSTATUS3, 0x06);
2834                 break;
2835         case SAA7134_BOARD_AVERMEDIA_CARDBUS:
2836                 /* power-up tuner chip */
2837                 saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0xffffffff, 0xffffffff);
2838                 saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0xffffffff, 0xffffffff);
2839                 msleep(1);
2840                 break;
2841         case SAA7134_BOARD_RTD_VFG7350:
2842
2843                 /*
2844                  * Make sure Production Test Register at offset 0x1D1 is cleared
2845                  * to take chip out of test mode.  Clearing bit 4 (TST_EN_AOUT)
2846                  * prevents pin 105 from remaining low; keeping pin 105 low
2847                  * continually resets the SAA6752 chip.
2848                  */
2849
2850                 saa_writeb (SAA7134_PRODUCTION_TEST_MODE, 0x00);
2851                 break;
2852         }
2853         return 0;
2854 }
2855
2856 /* stuff which needs working i2c */
2857 int saa7134_board_init2(struct saa7134_dev *dev)
2858 {
2859         unsigned char buf;
2860         int board;
2861
2862         switch (dev->board) {
2863         case SAA7134_BOARD_BMK_MPEX_NOTUNER:
2864         case SAA7134_BOARD_BMK_MPEX_TUNER:
2865                 dev->i2c_client.addr = 0x60;
2866                 board = (i2c_master_recv(&dev->i2c_client,&buf,0) < 0)
2867                         ? SAA7134_BOARD_BMK_MPEX_NOTUNER
2868                         : SAA7134_BOARD_BMK_MPEX_TUNER;
2869                 if (board == dev->board)
2870                         break;
2871                 dev->board = board;
2872                 printk("%s: board type fixup: %s\n", dev->name,
2873                 saa7134_boards[dev->board].name);
2874                 dev->tuner_type = saa7134_boards[dev->board].tuner_type;
2875
2876                 if (TUNER_ABSENT != dev->tuner_type) {
2877                                 struct tuner_setup tun_setup;
2878
2879                                 tun_setup.mode_mask = T_RADIO | T_ANALOG_TV | T_DIGITAL_TV;
2880                                 tun_setup.type = dev->tuner_type;
2881                                 tun_setup.addr = ADDR_UNSET;
2882
2883                                 saa7134_i2c_call_clients (dev, TUNER_SET_TYPE_ADDR, &tun_setup);
2884                 }
2885                 break;
2886         case SAA7134_BOARD_MD7134:
2887                 {
2888                 struct tuner_setup tun_setup;
2889                 u8 subaddr;
2890                 u8 data[3];
2891                 int ret, tuner_t;
2892
2893                 struct i2c_msg msg[] = {{.addr=0x50, .flags=0, .buf=&subaddr, .len = 1},
2894                                         {.addr=0x50, .flags=I2C_M_RD, .buf=data, .len = 3}};
2895                 subaddr= 0x14;
2896                 tuner_t = 0;
2897                 ret = i2c_transfer(&dev->i2c_adap, msg, 2);
2898                 if (ret != 2) {
2899                         printk(KERN_ERR "EEPROM read failure\n");
2900                 } else if ((data[0] != 0) && (data[0] != 0xff)) {
2901                         /* old config structure */
2902                         subaddr = data[0] + 2;
2903                         msg[1].len = 2;
2904                         i2c_transfer(&dev->i2c_adap, msg, 2);
2905                         tuner_t = (data[0] << 8) + data[1];
2906                         switch (tuner_t){
2907                         case 0x0103:
2908                                 dev->tuner_type = TUNER_PHILIPS_PAL;
2909                                 break;
2910                         case 0x010C:
2911                                 dev->tuner_type = TUNER_PHILIPS_FM1216ME_MK3;
2912                                 break;
2913                         default:
2914                                 printk(KERN_ERR "%s Cant determine tuner type %x from EEPROM\n", dev->name, tuner_t);
2915                         }
2916                 } else if ((data[1] != 0) && (data[1] != 0xff)) {
2917                         /* new config structure */
2918                         subaddr = data[1] + 1;
2919                         msg[1].len = 1;
2920                         i2c_transfer(&dev->i2c_adap, msg, 2);
2921                         subaddr = data[0] + 1;
2922                         msg[1].len = 2;
2923                         i2c_transfer(&dev->i2c_adap, msg, 2);
2924                         tuner_t = (data[1] << 8) + data[0];
2925                         switch (tuner_t) {
2926                         case 0x0005:
2927                                 dev->tuner_type = TUNER_PHILIPS_FM1216ME_MK3;
2928                                 break;
2929                         case 0x001d:
2930                                 dev->tuner_type = TUNER_PHILIPS_FMD1216ME_MK3;
2931                                         printk(KERN_INFO "%s Board has DVB-T\n", dev->name);
2932                                 break;
2933                         default:
2934                                 printk(KERN_ERR "%s Cant determine tuner type %x from EEPROM\n", dev->name, tuner_t);
2935                         }
2936                 } else {
2937                         printk(KERN_ERR "%s unexpected config structure\n", dev->name);
2938                 }
2939
2940                 printk(KERN_INFO "%s Tuner type is %d\n", dev->name, dev->tuner_type);
2941                 if (dev->tuner_type == TUNER_PHILIPS_FMD1216ME_MK3) {
2942                         dev->tda9887_conf = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE | TDA9887_PORT2_ACTIVE;
2943                         saa7134_i2c_call_clients(dev,TDA9887_SET_CONFIG, &dev->tda9887_conf);
2944                 }
2945
2946                 tun_setup.mode_mask = T_RADIO | T_ANALOG_TV | T_DIGITAL_TV;
2947                 tun_setup.type = dev->tuner_type;
2948                 tun_setup.addr = ADDR_UNSET;
2949
2950                 saa7134_i2c_call_clients (dev, TUNER_SET_TYPE_ADDR,&tun_setup);
2951                 }
2952                 break;
2953         case SAA7134_BOARD_PHILIPS_EUROPA:
2954         case SAA7134_BOARD_VIDEOMATE_DVBT_300:
2955                 /* The Philips EUROPA based hybrid boards have the tuner connected through
2956                  * the channel decoder. We have to make it transparent to find it
2957                  */
2958                 {
2959                 struct tuner_setup tun_setup;
2960                 u8 data[] = { 0x07, 0x02};
2961                 struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
2962                 i2c_transfer(&dev->i2c_adap, &msg, 1);
2963
2964                 tun_setup.mode_mask = T_ANALOG_TV | T_DIGITAL_TV;
2965                 tun_setup.type = dev->tuner_type;
2966                 tun_setup.addr = dev->tuner_addr;
2967
2968                 saa7134_i2c_call_clients (dev, TUNER_SET_TYPE_ADDR,&tun_setup);
2969                 }
2970                 break;
2971         }
2972         return 0;
2973 }
2974
2975 /* ----------------------------------------------------------- */
2976 /*
2977  * Local variables:
2978  * c-basic-offset: 8
2979  * End:
2980  */