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