vserver 1.9.3
[linux-2.6.git] / drivers / media / video / saa7134 / saa7134-cards.c
1 /*
2  * device driver for philips saa7134 based TV cards
3  * card-specific stuff.
4  *
5  * (c) 2001-04 Gerd Knorr <kraxel@bytesex.org> [SuSE Labs]
6  *
7  *  This program is free software; you can redistribute it and/or modify
8  *  it under the terms of the GNU General Public License as published by
9  *  the Free Software Foundation; either version 2 of the License, or
10  *  (at your option) any later version.
11  *
12  *  This program is distributed in the hope that it will be useful,
13  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  *  GNU General Public License for more details.
16  *
17  *  You should have received a copy of the GNU General Public License
18  *  along with this program; if not, write to the Free Software
19  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20  */
21
22 #include <linux/init.h>
23 #include <linux/module.h>
24
25 #include "saa7134-reg.h"
26 #include "saa7134.h"
27
28 /* commly used strings */
29 static char name_mute[]    = "mute";
30 static char name_radio[]   = "Radio";
31 static char name_tv[]      = "Television";
32 static char name_tv_mono[] = "TV (mono only)";
33 static char name_comp1[]   = "Composite1";
34 static char name_comp2[]   = "Composite2";
35 static char name_comp3[]   = "Composite3";
36 static char name_comp4[]   = "Composite4";
37 static char name_svideo[]  = "S-Video";
38
39 /* ------------------------------------------------------------------ */
40 /* board config info                                                  */
41
42 struct saa7134_board saa7134_boards[] = {
43         [SAA7134_BOARD_UNKNOWN] = {
44                 .name           = "UNKNOWN/GENERIC",
45                 .audio_clock    = 0x00187de7,
46                 .tuner_type     = TUNER_ABSENT,
47                 .inputs         = {{
48                         .name = "default",
49                         .vmux = 0,
50                         .amux = LINE1,
51                 }},
52         },
53         [SAA7134_BOARD_PROTEUS_PRO] = {
54                 /* /me */
55                 .name           = "Proteus Pro [philips reference design]",
56                 .audio_clock    = 0x00187de7,
57                 .tuner_type     = TUNER_PHILIPS_PAL,
58                 .inputs         = {{
59                         .name = name_comp1,
60                         .vmux = 0,
61                         .amux = LINE1,
62                 },{
63                         .name = name_tv,
64                         .vmux = 1,
65                         .amux = TV,
66                         .tv   = 1,
67                 },{
68                         .name = name_tv_mono,
69                         .vmux = 1,
70                         .amux = LINE2,
71                         .tv   = 1,
72                 }},
73                 .radio = {
74                         .name = name_radio,
75                         .amux = LINE2,
76                 },
77         },
78         [SAA7134_BOARD_FLYVIDEO3000] = {
79                 /* "Marco d'Itri" <md@Linux.IT> */
80                 .name           = "LifeView FlyVIDEO3000",
81                 .audio_clock    = 0x00200000,
82                 .tuner_type     = TUNER_PHILIPS_PAL,
83                 .gpiomask       = 0xe000,
84                 .inputs         = {{
85                         .name = name_tv,
86                         .vmux = 1,
87                         .amux = TV,
88                         .gpio = 0x8000,
89                         .tv   = 1,
90                 },{
91                         .name = name_tv_mono,
92                         .vmux = 1,
93                         .amux = LINE2,
94                         .gpio = 0x0000,
95                         .tv   = 1,
96                 },{
97                         .name = name_comp1,
98                         .vmux = 0,
99                         .amux = LINE2,
100                         .gpio = 0x4000,
101                 },{
102                         .name = name_comp2,
103                         .vmux = 3,
104                         .amux = LINE2,
105                         .gpio = 0x4000,
106                 },{
107                         .name = name_svideo,
108                         .vmux = 8,
109                         .amux = LINE2,
110                         .gpio = 0x4000,
111                 }},
112                 .radio = {
113                         .name = name_radio,
114                         .amux = LINE2,
115                         .gpio = 0x2000,
116                 },
117         },
118         [SAA7134_BOARD_FLYVIDEO2000] = {
119                 /* "TC Wan" <tcwan@cs.usm.my> */
120                 .name           = "LifeView FlyVIDEO2000",
121                 .audio_clock    = 0x00200000,
122                 .tuner_type     = TUNER_LG_PAL_NEW_TAPC,
123                 .gpiomask       = 0xe000,
124                 .inputs         = {{
125                         .name = name_tv,
126                         .vmux = 1,
127                         .amux = LINE2,
128                         .gpio = 0x0000,
129                         .tv   = 1,
130                 },{
131                         .name = name_comp1,
132                         .vmux = 0,
133                         .amux = LINE2,
134                         .gpio = 0x4000,
135                 },{
136                         .name = name_comp2,
137                         .vmux = 3,
138                         .amux = LINE2,
139                         .gpio = 0x4000,
140                 },{
141                         .name = name_svideo,
142                         .vmux = 8,
143                         .amux = LINE2,
144                         .gpio = 0x4000,
145                 }},
146                 .radio = {
147                         .name = name_radio,
148                         .amux = LINE2,
149                         .gpio = 0x2000,
150                 },
151                 .mute = {
152                         .name = name_mute,
153                         .amux = LINE2,
154                         .gpio = 0x8000,
155                 },
156         },
157         [SAA7134_BOARD_FLYTVPLATINUM] = {
158                 /* "Arnaud Quette" <aquette@free.fr> */
159                 .name           = "LifeView FlyTV Platinum",
160                 .audio_clock    = 0x00200000,
161                 .tuner_type     = TUNER_PHILIPS_SECAM,
162                 .inputs         = {{
163                         .name = name_tv,
164                         .vmux = 1,
165                         .amux = LINE2,
166                         .tv   = 1,
167                 },{
168                         .name = name_comp1,
169                         .vmux = 0,
170                         .amux = LINE2,
171                 },{
172                         .name = name_svideo,
173                         .vmux = 8,
174                         .amux = LINE2,
175                 }},
176         },
177         [SAA7134_BOARD_EMPRESS] = {
178                 /* "Gert Vervoort" <gert.vervoort@philips.com> */
179                 .name           = "EMPRESS",
180                 .audio_clock    = 0x00187de7,
181                 .tuner_type     = TUNER_PHILIPS_PAL,
182                 .inputs         = {{
183                         .name = name_comp1,
184                         .vmux = 0,
185                         .amux = LINE1,
186                 },{
187                         .name = name_svideo,
188                         .vmux = 8,
189                         .amux = LINE1,
190                 },{
191                         .name = name_tv,
192                         .vmux = 1,
193                         .amux = LINE2,
194                         .tv   = 1,
195                 }},
196                 .radio = {
197                         .name = name_radio,
198                         .amux = LINE2,
199                 },
200                 .has_ts    = 1,
201                 .video_out = CCIR656,
202         },
203         [SAA7134_BOARD_MONSTERTV] = {
204                /* "K.Ohta" <alpha292@bremen.or.jp> */
205                .name           = "SKNet Monster TV",
206                .audio_clock    = 0x00187de7,
207                .tuner_type     = TUNER_PHILIPS_NTSC_M,
208                .inputs         = {{
209                        .name = name_tv,
210                        .vmux = 1,
211                        .amux = TV,
212                        .tv   = 1,
213                },{
214                        .name = name_comp1,
215                        .vmux = 0,
216                        .amux = LINE1,
217                },{
218                        .name = name_svideo,
219                        .vmux = 8,
220                        .amux = LINE1,
221                }},
222                .radio = {
223                        .name = name_radio,
224                        .amux = LINE2,
225                },
226         },
227         [SAA7134_BOARD_MD9717] = {
228                 .name           = "Tevion MD 9717",
229                 .audio_clock    = 0x00200000,
230                 .tuner_type     = TUNER_PHILIPS_PAL,
231                 .inputs         = {{
232                         .name = name_tv,
233                         .vmux = 1,
234                         .amux = TV,
235                         .tv   = 1,
236                 },{
237                         /* workaround for problems with normal TV sound */
238                         .name = name_tv_mono,
239                         .vmux = 1,
240                         .amux = LINE2,
241                         .tv   = 1,
242                 },{
243                         .name = name_comp1,
244                         .vmux = 2,
245                         .amux = LINE1,
246                 },{
247                         .name = name_comp2,
248                         .vmux = 3,
249                         .amux = LINE1,
250                 },{
251                         .name = name_svideo,
252                         .vmux = 8,
253                         .amux = LINE1,
254                 }},
255                 .radio = {
256                         .name = name_radio,
257                         .amux = LINE2,
258                 },
259         },
260         [SAA7134_BOARD_TVSTATION_RDS] = {
261                 /* Typhoon TV Tuner RDS: Art.Nr. 50694 */
262                 .name           = "KNC One TV-Station RDS / Typhoon TV Tuner RDS",
263                 .audio_clock    = 0x00200000,
264                 .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
265                 .tda9887_conf   = TDA9887_PRESENT,
266                 .inputs         = {{
267                         .name = name_tv,
268                         .vmux = 1,
269                         .amux = TV,
270                         .tv   = 1,
271                 },{
272                         .name = name_tv_mono,
273                         .vmux = 1,
274                         .amux   = LINE2,
275                         .tv   = 1,
276                 },{
277
278                         .name = name_svideo,
279                         .vmux = 8,
280                         .amux = LINE1,
281                 },{
282                         .name = name_comp1,
283                         .vmux = 3,
284                         .amux = LINE1,
285                 },{
286
287                         .name = "CVid over SVid",
288                         .vmux = 0,
289                         .amux = LINE1,
290                 }},
291                 .radio = {
292                         .name = name_radio,
293                         .amux = LINE2,
294                 },
295         },
296         [SAA7134_BOARD_TVSTATION_DVR] = {
297                 .name           = "KNC One TV-Station DVR",
298                 .audio_clock    = 0x00200000,
299                 .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
300                 .tda9887_conf   = TDA9887_PRESENT,
301                 .gpiomask       = 0x820000,
302                 .inputs         = {{
303                         .name = name_tv,
304                         .vmux = 1,
305                         .amux = LINE2,
306                         .tv   = 1,
307                         .gpio = 0x20000,
308                 },{
309                         .name = name_svideo,
310                         .vmux = 8,
311                         .amux = LINE1,
312                         .gpio = 0x20000,
313                 },{
314                         .name = name_comp1,
315                         .vmux = 3,
316                         .amux = LINE1,
317                         .gpio = 0x20000,
318                 }},
319                 .radio          = {
320                         .name = name_radio,
321                         .amux = LINE2,
322                         .gpio = 0x20000,
323                 },
324                 .has_ts         = 1,
325                 .video_out      = CCIR656,
326         },
327         [SAA7134_BOARD_CINERGY400] = {
328                 .name           = "Terratec Cinergy 400 TV",
329                 .audio_clock    = 0x00200000,
330                 .tuner_type     = TUNER_PHILIPS_PAL,
331                 .inputs         = {{
332                         .name = name_tv,
333                         .vmux = 1,
334                         .amux = TV,
335                         .tv   = 1,
336                 },{
337                         .name = name_comp1,
338                         .vmux = 4,
339                         .amux = LINE1,
340                 },{
341                         .name = name_svideo,
342                         .vmux = 8,
343                         .amux = LINE1,
344                 },{
345                         .name = name_comp2, // CVideo over SVideo Connector
346                         .vmux = 0,
347                         .amux = LINE1,
348                 }}
349         },
350         [SAA7134_BOARD_MD5044] = {
351                 .name           = "Medion 5044",
352                 .audio_clock    = 0x00187de7, // was: 0x00200000,
353                 .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
354                 .tda9887_conf   = TDA9887_PRESENT,
355                 .inputs         = {{
356                         .name = name_tv,
357                         .vmux = 1,
358                         .amux = TV,
359                         .tv   = 1,
360                 },{
361                         /* workaround for problems with normal TV sound */
362                         .name = name_tv_mono,
363                         .vmux = 1,
364                         .amux = LINE2,
365                         .tv   = 1,
366                 },{
367                         .name = name_comp1,
368                         .vmux = 0,
369                         .amux = LINE2,
370                 },{
371                         .name = name_comp2,
372                         .vmux = 3,
373                         .amux = LINE2,
374                 },{
375                         .name = name_svideo,
376                         .vmux = 8,
377                         .amux = LINE2,
378                 }},
379                 .radio = {
380                         .name = name_radio,
381                         .amux = LINE2,
382                 },
383         },
384         [SAA7134_BOARD_KWORLD] = {
385                 .name           = "Kworld/KuroutoShikou SAA7130-TVPCI",
386                 .audio_clock    = 0x00187de7,
387                 .tuner_type     = TUNER_PHILIPS_NTSC_M,
388                 .inputs         = {{
389                         .name = name_svideo,
390                         .vmux = 8,
391                         .amux = LINE1,
392                 },{
393                         .name = name_comp1,
394                         .vmux = 3,
395                         .amux = LINE1,
396                 },{
397                         .name = name_tv,
398                         .vmux = 1,
399                         .amux = LINE2,
400                         .tv   = 1,
401                 }},
402         },
403         [SAA7134_BOARD_CINERGY600] = {
404                 .name           = "Terratec Cinergy 600 TV",
405                 .audio_clock    = 0x00200000,
406                 .tuner_type     = TUNER_PHILIPS_PAL,
407                 .inputs         = {{
408                         .name = name_tv,
409                         .vmux = 1,
410                         .amux = TV,
411                         .tv   = 1,
412                 },{
413                         .name = name_comp1,
414                         .vmux = 4,
415                         .amux = LINE1,
416                 },{
417                         .name = name_svideo,
418                         .vmux = 8,
419                         .amux = LINE1,
420                 },{
421                         .name = name_comp2, // CVideo over SVideo Connector
422                         .vmux = 0,
423                         .amux = LINE1,
424                 }},
425                 .radio = {
426                         .name = name_radio,
427                         .amux = LINE2,
428                },
429         },
430         [SAA7134_BOARD_MD7134] = {
431                 .name           = "Medion 7134",
432                 //.audio_clock    = 0x00200000,
433                 .audio_clock    = 0x00187de7,
434                 .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
435                 .tda9887_conf   = TDA9887_PRESENT,
436                 .inputs = {{
437                         .name   = name_tv,
438                         .vmux   = 1,
439                         .amux   = TV,
440                         .tv     = 1,
441                 },{
442                         .name   = name_comp1,
443                         .vmux   = 0,
444                         .amux   = LINE2,
445                 },{
446                         .name   = name_svideo,
447                         .vmux   = 8,
448                         .amux   = LINE2,
449                 }},
450                 .radio = {
451                         .name   = name_radio,
452                         .amux   = LINE2,
453                 },
454         },
455         [SAA7134_BOARD_TYPHOON_90031] = {
456                 /* aka Typhoon "TV+Radio", Art.Nr 90031 */
457                 /* Tom Zoerner <tomzo at users sourceforge net> */
458                 .name           = "Typhoon TV+Radio 90031",
459                 .audio_clock    = 0x00200000,
460                 .tuner_type     = TUNER_PHILIPS_PAL,
461                 .tda9887_conf   = TDA9887_PRESENT,
462                 .inputs         = {{
463                         .name   = name_tv,
464                         .vmux   = 1,
465                         .amux   = TV,
466                         .tv     = 1,
467                 },{
468                         .name   = name_comp1,
469                         .vmux   = 3,
470                         .amux   = LINE1,
471                 },{
472                         .name   = name_svideo,
473                         .vmux   = 8,
474                         .amux   = LINE1,
475                 }},
476                 .radio = {
477                         .name   = name_radio,
478                         .amux   = LINE2,
479                 },
480         },
481         [SAA7134_BOARD_ELSA] = {
482                 .name           = "ELSA EX-VISION 300TV",
483                 .audio_clock    = 0x00187de7,
484                 .tuner_type     = TUNER_HITACHI_NTSC,
485                 .inputs         = {{
486                         .name = name_svideo,
487                         .vmux = 8,
488                         .amux = LINE1,
489                 },{
490                         .name   = name_comp1,
491                         .vmux   = 0,
492                         .amux   = LINE1,
493                 },{
494                         .name = name_tv,
495                         .vmux = 4,
496                         .amux = LINE2,
497                         .tv   = 1,
498                 }},
499         },
500         [SAA7134_BOARD_ELSA_500TV] = {
501                 .name           = "ELSA EX-VISION 500TV",
502                 .audio_clock    = 0x00187de7,
503                 .tuner_type     = TUNER_HITACHI_NTSC,
504                 .inputs         = {{
505                         .name = name_svideo,
506                         .vmux = 7,
507                         .amux = LINE1,
508                 },{
509                         .name = name_tv,
510                         .vmux = 8,
511                         .amux = TV,
512                         .tv   = 1,
513                 },{
514                         .name = name_tv_mono,
515                         .vmux = 8,
516                         .amux = LINE2,
517                         .tv   = 1,
518                 }},
519         },
520         [SAA7134_BOARD_ASUSTeK_TVFM7134] = {
521                 .name           = "ASUS TV-FM 7134",
522                 .audio_clock    = 0x00187de7,
523                 .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
524                 .tda9887_conf   = TDA9887_PRESENT,
525                 .inputs         = {{
526                         .name = name_tv,
527                         .vmux = 1,
528                         .amux = TV,
529                         .tv   = 1,
530                 },{
531                         .name = name_comp1,
532                         .vmux = 4,
533                         .amux = LINE2,
534                 },{
535                         .name = name_svideo,
536                         .vmux = 6,
537                         .amux = LINE2,
538                 }},
539                 .radio = {
540                         .name = name_radio,
541                         .amux = LINE1,
542                 },
543         },
544         [SAA7134_BOARD_VA1000POWER] = {
545                 .name           = "AOPEN VA1000 POWER",
546                 .audio_clock    = 0x00187de7,
547                 .tuner_type     = TUNER_PHILIPS_NTSC,
548                 .inputs         = {{
549                         .name = name_svideo,
550                         .vmux = 8,
551                         .amux = LINE1,
552                 },{
553                         .name = name_comp1,
554                         .vmux = 3,
555                         .amux = LINE1,
556                 },{
557                         .name = name_tv,
558                         .vmux = 1,
559                         .amux = LINE2,
560                         .tv   = 1,
561                 }},
562         },
563         [SAA7134_BOARD_10MOONSTVMASTER] = {
564                 /* "lilicheng" <llc@linuxfans.org> */
565                 .name           = "10MOONS PCI TV CAPTURE CARD",
566                 .audio_clock    = 0x00200000,
567                 .tuner_type     = TUNER_LG_PAL_NEW_TAPC,
568                 .gpiomask       = 0xe000,
569                 .inputs         = {{
570                         .name = name_tv,
571                         .vmux = 1,
572                         .amux = LINE2,
573                         .gpio = 0x0000,
574                         .tv   = 1,
575                 },{
576                         .name = name_comp1,
577                         .vmux = 0,
578                         .amux = LINE2,
579                         .gpio = 0x4000,
580                 },{
581                         .name = name_comp2,
582                         .vmux = 3,
583                         .amux = LINE2,
584                         .gpio = 0x4000,
585                 },{
586                         .name = name_svideo,
587                         .vmux = 8,
588                         .amux = LINE2,
589                         .gpio = 0x4000,
590                 }},
591                 .radio = {
592                         .name = name_radio,
593                         .amux = LINE2,
594                         .gpio = 0x2000,
595                 },
596                 .mute = {
597                         .name = name_mute,
598                         .amux = LINE2,
599                         .gpio = 0x8000,
600                 },
601         },
602         [SAA7134_BOARD_BMK_MPEX_NOTUNER] = {
603                 /* "Andrew de Quincey" <adq@lidskialf.net> */
604                 .name           = "BMK MPEX No Tuner",
605                 .audio_clock    = 0x200000,
606                 .tuner_type     = TUNER_ABSENT,
607                 .inputs         = {{
608                         .name = name_comp1,
609                         .vmux = 4,
610                         .amux = LINE1,
611                 },{
612                         .name = name_comp2,
613                         .vmux = 3,
614                         .amux = LINE1,
615                 },{
616                         .name = name_comp3,
617                         .vmux = 0,
618                         .amux = LINE1,
619                 },{
620                         .name = name_comp4,
621                         .vmux = 1,
622                         .amux = LINE1,
623                 },{
624                         .name = name_svideo,
625                         .vmux = 8,
626                         .amux = LINE1,
627                 }},
628                 .has_ts    = 1,
629                 .video_out = CCIR656,
630         },
631         [SAA7134_BOARD_VIDEOMATE_TV] = {
632                 .name           = "Compro VideoMate TV",
633                 .audio_clock    = 0x00187de7,
634                 .tuner_type     = TUNER_PHILIPS_NTSC_M,
635                 .inputs         = {{
636                         .name = name_svideo,
637                         .vmux = 8,
638                         .amux = LINE1,
639                 },{
640                         .name = name_comp1,
641                         .vmux = 3,
642                         .amux = LINE1,
643                 },{
644                         .name = name_tv,
645                         .vmux = 1,
646                         .amux = LINE2,
647                         .tv   = 1,
648                 }},
649         },
650         [SAA7134_BOARD_CRONOS_PLUS] = {
651                 /* gpio pins:
652                    0  .. 3   BASE_ID
653                    4  .. 7   PROTECT_ID
654                    8  .. 11  USER_OUT
655                    12 .. 13  USER_IN
656                    14 .. 15  VIDIN_SEL */
657                 .name           = "Matrox CronosPlus",
658                 .tuner_type     = TUNER_ABSENT,
659                 .gpiomask       = 0xcf00,
660                 .inputs         = {{
661                         .name = name_comp1,
662                         .vmux = 0,
663                         .gpio = 2 << 14,
664                 },{
665                         .name = name_comp2,
666                         .vmux = 0,
667                         .gpio = 1 << 14,
668                 },{
669                         .name = name_comp3,
670                         .vmux = 0,
671                         .gpio = 0 << 14,
672                 },{
673                         .name = name_comp4,
674                         .vmux = 0,
675                         .gpio = 3 << 14,
676                 },{
677                         .name = name_svideo,
678                         .vmux = 8,
679                         .gpio = 2 << 14,
680                 }},
681         },
682         [SAA7134_BOARD_MD2819] = {
683                 .name           = "AverMedia M156 / Medion 2819",
684                 .audio_clock    = 0x00187de7,
685                 .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
686                 .tda9887_conf   = TDA9887_PRESENT,
687                 .inputs         = {{
688                         .name = name_tv,
689                         .vmux = 1,
690                         .amux = TV,
691                         .tv   = 1,
692                 },{
693                         .name = name_comp1,
694                         .vmux = 0,
695                         .amux = LINE2,
696                 },{
697                         .name = name_comp2,
698                         .vmux = 3,
699                         .amux = LINE2,
700                 },{
701                         .name = name_svideo,
702                         .vmux = 8,
703                         .amux = LINE2,
704                 }},
705                 .radio = {
706                         .name = name_radio,
707                         .amux = LINE2,
708                 },
709         },
710         [SAA7134_BOARD_BMK_MPEX_TUNER] = {
711                 /* "Greg Wickham <greg.wickham@grangenet.net> */
712                 .name           = "BMK MPEX Tuner",
713                 .audio_clock    = 0x200000,
714                 .tuner_type     = TUNER_PHILIPS_PAL,
715                 .inputs         = {{
716                         .name = name_comp1,
717                         .vmux = 1,
718                         .amux = LINE1,
719                 },{
720                         .name = name_svideo,
721                         .vmux = 8,
722                         .amux = LINE1,
723                 },{
724                         .name = name_tv,
725                         .vmux = 3,
726                         .amux = LINE2,
727                         .tv   = 1,
728                 }},
729                 .has_ts    = 1,
730                 .video_out = CCIR656,
731         },
732         [SAA7134_BOARD_ASUSTEK_TVFM7133] = {
733                 .name           = "ASUS TV-FM 7133",
734                 .audio_clock    = 0x00187de7,
735                 // probably wrong, the 7133 one is the NTSC version ...
736                 // .tuner_type     = TUNER_PHILIPS_FM1236_MK3
737                 .tuner_type     = TUNER_LG_NTSC_NEW_TAPC,
738                 .tda9887_conf   = TDA9887_PRESENT,
739                 .inputs         = {{
740                         .name = name_tv,
741                         .vmux = 1,
742                         .amux = TV,
743                         .tv   = 1,
744                 },{
745                         .name = name_comp1,
746                         .vmux = 4,
747                         .amux = LINE2,
748                 },{
749                         .name = name_svideo,
750                         .vmux = 6,
751                         .amux = LINE2,
752                 }},
753                 .radio = {
754                         .name = name_radio,
755                         .amux = LINE1,
756                 },
757         },
758         [SAA7134_BOARD_PINNACLE_PCTV_STEREO] = {
759                 .name           = "Pinnacle PCTV Stereo (saa7134)",
760                 .audio_clock    = 0x00187de7,
761                 .tuner_type     = TUNER_MT2032,
762                 .tda9887_conf   = TDA9887_PRESENT,
763                 .inputs         = {{
764                         .name = name_tv,
765                         .vmux = 3,
766                         .amux = TV,
767                         .tv   = 1,
768                 },{
769                         .name = name_comp1,
770                         .vmux = 0,
771                         .amux = LINE2,
772                 },{
773                         .name = name_comp2,
774                         .vmux = 1,
775                         .amux = LINE2,
776                 },{
777                         .name = name_svideo,
778                         .vmux = 8,
779                         .amux = LINE2,
780                 }},
781         },
782         [SAA7134_BOARD_MANLI_MTV002] = {
783                 /* Ognjen Nastic <ognjen@logosoft.ba> */
784                 .name           = "Manli MuchTV M-TV002",
785                 .audio_clock    = 0x00200000,
786                 .tuner_type     = TUNER_PHILIPS_PAL,
787                 .inputs         = {{
788                         .name = name_svideo,
789                         .vmux = 8,
790                         .amux = LINE1,
791                 },{
792                         .name   = name_comp1,
793                         .vmux   = 1,
794                         .amux   = LINE1,
795                 },{
796                         .name = name_tv,
797                         .vmux = 3,
798                         .amux = LINE2,
799                         .tv   = 1,
800                 }},
801                 .radio = {
802                         .name = name_radio,
803                         .amux = LINE2,
804                 },
805         },
806         [SAA7134_BOARD_MANLI_MTV001] = {
807                 /* Ognjen Nastic <ognjen@logosoft.ba> UNTESTED */
808                 .name           = "Manli MuchTV M-TV001",
809                 .audio_clock    = 0x00200000,
810                 .tuner_type     = TUNER_PHILIPS_PAL,
811                 .inputs         = {{
812                         .name = name_svideo,
813                         .vmux = 8,
814                         .amux = LINE1,
815                 },{                     
816                         .name = name_comp1,
817                         .vmux = 1,
818                         .amux = LINE1,
819                 },{
820                         .name = name_tv,
821                         .vmux = 3,
822                         .amux = LINE2,
823                         .tv   = 1,
824                 }},
825         },
826         [SAA7134_BOARD_TG3000TV] = {
827                 /* TransGear 3000TV */
828                 .name           = "Nagase Sangyo TransGear 3000TV",
829                 .audio_clock    = 0x00187de7,
830                 .tuner_type     = TUNER_PHILIPS_NTSC_M,
831                 .inputs         = {{
832                         .name = name_tv,
833                         .vmux = 1,
834                         .amux = LINE2,
835                         .tv   = 1,
836                 },{
837                         .name = name_comp1,
838                         .vmux = 3,
839                         .amux = LINE2,
840                 },{
841                         .name = name_svideo,
842                         .vmux = 8,
843                         .amux = LINE2,
844                 }},
845         },
846         [SAA7134_BOARD_ECS_TVP3XP] = {
847                 .name           = "Elitegroup ECS TVP3XP FM1216 Tuner Card(PAL-BG,FM) ",
848                 .audio_clock    = 0x187de7,  // xtal 32.1 MHz
849                 .tuner_type     = TUNER_PHILIPS_PAL,
850                 .inputs         = {{
851                         .name   = name_tv,
852                         .vmux   = 1,
853                         .amux   = TV,
854                         .tv     = 1,
855                 },{
856                         .name   = name_tv_mono,
857                         .vmux   = 1,
858                         .amux   = LINE2,
859                         .tv     = 1,
860                 },{
861                         .name   = name_comp1,
862                         .vmux   = 3,
863                         .amux   = LINE1,
864                 },{
865                         .name   = name_svideo,
866                         .vmux   = 8,
867                         .amux   = LINE1,
868                 },{
869                         .name   = "CVid over SVid",
870                         .vmux   = 0,
871                         .amux   = LINE1,
872                 }},
873                 .radio = {
874                         .name   = name_radio,
875                         .amux   = LINE2,
876                 },
877         },
878         [SAA7134_BOARD_ECS_TVP3XP_4CB5] = {
879                 .name           = "Elitegroup ECS TVP3XP FM1236 Tuner Card (NTSC,FM)",
880                 .audio_clock    = 0x187de7,
881                 .tuner_type     = TUNER_PHILIPS_NTSC,
882                 .inputs         = {{
883                         .name   = name_tv,
884                         .vmux   = 1,
885                         .amux   = TV,
886                         .tv     = 1,
887                 },{
888                         .name   = name_tv_mono,
889                         .vmux   = 1,
890                         .amux   = LINE2,
891                         .tv     = 1,
892                 },{
893                         .name   = name_comp1,
894                         .vmux   = 3,
895                         .amux   = LINE1,
896                 },{
897                         .name   = name_svideo,
898                         .vmux   = 8,
899                         .amux   = LINE1,
900                 },{
901                         .name   = "CVid over SVid",
902                         .vmux   = 0,
903                         .amux   = LINE1,
904                 }},
905                 .radio = {
906                         .name   = name_radio,
907                         .amux   = LINE2,
908                 },
909         },
910         [SAA7134_BOARD_AVACSSMARTTV] = {
911                 /* Roman Pszonczenko <romka@kolos.math.uni.lodz.pl> */
912                 .name           = "AVACS SmartTV",
913                 .audio_clock    = 0x00187de7,
914                 .tuner_type     = TUNER_PHILIPS_PAL,
915                 .inputs         = {{
916                         .name = name_tv,
917                         .vmux = 1,
918                         .amux = TV,
919                         .tv   = 1,
920                 },{
921                         .name = name_tv_mono,
922                         .vmux = 1,
923                         .amux = LINE2,
924                         .tv   = 1,
925                 },{
926                         .name = name_comp1,
927                         .vmux = 0,
928                         .amux = LINE2,
929                 },{
930                         .name = name_comp2,
931                         .vmux = 3,
932                         .amux = LINE2,
933                 },{
934                         .name = name_svideo,
935                         .vmux = 8,
936                         .amux = LINE2,
937                 }},
938                 .radio = {
939                         .name = name_radio,
940                         .amux = LINE2,
941                         .gpio = 0x200000,
942                 },
943         },
944         [SAA7134_BOARD_AVERMEDIA_DVD_EZMAKER] = {
945                 /* Michael Smith <msmith@cbnco.com> */
946                 .name           = "AVerMedia DVD EZMaker",
947                 .audio_clock    = 0x00187de7,
948                 .tuner_type     = TUNER_ABSENT,
949                 .inputs         = {{
950                         .name = name_comp1,
951                         .vmux = 3,
952                 }},
953         },
954         [SAA7134_BOARD_NOVAC_PRIMETV7133] = {
955                 /* toshii@netbsd.org */
956                 .name           = "Noval Prime TV 7133",
957                 .audio_clock    = 0x00200000,
958                 .tuner_type     = TUNER_ALPS_TSBH1_NTSC,
959                 .inputs         = {{
960                         .name = name_comp1,
961                         .vmux = 3,
962                 },{
963                         .name = name_tv,
964                         .vmux = 1,
965                         .amux = TV,
966                         .tv   = 1,
967                 },{
968                         .name = name_svideo,
969                         .vmux = 8,
970                 }},
971         },
972         [SAA7134_BOARD_AVERMEDIA_305] = {
973                 .name           = "AverMedia 305",
974                 .audio_clock    = 0x00187de7,
975                 .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
976                 .tda9887_conf   = TDA9887_PRESENT,
977                 .inputs         = {{
978                         .name = name_tv,
979                         .vmux = 1,
980                         .amux = LINE2,
981                         .tv   = 1,
982                 },{
983                         .name = name_comp1,
984                         .vmux = 0,
985                         .amux = LINE2,
986                 },{
987                         .name = name_comp2,
988                         .vmux = 3,
989                         .amux = LINE2,
990                 },{
991                         .name = name_svideo,
992                         .vmux = 8,
993                         .amux = LINE2,
994                 }},
995                 .radio = {
996                          .name = name_radio,
997                          .amux = LINE2,
998                  },
999                 .mute = {
1000                          .name = name_mute,
1001                          .amux = LINE1,
1002                 },
1003         },
1004         [SAA7133_BOARD_UPMOST_PURPLE_TV] = {
1005                 .name           = "UPMOST PURPLE TV",
1006                 .audio_clock    = 0x00187de7,
1007                 .tuner_type     = TUNER_PHILIPS_FM1236_MK3,
1008                 .tda9887_conf   = TDA9887_PRESENT,
1009                 .inputs         = {{
1010                         .name = name_tv,
1011                         .vmux = 7,
1012                         .amux = TV,
1013                         .tv   = 1,
1014                 },{
1015                         .name = name_svideo,
1016                         .vmux = 7,
1017                         .amux = LINE1,
1018                 }},
1019         },
1020         [SAA7134_BOARD_ITEMS_MTV005] = {
1021                 /* Norman Jonas <normanjonas@arcor.de> */
1022                 .name           = "Items MuchTV Plus / IT-005",
1023                 .audio_clock    = 0x00187de7,
1024                 .tuner_type     = TUNER_PHILIPS_PAL,
1025                 .inputs         = {{
1026                         .name = name_tv,
1027                         .vmux = 3,
1028                         .amux = TV,
1029                         .tv   = 1,
1030                 },{
1031                         .name   = name_comp1,
1032                         .vmux   = 1,
1033                         .amux   = LINE1,
1034                 },{
1035                         .name = name_svideo,
1036                         .vmux = 8,
1037                         .amux = LINE1,
1038                 }},
1039                 .radio = {
1040                         .name = name_radio,
1041                         .amux = LINE2,
1042                 },
1043         },
1044         [SAA7134_BOARD_CINERGY200] = {
1045                 .name           = "Terratec Cinergy 200 TV",
1046                 .audio_clock    = 0x00200000,
1047                 .tuner_type     = TUNER_PHILIPS_PAL,
1048                 .inputs         = {{
1049                         .name = name_tv,
1050                         .vmux = 1,
1051                         .amux = LINE2,
1052                         .gpio = 0x0000,
1053                         .tv   = 1,
1054                 }},
1055                 .mute = {
1056                          .name = name_mute,
1057                          .amux = LINE2,
1058                 },
1059         },
1060         [SAA7134_BOARD_VIDEOMATE_TV_PVR] = {
1061                 /* Alain St-Denis <alain@topaze.homeip.net> */
1062                 .name           = "Compro VideoMate TV PVR/FM",
1063                 .audio_clock    = 0x00187de7,
1064                 .tuner_type     = TUNER_PHILIPS_NTSC_M,
1065                 .gpiomask       = 0x808c0080,
1066                 .inputs         = {{
1067                         .name = name_svideo,
1068                         .vmux = 8,
1069                         .amux = LINE1,
1070                         .gpio = 0x00080
1071                 },{
1072                         .name = name_comp1,
1073                         .vmux = 3,
1074                         .amux = LINE1,
1075                         .gpio = 0x00080
1076                 },{
1077                         .name = name_tv,
1078                         .vmux = 1,
1079                         .amux = LINE2,
1080                         .tv   = 1,
1081                         .gpio = 0x00080
1082                 }},
1083                 .radio = {
1084                          .name = name_radio,
1085                          .amux = LINE2,
1086                         .gpio = 0x80000
1087                  },
1088                 .mute = {
1089                         .name = name_mute,
1090                         .amux = LINE2,
1091                         .gpio = 0x40000,
1092                 },
1093         },
1094 };
1095 const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards);
1096
1097 /* ------------------------------------------------------------------ */
1098 /* PCI ids + subsystem IDs                                            */
1099
1100 struct pci_device_id saa7134_pci_tbl[] = {
1101         {
1102                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1103                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
1104                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
1105                 .subdevice    = 0x2001,
1106                 .driver_data  = SAA7134_BOARD_PROTEUS_PRO,
1107         },{
1108                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1109                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
1110                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
1111                 .subdevice    = 0x2001,
1112                 .driver_data  = SAA7134_BOARD_PROTEUS_PRO,
1113         },{
1114                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1115                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
1116                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
1117                 .subdevice    = 0x6752,
1118                 .driver_data  = SAA7134_BOARD_EMPRESS,
1119         },{
1120                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1121                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
1122                 .subvendor    = 0x1131,
1123                 .subdevice    = 0x4e85,
1124                 .driver_data  = SAA7134_BOARD_MONSTERTV,
1125         },{
1126                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1127                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
1128                 .subvendor    = 0x153B,
1129                 .subdevice    = 0x1142,
1130                 .driver_data  = SAA7134_BOARD_CINERGY400,
1131         },{
1132                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1133                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
1134                 .subvendor    = 0x153B,
1135                 .subdevice    = 0x1143,
1136                 .driver_data  = SAA7134_BOARD_CINERGY600,
1137         },{
1138                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1139                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
1140                 .subvendor    = 0x5168,
1141                 .subdevice    = 0x0138,
1142                 .driver_data  = SAA7134_BOARD_FLYVIDEO3000,
1143         },{
1144                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1145                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
1146                 .subvendor    = 0x4e42,                         //"Typhoon PCI Capture TV Card" Art.No. 50673
1147                 .subdevice    = 0x0138,
1148                 .driver_data  = SAA7134_BOARD_FLYVIDEO3000,
1149         },{
1150                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1151                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
1152                 .subvendor    = 0x5168,
1153                 .subdevice    = 0x0138,
1154                 .driver_data  = SAA7134_BOARD_FLYVIDEO2000,
1155         },{
1156                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1157                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7135,
1158                 .subvendor    = 0x5168,
1159                 .subdevice    = 0x0212,
1160                 .driver_data  = SAA7134_BOARD_FLYTVPLATINUM,
1161         },{
1162                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1163                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
1164                 .subvendor    = 0x16be,
1165                 .subdevice    = 0x0003,
1166                 .driver_data  = SAA7134_BOARD_MD7134,
1167         },{
1168                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1169                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
1170                 .subvendor    = 0x1048,
1171                 .subdevice    = 0x226b,
1172                 .driver_data  = SAA7134_BOARD_ELSA,
1173         },{
1174                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1175                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
1176                 .subvendor    = 0x1048,
1177                 .subdevice    = 0x226b,
1178                 .driver_data  = SAA7134_BOARD_ELSA_500TV,
1179         },{
1180                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1181                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
1182                 .subvendor    = PCI_VENDOR_ID_ASUSTEK,
1183                 .subdevice    = 0x4842,
1184                 .driver_data  = SAA7134_BOARD_ASUSTeK_TVFM7134,
1185         },{
1186                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1187                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
1188                 .subvendor    = PCI_VENDOR_ID_ASUSTEK,
1189                 .subdevice    = 0x4830,
1190                 .driver_data  = SAA7134_BOARD_ASUSTeK_TVFM7134,
1191         },{
1192                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1193                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
1194                 .subvendor    = PCI_VENDOR_ID_ASUSTEK,
1195                 .subdevice    = 0x4843,
1196                 .driver_data  = SAA7134_BOARD_ASUSTEK_TVFM7133,
1197         },{
1198                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1199                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
1200                 .subvendor    = PCI_VENDOR_ID_ASUSTEK,
1201                 .subdevice    = 0x4840,
1202                 .driver_data  = SAA7134_BOARD_ASUSTeK_TVFM7134,
1203         },{
1204                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1205                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
1206                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
1207                 .subdevice    = 0xfe01,
1208                 .driver_data  = SAA7134_BOARD_TVSTATION_RDS,
1209         },{
1210                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1211                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
1212                 .subvendor    = 0x1894,
1213                 .subdevice    = 0xfe01,
1214                 .driver_data  = SAA7134_BOARD_TVSTATION_RDS,
1215         },{
1216                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1217                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
1218                 .subvendor    = 0x1894,
1219                 .subdevice    = 0xa006,
1220                 .driver_data  = SAA7134_BOARD_TVSTATION_DVR,
1221         },{
1222                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1223                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
1224                 .subvendor    = 0x1131,
1225                 .subdevice    = 0x7133,
1226                 .driver_data  = SAA7134_BOARD_VA1000POWER,
1227         },{
1228                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1229                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
1230                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
1231                 .subdevice    = 0x2001,
1232                 .driver_data  = SAA7134_BOARD_10MOONSTVMASTER,
1233         },{
1234                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1235                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
1236                 .subvendor    = 0x185b,
1237                 .subdevice    = 0xc100,
1238                 .driver_data  = SAA7134_BOARD_VIDEOMATE_TV,
1239         },{
1240                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1241                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
1242                 .subvendor    = PCI_VENDOR_ID_MATROX,
1243                 .subdevice    = 0x48d0,
1244                 .driver_data  = SAA7134_BOARD_CRONOS_PLUS,
1245         },{
1246                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1247                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
1248                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
1249                 .subdevice    = 0xa70b,
1250                 .driver_data  = SAA7134_BOARD_MD2819,
1251         },{
1252                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1253                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
1254                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
1255                 .subdevice    = 0x2115,
1256                 .driver_data  = SAA7134_BOARD_AVERMEDIA_305,
1257         },{
1258                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1259                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
1260                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
1261                 .subdevice    = 0x10ff,
1262                 .driver_data  = SAA7134_BOARD_AVERMEDIA_DVD_EZMAKER,
1263         },{
1264                 /* TransGear 3000TV */
1265                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1266                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
1267                 .subvendor    = 0x1461, /* Avermedia Technologies Inc */
1268                 .subdevice    = 0x050c,
1269                 .driver_data  = SAA7134_BOARD_TG3000TV,
1270         },{
1271                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1272                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
1273                 .subvendor    = 0x11bd,
1274                 .subdevice    = 0x002b,
1275                 .driver_data  = SAA7134_BOARD_PINNACLE_PCTV_STEREO,
1276         },{
1277                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1278                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
1279                 .subvendor    = 0x1019,
1280                 .subdevice    = 0x4cb4,
1281                 .driver_data  = SAA7134_BOARD_ECS_TVP3XP,
1282         },{
1283                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1284                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
1285                 .subvendor    = 0x1019,
1286                 .subdevice    = 0x4cb5,
1287                 .driver_data  = SAA7134_BOARD_ECS_TVP3XP_4CB5,
1288         },{
1289                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1290                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
1291                 .subvendor    = 0x12ab,
1292                 .subdevice    = 0x0800,
1293                 .driver_data  = SAA7133_BOARD_UPMOST_PURPLE_TV,
1294         },{
1295                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1296                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
1297                 .subvendor    = 0x153B,
1298                 .subdevice    = 0x1152,
1299                 .driver_data  = SAA7134_BOARD_CINERGY200,
1300
1301         },{
1302                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1303                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
1304                 .subvendor    = 0x185b,
1305                 .subdevice    = 0xc100,
1306                 .driver_data  = SAA7134_BOARD_VIDEOMATE_TV_PVR,
1307                 
1308         },{
1309                 /* --- boards without eeprom + subsystem ID --- */
1310                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1311                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
1312                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
1313                 .subdevice    = 0,
1314                 .driver_data  = SAA7134_BOARD_NOAUTO,
1315         },{
1316                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1317                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
1318                 .subvendor    = PCI_VENDOR_ID_PHILIPS,
1319                 .subdevice    = 0,
1320                 .driver_data  = SAA7134_BOARD_NOAUTO,
1321         },{
1322                 
1323                 /* --- default catch --- */
1324                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1325                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
1326                 .subvendor    = PCI_ANY_ID,
1327                 .subdevice    = PCI_ANY_ID,
1328                 .driver_data  = SAA7134_BOARD_UNKNOWN,
1329         },{
1330                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1331                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
1332                 .subvendor    = PCI_ANY_ID,
1333                 .subdevice    = PCI_ANY_ID,
1334                 .driver_data  = SAA7134_BOARD_UNKNOWN,
1335         },{
1336                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1337                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
1338                 .subvendor    = PCI_ANY_ID,
1339                 .subdevice    = PCI_ANY_ID,
1340                 .driver_data  = SAA7134_BOARD_UNKNOWN,
1341         },{
1342                 .vendor       = PCI_VENDOR_ID_PHILIPS,
1343                 .device       = PCI_DEVICE_ID_PHILIPS_SAA7135,
1344                 .subvendor    = PCI_ANY_ID,
1345                 .subdevice    = PCI_ANY_ID,
1346                 .driver_data  = SAA7134_BOARD_UNKNOWN,
1347         },{
1348                 /* --- end of list --- */
1349         }
1350 };
1351 MODULE_DEVICE_TABLE(pci, saa7134_pci_tbl);
1352
1353 /* ----------------------------------------------------------- */
1354 /* flyvideo tweaks                                             */
1355
1356 #if 0
1357 static struct {
1358         char  *model;
1359         int   tuner_type;
1360 } fly_list[0x20] = {
1361         /* default catch ... */
1362         [ 0 ... 0x1f ] = {
1363                 .model      = "UNKNOWN",
1364                 .tuner_type = TUNER_ABSENT,
1365         },
1366         /* ... the ones known so far */
1367         [ 0x05 ] = {
1368                 .model      = "PAL-BG",
1369                 .tuner_type = TUNER_LG_PAL_NEW_TAPC,
1370         },
1371         [ 0x10 ] = {
1372                 .model      = "PAL-BG / PAL-DK",
1373                 .tuner_type = TUNER_PHILIPS_PAL,
1374         },
1375         [ 0x15 ] = {
1376                 .model      = "NTSC",
1377                 .tuner_type = TUNER_ABSENT /* FIXME */,
1378         },
1379 };
1380 #endif
1381
1382 static void board_flyvideo(struct saa7134_dev *dev)
1383 {
1384 #if 0
1385         /* non-working attempt to detect the correct tuner type ... */
1386         u32 value;
1387         int index;
1388
1389         value = dev->gpio_value;
1390         index = (value & 0x1f00) >> 8;
1391         printk(KERN_INFO "%s: flyvideo: gpio is 0x%x [model=%s,tuner=%d]\n",
1392                dev->name, value, fly_list[index].model,
1393                fly_list[index].tuner_type);
1394         dev->tuner_type = fly_list[index].tuner_type;
1395 #endif
1396         printk("%s: there are different flyvideo cards with different tuners\n"
1397                "%s: out there, you might have to use the tuner=<nr> insmod\n"
1398                "%s: option to override the default value.\n",
1399                dev->name, dev->name, dev->name);
1400 }
1401
1402 /* ----------------------------------------------------------- */
1403
1404 int saa7134_board_init(struct saa7134_dev *dev)
1405 {
1406         // Always print gpio, often manufacturers encode tuner type and other info.
1407         saa_writel(SAA7134_GPIO_GPMODE0 >> 2, 0);
1408         dev->gpio_value = saa_readl(SAA7134_GPIO_GPSTATUS0 >> 2);
1409         printk(KERN_INFO "%s: board init: gpio is %x\n", dev->name, dev->gpio_value);
1410
1411         switch (dev->board) {
1412         case SAA7134_BOARD_FLYVIDEO2000:
1413         case SAA7134_BOARD_FLYVIDEO3000:
1414                 dev->has_remote = 1;
1415                 /* fall throuth */
1416         case SAA7134_BOARD_FLYTVPLATINUM:
1417                 board_flyvideo(dev);
1418                 break;
1419         case SAA7134_BOARD_CINERGY400:
1420         case SAA7134_BOARD_CINERGY600:
1421         case SAA7134_BOARD_ECS_TVP3XP:
1422         case SAA7134_BOARD_ECS_TVP3XP_4CB5:
1423                 dev->has_remote = 1;
1424                 break;
1425         case SAA7134_BOARD_AVACSSMARTTV:
1426                 dev->has_remote = 1;
1427                 break;
1428         case SAA7134_BOARD_MD5044:
1429                 printk("%s: seems there are two different versions of the MD5044\n"
1430                        "%s: (with the same ID) out there.  If sound doesn't work for\n"
1431                        "%s: you try the audio_clock_override=0x200000 insmod option.\n",
1432                        dev->name,dev->name,dev->name);
1433                 break;
1434         }
1435         return 0;
1436 }
1437
1438 /* ----------------------------------------------------------- */
1439 /*
1440  * Local variables:
1441  * c-basic-offset: 8
1442  * End:
1443  */