Merge master.kernel.org:/pub/scm/linux/kernel/git/davej/agpgart
[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 / Gold",
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_ELSA_700TV] = {
644                 .name           = "ELSA EX-VISION 700TV",
645                 .audio_clock    = 0x00187de7,
646                 .tuner_type     = TUNER_HITACHI_NTSC,
647                 .radio_type     = UNSET,
648                 .tuner_addr     = ADDR_UNSET,
649                 .radio_addr     = ADDR_UNSET,
650                 .inputs         = {{
651                         .name = name_tv,
652                         .vmux = 4,
653                         .amux = LINE2,
654                         .tv   = 1,
655                 },{
656                         .name = name_comp1,
657                         .vmux = 6,
658                         .amux = LINE1,
659                 },{
660                         .name = name_svideo,
661                         .vmux = 7,
662                         .amux = LINE1,
663                 }},
664                 .mute           = {
665                         .name = name_mute,
666                         .amux = TV,
667                 },
668         },
669         [SAA7134_BOARD_ASUSTeK_TVFM7134] = {
670                 .name           = "ASUS TV-FM 7134",
671                 .audio_clock    = 0x00187de7,
672                 .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
673                 .radio_type     = UNSET,
674                 .tuner_addr     = ADDR_UNSET,
675                 .radio_addr     = ADDR_UNSET,
676                 .tda9887_conf   = TDA9887_PRESENT,
677                 .inputs         = {{
678                         .name = name_tv,
679                         .vmux = 1,
680                         .amux = TV,
681                         .tv   = 1,
682                 },{
683                         .name = name_comp1,
684                         .vmux = 4,
685                         .amux = LINE2,
686                 },{
687                         .name = name_svideo,
688                         .vmux = 6,
689                         .amux = LINE2,
690                 }},
691                 .radio = {
692                         .name = name_radio,
693                         .amux = LINE1,
694                 },
695         },
696         [SAA7134_BOARD_ASUSTeK_TVFM7135] = {
697                 .name           = "ASUS TV-FM 7135",
698                 .audio_clock    = 0x00187de7,
699                 .tuner_type     = TUNER_PHILIPS_TDA8290,
700                 .radio_type     = UNSET,
701                 .tuner_addr     = ADDR_UNSET,
702                 .radio_addr     = ADDR_UNSET,
703                 .gpiomask       = 0x200000,
704                 .inputs         = {{
705                         .name = name_tv,
706                         .vmux = 1,
707                         .amux = TV,
708                         .gpio = 0x0000,
709                         .tv   = 1,
710                 },{
711                         .name = name_comp1,
712                         .vmux = 4,
713                         .amux = LINE2,
714                         .gpio = 0x0000,
715                 },{
716                         .name = name_svideo,
717                         .vmux = 6,
718                         .amux = LINE2,
719                         .gpio = 0x0000,
720                 }},
721                 .radio = {
722                         .name = name_radio,
723                         .amux = TV,
724                         .gpio = 0x200000,
725                 },
726                 .mute  = {
727                         .name = name_mute,
728                         .gpio = 0x0000,
729                 },
730
731         },
732         [SAA7134_BOARD_VA1000POWER] = {
733                 .name           = "AOPEN VA1000 POWER",
734                 .audio_clock    = 0x00187de7,
735                 .tuner_type     = TUNER_PHILIPS_NTSC,
736                 .radio_type     = UNSET,
737                 .tuner_addr     = ADDR_UNSET,
738                 .radio_addr     = ADDR_UNSET,
739                 .inputs         = {{
740                         .name = name_svideo,
741                         .vmux = 8,
742                         .amux = LINE1,
743                 },{
744                         .name = name_comp1,
745                         .vmux = 3,
746                         .amux = LINE1,
747                 },{
748                         .name = name_tv,
749                         .vmux = 1,
750                         .amux = LINE2,
751                         .tv   = 1,
752                 }},
753         },
754         [SAA7134_BOARD_10MOONSTVMASTER] = {
755                 /* "lilicheng" <llc@linuxfans.org> */
756                 .name           = "10MOONS PCI TV CAPTURE CARD",
757                 .audio_clock    = 0x00200000,
758                 .tuner_type     = TUNER_LG_PAL_NEW_TAPC,
759                 .radio_type     = UNSET,
760                 .tuner_addr     = ADDR_UNSET,
761                 .radio_addr     = ADDR_UNSET,
762                 .gpiomask       = 0xe000,
763                 .inputs         = {{
764                         .name = name_tv,
765                         .vmux = 1,
766                         .amux = LINE2,
767                         .gpio = 0x0000,
768                         .tv   = 1,
769                 },{
770                         .name = name_comp1,
771                         .vmux = 0,
772                         .amux = LINE2,
773                         .gpio = 0x4000,
774                 },{
775                         .name = name_comp2,
776                         .vmux = 3,
777                         .amux = LINE2,
778                         .gpio = 0x4000,
779                 },{
780                         .name = name_svideo,
781                         .vmux = 8,
782                         .amux = LINE2,
783                         .gpio = 0x4000,
784                 }},
785                 .radio = {
786                         .name = name_radio,
787                         .amux = LINE2,
788                         .gpio = 0x2000,
789                 },
790                 .mute = {
791                         .name = name_mute,
792                         .amux = LINE2,
793                         .gpio = 0x8000,
794                 },
795         },
796         [SAA7134_BOARD_BMK_MPEX_NOTUNER] = {
797                 /* "Andrew de Quincey" <adq@lidskialf.net> */
798                 .name           = "BMK MPEX No Tuner",
799                 .audio_clock    = 0x200000,
800                 .tuner_type     = TUNER_ABSENT,
801                 .radio_type     = UNSET,
802                 .tuner_addr     = ADDR_UNSET,
803                 .radio_addr     = ADDR_UNSET,
804                 .inputs         = {{
805                         .name = name_comp1,
806                         .vmux = 4,
807                         .amux = LINE1,
808                 },{
809                         .name = name_comp2,
810                         .vmux = 3,
811                         .amux = LINE1,
812                 },{
813                         .name = name_comp3,
814                         .vmux = 0,
815                         .amux = LINE1,
816                 },{
817                         .name = name_comp4,
818                         .vmux = 1,
819                         .amux = LINE1,
820                 },{
821                         .name = name_svideo,
822                         .vmux = 8,
823                         .amux = LINE1,
824                 }},
825                 .mpeg      = SAA7134_MPEG_EMPRESS,
826                 .video_out = CCIR656,
827         },
828         [SAA7134_BOARD_VIDEOMATE_TV] = {
829                 .name           = "Compro VideoMate TV",
830                 .audio_clock    = 0x00187de7,
831                 .tuner_type     = TUNER_PHILIPS_NTSC_M,
832                 .radio_type     = UNSET,
833                 .tuner_addr     = ADDR_UNSET,
834                 .radio_addr     = ADDR_UNSET,
835                 .inputs         = {{
836                         .name = name_svideo,
837                         .vmux = 8,
838                         .amux = LINE1,
839                 },{
840                         .name = name_comp1,
841                         .vmux = 3,
842                         .amux = LINE1,
843                 },{
844                         .name = name_tv,
845                         .vmux = 1,
846                         .amux = LINE2,
847                         .tv   = 1,
848                 }},
849         },
850         [SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUS] = {
851                 .name           = "Compro VideoMate TV Gold+",
852                 .audio_clock    = 0x00187de7,
853                 .tuner_type     = TUNER_PHILIPS_NTSC_M,
854                 .gpiomask       = 0x800c0000,
855                 .radio_type     = UNSET,
856                 .tuner_addr     = ADDR_UNSET,
857                 .radio_addr     = ADDR_UNSET,
858                 .inputs         = {{
859                         .name = name_svideo,
860                         .vmux = 8,
861                         .amux = LINE1,
862                         .gpio = 0x06c00012,
863                 },{
864                         .name = name_comp1,
865                         .vmux = 3,
866                         .amux = LINE1,
867                         .gpio = 0x0ac20012,
868                 },{
869                         .name = name_tv,
870                         .vmux = 1,
871                         .amux = LINE2,
872                         .gpio = 0x08c20012,
873                         .tv   = 1,
874                 }},                             /* radio and probably mute is missing */
875         },
876         [SAA7134_BOARD_CRONOS_PLUS] = {
877                 /*
878                 gpio pins:
879                         0  .. 3   BASE_ID
880                         4  .. 7   PROTECT_ID
881                         8  .. 11  USER_OUT
882                         12 .. 13  USER_IN
883                         14 .. 15  VIDIN_SEL
884                 */
885                 .name           = "Matrox CronosPlus",
886                 .tuner_type     = TUNER_ABSENT,
887                 .radio_type     = UNSET,
888                 .tuner_addr     = ADDR_UNSET,
889                 .radio_addr     = ADDR_UNSET,
890                 .gpiomask       = 0xcf00,
891                 .inputs         = {{
892                         .name = name_comp1,
893                         .vmux = 0,
894                         .gpio = 2 << 14,
895                 },{
896                         .name = name_comp2,
897                         .vmux = 0,
898                         .gpio = 1 << 14,
899                 },{
900                         .name = name_comp3,
901                         .vmux = 0,
902                         .gpio = 0 << 14,
903                 },{
904                         .name = name_comp4,
905                         .vmux = 0,
906                         .gpio = 3 << 14,
907                 },{
908                         .name = name_svideo,
909                         .vmux = 8,
910                         .gpio = 2 << 14,
911                 }},
912         },
913         [SAA7134_BOARD_MD2819] = {
914                 .name           = "AverMedia M156 / Medion 2819",
915                 .audio_clock    = 0x00187de7,
916                 .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
917                 .radio_type     = UNSET,
918                 .tuner_addr     = ADDR_UNSET,
919                 .radio_addr     = ADDR_UNSET,
920                 .tda9887_conf   = TDA9887_PRESENT,
921                 .inputs         = {{
922                         .name = name_tv,
923                         .vmux = 1,
924                         .amux = TV,
925                         .tv   = 1,
926                 },{
927                         .name = name_comp1,
928                         .vmux = 0,
929                         .amux = LINE2,
930                 },{
931                         .name = name_comp2,
932                         .vmux = 3,
933                         .amux = LINE2,
934                 },{
935                         .name = name_svideo,
936                         .vmux = 8,
937                         .amux = LINE2,
938                 }},
939                 .radio = {
940                         .name = name_radio,
941                         .amux = LINE2,
942                 },
943         },
944         [SAA7134_BOARD_BMK_MPEX_TUNER] = {
945                 /* "Greg Wickham <greg.wickham@grangenet.net> */
946                 .name           = "BMK MPEX Tuner",
947                 .audio_clock    = 0x200000,
948                 .tuner_type     = TUNER_PHILIPS_PAL,
949                 .radio_type     = UNSET,
950                 .tuner_addr     = ADDR_UNSET,
951                 .radio_addr     = ADDR_UNSET,
952                 .inputs         = {{
953                         .name = name_comp1,
954                         .vmux = 1,
955                         .amux = LINE1,
956                 },{
957                         .name = name_svideo,
958                         .vmux = 8,
959                         .amux = LINE1,
960                 },{
961                         .name = name_tv,
962                         .vmux = 3,
963                         .amux = TV,
964                         .tv   = 1,
965                 }},
966                 .mpeg      = SAA7134_MPEG_EMPRESS,
967                 .video_out = CCIR656,
968         },
969         [SAA7134_BOARD_ASUSTEK_TVFM7133] = {
970                 .name           = "ASUS TV-FM 7133",
971                 .audio_clock    = 0x00187de7,
972                 /* probably wrong, the 7133 one is the NTSC version ...
973                 * .tuner_type  = TUNER_PHILIPS_FM1236_MK3 */
974                 .tuner_type     = TUNER_LG_NTSC_NEW_TAPC,
975                 .radio_type     = UNSET,
976                 .tuner_addr     = ADDR_UNSET,
977                 .radio_addr     = ADDR_UNSET,
978                 .tda9887_conf   = TDA9887_PRESENT,
979                 .inputs         = {{
980                         .name = name_tv,
981                         .vmux = 1,
982                         .amux = TV,
983                         .tv   = 1,
984
985                 },{
986                         .name = name_comp1,
987                         .vmux = 4,
988                         .amux = LINE2,
989                 },{
990                         .name = name_svideo,
991                         .vmux = 6,
992                         .amux = LINE2,
993                 }},
994                 .radio = {
995                         .name = name_radio,
996                         .amux = LINE1,
997                 },
998         },
999         [SAA7134_BOARD_PINNACLE_PCTV_STEREO] = {
1000                 .name           = "Pinnacle PCTV Stereo (saa7134)",
1001                 .audio_clock    = 0x00187de7,
1002                 .tuner_type     = TUNER_MT2032,
1003                 .radio_type     = UNSET,
1004                 .tuner_addr     = ADDR_UNSET,
1005                 .radio_addr     = ADDR_UNSET,
1006                 .tda9887_conf   = TDA9887_PRESENT | TDA9887_INTERCARRIER | TDA9887_PORT2_INACTIVE,
1007                 .inputs         = {{
1008                         .name = name_tv,
1009                         .vmux = 3,
1010                         .amux = TV,
1011                         .tv   = 1,
1012                 },{
1013                         .name = name_comp1,
1014                         .vmux = 0,
1015                         .amux = LINE2,
1016                 },{
1017                         .name = name_comp2,
1018                         .vmux = 1,
1019                         .amux = LINE2,
1020                 },{
1021                         .name = name_svideo,
1022                         .vmux = 8,
1023                         .amux = LINE2,
1024                 }},
1025         },
1026         [SAA7134_BOARD_MANLI_MTV002] = {
1027                 /* Ognjen Nastic <ognjen@logosoft.ba> */
1028                 .name           = "Manli MuchTV M-TV002/Behold TV 403 FM",
1029                 .audio_clock    = 0x00200000,
1030                 .tuner_type     = TUNER_PHILIPS_PAL,
1031                 .radio_type     = UNSET,
1032                 .tuner_addr     = ADDR_UNSET,
1033                 .radio_addr     = ADDR_UNSET,
1034                 .inputs         = {{
1035                         .name = name_svideo,
1036                         .vmux = 8,
1037                         .amux = LINE1,
1038                 },{
1039                         .name   = name_comp1,
1040                         .vmux   = 1,
1041                         .amux   = LINE1,
1042                 },{
1043                         .name = name_tv,
1044                         .vmux = 3,
1045                         .amux = LINE2,
1046                         .tv   = 1,
1047                 }},
1048                 .radio = {
1049                         .name = name_radio,
1050                         .amux = LINE2,
1051                 },
1052         },
1053         [SAA7134_BOARD_MANLI_MTV001] = {
1054                 /* Ognjen Nastic <ognjen@logosoft.ba> UNTESTED */
1055                 .name           = "Manli MuchTV M-TV001/Behold TV 401",
1056                 .audio_clock    = 0x00200000,
1057                 .tuner_type     = TUNER_PHILIPS_PAL,
1058                 .radio_type     = UNSET,
1059                 .tuner_addr     = ADDR_UNSET,
1060                 .radio_addr     = ADDR_UNSET,
1061                 .inputs         = {{
1062                         .name = name_svideo,
1063                         .vmux = 8,
1064                         .amux = LINE1,
1065                 },{
1066                         .name = name_comp1,
1067                         .vmux = 1,
1068                         .amux = LINE1,
1069                 },{
1070                         .name = name_tv,
1071                         .vmux = 3,
1072                         .amux = LINE2,
1073                         .tv   = 1,
1074                 }},
1075                 .mute = {
1076                         .name = name_mute,
1077                         .amux = LINE1,
1078                 },
1079         },
1080         [SAA7134_BOARD_TG3000TV] = {
1081                 /* TransGear 3000TV */
1082                 .name           = "Nagase Sangyo TransGear 3000TV",
1083                 .audio_clock    = 0x00187de7,
1084                 .tuner_type     = TUNER_PHILIPS_NTSC_M,
1085                 .radio_type     = UNSET,
1086                 .tuner_addr     = ADDR_UNSET,
1087                 .radio_addr     = ADDR_UNSET,
1088                 .inputs         = {{
1089                         .name = name_tv,
1090                         .vmux = 1,
1091                         .amux = LINE2,
1092                         .tv   = 1,
1093                 },{
1094                         .name = name_comp1,
1095                         .vmux = 3,
1096                         .amux = LINE2,
1097                 },{
1098                         .name = name_svideo,
1099                         .vmux = 8,
1100                         .amux = LINE2,
1101                 }},
1102         },
1103         [SAA7134_BOARD_ECS_TVP3XP] = {
1104                 .name           = "Elitegroup ECS TVP3XP FM1216 Tuner Card(PAL-BG,FM) ",
1105                 .audio_clock    = 0x187de7,  /* xtal 32.1 MHz */
1106                 .tuner_type     = TUNER_PHILIPS_PAL,
1107                 .radio_type     = UNSET,
1108                 .tuner_addr     = ADDR_UNSET,
1109                 .radio_addr     = ADDR_UNSET,
1110                 .inputs         = {{
1111                         .name   = name_tv,
1112                         .vmux   = 1,
1113                         .amux   = TV,
1114                         .tv     = 1,
1115                 },{
1116                         .name   = name_tv_mono,
1117                         .vmux   = 1,
1118                         .amux   = LINE2,
1119                         .tv     = 1,
1120                 },{
1121                         .name   = name_comp1,
1122                         .vmux   = 3,
1123                         .amux   = LINE1,
1124                 },{
1125                         .name   = name_svideo,
1126                         .vmux   = 8,
1127                         .amux   = LINE1,
1128                 },{
1129                         .name   = "CVid over SVid",
1130                         .vmux   = 0,
1131                         .amux   = LINE1,
1132                 }},
1133                 .radio = {
1134                         .name   = name_radio,
1135                         .amux   = LINE2,
1136                 },
1137         },
1138         [SAA7134_BOARD_ECS_TVP3XP_4CB5] = {
1139                 .name           = "Elitegroup ECS TVP3XP FM1236 Tuner Card (NTSC,FM)",
1140                 .audio_clock    = 0x187de7,
1141                 .tuner_type     = TUNER_PHILIPS_NTSC,
1142                 .radio_type     = UNSET,
1143                 .tuner_addr     = ADDR_UNSET,
1144                 .radio_addr     = ADDR_UNSET,
1145                 .inputs         = {{
1146                         .name   = name_tv,
1147                         .vmux   = 1,
1148                         .amux   = TV,
1149                         .tv     = 1,
1150                 },{
1151                         .name   = name_tv_mono,
1152                         .vmux   = 1,
1153                         .amux   = LINE2,
1154                         .tv     = 1,
1155                 },{
1156                         .name   = name_comp1,
1157                         .vmux   = 3,
1158                         .amux   = LINE1,
1159                 },{
1160                         .name   = name_svideo,
1161                         .vmux   = 8,
1162                         .amux   = LINE1,
1163                 },{
1164                         .name   = "CVid over SVid",
1165                         .vmux   = 0,
1166                         .amux   = LINE1,
1167                 }},
1168                 .radio = {
1169                         .name   = name_radio,
1170                         .amux   = LINE2,
1171                 },
1172         },
1173         [SAA7134_BOARD_AVACSSMARTTV] = {
1174                 /* Roman Pszonczenko <romka@kolos.math.uni.lodz.pl> */
1175                 .name           = "AVACS SmartTV",
1176                 .audio_clock    = 0x00187de7,
1177                 .tuner_type     = TUNER_PHILIPS_PAL,
1178                 .radio_type     = UNSET,
1179                 .tuner_addr     = ADDR_UNSET,
1180                 .radio_addr     = ADDR_UNSET,
1181                 .inputs         = {{
1182                         .name = name_tv,
1183                         .vmux = 1,
1184                         .amux = TV,
1185                         .tv   = 1,
1186                 },{
1187                         .name = name_tv_mono,
1188                         .vmux = 1,
1189                         .amux = LINE2,
1190                         .tv   = 1,
1191                 },{
1192                         .name = name_comp1,
1193                         .vmux = 0,
1194                         .amux = LINE2,
1195                 },{
1196                         .name = name_comp2,
1197                         .vmux = 3,
1198                         .amux = LINE2,
1199                 },{
1200                         .name = name_svideo,
1201                         .vmux = 8,
1202                         .amux = LINE2,
1203                 }},
1204                 .radio = {
1205                         .name = name_radio,
1206                         .amux = LINE2,
1207                         .gpio = 0x200000,
1208                 },
1209         },
1210         [SAA7134_BOARD_AVERMEDIA_DVD_EZMAKER] = {
1211                 /* Michael Smith <msmith@cbnco.com> */
1212                 .name           = "AVerMedia DVD EZMaker",
1213                 .audio_clock    = 0x00187de7,
1214                 .tuner_type     = TUNER_ABSENT,
1215                 .radio_type     = UNSET,
1216                 .tuner_addr     = ADDR_UNSET,
1217                 .radio_addr     = ADDR_UNSET,
1218                 .inputs         = {{
1219                         .name = name_comp1,
1220                         .vmux = 3,
1221                 },{
1222                         .name = name_svideo,
1223                         .vmux = 8,
1224                 }},
1225         },
1226         [SAA7134_BOARD_NOVAC_PRIMETV7133] = {
1227                 /* toshii@netbsd.org */
1228                 .name           = "Noval Prime TV 7133",
1229                 .audio_clock    = 0x00200000,
1230                 .tuner_type     = TUNER_ALPS_TSBH1_NTSC,
1231                 .radio_type     = UNSET,
1232                 .tuner_addr     = ADDR_UNSET,
1233                 .radio_addr     = ADDR_UNSET,
1234                 .inputs         = {{
1235                         .name = name_comp1,
1236                         .vmux = 3,
1237                 },{
1238                         .name = name_tv,
1239                         .vmux = 1,
1240                         .amux = TV,
1241                         .tv   = 1,
1242                 },{
1243                         .name = name_svideo,
1244                         .vmux = 8,
1245                 }},
1246         },
1247         [SAA7134_BOARD_AVERMEDIA_STUDIO_305] = {
1248                 .name           = "AverMedia AverTV Studio 305",
1249                 .audio_clock    = 0x00187de7,
1250                 .tuner_type     = TUNER_PHILIPS_FM1256_IH3,
1251                 .radio_type     = UNSET,
1252                 .tuner_addr     = ADDR_UNSET,
1253                 .radio_addr     = ADDR_UNSET,
1254                 .tda9887_conf   = TDA9887_PRESENT,
1255                 .inputs         = {{
1256                         .name = name_tv,
1257                         .vmux = 1,
1258                         .amux = LINE2,
1259                         .tv   = 1,
1260                 },{
1261                         .name = name_comp1,
1262                         .vmux = 0,
1263                         .amux = LINE2,
1264                 },{
1265                         .name = name_comp2,
1266                         .vmux = 3,
1267                         .amux = LINE2,
1268                 },{
1269                         .name = name_svideo,
1270                         .vmux = 8,
1271                         .amux = LINE2,
1272                 }},
1273                 .radio = {
1274                         .name = name_radio,
1275                         .amux = LINE2,
1276                 },
1277                 .mute = {
1278                         .name = name_mute,
1279                         .amux = LINE1,
1280                 },
1281         },
1282         [SAA7134_BOARD_UPMOST_PURPLE_TV] = {
1283                 .name           = "UPMOST PURPLE TV",
1284                 .audio_clock    = 0x00187de7,
1285                 .tuner_type     = TUNER_PHILIPS_FM1236_MK3,
1286                 .radio_type     = UNSET,
1287                 .tuner_addr     = ADDR_UNSET,
1288                 .radio_addr     = ADDR_UNSET,
1289                 .tda9887_conf   = TDA9887_PRESENT,
1290                 .inputs         = {{
1291                         .name = name_tv,
1292                         .vmux = 7,
1293                         .amux = TV,
1294                         .tv   = 1,
1295                 },{
1296                         .name = name_svideo,
1297                         .vmux = 7,
1298                         .amux = LINE1,
1299                 }},
1300         },
1301         [SAA7134_BOARD_ITEMS_MTV005] = {
1302                 /* Norman Jonas <normanjonas@arcor.de> */
1303                 .name           = "Items MuchTV Plus / IT-005",
1304                 .audio_clock    = 0x00187de7,
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 = 3,
1312                         .amux = TV,
1313                         .tv   = 1,
1314                 },{
1315                         .name   = name_comp1,
1316                         .vmux   = 1,
1317                         .amux   = LINE1,
1318                 },{
1319                         .name = name_svideo,
1320                         .vmux = 8,
1321                         .amux = LINE1,
1322                 }},
1323                 .radio = {
1324                         .name = name_radio,
1325                         .amux = LINE2,
1326                 },
1327         },
1328         [SAA7134_BOARD_CINERGY200] = {
1329                 .name           = "Terratec Cinergy 200 TV",
1330                 .audio_clock    = 0x00200000,
1331                 .tuner_type     = TUNER_PHILIPS_PAL,
1332                 .radio_type     = UNSET,
1333                 .tuner_addr     = ADDR_UNSET,
1334                 .radio_addr     = ADDR_UNSET,
1335                 .inputs         = {{
1336                         .name = name_tv,
1337                         .vmux = 1,
1338                         .amux = LINE2,
1339                         .tv   = 1,
1340                 },{
1341                         .name = name_comp1,
1342                         .vmux = 4,
1343                         .amux = LINE1,
1344                 },{
1345                         .name = name_svideo,
1346                         .vmux = 8,
1347                         .amux = LINE1,
1348                 },{
1349                         .name = name_comp2, /* CVideo over SVideo Connector */
1350                         .vmux = 0,
1351                         .amux = LINE1,
1352                 }},
1353                 .mute = {
1354                         .name = name_mute,
1355                         .amux = LINE2,
1356                 },
1357         },
1358         [SAA7134_BOARD_VIDEOMATE_TV_PVR] = {
1359                 /* Alain St-Denis <alain@topaze.homeip.net> */
1360                 .name           = "Compro VideoMate TV PVR/FM",
1361                 .audio_clock    = 0x00187de7,
1362                 .tuner_type     = TUNER_PHILIPS_NTSC_M,
1363                 .radio_type     = UNSET,
1364                 .tuner_addr     = ADDR_UNSET,
1365                 .radio_addr     = ADDR_UNSET,
1366                 .gpiomask       = 0x808c0080,
1367                 .inputs         = {{
1368                         .name = name_svideo,
1369                         .vmux = 8,
1370                         .amux = LINE1,
1371                         .gpio = 0x00080,
1372                 },{
1373                         .name = name_comp1,
1374                         .vmux = 3,
1375                         .amux = LINE1,
1376                         .gpio = 0x00080,
1377                 },{
1378                         .name = name_tv,
1379                         .vmux = 1,
1380                         .amux = LINE2_LEFT,
1381                         .tv   = 1,
1382                         .gpio = 0x00080,
1383                 }},
1384                 .radio = {
1385                         .name = name_radio,
1386                         .amux = LINE2,
1387                         .gpio = 0x80000,
1388                 },
1389                 .mute = {
1390                         .name = name_mute,
1391                         .amux = LINE2,
1392                         .gpio = 0x40000,
1393                 },
1394         },
1395         [SAA7134_BOARD_SABRENT_SBTTVFM] = {
1396                 /* Michael Rodriguez-Torrent <mrtorrent@asu.edu> */
1397                 .name           = "Sabrent SBT-TVFM (saa7130)",
1398                 .audio_clock    = 0x00187de7,
1399                 .tuner_type     = TUNER_PHILIPS_NTSC_M,
1400                 .radio_type     = UNSET,
1401                 .tuner_addr     = ADDR_UNSET,
1402                 .radio_addr     = ADDR_UNSET,
1403                 .inputs         = {{
1404                         .name = name_comp1,
1405                         .vmux = 1,
1406                         .amux = LINE1,
1407                 },{
1408                         .name = name_tv,
1409                         .vmux = 3,
1410                         .amux = LINE2,
1411                         .tv   = 1,
1412                 },{
1413                         .name = name_svideo,
1414                         .vmux = 8,
1415                         .amux = LINE1,
1416                 }},
1417                 .radio = {
1418                         .name   = name_radio,
1419                         .amux   = LINE2,
1420                 },
1421         },
1422         [SAA7134_BOARD_ZOLID_XPERT_TV7134] = {
1423                 /* Helge Jensen <helge.jensen@slog.dk> */
1424                 .name           = ":Zolid Xpert TV7134",
1425                 .audio_clock    = 0x00187de7,
1426                 .tuner_type     = TUNER_PHILIPS_NTSC,
1427                 .radio_type     = UNSET,
1428                 .tuner_addr     = ADDR_UNSET,
1429                 .radio_addr     = ADDR_UNSET,
1430                 .inputs         = {{
1431                         .name = name_svideo,
1432                         .vmux = 8,
1433                         .amux = LINE1,
1434                 },{
1435                         .name = name_comp1,
1436                         .vmux = 3,
1437                         .amux = LINE1,
1438                 },{
1439                         .name = name_tv,
1440                         .vmux = 1,
1441                         .amux = LINE2,
1442                         .tv   = 1,
1443                 }},
1444         },
1445         [SAA7134_BOARD_EMPIRE_PCI_TV_RADIO_LE] = {
1446                 /* "Matteo Az" <matte.az@nospam.libero.it> ;-) */
1447                 .name           = "Empire PCI TV-Radio LE",
1448                 .audio_clock    = 0x00187de7,
1449                 .tuner_type     = TUNER_PHILIPS_PAL,
1450                 .radio_type     = UNSET,
1451                 .tuner_addr     = ADDR_UNSET,
1452                 .radio_addr     = ADDR_UNSET,
1453                 .gpiomask       = 0x4000,
1454                 .inputs         = {{
1455                         .name = name_tv_mono,
1456                         .vmux = 1,
1457                         .amux = LINE2,
1458                         .gpio = 0x8000,
1459                         .tv   = 1,
1460                 },{
1461                         .name = name_comp1,
1462                         .vmux = 3,
1463                         .amux = LINE1,
1464                         .gpio = 0x8000,
1465                 },{
1466                         .name = name_svideo,
1467                         .vmux = 6,
1468                         .amux = LINE1,
1469                         .gpio = 0x8000,
1470                 }},
1471                 .radio = {
1472                         .name = name_radio,
1473                         .amux = LINE1,
1474                         .gpio = 0x8000,
1475                 },
1476                 .mute = {
1477                         .name = name_mute,
1478                         .amux = TV,
1479                         .gpio =0x8000,
1480                 }
1481         },
1482         [SAA7134_BOARD_AVERMEDIA_STUDIO_307] = {
1483                 /*
1484                 Nickolay V. Shmyrev <nshmyrev@yandex.ru>
1485                 Lots of thanks to Andrey Zolotarev <zolotarev_andrey@mail.ru>
1486                 */
1487                 .name           = "Avermedia AVerTV Studio 307",
1488                 .audio_clock    = 0x00187de7,
1489                 .tuner_type     = TUNER_PHILIPS_FM1256_IH3,
1490                 .radio_type     = UNSET,
1491                 .tuner_addr     = ADDR_UNSET,
1492                 .radio_addr     = ADDR_UNSET,
1493                 .tda9887_conf   = TDA9887_PRESENT,
1494                 .gpiomask       = 0x03,
1495                 .inputs         = {{
1496                         .name = name_tv,
1497                         .vmux = 1,
1498                         .amux = TV,
1499                         .tv   = 1,
1500                         .gpio = 0x00,
1501                 },{
1502                         .name = name_comp1,
1503                         .vmux = 0,
1504                         .amux = LINE2,
1505                         .gpio = 0x00,
1506                 },{
1507                         .name = name_comp2,
1508                         .vmux = 3,
1509                         .amux = LINE2,
1510                         .gpio = 0x00,
1511                 },{
1512                         .name = name_svideo,
1513                         .vmux = 8,
1514                         .amux = LINE2,
1515                         .gpio = 0x00,
1516                 }},
1517                 .radio = {
1518                         .name = name_radio,
1519                         .amux = LINE1,
1520                         .gpio = 0x01,
1521                 },
1522                 .mute  = {
1523                         .name = name_mute,
1524                         .amux = LINE1,
1525                         .gpio = 0x00,
1526                 },
1527         },
1528         [SAA7134_BOARD_AVERMEDIA_GO_007_FM] = {
1529                 .name           = "Avermedia AVerTV GO 007 FM",
1530                 .audio_clock    = 0x00187de7,
1531                 .tuner_type     = TUNER_PHILIPS_TDA8290,
1532                 .radio_type     = UNSET,
1533                 .tuner_addr     = ADDR_UNSET,
1534                 .radio_addr     = ADDR_UNSET,
1535                 .gpiomask       = 0x00300003,
1536                 /* .gpiomask       = 0x8c240003, */
1537                 .inputs         = {{
1538                         .name = name_tv,
1539                         .vmux = 1,
1540                         .amux = TV,
1541                         .tv   = 1,
1542                         .gpio = 0x01,
1543                 },{
1544                         .name = name_comp1,
1545                         .vmux = 0,
1546                         .amux = LINE2,
1547                         .gpio = 0x02,
1548                 },{
1549                         .name = name_svideo,
1550                         .vmux = 6,
1551                         .amux = LINE2,
1552                         .gpio = 0x02,
1553                 }},
1554                 .radio = {
1555                         .name = name_radio,
1556                         .amux = LINE1,
1557                         .gpio = 0x00300001,
1558                 },
1559                 .mute = {
1560                         .name = name_mute,
1561                         .amux = TV,
1562                         .gpio = 0x01,
1563                 },
1564         },
1565         [SAA7134_BOARD_AVERMEDIA_CARDBUS] = {
1566                 /* Kees.Blom@cwi.nl */
1567                 .name           = "AVerMedia Cardbus TV/Radio (E500)",
1568                 .audio_clock    = 0x187de7,
1569                 .tuner_type     = TUNER_PHILIPS_TDA8290,
1570                 .radio_type     = UNSET,
1571                 .tuner_addr     = ADDR_UNSET,
1572                 .radio_addr     = ADDR_UNSET,
1573                 .inputs         = {{
1574                         .name = name_tv,
1575                         .vmux = 1,
1576                         .amux = TV,
1577                         .tv   = 1,
1578                 },{
1579                         .name = name_comp1,
1580                         .vmux = 3,
1581                         .amux = LINE2,
1582                 },{
1583                         .name = name_svideo,
1584                         .vmux = 8,
1585                         .amux = LINE1,
1586                 }},
1587                 .radio = {
1588                         .name = name_radio,
1589                         .amux = LINE1,
1590                 },
1591         },
1592         [SAA7134_BOARD_CINERGY400_CARDBUS] = {
1593                 .name           = "Terratec Cinergy 400 mobile",
1594                 .audio_clock    = 0x187de7,
1595                 .tuner_type     = TUNER_ALPS_TSBE5_PAL,
1596                 .radio_type     = UNSET,
1597                 .tuner_addr     = ADDR_UNSET,
1598                 .radio_addr     = ADDR_UNSET,
1599                 .tda9887_conf   = TDA9887_PRESENT,
1600                 .inputs         = {{
1601                         .name = name_tv,
1602                         .vmux = 1,
1603                         .amux = TV,
1604                         .tv   = 1,
1605                 },{
1606                         .name = name_tv_mono,
1607                         .vmux = 1,
1608                         .amux = LINE2,
1609                         .tv   = 1,
1610                 },{
1611                         .name = name_comp1,
1612                         .vmux = 3,
1613                         .amux = LINE1,
1614                 },{
1615                         .name = name_svideo,
1616                         .vmux = 8,
1617                         .amux = LINE1,
1618                 }},
1619         },
1620         [SAA7134_BOARD_CINERGY600_MK3] = {
1621                 .name           = "Terratec Cinergy 600 TV MK3",
1622                 .audio_clock    = 0x00200000,
1623                 .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
1624                 .radio_type     = UNSET,
1625                 .tuner_addr     = ADDR_UNSET,
1626                 .radio_addr     = ADDR_UNSET,
1627                 .tda9887_conf   = TDA9887_PRESENT,
1628                 .inputs         = {{
1629                         .name = name_tv,
1630                         .vmux = 1,
1631                         .amux = TV,
1632                         .tv   = 1,
1633                 },{
1634                         .name = name_comp1,
1635                         .vmux = 4,
1636                         .amux = LINE1,
1637                 },{
1638                         .name = name_svideo,
1639                         .vmux = 8,
1640                         .amux = LINE1,
1641                 },{
1642                         .name = name_comp2, /* CVideo over SVideo Connector */
1643                         .vmux = 0,
1644                         .amux = LINE1,
1645                 }},
1646                 .radio = {
1647                         .name = name_radio,
1648                         .amux = LINE2,
1649                 },
1650         },
1651         [SAA7134_BOARD_VIDEOMATE_GOLD_PLUS] = {
1652                 /* Dylan Walkden <dylan_walkden@hotmail.com> */
1653                 .name           = "Compro VideoMate Gold+ Pal",
1654                 .audio_clock    = 0x00187de7,
1655                 .tuner_type     = TUNER_PHILIPS_PAL,
1656                 .radio_type     = UNSET,
1657                 .tuner_addr     = ADDR_UNSET,
1658                 .radio_addr     = ADDR_UNSET,
1659                 .gpiomask       = 0x1ce780,
1660                 .inputs         = {{
1661                         .name = name_svideo,
1662                         .vmux = 0,              /* CVideo over SVideo Connector - ok? */
1663                         .amux = LINE1,
1664                         .gpio = 0x008080,
1665                 },{
1666                         .name = name_comp1,
1667                         .vmux = 3,
1668                         .amux = LINE1,
1669                         .gpio = 0x008080,
1670                 },{
1671                         .name = name_tv,
1672                         .vmux = 1,
1673                         .amux = TV,
1674                         .tv   = 1,
1675                         .gpio = 0x008080,
1676                 }},
1677                 .radio = {
1678                         .name = name_radio,
1679                         .amux = LINE2,
1680                         .gpio = 0x80000,
1681                 },
1682                 .mute = {
1683                         .name = name_mute,
1684                         .amux = LINE2,
1685                         .gpio = 0x0c8000,
1686                 },
1687         },
1688         [SAA7134_BOARD_PINNACLE_300I_DVBT_PAL] = {
1689                 .name           = "Pinnacle PCTV 300i DVB-T + PAL",
1690                 .audio_clock    = 0x00187de7,
1691                 .tuner_type     = TUNER_MT2032,
1692                 .radio_type     = UNSET,
1693                 .tuner_addr     = ADDR_UNSET,
1694                 .radio_addr     = ADDR_UNSET,
1695                 .tda9887_conf   = TDA9887_PRESENT | TDA9887_INTERCARRIER | TDA9887_PORT2_INACTIVE,
1696                 .mpeg           = SAA7134_MPEG_DVB,
1697                 .inputs         = {{
1698                         .name = name_tv,
1699                         .vmux = 3,
1700                         .amux = TV,
1701                         .tv   = 1,
1702                 },{
1703                         .name = name_comp1,
1704                         .vmux = 0,
1705                         .amux = LINE2,
1706                 },{
1707                         .name = name_comp2,
1708                         .vmux = 1,
1709                         .amux = LINE2,
1710                 },{
1711                         .name = name_svideo,
1712                         .vmux = 8,
1713                         .amux = LINE2,
1714                 }},
1715         },
1716         [SAA7134_BOARD_PROVIDEO_PV952] = {
1717                 /* andreas.kretschmer@web.de */
1718                 .name           = "ProVideo PV952",
1719                 .audio_clock    = 0x00187de7,
1720                 .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
1721                 .radio_type     = UNSET,
1722                 .tuner_addr     = ADDR_UNSET,
1723                 .radio_addr     = ADDR_UNSET,
1724                 .tda9887_conf   = TDA9887_PRESENT,
1725                 .inputs         = {{
1726                         .name = name_comp1,
1727                         .vmux = 0,
1728                         .amux = LINE1,
1729                 },{
1730                         .name = name_tv,
1731                         .vmux = 1,
1732                         .amux = TV,
1733                         .tv   = 1,
1734                 },{
1735                         .name = name_tv_mono,
1736                         .vmux = 1,
1737                         .amux = LINE2,
1738                         .tv   = 1,
1739                 }},
1740                 .radio = {
1741                         .name = name_radio,
1742                         .amux = LINE2,
1743                 },
1744         },
1745         [SAA7134_BOARD_AVERMEDIA_305] = {
1746                 /* much like the "studio" version but without radio
1747                 * and another tuner (sirspiritus@yandex.ru) */
1748                 .name           = "AverMedia AverTV/305",
1749                 .audio_clock    = 0x00187de7,
1750                 .tuner_type     = TUNER_PHILIPS_FQ1216ME,
1751                 .radio_type     = UNSET,
1752                 .tuner_addr     = ADDR_UNSET,
1753                 .radio_addr     = ADDR_UNSET,
1754                 .tda9887_conf   = TDA9887_PRESENT,
1755                 .inputs         = {{
1756                         .name = name_tv,
1757                         .vmux = 1,
1758                         .amux = LINE2,
1759                         .tv   = 1,
1760                 },{
1761                         .name = name_comp1,
1762                         .vmux = 0,
1763                         .amux = LINE2,
1764                 },{
1765                         .name = name_comp2,
1766                         .vmux = 3,
1767                         .amux = LINE2,
1768                 },{
1769                         .name = name_svideo,
1770                         .vmux = 8,
1771                         .amux = LINE2,
1772                 }},
1773                 .mute = {
1774                         .name = name_mute,
1775                         .amux = LINE1,
1776                 },
1777         },
1778         [SAA7134_BOARD_FLYDVBTDUO] = {
1779                 /* LifeView FlyDVB-T DUO */
1780                 /* "Nico Sabbi <nsabbi@tiscali.it>  Hartmut Hackmann hartmut.hackmann@t-online.de*/
1781                 .name           = "LifeView FlyDVB-T DUO",
1782                 .audio_clock    = 0x00200000,
1783                 .tuner_type     = TUNER_PHILIPS_TDA8290,
1784                 .radio_type     = UNSET,
1785                 .tuner_addr     = ADDR_UNSET,
1786                 .radio_addr     = ADDR_UNSET,
1787                 .mpeg           = SAA7134_MPEG_DVB,
1788                 .inputs         = {{
1789                         .name = name_tv,
1790                         .vmux = 1,
1791                         .amux = TV,
1792                         .tv   = 1,
1793                 },{
1794                         .name = name_comp1,     /* Composite signal on S-Video input */
1795                         .vmux = 0,
1796                         .amux = LINE2,
1797                 },{
1798                         .name = name_comp2,     /* Composite input */
1799                         .vmux = 3,
1800                         .amux = LINE2,
1801                 },{
1802                         .name = name_svideo,    /* S-Video signal on S-Video input */
1803                         .vmux = 8,
1804                         .amux = LINE2,
1805                 }},
1806         },
1807         [SAA7134_BOARD_PHILIPS_TOUGH] = {
1808                 .name           = "Philips TOUGH DVB-T reference design",
1809                 .tuner_type     = TUNER_ABSENT,
1810                 .audio_clock    = 0x00187de7,
1811                 .radio_type     = UNSET,
1812                 .tuner_addr     = ADDR_UNSET,
1813                 .radio_addr     = ADDR_UNSET,
1814                 .mpeg           = SAA7134_MPEG_DVB,
1815                 .inputs = {{
1816                         .name   = name_comp1,
1817                         .vmux   = 0,
1818                         .amux   = LINE1,
1819                 },{
1820                         .name   = name_svideo,
1821                         .vmux   = 8,
1822                         .amux   = LINE1,
1823                 }},
1824         },
1825         [SAA7134_BOARD_AVERMEDIA_307] = {
1826                 /*
1827                 Davydov Vladimir <vladimir@iqmedia.com>
1828                 */
1829                 .name           = "Avermedia AVerTV 307",
1830                 .audio_clock    = 0x00187de7,
1831                 .tuner_type     = TUNER_PHILIPS_FQ1216ME,
1832                 .radio_type     = UNSET,
1833                 .tuner_addr     = ADDR_UNSET,
1834                 .radio_addr     = ADDR_UNSET,
1835                 .tda9887_conf   = TDA9887_PRESENT,
1836                 .inputs         = {{
1837                         .name = name_tv,
1838                         .vmux = 1,
1839                         .amux = TV,
1840                         .tv   = 1,
1841                 },{
1842                         .name = name_comp1,
1843                         .vmux = 0,
1844                         .amux = LINE1,
1845                 },{
1846                         .name = name_comp2,
1847                         .vmux = 3,
1848                         .amux = LINE1,
1849                 },{
1850                         .name = name_svideo,
1851                         .vmux = 8,
1852                         .amux = LINE1,
1853                 }},
1854         },
1855         [SAA7134_BOARD_ADS_INSTANT_TV] = {
1856                 .name           = "ADS Tech Instant TV (saa7135)",
1857                 .audio_clock    = 0x00187de7,
1858                 .tuner_type     = TUNER_PHILIPS_TDA8290,
1859                 .radio_type     = UNSET,
1860                 .tuner_addr     = ADDR_UNSET,
1861                 .radio_addr     = ADDR_UNSET,
1862                 .inputs         = {{
1863                         .name = name_tv,
1864                         .vmux = 1,
1865                         .amux = TV,
1866                         .tv   = 1,
1867                 },{
1868                         .name = name_comp1,
1869                         .vmux = 3,
1870                         .amux = LINE2,
1871                 },{
1872                         .name = name_svideo,
1873                         .vmux = 8,
1874                         .amux = LINE2,
1875                 }},
1876         },
1877         [SAA7134_BOARD_KWORLD_VSTREAM_XPERT] = {
1878                 .name           = "Kworld/Tevion V-Stream Xpert TV PVR7134",
1879                 .audio_clock    = 0x00187de7,
1880                 .tuner_type     = TUNER_PHILIPS_PAL_I,
1881                 .radio_type     = UNSET,
1882                 .tuner_addr     = ADDR_UNSET,
1883                 .radio_addr     = ADDR_UNSET,
1884                 .gpiomask       = 0x0700,
1885                 .inputs = {{
1886                         .name   = name_tv,
1887                         .vmux   = 1,
1888                         .amux   = TV,
1889                         .tv     = 1,
1890                         .gpio   = 0x000,
1891                 },{
1892                         .name   = name_comp1,
1893                         .vmux   = 3,
1894                         .amux   = LINE1,
1895                         .gpio   = 0x200,                /* gpio by DScaler */
1896                 },{
1897                         .name   = name_svideo,
1898                         .vmux   = 0,
1899                         .amux   = LINE1,
1900                         .gpio   = 0x200,
1901                 }},
1902                 .radio = {
1903                         .name   = name_radio,
1904                         .amux   = LINE1,
1905                         .gpio   = 0x100,
1906                 },
1907                 .mute  = {
1908                         .name = name_mute,
1909                         .amux = TV,
1910                         .gpio = 0x000,
1911                 },
1912         },
1913         [SAA7134_BOARD_FLYDVBT_DUO_CARDBUS] = {
1914                 .name           = "LifeView/Typhoon/Genius FlyDVB-T Duo Cardbus",
1915                 .audio_clock    = 0x00200000,
1916                 .tuner_type     = TUNER_PHILIPS_TDA8290,
1917                 .radio_type     = UNSET,
1918                 .tuner_addr     = ADDR_UNSET,
1919                 .radio_addr     = ADDR_UNSET,
1920                 .mpeg           = SAA7134_MPEG_DVB,
1921                 .gpiomask       = 0x00200000,
1922                 .inputs         = {{
1923                         .name = name_tv,
1924                         .vmux = 1,
1925                         .amux = TV,
1926                         .gpio = 0x200000,       /* GPIO21=High for TV input */
1927                         .tv   = 1,
1928                 },{
1929                         .name = name_svideo,    /* S-Video signal on S-Video input */
1930                         .vmux = 8,
1931                         .amux = LINE2,
1932                 },{
1933                         .name = name_comp1,     /* Composite signal on S-Video input */
1934                         .vmux = 0,
1935                         .amux = LINE2,
1936                 },{
1937                         .name = name_comp2,     /* Composite input */
1938                         .vmux = 3,
1939                         .amux = LINE2,
1940                 }},
1941                 .radio = {
1942                         .name = name_radio,
1943                         .amux = TV,
1944                         .gpio = 0x000000,       /* GPIO21=Low for FM radio antenna */
1945                 },
1946         },
1947         [SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUSII] = {
1948                 .name           = "Compro VideoMate TV Gold+II",
1949                 .audio_clock    = 0x002187de7,
1950                 .tuner_type     = TUNER_LG_PAL_NEW_TAPC,
1951                 .radio_type     = TUNER_TEA5767,
1952                 .tuner_addr     = 0x63,
1953                 .radio_addr     = 0x60,
1954                 .gpiomask       = 0x8c1880,
1955                 .inputs         = {{
1956                         .name = name_svideo,
1957                         .vmux = 0,
1958                         .amux = LINE1,
1959                         .gpio = 0x800800,
1960                 },{
1961                         .name = name_comp1,
1962                         .vmux = 3,
1963                         .amux = LINE1,
1964                         .gpio = 0x801000,
1965                 },{
1966                         .name = name_tv,
1967                         .vmux = 1,
1968                         .amux = TV,
1969                         .tv   = 1,
1970                         .gpio = 0x800000,
1971                 }},
1972                 .radio = {
1973                         .name = name_radio,
1974                         .amux = TV,
1975                         .gpio = 0x880000,
1976                 },
1977                 .mute = {
1978                         .name = name_mute,
1979                         .amux = LINE2,
1980                         .gpio = 0x840000,
1981                 },
1982         },
1983         [SAA7134_BOARD_KWORLD_XPERT] = {
1984                 /*
1985                 FIXME:
1986                 - Remote control doesn't initialize properly.
1987                 - Audio volume starts muted,
1988                 then gradually increases after channel change.
1989                 - Overlay scaling problems (application error?)
1990                 - Composite S-Video untested.
1991                 From: Konrad Rzepecki <hannibal@megapolis.pl>
1992                 */
1993                 .name           = "Kworld Xpert TV PVR7134",
1994                 .audio_clock    = 0x00187de7,
1995                 .tuner_type     = TUNER_TENA_9533_DI,
1996                 .radio_type     = TUNER_TEA5767,
1997                 .tuner_addr     = 0x61,
1998                 .radio_addr     = 0x60,
1999                 .gpiomask       = 0x0700,
2000                 .inputs = {{
2001                         .name   = name_tv,
2002                         .vmux   = 1,
2003                         .amux   = TV,
2004                         .tv     = 1,
2005                         .gpio   = 0x000,
2006                 },{
2007                         .name   = name_comp1,
2008                         .vmux   = 3,
2009                         .amux   = LINE1,
2010                         .gpio   = 0x200,                /* gpio by DScaler */
2011                 },{
2012                         .name   = name_svideo,
2013                         .vmux   = 0,
2014                         .amux   = LINE1,
2015                         .gpio   = 0x200,
2016                 }},
2017                 .radio = {
2018                         .name   = name_radio,
2019                         .amux   = LINE1,
2020                         .gpio   = 0x100,
2021                 },
2022                 .mute = {
2023                         .name = name_mute,
2024                         .amux = TV,
2025                         .gpio = 0x000,
2026                 },
2027         },
2028         [SAA7134_BOARD_FLYTV_DIGIMATRIX] = {
2029                 .name           = "FlyTV mini Asus Digimatrix",
2030                 .audio_clock    = 0x00200000,
2031                 .tuner_type     = TUNER_LG_TALN,
2032                 .radio_type     = UNSET,
2033                 .tuner_addr     = ADDR_UNSET,
2034                 .radio_addr     = ADDR_UNSET,
2035                 .inputs         = {{
2036                         .name = name_tv,
2037                         .vmux = 1,
2038                         .amux = TV,
2039                         .tv   = 1,
2040                 },{
2041                         .name = name_tv_mono,
2042                         .vmux = 1,
2043                         .amux = LINE2,
2044                         .tv   = 1,
2045                 },{
2046                         .name = name_comp1,
2047                         .vmux = 0,
2048                         .amux = LINE2,
2049                 },{
2050                         .name = name_comp2,
2051                         .vmux = 3,
2052                         .amux = LINE2,
2053                 },{
2054                         .name = name_svideo,
2055                         .vmux = 8,
2056                         .amux = LINE2,
2057                 }},
2058                 .radio = {
2059                         .name = name_radio,             /* radio unconfirmed */
2060                         .amux = LINE2,
2061                 },
2062         },
2063         [SAA7134_BOARD_KWORLD_TERMINATOR] = {
2064                 /* Kworld V-Stream Studio TV Terminator */
2065                 /* "James Webb <jrwebb@qwest.net> */
2066                 .name           = "V-Stream Studio TV Terminator",
2067                 .audio_clock    = 0x00187de7,
2068                 .tuner_type     = TUNER_PHILIPS_TDA8290,
2069                 .radio_type     = UNSET,
2070                 .tuner_addr     = ADDR_UNSET,
2071                 .radio_addr     = ADDR_UNSET,
2072                 .gpiomask       = 1 << 21,
2073                 .inputs         = {{
2074                         .name = name_tv,
2075                         .vmux = 1,
2076                         .amux = TV,
2077                         .gpio = 0x0000000,
2078                         .tv   = 1,
2079                 },{
2080                         .name = name_comp1,     /* Composite input */
2081                         .vmux = 3,
2082                         .amux = LINE2,
2083                         .gpio = 0x0000000,
2084                 },{
2085                         .name = name_svideo,    /* S-Video input */
2086                         .vmux = 8,
2087                         .amux = LINE2,
2088                         .gpio = 0x0000000,
2089                 }},
2090                 .radio = {
2091                         .name = name_radio,
2092                         .amux = TV,
2093                         .gpio = 0x0200000,
2094                 },
2095         },
2096         [SAA7134_BOARD_YUAN_TUN900] = {
2097                 /* FIXME:
2098                  * S-Video and composite sources untested.
2099                  * Radio not working.
2100                  * Remote control not yet implemented.
2101                  * From : codemaster@webgeeks.be */
2102                 .name           = "Yuan TUN-900 (saa7135)",
2103                 .audio_clock    = 0x00187de7,
2104                 .tuner_type     = TUNER_PHILIPS_TDA8290,
2105                 .radio_type     = UNSET,
2106                 .tuner_addr= ADDR_UNSET,
2107                 .radio_addr= ADDR_UNSET,
2108                 .gpiomask       = 0x00010003,
2109                 .inputs         = {{
2110                         .name = name_tv,
2111                         .vmux = 1,
2112                         .amux = TV,
2113                         .tv   = 1,
2114                         .gpio = 0x01,
2115                 },{
2116                         .name = name_comp1,
2117                         .vmux = 0,
2118                         .amux = LINE2,
2119                         .gpio = 0x02,
2120                 },{
2121                         .name = name_svideo,
2122                         .vmux = 6,
2123                         .amux = LINE2,
2124                         .gpio = 0x02,
2125                 }},
2126                 .radio = {
2127                         .name = name_radio,
2128                         .amux = LINE1,
2129                         .gpio = 0x00010003,
2130                 },
2131                 .mute = {
2132                         .name = name_mute,
2133                         .amux = TV,
2134                         .gpio = 0x01,
2135                 },
2136         },
2137         [SAA7134_BOARD_BEHOLD_409FM] = {
2138                 /* <http://tuner.beholder.ru>, Sergey <skiv@orel.ru> */
2139                 .name           = "Beholder BeholdTV 409 FM",
2140                 .audio_clock    = 0x00187de7,
2141                 .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
2142                 .radio_type     = UNSET,
2143                 .tuner_addr     = ADDR_UNSET,
2144                 .radio_addr     = ADDR_UNSET,
2145                 .tda9887_conf   = TDA9887_PRESENT,
2146                 .inputs         = {{
2147                           .name = name_tv,
2148                           .vmux = 3,
2149                           .amux = TV,
2150                           .tv   = 1,
2151                 },{
2152                           .name = name_comp1,
2153                           .vmux = 1,
2154                           .amux = LINE1,
2155                 },{
2156                           .name = name_svideo,
2157                           .vmux = 8,
2158                           .amux = LINE1,
2159                 }},
2160                 .radio = {
2161                           .name = name_radio,
2162                           .amux = LINE2,
2163                 },
2164         },
2165         [SAA7134_BOARD_GOTVIEW_7135] = {
2166                 /* Mike Baikov <mike@baikov.com> */
2167                 /* Andrey Cvetcov <ays14@yandex.ru> */
2168                 .name            = "GoTView 7135 PCI",
2169                 .audio_clock     = 0x00187de7,
2170                 .tuner_type      = TUNER_PHILIPS_FM1216ME_MK3,
2171                 .radio_type      = UNSET,
2172                 .tuner_addr      = ADDR_UNSET,
2173                 .radio_addr      = ADDR_UNSET,
2174                 .tda9887_conf    = TDA9887_PRESENT,
2175                 .gpiomask        = 0x00200003,
2176                 .inputs          = {{
2177                         .name = name_tv,
2178                         .vmux = 1,
2179                         .amux = TV,
2180                         .tv   = 1,
2181                         .gpio = 0x00200003,
2182                 },{
2183                         .name = name_tv_mono,
2184                         .vmux = 1,
2185                         .amux = LINE2,
2186                         .gpio = 0x00200003,
2187                 },{
2188                         .name = name_comp1,
2189                         .vmux = 3,
2190                         .amux = LINE1,
2191                         .gpio = 0x00200003,
2192                 },{
2193                         .name = name_svideo,
2194                         .vmux = 8,
2195                         .amux = LINE1,
2196                         .gpio = 0x00200003,
2197                 }},
2198                 .radio = {
2199                         .name = name_radio,
2200                         .amux = LINE2,
2201                         .gpio = 0x00200003,
2202                 },
2203                 .mute = {
2204                         .name = name_mute,
2205                         .amux = TV,
2206                         .gpio = 0x00200003,
2207                 },
2208         },
2209         [SAA7134_BOARD_PHILIPS_EUROPA] = {
2210                 .name           = "Philips EUROPA V3 reference design",
2211                 .audio_clock    = 0x00187de7,
2212                 .tuner_type     = TUNER_PHILIPS_TD1316,
2213                 .radio_type     = UNSET,
2214                 .tuner_addr     = 0x61,
2215                 .radio_addr     = ADDR_UNSET,
2216                 .tda9887_conf   = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE,
2217                 .mpeg           = SAA7134_MPEG_DVB,
2218                 .inputs = {{
2219                         .name   = name_tv,
2220                         .vmux   = 3,
2221                         .amux   = TV,
2222                         .tv     = 1,
2223                 },{
2224                         .name   = name_comp1,
2225                         .vmux   = 0,
2226                         .amux   = LINE2,
2227                 },{
2228                         .name   = name_svideo,
2229                         .vmux   = 8,
2230                         .amux   = LINE2,
2231                 }},
2232         },
2233         [SAA7134_BOARD_VIDEOMATE_DVBT_300] = {
2234                 .name           = "Compro Videomate DVB-T300",
2235                 .audio_clock    = 0x00187de7,
2236                 .tuner_type     = TUNER_PHILIPS_TD1316,
2237                 .radio_type     = UNSET,
2238                 .tuner_addr     = 0x61,
2239                 .radio_addr     = ADDR_UNSET,
2240                 .tda9887_conf   = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE,
2241                 .mpeg           = SAA7134_MPEG_DVB,
2242                 .inputs = {{
2243                         .name   = name_tv,
2244                         .vmux   = 3,
2245                         .amux   = TV,
2246                         .tv     = 1,
2247                 },{
2248                         .name   = name_comp1,
2249                         .vmux   = 1,
2250                         .amux   = LINE2,
2251                 },{
2252                         .name   = name_svideo,
2253                         .vmux   = 8,
2254                         .amux   = LINE2,
2255                 }},
2256         },
2257         [SAA7134_BOARD_VIDEOMATE_DVBT_200] = {
2258                 .name           = "Compro Videomate DVB-T200",
2259                 .tuner_type     = TUNER_ABSENT,
2260                 .audio_clock    = 0x00187de7,
2261                 .radio_type     = UNSET,
2262                 .tuner_addr     = ADDR_UNSET,
2263                 .radio_addr     = ADDR_UNSET,
2264                 .mpeg           = SAA7134_MPEG_DVB,
2265                 .inputs = {{
2266                         .name   = name_comp1,
2267                         .vmux   = 0,
2268                         .amux   = LINE1,
2269                 },{
2270                         .name   = name_svideo,
2271                         .vmux   = 8,
2272                         .amux   = LINE1,
2273                 }},
2274         },
2275         [SAA7134_BOARD_RTD_VFG7350] = {
2276                 .name           = "RTD Embedded Technologies VFG7350",
2277                 .audio_clock    = 0x00200000,
2278                 .tuner_type     = TUNER_ABSENT,
2279                 .radio_type     = UNSET,
2280                 .tuner_addr     = ADDR_UNSET,
2281                 .radio_addr     = ADDR_UNSET,
2282                 .inputs         = {{
2283                         .name   = "Composite 0",
2284                         .vmux   = 0,
2285                         .amux   = LINE1,
2286                 },{
2287                         .name   = "Composite 1",
2288                         .vmux   = 1,
2289                         .amux   = LINE2,
2290                 },{
2291                         .name   = "Composite 2",
2292                         .vmux   = 2,
2293                         .amux   = LINE1,
2294                 },{
2295                         .name   = "Composite 3",
2296                         .vmux   = 3,
2297                         .amux   = LINE2,
2298                 },{
2299                         .name   = "S-Video 0",
2300                         .vmux   = 8,
2301                         .amux   = LINE1,
2302                 },{
2303                         .name   = "S-Video 1",
2304                         .vmux   = 9,
2305                         .amux   = LINE2,
2306                 }},
2307                 .mpeg           = SAA7134_MPEG_EMPRESS,
2308                 .video_out      = CCIR656,
2309                 .vid_port_opts  = ( SET_T_CODE_POLARITY_NON_INVERTED |
2310                                     SET_CLOCK_NOT_DELAYED |
2311                                     SET_CLOCK_INVERTED |
2312                                     SET_VSYNC_OFF ),
2313         },
2314         [SAA7134_BOARD_RTD_VFG7330] = {
2315                 .name           = "RTD Embedded Technologies VFG7330",
2316                 .audio_clock    = 0x00200000,
2317                 .tuner_type     = TUNER_ABSENT,
2318                 .radio_type     = UNSET,
2319                 .tuner_addr     = ADDR_UNSET,
2320                 .radio_addr     = ADDR_UNSET,
2321                 .inputs         = {{
2322                         .name   = "Composite 0",
2323                         .vmux   = 0,
2324                         .amux   = LINE1,
2325                 },{
2326                         .name   = "Composite 1",
2327                         .vmux   = 1,
2328                         .amux   = LINE2,
2329                 },{
2330                         .name   = "Composite 2",
2331                         .vmux   = 2,
2332                         .amux   = LINE1,
2333                 },{
2334                         .name   = "Composite 3",
2335                         .vmux   = 3,
2336                         .amux   = LINE2,
2337                 },{
2338                         .name   = "S-Video 0",
2339                         .vmux   = 8,
2340                         .amux   = LINE1,
2341                 },{
2342                         .name   = "S-Video 1",
2343                         .vmux   = 9,
2344                         .amux   = LINE2,
2345                 }},
2346         },
2347         [SAA7134_BOARD_FLYTVPLATINUM_MINI2] = {
2348                 .name           = "LifeView FlyTV Platinum Mini2",
2349                 .audio_clock    = 0x00200000,
2350                 .tuner_type     = TUNER_PHILIPS_TDA8290,
2351                 .radio_type     = UNSET,
2352                 .tuner_addr     = ADDR_UNSET,
2353                 .radio_addr     = ADDR_UNSET,
2354
2355                 .inputs         = {{
2356                         .name = name_tv,
2357                         .vmux = 1,
2358                         .amux = TV,
2359                         .tv   = 1,
2360                 },{
2361                         .name = name_comp1,     /* Composite signal on S-Video input */
2362                         .vmux = 0,
2363                         .amux = LINE2,
2364                 },{
2365                         .name = name_comp2,     /* Composite input */
2366                         .vmux = 3,
2367                         .amux = LINE2,
2368                 },{
2369                         .name = name_svideo,
2370                         .vmux = 8,
2371                         .amux = LINE2,
2372                 }},
2373         },
2374         [SAA7134_BOARD_AVERMEDIA_AVERTVHD_A180] = {
2375                 /* Michael Krufky <mkrufky@m1k.net>
2376                  * Uses Alps Electric TDHU2, containing NXT2004 ATSC Decoder
2377                  * AFAIK, there is no analog demod, thus,
2378                  * no support for analog television.
2379                  */
2380                 .name           = "AVerMedia AVerTVHD MCE A180",
2381                 .audio_clock    = 0x00187de7,
2382                 .tuner_type     = TUNER_ABSENT,
2383                 .radio_type     = UNSET,
2384                 .tuner_addr     = ADDR_UNSET,
2385                 .radio_addr     = ADDR_UNSET,
2386                 .mpeg           = SAA7134_MPEG_DVB,
2387                 .inputs         = {{
2388                         .name = name_comp1,
2389                         .vmux = 3,
2390                         .amux = LINE2,
2391                 },{
2392                         .name = name_svideo,
2393                         .vmux = 8,
2394                         .amux = LINE2,
2395                 }},
2396         },
2397         [SAA7134_BOARD_MONSTERTV_MOBILE] = {
2398                 .name           = "SKNet MonsterTV Mobile",
2399                 .audio_clock    = 0x00187de7,
2400                 .tuner_type     = TUNER_PHILIPS_TDA8290,
2401                 .radio_type     = UNSET,
2402                 .tuner_addr     = ADDR_UNSET,
2403                 .radio_addr     = ADDR_UNSET,
2404
2405                 .inputs         = {{
2406                           .name = name_tv,
2407                           .vmux = 1,
2408                           .amux = TV,
2409                           .tv   = 1,
2410                 },{
2411                           .name = name_comp1,
2412                           .vmux = 3,
2413                           .amux = LINE1,
2414                 },{
2415                           .name = name_svideo,
2416                           .vmux = 6,
2417                           .amux = LINE1,
2418                 }},
2419         },
2420         [SAA7134_BOARD_PINNACLE_PCTV_110i] = {
2421                .name           = "Pinnacle PCTV 40i/50i/110i (saa7133)",
2422                 .audio_clock    = 0x00187de7,
2423                 .tuner_type     = TUNER_PHILIPS_TDA8290,
2424                 .radio_type     = UNSET,
2425                 .tuner_addr     = ADDR_UNSET,
2426                 .radio_addr     = ADDR_UNSET,
2427                 .gpiomask       = 0x080200000,
2428                 .inputs         = {{
2429                           .name = name_tv,
2430                           .vmux = 4,
2431                           .amux = TV,
2432                           .tv   = 1,
2433                 },{
2434                           .name = name_comp1,
2435                           .vmux = 1,
2436                          .amux = LINE2,
2437                },{
2438                          .name = name_comp2,
2439                          .vmux = 0,
2440                           .amux = LINE2,
2441                 },{
2442                           .name = name_svideo,
2443                           .vmux = 8,
2444                           .amux = LINE2,
2445                 }},
2446                 .radio = {
2447                           .name = name_radio,
2448                           .amux = LINE1,
2449                 },
2450         },
2451         [SAA7134_BOARD_ASUSTeK_P7131_DUAL] = {
2452                 .name           = "ASUSTeK P7131 Dual",
2453                 .audio_clock    = 0x00187de7,
2454                 .tuner_type     = TUNER_PHILIPS_TDA8290,
2455                 .radio_type     = UNSET,
2456                 .tuner_addr     = ADDR_UNSET,
2457                 .radio_addr     = ADDR_UNSET,
2458                 .gpiomask       = 1 << 21,
2459                 .mpeg           = SAA7134_MPEG_DVB,
2460                 .inputs         = {{
2461                         .name = name_tv,
2462                         .vmux = 1,
2463                         .amux = TV,
2464                         .tv   = 1,
2465                         .gpio = 0x0000000,
2466                 },{
2467                         .name = name_comp1,
2468                         .vmux = 3,
2469                         .amux = LINE2,
2470                         .gpio = 0x0200000,
2471                 },{
2472                         .name = name_svideo,
2473                         .vmux = 8,
2474                         .amux = LINE2,
2475                         .gpio = 0x0200000,
2476                 }},
2477                 .radio = {
2478                         .name = name_radio,
2479                         .amux = TV,
2480                         .gpio = 0x0200000,
2481                 },
2482         },
2483         [SAA7134_BOARD_SEDNA_PC_TV_CARDBUS] = {
2484                 /* Paul Tom Zalac <pzalac@gmail.com> */
2485                 /* Pavel Mihaylov <bin@bash.info> */
2486                 .name           = "Sedna/MuchTV PC TV Cardbus TV/Radio (ITO25 Rev:2B)",
2487                                 /* Sedna/MuchTV (OEM) Cardbus TV Tuner */
2488                 .audio_clock    = 0x00187de7,
2489                 .tuner_type     = TUNER_PHILIPS_TDA8290,
2490                 .radio_type     = UNSET,
2491                 .tuner_addr     = ADDR_UNSET,
2492                 .radio_addr     = ADDR_UNSET,
2493                 .gpiomask       = 0xe880c0,
2494                 .inputs         = {{
2495                         .name = name_tv,
2496                         .vmux = 3,
2497                         .amux = TV,
2498                         .tv   = 1,
2499                 },{
2500                         .name = name_comp1,
2501                         .vmux = 1,
2502                         .amux = LINE1,
2503                 },{
2504                         .name = name_svideo,
2505                         .vmux = 6,
2506                         .amux = LINE1,
2507                 }},
2508                 .radio = {
2509                         .name = name_radio,
2510                         .amux = LINE2,
2511                 },
2512         },
2513         [SAA7134_BOARD_ASUSTEK_DIGIMATRIX_TV] = {
2514                 /* "Cyril Lacoux (Yack)" <clacoux@ifeelgood.org> */
2515                 .name           = "ASUS Digimatrix TV",
2516                 .audio_clock    = 0x00200000,
2517                 .tuner_type     = TUNER_PHILIPS_FQ1216ME,
2518                 .tda9887_conf   = TDA9887_PRESENT,
2519                 .radio_type     = UNSET,
2520                 .tuner_addr     = ADDR_UNSET,
2521                 .radio_addr     = ADDR_UNSET,
2522                 .inputs         = {{
2523                         .name = name_tv,
2524                         .vmux = 1,
2525                         .amux = TV,
2526                         .tv   = 1,
2527                 },{
2528                         .name = name_comp1,
2529                         .vmux = 3,
2530                         .amux = LINE1,
2531                 },{
2532                         .name = name_svideo,
2533                         .vmux = 8,
2534                         .amux = LINE1,
2535                 }},
2536         },
2537         [SAA7134_BOARD_PHILIPS_TIGER] = {
2538                 .name           = "Philips Tiger reference design",
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                 .mpeg           = SAA7134_MPEG_DVB,
2545                 .gpiomask       = 1 << 21,
2546                 .inputs = {{
2547                         .name   = name_tv,
2548                         .vmux   = 1,
2549                         .amux   = TV,
2550                         .tv     = 1,
2551                 },{
2552                         .name   = name_comp1,
2553                         .vmux   = 3,
2554                         .amux   = LINE1,
2555                 },{
2556                         .name   = name_svideo,
2557                         .vmux   = 8,
2558                         .amux   = LINE1,
2559                 }},
2560                 .radio = {
2561                         .name   = name_radio,
2562                         .amux   = TV,
2563                         .gpio   = 0x0200000,
2564                 },
2565         },
2566         [SAA7134_BOARD_MSI_TVATANYWHERE_PLUS] = {
2567                 .name           = "MSI TV@Anywhere plus",
2568                 .audio_clock    = 0x00187de7,
2569                 .tuner_type     = TUNER_PHILIPS_TDA8290,
2570                 .radio_type     = UNSET,
2571                 .tuner_addr     = ADDR_UNSET,
2572                 .radio_addr     = ADDR_UNSET,
2573                 .gpiomask       = 1 << 21,
2574                 .inputs = {{
2575                         .name   = name_tv,
2576                         .vmux   = 1,
2577                         .amux   = TV,
2578                         .tv     = 1,
2579                 },{
2580                         .name   = name_comp1,
2581                         .vmux   = 3,
2582                         .amux   = LINE2,        /* unconfirmed, taken from Philips driver */
2583                 },{
2584                         .name   = name_comp2,
2585                         .vmux   = 0,            /* untested, Composite over S-Video */
2586                         .amux   = LINE2,
2587                 },{
2588                         .name   = name_svideo,
2589                         .vmux   = 8,
2590                         .amux   = LINE2,
2591                 }},
2592                 .radio = {
2593                         .name   = name_radio,
2594                         .amux   = TV,
2595                         .gpio   = 0x0200000,
2596                 },
2597         },
2598         [SAA7134_BOARD_CINERGY250PCI] = {
2599                 /* remote-control does not work. The signal about a
2600                    key press comes in via gpio, but the key code
2601                    doesn't. Neither does it have an i2c remote control
2602                    interface. */
2603                 .name           = "Terratec Cinergy 250 PCI TV",
2604                 .audio_clock    = 0x00187de7,
2605                 .tuner_type     = TUNER_PHILIPS_TDA8290,
2606                 .radio_type     = UNSET,
2607                 .tuner_addr     = ADDR_UNSET,
2608                 .radio_addr     = ADDR_UNSET,
2609                 .gpiomask       = 0x80200000,
2610                 .inputs         = {{
2611                         .name = name_tv,
2612                         .vmux = 1,
2613                         .amux = TV,
2614                         .tv   = 1,
2615                 },{
2616                         .name = name_svideo,  /* NOT tested */
2617                         .vmux = 8,
2618                         .amux = LINE1,
2619                 }},
2620                 .radio = {
2621                         .name   = name_radio,
2622                         .amux   = LINE1,
2623                         .gpio   = 0x0200000,
2624                 },
2625         },
2626         [SAA7134_BOARD_FLYDVB_TRIO] = {
2627                 /* LifeView LR319 FlyDVB Trio */
2628                 /* Peter Missel <peter.missel@onlinehome.de> */
2629                 .name           = "LifeView FlyDVB Trio",
2630                 .audio_clock    = 0x00200000,
2631                 .tuner_type     = TUNER_PHILIPS_TDA8290,
2632                 .radio_type     = UNSET,
2633                 .tuner_addr     = ADDR_UNSET,
2634                 .radio_addr     = ADDR_UNSET,
2635                 .gpiomask       = 0x00200000,
2636                 .mpeg           = SAA7134_MPEG_DVB,
2637                 .inputs         = {{
2638                         .name = name_tv,        /* Analog broadcast/cable TV */
2639                         .vmux = 1,
2640                         .amux = TV,
2641                         .gpio = 0x200000,       /* GPIO21=High for TV input */
2642                         .tv   = 1,
2643                 },{
2644                         .name = name_svideo,    /* S-Video signal on S-Video input */
2645                         .vmux = 8,
2646                         .amux = LINE2,
2647                 },{
2648                         .name = name_comp1,     /* Composite signal on S-Video input */
2649                         .vmux = 0,
2650                         .amux = LINE2,
2651                 },{
2652                         .name = name_comp2,     /* Composite input */
2653                         .vmux = 3,
2654                         .amux = LINE2,
2655                 }},
2656                 .radio = {
2657                         .name = name_radio,
2658                         .amux = TV,
2659                         .gpio = 0x000000,       /* GPIO21=Low for FM radio antenna */
2660                 },
2661         },
2662         [SAA7134_BOARD_AVERMEDIA_777] = {
2663                 .name           = "AverTV DVB-T 777",
2664                 .audio_clock    = 0x00187de7,
2665                 .tuner_type     = TUNER_ABSENT,
2666                 .radio_type     = UNSET,
2667                 .tuner_addr     = ADDR_UNSET,
2668                 .radio_addr     = ADDR_UNSET,
2669                 .mpeg           = SAA7134_MPEG_DVB,
2670                 .inputs = {{
2671                         .name   = name_comp1,
2672                         .vmux   = 1,
2673                         .amux   = LINE1,
2674                 },{
2675                         .name   = name_svideo,
2676                         .vmux   = 8,
2677                         .amux   = LINE1,
2678                 }},
2679         },
2680         [SAA7134_BOARD_FLYDVBT_LR301] = {
2681                 /* LifeView FlyDVB-T */
2682                 /* Giampiero Giancipoli <gianci@libero.it> */
2683                 .name           = "LifeView FlyDVB-T / Genius VideoWonder DVB-T",
2684                 .audio_clock    = 0x00200000,
2685                 .tuner_type     = TUNER_ABSENT,
2686                 .radio_type     = UNSET,
2687                 .tuner_addr     = ADDR_UNSET,
2688                 .radio_addr     = ADDR_UNSET,
2689                 .mpeg           = SAA7134_MPEG_DVB,
2690                 .inputs         = {{
2691                         .name = name_comp1,     /* Composite input */
2692                         .vmux = 3,
2693                         .amux = LINE2,
2694                 },{
2695                         .name = name_svideo,    /* S-Video signal on S-Video input */
2696                         .vmux = 8,
2697                         .amux = LINE2,
2698                 }},
2699         },
2700         [SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331] = {
2701                 .name           = "ADS Instant TV Duo Cardbus PTV331",
2702                 .audio_clock    = 0x00200000,
2703                 .tuner_type     = TUNER_PHILIPS_TDA8290,
2704                 .radio_type     = UNSET,
2705                 .tuner_addr     = ADDR_UNSET,
2706                 .radio_addr     = ADDR_UNSET,
2707                 .mpeg           = SAA7134_MPEG_DVB,
2708                 .gpiomask       = 0x00600000, /* Bit 21 0=Radio, Bit 22 0=TV */
2709                 .inputs = {{
2710                         .name   = name_tv,
2711                         .vmux   = 1,
2712                         .amux   = TV,
2713                         .tv     = 1,
2714                         .gpio   = 0x00200000,
2715                 }},
2716         },
2717         [SAA7134_BOARD_TEVION_DVBT_220RF] = {
2718                 .name           = "Tevion/KWorld DVB-T 220RF",
2719                 .audio_clock    = 0x00187de7,
2720                 .tuner_type     = TUNER_PHILIPS_TDA8290,
2721                 .radio_type     = UNSET,
2722                 .tuner_addr     = ADDR_UNSET,
2723                 .radio_addr     = ADDR_UNSET,
2724                 .mpeg           = SAA7134_MPEG_DVB,
2725                 .inputs = {{
2726                         .name   = name_tv,
2727                         .vmux   = 1,
2728                         .amux   = TV,
2729                         .tv     = 1,
2730                 },{
2731                         .name   = name_comp1,
2732                         .vmux   = 3,
2733                         .amux   = LINE1,
2734                 },{
2735                         .name   = name_svideo,
2736                         .vmux   = 0,
2737                         .amux   = LINE1,
2738                 }},
2739                 .radio = {
2740                         .name   = name_radio,
2741                         .amux   = LINE1,
2742                 },
2743         },
2744         [SAA7134_BOARD_KWORLD_ATSC110] = {
2745                 .name           = "Kworld ATSC110",
2746                 .audio_clock    = 0x00187de7,
2747                 .tuner_type     = TUNER_PHILIPS_TUV1236D,
2748                 .radio_type     = UNSET,
2749                 .tuner_addr     = ADDR_UNSET,
2750                 .radio_addr     = ADDR_UNSET,
2751                 .tda9887_conf   = TDA9887_PRESENT,
2752                 .mpeg           = SAA7134_MPEG_DVB,
2753                 .inputs         = {{
2754                         .name = name_tv,
2755                         .vmux = 1,
2756                         .amux = TV,
2757                         .tv   = 1,
2758                 },{
2759                         .name = name_comp1,
2760                         .vmux = 3,
2761                         .amux = LINE2,
2762                 },{
2763                         .name = name_svideo,
2764                         .vmux = 8,
2765                         .amux = LINE2,
2766                 }},
2767         },
2768         [SAA7134_BOARD_AVERMEDIA_A169_B] = {
2769                 /* AVerMedia A169  */
2770                 /* Rickard Osser <ricky@osser.se>  */
2771                 /* This card has two saa7134 chips on it,
2772                    but only one of them is currently working. */
2773                 .name           = "AVerMedia A169 B",
2774                 .audio_clock    = 0x02187de7,
2775                 .tuner_type     = TUNER_LG_TALN,
2776                 .radio_type     = UNSET,
2777                 .tuner_addr     = ADDR_UNSET,
2778                 .radio_addr     = ADDR_UNSET,
2779                 .tda9887_conf   = TDA9887_PRESENT,
2780                 .gpiomask       = 0x0a60000,
2781         },
2782         [SAA7134_BOARD_AVERMEDIA_A169_B1] = {
2783                 /* AVerMedia A169 */
2784                 /* Rickard Osser <ricky@osser.se> */
2785                 .name           = "AVerMedia A169 B1",
2786                 .audio_clock    = 0x02187de7,
2787                 .tuner_type     = TUNER_LG_TALN,
2788                 .radio_type     = UNSET,
2789                 .tuner_addr     = ADDR_UNSET,
2790                 .radio_addr     = ADDR_UNSET,
2791                 .tda9887_conf   = TDA9887_PRESENT,
2792                 .gpiomask       = 0xca60000,
2793                 .inputs         = {{
2794                         .name = name_tv,
2795                         .vmux = 4,
2796                         .amux = TV,
2797                         .tv   = 1,
2798                         .gpio = 0x04a61000,
2799                 },{
2800                         .name = name_comp2,  /*  Composite SVIDEO (B/W if signal is carried with SVIDEO) */
2801                         .vmux = 1,
2802                         .amux = LINE2,
2803                 },{
2804                         .name = name_svideo,
2805                         .vmux = 9,           /* 9 is correct as S-VIDEO1 according to a169.inf! */
2806                         .amux = LINE1,
2807                 }},
2808         },
2809         [SAA7134_BOARD_MD7134_BRIDGE_2] = {
2810                 /* This card has two saa7134 chips on it,
2811                    but only one of them is currently working.
2812                    The programming for the primary decoder is
2813                    in SAA7134_BOARD_MD7134 */
2814                 .name           = "Medion 7134 Bridge #2",
2815                 .audio_clock    = 0x00187de7,
2816                 .radio_type     = UNSET,
2817                 .tuner_addr     = ADDR_UNSET,
2818                 .radio_addr     = ADDR_UNSET,
2819         },
2820         [SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS] = {
2821                 .name           = "LifeView FlyDVB-T Hybrid Cardbus",
2822                 .audio_clock    = 0x00200000,
2823                 .tuner_type     = TUNER_PHILIPS_TDA8290,
2824                 .radio_type     = UNSET,
2825                 .tuner_addr     = ADDR_UNSET,
2826                 .radio_addr     = ADDR_UNSET,
2827                 .mpeg           = SAA7134_MPEG_DVB,
2828                 .gpiomask       = 0x00600000, /* Bit 21 0=Radio, Bit 22 0=TV */
2829                 .inputs         = {{
2830                         .name = name_tv,
2831                         .vmux = 1,
2832                         .amux = TV,
2833                         .gpio = 0x200000,       /* GPIO21=High for TV input */
2834                         .tv   = 1,
2835                 },{
2836                         .name = name_svideo,    /* S-Video signal on S-Video input */
2837                         .vmux = 8,
2838                         .amux = LINE2,
2839                 },{
2840                         .name = name_comp1,     /* Composite signal on S-Video input */
2841                         .vmux = 0,
2842                         .amux = LINE2,
2843                 },{
2844                         .name = name_comp2,     /* Composite input */
2845                         .vmux = 3,
2846                         .amux = LINE2,
2847                 }},
2848                 .radio = {
2849                         .name = name_radio,
2850                         .amux = TV,
2851                         .gpio = 0x000000,       /* GPIO21=Low for FM radio antenna */
2852                 },
2853         },
2854         [SAA7134_BOARD_FLYVIDEO3000_NTSC] = {
2855                 /* "Zac Bowling" <zac@zacbowling.com> */
2856                 .name           = "LifeView FlyVIDEO3000 (NTSC)",
2857                 .audio_clock    = 0x00200000,
2858                 .tuner_type     = TUNER_PHILIPS_NTSC,
2859                 .radio_type     = UNSET,
2860                 .tuner_addr     = ADDR_UNSET,
2861                 .radio_addr     = ADDR_UNSET,
2862
2863                 .gpiomask       = 0xe000,
2864                 .inputs         = {{
2865                         .name = name_tv,
2866                         .vmux = 1,
2867                         .amux = TV,
2868                         .gpio = 0x8000,
2869                         .tv   = 1,
2870                 },{
2871                         .name = name_tv_mono,
2872                         .vmux = 1,
2873                         .amux = LINE2,
2874                         .gpio = 0x0000,
2875                         .tv   = 1,
2876                 },{
2877                         .name = name_comp1,
2878                         .vmux = 0,
2879                         .amux = LINE2,
2880                         .gpio = 0x4000,
2881                 },{
2882                         .name = name_comp2,
2883                         .vmux = 3,
2884                         .amux = LINE2,
2885                         .gpio = 0x4000,
2886                 },{
2887                         .name = name_svideo,
2888                         .vmux = 8,
2889                         .amux = LINE2,
2890                         .gpio = 0x4000,
2891                 }},
2892                 .radio = {
2893                         .name = name_radio,
2894                         .amux = LINE2,
2895                         .gpio = 0x2000,
2896                 },
2897                         .mute = {
2898                         .name = name_mute,
2899                         .amux = TV,
2900                         .gpio = 0x8000,
2901                 },
2902         },
2903         [SAA7134_BOARD_MEDION_MD8800_QUADRO] = {
2904                 .name           = "Medion Md8800 Quadro",
2905                 .audio_clock    = 0x00187de7,
2906                 .tuner_type     = TUNER_PHILIPS_TDA8290,
2907                 .radio_type     = UNSET,
2908                 .tuner_addr     = ADDR_UNSET,
2909                 .radio_addr     = ADDR_UNSET,
2910                 .mpeg           = SAA7134_MPEG_DVB,
2911                 .inputs = {{
2912                         .name   = name_tv,
2913                         .vmux   = 1,
2914                         .amux   = TV,
2915                         .tv     = 1,
2916                 },{
2917                         .name   = name_comp1,
2918                         .vmux   = 0,
2919                         .amux   = LINE2,
2920                 },{
2921                         .name   = name_svideo,
2922                         .vmux   = 8,
2923                         .amux   = LINE2,
2924                 }},
2925         },
2926         [SAA7134_BOARD_FLYDVBS_LR300] = {
2927                 /* LifeView FlyDVB-s */
2928                 /* Igor M. Liplianin <liplianin@tut.by> */
2929                 .name           = "LifeView FlyDVB-S /Acorp TV134DS",
2930                 .audio_clock    = 0x00200000,
2931                 .tuner_type     = TUNER_ABSENT,
2932                 .radio_type     = UNSET,
2933                 .tuner_addr     = ADDR_UNSET,
2934                 .radio_addr     = ADDR_UNSET,
2935                 .mpeg           = SAA7134_MPEG_DVB,
2936                 .inputs         = {{
2937                         .name = name_comp1,     /* Composite input */
2938                         .vmux = 3,
2939                         .amux = LINE1,
2940                 },{
2941                         .name = name_svideo,    /* S-Video signal on S-Video input */
2942                         .vmux = 8,
2943                         .amux = LINE1,
2944                 }},
2945         },
2946         [SAA7134_BOARD_PROTEUS_2309] = {
2947                 .name           = "Proteus Pro 2309",
2948                 .audio_clock    = 0x00187de7,
2949                 .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
2950                 .radio_type     = UNSET,
2951                 .tuner_addr     = ADDR_UNSET,
2952                 .radio_addr     = ADDR_UNSET,
2953                 .tda9887_conf   = TDA9887_PRESENT,
2954                 .inputs         = {{
2955                         .name = name_tv,
2956                         .vmux = 1,
2957                         .amux = LINE2,
2958                         .tv   = 1,
2959                 },{
2960                         .name = name_comp1,
2961                         .vmux = 0,
2962                         .amux = LINE2,
2963                 },{
2964                         .name = name_comp2,
2965                         .vmux = 3,
2966                         .amux = LINE2,
2967                 },{
2968                         .name = name_svideo,
2969                         .vmux = 8,
2970                         .amux = LINE2,
2971                 }},
2972                 .mute = {
2973                         .name = name_mute,
2974                         .amux = LINE1,
2975                 },
2976         },
2977         [SAA7134_BOARD_AVERMEDIA_A16AR] = {
2978                 /* Petr Baudis <pasky@ucw.cz> */
2979                 .name           = "AVerMedia TV Hybrid A16AR",
2980                 .audio_clock    = 0x187de7,
2981                 .tuner_type     = TUNER_PHILIPS_TD1316, /* untested */
2982                 .radio_type     = TUNER_TEA5767, /* untested */
2983                 .tuner_addr     = ADDR_UNSET,
2984                 .radio_addr     = ADDR_UNSET,
2985                 .tda9887_conf   = TDA9887_PRESENT,
2986                 .mpeg           = SAA7134_MPEG_DVB,
2987                 .inputs         = {{
2988                         .name = name_tv,
2989                         .vmux = 1,
2990                         .amux = TV,
2991                         .tv   = 1,
2992                 },{
2993                         .name = name_comp1,
2994                         .vmux = 3,
2995                         .amux = LINE2,
2996                 },{
2997                         .name = name_svideo,
2998                         .vmux = 8,
2999                         .amux = LINE1,
3000                 }},
3001                 .radio = {
3002                         .name = name_radio,
3003                         .amux = LINE1,
3004                 },
3005         },
3006         [SAA7134_BOARD_ASUS_EUROPA2_HYBRID] = {
3007                 .name           = "Asus Europa2 OEM",
3008                 .audio_clock    = 0x00187de7,
3009                 .tuner_type     = TUNER_PHILIPS_FMD1216ME_MK3,
3010                 .radio_type     = UNSET,
3011                 .tuner_addr     = ADDR_UNSET,
3012                 .radio_addr     = ADDR_UNSET,
3013                 .tda9887_conf   = TDA9887_PRESENT| TDA9887_PORT1_ACTIVE | TDA9887_PORT2_ACTIVE,
3014                 .mpeg           = SAA7134_MPEG_DVB,
3015                 .inputs = {{
3016                         .name   = name_tv,
3017                         .vmux   = 3,
3018                         .amux   = TV,
3019                         .tv     = 1,
3020                 },{
3021                         .name   = name_comp1,
3022                         .vmux   = 4,
3023                         .amux   = LINE2,
3024                 },{
3025                         .name   = name_svideo,
3026                         .vmux   = 8,
3027                         .amux   = LINE2,
3028                 }},
3029                 .radio = {
3030                         .name   = name_radio,
3031                         .amux   = LINE1,
3032                 },
3033         },
3034         [SAA7134_BOARD_PINNACLE_PCTV_310i] = {
3035                 .name           = "Pinnacle PCTV 310i",
3036                 .audio_clock    = 0x00187de7,
3037                 .tuner_type     = TUNER_PHILIPS_TDA8290,
3038                 .radio_type     = UNSET,
3039                 .tuner_addr     = ADDR_UNSET,
3040                 .radio_addr     = ADDR_UNSET,
3041                 .mpeg           = SAA7134_MPEG_DVB,
3042                 .gpiomask       = 0x000200000,
3043                 .inputs         = {{
3044                         .name = name_tv,
3045                         .vmux = 4,
3046                         .amux = TV,
3047                         .tv   = 1,
3048                 },{
3049                         .name = name_comp1,
3050                         .vmux = 1,
3051                         .amux = LINE2,
3052                 },{
3053                         .name = name_comp2,
3054                         .vmux = 0,
3055                         .amux = LINE2,
3056                 },{
3057                         .name = name_svideo,
3058                         .vmux = 8,
3059                         .amux = LINE2,
3060                 }},
3061                 .radio = {
3062                         .name = name_radio,
3063                         .amux   = TV,
3064                         .gpio   = 0x0200000,
3065                 },
3066         },
3067         [SAA7134_BOARD_AVERMEDIA_STUDIO_507] = {
3068                 /* Mikhail Fedotov <mo_fedotov@mail.ru> */
3069                 .name           = "Avermedia AVerTV Studio 507",
3070                 .audio_clock    = 0x00187de7,
3071                 .tuner_type     = TUNER_PHILIPS_FM1256_IH3,
3072                 .radio_type     = UNSET,
3073                 .tuner_addr     = ADDR_UNSET,
3074                 .radio_addr     = ADDR_UNSET,
3075                 .tda9887_conf   = TDA9887_PRESENT,
3076                 .gpiomask       = 0x03,
3077                 .inputs         = {{
3078                         .name = name_tv,
3079                         .vmux = 1,
3080                         .amux = TV,
3081                         .tv   = 1,
3082                         .gpio = 0x00,
3083                 },{
3084                         .name = name_comp1,
3085                         .vmux = 0,
3086                         .amux = LINE2,
3087                         .gpio = 0x00,
3088                 },{
3089                         .name = name_comp2,
3090                         .vmux = 3,
3091                         .amux = LINE2,
3092                         .gpio = 0x00,
3093                 },{
3094                         .name = name_svideo,
3095                         .vmux = 8,
3096                         .amux = LINE2,
3097                         .gpio = 0x00,
3098                 }},
3099                 .radio = {
3100                         .name = name_radio,
3101                         .amux = LINE2,
3102                         .gpio = 0x01,
3103                 },
3104                 .mute  = {
3105                         .name = name_mute,
3106                         .amux = LINE1,
3107                         .gpio = 0x00,
3108                 },
3109         },
3110         [SAA7134_BOARD_VIDEOMATE_DVBT_200A] = {
3111                 /* Francis Barber <fedora@barber-family.id.au> */
3112                 .name           = "Compro Videomate DVB-T200A",
3113                 .audio_clock    = 0x00187de7,
3114                 .tuner_type     = TUNER_ABSENT,
3115                 .radio_type     = UNSET,
3116                 .tuner_addr     = ADDR_UNSET,
3117                 .radio_addr     = ADDR_UNSET,
3118                 .tda9887_conf   = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE,
3119                 .mpeg           = SAA7134_MPEG_DVB,
3120                 .inputs = {{
3121                         .name   = name_tv,
3122                         .vmux   = 3,
3123                         .amux   = TV,
3124                         .tv     = 1,
3125                 },{
3126                         .name   = name_comp1,
3127                         .vmux   = 1,
3128                         .amux   = LINE2,
3129                 },{
3130                         .name   = name_svideo,
3131                         .vmux   = 8,
3132                         .amux   = LINE2,
3133                 }},
3134         },
3135         [SAA7134_BOARD_HAUPPAUGE_HVR1110] = {
3136                 /* Thomas Genty <tomlohave@gmail.com> */
3137                 .name           = "Hauppauge WinTV-HVR1110 DVB-T/Hybrid",
3138                 .audio_clock    = 0x00187de7,
3139                 .tuner_type     = TUNER_PHILIPS_TDA8290,
3140                 .radio_type     = UNSET,
3141                 .tuner_addr     = ADDR_UNSET,
3142                 .radio_addr     = ADDR_UNSET,
3143                 .mpeg           = SAA7134_MPEG_DVB,
3144                 .inputs         = {{
3145                         .name = name_tv,
3146                         .vmux = 1,
3147                         .amux = TV,
3148                         .tv   = 1,
3149                 },{
3150                         .name   = name_comp1,
3151                         .vmux   = 3,
3152                         .amux   = LINE2, /* FIXME: audio doesn't work on svideo/composite */
3153                 },{
3154                         .name   = name_svideo,
3155                         .vmux   = 8,
3156                         .amux   = LINE2, /* FIXME: audio doesn't work on svideo/composite */
3157                 }},
3158                 .radio = {
3159                         .name = name_radio,
3160                         .amux   = TV,
3161                 },
3162         },
3163         [SAA7134_BOARD_CINERGY_HT_PCMCIA] = {
3164                 .name           = "Terratec Cinergy HT PCMCIA",
3165                 .audio_clock    = 0x00187de7,
3166                 .tuner_type     = TUNER_PHILIPS_TDA8290,
3167                 .radio_type     = UNSET,
3168                 .tuner_addr     = ADDR_UNSET,
3169                 .radio_addr     = ADDR_UNSET,
3170                 .mpeg           = SAA7134_MPEG_DVB,
3171                 .inputs = {{
3172                         .name   = name_tv,
3173                         .vmux   = 1,
3174                         .amux   = TV,
3175                         .tv     = 1,
3176                 },{
3177                         .name   = name_comp1,
3178                         .vmux   = 0,
3179                         .amux   = LINE1,
3180                 },{
3181                         .name   = name_svideo,
3182                         .vmux   = 6,
3183                         .amux   = LINE1,
3184                 }},
3185         },
3186 };
3187
3188 const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards);
3189
3190 /* ------------------------------------------------------------------ */
3191 /* PCI ids + subsystem IDs                                            */
3192
3193 struct pci_device_id saa7134_pci_tbl[] = {
3194         {
3195                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3196                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3197                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
3198                 .subdevice    = 0x2001,
3199                 .driver_data  = SAA7134_BOARD_PROTEUS_PRO,
3200         },{
3201                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3202                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3203                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
3204                 .subdevice    = 0x2001,
3205                 .driver_data  = SAA7134_BOARD_PROTEUS_PRO,
3206         },{
3207                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3208                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3209                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
3210                 .subdevice    = 0x6752,
3211                 .driver_data  = SAA7134_BOARD_EMPRESS,
3212         },{
3213                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3214                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3215                 .subvendor    = 0x1131,
3216                 .subdevice    = 0x4e85,
3217                 .driver_data  = SAA7134_BOARD_MONSTERTV,
3218         },{
3219                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3220                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3221                 .subvendor    = 0x153b,
3222                 .subdevice    = 0x1142,
3223                 .driver_data  = SAA7134_BOARD_CINERGY400,
3224         },{
3225                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3226                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3227                 .subvendor    = 0x153b,
3228                 .subdevice    = 0x1143,
3229                 .driver_data  = SAA7134_BOARD_CINERGY600,
3230         },{
3231                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3232                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3233                 .subvendor    = 0x153b,
3234                 .subdevice    = 0x1158,
3235                 .driver_data  = SAA7134_BOARD_CINERGY600_MK3,
3236         },{
3237                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3238                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3239                 .subvendor    = 0x153b,
3240                 .subdevice    = 0x1162,
3241                 .driver_data  = SAA7134_BOARD_CINERGY400_CARDBUS,
3242         },{
3243                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3244                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3245                 .subvendor    = 0x5169,
3246                 .subdevice    = 0x0138,
3247                 .driver_data  = SAA7134_BOARD_FLYVIDEO3000_NTSC,
3248         },{
3249                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3250                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3251                 .subvendor    = 0x5168,
3252                 .subdevice    = 0x0138,
3253                 .driver_data  = SAA7134_BOARD_FLYVIDEO3000,
3254         },{
3255                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3256                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3257                 .subvendor    = 0x4e42,                         /* "Typhoon PCI Capture TV Card" Art.No. 50673 */
3258                 .subdevice    = 0x0138,
3259                 .driver_data  = SAA7134_BOARD_FLYVIDEO3000,
3260         },{
3261                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3262                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
3263                 .subvendor    = 0x5168,
3264                 .subdevice    = 0x0138,
3265                 .driver_data  = SAA7134_BOARD_FLYVIDEO2000,
3266         },{
3267                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3268                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
3269                 .subvendor    = 0x4e42,         /* Typhoon */
3270                 .subdevice    = 0x0138,         /* LifeView FlyTV Prime30 OEM */
3271                 .driver_data  = SAA7134_BOARD_FLYVIDEO2000,
3272         },{
3273                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3274                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3275                 .subvendor    = 0x5168,
3276                 .subdevice    = 0x0212, /* minipci, LR212 */
3277                 .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_MINI,
3278         },{
3279                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3280                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3281                 .subvendor    = 0x14c0,
3282                 .subdevice    = 0x1212, /* minipci, LR1212 */
3283                 .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_MINI2,
3284         },{
3285                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3286                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3287                 .subvendor    = 0x4e42,
3288                 .subdevice    = 0x0212, /* OEM minipci, LR212 */
3289                 .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_MINI,
3290         },{
3291                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3292                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3293                 .subvendor    = 0x5168, /* Animation Technologies (LifeView) */
3294                 .subdevice    = 0x0214, /* Standard PCI, LR214WF */
3295                 .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_FM,
3296         },{
3297                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3298                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3299                 .subvendor    = 0x1489, /* KYE */
3300                 .subdevice    = 0x0214, /* Genius VideoWonder ProTV */
3301                 .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_FM, /* is an LR214WF actually */
3302         },{
3303                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3304                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3305                 .subvendor    = 0x16be,
3306                 .subdevice    = 0x0003,
3307                 .driver_data  = SAA7134_BOARD_MD7134,
3308         },{
3309                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3310                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
3311                 .subvendor    = 0x1048,
3312                 .subdevice    = 0x226b,
3313                 .driver_data  = SAA7134_BOARD_ELSA,
3314         },{
3315                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3316                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
3317                 .subvendor    = 0x1048,
3318                 .subdevice    = 0x226a,
3319                 .driver_data  = SAA7134_BOARD_ELSA_500TV,
3320         },{
3321                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3322                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
3323                 .subvendor    = 0x1048,
3324                 .subdevice    = 0x226c,
3325                 .driver_data  = SAA7134_BOARD_ELSA_700TV,
3326         },{
3327                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3328                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3329                 .subvendor    = PCI_VENDOR_ID_ASUSTEK,
3330                 .subdevice    = 0x4842,
3331                 .driver_data  = SAA7134_BOARD_ASUSTeK_TVFM7134,
3332         },{
3333                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3334                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3335                 .subvendor    = PCI_VENDOR_ID_ASUSTEK,
3336                 .subdevice    = 0x4845,
3337                 .driver_data  = SAA7134_BOARD_ASUSTeK_TVFM7135,
3338         },{
3339                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3340                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3341                 .subvendor    = PCI_VENDOR_ID_ASUSTEK,
3342                 .subdevice    = 0x4830,
3343                 .driver_data  = SAA7134_BOARD_ASUSTeK_TVFM7134,
3344         },{
3345                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3346                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3347                 .subvendor    = PCI_VENDOR_ID_ASUSTEK,
3348                 .subdevice    = 0x4843,
3349                 .driver_data  = SAA7134_BOARD_ASUSTEK_TVFM7133,
3350         },{
3351                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3352                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3353                 .subvendor    = PCI_VENDOR_ID_ASUSTEK,
3354                 .subdevice    = 0x4840,
3355                 .driver_data  = SAA7134_BOARD_ASUSTeK_TVFM7134,
3356         },{
3357                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3358                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3359                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
3360                 .subdevice    = 0xfe01,
3361                 .driver_data  = SAA7134_BOARD_TVSTATION_RDS,
3362         },{
3363                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3364                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3365                 .subvendor    = 0x1894,
3366                 .subdevice    = 0xfe01,
3367                 .driver_data  = SAA7134_BOARD_TVSTATION_RDS,
3368         },{
3369                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3370                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3371                 .subvendor    = 0x1894,
3372                 .subdevice    = 0xa006,
3373                 .driver_data  = SAA7134_BOARD_TVSTATION_DVR,
3374         },{
3375                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3376                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3377                 .subvendor    = 0x1131,
3378                 .subdevice    = 0x7133,
3379                 .driver_data  = SAA7134_BOARD_VA1000POWER,
3380         },{
3381                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3382                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
3383                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
3384                 .subdevice    = 0x2001,
3385                 .driver_data  = SAA7134_BOARD_10MOONSTVMASTER,
3386         },{
3387                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3388                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3389                 .subvendor    = 0x185b,
3390                 .subdevice    = 0xc100,
3391                 .driver_data  = SAA7134_BOARD_VIDEOMATE_TV,
3392         },{
3393                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3394                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3395                 .subvendor    = 0x185b,
3396                 .subdevice    = 0xc100,
3397                 .driver_data  = SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUS,
3398         },{
3399                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3400                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
3401                 .subvendor    = PCI_VENDOR_ID_MATROX,
3402                 .subdevice    = 0x48d0,
3403                 .driver_data  = SAA7134_BOARD_CRONOS_PLUS,
3404         },{
3405                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3406                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3407                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
3408                 .subdevice    = 0xa70b,
3409                 .driver_data  = SAA7134_BOARD_MD2819,
3410         },{
3411                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3412                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
3413                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
3414                 .subdevice    = 0x2115,
3415                 .driver_data  = SAA7134_BOARD_AVERMEDIA_STUDIO_305,
3416         },{
3417                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3418                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
3419                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
3420                 .subdevice    = 0x2108,
3421                 .driver_data  = SAA7134_BOARD_AVERMEDIA_305,
3422         },{
3423                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3424                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
3425                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
3426                 .subdevice    = 0x10ff,
3427                 .driver_data  = SAA7134_BOARD_AVERMEDIA_DVD_EZMAKER,
3428         },{
3429                 /* AVerMedia CardBus */
3430                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3431                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3432                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
3433                 .subdevice    = 0xd6ee,
3434                 .driver_data  = SAA7134_BOARD_AVERMEDIA_CARDBUS,
3435         },{
3436                 /* TransGear 3000TV */
3437                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3438                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
3439                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
3440                 .subdevice    = 0x050c,
3441                 .driver_data  = SAA7134_BOARD_TG3000TV,
3442         },{
3443                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3444                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3445                 .subvendor    = 0x11bd,
3446                 .subdevice    = 0x002b,
3447                 .driver_data  = SAA7134_BOARD_PINNACLE_PCTV_STEREO,
3448         },{
3449                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3450                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3451                 .subvendor    = 0x11bd,
3452                 .subdevice    = 0x002d,
3453                 .driver_data  = SAA7134_BOARD_PINNACLE_300I_DVBT_PAL,
3454         },{
3455                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3456                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3457                 .subvendor    = 0x1019,
3458                 .subdevice    = 0x4cb4,
3459                 .driver_data  = SAA7134_BOARD_ECS_TVP3XP,
3460         },{
3461                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3462                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3463                 .subvendor    = 0x1019,
3464                 .subdevice    = 0x4cb5,
3465                 .driver_data  = SAA7134_BOARD_ECS_TVP3XP_4CB5,
3466         },{
3467                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3468                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3469                 .subvendor    = 0x12ab,
3470                 .subdevice    = 0x0800,
3471                 .driver_data  = SAA7134_BOARD_UPMOST_PURPLE_TV,
3472         },{
3473                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3474                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
3475                 .subvendor    = 0x153b,
3476                 .subdevice    = 0x1152,
3477                 .driver_data  = SAA7134_BOARD_CINERGY200,
3478         },{
3479                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3480                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
3481                 .subvendor    = 0x185b,
3482                 .subdevice    = 0xc100,
3483                 .driver_data  = SAA7134_BOARD_VIDEOMATE_TV_PVR,
3484         },{
3485                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3486                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3487                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
3488                 .subdevice    = 0x9715,
3489                 .driver_data  = SAA7134_BOARD_AVERMEDIA_STUDIO_307,
3490         },{
3491                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3492                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3493                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
3494                 .subdevice    = 0xa70a,
3495                 .driver_data  = SAA7134_BOARD_AVERMEDIA_307,
3496         },{
3497                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3498                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3499                 .subvendor    = 0x185b,
3500                 .subdevice    = 0xc200,
3501                 .driver_data  = SAA7134_BOARD_VIDEOMATE_GOLD_PLUS,
3502         },{
3503                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3504                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3505                 .subvendor    = 0x1540,
3506                 .subdevice    = 0x9524,
3507                 .driver_data  = SAA7134_BOARD_PROVIDEO_PV952,
3508
3509         },{
3510                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3511                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3512                 .subvendor    = 0x5168,
3513                 .subdevice    = 0x0502,                /* Cardbus version */
3514                 .driver_data  = SAA7134_BOARD_FLYDVBT_DUO_CARDBUS,
3515         },{
3516                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3517                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3518                 .subvendor    = 0x5168,
3519                 .subdevice    = 0x0306,                /* PCI version */
3520                 .driver_data  = SAA7134_BOARD_FLYDVBTDUO,
3521         },{
3522                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3523                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3524                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
3525                 .subdevice    = 0xf31f,
3526                 .driver_data  = SAA7134_BOARD_AVERMEDIA_GO_007_FM,
3527
3528         },{
3529                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3530                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
3531                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
3532                 .subdevice    = 0x2004,
3533                 .driver_data  = SAA7134_BOARD_PHILIPS_TOUGH,
3534         },{
3535                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3536                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3537                 .subvendor    = 0x1421,
3538                 .subdevice    = 0x0350,         /* PCI version */
3539                 .driver_data  = SAA7134_BOARD_ADS_INSTANT_TV,
3540         },{
3541                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3542                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3543                 .subvendor    = 0x1421,
3544                 .subdevice    = 0x0351,         /* PCI version, new revision */
3545                 .driver_data  = SAA7134_BOARD_ADS_INSTANT_TV,
3546         },{
3547                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3548                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3549                 .subvendor    = 0x1421,
3550                 .subdevice    = 0x0370,         /* cardbus version */
3551                 .driver_data  = SAA7134_BOARD_ADS_INSTANT_TV,
3552         },{
3553                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3554                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3555                 .subvendor    = 0x1421,
3556                 .subdevice    = 0x1370,        /* cardbus version */
3557                 .driver_data  = SAA7134_BOARD_ADS_INSTANT_TV,
3558
3559         },{
3560                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3561                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3562                 .subvendor    = 0x4e42,         /* Typhoon */
3563                 .subdevice    = 0x0502,         /* LifeView LR502 OEM */
3564                 .driver_data  = SAA7134_BOARD_FLYDVBT_DUO_CARDBUS,
3565         },{
3566                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3567                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3568                 .subvendor    = 0x1043,
3569                 .subdevice    = 0x0210,         /* mini pci NTSC version */
3570                 .driver_data  = SAA7134_BOARD_FLYTV_DIGIMATRIX,
3571         },{
3572                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3573                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3574                 .subvendor    = 0x1043,
3575                 .subdevice    = 0x0210,         /* mini pci PAL/SECAM version */
3576                 .driver_data  = SAA7134_BOARD_ASUSTEK_DIGIMATRIX_TV,
3577
3578         },{
3579                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3580                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3581                 .subvendor    = 0x0000, /* It shouldn't break anything, since subdevice id seems unique */
3582                 .subdevice    = 0x4091,
3583                 .driver_data  = SAA7134_BOARD_BEHOLD_409FM,
3584         },{
3585                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3586                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3587                 .subvendor    = 0x5456, /* GoTView */
3588                 .subdevice    = 0x7135,
3589                 .driver_data  = SAA7134_BOARD_GOTVIEW_7135,
3590         },{
3591                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3592                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3593                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
3594                 .subdevice    = 0x2004,
3595                 .driver_data  = SAA7134_BOARD_PHILIPS_EUROPA,
3596         },{
3597                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3598                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3599                 .subvendor    = 0x185b,
3600                 .subdevice    = 0xc900,
3601                 .driver_data  = SAA7134_BOARD_VIDEOMATE_DVBT_300,
3602         },{
3603                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3604                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
3605                 .subvendor    = 0x185b,
3606                 .subdevice    = 0xc901,
3607                 .driver_data  = SAA7134_BOARD_VIDEOMATE_DVBT_200,
3608         },{
3609                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3610                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3611                 .subvendor    = 0x1435,
3612                 .subdevice    = 0x7350,
3613                 .driver_data  = SAA7134_BOARD_RTD_VFG7350,
3614         },{
3615                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3616                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3617                 .subvendor    = 0x1435,
3618                 .subdevice    = 0x7330,
3619                 .driver_data  = SAA7134_BOARD_RTD_VFG7330,
3620         },{
3621                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3622                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3623                 .subvendor    = 0x1461,
3624                 .subdevice    = 0x1044,
3625                 .driver_data  = SAA7134_BOARD_AVERMEDIA_AVERTVHD_A180,
3626         },{
3627                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3628                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3629                 .subvendor    = 0x1131,
3630                 .subdevice    = 0x4ee9,
3631                 .driver_data  = SAA7134_BOARD_MONSTERTV_MOBILE,
3632         },{
3633                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3634                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3635                 .subvendor    = 0x11bd,
3636                 .subdevice    = 0x002e,
3637                 .driver_data  = SAA7134_BOARD_PINNACLE_PCTV_110i,
3638         },{
3639                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3640                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3641                 .subvendor    = 0x1043,
3642                 .subdevice    = 0x4862,
3643                 .driver_data  = SAA7134_BOARD_ASUSTeK_P7131_DUAL,
3644         },{
3645                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3646                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3647                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
3648                 .subdevice    = 0x2018,
3649                 .driver_data  = SAA7134_BOARD_PHILIPS_TIGER,
3650         },{
3651                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3652                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3653                 .subvendor    = 0x1462,
3654                 .subdevice    = 0x6231,
3655                 .driver_data  = SAA7134_BOARD_MSI_TVATANYWHERE_PLUS,
3656         },{
3657                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3658                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3659                 .subvendor    = 0x153b,
3660                 .subdevice    = 0x1160,
3661                 .driver_data  = SAA7134_BOARD_CINERGY250PCI,
3662         },{
3663                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3664                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,  /* SAA 7131E */
3665                 .subvendor    = 0x5168,
3666                 .subdevice    = 0x0319,
3667                 .driver_data  = SAA7134_BOARD_FLYDVB_TRIO,
3668         },{
3669                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3670                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3671                 .subvendor    = 0x1461,
3672                 .subdevice    = 0x2c05,
3673                 .driver_data  = SAA7134_BOARD_AVERMEDIA_777,
3674         },{
3675                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3676                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3677                 .subvendor    = 0x5168,
3678                 .subdevice    = 0x0301,
3679                 .driver_data  = SAA7134_BOARD_FLYDVBT_LR301,
3680         },{
3681                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3682                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3683                 .subvendor    = 0x0331,
3684                 .subdevice    = 0x1421,
3685                 .driver_data  = SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331,
3686         },{
3687                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3688                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3689                 .subvendor    = 0x17de,
3690                 .subdevice    = 0x7201,
3691                 .driver_data  = SAA7134_BOARD_TEVION_DVBT_220RF,
3692         },{
3693                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3694                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133, /* SAA7135HL */
3695                 .subvendor    = 0x17de,
3696                 .subdevice    = 0x7350,
3697                 .driver_data  = SAA7134_BOARD_KWORLD_ATSC110,
3698         },{
3699                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3700                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3701                 .subvendor    = 0x1461,
3702                 .subdevice    = 0x7360,
3703                 .driver_data  = SAA7134_BOARD_AVERMEDIA_A169_B,
3704         },{
3705                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3706                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3707                 .subvendor    = 0x1461,
3708                 .subdevice    = 0x6360,
3709                 .driver_data  = SAA7134_BOARD_AVERMEDIA_A169_B1,
3710         },{
3711                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3712                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3713                 .subvendor    = 0x16be,
3714                 .subdevice    = 0x0005,
3715                 .driver_data  = SAA7134_BOARD_MD7134_BRIDGE_2,
3716         },{
3717                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3718                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3719                 .subvendor    = 0x5168,
3720                 .subdevice    = 0x0300,
3721                 .driver_data  = SAA7134_BOARD_FLYDVBS_LR300,
3722         },{
3723                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3724                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3725                 .subvendor    = 0x4e42,
3726                 .subdevice    = 0x0300,/* LR300 */
3727                 .driver_data  = SAA7134_BOARD_FLYDVBS_LR300,
3728         },{
3729                 .vendor = PCI_VENDOR_ID_PHILIPS,
3730                 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
3731                 .subvendor = 0x1489,
3732                 .subdevice = 0x0301,
3733                 .driver_data = SAA7134_BOARD_FLYDVBT_LR301,
3734         },{
3735                 .vendor = PCI_VENDOR_ID_PHILIPS,
3736                 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
3737                 .subvendor = 0x5168, /* Animation Technologies (LifeView) */
3738                 .subdevice = 0x0304,
3739                 .driver_data = SAA7134_BOARD_FLYTVPLATINUM_FM,
3740         },{
3741                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3742                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3743                 .subvendor    = 0x5168,
3744                 .subdevice    = 0x3306,
3745                 .driver_data  = SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS,
3746         },{
3747                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3748                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3749                 .subvendor    = 0x5168,
3750                 .subdevice    = 0x3502,  /* whats the difference to 0x3306 ?*/
3751                 .driver_data  = SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS,
3752         },{
3753                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3754                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3755                 .subvendor    = 0x16be,
3756                 .subdevice    = 0x0007,
3757                 .driver_data  = SAA7134_BOARD_MEDION_MD8800_QUADRO,
3758         },{
3759                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3760                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3761                 .subvendor    = 0x16be,
3762                 .subdevice    = 0x0008,
3763                 .driver_data  = SAA7134_BOARD_MEDION_MD8800_QUADRO,
3764         },{
3765                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3766                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3767                 .subvendor    = 0x1461,
3768                 .subdevice    = 0x2c05,
3769                 .driver_data  = SAA7134_BOARD_AVERMEDIA_777,
3770         },{
3771                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3772                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3773                 .subvendor    = 0x1489,
3774                 .subdevice    = 0x0502,                /* Cardbus version */
3775                 .driver_data  = SAA7134_BOARD_FLYDVBT_DUO_CARDBUS,
3776         },{
3777                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3778                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
3779                 .subvendor    = 0x0919, /* Philips Proteus PRO 2309 */
3780                 .subdevice    = 0x2003,
3781                 .driver_data  = SAA7134_BOARD_PROTEUS_2309,
3782         },{
3783                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3784                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3785                 .subvendor    = 0x1461,
3786                 .subdevice    = 0x2c00,
3787                 .driver_data  = SAA7134_BOARD_AVERMEDIA_A16AR,
3788         },{
3789                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3790                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3791                 .subvendor    = 0x1043,
3792                 .subdevice    = 0x4860,
3793                 .driver_data  = SAA7134_BOARD_ASUS_EUROPA2_HYBRID,
3794         },{
3795                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3796                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3797                 .subvendor    = 0x11bd,
3798                 .subdevice    = 0x002f,
3799                 .driver_data  = SAA7134_BOARD_PINNACLE_PCTV_310i,
3800         },{
3801                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3802                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3803                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
3804                 .subdevice    = 0x9715,
3805                 .driver_data  = SAA7134_BOARD_AVERMEDIA_STUDIO_507,
3806         },{
3807                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3808                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3809                 .subvendor    = 0x1043,
3810                 .subdevice    = 0x4876,
3811                 .driver_data  = SAA7134_BOARD_ASUSTeK_P7131_DUAL,
3812         },{
3813                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3814                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3815                 .subvendor    = 0x0070,
3816                 .subdevice    = 0x6701,
3817                 .driver_data  = SAA7134_BOARD_HAUPPAUGE_HVR1110,
3818         },{
3819                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3820                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3821                 .subvendor    = 0x153b,
3822                 .subdevice    = 0x1172,
3823                 .driver_data  = SAA7134_BOARD_CINERGY_HT_PCMCIA,
3824         },{
3825                 /* --- boards without eeprom + subsystem ID --- */
3826                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3827                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3828                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
3829                 .subdevice    = 0,
3830                 .driver_data  = SAA7134_BOARD_NOAUTO,
3831         },{
3832                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3833                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
3834                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
3835                 .subdevice    = 0,
3836                 .driver_data  = SAA7134_BOARD_NOAUTO,
3837         },{
3838
3839                 /* --- default catch --- */
3840                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3841                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
3842                 .subvendor    = PCI_ANY_ID,
3843                 .subdevice    = PCI_ANY_ID,
3844                 .driver_data  = SAA7134_BOARD_UNKNOWN,
3845         },{
3846                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3847                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
3848                 .subvendor    = PCI_ANY_ID,
3849                 .subdevice    = PCI_ANY_ID,
3850                 .driver_data  = SAA7134_BOARD_UNKNOWN,
3851         },{
3852                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3853                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
3854                 .subvendor    = PCI_ANY_ID,
3855                 .subdevice    = PCI_ANY_ID,
3856                 .driver_data  = SAA7134_BOARD_UNKNOWN,
3857         },{
3858                 .vendor       = PCI_VENDOR_ID_PHILIPS,
3859                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7135,
3860                 .subvendor    = PCI_ANY_ID,
3861                 .subdevice    = PCI_ANY_ID,
3862                 .driver_data  = SAA7134_BOARD_UNKNOWN,
3863         },{
3864                 /* --- end of list --- */
3865         }
3866 };
3867 MODULE_DEVICE_TABLE(pci, saa7134_pci_tbl);
3868
3869 /* ----------------------------------------------------------- */
3870 /* flyvideo tweaks                                             */
3871
3872
3873 static void board_flyvideo(struct saa7134_dev *dev)
3874 {
3875         printk("%s: there are different flyvideo cards with different tuners\n"
3876                "%s: out there, you might have to use the tuner=<nr> insmod\n"
3877                "%s: option to override the default value.\n",
3878                dev->name, dev->name, dev->name);
3879 }
3880
3881 /* ----------------------------------------------------------- */
3882
3883 int saa7134_board_init1(struct saa7134_dev *dev)
3884 {
3885         /* Always print gpio, often manufacturers encode tuner type and other info. */
3886         saa_writel(SAA7134_GPIO_GPMODE0 >> 2, 0);
3887         dev->gpio_value = saa_readl(SAA7134_GPIO_GPSTATUS0 >> 2);
3888         printk(KERN_INFO "%s: board init: gpio is %x\n", dev->name, dev->gpio_value);
3889
3890         switch (dev->board) {
3891         case SAA7134_BOARD_FLYVIDEO2000:
3892         case SAA7134_BOARD_FLYVIDEO3000:
3893         case SAA7134_BOARD_FLYVIDEO3000_NTSC:
3894                 dev->has_remote = SAA7134_REMOTE_GPIO;
3895                 board_flyvideo(dev);
3896                 break;
3897         case SAA7134_BOARD_FLYTVPLATINUM_MINI2:
3898         case SAA7134_BOARD_FLYTVPLATINUM_FM:
3899         case SAA7134_BOARD_CINERGY400:
3900         case SAA7134_BOARD_CINERGY600:
3901         case SAA7134_BOARD_CINERGY600_MK3:
3902         case SAA7134_BOARD_ECS_TVP3XP:
3903         case SAA7134_BOARD_ECS_TVP3XP_4CB5:
3904         case SAA7134_BOARD_MD2819:
3905         case SAA7134_BOARD_KWORLD_VSTREAM_XPERT:
3906         case SAA7134_BOARD_KWORLD_XPERT:
3907         case SAA7134_BOARD_AVERMEDIA_STUDIO_305:
3908         case SAA7134_BOARD_AVERMEDIA_305:
3909         case SAA7134_BOARD_AVERMEDIA_STUDIO_307:
3910         case SAA7134_BOARD_AVERMEDIA_307:
3911         case SAA7134_BOARD_AVERMEDIA_STUDIO_507:
3912         case SAA7134_BOARD_AVERMEDIA_GO_007_FM:
3913         case SAA7134_BOARD_AVERMEDIA_777:
3914 /*      case SAA7134_BOARD_SABRENT_SBTTVFM:  */ /* not finished yet */
3915         case SAA7134_BOARD_VIDEOMATE_TV_PVR:
3916         case SAA7134_BOARD_VIDEOMATE_GOLD_PLUS:
3917         case SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUSII:
3918         case SAA7134_BOARD_VIDEOMATE_DVBT_300:
3919         case SAA7134_BOARD_VIDEOMATE_DVBT_200:
3920         case SAA7134_BOARD_VIDEOMATE_DVBT_200A:
3921         case SAA7134_BOARD_MANLI_MTV001:
3922         case SAA7134_BOARD_MANLI_MTV002:
3923         case SAA7134_BOARD_BEHOLD_409FM:
3924         case SAA7134_BOARD_AVACSSMARTTV:
3925         case SAA7134_BOARD_GOTVIEW_7135:
3926         case SAA7134_BOARD_KWORLD_TERMINATOR:
3927         case SAA7134_BOARD_SEDNA_PC_TV_CARDBUS:
3928         case SAA7134_BOARD_FLYDVBT_LR301:
3929         case SAA7134_BOARD_FLYDVBTDUO:
3930         case SAA7134_BOARD_PROTEUS_2309:
3931         case SAA7134_BOARD_AVERMEDIA_A16AR:
3932                 dev->has_remote = SAA7134_REMOTE_GPIO;
3933                 break;
3934         case SAA7134_BOARD_FLYDVBS_LR300:
3935                 saa_writeb(SAA7134_GPIO_GPMODE3, 0x80);
3936                 saa_writeb(SAA7134_GPIO_GPSTATUS2, 0x40);
3937                 dev->has_remote = SAA7134_REMOTE_GPIO;
3938                 break;
3939         case SAA7134_BOARD_MD5044:
3940                 printk("%s: seems there are two different versions of the MD5044\n"
3941                        "%s: (with the same ID) out there.  If sound doesn't work for\n"
3942                        "%s: you try the audio_clock_override=0x200000 insmod option.\n",
3943                        dev->name,dev->name,dev->name);
3944                 break;
3945         case SAA7134_BOARD_CINERGY400_CARDBUS:
3946                 /* power-up tuner chip */
3947                 saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0x00040000, 0x00040000);
3948                 saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00040000, 0x00000000);
3949                 break;
3950         case SAA7134_BOARD_PINNACLE_300I_DVBT_PAL:
3951                 /* this turns the remote control chip off to work around a bug in it */
3952                 saa_writeb(SAA7134_GPIO_GPMODE1, 0x80);
3953                 saa_writeb(SAA7134_GPIO_GPSTATUS1, 0x80);
3954                 break;
3955         case SAA7134_BOARD_MONSTERTV_MOBILE:
3956                 /* power-up tuner chip */
3957                 saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0x00040000, 0x00040000);
3958                 saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00040000, 0x00000004);
3959                 break;
3960         case SAA7134_BOARD_FLYDVBT_DUO_CARDBUS:
3961                 /* turn the fan on */
3962                 saa_writeb(SAA7134_GPIO_GPMODE3, 0x08);
3963                 saa_writeb(SAA7134_GPIO_GPSTATUS3, 0x06);
3964                 break;
3965         case SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331:
3966         case SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS:
3967                 saa_writeb(SAA7134_GPIO_GPMODE3, 0x08);
3968                 saa_writeb(SAA7134_GPIO_GPSTATUS3, 0x00);
3969                 break;
3970         case SAA7134_BOARD_AVERMEDIA_CARDBUS:
3971                 /* power-up tuner chip */
3972                 saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0xffffffff, 0xffffffff);
3973                 saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0xffffffff, 0xffffffff);
3974                 msleep(1);
3975                 break;
3976         case SAA7134_BOARD_RTD_VFG7350:
3977
3978                 /*
3979                  * Make sure Production Test Register at offset 0x1D1 is cleared
3980                  * to take chip out of test mode.  Clearing bit 4 (TST_EN_AOUT)
3981                  * prevents pin 105 from remaining low; keeping pin 105 low
3982                  * continually resets the SAA6752 chip.
3983                  */
3984
3985                 saa_writeb (SAA7134_PRODUCTION_TEST_MODE, 0x00);
3986                 break;
3987         /* i2c remotes */
3988         case SAA7134_BOARD_PINNACLE_PCTV_110i:
3989         case SAA7134_BOARD_PINNACLE_PCTV_310i:
3990         case SAA7134_BOARD_UPMOST_PURPLE_TV:
3991         case SAA7134_BOARD_HAUPPAUGE_HVR1110:
3992                 dev->has_remote = SAA7134_REMOTE_I2C;
3993                 break;
3994         case SAA7134_BOARD_AVERMEDIA_A169_B:
3995         case SAA7134_BOARD_MD7134_BRIDGE_2:
3996                 printk("%s: %s: dual saa713x broadcast decoders\n"
3997                        "%s: Sorry, none of the inputs to this chip are supported yet.\n"
3998                        "%s: Dual decoder functionality is disabled for now, use the other chip.\n",
3999                        dev->name,card(dev).name,dev->name,dev->name);
4000                 break;
4001         }
4002         return 0;
4003 }
4004
4005 /* stuff which needs working i2c */
4006 int saa7134_board_init2(struct saa7134_dev *dev)
4007 {
4008         unsigned char buf;
4009         int board;
4010
4011         switch (dev->board) {
4012         case SAA7134_BOARD_BMK_MPEX_NOTUNER:
4013         case SAA7134_BOARD_BMK_MPEX_TUNER:
4014                 dev->i2c_client.addr = 0x60;
4015                 board = (i2c_master_recv(&dev->i2c_client,&buf,0) < 0)
4016                         ? SAA7134_BOARD_BMK_MPEX_NOTUNER
4017                         : SAA7134_BOARD_BMK_MPEX_TUNER;
4018                 if (board == dev->board)
4019                         break;
4020                 dev->board = board;
4021                 printk("%s: board type fixup: %s\n", dev->name,
4022                 saa7134_boards[dev->board].name);
4023                 dev->tuner_type = saa7134_boards[dev->board].tuner_type;
4024
4025                 if (TUNER_ABSENT != dev->tuner_type) {
4026                                 struct tuner_setup tun_setup;
4027
4028                                 tun_setup.mode_mask = T_RADIO | T_ANALOG_TV | T_DIGITAL_TV;
4029                                 tun_setup.type = dev->tuner_type;
4030                                 tun_setup.addr = ADDR_UNSET;
4031
4032                                 saa7134_i2c_call_clients (dev, TUNER_SET_TYPE_ADDR, &tun_setup);
4033                 }
4034                 break;
4035         case SAA7134_BOARD_MD7134:
4036                 {
4037                 struct tuner_setup tun_setup;
4038                 u8 subaddr;
4039                 u8 data[3];
4040                 int ret, tuner_t;
4041
4042                 struct i2c_msg msg[] = {{.addr=0x50, .flags=0, .buf=&subaddr, .len = 1},
4043                                         {.addr=0x50, .flags=I2C_M_RD, .buf=data, .len = 3}};
4044                 subaddr= 0x14;
4045                 tuner_t = 0;
4046                 ret = i2c_transfer(&dev->i2c_adap, msg, 2);
4047                 if (ret != 2) {
4048                         printk(KERN_ERR "EEPROM read failure\n");
4049                 } else if ((data[0] != 0) && (data[0] != 0xff)) {
4050                         /* old config structure */
4051                         subaddr = data[0] + 2;
4052                         msg[1].len = 2;
4053                         i2c_transfer(&dev->i2c_adap, msg, 2);
4054                         tuner_t = (data[0] << 8) + data[1];
4055                         switch (tuner_t){
4056                         case 0x0103:
4057                                 dev->tuner_type = TUNER_PHILIPS_PAL;
4058                                 break;
4059                         case 0x010C:
4060                                 dev->tuner_type = TUNER_PHILIPS_FM1216ME_MK3;
4061                                 break;
4062                         default:
4063                                 printk(KERN_ERR "%s Cant determine tuner type %x from EEPROM\n", dev->name, tuner_t);
4064                         }
4065                 } else if ((data[1] != 0) && (data[1] != 0xff)) {
4066                         /* new config structure */
4067                         subaddr = data[1] + 1;
4068                         msg[1].len = 1;
4069                         i2c_transfer(&dev->i2c_adap, msg, 2);
4070                         subaddr = data[0] + 1;
4071                         msg[1].len = 2;
4072                         i2c_transfer(&dev->i2c_adap, msg, 2);
4073                         tuner_t = (data[1] << 8) + data[0];
4074                         switch (tuner_t) {
4075                         case 0x0005:
4076                                 dev->tuner_type = TUNER_PHILIPS_FM1216ME_MK3;
4077                                 break;
4078                         case 0x001d:
4079                                 dev->tuner_type = TUNER_PHILIPS_FMD1216ME_MK3;
4080                                         printk(KERN_INFO "%s Board has DVB-T\n", dev->name);
4081                                 break;
4082                         default:
4083                                 printk(KERN_ERR "%s Cant determine tuner type %x from EEPROM\n", dev->name, tuner_t);
4084                         }
4085                 } else {
4086                         printk(KERN_ERR "%s unexpected config structure\n", dev->name);
4087                 }
4088
4089                 printk(KERN_INFO "%s Tuner type is %d\n", dev->name, dev->tuner_type);
4090                 if (dev->tuner_type == TUNER_PHILIPS_FMD1216ME_MK3) {
4091                         dev->tda9887_conf = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE | TDA9887_PORT2_ACTIVE;
4092                         saa7134_i2c_call_clients(dev,TDA9887_SET_CONFIG, &dev->tda9887_conf);
4093                 }
4094
4095                 tun_setup.mode_mask = T_RADIO | T_ANALOG_TV | T_DIGITAL_TV;
4096                 tun_setup.type = dev->tuner_type;
4097                 tun_setup.addr = ADDR_UNSET;
4098
4099                 saa7134_i2c_call_clients (dev, TUNER_SET_TYPE_ADDR,&tun_setup);
4100                 }
4101                 break;
4102         case SAA7134_BOARD_PHILIPS_EUROPA:
4103         case SAA7134_BOARD_VIDEOMATE_DVBT_300:
4104         case SAA7134_BOARD_ASUS_EUROPA2_HYBRID:
4105                 /* The Philips EUROPA based hybrid boards have the tuner connected through
4106                  * the channel decoder. We have to make it transparent to find it
4107                  */
4108                 {
4109                 struct tuner_setup tun_setup;
4110                 u8 data[] = { 0x07, 0x02};
4111                 struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
4112                 i2c_transfer(&dev->i2c_adap, &msg, 1);
4113
4114                 tun_setup.mode_mask = T_ANALOG_TV | T_DIGITAL_TV;
4115                 tun_setup.type = dev->tuner_type;
4116                 tun_setup.addr = dev->tuner_addr;
4117
4118                 saa7134_i2c_call_clients (dev, TUNER_SET_TYPE_ADDR,&tun_setup);
4119                 }
4120                 break;
4121         case SAA7134_BOARD_PHILIPS_TIGER:
4122         case SAA7134_BOARD_PINNACLE_PCTV_310i:
4123         case SAA7134_BOARD_TEVION_DVBT_220RF:
4124         case SAA7134_BOARD_ASUSTeK_P7131_DUAL:
4125         case SAA7134_BOARD_MEDION_MD8800_QUADRO:
4126         case SAA7134_BOARD_HAUPPAUGE_HVR1110:
4127                 /* this is a hybrid board, initialize to analog mode
4128                  * and configure firmware eeprom address
4129                  */
4130                 {
4131                 u8 data[] = { 0x3c, 0x33, 0x68};
4132                 struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
4133                 i2c_transfer(&dev->i2c_adap, &msg, 1);
4134                 }
4135                 break;
4136         case SAA7134_BOARD_FLYDVB_TRIO:
4137                 {
4138                 u8 data[] = { 0x3c, 0x33, 0x62};
4139                 struct i2c_msg msg = {.addr=0x09, .flags=0, .buf=data, .len = sizeof(data)};
4140                 i2c_transfer(&dev->i2c_adap, &msg, 1);
4141                 }
4142                 break;
4143         case SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331:
4144         case SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS:
4145                 /* make the tda10046 find its eeprom */
4146                 {
4147                 u8 data[] = { 0x3c, 0x33, 0x62};
4148                 struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
4149                 i2c_transfer(&dev->i2c_adap, &msg, 1);
4150                 }
4151                 break;
4152         case SAA7134_BOARD_CINERGY_HT_PCMCIA:
4153                 /* make the tda10046 find its eeprom */
4154                 {
4155                 u8 data[] = { 0x3c, 0x33, 0x60};
4156                 struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
4157                 i2c_transfer(&dev->i2c_adap, &msg, 1);
4158                 }
4159                 break;
4160         case SAA7134_BOARD_KWORLD_ATSC110:
4161                 {
4162                         /* enable tuner */
4163                         int i;
4164                         static const u8 buffer [] = { 0x10,0x12,0x13,0x04,0x16,0x00,0x14,0x04,0x017,0x00 };
4165                         dev->i2c_client.addr = 0x0a;
4166                         for (i = 0; i < 5; i++)
4167                                 if (2 != i2c_master_send(&dev->i2c_client,&buffer[i*2],2))
4168                                         printk(KERN_WARNING "%s: Unable to enable tuner(%i).\n",
4169                                                dev->name, i);
4170                 }
4171                 break;
4172         case SAA7134_BOARD_VIDEOMATE_DVBT_200:
4173         case SAA7134_BOARD_VIDEOMATE_DVBT_200A:
4174                 /* The T200 and the T200A share the same pci id.  Consequently,
4175                  * we are going to query eeprom to try to find out which one we
4176                  * are actually looking at. */
4177
4178                 /* Don't do this if the board was specifically selected with an
4179                  * insmod option or if we have the default configuration T200*/
4180                 if(!dev->autodetected || (dev->eedata[0x41] == 0xd0))
4181                         break;
4182                 if(dev->eedata[0x41] == 0x02) {
4183                         /* Reconfigure board  as T200A */
4184                         dev->board = SAA7134_BOARD_VIDEOMATE_DVBT_200A;
4185                         dev->tuner_type   = saa7134_boards[dev->board].tuner_type;
4186                         dev->tda9887_conf = saa7134_boards[dev->board].tda9887_conf;
4187                         printk(KERN_INFO "%s: Reconfigured board as %s\n",
4188                                 dev->name, saa7134_boards[dev->board].name);
4189                 } else {
4190                         printk(KERN_WARNING "%s: Unexpected tuner type info: %x in eeprom\n",
4191                                 dev->name, dev->eedata[0x41]);
4192                         break;
4193                 }
4194                 break;
4195         }
4196         return 0;
4197 }
4198
4199 /* ----------------------------------------------------------- */
4200 /*
4201  * Local variables:
4202  * c-basic-offset: 8
4203  * End:
4204  */