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