[PATCH] fix broken hybrid v4l-dvb frontend selection
[linux-2.6] / 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                 .vid_port_opts  = ( SET_T_CODE_POLARITY_NON_INVERTED |
2289                                     SET_CLOCK_NOT_DELAYED |
2290                                     SET_CLOCK_INVERTED |
2291                                     SET_VSYNC_OFF ),
2292         },
2293         [SAA7134_BOARD_RTD_VFG7330] = {
2294                 .name           = "RTD Embedded Technologies VFG7330",
2295                 .audio_clock    = 0x00200000,
2296                 .tuner_type     = TUNER_ABSENT,
2297                 .radio_type     = UNSET,
2298                 .tuner_addr     = ADDR_UNSET,
2299                 .radio_addr     = ADDR_UNSET,
2300                 .inputs         = {{
2301                         .name   = "Composite 0",
2302                         .vmux   = 0,
2303                         .amux   = LINE1,
2304                 },{
2305                         .name   = "Composite 1",
2306                         .vmux   = 1,
2307                         .amux   = LINE2,
2308                 },{
2309                         .name   = "Composite 2",
2310                         .vmux   = 2,
2311                         .amux   = LINE1,
2312                 },{
2313                         .name   = "Composite 3",
2314                         .vmux   = 3,
2315                         .amux   = LINE2,
2316                 },{
2317                         .name   = "S-Video 0",
2318                         .vmux   = 8,
2319                         .amux   = LINE1,
2320                 },{
2321                         .name   = "S-Video 1",
2322                         .vmux   = 9,
2323                         .amux   = LINE2,
2324                 }},
2325         },
2326         [SAA7134_BOARD_FLYTVPLATINUM_MINI2] = {
2327                 .name           = "LifeView FlyTV Platinum Mini2",
2328                 .audio_clock    = 0x00200000,
2329                 .tuner_type     = TUNER_PHILIPS_TDA8290,
2330                 .radio_type     = UNSET,
2331                 .tuner_addr     = ADDR_UNSET,
2332                 .radio_addr     = ADDR_UNSET,
2333
2334                 .inputs         = {{
2335                         .name = name_tv,
2336                         .vmux = 1,
2337                         .amux = TV,
2338                         .tv   = 1,
2339                 },{
2340                         .name = name_comp1,     /* Composite signal on S-Video input */
2341                         .vmux = 0,
2342                         .amux = LINE2,
2343                 },{
2344                         .name = name_comp2,     /* Composite input */
2345                         .vmux = 3,
2346                         .amux = LINE2,
2347                 },{
2348                         .name = name_svideo,
2349                         .vmux = 8,
2350                         .amux = LINE2,
2351                 }},
2352         },
2353         [SAA7134_BOARD_AVERMEDIA_AVERTVHD_A180] = {
2354                 /* Michael Krufky <mkrufky@m1k.net>
2355                  * Uses Alps Electric TDHU2, containing NXT2004 ATSC Decoder
2356                  * AFAIK, there is no analog demod, thus,
2357                  * no support for analog television.
2358                  */
2359                 .name           = "AVerMedia AVerTVHD MCE A180",
2360                 .audio_clock    = 0x00187de7,
2361                 .tuner_type     = TUNER_ABSENT,
2362                 .radio_type     = UNSET,
2363                 .tuner_addr     = ADDR_UNSET,
2364                 .radio_addr     = ADDR_UNSET,
2365                 .mpeg           = SAA7134_MPEG_DVB,
2366                 .inputs         = {{
2367                         .name = name_comp1,
2368                         .vmux = 3,
2369                         .amux = LINE2,
2370                 },{
2371                         .name = name_svideo,
2372                         .vmux = 8,
2373                         .amux = LINE2,
2374                 }},
2375         },
2376         [SAA7134_BOARD_MONSTERTV_MOBILE] = {
2377                 .name           = "SKNet MonsterTV Mobile",
2378                 .audio_clock    = 0x00187de7,
2379                 .tuner_type     = TUNER_PHILIPS_TDA8290,
2380                 .radio_type     = UNSET,
2381                 .tuner_addr     = ADDR_UNSET,
2382                 .radio_addr     = ADDR_UNSET,
2383
2384                 .inputs         = {{
2385                           .name = name_tv,
2386                           .vmux = 1,
2387                           .amux = TV,
2388                           .tv   = 1,
2389                 },{
2390                           .name = name_comp1,
2391                           .vmux = 3,
2392                           .amux = LINE1,
2393                 },{
2394                           .name = name_svideo,
2395                           .vmux = 6,
2396                           .amux = LINE1,
2397                 }},
2398         },
2399         [SAA7134_BOARD_PINNACLE_PCTV_110i] = {
2400                 .name           = "Pinnacle PCTV 110i (saa7133)",
2401                 .audio_clock    = 0x00187de7,
2402                 .tuner_type     = TUNER_PHILIPS_TDA8290,
2403                 .radio_type     = UNSET,
2404                 .tuner_addr     = ADDR_UNSET,
2405                 .radio_addr     = ADDR_UNSET,
2406                 .gpiomask       = 0x080200000,
2407                 .inputs         = {{
2408                           .name = name_tv,
2409                           .vmux = 4,
2410                           .amux = TV,
2411                           .tv   = 1,
2412                 },{
2413                           .name = name_comp1,
2414                           .vmux = 1,
2415                           .amux = LINE2,
2416                 },{
2417                           .name = name_svideo,
2418                           .vmux = 8,
2419                           .amux = LINE2,
2420                 }},
2421                 .radio = {
2422                           .name = name_radio,
2423                           .amux = LINE1,
2424                 },
2425         },
2426         [SAA7134_BOARD_ASUSTeK_P7131_DUAL] = {
2427                 .name           = "ASUSTeK P7131 Dual",
2428                 .audio_clock    = 0x00187de7,
2429                 .tuner_type     = TUNER_PHILIPS_TDA8290,
2430                 .radio_type     = UNSET,
2431                 .tuner_addr     = ADDR_UNSET,
2432                 .radio_addr     = ADDR_UNSET,
2433                 .gpiomask       = 1 << 21,
2434                 .mpeg           = SAA7134_MPEG_DVB,
2435                 .inputs         = {{
2436                         .name = name_tv,
2437                         .vmux = 1,
2438                         .amux = TV,
2439                         .tv   = 1,
2440                 },{
2441                         .name = name_comp1,
2442                         .vmux = 3,
2443                         .amux = LINE2,
2444                 },{
2445                         .name = name_svideo,
2446                         .vmux = 8,
2447                         .amux = LINE2,
2448                 }},
2449                 .radio = {
2450                         .name = name_radio,
2451                         .amux = TV,
2452                         .gpio = 0x0200000,
2453                 },
2454         },
2455         [SAA7134_BOARD_SEDNA_PC_TV_CARDBUS] = {
2456                 /* Paul Tom Zalac <pzalac@gmail.com> */
2457                 /* Pavel Mihaylov <bin@bash.info> */
2458                 .name           = "Sedna/MuchTV PC TV Cardbus TV/Radio (ITO25 Rev:2B)",
2459                                 /* Sedna/MuchTV (OEM) Cardbus TV Tuner */
2460                 .audio_clock    = 0x00187de7,
2461                 .tuner_type     = TUNER_PHILIPS_TDA8290,
2462                 .radio_type     = UNSET,
2463                 .tuner_addr     = ADDR_UNSET,
2464                 .radio_addr     = ADDR_UNSET,
2465                 .gpiomask       = 0xe880c0,
2466                 .inputs         = {{
2467                         .name = name_tv,
2468                         .vmux = 3,
2469                         .amux = TV,
2470                         .tv   = 1,
2471                 },{
2472                         .name = name_comp1,
2473                         .vmux = 1,
2474                         .amux = LINE1,
2475                 },{
2476                         .name = name_svideo,
2477                         .vmux = 6,
2478                         .amux = LINE1,
2479                 }},
2480                 .radio = {
2481                         .name = name_radio,
2482                         .amux = LINE2,
2483                 },
2484         },
2485         [SAA7134_BOARD_ASUSTEK_DIGIMATRIX_TV] = {
2486                 /* "Cyril Lacoux (Yack)" <clacoux@ifeelgood.org> */
2487                 .name           = "ASUS Digimatrix TV",
2488                 .audio_clock    = 0x00200000,
2489                 .tuner_type     = TUNER_PHILIPS_FQ1216ME,
2490                 .tda9887_conf   = TDA9887_PRESENT,
2491                 .radio_type     = UNSET,
2492                 .tuner_addr     = ADDR_UNSET,
2493                 .radio_addr     = ADDR_UNSET,
2494                 .inputs         = {{
2495                         .name = name_tv,
2496                         .vmux = 1,
2497                         .amux = TV,
2498                         .tv   = 1,
2499                 },{
2500                         .name = name_comp1,
2501                         .vmux = 3,
2502                         .amux = LINE1,
2503                 },{
2504                         .name = name_svideo,
2505                         .vmux = 8,
2506                         .amux = LINE1,
2507                 }},
2508         },
2509         [SAA7134_BOARD_PHILIPS_TIGER] = {
2510                 .name           = "Philips Tiger reference design",
2511                 .audio_clock    = 0x00187de7,
2512                 .tuner_type     = TUNER_PHILIPS_TDA8290,
2513                 .radio_type     = UNSET,
2514                 .tuner_addr     = ADDR_UNSET,
2515                 .radio_addr     = ADDR_UNSET,
2516                 .mpeg           = SAA7134_MPEG_DVB,
2517                 .inputs = {{
2518                         .name   = name_tv,
2519                         .vmux   = 1,
2520                         .amux   = TV,
2521                         .tv     = 1,
2522                 },{
2523                         .name   = name_comp1,
2524                         .vmux   = 3,
2525                         .amux   = LINE1,
2526                 },{
2527                         .name   = name_svideo,
2528                         .vmux   = 8,
2529                         .amux   = LINE1,
2530                 }},
2531         },
2532         [SAA7134_BOARD_MSI_TVATANYWHERE_PLUS] = {
2533                 .name           = "MSI TV@Anywhere plus",
2534                 .audio_clock    = 0x00187de7,
2535                 .tuner_type     = TUNER_PHILIPS_TDA8290,
2536                 .radio_type     = UNSET,
2537                 .tuner_addr     = ADDR_UNSET,
2538                 .radio_addr     = ADDR_UNSET,
2539                 .inputs = {{
2540                         .name   = name_tv,
2541                         .vmux   = 1,
2542                         .amux   = TV,
2543                         .tv     = 1,
2544                 },{
2545                         .name   = name_comp1,
2546                         .vmux   = 3,
2547                         .amux   = LINE1,
2548                 },{
2549                         .name   = name_svideo,
2550                         .vmux   = 0,
2551                         .amux   = LINE1,
2552                 }},
2553                 .radio = {
2554                         .name   = name_radio,
2555                         .amux   = LINE1,
2556                 },
2557         },
2558 };
2559
2560 const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards);
2561
2562 /* ------------------------------------------------------------------ */
2563 /* PCI ids + subsystem IDs                                            */
2564
2565 struct pci_device_id saa7134_pci_tbl[] = {
2566         {
2567                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2568                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2569                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
2570                 .subdevice    = 0x2001,
2571                 .driver_data  = SAA7134_BOARD_PROTEUS_PRO,
2572         },{
2573                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2574                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2575                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
2576                 .subdevice    = 0x2001,
2577                 .driver_data  = SAA7134_BOARD_PROTEUS_PRO,
2578         },{
2579                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2580                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2581                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
2582                 .subdevice    = 0x6752,
2583                 .driver_data  = SAA7134_BOARD_EMPRESS,
2584         },{
2585                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2586                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2587                 .subvendor    = 0x1131,
2588                 .subdevice    = 0x4e85,
2589                 .driver_data  = SAA7134_BOARD_MONSTERTV,
2590         },{
2591                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2592                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2593                 .subvendor    = 0x153b,
2594                 .subdevice    = 0x1142,
2595                 .driver_data  = SAA7134_BOARD_CINERGY400,
2596         },{
2597                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2598                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2599                 .subvendor    = 0x153b,
2600                 .subdevice    = 0x1143,
2601                 .driver_data  = SAA7134_BOARD_CINERGY600,
2602         },{
2603                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2604                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2605                 .subvendor    = 0x153b,
2606                 .subdevice    = 0x1158,
2607                 .driver_data  = SAA7134_BOARD_CINERGY600_MK3,
2608         },{
2609                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2610                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2611                 .subvendor    = 0x153b,
2612                 .subdevice    = 0x1162,
2613                 .driver_data  = SAA7134_BOARD_CINERGY400_CARDBUS,
2614         },{
2615                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2616                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2617                 .subvendor    = 0x5168,
2618                 .subdevice    = 0x0138,
2619                 .driver_data  = SAA7134_BOARD_FLYVIDEO3000,
2620         },{
2621                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2622                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2623                 .subvendor    = 0x4e42,                         /* "Typhoon PCI Capture TV Card" Art.No. 50673 */
2624                 .subdevice    = 0x0138,
2625                 .driver_data  = SAA7134_BOARD_FLYVIDEO3000,
2626         },{
2627                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2628                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2629                 .subvendor    = 0x5168,
2630                 .subdevice    = 0x0138,
2631                 .driver_data  = SAA7134_BOARD_FLYVIDEO2000,
2632         },{
2633                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2634                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2635                 .subvendor    = 0x5168,
2636                 .subdevice    = 0x0212, /* minipci, LR212 */
2637                 .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_MINI,
2638         },{
2639                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2640                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2641                 .subvendor    = 0x14c0,
2642                 .subdevice    = 0x1212, /* minipci, LR1212 */
2643                 .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_MINI2,
2644         },{
2645                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2646                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2647                 .subvendor    = 0x4e42,
2648                 .subdevice    = 0x0212, /* OEM minipci, LR212 */
2649                 .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_MINI,
2650         },{
2651                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2652                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2653                 .subvendor    = 0x5168, /* Animation Technologies (LifeView) */
2654                 .subdevice    = 0x0214, /* Standard PCI, LR214WF */
2655                 .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_FM,
2656         },{
2657                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2658                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2659                 .subvendor    = 0x1489, /* KYE */
2660                 .subdevice    = 0x0214, /* Genius VideoWonder ProTV */
2661                 .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_FM, /* is an LR214WF actually */
2662         },{
2663                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2664                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2665                 .subvendor    = 0x16be,
2666                 .subdevice    = 0x0003,
2667                 .driver_data  = SAA7134_BOARD_MD7134,
2668         },{
2669                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2670                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2671                 .subvendor    = 0x1048,
2672                 .subdevice    = 0x226b,
2673                 .driver_data  = SAA7134_BOARD_ELSA,
2674         },{
2675                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2676                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2677                 .subvendor    = 0x1048,
2678                 .subdevice    = 0x226b,
2679                 .driver_data  = SAA7134_BOARD_ELSA_500TV,
2680         },{
2681                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2682                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2683                 .subvendor    = PCI_VENDOR_ID_ASUSTEK,
2684                 .subdevice    = 0x4842,
2685                 .driver_data  = SAA7134_BOARD_ASUSTeK_TVFM7134,
2686         },{
2687                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2688                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2689                 .subvendor    = PCI_VENDOR_ID_ASUSTEK,
2690                 .subdevice    = 0x4845,
2691                 .driver_data  = SAA7134_BOARD_ASUSTeK_TVFM7135,
2692         },{
2693                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2694                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2695                 .subvendor    = PCI_VENDOR_ID_ASUSTEK,
2696                 .subdevice    = 0x4830,
2697                 .driver_data  = SAA7134_BOARD_ASUSTeK_TVFM7134,
2698         },{
2699                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2700                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2701                 .subvendor    = PCI_VENDOR_ID_ASUSTEK,
2702                 .subdevice    = 0x4843,
2703                 .driver_data  = SAA7134_BOARD_ASUSTEK_TVFM7133,
2704         },{
2705                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2706                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2707                 .subvendor    = PCI_VENDOR_ID_ASUSTEK,
2708                 .subdevice    = 0x4840,
2709                 .driver_data  = SAA7134_BOARD_ASUSTeK_TVFM7134,
2710         },{
2711                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2712                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2713                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
2714                 .subdevice    = 0xfe01,
2715                 .driver_data  = SAA7134_BOARD_TVSTATION_RDS,
2716         },{
2717                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2718                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2719                 .subvendor    = 0x1894,
2720                 .subdevice    = 0xfe01,
2721                 .driver_data  = SAA7134_BOARD_TVSTATION_RDS,
2722         },{
2723                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2724                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2725                 .subvendor    = 0x1894,
2726                 .subdevice    = 0xa006,
2727                 .driver_data  = SAA7134_BOARD_TVSTATION_DVR,
2728         },{
2729                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2730                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2731                 .subvendor    = 0x1131,
2732                 .subdevice    = 0x7133,
2733                 .driver_data  = SAA7134_BOARD_VA1000POWER,
2734         },{
2735                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2736                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2737                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
2738                 .subdevice    = 0x2001,
2739                 .driver_data  = SAA7134_BOARD_10MOONSTVMASTER,
2740         },{
2741                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2742                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2743                 .subvendor    = 0x185b,
2744                 .subdevice    = 0xc100,
2745                 .driver_data  = SAA7134_BOARD_VIDEOMATE_TV,
2746         },{
2747                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2748                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2749                 .subvendor    = 0x185b,
2750                 .subdevice    = 0xc100,
2751                 .driver_data  = SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUS,
2752         },{
2753                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2754                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2755                 .subvendor    = PCI_VENDOR_ID_MATROX,
2756                 .subdevice    = 0x48d0,
2757                 .driver_data  = SAA7134_BOARD_CRONOS_PLUS,
2758         },{
2759                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2760                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2761                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
2762                 .subdevice    = 0xa70b,
2763                 .driver_data  = SAA7134_BOARD_MD2819,
2764         },{
2765                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2766                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2767                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
2768                 .subdevice    = 0x2115,
2769                 .driver_data  = SAA7134_BOARD_AVERMEDIA_STUDIO_305,
2770         },{
2771                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2772                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2773                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
2774                 .subdevice    = 0x2108,
2775                 .driver_data  = SAA7134_BOARD_AVERMEDIA_305,
2776         },{
2777                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2778                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2779                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
2780                 .subdevice    = 0x10ff,
2781                 .driver_data  = SAA7134_BOARD_AVERMEDIA_DVD_EZMAKER,
2782         },{
2783                 /* AVerMedia CardBus */
2784                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2785                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2786                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
2787                 .subdevice    = 0xd6ee,
2788                 .driver_data  = SAA7134_BOARD_AVERMEDIA_CARDBUS,
2789         },{
2790                 /* TransGear 3000TV */
2791                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2792                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2793                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
2794                 .subdevice    = 0x050c,
2795                 .driver_data  = SAA7134_BOARD_TG3000TV,
2796         },{
2797                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2798                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2799                 .subvendor    = 0x11bd,
2800                 .subdevice    = 0x002b,
2801                 .driver_data  = SAA7134_BOARD_PINNACLE_PCTV_STEREO,
2802         },{
2803                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2804                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2805                 .subvendor    = 0x11bd,
2806                 .subdevice    = 0x002d,
2807                 .driver_data  = SAA7134_BOARD_PINNACLE_300I_DVBT_PAL,
2808         },{
2809                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2810                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2811                 .subvendor    = 0x1019,
2812                 .subdevice    = 0x4cb4,
2813                 .driver_data  = SAA7134_BOARD_ECS_TVP3XP,
2814         },{
2815                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2816                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2817                 .subvendor    = 0x1019,
2818                 .subdevice    = 0x4cb5,
2819                 .driver_data  = SAA7134_BOARD_ECS_TVP3XP_4CB5,
2820         },{
2821                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2822                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2823                 .subvendor    = 0x12ab,
2824                 .subdevice    = 0x0800,
2825                 .driver_data  = SAA7134_BOARD_UPMOST_PURPLE_TV,
2826         },{
2827                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2828                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2829                 .subvendor    = 0x153b,
2830                 .subdevice    = 0x1152,
2831                 .driver_data  = SAA7134_BOARD_CINERGY200,
2832         },{
2833                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2834                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2835                 .subvendor    = 0x185b,
2836                 .subdevice    = 0xc100,
2837                 .driver_data  = SAA7134_BOARD_VIDEOMATE_TV_PVR,
2838         },{
2839                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2840                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2841                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
2842                 .subdevice    = 0x9715,
2843                 .driver_data  = SAA7134_BOARD_AVERMEDIA_STUDIO_307,
2844         },{
2845                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2846                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2847                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
2848                 .subdevice    = 0xa70a,
2849                 .driver_data  = SAA7134_BOARD_AVERMEDIA_307,
2850         },{
2851                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2852                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2853                 .subvendor    = 0x185b,
2854                 .subdevice    = 0xc200,
2855                 .driver_data  = SAA7134_BOARD_VIDEOMATE_GOLD_PLUS,
2856         },{
2857                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2858                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2859                 .subvendor    = 0x1540,
2860                 .subdevice    = 0x9524,
2861                 .driver_data  = SAA7134_BOARD_PROVIDEO_PV952,
2862
2863         },{
2864                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2865                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2866                 .subvendor    = 0x5168,
2867                 .subdevice    = 0x0502,                /* Cardbus version */
2868                 .driver_data  = SAA7134_BOARD_FLYDVBTDUO,
2869         },{
2870                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2871                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2872                 .subvendor    = 0x5168,
2873                 .subdevice    = 0x0306,                /* PCI version */
2874                 .driver_data  = SAA7134_BOARD_FLYDVBTDUO,
2875         },{
2876                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2877                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2878                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
2879                 .subdevice    = 0xf31f,
2880                 .driver_data  = SAA7134_BOARD_AVERMEDIA_GO_007_FM,
2881
2882         },{
2883                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2884                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2885                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
2886                 .subdevice    = 0x2004,
2887                 .driver_data  = SAA7134_BOARD_PHILIPS_TOUGH,
2888         },{
2889                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2890                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2891                 .subvendor    = 0x1421,
2892                 .subdevice    = 0x0350,         /* PCI version */
2893                 .driver_data  = SAA7134_BOARD_ADS_INSTANT_TV,
2894         },{
2895                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2896                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2897                 .subvendor    = 0x1421,
2898                 .subdevice    = 0x0370,         /* cardbus version */
2899                 .driver_data  = SAA7134_BOARD_ADS_INSTANT_TV,
2900         },{
2901                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2902                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2903                 .subvendor    = 0x1421,
2904                 .subdevice    = 0x1370,        /* cardbus version */
2905                 .driver_data  = SAA7134_BOARD_ADS_INSTANT_TV,
2906
2907         },{     /* Typhoon DVB-T Duo Digital/Analog Cardbus */
2908                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2909                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2910                 .subvendor    = 0x4e42,
2911                 .subdevice    = 0x0502,
2912                 .driver_data  = SAA7134_BOARD_THYPHOON_DVBT_DUO_CARDBUS,
2913         },{
2914                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2915                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2916                 .subvendor    = 0x1043,
2917                 .subdevice    = 0x0210,         /* mini pci NTSC version */
2918                 .driver_data  = SAA7134_BOARD_FLYTV_DIGIMATRIX,
2919         },{
2920                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2921                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2922                 .subvendor    = 0x1043,
2923                 .subdevice    = 0x0210,         /* mini pci PAL/SECAM version */
2924                 .driver_data  = SAA7134_BOARD_ASUSTEK_DIGIMATRIX_TV,
2925
2926         },{
2927                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2928                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2929                 .subvendor    = 0x0000, /* It shouldn't break anything, since subdevice id seems unique */
2930                 .subdevice    = 0x4091,
2931                 .driver_data  = SAA7134_BOARD_BEHOLD_409FM,
2932         },{
2933                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2934                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2935                 .subvendor    = 0x5456, /* GoTView */
2936                 .subdevice    = 0x7135,
2937                 .driver_data  = SAA7134_BOARD_GOTVIEW_7135,
2938         },{
2939                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2940                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2941                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
2942                 .subdevice    = 0x2004,
2943                 .driver_data  = SAA7134_BOARD_PHILIPS_EUROPA,
2944         },{
2945                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2946                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
2947                 .subvendor    = 0x185b,
2948                 .subdevice    = 0xc900,
2949                 .driver_data  = SAA7134_BOARD_VIDEOMATE_DVBT_300,
2950         },{
2951                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2952                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
2953                 .subvendor    = 0x185b,
2954                 .subdevice    = 0xc901,
2955                 .driver_data  = SAA7134_BOARD_VIDEOMATE_DVBT_200,
2956         },{
2957                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2958                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2959                 .subvendor    = 0x1435,
2960                 .subdevice    = 0x7350,
2961                 .driver_data  = SAA7134_BOARD_RTD_VFG7350,
2962         },{
2963                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2964                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2965                 .subvendor    = 0x1435,
2966                 .subdevice    = 0x7330,
2967                 .driver_data  = SAA7134_BOARD_RTD_VFG7330,
2968         },{
2969                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2970                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2971                 .subvendor    = 0x1461,
2972                 .subdevice    = 0x1044,
2973                 .driver_data  = SAA7134_BOARD_AVERMEDIA_AVERTVHD_A180,
2974         },{
2975                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2976                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2977                 .subvendor    = 0x1131,
2978                 .subdevice    = 0x4ee9,
2979                 .driver_data  = SAA7134_BOARD_MONSTERTV_MOBILE,
2980         },{
2981                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2982                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2983                 .subvendor    = 0x11bd,
2984                 .subdevice    = 0x002e,
2985                 .driver_data  = SAA7134_BOARD_PINNACLE_PCTV_110i,
2986         },{
2987                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2988                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2989                 .subvendor    = 0x1043,
2990                 .subdevice    = 0x4862,
2991                 .driver_data  = SAA7134_BOARD_ASUSTeK_P7131_DUAL,
2992         },{
2993                 .vendor       = PCI_VENDOR_ID_PHILIPS,
2994                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
2995                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
2996                 .subdevice    = 0x2018,
2997                 .driver_data  = SAA7134_BOARD_PHILIPS_TIGER,
2998         },{
2999                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3000                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3001                 .subvendor    = 0x1462,
3002                 .subdevice    = 0x6231,
3003                 .driver_data  = SAA7134_BOARD_MSI_TVATANYWHERE_PLUS,
3004         },{
3005                 /* --- boards without eeprom + subsystem ID --- */
3006                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3007                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3008                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
3009                 .subdevice    = 0,
3010                 .driver_data  = SAA7134_BOARD_NOAUTO,
3011         },{
3012                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3013                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
3014                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
3015                 .subdevice    = 0,
3016                 .driver_data  = SAA7134_BOARD_NOAUTO,
3017         },{
3018
3019                 /* --- default catch --- */
3020                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3021                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
3022                 .subvendor    = PCI_ANY_ID,
3023                 .subdevice    = PCI_ANY_ID,
3024                 .driver_data  = SAA7134_BOARD_UNKNOWN,
3025         },{
3026                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3027                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3028                 .subvendor    = PCI_ANY_ID,
3029                 .subdevice    = PCI_ANY_ID,
3030                 .driver_data  = SAA7134_BOARD_UNKNOWN,
3031         },{
3032                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3033                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3034                 .subvendor    = PCI_ANY_ID,
3035                 .subdevice    = PCI_ANY_ID,
3036                 .driver_data  = SAA7134_BOARD_UNKNOWN,
3037         },{
3038                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3039                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7135,
3040                 .subvendor    = PCI_ANY_ID,
3041                 .subdevice    = PCI_ANY_ID,
3042                 .driver_data  = SAA7134_BOARD_UNKNOWN,
3043         },{
3044                 /* --- end of list --- */
3045         }
3046 };
3047 MODULE_DEVICE_TABLE(pci, saa7134_pci_tbl);
3048
3049 /* ----------------------------------------------------------- */
3050 /* flyvideo tweaks                                             */
3051
3052
3053 static void board_flyvideo(struct saa7134_dev *dev)
3054 {
3055         printk("%s: there are different flyvideo cards with different tuners\n"
3056                "%s: out there, you might have to use the tuner=<nr> insmod\n"
3057                "%s: option to override the default value.\n",
3058                dev->name, dev->name, dev->name);
3059 }
3060
3061 /* ----------------------------------------------------------- */
3062
3063 int saa7134_board_init1(struct saa7134_dev *dev)
3064 {
3065         /* Always print gpio, often manufacturers encode tuner type and other info. */
3066         saa_writel(SAA7134_GPIO_GPMODE0 >> 2, 0);
3067         dev->gpio_value = saa_readl(SAA7134_GPIO_GPSTATUS0 >> 2);
3068         printk(KERN_INFO "%s: board init: gpio is %x\n", dev->name, dev->gpio_value);
3069
3070         switch (dev->board) {
3071         case SAA7134_BOARD_FLYVIDEO2000:
3072         case SAA7134_BOARD_FLYVIDEO3000:
3073                 dev->has_remote = SAA7134_REMOTE_GPIO;
3074                 board_flyvideo(dev);
3075                 break;
3076         case SAA7134_BOARD_FLYTVPLATINUM_MINI2:
3077         case SAA7134_BOARD_FLYTVPLATINUM_FM:
3078         case SAA7134_BOARD_CINERGY400:
3079         case SAA7134_BOARD_CINERGY600:
3080         case SAA7134_BOARD_CINERGY600_MK3:
3081         case SAA7134_BOARD_ECS_TVP3XP:
3082         case SAA7134_BOARD_ECS_TVP3XP_4CB5:
3083         case SAA7134_BOARD_MD2819:
3084         case SAA7134_BOARD_KWORLD_VSTREAM_XPERT:
3085         case SAA7134_BOARD_KWORLD_XPERT:
3086         case SAA7134_BOARD_AVERMEDIA_STUDIO_305:
3087         case SAA7134_BOARD_AVERMEDIA_305:
3088         case SAA7134_BOARD_AVERMEDIA_STUDIO_307:
3089         case SAA7134_BOARD_AVERMEDIA_307:
3090         case SAA7134_BOARD_AVERMEDIA_GO_007_FM:
3091 /*      case SAA7134_BOARD_SABRENT_SBTTVFM:  */ /* not finished yet */
3092         case SAA7134_BOARD_VIDEOMATE_TV_PVR:
3093         case SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUSII:
3094         case SAA7134_BOARD_VIDEOMATE_DVBT_300:
3095         case SAA7134_BOARD_VIDEOMATE_DVBT_200:
3096         case SAA7134_BOARD_MANLI_MTV001:
3097         case SAA7134_BOARD_MANLI_MTV002:
3098         case SAA7134_BOARD_BEHOLD_409FM:
3099         case SAA7134_BOARD_AVACSSMARTTV:
3100         case SAA7134_BOARD_GOTVIEW_7135:
3101         case SAA7134_BOARD_KWORLD_TERMINATOR:
3102         case SAA7134_BOARD_SEDNA_PC_TV_CARDBUS:
3103                 dev->has_remote = SAA7134_REMOTE_GPIO;
3104                 break;
3105         case SAA7134_BOARD_MD5044:
3106                 printk("%s: seems there are two different versions of the MD5044\n"
3107                 "%s: (with the same ID) out there.  If sound doesn't work for\n"
3108                 "%s: you try the audio_clock_override=0x200000 insmod option.\n",
3109                 dev->name,dev->name,dev->name);
3110                 break;
3111         case SAA7134_BOARD_CINERGY400_CARDBUS:
3112                 /* power-up tuner chip */
3113                 saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0x00040000, 0x00040000);
3114                 saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00040000, 0x00000000);
3115         case SAA7134_BOARD_MONSTERTV_MOBILE:
3116                 /* power-up tuner chip */
3117                 saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0x00040000, 0x00040000);
3118                 saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00040000, 0x00000004);
3119                 break;
3120         case SAA7134_BOARD_FLYDVBTDUO:
3121         case SAA7134_BOARD_THYPHOON_DVBT_DUO_CARDBUS:
3122                 /* turn the fan on */
3123                 saa_writeb(SAA7134_GPIO_GPMODE3, 0x08);
3124                 saa_writeb(SAA7134_GPIO_GPSTATUS3, 0x06);
3125                 break;
3126         case SAA7134_BOARD_AVERMEDIA_CARDBUS:
3127                 /* power-up tuner chip */
3128                 saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0xffffffff, 0xffffffff);
3129                 saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0xffffffff, 0xffffffff);
3130                 msleep(1);
3131                 break;
3132         case SAA7134_BOARD_RTD_VFG7350:
3133
3134                 /*
3135                  * Make sure Production Test Register at offset 0x1D1 is cleared
3136                  * to take chip out of test mode.  Clearing bit 4 (TST_EN_AOUT)
3137                  * prevents pin 105 from remaining low; keeping pin 105 low
3138                  * continually resets the SAA6752 chip.
3139                  */
3140
3141                 saa_writeb (SAA7134_PRODUCTION_TEST_MODE, 0x00);
3142                 break;
3143         /* i2c remotes */
3144         case SAA7134_BOARD_PINNACLE_PCTV_110i:
3145         case SAA7134_BOARD_UPMOST_PURPLE_TV:
3146                 dev->has_remote = SAA7134_REMOTE_I2C;
3147                 break;
3148         }
3149         return 0;
3150 }
3151
3152 /* stuff which needs working i2c */
3153 int saa7134_board_init2(struct saa7134_dev *dev)
3154 {
3155         unsigned char buf;
3156         int board;
3157
3158         switch (dev->board) {
3159         case SAA7134_BOARD_BMK_MPEX_NOTUNER:
3160         case SAA7134_BOARD_BMK_MPEX_TUNER:
3161                 dev->i2c_client.addr = 0x60;
3162                 board = (i2c_master_recv(&dev->i2c_client,&buf,0) < 0)
3163                         ? SAA7134_BOARD_BMK_MPEX_NOTUNER
3164                         : SAA7134_BOARD_BMK_MPEX_TUNER;
3165                 if (board == dev->board)
3166                         break;
3167                 dev->board = board;
3168                 printk("%s: board type fixup: %s\n", dev->name,
3169                 saa7134_boards[dev->board].name);
3170                 dev->tuner_type = saa7134_boards[dev->board].tuner_type;
3171
3172                 if (TUNER_ABSENT != dev->tuner_type) {
3173                                 struct tuner_setup tun_setup;
3174
3175                                 tun_setup.mode_mask = T_RADIO | T_ANALOG_TV | T_DIGITAL_TV;
3176                                 tun_setup.type = dev->tuner_type;
3177                                 tun_setup.addr = ADDR_UNSET;
3178
3179                                 saa7134_i2c_call_clients (dev, TUNER_SET_TYPE_ADDR, &tun_setup);
3180                 }
3181                 break;
3182         case SAA7134_BOARD_MD7134:
3183                 {
3184                 struct tuner_setup tun_setup;
3185                 u8 subaddr;
3186                 u8 data[3];
3187                 int ret, tuner_t;
3188
3189                 struct i2c_msg msg[] = {{.addr=0x50, .flags=0, .buf=&subaddr, .len = 1},
3190                                         {.addr=0x50, .flags=I2C_M_RD, .buf=data, .len = 3}};
3191                 subaddr= 0x14;
3192                 tuner_t = 0;
3193                 ret = i2c_transfer(&dev->i2c_adap, msg, 2);
3194                 if (ret != 2) {
3195                         printk(KERN_ERR "EEPROM read failure\n");
3196                 } else if ((data[0] != 0) && (data[0] != 0xff)) {
3197                         /* old config structure */
3198                         subaddr = data[0] + 2;
3199                         msg[1].len = 2;
3200                         i2c_transfer(&dev->i2c_adap, msg, 2);
3201                         tuner_t = (data[0] << 8) + data[1];
3202                         switch (tuner_t){
3203                         case 0x0103:
3204                                 dev->tuner_type = TUNER_PHILIPS_PAL;
3205                                 break;
3206                         case 0x010C:
3207                                 dev->tuner_type = TUNER_PHILIPS_FM1216ME_MK3;
3208                                 break;
3209                         default:
3210                                 printk(KERN_ERR "%s Cant determine tuner type %x from EEPROM\n", dev->name, tuner_t);
3211                         }
3212                 } else if ((data[1] != 0) && (data[1] != 0xff)) {
3213                         /* new config structure */
3214                         subaddr = data[1] + 1;
3215                         msg[1].len = 1;
3216                         i2c_transfer(&dev->i2c_adap, msg, 2);
3217                         subaddr = data[0] + 1;
3218                         msg[1].len = 2;
3219                         i2c_transfer(&dev->i2c_adap, msg, 2);
3220                         tuner_t = (data[1] << 8) + data[0];
3221                         switch (tuner_t) {
3222                         case 0x0005:
3223                                 dev->tuner_type = TUNER_PHILIPS_FM1216ME_MK3;
3224                                 break;
3225                         case 0x001d:
3226                                 dev->tuner_type = TUNER_PHILIPS_FMD1216ME_MK3;
3227                                         printk(KERN_INFO "%s Board has DVB-T\n", dev->name);
3228                                 break;
3229                         default:
3230                                 printk(KERN_ERR "%s Cant determine tuner type %x from EEPROM\n", dev->name, tuner_t);
3231                         }
3232                 } else {
3233                         printk(KERN_ERR "%s unexpected config structure\n", dev->name);
3234                 }
3235
3236                 printk(KERN_INFO "%s Tuner type is %d\n", dev->name, dev->tuner_type);
3237                 if (dev->tuner_type == TUNER_PHILIPS_FMD1216ME_MK3) {
3238                         dev->tda9887_conf = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE | TDA9887_PORT2_ACTIVE;
3239                         saa7134_i2c_call_clients(dev,TDA9887_SET_CONFIG, &dev->tda9887_conf);
3240                 }
3241
3242                 tun_setup.mode_mask = T_RADIO | T_ANALOG_TV | T_DIGITAL_TV;
3243                 tun_setup.type = dev->tuner_type;
3244                 tun_setup.addr = ADDR_UNSET;
3245
3246                 saa7134_i2c_call_clients (dev, TUNER_SET_TYPE_ADDR,&tun_setup);
3247                 }
3248                 break;
3249         case SAA7134_BOARD_PHILIPS_EUROPA:
3250         case SAA7134_BOARD_VIDEOMATE_DVBT_300:
3251                 /* The Philips EUROPA based hybrid boards have the tuner connected through
3252                  * the channel decoder. We have to make it transparent to find it
3253                  */
3254                 {
3255                 struct tuner_setup tun_setup;
3256                 u8 data[] = { 0x07, 0x02};
3257                 struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
3258                 i2c_transfer(&dev->i2c_adap, &msg, 1);
3259
3260                 tun_setup.mode_mask = T_ANALOG_TV | T_DIGITAL_TV;
3261                 tun_setup.type = dev->tuner_type;
3262                 tun_setup.addr = dev->tuner_addr;
3263
3264                 saa7134_i2c_call_clients (dev, TUNER_SET_TYPE_ADDR,&tun_setup);
3265                 }
3266                 break;
3267         case SAA7134_BOARD_PHILIPS_TIGER:
3268         case SAA7134_BOARD_ASUSTeK_P7131_DUAL:
3269                 /* this is a hybrid board, initialize to analog mode */
3270                 {
3271                 u8 data[] = { 0x3c, 0x33, 0x68};
3272                 struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
3273                 i2c_transfer(&dev->i2c_adap, &msg, 1);
3274                 }
3275                 break;
3276         }
3277         return 0;
3278 }
3279
3280 /* ----------------------------------------------------------- */
3281 /*
3282  * Local variables:
3283  * c-basic-offset: 8
3284  * End:
3285  */