Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
saa7134-cards.c
Go to the documentation of this file.
1 /*
2  *
3  * device driver for philips saa7134 based TV cards
4  * card-specific stuff.
5  *
6  * (c) 2001-04 Gerd Knorr <[email protected]> [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 #include <linux/i2c.h>
26 #include <linux/i2c-algo-bit.h>
27 
28 #include "saa7134-reg.h"
29 #include "saa7134.h"
30 #include "tuner-xc2028.h"
31 #include <media/v4l2-common.h>
32 #include <media/tveeprom.h>
33 #include "tea5767.h"
34 #include "tda18271.h"
35 #include "xc5000.h"
36 #include "s5h1411.h"
37 
38 /* commly used strings */
39 static char name_mute[] = "mute";
40 static char name_radio[] = "Radio";
41 static char name_tv[] = "Television";
42 static char name_tv_mono[] = "TV (mono only)";
43 static char name_comp[] = "Composite";
44 static char name_comp1[] = "Composite1";
45 static char name_comp2[] = "Composite2";
46 static char name_comp3[] = "Composite3";
47 static char name_comp4[] = "Composite4";
48 static char name_svideo[] = "S-Video";
49 
50 /* ------------------------------------------------------------------ */
51 /* board config info */
52 
53 /* If radio_type !=UNSET, radio_addr should be specified
54  */
55 
58  .name = "UNKNOWN/GENERIC",
59  .audio_clock = 0x00187de7,
60  .tuner_type = TUNER_ABSENT,
61  .radio_type = UNSET,
62  .tuner_addr = ADDR_UNSET,
63  .radio_addr = ADDR_UNSET,
64 
65  .inputs = {{
66  .name = "default",
67  .vmux = 0,
68  .amux = LINE1,
69  }},
70  },
72  /* /me */
73  .name = "Proteus Pro [philips reference design]",
74  .audio_clock = 0x00187de7,
75  .tuner_type = TUNER_PHILIPS_PAL,
76  .radio_type = UNSET,
77  .tuner_addr = ADDR_UNSET,
78  .radio_addr = ADDR_UNSET,
79 
80  .inputs = {{
81  .name = name_comp1,
82  .vmux = 0,
83  .amux = LINE1,
84  },{
85  .name = name_tv,
86  .vmux = 1,
87  .amux = TV,
88  .tv = 1,
89  },{
90  .name = name_tv_mono,
91  .vmux = 1,
92  .amux = LINE2,
93  .tv = 1,
94  }},
95  .radio = {
96  .name = name_radio,
97  .amux = LINE2,
98  },
99  },
101  /* "Marco d'Itri" <[email protected]> */
102  .name = "LifeView FlyVIDEO3000",
103  .audio_clock = 0x00200000,
104  .tuner_type = TUNER_PHILIPS_PAL,
105  .radio_type = UNSET,
106  .tuner_addr = ADDR_UNSET,
107  .radio_addr = ADDR_UNSET,
108 
109  .gpiomask = 0xe000,
110  .inputs = {{
111  .name = name_tv,
112  .vmux = 1,
113  .amux = TV,
114  .gpio = 0x8000,
115  .tv = 1,
116  },{
117  .name = name_tv_mono,
118  .vmux = 1,
119  .amux = LINE2,
120  .gpio = 0x0000,
121  .tv = 1,
122  },{
123  .name = name_comp1,
124  .vmux = 0,
125  .amux = LINE2,
126  .gpio = 0x4000,
127  },{
128  .name = name_comp2,
129  .vmux = 3,
130  .amux = LINE2,
131  .gpio = 0x4000,
132  },{
133  .name = name_svideo,
134  .vmux = 8,
135  .amux = LINE2,
136  .gpio = 0x4000,
137  }},
138  .radio = {
139  .name = name_radio,
140  .amux = LINE2,
141  .gpio = 0x2000,
142  },
143  .mute = {
144  .name = name_mute,
145  .amux = TV,
146  .gpio = 0x8000,
147  },
148  },
150  /* "TC Wan" <[email protected]> */
151  .name = "LifeView/Typhoon FlyVIDEO2000",
152  .audio_clock = 0x00200000,
153  .tuner_type = TUNER_LG_PAL_NEW_TAPC,
154  .radio_type = UNSET,
155  .tuner_addr = ADDR_UNSET,
156  .radio_addr = ADDR_UNSET,
157 
158  .gpiomask = 0xe000,
159  .inputs = {{
160  .name = name_tv,
161  .vmux = 1,
162  .amux = LINE2,
163  .gpio = 0x0000,
164  .tv = 1,
165  },{
166  .name = name_comp1,
167  .vmux = 0,
168  .amux = LINE2,
169  .gpio = 0x4000,
170  },{
171  .name = name_comp2,
172  .vmux = 3,
173  .amux = LINE2,
174  .gpio = 0x4000,
175  },{
176  .name = name_svideo,
177  .vmux = 8,
178  .amux = LINE2,
179  .gpio = 0x4000,
180  }},
181  .radio = {
182  .name = name_radio,
183  .amux = LINE2,
184  .gpio = 0x2000,
185  },
186  .mute = {
187  .name = name_mute,
188  .amux = LINE2,
189  .gpio = 0x8000,
190  },
191  },
193  /* "Arnaud Quette" <[email protected]> */
194  .name = "LifeView FlyTV Platinum Mini",
195  .audio_clock = 0x00200000,
196  .tuner_type = TUNER_PHILIPS_TDA8290,
197  .radio_type = UNSET,
198  .tuner_addr = ADDR_UNSET,
199  .radio_addr = ADDR_UNSET,
200 
201  .inputs = {{
202  .name = name_tv,
203  .vmux = 1,
204  .amux = TV,
205  .tv = 1,
206  },{
207  .name = name_comp1, /* Composite signal on S-Video input */
208  .vmux = 0,
209  .amux = LINE2,
210  },{
211  .name = name_comp2, /* Composite input */
212  .vmux = 3,
213  .amux = LINE2,
214  },{
215  .name = name_svideo,
216  .vmux = 8,
217  .amux = LINE2,
218  }},
219  },
221  /* LifeView FlyTV Platinum FM (LR214WF) */
222  /* "Peter Missel <[email protected]> */
223  .name = "LifeView FlyTV Platinum FM / Gold",
224  .audio_clock = 0x00200000,
225  .tuner_type = TUNER_PHILIPS_TDA8290,
226  .radio_type = UNSET,
227  .tuner_addr = ADDR_UNSET,
228  .radio_addr = ADDR_UNSET,
229 
230  .gpiomask = 0x1E000, /* Set GP16 and unused 15,14,13 to Output */
231  .inputs = {{
232  .name = name_tv,
233  .vmux = 1,
234  .amux = TV,
235  .gpio = 0x10000, /* GP16=1 selects TV input */
236  .tv = 1,
237  },{
238 /* .name = name_tv_mono,
239  .vmux = 1,
240  .amux = LINE2,
241  .gpio = 0x0000,
242  .tv = 1,
243  },{
244 */ .name = name_comp1, /* Composite signal on S-Video input */
245  .vmux = 0,
246  .amux = LINE2,
247 /* .gpio = 0x4000, */
248  },{
249  .name = name_comp2, /* Composite input */
250  .vmux = 3,
251  .amux = LINE2,
252 /* .gpio = 0x4000, */
253  },{
254  .name = name_svideo, /* S-Video signal on S-Video input */
255  .vmux = 8,
256  .amux = LINE2,
257 /* .gpio = 0x4000, */
258  }},
259  .radio = {
260  .name = name_radio,
261  .amux = TV,
262  .gpio = 0x00000, /* GP16=0 selects FM radio antenna */
263  },
264  .mute = {
265  .name = name_mute,
266  .amux = TV,
267  .gpio = 0x10000,
268  },
269  },
271  /* RoverMedia TV Link Pro FM (LR138 REV:I) */
272  /* Eugene Yudin <[email protected]> */
273  .name = "RoverMedia TV Link Pro FM",
274  .audio_clock = 0x00200000,
275  .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, /* TCL MFPE05 2 */
276  .radio_type = UNSET,
277  .tuner_addr = ADDR_UNSET,
278  .radio_addr = ADDR_UNSET,
279  .tda9887_conf = TDA9887_PRESENT,
280  .gpiomask = 0xe000,
281  .inputs = { {
282  .name = name_tv,
283  .vmux = 1,
284  .amux = TV,
285  .gpio = 0x8000,
286  .tv = 1,
287  }, {
288  .name = name_tv_mono,
289  .vmux = 1,
290  .amux = LINE2,
291  .gpio = 0x0000,
292  .tv = 1,
293  }, {
294  .name = name_comp1,
295  .vmux = 0,
296  .amux = LINE2,
297  .gpio = 0x4000,
298  }, {
299  .name = name_comp2,
300  .vmux = 3,
301  .amux = LINE2,
302  .gpio = 0x4000,
303  }, {
304  .name = name_svideo,
305  .vmux = 8,
306  .amux = LINE2,
307  .gpio = 0x4000,
308  } },
309  .radio = {
310  .name = name_radio,
311  .amux = LINE2,
312  .gpio = 0x2000,
313  },
314  .mute = {
315  .name = name_mute,
316  .amux = TV,
317  .gpio = 0x8000,
318  },
319  },
321  /* "Gert Vervoort" <[email protected]> */
322  .name = "EMPRESS",
323  .audio_clock = 0x00187de7,
324  .tuner_type = TUNER_PHILIPS_PAL,
325  .radio_type = UNSET,
326  .tuner_addr = ADDR_UNSET,
327  .radio_addr = ADDR_UNSET,
328  .empress_addr = 0x20,
329 
330  .inputs = {{
331  .name = name_comp1,
332  .vmux = 0,
333  .amux = LINE1,
334  },{
335  .name = name_svideo,
336  .vmux = 8,
337  .amux = LINE1,
338  },{
339  .name = name_tv,
340  .vmux = 1,
341  .amux = LINE2,
342  .tv = 1,
343  }},
344  .radio = {
345  .name = name_radio,
346  .amux = LINE2,
347  },
348  .mpeg = SAA7134_MPEG_EMPRESS,
349  .video_out = CCIR656,
350  },
352  /* "K.Ohta" <[email protected]> */
353  .name = "SKNet Monster TV",
354  .audio_clock = 0x00187de7,
355  .tuner_type = TUNER_PHILIPS_NTSC_M,
356  .radio_type = UNSET,
357  .tuner_addr = ADDR_UNSET,
358  .radio_addr = ADDR_UNSET,
359 
360  .inputs = {{
361  .name = name_tv,
362  .vmux = 1,
363  .amux = TV,
364  .tv = 1,
365  },{
366  .name = name_comp1,
367  .vmux = 0,
368  .amux = LINE1,
369  },{
370  .name = name_svideo,
371  .vmux = 8,
372  .amux = LINE1,
373  }},
374  .radio = {
375  .name = name_radio,
376  .amux = LINE2,
377  },
378  },
380  .name = "Tevion MD 9717",
381  .audio_clock = 0x00200000,
382  .tuner_type = TUNER_PHILIPS_PAL,
383  .radio_type = UNSET,
384  .tuner_addr = ADDR_UNSET,
385  .radio_addr = ADDR_UNSET,
386  .inputs = {{
387  .name = name_tv,
388  .vmux = 1,
389  .amux = TV,
390  .tv = 1,
391  },{
392  /* workaround for problems with normal TV sound */
393  .name = name_tv_mono,
394  .vmux = 1,
395  .amux = LINE2,
396  .tv = 1,
397  },{
398  .name = name_comp1,
399  .vmux = 0,
400  .amux = LINE1,
401  },{
402  .name = name_comp2,
403  .vmux = 3,
404  .amux = LINE1,
405  },{
406  .name = name_svideo,
407  .vmux = 8,
408  .amux = LINE1,
409  }},
410  .radio = {
411  .name = name_radio,
412  .amux = LINE2,
413  },
414  .mute = {
415  .name = name_mute,
416  .amux = TV,
417  },
418  },
420  /* Typhoon TV Tuner RDS: Art.Nr. 50694 */
421  .name = "KNC One TV-Station RDS / Typhoon TV Tuner RDS",
422  .audio_clock = 0x00200000,
423  .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
424  .radio_type = UNSET,
425  .tuner_addr = ADDR_UNSET,
426  .radio_addr = ADDR_UNSET,
427  .tda9887_conf = TDA9887_PRESENT,
428  .inputs = {{
429  .name = name_tv,
430  .vmux = 1,
431  .amux = TV,
432  .tv = 1,
433  },{
434  .name = name_tv_mono,
435  .vmux = 1,
436  .amux = LINE2,
437  .tv = 1,
438  },{
439 
440  .name = name_svideo,
441  .vmux = 8,
442  .amux = LINE1,
443  },{
444  .name = name_comp1,
445  .vmux = 3,
446  .amux = LINE1,
447  },{
448 
449  .name = "CVid over SVid",
450  .vmux = 0,
451  .amux = LINE1,
452  }},
453  .radio = {
454  .name = name_radio,
455  .amux = LINE2,
456  },
457  },
459  .name = "KNC One TV-Station DVR",
460  .audio_clock = 0x00200000,
461  .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
462  .radio_type = UNSET,
463  .tuner_addr = ADDR_UNSET,
464  .radio_addr = ADDR_UNSET,
465  .empress_addr = 0x20,
466  .tda9887_conf = TDA9887_PRESENT,
467  .gpiomask = 0x820000,
468  .inputs = {{
469  .name = name_tv,
470  .vmux = 1,
471  .amux = TV,
472  .tv = 1,
473  .gpio = 0x20000,
474  },{
475  .name = name_svideo,
476  .vmux = 8,
477  .amux = LINE1,
478  .gpio = 0x20000,
479  },{
480  .name = name_comp1,
481  .vmux = 3,
482  .amux = LINE1,
483  .gpio = 0x20000,
484  }},
485  .radio = {
486  .name = name_radio,
487  .amux = LINE2,
488  .gpio = 0x20000,
489  },
490  .mpeg = SAA7134_MPEG_EMPRESS,
491  .video_out = CCIR656,
492  },
494  .name = "Terratec Cinergy 400 TV",
495  .audio_clock = 0x00200000,
496  .tuner_type = TUNER_PHILIPS_PAL,
497  .radio_type = UNSET,
498  .tuner_addr = ADDR_UNSET,
499  .radio_addr = ADDR_UNSET,
500  .inputs = {{
501  .name = name_tv,
502  .vmux = 1,
503  .amux = TV,
504  .tv = 1,
505  },{
506  .name = name_comp1,
507  .vmux = 4,
508  .amux = LINE1,
509  },{
510  .name = name_svideo,
511  .vmux = 8,
512  .amux = LINE1,
513  },{
514  .name = name_comp2, /* CVideo over SVideo Connector */
515  .vmux = 0,
516  .amux = LINE1,
517  }}
518  },
520  .name = "Medion 5044",
521  .audio_clock = 0x00187de7, /* was: 0x00200000, */
522  .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
523  .radio_type = UNSET,
524  .tuner_addr = ADDR_UNSET,
525  .radio_addr = ADDR_UNSET,
526  .tda9887_conf = TDA9887_PRESENT,
527  .inputs = {{
528  .name = name_tv,
529  .vmux = 1,
530  .amux = TV,
531  .tv = 1,
532  },{
533  /* workaround for problems with normal TV sound */
534  .name = name_tv_mono,
535  .vmux = 1,
536  .amux = LINE2,
537  .tv = 1,
538  },{
539  .name = name_comp1,
540  .vmux = 0,
541  .amux = LINE2,
542  },{
543  .name = name_comp2,
544  .vmux = 3,
545  .amux = LINE2,
546  },{
547  .name = name_svideo,
548  .vmux = 8,
549  .amux = LINE2,
550  }},
551  .radio = {
552  .name = name_radio,
553  .amux = LINE2,
554  },
555  },
557  .name = "Kworld/KuroutoShikou SAA7130-TVPCI",
558  .audio_clock = 0x00187de7,
559  .tuner_type = TUNER_PHILIPS_NTSC_M,
560  .radio_type = UNSET,
561  .tuner_addr = ADDR_UNSET,
562  .radio_addr = ADDR_UNSET,
563  .inputs = {{
564  .name = name_svideo,
565  .vmux = 8,
566  .amux = LINE1,
567  },{
568  .name = name_comp1,
569  .vmux = 3,
570  .amux = LINE1,
571  },{
572  .name = name_tv,
573  .vmux = 1,
574  .amux = LINE2,
575  .tv = 1,
576  }},
577  },
579  .name = "Terratec Cinergy 600 TV",
580  .audio_clock = 0x00200000,
581  .tuner_type = TUNER_PHILIPS_PAL,
582  .radio_type = UNSET,
583  .tuner_addr = ADDR_UNSET,
584  .radio_addr = ADDR_UNSET,
585  .tda9887_conf = TDA9887_PRESENT,
586  .inputs = {{
587  .name = name_tv,
588  .vmux = 1,
589  .amux = TV,
590  .tv = 1,
591  },{
592  .name = name_comp1,
593  .vmux = 4,
594  .amux = LINE1,
595  },{
596  .name = name_svideo,
597  .vmux = 8,
598  .amux = LINE1,
599  },{
600  .name = name_comp2, /* CVideo over SVideo Connector */
601  .vmux = 0,
602  .amux = LINE1,
603  }},
604  .radio = {
605  .name = name_radio,
606  .amux = LINE2,
607  },
608  },
610  .name = "Medion 7134",
611  .audio_clock = 0x00187de7,
612  .tuner_type = TUNER_PHILIPS_FMD1216ME_MK3,
613  .radio_type = UNSET,
614  .tuner_addr = ADDR_UNSET,
615  .radio_addr = ADDR_UNSET,
616  .tda9887_conf = TDA9887_PRESENT,
617  .mpeg = SAA7134_MPEG_DVB,
618  .inputs = {{
619  .name = name_tv,
620  .vmux = 1,
621  .amux = TV,
622  .tv = 1,
623  },{
624  .name = name_comp1,
625  .vmux = 0,
626  .amux = LINE1,
627  },{
628  .name = name_svideo,
629  .vmux = 8,
630  .amux = LINE1,
631  }},
632  .radio = {
633  .name = name_radio,
634  .amux = LINE2,
635  },
636  .mute = {
637  .name = name_mute,
638  .amux = TV,
639  },
640  },
642  /* aka Typhoon "TV+Radio", Art.Nr 90031 */
643  /* Tom Zoerner <tomzo at users sourceforge net> */
644  .name = "Typhoon TV+Radio 90031",
645  .audio_clock = 0x00200000,
646  .tuner_type = TUNER_PHILIPS_PAL,
647  .radio_type = UNSET,
648  .tuner_addr = ADDR_UNSET,
649  .radio_addr = ADDR_UNSET,
650  .tda9887_conf = TDA9887_PRESENT,
651  .inputs = {{
652  .name = name_tv,
653  .vmux = 1,
654  .amux = TV,
655  .tv = 1,
656  },{
657  .name = name_comp1,
658  .vmux = 3,
659  .amux = LINE1,
660  },{
661  .name = name_svideo,
662  .vmux = 8,
663  .amux = LINE1,
664  }},
665  .radio = {
666  .name = name_radio,
667  .amux = LINE2,
668  },
669  },
670  [SAA7134_BOARD_ELSA] = {
671  .name = "ELSA EX-VISION 300TV",
672  .audio_clock = 0x00187de7,
673  .tuner_type = TUNER_HITACHI_NTSC,
674  .radio_type = UNSET,
675  .tuner_addr = ADDR_UNSET,
676  .radio_addr = ADDR_UNSET,
677  .inputs = {{
678  .name = name_svideo,
679  .vmux = 8,
680  .amux = LINE1,
681  },{
682  .name = name_comp1,
683  .vmux = 0,
684  .amux = LINE1,
685  },{
686  .name = name_tv,
687  .vmux = 4,
688  .amux = LINE2,
689  .tv = 1,
690  }},
691  },
693  .name = "ELSA EX-VISION 500TV",
694  .audio_clock = 0x00187de7,
695  .tuner_type = TUNER_HITACHI_NTSC,
696  .radio_type = UNSET,
697  .tuner_addr = ADDR_UNSET,
698  .radio_addr = ADDR_UNSET,
699  .inputs = {{
700  .name = name_svideo,
701  .vmux = 7,
702  .amux = LINE1,
703  },{
704  .name = name_tv,
705  .vmux = 8,
706  .amux = TV,
707  .tv = 1,
708  },{
709  .name = name_tv_mono,
710  .vmux = 8,
711  .amux = LINE2,
712  .tv = 1,
713  }},
714  },
716  .name = "ELSA EX-VISION 700TV",
717  .audio_clock = 0x00187de7,
718  .tuner_type = TUNER_HITACHI_NTSC,
719  .radio_type = UNSET,
720  .tuner_addr = ADDR_UNSET,
721  .radio_addr = ADDR_UNSET,
722  .inputs = {{
723  .name = name_tv,
724  .vmux = 4,
725  .amux = LINE2,
726  .tv = 1,
727  },{
728  .name = name_comp1,
729  .vmux = 6,
730  .amux = LINE1,
731  },{
732  .name = name_svideo,
733  .vmux = 7,
734  .amux = LINE1,
735  }},
736  .mute = {
737  .name = name_mute,
738  .amux = TV,
739  },
740  },
742  .name = "ASUS TV-FM 7134",
743  .audio_clock = 0x00187de7,
744  .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
745  .radio_type = UNSET,
746  .tuner_addr = ADDR_UNSET,
747  .radio_addr = ADDR_UNSET,
748  .tda9887_conf = TDA9887_PRESENT,
749  .inputs = {{
750  .name = name_tv,
751  .vmux = 1,
752  .amux = TV,
753  .tv = 1,
754  },{
755  .name = name_comp1,
756  .vmux = 4,
757  .amux = LINE2,
758  },{
759  .name = name_svideo,
760  .vmux = 6,
761  .amux = LINE2,
762  }},
763  .radio = {
764  .name = name_radio,
765  .amux = LINE1,
766  },
767  },
769  .name = "ASUS TV-FM 7135",
770  .audio_clock = 0x00187de7,
771  .tuner_type = TUNER_PHILIPS_TDA8290,
772  .radio_type = UNSET,
773  .tuner_addr = ADDR_UNSET,
774  .radio_addr = ADDR_UNSET,
775  .gpiomask = 0x200000,
776  .inputs = {{
777  .name = name_tv,
778  .vmux = 1,
779  .amux = TV,
780  .gpio = 0x0000,
781  .tv = 1,
782  },{
783  .name = name_comp1,
784  .vmux = 4,
785  .amux = LINE2,
786  .gpio = 0x0000,
787  },{
788  .name = name_svideo,
789  .vmux = 6,
790  .amux = LINE2,
791  .gpio = 0x0000,
792  }},
793  .radio = {
794  .name = name_radio,
795  .amux = TV,
796  .gpio = 0x200000,
797  },
798  .mute = {
799  .name = name_mute,
800  .gpio = 0x0000,
801  },
802 
803  },
805  .name = "AOPEN VA1000 POWER",
806  .audio_clock = 0x00187de7,
807  .tuner_type = TUNER_PHILIPS_NTSC,
808  .radio_type = UNSET,
809  .tuner_addr = ADDR_UNSET,
810  .radio_addr = ADDR_UNSET,
811  .inputs = {{
812  .name = name_svideo,
813  .vmux = 8,
814  .amux = LINE1,
815  },{
816  .name = name_comp1,
817  .vmux = 3,
818  .amux = LINE1,
819  },{
820  .name = name_tv,
821  .vmux = 1,
822  .amux = LINE2,
823  .tv = 1,
824  }},
825  },
827  /* "lilicheng" <[email protected]> */
828  .name = "10MOONS PCI TV CAPTURE CARD",
829  .audio_clock = 0x00200000,
830  .tuner_type = TUNER_LG_PAL_NEW_TAPC,
831  .radio_type = UNSET,
832  .tuner_addr = ADDR_UNSET,
833  .radio_addr = ADDR_UNSET,
834  .gpiomask = 0xe000,
835  .inputs = {{
836  .name = name_tv,
837  .vmux = 1,
838  .amux = LINE2,
839  .gpio = 0x0000,
840  .tv = 1,
841  },{
842  .name = name_comp1,
843  .vmux = 0,
844  .amux = LINE2,
845  .gpio = 0x4000,
846  },{
847  .name = name_comp2,
848  .vmux = 3,
849  .amux = LINE2,
850  .gpio = 0x4000,
851  },{
852  .name = name_svideo,
853  .vmux = 8,
854  .amux = LINE2,
855  .gpio = 0x4000,
856  }},
857  .radio = {
858  .name = name_radio,
859  .amux = LINE2,
860  .gpio = 0x2000,
861  },
862  .mute = {
863  .name = name_mute,
864  .amux = LINE2,
865  .gpio = 0x8000,
866  },
867  },
869  /* "Andrew de Quincey" <[email protected]> */
870  .name = "BMK MPEX No Tuner",
871  .audio_clock = 0x200000,
872  .tuner_type = TUNER_ABSENT,
873  .radio_type = UNSET,
874  .tuner_addr = ADDR_UNSET,
875  .radio_addr = ADDR_UNSET,
876  .empress_addr = 0x20,
877  .inputs = {{
878  .name = name_comp1,
879  .vmux = 4,
880  .amux = LINE1,
881  },{
882  .name = name_comp2,
883  .vmux = 3,
884  .amux = LINE1,
885  },{
886  .name = name_comp3,
887  .vmux = 0,
888  .amux = LINE1,
889  },{
890  .name = name_comp4,
891  .vmux = 1,
892  .amux = LINE1,
893  },{
894  .name = name_svideo,
895  .vmux = 8,
896  .amux = LINE1,
897  }},
898  .mpeg = SAA7134_MPEG_EMPRESS,
899  .video_out = CCIR656,
900  },
902  .name = "Compro VideoMate TV",
903  .audio_clock = 0x00187de7,
904  .tuner_type = TUNER_PHILIPS_NTSC_M,
905  .radio_type = UNSET,
906  .tuner_addr = ADDR_UNSET,
907  .radio_addr = ADDR_UNSET,
908  .inputs = {{
909  .name = name_svideo,
910  .vmux = 8,
911  .amux = LINE1,
912  },{
913  .name = name_comp1,
914  .vmux = 3,
915  .amux = LINE1,
916  },{
917  .name = name_tv,
918  .vmux = 1,
919  .amux = LINE2,
920  .tv = 1,
921  }},
922  },
924  .name = "Compro VideoMate TV Gold+",
925  .audio_clock = 0x00187de7,
926  .tuner_type = TUNER_PHILIPS_NTSC_M,
927  .gpiomask = 0x800c0000,
928  .radio_type = UNSET,
929  .tuner_addr = ADDR_UNSET,
930  .radio_addr = ADDR_UNSET,
931  .inputs = {{
932  .name = name_svideo,
933  .vmux = 8,
934  .amux = LINE1,
935  .gpio = 0x06c00012,
936  },{
937  .name = name_comp1,
938  .vmux = 3,
939  .amux = LINE1,
940  .gpio = 0x0ac20012,
941  },{
942  .name = name_tv,
943  .vmux = 1,
944  .amux = LINE2,
945  .gpio = 0x08c20012,
946  .tv = 1,
947  }}, /* radio and probably mute is missing */
948  },
950  /*
951  gpio pins:
952  0 .. 3 BASE_ID
953  4 .. 7 PROTECT_ID
954  8 .. 11 USER_OUT
955  12 .. 13 USER_IN
956  14 .. 15 VIDIN_SEL
957  */
958  .name = "Matrox CronosPlus",
959  .tuner_type = TUNER_ABSENT,
960  .radio_type = UNSET,
961  .tuner_addr = ADDR_UNSET,
962  .radio_addr = ADDR_UNSET,
963  .gpiomask = 0xcf00,
964  .inputs = {{
965  .name = name_comp1,
966  .vmux = 0,
967  .gpio = 2 << 14,
968  },{
969  .name = name_comp2,
970  .vmux = 0,
971  .gpio = 1 << 14,
972  },{
973  .name = name_comp3,
974  .vmux = 0,
975  .gpio = 0 << 14,
976  },{
977  .name = name_comp4,
978  .vmux = 0,
979  .gpio = 3 << 14,
980  },{
981  .name = name_svideo,
982  .vmux = 8,
983  .gpio = 2 << 14,
984  }},
985  },
987  .name = "AverMedia M156 / Medion 2819",
988  .audio_clock = 0x00187de7,
989  .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
990  .radio_type = UNSET,
991  .tuner_addr = ADDR_UNSET,
992  .radio_addr = ADDR_UNSET,
993  .tda9887_conf = TDA9887_PRESENT,
994  .gpiomask = 0x03,
995  .inputs = {{
996  .name = name_tv,
997  .vmux = 1,
998  .amux = TV,
999  .tv = 1,
1000  .gpio = 0x00,
1001  }, {
1002  .name = name_comp1,
1003  .vmux = 3,
1004  .amux = LINE1,
1005  .gpio = 0x02,
1006  }, {
1007  .name = name_comp2,
1008  .vmux = 0,
1009  .amux = LINE1,
1010  .gpio = 0x02,
1011  }, {
1012  .name = name_svideo,
1013  .vmux = 8,
1014  .amux = LINE1,
1015  .gpio = 0x02,
1016  } },
1017  .radio = {
1018  .name = name_radio,
1019  .amux = LINE1,
1020  .gpio = 0x01,
1021  },
1022  .mute = {
1023  .name = name_mute,
1024  .amux = TV,
1025  .gpio = 0x00,
1026  },
1027  },
1029  /* "Greg Wickham <[email protected]> */
1030  .name = "BMK MPEX Tuner",
1031  .audio_clock = 0x200000,
1032  .tuner_type = TUNER_PHILIPS_PAL,
1033  .radio_type = UNSET,
1034  .tuner_addr = ADDR_UNSET,
1035  .radio_addr = ADDR_UNSET,
1036  .empress_addr = 0x20,
1037  .inputs = {{
1038  .name = name_comp1,
1039  .vmux = 1,
1040  .amux = LINE1,
1041  },{
1042  .name = name_svideo,
1043  .vmux = 8,
1044  .amux = LINE1,
1045  },{
1046  .name = name_tv,
1047  .vmux = 3,
1048  .amux = TV,
1049  .tv = 1,
1050  }},
1051  .mpeg = SAA7134_MPEG_EMPRESS,
1052  .video_out = CCIR656,
1053  },
1055  .name = "ASUS TV-FM 7133",
1056  .audio_clock = 0x00187de7,
1057  /* probably wrong, the 7133 one is the NTSC version ...
1058  * .tuner_type = TUNER_PHILIPS_FM1236_MK3 */
1059  .tuner_type = TUNER_LG_NTSC_NEW_TAPC,
1060  .radio_type = UNSET,
1061  .tuner_addr = ADDR_UNSET,
1062  .radio_addr = ADDR_UNSET,
1063  .tda9887_conf = TDA9887_PRESENT,
1064  .inputs = {{
1065  .name = name_tv,
1066  .vmux = 1,
1067  .amux = TV,
1068  .tv = 1,
1069 
1070  },{
1071  .name = name_comp1,
1072  .vmux = 4,
1073  .amux = LINE2,
1074  },{
1075  .name = name_svideo,
1076  .vmux = 6,
1077  .amux = LINE2,
1078  }},
1079  .radio = {
1080  .name = name_radio,
1081  .amux = LINE1,
1082  },
1083  },
1085  .name = "Pinnacle PCTV Stereo (saa7134)",
1086  .audio_clock = 0x00187de7,
1087  .tuner_type = TUNER_MT2032,
1088  .radio_type = UNSET,
1089  .tuner_addr = ADDR_UNSET,
1090  .radio_addr = ADDR_UNSET,
1091  .tda9887_conf = TDA9887_PRESENT | TDA9887_INTERCARRIER | TDA9887_PORT2_INACTIVE,
1092  .inputs = {{
1093  .name = name_tv,
1094  .vmux = 3,
1095  .amux = TV,
1096  .tv = 1,
1097  },{
1098  .name = name_comp1,
1099  .vmux = 0,
1100  .amux = LINE2,
1101  },{
1102  .name = name_comp2,
1103  .vmux = 1,
1104  .amux = LINE2,
1105  },{
1106  .name = name_svideo,
1107  .vmux = 8,
1108  .amux = LINE2,
1109  }},
1110  },
1112  /* Ognjen Nastic <[email protected]> */
1113  .name = "Manli MuchTV M-TV002",
1114  .audio_clock = 0x00200000,
1115  .tuner_type = TUNER_PHILIPS_PAL,
1116  .radio_type = UNSET,
1117  .tuner_addr = ADDR_UNSET,
1118  .radio_addr = ADDR_UNSET,
1119  .inputs = {{
1120  .name = name_svideo,
1121  .vmux = 8,
1122  .amux = LINE1,
1123  },{
1124  .name = name_comp1,
1125  .vmux = 1,
1126  .amux = LINE1,
1127  },{
1128  .name = name_tv,
1129  .vmux = 3,
1130  .amux = LINE2,
1131  .tv = 1,
1132  }},
1133  .radio = {
1134  .name = name_radio,
1135  .amux = LINE2,
1136  },
1137  },
1139  /* Ognjen Nastic <[email protected]> UNTESTED */
1140  .name = "Manli MuchTV M-TV001",
1141  .audio_clock = 0x00200000,
1142  .tuner_type = TUNER_PHILIPS_PAL,
1143  .radio_type = UNSET,
1144  .tuner_addr = ADDR_UNSET,
1145  .radio_addr = ADDR_UNSET,
1146  .inputs = {{
1147  .name = name_svideo,
1148  .vmux = 8,
1149  .amux = LINE1,
1150  },{
1151  .name = name_comp1,
1152  .vmux = 1,
1153  .amux = LINE1,
1154  },{
1155  .name = name_tv,
1156  .vmux = 3,
1157  .amux = LINE2,
1158  .tv = 1,
1159  }},
1160  .mute = {
1161  .name = name_mute,
1162  .amux = LINE1,
1163  },
1164  },
1166  /* TransGear 3000TV */
1167  .name = "Nagase Sangyo TransGear 3000TV",
1168  .audio_clock = 0x00187de7,
1169  .tuner_type = TUNER_PHILIPS_NTSC_M,
1170  .radio_type = UNSET,
1171  .tuner_addr = ADDR_UNSET,
1172  .radio_addr = ADDR_UNSET,
1173  .inputs = {{
1174  .name = name_tv,
1175  .vmux = 1,
1176  .amux = LINE2,
1177  .tv = 1,
1178  },{
1179  .name = name_comp1,
1180  .vmux = 3,
1181  .amux = LINE2,
1182  },{
1183  .name = name_svideo,
1184  .vmux = 8,
1185  .amux = LINE2,
1186  }},
1187  },
1189  .name = "Elitegroup ECS TVP3XP FM1216 Tuner Card(PAL-BG,FM) ",
1190  .audio_clock = 0x187de7, /* xtal 32.1 MHz */
1191  .tuner_type = TUNER_PHILIPS_PAL,
1192  .radio_type = UNSET,
1193  .tuner_addr = ADDR_UNSET,
1194  .radio_addr = ADDR_UNSET,
1195  .inputs = {{
1196  .name = name_tv,
1197  .vmux = 1,
1198  .amux = TV,
1199  .tv = 1,
1200  },{
1201  .name = name_tv_mono,
1202  .vmux = 1,
1203  .amux = LINE2,
1204  .tv = 1,
1205  },{
1206  .name = name_comp1,
1207  .vmux = 3,
1208  .amux = LINE1,
1209  },{
1210  .name = name_svideo,
1211  .vmux = 8,
1212  .amux = LINE1,
1213  },{
1214  .name = "CVid over SVid",
1215  .vmux = 0,
1216  .amux = LINE1,
1217  }},
1218  .radio = {
1219  .name = name_radio,
1220  .amux = LINE2,
1221  },
1222  },
1224  .name = "Elitegroup ECS TVP3XP FM1236 Tuner Card (NTSC,FM)",
1225  .audio_clock = 0x187de7,
1226  .tuner_type = TUNER_PHILIPS_NTSC,
1227  .radio_type = UNSET,
1228  .tuner_addr = ADDR_UNSET,
1229  .radio_addr = ADDR_UNSET,
1230  .inputs = {{
1231  .name = name_tv,
1232  .vmux = 1,
1233  .amux = TV,
1234  .tv = 1,
1235  },{
1236  .name = name_tv_mono,
1237  .vmux = 1,
1238  .amux = LINE2,
1239  .tv = 1,
1240  },{
1241  .name = name_comp1,
1242  .vmux = 3,
1243  .amux = LINE1,
1244  },{
1245  .name = name_svideo,
1246  .vmux = 8,
1247  .amux = LINE1,
1248  },{
1249  .name = "CVid over SVid",
1250  .vmux = 0,
1251  .amux = LINE1,
1252  }},
1253  .radio = {
1254  .name = name_radio,
1255  .amux = LINE2,
1256  },
1257  },
1259  /* Barry Scott <[email protected]> */
1260  .name = "Elitegroup ECS TVP3XP FM1246 Tuner Card (PAL,FM)",
1261  .audio_clock = 0x187de7,
1262  .tuner_type = TUNER_PHILIPS_PAL_I,
1263  .radio_type = UNSET,
1264  .tuner_addr = ADDR_UNSET,
1265  .radio_addr = ADDR_UNSET,
1266  .inputs = {{
1267  .name = name_tv,
1268  .vmux = 1,
1269  .amux = TV,
1270  .tv = 1,
1271  },{
1272  .name = name_tv_mono,
1273  .vmux = 1,
1274  .amux = LINE2,
1275  .tv = 1,
1276  },{
1277  .name = name_comp1,
1278  .vmux = 3,
1279  .amux = LINE1,
1280  },{
1281  .name = name_svideo,
1282  .vmux = 8,
1283  .amux = LINE1,
1284  },{
1285  .name = "CVid over SVid",
1286  .vmux = 0,
1287  .amux = LINE1,
1288  }},
1289  .radio = {
1290  .name = name_radio,
1291  .amux = LINE2,
1292  },
1293  },
1295  /* Roman Pszonczenko <[email protected]> */
1296  .name = "AVACS SmartTV",
1297  .audio_clock = 0x00187de7,
1298  .tuner_type = TUNER_PHILIPS_PAL,
1299  .radio_type = UNSET,
1300  .tuner_addr = ADDR_UNSET,
1301  .radio_addr = ADDR_UNSET,
1302  .inputs = {{
1303  .name = name_tv,
1304  .vmux = 1,
1305  .amux = TV,
1306  .tv = 1,
1307  },{
1308  .name = name_tv_mono,
1309  .vmux = 1,
1310  .amux = LINE2,
1311  .tv = 1,
1312  },{
1313  .name = name_comp1,
1314  .vmux = 0,
1315  .amux = LINE2,
1316  },{
1317  .name = name_comp2,
1318  .vmux = 3,
1319  .amux = LINE2,
1320  },{
1321  .name = name_svideo,
1322  .vmux = 8,
1323  .amux = LINE2,
1324  }},
1325  .radio = {
1326  .name = name_radio,
1327  .amux = LINE2,
1328  .gpio = 0x200000,
1329  },
1330  },
1332  /* Michael Smith <[email protected]> */
1333  .name = "AVerMedia DVD EZMaker",
1334  .audio_clock = 0x00187de7,
1335  .tuner_type = TUNER_ABSENT,
1336  .radio_type = UNSET,
1337  .tuner_addr = ADDR_UNSET,
1338  .radio_addr = ADDR_UNSET,
1339  .inputs = {{
1340  .name = name_comp1,
1341  .vmux = 3,
1342  },{
1343  .name = name_svideo,
1344  .vmux = 8,
1345  }},
1346  },
1348  /* Massimo Piccioni <[email protected]> */
1349  .name = "AVerMedia MiniPCI DVB-T Hybrid M103",
1350  .audio_clock = 0x187de7,
1351  .tuner_type = TUNER_XC2028,
1352  .radio_type = UNSET,
1353  .tuner_addr = ADDR_UNSET,
1354  .radio_addr = ADDR_UNSET,
1355  .mpeg = SAA7134_MPEG_DVB,
1356  .inputs = {{
1357  .name = name_tv,
1358  .vmux = 1,
1359  .amux = TV,
1360  .tv = 1,
1361  } },
1362  },
1364  /* [email protected] */
1365  .name = "Noval Prime TV 7133",
1366  .audio_clock = 0x00200000,
1367  .tuner_type = TUNER_ALPS_TSBH1_NTSC,
1368  .radio_type = UNSET,
1369  .tuner_addr = ADDR_UNSET,
1370  .radio_addr = ADDR_UNSET,
1371  .inputs = {{
1372  .name = name_comp1,
1373  .vmux = 3,
1374  },{
1375  .name = name_tv,
1376  .vmux = 1,
1377  .amux = TV,
1378  .tv = 1,
1379  },{
1380  .name = name_svideo,
1381  .vmux = 8,
1382  }},
1383  },
1385  .name = "AverMedia AverTV Studio 305",
1386  .audio_clock = 0x00187de7,
1387  .tuner_type = TUNER_PHILIPS_FM1256_IH3,
1388  .radio_type = UNSET,
1389  .tuner_addr = ADDR_UNSET,
1390  .radio_addr = ADDR_UNSET,
1391  .tda9887_conf = TDA9887_PRESENT,
1392  .inputs = {{
1393  .name = name_tv,
1394  .vmux = 1,
1395  .amux = LINE2,
1396  .tv = 1,
1397  },{
1398  .name = name_comp1,
1399  .vmux = 0,
1400  .amux = LINE2,
1401  },{
1402  .name = name_comp2,
1403  .vmux = 3,
1404  .amux = LINE2,
1405  },{
1406  .name = name_svideo,
1407  .vmux = 8,
1408  .amux = LINE2,
1409  }},
1410  .radio = {
1411  .name = name_radio,
1412  .amux = LINE2,
1413  },
1414  .mute = {
1415  .name = name_mute,
1416  .amux = LINE1,
1417  },
1418  },
1420  /* Vasiliy Temnikov <[email protected]> */
1421  .name = "AverMedia AverTV Studio 505",
1422  .audio_clock = 0x00187de7,
1423  .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
1424  .radio_type = UNSET,
1425  .tuner_addr = ADDR_UNSET,
1426  .radio_addr = ADDR_UNSET,
1427  .tda9887_conf = TDA9887_PRESENT,
1428  .inputs = { {
1429  .name = name_tv,
1430  .vmux = 1,
1431  .amux = LINE2,
1432  .tv = 1,
1433  }, {
1434  .name = name_comp1,
1435  .vmux = 0,
1436  .amux = LINE2,
1437  }, {
1438  .name = name_comp2,
1439  .vmux = 3,
1440  .amux = LINE2,
1441  },{
1442  .name = name_svideo,
1443  .vmux = 8,
1444  .amux = LINE2,
1445  } },
1446  .radio = {
1447  .name = name_radio,
1448  .amux = LINE2,
1449  },
1450  .mute = {
1451  .name = name_mute,
1452  .amux = LINE1,
1453  },
1454  },
1456  .name = "UPMOST PURPLE TV",
1457  .audio_clock = 0x00187de7,
1458  .tuner_type = TUNER_PHILIPS_FM1236_MK3,
1459  .radio_type = UNSET,
1460  .tuner_addr = ADDR_UNSET,
1461  .radio_addr = ADDR_UNSET,
1462  .tda9887_conf = TDA9887_PRESENT,
1463  .inputs = {{
1464  .name = name_tv,
1465  .vmux = 7,
1466  .amux = TV,
1467  .tv = 1,
1468  },{
1469  .name = name_svideo,
1470  .vmux = 7,
1471  .amux = LINE1,
1472  }},
1473  },
1475  /* Norman Jonas <[email protected]> */
1476  .name = "Items MuchTV Plus / IT-005",
1477  .audio_clock = 0x00187de7,
1478  .tuner_type = TUNER_PHILIPS_PAL,
1479  .radio_type = UNSET,
1480  .tuner_addr = ADDR_UNSET,
1481  .radio_addr = ADDR_UNSET,
1482  .inputs = {{
1483  .name = name_tv,
1484  .vmux = 3,
1485  .amux = TV,
1486  .tv = 1,
1487  },{
1488  .name = name_comp1,
1489  .vmux = 1,
1490  .amux = LINE1,
1491  },{
1492  .name = name_svideo,
1493  .vmux = 8,
1494  .amux = LINE1,
1495  }},
1496  .radio = {
1497  .name = name_radio,
1498  .amux = LINE2,
1499  },
1500  },
1502  .name = "Terratec Cinergy 200 TV",
1503  .audio_clock = 0x00200000,
1504  .tuner_type = TUNER_PHILIPS_PAL,
1505  .radio_type = UNSET,
1506  .tuner_addr = ADDR_UNSET,
1507  .radio_addr = ADDR_UNSET,
1508  .inputs = {{
1509  .name = name_tv,
1510  .vmux = 1,
1511  .amux = LINE2,
1512  .tv = 1,
1513  },{
1514  .name = name_comp1,
1515  .vmux = 4,
1516  .amux = LINE1,
1517  },{
1518  .name = name_svideo,
1519  .vmux = 8,
1520  .amux = LINE1,
1521  },{
1522  .name = name_comp2, /* CVideo over SVideo Connector */
1523  .vmux = 0,
1524  .amux = LINE1,
1525  }},
1526  .mute = {
1527  .name = name_mute,
1528  .amux = LINE2,
1529  },
1530  },
1532  /* Alain St-Denis <[email protected]> */
1533  .name = "Compro VideoMate TV PVR/FM",
1534  .audio_clock = 0x00187de7,
1535  .tuner_type = TUNER_PHILIPS_NTSC_M,
1536  .radio_type = UNSET,
1537  .tuner_addr = ADDR_UNSET,
1538  .radio_addr = ADDR_UNSET,
1539  .gpiomask = 0x808c0080,
1540  .inputs = {{
1541  .name = name_svideo,
1542  .vmux = 8,
1543  .amux = LINE1,
1544  .gpio = 0x00080,
1545  },{
1546  .name = name_comp1,
1547  .vmux = 3,
1548  .amux = LINE1,
1549  .gpio = 0x00080,
1550  },{
1551  .name = name_tv,
1552  .vmux = 1,
1553  .amux = LINE2_LEFT,
1554  .tv = 1,
1555  .gpio = 0x00080,
1556  }},
1557  .radio = {
1558  .name = name_radio,
1559  .amux = LINE2,
1560  .gpio = 0x80000,
1561  },
1562  .mute = {
1563  .name = name_mute,
1564  .amux = LINE2,
1565  .gpio = 0x40000,
1566  },
1567  },
1569  /* Michael Rodriguez-Torrent <[email protected]> */
1570  .name = "Sabrent SBT-TVFM (saa7130)",
1571  .audio_clock = 0x00187de7,
1572  .tuner_type = TUNER_PHILIPS_NTSC_M,
1573  .radio_type = UNSET,
1574  .tuner_addr = ADDR_UNSET,
1575  .radio_addr = ADDR_UNSET,
1576  .inputs = {{
1577  .name = name_comp1,
1578  .vmux = 1,
1579  .amux = LINE1,
1580  },{
1581  .name = name_tv,
1582  .vmux = 3,
1583  .amux = LINE2,
1584  .tv = 1,
1585  },{
1586  .name = name_svideo,
1587  .vmux = 8,
1588  .amux = LINE1,
1589  }},
1590  .radio = {
1591  .name = name_radio,
1592  .amux = LINE2,
1593  },
1594  },
1596  /* Helge Jensen <[email protected]> */
1597  .name = ":Zolid Xpert TV7134",
1598  .audio_clock = 0x00187de7,
1599  .tuner_type = TUNER_PHILIPS_NTSC,
1600  .radio_type = UNSET,
1601  .tuner_addr = ADDR_UNSET,
1602  .radio_addr = ADDR_UNSET,
1603  .inputs = {{
1604  .name = name_svideo,
1605  .vmux = 8,
1606  .amux = LINE1,
1607  },{
1608  .name = name_comp1,
1609  .vmux = 3,
1610  .amux = LINE1,
1611  },{
1612  .name = name_tv,
1613  .vmux = 1,
1614  .amux = LINE2,
1615  .tv = 1,
1616  }},
1617  },
1619  /* "Matteo Az" <[email protected]> ;-) */
1620  .name = "Empire PCI TV-Radio LE",
1621  .audio_clock = 0x00187de7,
1622  .tuner_type = TUNER_PHILIPS_PAL,
1623  .radio_type = UNSET,
1624  .tuner_addr = ADDR_UNSET,
1625  .radio_addr = ADDR_UNSET,
1626  .gpiomask = 0x4000,
1627  .inputs = {{
1628  .name = name_tv_mono,
1629  .vmux = 1,
1630  .amux = LINE2,
1631  .gpio = 0x8000,
1632  .tv = 1,
1633  },{
1634  .name = name_comp1,
1635  .vmux = 3,
1636  .amux = LINE1,
1637  .gpio = 0x8000,
1638  },{
1639  .name = name_svideo,
1640  .vmux = 6,
1641  .amux = LINE1,
1642  .gpio = 0x8000,
1643  }},
1644  .radio = {
1645  .name = name_radio,
1646  .amux = LINE1,
1647  .gpio = 0x8000,
1648  },
1649  .mute = {
1650  .name = name_mute,
1651  .amux = TV,
1652  .gpio =0x8000,
1653  }
1654  },
1656  /*
1657  Nickolay V. Shmyrev <[email protected]>
1658  Lots of thanks to Andrey Zolotarev <[email protected]>
1659  */
1660  .name = "Avermedia AVerTV Studio 307",
1661  .audio_clock = 0x00187de7,
1662  .tuner_type = TUNER_PHILIPS_FM1256_IH3,
1663  .radio_type = UNSET,
1664  .tuner_addr = ADDR_UNSET,
1665  .radio_addr = ADDR_UNSET,
1666  .tda9887_conf = TDA9887_PRESENT,
1667  .gpiomask = 0x03,
1668  .inputs = {{
1669  .name = name_tv,
1670  .vmux = 1,
1671  .amux = TV,
1672  .tv = 1,
1673  .gpio = 0x00,
1674  },{
1675  .name = name_comp,
1676  .vmux = 3,
1677  .amux = LINE1,
1678  .gpio = 0x02,
1679  },{
1680  .name = name_svideo,
1681  .vmux = 8,
1682  .amux = LINE1,
1683  .gpio = 0x02,
1684  }},
1685  .radio = {
1686  .name = name_radio,
1687  .amux = LINE1,
1688  .gpio = 0x01,
1689  },
1690  .mute = {
1691  .name = name_mute,
1692  .amux = LINE1,
1693  .gpio = 0x00,
1694  },
1695  },
1697  .name = "Avermedia AVerTV GO 007 FM",
1698  .audio_clock = 0x00187de7,
1699  .tuner_type = TUNER_PHILIPS_TDA8290,
1700  .radio_type = UNSET,
1701  .tuner_addr = ADDR_UNSET,
1702  .radio_addr = ADDR_UNSET,
1703  .gpiomask = 0x00300003,
1704  /* .gpiomask = 0x8c240003, */
1705  .inputs = {{
1706  .name = name_tv,
1707  .vmux = 1,
1708  .amux = TV,
1709  .tv = 1,
1710  .gpio = 0x01,
1711  },{
1712  .name = name_comp1,
1713  .vmux = 0,
1714  .amux = LINE1,
1715  .gpio = 0x02,
1716  },{
1717  .name = name_svideo,
1718  .vmux = 6,
1719  .amux = LINE1,
1720  .gpio = 0x02,
1721  }},
1722  .radio = {
1723  .name = name_radio,
1724  .amux = TV,
1725  .gpio = 0x00300001,
1726  },
1727  .mute = {
1728  .name = name_mute,
1729  .amux = TV,
1730  .gpio = 0x01,
1731  },
1732  },
1734  /* [email protected] */
1735  .name = "AVerMedia Cardbus TV/Radio (E500)",
1736  .audio_clock = 0x187de7,
1737  .tuner_type = TUNER_PHILIPS_TDA8290,
1738  .radio_type = UNSET,
1739  .tuner_addr = ADDR_UNSET,
1740  .radio_addr = ADDR_UNSET,
1741  .inputs = {{
1742  .name = name_tv,
1743  .vmux = 1,
1744  .amux = TV,
1745  .tv = 1,
1746  },{
1747  .name = name_comp1,
1748  .vmux = 3,
1749  .amux = LINE2,
1750  },{
1751  .name = name_svideo,
1752  .vmux = 8,
1753  .amux = LINE1,
1754  }},
1755  .radio = {
1756  .name = name_radio,
1757  .amux = LINE1,
1758  },
1759  },
1761  /* Oldrich Jedlicka <[email protected]> */
1762  .name = "AVerMedia Cardbus TV/Radio (E501R)",
1763  .audio_clock = 0x187de7,
1764  .tuner_type = TUNER_ALPS_TSBE5_PAL,
1765  .radio_type = TUNER_TEA5767,
1766  .tuner_addr = 0x61,
1767  .radio_addr = 0x60,
1768  .tda9887_conf = TDA9887_PRESENT,
1769  .gpiomask = 0x08000000,
1770  .inputs = { {
1771  .name = name_tv,
1772  .vmux = 1,
1773  .amux = TV,
1774  .tv = 1,
1775  .gpio = 0x08000000,
1776  }, {
1777  .name = name_comp1,
1778  .vmux = 3,
1779  .amux = LINE1,
1780  .gpio = 0x08000000,
1781  }, {
1782  .name = name_svideo,
1783  .vmux = 8,
1784  .amux = LINE1,
1785  .gpio = 0x08000000,
1786  } },
1787  .radio = {
1788  .name = name_radio,
1789  .amux = LINE2,
1790  .gpio = 0x00000000,
1791  },
1792  },
1794  .name = "Terratec Cinergy 400 mobile",
1795  .audio_clock = 0x187de7,
1796  .tuner_type = TUNER_ALPS_TSBE5_PAL,
1797  .radio_type = UNSET,
1798  .tuner_addr = ADDR_UNSET,
1799  .radio_addr = ADDR_UNSET,
1800  .tda9887_conf = TDA9887_PRESENT,
1801  .inputs = {{
1802  .name = name_tv,
1803  .vmux = 1,
1804  .amux = TV,
1805  .tv = 1,
1806  },{
1807  .name = name_tv_mono,
1808  .vmux = 1,
1809  .amux = LINE2,
1810  .tv = 1,
1811  },{
1812  .name = name_comp1,
1813  .vmux = 3,
1814  .amux = LINE1,
1815  },{
1816  .name = name_svideo,
1817  .vmux = 8,
1818  .amux = LINE1,
1819  }},
1820  },
1822  .name = "Terratec Cinergy 600 TV MK3",
1823  .audio_clock = 0x00200000,
1824  .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
1825  .radio_type = UNSET,
1826  .tuner_addr = ADDR_UNSET,
1827  .radio_addr = ADDR_UNSET,
1828  .rds_addr = 0x10,
1829  .tda9887_conf = TDA9887_PRESENT,
1830  .inputs = {{
1831  .name = name_tv,
1832  .vmux = 1,
1833  .amux = TV,
1834  .tv = 1,
1835  },{
1836  .name = name_comp1,
1837  .vmux = 4,
1838  .amux = LINE1,
1839  },{
1840  .name = name_svideo,
1841  .vmux = 8,
1842  .amux = LINE1,
1843  },{
1844  .name = name_comp2, /* CVideo over SVideo Connector */
1845  .vmux = 0,
1846  .amux = LINE1,
1847  }},
1848  .radio = {
1849  .name = name_radio,
1850  .amux = LINE2,
1851  },
1852  },
1854  /* Dylan Walkden <[email protected]> */
1855  .name = "Compro VideoMate Gold+ Pal",
1856  .audio_clock = 0x00187de7,
1857  .tuner_type = TUNER_PHILIPS_PAL,
1858  .radio_type = UNSET,
1859  .tuner_addr = ADDR_UNSET,
1860  .radio_addr = ADDR_UNSET,
1861  .gpiomask = 0x1ce780,
1862  .inputs = {{
1863  .name = name_svideo,
1864  .vmux = 0, /* CVideo over SVideo Connector - ok? */
1865  .amux = LINE1,
1866  .gpio = 0x008080,
1867  },{
1868  .name = name_comp1,
1869  .vmux = 3,
1870  .amux = LINE1,
1871  .gpio = 0x008080,
1872  },{
1873  .name = name_tv,
1874  .vmux = 1,
1875  .amux = TV,
1876  .tv = 1,
1877  .gpio = 0x008080,
1878  }},
1879  .radio = {
1880  .name = name_radio,
1881  .amux = LINE2,
1882  .gpio = 0x80000,
1883  },
1884  .mute = {
1885  .name = name_mute,
1886  .amux = LINE2,
1887  .gpio = 0x0c8000,
1888  },
1889  },
1891  .name = "Pinnacle PCTV 300i DVB-T + PAL",
1892  .audio_clock = 0x00187de7,
1893  .tuner_type = TUNER_MT2032,
1894  .radio_type = UNSET,
1895  .tuner_addr = ADDR_UNSET,
1896  .radio_addr = ADDR_UNSET,
1897  .tda9887_conf = TDA9887_PRESENT | TDA9887_INTERCARRIER | TDA9887_PORT2_INACTIVE,
1898  .mpeg = SAA7134_MPEG_DVB,
1899  .inputs = {{
1900  .name = name_tv,
1901  .vmux = 3,
1902  .amux = TV,
1903  .tv = 1,
1904  },{
1905  .name = name_comp1,
1906  .vmux = 0,
1907  .amux = LINE2,
1908  },{
1909  .name = name_comp2,
1910  .vmux = 1,
1911  .amux = LINE2,
1912  },{
1913  .name = name_svideo,
1914  .vmux = 8,
1915  .amux = LINE2,
1916  }},
1917  },
1919  /* [email protected] */
1920  .name = "ProVideo PV952",
1921  .audio_clock = 0x00187de7,
1922  .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
1923  .radio_type = UNSET,
1924  .tuner_addr = ADDR_UNSET,
1925  .radio_addr = ADDR_UNSET,
1926  .tda9887_conf = TDA9887_PRESENT,
1927  .inputs = {{
1928  .name = name_comp1,
1929  .vmux = 0,
1930  .amux = LINE1,
1931  },{
1932  .name = name_tv,
1933  .vmux = 1,
1934  .amux = TV,
1935  .tv = 1,
1936  },{
1937  .name = name_tv_mono,
1938  .vmux = 1,
1939  .amux = LINE2,
1940  .tv = 1,
1941  }},
1942  .radio = {
1943  .name = name_radio,
1944  .amux = LINE2,
1945  },
1946  },
1948  /* much like the "studio" version but without radio
1949  * and another tuner ([email protected]) */
1950  .name = "AverMedia AverTV/305",
1951  .audio_clock = 0x00187de7,
1952  .tuner_type = TUNER_PHILIPS_FQ1216ME,
1953  .radio_type = UNSET,
1954  .tuner_addr = ADDR_UNSET,
1955  .radio_addr = ADDR_UNSET,
1956  .tda9887_conf = TDA9887_PRESENT,
1957  .inputs = {{
1958  .name = name_tv,
1959  .vmux = 1,
1960  .amux = LINE2,
1961  .tv = 1,
1962  },{
1963  .name = name_comp1,
1964  .vmux = 0,
1965  .amux = LINE2,
1966  },{
1967  .name = name_comp2,
1968  .vmux = 3,
1969  .amux = LINE2,
1970  },{
1971  .name = name_svideo,
1972  .vmux = 8,
1973  .amux = LINE2,
1974  }},
1975  .mute = {
1976  .name = name_mute,
1977  .amux = LINE1,
1978  },
1979  },
1981  /* LifeView FlyDVB-T DUO */
1982  /* "Nico Sabbi <[email protected]> Hartmut Hackmann [email protected]*/
1983  .name = "LifeView FlyDVB-T DUO / MSI TV@nywhere Duo",
1984  .audio_clock = 0x00200000,
1985  .tuner_type = TUNER_PHILIPS_TDA8290,
1986  .radio_type = UNSET,
1987  .tuner_addr = ADDR_UNSET,
1988  .radio_addr = ADDR_UNSET,
1989  .gpiomask = 0x00200000,
1990  .mpeg = SAA7134_MPEG_DVB,
1991  .inputs = {{
1992  .name = name_tv,
1993  .vmux = 1,
1994  .amux = TV,
1995  .gpio = 0x200000, /* GPIO21=High for TV input */
1996  .tv = 1,
1997  },{
1998  .name = name_comp1, /* Composite signal on S-Video input */
1999  .vmux = 0,
2000  .amux = LINE2,
2001  },{
2002  .name = name_comp2, /* Composite input */
2003  .vmux = 3,
2004  .amux = LINE2,
2005  },{
2006  .name = name_svideo, /* S-Video signal on S-Video input */
2007  .vmux = 8,
2008  .amux = LINE2,
2009  }},
2010  .radio = {
2011  .name = name_radio,
2012  .amux = TV,
2013  .gpio = 0x000000, /* GPIO21=Low for FM radio antenna */
2014  },
2015  },
2017  .name = "Philips TOUGH DVB-T reference design",
2018  .tuner_type = TUNER_ABSENT,
2019  .audio_clock = 0x00187de7,
2020  .radio_type = UNSET,
2021  .tuner_addr = ADDR_UNSET,
2022  .radio_addr = ADDR_UNSET,
2023  .mpeg = SAA7134_MPEG_DVB,
2024  .inputs = {{
2025  .name = name_comp1,
2026  .vmux = 0,
2027  .amux = LINE1,
2028  },{
2029  .name = name_svideo,
2030  .vmux = 8,
2031  .amux = LINE1,
2032  }},
2033  },
2035  /*
2036  Davydov Vladimir <[email protected]>
2037  */
2038  .name = "Avermedia AVerTV 307",
2039  .audio_clock = 0x00187de7,
2040  .tuner_type = TUNER_PHILIPS_FQ1216ME,
2041  .radio_type = UNSET,
2042  .tuner_addr = ADDR_UNSET,
2043  .radio_addr = ADDR_UNSET,
2044  .tda9887_conf = TDA9887_PRESENT,
2045  .inputs = {{
2046  .name = name_tv,
2047  .vmux = 1,
2048  .amux = TV,
2049  .tv = 1,
2050  },{
2051  .name = name_comp1,
2052  .vmux = 0,
2053  .amux = LINE1,
2054  },{
2055  .name = name_comp2,
2056  .vmux = 3,
2057  .amux = LINE1,
2058  },{
2059  .name = name_svideo,
2060  .vmux = 8,
2061  .amux = LINE1,
2062  }},
2063  },
2065  .name = "ADS Tech Instant TV (saa7135)",
2066  .audio_clock = 0x00187de7,
2067  .tuner_type = TUNER_PHILIPS_TDA8290,
2068  .radio_type = UNSET,
2069  .tuner_addr = ADDR_UNSET,
2070  .radio_addr = ADDR_UNSET,
2071  .inputs = {{
2072  .name = name_tv,
2073  .vmux = 1,
2074  .amux = TV,
2075  .tv = 1,
2076  },{
2077  .name = name_comp1,
2078  .vmux = 3,
2079  .amux = LINE2,
2080  },{
2081  .name = name_svideo,
2082  .vmux = 8,
2083  .amux = LINE2,
2084  }},
2085  },
2087  .name = "Kworld/Tevion V-Stream Xpert TV PVR7134",
2088  .audio_clock = 0x00187de7,
2089  .tuner_type = TUNER_PHILIPS_PAL_I,
2090  .radio_type = UNSET,
2091  .tuner_addr = ADDR_UNSET,
2092  .radio_addr = ADDR_UNSET,
2093  .gpiomask = 0x0700,
2094  .inputs = {{
2095  .name = name_tv,
2096  .vmux = 1,
2097  .amux = TV,
2098  .tv = 1,
2099  .gpio = 0x000,
2100  },{
2101  .name = name_comp1,
2102  .vmux = 3,
2103  .amux = LINE1,
2104  .gpio = 0x200, /* gpio by DScaler */
2105  },{
2106  .name = name_svideo,
2107  .vmux = 0,
2108  .amux = LINE1,
2109  .gpio = 0x200,
2110  }},
2111  .radio = {
2112  .name = name_radio,
2113  .amux = LINE1,
2114  .gpio = 0x100,
2115  },
2116  .mute = {
2117  .name = name_mute,
2118  .amux = TV,
2119  .gpio = 0x000,
2120  },
2121  },
2123  .name = "LifeView/Typhoon/Genius FlyDVB-T Duo Cardbus",
2124  .audio_clock = 0x00200000,
2125  .tuner_type = TUNER_PHILIPS_TDA8290,
2126  .radio_type = UNSET,
2127  .tuner_addr = ADDR_UNSET,
2128  .radio_addr = ADDR_UNSET,
2129  .mpeg = SAA7134_MPEG_DVB,
2130  .gpiomask = 0x00200000,
2131  .inputs = {{
2132  .name = name_tv,
2133  .vmux = 1,
2134  .amux = TV,
2135  .gpio = 0x200000, /* GPIO21=High for TV input */
2136  .tv = 1,
2137  },{
2138  .name = name_svideo, /* S-Video signal on S-Video input */
2139  .vmux = 8,
2140  .amux = LINE2,
2141  },{
2142  .name = name_comp1, /* Composite signal on S-Video input */
2143  .vmux = 0,
2144  .amux = LINE2,
2145  },{
2146  .name = name_comp2, /* Composite input */
2147  .vmux = 3,
2148  .amux = LINE2,
2149  }},
2150  .radio = {
2151  .name = name_radio,
2152  .amux = TV,
2153  .gpio = 0x000000, /* GPIO21=Low for FM radio antenna */
2154  },
2155  },
2157  .name = "Compro VideoMate TV Gold+II",
2158  .audio_clock = 0x002187de7,
2159  .tuner_type = TUNER_LG_PAL_NEW_TAPC,
2160  .radio_type = TUNER_TEA5767,
2161  .tuner_addr = 0x63,
2162  .radio_addr = 0x60,
2163  .gpiomask = 0x8c1880,
2164  .inputs = {{
2165  .name = name_svideo,
2166  .vmux = 0,
2167  .amux = LINE1,
2168  .gpio = 0x800800,
2169  },{
2170  .name = name_comp1,
2171  .vmux = 3,
2172  .amux = LINE1,
2173  .gpio = 0x801000,
2174  },{
2175  .name = name_tv,
2176  .vmux = 1,
2177  .amux = TV,
2178  .tv = 1,
2179  .gpio = 0x800000,
2180  }},
2181  .radio = {
2182  .name = name_radio,
2183  .amux = TV,
2184  .gpio = 0x880000,
2185  },
2186  .mute = {
2187  .name = name_mute,
2188  .amux = LINE2,
2189  .gpio = 0x840000,
2190  },
2191  },
2193  /*
2194  FIXME:
2195  - Remote control doesn't initialize properly.
2196  - Audio volume starts muted,
2197  then gradually increases after channel change.
2198  - Overlay scaling problems (application error?)
2199  - Composite S-Video untested.
2200  From: Konrad Rzepecki <[email protected]>
2201  */
2202  .name = "Kworld Xpert TV PVR7134",
2203  .audio_clock = 0x00187de7,
2204  .tuner_type = TUNER_TENA_9533_DI,
2205  .radio_type = TUNER_TEA5767,
2206  .tuner_addr = 0x61,
2207  .radio_addr = 0x60,
2208  .gpiomask = 0x0700,
2209  .inputs = {{
2210  .name = name_tv,
2211  .vmux = 1,
2212  .amux = TV,
2213  .tv = 1,
2214  .gpio = 0x000,
2215  },{
2216  .name = name_comp1,
2217  .vmux = 3,
2218  .amux = LINE1,
2219  .gpio = 0x200, /* gpio by DScaler */
2220  },{
2221  .name = name_svideo,
2222  .vmux = 0,
2223  .amux = LINE1,
2224  .gpio = 0x200,
2225  }},
2226  .radio = {
2227  .name = name_radio,
2228  .amux = LINE1,
2229  .gpio = 0x100,
2230  },
2231  .mute = {
2232  .name = name_mute,
2233  .amux = TV,
2234  .gpio = 0x000,
2235  },
2236  },
2238  .name = "FlyTV mini Asus Digimatrix",
2239  .audio_clock = 0x00200000,
2240  .tuner_type = TUNER_LG_TALN,
2241  .radio_type = UNSET,
2242  .tuner_addr = ADDR_UNSET,
2243  .radio_addr = ADDR_UNSET,
2244  .inputs = {{
2245  .name = name_tv,
2246  .vmux = 1,
2247  .amux = TV,
2248  .tv = 1,
2249  },{
2250  .name = name_tv_mono,
2251  .vmux = 1,
2252  .amux = LINE2,
2253  .tv = 1,
2254  },{
2255  .name = name_comp1,
2256  .vmux = 0,
2257  .amux = LINE2,
2258  },{
2259  .name = name_comp2,
2260  .vmux = 3,
2261  .amux = LINE2,
2262  },{
2263  .name = name_svideo,
2264  .vmux = 8,
2265  .amux = LINE2,
2266  }},
2267  .radio = {
2268  .name = name_radio, /* radio unconfirmed */
2269  .amux = LINE2,
2270  },
2271  },
2273  /* Kworld V-Stream Studio TV Terminator */
2274  /* "James Webb <[email protected]> */
2275  .name = "V-Stream Studio TV Terminator",
2276  .audio_clock = 0x00187de7,
2277  .tuner_type = TUNER_PHILIPS_TDA8290,
2278  .radio_type = UNSET,
2279  .tuner_addr = ADDR_UNSET,
2280  .radio_addr = ADDR_UNSET,
2281  .gpiomask = 1 << 21,
2282  .inputs = {{
2283  .name = name_tv,
2284  .vmux = 1,
2285  .amux = TV,
2286  .gpio = 0x0000000,
2287  .tv = 1,
2288  },{
2289  .name = name_comp1, /* Composite input */
2290  .vmux = 3,
2291  .amux = LINE2,
2292  .gpio = 0x0000000,
2293  },{
2294  .name = name_svideo, /* S-Video input */
2295  .vmux = 8,
2296  .amux = LINE2,
2297  .gpio = 0x0000000,
2298  }},
2299  .radio = {
2300  .name = name_radio,
2301  .amux = TV,
2302  .gpio = 0x0200000,
2303  },
2304  },
2306  /* FIXME:
2307  * S-Video and composite sources untested.
2308  * Radio not working.
2309  * Remote control not yet implemented.
2310  * From : [email protected] */
2311  .name = "Yuan TUN-900 (saa7135)",
2312  .audio_clock = 0x00187de7,
2313  .tuner_type = TUNER_PHILIPS_TDA8290,
2314  .radio_type = UNSET,
2315  .tuner_addr= ADDR_UNSET,
2316  .radio_addr= ADDR_UNSET,
2317  .gpiomask = 0x00010003,
2318  .inputs = {{
2319  .name = name_tv,
2320  .vmux = 1,
2321  .amux = TV,
2322  .tv = 1,
2323  .gpio = 0x01,
2324  },{
2325  .name = name_comp1,
2326  .vmux = 0,
2327  .amux = LINE2,
2328  .gpio = 0x02,
2329  },{
2330  .name = name_svideo,
2331  .vmux = 6,
2332  .amux = LINE2,
2333  .gpio = 0x02,
2334  }},
2335  .radio = {
2336  .name = name_radio,
2337  .amux = LINE1,
2338  .gpio = 0x00010003,
2339  },
2340  .mute = {
2341  .name = name_mute,
2342  .amux = TV,
2343  .gpio = 0x01,
2344  },
2345  },
2347  /* <http://tuner.beholder.ru>, Sergey <[email protected]> */
2348  /* Beholder Intl. Ltd. 2008 */
2349  /*Dmitry Belimov <[email protected]> */
2350  .name = "Beholder BeholdTV 409 FM",
2351  .audio_clock = 0x00187de7,
2352  .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
2353  .radio_type = UNSET,
2354  .tuner_addr = ADDR_UNSET,
2355  .radio_addr = ADDR_UNSET,
2356  .tda9887_conf = TDA9887_PRESENT,
2357  .gpiomask = 0x00008000,
2358  .inputs = {{
2359  .name = name_tv,
2360  .vmux = 3,
2361  .amux = TV,
2362  .tv = 1,
2363  },{
2364  .name = name_comp1,
2365  .vmux = 1,
2366  .amux = LINE1,
2367  },{
2368  .name = name_svideo,
2369  .vmux = 8,
2370  .amux = LINE1,
2371  }},
2372  .radio = {
2373  .name = name_radio,
2374  .amux = LINE2,
2375  },
2376  },
2378  /* Mike Baikov <[email protected]> */
2379  /* Andrey Cvetcov <[email protected]> */
2380  .name = "GoTView 7135 PCI",
2381  .audio_clock = 0x00187de7,
2382  .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
2383  .radio_type = UNSET,
2384  .tuner_addr = ADDR_UNSET,
2385  .radio_addr = ADDR_UNSET,
2386  .tda9887_conf = TDA9887_PRESENT,
2387  .gpiomask = 0x00200003,
2388  .inputs = {{
2389  .name = name_tv,
2390  .vmux = 1,
2391  .amux = TV,
2392  .tv = 1,
2393  .gpio = 0x00200003,
2394  },{
2395  .name = name_tv_mono,
2396  .vmux = 1,
2397  .amux = LINE2,
2398  .gpio = 0x00200003,
2399  },{
2400  .name = name_comp1,
2401  .vmux = 3,
2402  .amux = LINE1,
2403  .gpio = 0x00200003,
2404  },{
2405  .name = name_svideo,
2406  .vmux = 8,
2407  .amux = LINE1,
2408  .gpio = 0x00200003,
2409  }},
2410  .radio = {
2411  .name = name_radio,
2412  .amux = LINE2,
2413  .gpio = 0x00200003,
2414  },
2415  .mute = {
2416  .name = name_mute,
2417  .amux = TV,
2418  .gpio = 0x00200003,
2419  },
2420  },
2422  .name = "Philips EUROPA V3 reference design",
2423  .audio_clock = 0x00187de7,
2424  .tuner_type = TUNER_PHILIPS_TD1316,
2425  .radio_type = UNSET,
2426  .tuner_addr = 0x61,
2427  .radio_addr = ADDR_UNSET,
2428  .tda9887_conf = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE,
2429  .mpeg = SAA7134_MPEG_DVB,
2430  .inputs = {{
2431  .name = name_tv,
2432  .vmux = 3,
2433  .amux = TV,
2434  .tv = 1,
2435  },{
2436  .name = name_comp1,
2437  .vmux = 0,
2438  .amux = LINE2,
2439  },{
2440  .name = name_svideo,
2441  .vmux = 8,
2442  .amux = LINE2,
2443  }},
2444  },
2446  .name = "Compro Videomate DVB-T300",
2447  .audio_clock = 0x00187de7,
2448  .tuner_type = TUNER_PHILIPS_TD1316,
2449  .radio_type = UNSET,
2450  .tuner_addr = 0x61,
2451  .radio_addr = ADDR_UNSET,
2452  .tda9887_conf = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE,
2453  .mpeg = SAA7134_MPEG_DVB,
2454  .inputs = {{
2455  .name = name_tv,
2456  .vmux = 3,
2457  .amux = TV,
2458  .tv = 1,
2459  },{
2460  .name = name_comp1,
2461  .vmux = 1,
2462  .amux = LINE2,
2463  },{
2464  .name = name_svideo,
2465  .vmux = 8,
2466  .amux = LINE2,
2467  }},
2468  },
2470  .name = "Compro Videomate DVB-T200",
2471  .tuner_type = TUNER_ABSENT,
2472  .audio_clock = 0x00187de7,
2473  .radio_type = UNSET,
2474  .tuner_addr = ADDR_UNSET,
2475  .radio_addr = ADDR_UNSET,
2476  .mpeg = SAA7134_MPEG_DVB,
2477  .inputs = {{
2478  .name = name_comp1,
2479  .vmux = 0,
2480  .amux = LINE1,
2481  },{
2482  .name = name_svideo,
2483  .vmux = 8,
2484  .amux = LINE1,
2485  }},
2486  },
2488  .name = "RTD Embedded Technologies VFG7350",
2489  .audio_clock = 0x00200000,
2490  .tuner_type = TUNER_ABSENT,
2491  .radio_type = UNSET,
2492  .tuner_addr = ADDR_UNSET,
2493  .radio_addr = ADDR_UNSET,
2494  .empress_addr = 0x21,
2495  .inputs = {{
2496  .name = "Composite 0",
2497  .vmux = 0,
2498  .amux = LINE1,
2499  },{
2500  .name = "Composite 1",
2501  .vmux = 1,
2502  .amux = LINE2,
2503  },{
2504  .name = "Composite 2",
2505  .vmux = 2,
2506  .amux = LINE1,
2507  },{
2508  .name = "Composite 3",
2509  .vmux = 3,
2510  .amux = LINE2,
2511  },{
2512  .name = "S-Video 0",
2513  .vmux = 8,
2514  .amux = LINE1,
2515  },{
2516  .name = "S-Video 1",
2517  .vmux = 9,
2518  .amux = LINE2,
2519  }},
2520  .mpeg = SAA7134_MPEG_EMPRESS,
2521  .video_out = CCIR656,
2522  .vid_port_opts = ( SET_T_CODE_POLARITY_NON_INVERTED |
2525  SET_VSYNC_OFF ),
2526  },
2528  .name = "RTD Embedded Technologies VFG7330",
2529  .audio_clock = 0x00200000,
2530  .tuner_type = TUNER_ABSENT,
2531  .radio_type = UNSET,
2532  .tuner_addr = ADDR_UNSET,
2533  .radio_addr = ADDR_UNSET,
2534  .inputs = {{
2535  .name = "Composite 0",
2536  .vmux = 0,
2537  .amux = LINE1,
2538  },{
2539  .name = "Composite 1",
2540  .vmux = 1,
2541  .amux = LINE2,
2542  },{
2543  .name = "Composite 2",
2544  .vmux = 2,
2545  .amux = LINE1,
2546  },{
2547  .name = "Composite 3",
2548  .vmux = 3,
2549  .amux = LINE2,
2550  },{
2551  .name = "S-Video 0",
2552  .vmux = 8,
2553  .amux = LINE1,
2554  },{
2555  .name = "S-Video 1",
2556  .vmux = 9,
2557  .amux = LINE2,
2558  }},
2559  },
2561  .name = "LifeView FlyTV Platinum Mini2",
2562  .audio_clock = 0x00200000,
2563  .tuner_type = TUNER_PHILIPS_TDA8290,
2564  .radio_type = UNSET,
2565  .tuner_addr = ADDR_UNSET,
2566  .radio_addr = ADDR_UNSET,
2567 
2568  .inputs = {{
2569  .name = name_tv,
2570  .vmux = 1,
2571  .amux = TV,
2572  .tv = 1,
2573  },{
2574  .name = name_comp1, /* Composite signal on S-Video input */
2575  .vmux = 0,
2576  .amux = LINE2,
2577  },{
2578  .name = name_comp2, /* Composite input */
2579  .vmux = 3,
2580  .amux = LINE2,
2581  },{
2582  .name = name_svideo,
2583  .vmux = 8,
2584  .amux = LINE2,
2585  }},
2586  },
2588  /* Michael Krufky <[email protected]>
2589  * Uses Alps Electric TDHU2, containing NXT2004 ATSC Decoder
2590  * AFAIK, there is no analog demod, thus,
2591  * no support for analog television.
2592  */
2593  .name = "AVerMedia AVerTVHD MCE A180",
2594  .audio_clock = 0x00187de7,
2595  .tuner_type = TUNER_ABSENT,
2596  .radio_type = UNSET,
2597  .tuner_addr = ADDR_UNSET,
2598  .radio_addr = ADDR_UNSET,
2599  .mpeg = SAA7134_MPEG_DVB,
2600  .inputs = {{
2601  .name = name_comp1,
2602  .vmux = 3,
2603  .amux = LINE2,
2604  },{
2605  .name = name_svideo,
2606  .vmux = 8,
2607  .amux = LINE2,
2608  }},
2609  },
2611  .name = "SKNet MonsterTV Mobile",
2612  .audio_clock = 0x00187de7,
2613  .tuner_type = TUNER_PHILIPS_TDA8290,
2614  .radio_type = UNSET,
2615  .tuner_addr = ADDR_UNSET,
2616  .radio_addr = ADDR_UNSET,
2617 
2618  .inputs = {{
2619  .name = name_tv,
2620  .vmux = 1,
2621  .amux = TV,
2622  .tv = 1,
2623  },{
2624  .name = name_comp1,
2625  .vmux = 3,
2626  .amux = LINE1,
2627  },{
2628  .name = name_svideo,
2629  .vmux = 6,
2630  .amux = LINE1,
2631  }},
2632  },
2634  .name = "Pinnacle PCTV 40i/50i/110i (saa7133)",
2635  .audio_clock = 0x00187de7,
2636  .tuner_type = TUNER_PHILIPS_TDA8290,
2637  .radio_type = UNSET,
2638  .tuner_addr = ADDR_UNSET,
2639  .radio_addr = ADDR_UNSET,
2640  .gpiomask = 0x080200000,
2641  .inputs = { {
2642  .name = name_tv,
2643  .vmux = 4,
2644  .amux = TV,
2645  .tv = 1,
2646  }, {
2647  .name = name_comp1,
2648  .vmux = 1,
2649  .amux = LINE2,
2650  }, {
2651  .name = name_comp2,
2652  .vmux = 0,
2653  .amux = LINE2,
2654  }, {
2655  .name = name_svideo,
2656  .vmux = 8,
2657  .amux = LINE2,
2658  } },
2659  .radio = {
2660  .name = name_radio,
2661  .amux = TV,
2662  .gpio = 0x0200000,
2663  },
2664  },
2666  .name = "ASUSTeK P7131 Dual",
2667  .audio_clock = 0x00187de7,
2668  .tuner_type = TUNER_PHILIPS_TDA8290,
2669  .radio_type = UNSET,
2670  .tuner_addr = ADDR_UNSET,
2671  .radio_addr = ADDR_UNSET,
2672  .gpiomask = 1 << 21,
2673  .mpeg = SAA7134_MPEG_DVB,
2674  .inputs = {{
2675  .name = name_tv,
2676  .vmux = 1,
2677  .amux = TV,
2678  .tv = 1,
2679  .gpio = 0x0000000,
2680  },{
2681  .name = name_comp1,
2682  .vmux = 3,
2683  .amux = LINE2,
2684  .gpio = 0x0200000,
2685  },{
2686  .name = name_comp2,
2687  .vmux = 0,
2688  .amux = LINE2,
2689  .gpio = 0x0200000,
2690  },{
2691  .name = name_svideo,
2692  .vmux = 8,
2693  .amux = LINE2,
2694  .gpio = 0x0200000,
2695  }},
2696  .radio = {
2697  .name = name_radio,
2698  .amux = TV,
2699  .gpio = 0x0200000,
2700  },
2701  },
2703  /* Paul Tom Zalac <[email protected]> */
2704  /* Pavel Mihaylov <[email protected]> */
2705  .name = "Sedna/MuchTV PC TV Cardbus TV/Radio (ITO25 Rev:2B)",
2706  /* Sedna/MuchTV (OEM) Cardbus TV Tuner */
2707  .audio_clock = 0x00187de7,
2708  .tuner_type = TUNER_PHILIPS_TDA8290,
2709  .radio_type = UNSET,
2710  .tuner_addr = ADDR_UNSET,
2711  .radio_addr = ADDR_UNSET,
2712  .gpiomask = 0xe880c0,
2713  .inputs = {{
2714  .name = name_tv,
2715  .vmux = 3,
2716  .amux = TV,
2717  .tv = 1,
2718  },{
2719  .name = name_comp1,
2720  .vmux = 1,
2721  .amux = LINE1,
2722  },{
2723  .name = name_svideo,
2724  .vmux = 6,
2725  .amux = LINE1,
2726  }},
2727  .radio = {
2728  .name = name_radio,
2729  .amux = LINE2,
2730  },
2731  },
2733  /* "Cyril Lacoux (Yack)" <[email protected]> */
2734  .name = "ASUS Digimatrix TV",
2735  .audio_clock = 0x00200000,
2736  .tuner_type = TUNER_PHILIPS_FQ1216ME,
2737  .tda9887_conf = TDA9887_PRESENT,
2738  .radio_type = UNSET,
2739  .tuner_addr = ADDR_UNSET,
2740  .radio_addr = ADDR_UNSET,
2741  .inputs = {{
2742  .name = name_tv,
2743  .vmux = 1,
2744  .amux = TV,
2745  .tv = 1,
2746  },{
2747  .name = name_comp1,
2748  .vmux = 3,
2749  .amux = LINE1,
2750  },{
2751  .name = name_svideo,
2752  .vmux = 8,
2753  .amux = LINE1,
2754  }},
2755  },
2757  .name = "Philips Tiger reference design",
2758  .audio_clock = 0x00187de7,
2759  .tuner_type = TUNER_PHILIPS_TDA8290,
2760  .radio_type = UNSET,
2761  .tuner_addr = ADDR_UNSET,
2762  .radio_addr = ADDR_UNSET,
2763  .tuner_config = 0,
2764  .mpeg = SAA7134_MPEG_DVB,
2765  .gpiomask = 0x0200000,
2766  .inputs = {{
2767  .name = name_tv,
2768  .vmux = 1,
2769  .amux = TV,
2770  .tv = 1,
2771  },{
2772  .name = name_comp1,
2773  .vmux = 3,
2774  .amux = LINE1,
2775  },{
2776  .name = name_svideo,
2777  .vmux = 8,
2778  .amux = LINE1,
2779  }},
2780  .radio = {
2781  .name = name_radio,
2782  .amux = TV,
2783  .gpio = 0x0200000,
2784  },
2785  },
2787  .name = "MSI TV@Anywhere plus",
2788  .audio_clock = 0x00187de7,
2789  .tuner_type = TUNER_PHILIPS_TDA8290,
2790  .radio_type = UNSET,
2791  .tuner_addr = ADDR_UNSET,
2792  .radio_addr = ADDR_UNSET,
2793  .gpiomask = 1 << 21,
2794  .inputs = {{
2795  .name = name_tv,
2796  .vmux = 1,
2797  .amux = TV,
2798  .tv = 1,
2799  },{
2800  .name = name_comp1,
2801  .vmux = 3,
2802  .amux = LINE2, /* unconfirmed, taken from Philips driver */
2803  },{
2804  .name = name_comp2,
2805  .vmux = 0, /* untested, Composite over S-Video */
2806  .amux = LINE2,
2807  },{
2808  .name = name_svideo,
2809  .vmux = 8,
2810  .amux = LINE2,
2811  }},
2812  .radio = {
2813  .name = name_radio,
2814  .amux = TV,
2815  .gpio = 0x0200000,
2816  },
2817  },
2819  /* remote-control does not work. The signal about a
2820  key press comes in via gpio, but the key code
2821  doesn't. Neither does it have an i2c remote control
2822  interface. */
2823  .name = "Terratec Cinergy 250 PCI TV",
2824  .audio_clock = 0x00187de7,
2825  .tuner_type = TUNER_PHILIPS_TDA8290,
2826  .radio_type = UNSET,
2827  .tuner_addr = ADDR_UNSET,
2828  .radio_addr = ADDR_UNSET,
2829  .gpiomask = 0x80200000,
2830  .inputs = {{
2831  .name = name_tv,
2832  .vmux = 1,
2833  .amux = TV,
2834  .tv = 1,
2835  },{
2836  .name = name_svideo, /* NOT tested */
2837  .vmux = 8,
2838  .amux = LINE1,
2839  }},
2840  .radio = {
2841  .name = name_radio,
2842  .amux = TV,
2843  .gpio = 0x0200000,
2844  },
2845  },
2847  /* LifeView LR319 FlyDVB Trio */
2848  /* Peter Missel <[email protected]> */
2849  .name = "LifeView FlyDVB Trio",
2850  .audio_clock = 0x00200000,
2851  .tuner_type = TUNER_PHILIPS_TDA8290,
2852  .radio_type = UNSET,
2853  .tuner_addr = ADDR_UNSET,
2854  .radio_addr = ADDR_UNSET,
2855  .gpiomask = 0x00200000,
2856  .mpeg = SAA7134_MPEG_DVB,
2857  .inputs = {{
2858  .name = name_tv, /* Analog broadcast/cable TV */
2859  .vmux = 1,
2860  .amux = TV,
2861  .gpio = 0x200000, /* GPIO21=High for TV input */
2862  .tv = 1,
2863  },{
2864  .name = name_svideo, /* S-Video signal on S-Video input */
2865  .vmux = 8,
2866  .amux = LINE2,
2867  },{
2868  .name = name_comp1, /* Composite signal on S-Video input */
2869  .vmux = 0,
2870  .amux = LINE2,
2871  },{
2872  .name = name_comp2, /* Composite input */
2873  .vmux = 3,
2874  .amux = LINE2,
2875  }},
2876  .radio = {
2877  .name = name_radio,
2878  .amux = TV,
2879  .gpio = 0x000000, /* GPIO21=Low for FM radio antenna */
2880  },
2881  },
2883  .name = "AverTV DVB-T 777",
2884  .audio_clock = 0x00187de7,
2885  .tuner_type = TUNER_ABSENT,
2886  .radio_type = UNSET,
2887  .tuner_addr = ADDR_UNSET,
2888  .radio_addr = ADDR_UNSET,
2889  .mpeg = SAA7134_MPEG_DVB,
2890  .inputs = {{
2891  .name = name_comp1,
2892  .vmux = 1,
2893  .amux = LINE1,
2894  },{
2895  .name = name_svideo,
2896  .vmux = 8,
2897  .amux = LINE1,
2898  }},
2899  },
2901  /* LifeView FlyDVB-T */
2902  /* Giampiero Giancipoli <[email protected]> */
2903  .name = "LifeView FlyDVB-T / Genius VideoWonder DVB-T",
2904  .audio_clock = 0x00200000,
2905  .tuner_type = TUNER_ABSENT,
2906  .radio_type = UNSET,
2907  .tuner_addr = ADDR_UNSET,
2908  .radio_addr = ADDR_UNSET,
2909  .mpeg = SAA7134_MPEG_DVB,
2910  .inputs = {{
2911  .name = name_comp1, /* Composite input */
2912  .vmux = 3,
2913  .amux = LINE2,
2914  },{
2915  .name = name_svideo, /* S-Video signal on S-Video input */
2916  .vmux = 8,
2917  .amux = LINE2,
2918  }},
2919  },
2921  .name = "ADS Instant TV Duo Cardbus PTV331",
2922  .audio_clock = 0x00200000,
2923  .tuner_type = TUNER_PHILIPS_TDA8290,
2924  .radio_type = UNSET,
2925  .tuner_addr = ADDR_UNSET,
2926  .radio_addr = ADDR_UNSET,
2927  .mpeg = SAA7134_MPEG_DVB,
2928  .gpiomask = 0x00600000, /* Bit 21 0=Radio, Bit 22 0=TV */
2929  .inputs = {{
2930  .name = name_tv,
2931  .vmux = 1,
2932  .amux = TV,
2933  .tv = 1,
2934  .gpio = 0x00200000,
2935  }},
2936  },
2938  .name = "Tevion/KWorld DVB-T 220RF",
2939  .audio_clock = 0x00187de7,
2940  .tuner_type = TUNER_PHILIPS_TDA8290,
2941  .radio_type = UNSET,
2942  .tuner_addr = ADDR_UNSET,
2943  .radio_addr = ADDR_UNSET,
2944  .mpeg = SAA7134_MPEG_DVB,
2945  .gpiomask = 1 << 21,
2946  .inputs = {{
2947  .name = name_tv,
2948  .vmux = 1,
2949  .amux = TV,
2950  .tv = 1,
2951  },{
2952  .name = name_comp1,
2953  .vmux = 3,
2954  .amux = LINE1,
2955  },{
2956  .name = name_comp2,
2957  .vmux = 0,
2958  .amux = LINE1,
2959  },{
2960  .name = name_svideo,
2961  .vmux = 8,
2962  .amux = LINE1,
2963  }},
2964  .radio = {
2965  .name = name_radio,
2966  .amux = TV,
2967  .gpio = 0x0200000,
2968  },
2969  },
2971  .name = "KWorld DVB-T 210",
2972  .audio_clock = 0x00187de7,
2973  .tuner_type = TUNER_PHILIPS_TDA8290,
2974  .radio_type = UNSET,
2975  .tuner_addr = ADDR_UNSET,
2976  .radio_addr = ADDR_UNSET,
2977  .mpeg = SAA7134_MPEG_DVB,
2978  .gpiomask = 1 << 21,
2979  .inputs = {{
2980  .name = name_tv,
2981  .vmux = 1,
2982  .amux = TV,
2983  .tv = 1,
2984  },{
2985  .name = name_comp1,
2986  .vmux = 3,
2987  .amux = LINE1,
2988  },{
2989  .name = name_svideo,
2990  .vmux = 8,
2991  .amux = LINE1,
2992  }},
2993  .radio = {
2994  .name = name_radio,
2995  .amux = TV,
2996  .gpio = 0x0200000,
2997  },
2998  },
3000  .name = "Kworld ATSC110/115",
3001  .audio_clock = 0x00187de7,
3002  .tuner_type = TUNER_PHILIPS_TUV1236D,
3003  .radio_type = UNSET,
3004  .tuner_addr = ADDR_UNSET,
3005  .radio_addr = ADDR_UNSET,
3006  .tda9887_conf = TDA9887_PRESENT,
3007  .mpeg = SAA7134_MPEG_DVB,
3008  .inputs = {{
3009  .name = name_tv,
3010  .vmux = 1,
3011  .amux = TV,
3012  .tv = 1,
3013  },{
3014  .name = name_comp1,
3015  .vmux = 3,
3016  .amux = LINE2,
3017  },{
3018  .name = name_svideo,
3019  .vmux = 8,
3020  .amux = LINE2,
3021  }},
3022  },
3024  /* AVerMedia A169 */
3025  /* Rickard Osser <[email protected]> */
3026  /* This card has two saa7134 chips on it,
3027  but only one of them is currently working. */
3028  .name = "AVerMedia A169 B",
3029  .audio_clock = 0x02187de7,
3030  .tuner_type = TUNER_LG_TALN,
3031  .radio_type = UNSET,
3032  .tuner_addr = ADDR_UNSET,
3033  .radio_addr = ADDR_UNSET,
3034  .tda9887_conf = TDA9887_PRESENT,
3035  .gpiomask = 0x0a60000,
3036  },
3038  /* AVerMedia A169 */
3039  /* Rickard Osser <[email protected]> */
3040  .name = "AVerMedia A169 B1",
3041  .audio_clock = 0x02187de7,
3042  .tuner_type = TUNER_LG_TALN,
3043  .radio_type = UNSET,
3044  .tuner_addr = ADDR_UNSET,
3045  .radio_addr = ADDR_UNSET,
3046  .tda9887_conf = TDA9887_PRESENT,
3047  .gpiomask = 0xca60000,
3048  .inputs = {{
3049  .name = name_tv,
3050  .vmux = 4,
3051  .amux = TV,
3052  .tv = 1,
3053  .gpio = 0x04a61000,
3054  },{
3055  .name = name_comp2, /* Composite SVIDEO (B/W if signal is carried with SVIDEO) */
3056  .vmux = 1,
3057  .amux = LINE2,
3058  },{
3059  .name = name_svideo,
3060  .vmux = 9, /* 9 is correct as S-VIDEO1 according to a169.inf! */
3061  .amux = LINE1,
3062  }},
3063  },
3065  /* The second saa7134 on this card only serves as DVB-S host bridge */
3066  .name = "Medion 7134 Bridge #2",
3067  .audio_clock = 0x00187de7,
3068  .radio_type = UNSET,
3069  .tuner_addr = ADDR_UNSET,
3070  .radio_addr = ADDR_UNSET,
3071  .mpeg = SAA7134_MPEG_DVB,
3072  },
3074  .name = "LifeView FlyDVB-T Hybrid Cardbus/MSI TV @nywhere A/D NB",
3075  .audio_clock = 0x00200000,
3076  .tuner_type = TUNER_PHILIPS_TDA8290,
3077  .radio_type = UNSET,
3078  .tuner_addr = ADDR_UNSET,
3079  .radio_addr = ADDR_UNSET,
3080  .mpeg = SAA7134_MPEG_DVB,
3081  .gpiomask = 0x00600000, /* Bit 21 0=Radio, Bit 22 0=TV */
3082  .inputs = {{
3083  .name = name_tv,
3084  .vmux = 1,
3085  .amux = TV,
3086  .gpio = 0x200000, /* GPIO21=High for TV input */
3087  .tv = 1,
3088  },{
3089  .name = name_svideo, /* S-Video signal on S-Video input */
3090  .vmux = 8,
3091  .amux = LINE2,
3092  },{
3093  .name = name_comp1, /* Composite signal on S-Video input */
3094  .vmux = 0,
3095  .amux = LINE2,
3096  },{
3097  .name = name_comp2, /* Composite input */
3098  .vmux = 3,
3099  .amux = LINE2,
3100  }},
3101  .radio = {
3102  .name = name_radio,
3103  .amux = TV,
3104  .gpio = 0x000000, /* GPIO21=Low for FM radio antenna */
3105  },
3106  },
3108  /* "Zac Bowling" <[email protected]> */
3109  .name = "LifeView FlyVIDEO3000 (NTSC)",
3110  .audio_clock = 0x00200000,
3111  .tuner_type = TUNER_PHILIPS_NTSC,
3112  .radio_type = UNSET,
3113  .tuner_addr = ADDR_UNSET,
3114  .radio_addr = ADDR_UNSET,
3115 
3116  .gpiomask = 0xe000,
3117  .inputs = {{
3118  .name = name_tv,
3119  .vmux = 1,
3120  .amux = TV,
3121  .gpio = 0x8000,
3122  .tv = 1,
3123  },{
3124  .name = name_tv_mono,
3125  .vmux = 1,
3126  .amux = LINE2,
3127  .gpio = 0x0000,
3128  .tv = 1,
3129  },{
3130  .name = name_comp1,
3131  .vmux = 0,
3132  .amux = LINE2,
3133  .gpio = 0x4000,
3134  },{
3135  .name = name_comp2,
3136  .vmux = 3,
3137  .amux = LINE2,
3138  .gpio = 0x4000,
3139  },{
3140  .name = name_svideo,
3141  .vmux = 8,
3142  .amux = LINE2,
3143  .gpio = 0x4000,
3144  }},
3145  .radio = {
3146  .name = name_radio,
3147  .amux = LINE2,
3148  .gpio = 0x2000,
3149  },
3150  .mute = {
3151  .name = name_mute,
3152  .amux = TV,
3153  .gpio = 0x8000,
3154  },
3155  },
3157  .name = "Medion Md8800 Quadro",
3158  .audio_clock = 0x00187de7,
3159  .tuner_type = TUNER_PHILIPS_TDA8290,
3160  .radio_type = UNSET,
3161  .tuner_addr = ADDR_UNSET,
3162  .radio_addr = ADDR_UNSET,
3163  .mpeg = SAA7134_MPEG_DVB,
3164  .inputs = {{
3165  .name = name_tv,
3166  .vmux = 1,
3167  .amux = TV,
3168  .tv = 1,
3169  },{
3170  .name = name_comp1,
3171  .vmux = 0,
3172  .amux = LINE1,
3173  },{
3174  .name = name_svideo,
3175  .vmux = 8,
3176  .amux = LINE1,
3177  }},
3178  },
3180  /* LifeView FlyDVB-s */
3181  /* Igor M. Liplianin <[email protected]> */
3182  .name = "LifeView FlyDVB-S /Acorp TV134DS",
3183  .audio_clock = 0x00200000,
3184  .tuner_type = TUNER_ABSENT,
3185  .radio_type = UNSET,
3186  .tuner_addr = ADDR_UNSET,
3187  .radio_addr = ADDR_UNSET,
3188  .mpeg = SAA7134_MPEG_DVB,
3189  .inputs = {{
3190  .name = name_comp1, /* Composite input */
3191  .vmux = 3,
3192  .amux = LINE1,
3193  },{
3194  .name = name_svideo, /* S-Video signal on S-Video input */
3195  .vmux = 8,
3196  .amux = LINE1,
3197  }},
3198  },
3200  .name = "Proteus Pro 2309",
3201  .audio_clock = 0x00187de7,
3202  .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
3203  .radio_type = UNSET,
3204  .tuner_addr = ADDR_UNSET,
3205  .radio_addr = ADDR_UNSET,
3206  .tda9887_conf = TDA9887_PRESENT,
3207  .inputs = {{
3208  .name = name_tv,
3209  .vmux = 1,
3210  .amux = LINE2,
3211  .tv = 1,
3212  },{
3213  .name = name_comp1,
3214  .vmux = 0,
3215  .amux = LINE2,
3216  },{
3217  .name = name_comp2,
3218  .vmux = 3,
3219  .amux = LINE2,
3220  },{
3221  .name = name_svideo,
3222  .vmux = 8,
3223  .amux = LINE2,
3224  }},
3225  .mute = {
3226  .name = name_mute,
3227  .amux = LINE1,
3228  },
3229  },
3231  /* Petr Baudis <[email protected]> */
3232  .name = "AVerMedia TV Hybrid A16AR",
3233  .audio_clock = 0x187de7,
3234  .tuner_type = TUNER_PHILIPS_TD1316, /* untested */
3235  .radio_type = TUNER_TEA5767, /* untested */
3236  .tuner_addr = ADDR_UNSET,
3237  .radio_addr = 0x60,
3238  .tda9887_conf = TDA9887_PRESENT,
3239  .mpeg = SAA7134_MPEG_DVB,
3240  .inputs = {{
3241  .name = name_tv,
3242  .vmux = 1,
3243  .amux = TV,
3244  .tv = 1,
3245  },{
3246  .name = name_comp1,
3247  .vmux = 3,
3248  .amux = LINE2,
3249  },{
3250  .name = name_svideo,
3251  .vmux = 8,
3252  .amux = LINE1,
3253  }},
3254  .radio = {
3255  .name = name_radio,
3256  .amux = LINE1,
3257  },
3258  },
3260  .name = "Asus Europa2 OEM",
3261  .audio_clock = 0x00187de7,
3262  .tuner_type = TUNER_PHILIPS_FMD1216ME_MK3,
3263  .radio_type = UNSET,
3264  .tuner_addr = ADDR_UNSET,
3265  .radio_addr = ADDR_UNSET,
3266  .tda9887_conf = TDA9887_PRESENT| TDA9887_PORT1_ACTIVE | TDA9887_PORT2_ACTIVE,
3267  .mpeg = SAA7134_MPEG_DVB,
3268  .inputs = {{
3269  .name = name_tv,
3270  .vmux = 3,
3271  .amux = TV,
3272  .tv = 1,
3273  },{
3274  .name = name_comp1,
3275  .vmux = 4,
3276  .amux = LINE2,
3277  },{
3278  .name = name_svideo,
3279  .vmux = 8,
3280  .amux = LINE2,
3281  }},
3282  .radio = {
3283  .name = name_radio,
3284  .amux = LINE1,
3285  },
3286  },
3288  .name = "Pinnacle PCTV 310i",
3289  .audio_clock = 0x00187de7,
3290  .tuner_type = TUNER_PHILIPS_TDA8290,
3291  .radio_type = UNSET,
3292  .tuner_addr = ADDR_UNSET,
3293  .radio_addr = ADDR_UNSET,
3294  .tuner_config = 1,
3295  .mpeg = SAA7134_MPEG_DVB,
3296  .gpiomask = 0x000200000,
3297  .inputs = {{
3298  .name = name_tv,
3299  .vmux = 4,
3300  .amux = TV,
3301  .tv = 1,
3302  },{
3303  .name = name_comp1,
3304  .vmux = 1,
3305  .amux = LINE2,
3306  },{
3307  .name = name_comp2,
3308  .vmux = 0,
3309  .amux = LINE2,
3310  },{
3311  .name = name_svideo,
3312  .vmux = 8,
3313  .amux = LINE2,
3314  }},
3315  .radio = {
3316  .name = name_radio,
3317  .amux = TV,
3318  .gpio = 0x0200000,
3319  },
3320  },
3322  /* Mikhail Fedotov <[email protected]> */
3323  .name = "Avermedia AVerTV Studio 507",
3324  .audio_clock = 0x00187de7,
3325  .tuner_type = TUNER_PHILIPS_FM1256_IH3,
3326  .radio_type = UNSET,
3327  .tuner_addr = ADDR_UNSET,
3328  .radio_addr = ADDR_UNSET,
3329  .tda9887_conf = TDA9887_PRESENT,
3330  .gpiomask = 0x03,
3331  .inputs = {{
3332  .name = name_tv,
3333  .vmux = 1,
3334  .amux = TV,
3335  .tv = 1,
3336  .gpio = 0x00,
3337  },{
3338  .name = name_comp1,
3339  .vmux = 0,
3340  .amux = LINE2,
3341  .gpio = 0x00,
3342  },{
3343  .name = name_comp2,
3344  .vmux = 3,
3345  .amux = LINE2,
3346  .gpio = 0x00,
3347  },{
3348  .name = name_svideo,
3349  .vmux = 8,
3350  .amux = LINE2,
3351  .gpio = 0x00,
3352  }},
3353  .radio = {
3354  .name = name_radio,
3355  .amux = LINE2,
3356  .gpio = 0x01,
3357  },
3358  .mute = {
3359  .name = name_mute,
3360  .amux = LINE1,
3361  .gpio = 0x00,
3362  },
3363  },
3365  /* Francis Barber <[email protected]> */
3366  .name = "Compro Videomate DVB-T200A",
3367  .audio_clock = 0x00187de7,
3368  .tuner_type = TUNER_ABSENT,
3369  .radio_type = UNSET,
3370  .tuner_addr = ADDR_UNSET,
3371  .radio_addr = ADDR_UNSET,
3372  .tda9887_conf = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE,
3373  .mpeg = SAA7134_MPEG_DVB,
3374  .inputs = {{
3375  .name = name_tv,
3376  .vmux = 3,
3377  .amux = TV,
3378  .tv = 1,
3379  },{
3380  .name = name_comp1,
3381  .vmux = 1,
3382  .amux = LINE2,
3383  },{
3384  .name = name_svideo,
3385  .vmux = 8,
3386  .amux = LINE2,
3387  }},
3388  },
3390  /* Thomas Genty <[email protected]> */
3391  /* David Bentham <[email protected]> */
3392  .name = "Hauppauge WinTV-HVR1110 DVB-T/Hybrid",
3393  .audio_clock = 0x00187de7,
3394  .tuner_type = TUNER_PHILIPS_TDA8290,
3395  .radio_type = UNSET,
3396  .tuner_addr = ADDR_UNSET,
3397  .radio_addr = ADDR_UNSET,
3398  .tuner_config = 1,
3399  .mpeg = SAA7134_MPEG_DVB,
3400  .gpiomask = 0x0200100,
3401  .inputs = {{
3402  .name = name_tv,
3403  .vmux = 1,
3404  .amux = TV,
3405  .tv = 1,
3406  .gpio = 0x0000100,
3407  }, {
3408  .name = name_comp1,
3409  .vmux = 3,
3410  .amux = LINE1,
3411  }, {
3412  .name = name_svideo,
3413  .vmux = 8,
3414  .amux = LINE1,
3415  } },
3416  .radio = {
3417  .name = name_radio,
3418  .amux = TV,
3419  .gpio = 0x0200100,
3420  },
3421  },
3423  .name = "Hauppauge WinTV-HVR1150 ATSC/QAM-Hybrid",
3424  .audio_clock = 0x00187de7,
3425  .tuner_type = TUNER_PHILIPS_TDA8290,
3426  .radio_type = UNSET,
3427  .tuner_addr = ADDR_UNSET,
3428  .radio_addr = ADDR_UNSET,
3429  .tuner_config = 3,
3430  .mpeg = SAA7134_MPEG_DVB,
3431  .ts_type = SAA7134_MPEG_TS_SERIAL,
3432  .ts_force_val = 1,
3433  .gpiomask = 0x0800100, /* GPIO 21 is an INPUT */
3434  .inputs = {{
3435  .name = name_tv,
3436  .vmux = 1,
3437  .amux = TV,
3438  .tv = 1,
3439  .gpio = 0x0000100,
3440  }, {
3441  .name = name_comp1,
3442  .vmux = 3,
3443  .amux = LINE1,
3444  }, {
3445  .name = name_svideo,
3446  .vmux = 8,
3447  .amux = LINE1,
3448  } },
3449  .radio = {
3450  .name = name_radio,
3451  .amux = TV,
3452  .gpio = 0x0800100, /* GPIO 23 HI for FM */
3453  },
3454  },
3456  .name = "Hauppauge WinTV-HVR1120 DVB-T/Hybrid",
3457  .audio_clock = 0x00187de7,
3458  .tuner_type = TUNER_PHILIPS_TDA8290,
3459  .radio_type = UNSET,
3460  .tuner_addr = ADDR_UNSET,
3461  .radio_addr = ADDR_UNSET,
3462  .tuner_config = 3,
3463  .mpeg = SAA7134_MPEG_DVB,
3464  .ts_type = SAA7134_MPEG_TS_SERIAL,
3465  .gpiomask = 0x0800100, /* GPIO 21 is an INPUT */
3466  .inputs = {{
3467  .name = name_tv,
3468  .vmux = 1,
3469  .amux = TV,
3470  .tv = 1,
3471  .gpio = 0x0000100,
3472  }, {
3473  .name = name_comp1,
3474  .vmux = 3,
3475  .amux = LINE1,
3476  }, {
3477  .name = name_svideo,
3478  .vmux = 8,
3479  .amux = LINE1,
3480  } },
3481  .radio = {
3482  .name = name_radio,
3483  .amux = TV,
3484  .gpio = 0x0800100, /* GPIO 23 HI for FM */
3485  },
3486  },
3488  .name = "Terratec Cinergy HT PCMCIA",
3489  .audio_clock = 0x00187de7,
3490  .tuner_type = TUNER_PHILIPS_TDA8290,
3491  .radio_type = UNSET,
3492  .tuner_addr = ADDR_UNSET,
3493  .radio_addr = ADDR_UNSET,
3494  .mpeg = SAA7134_MPEG_DVB,
3495  .inputs = {{
3496  .name = name_tv,
3497  .vmux = 1,
3498  .amux = TV,
3499  .tv = 1,
3500  },{
3501  .name = name_comp1,
3502  .vmux = 0,
3503  .amux = LINE1,
3504  },{
3505  .name = name_svideo,
3506  .vmux = 6,
3507  .amux = LINE1,
3508  }},
3509  },
3511  /* Steven Walter <[email protected]>
3512  Juan Pablo Sormani <[email protected]> */
3513  .name = "Encore ENLTV",
3514  .audio_clock = 0x00200000,
3515  .tuner_type = TUNER_TNF_5335MF,
3516  .radio_type = UNSET,
3517  .tuner_addr = ADDR_UNSET,
3518  .radio_addr = ADDR_UNSET,
3519  .inputs = {{
3520  .name = name_tv,
3521  .vmux = 1,
3522  .amux = 3,
3523  .tv = 1,
3524  },{
3525  .name = name_tv_mono,
3526  .vmux = 7,
3527  .amux = 4,
3528  .tv = 1,
3529  },{
3530  .name = name_comp1,
3531  .vmux = 3,
3532  .amux = 2,
3533  },{
3534  .name = name_svideo,
3535  .vmux = 0,
3536  .amux = 2,
3537  }},
3538  .radio = {
3539  .name = name_radio,
3540  .amux = LINE2,
3541 /* .gpio = 0x00300001,*/
3542  .gpio = 0x20000,
3543 
3544  },
3545  .mute = {
3546  .name = name_mute,
3547  .amux = 0,
3548  },
3549  },
3551  /* Juan Pablo Sormani <[email protected]> */
3552  .name = "Encore ENLTV-FM",
3553  .audio_clock = 0x00200000,
3554  .tuner_type = TUNER_PHILIPS_FCV1236D,
3555  .radio_type = UNSET,
3556  .tuner_addr = ADDR_UNSET,
3557  .radio_addr = ADDR_UNSET,
3558  .inputs = {{
3559  .name = name_tv,
3560  .vmux = 1,
3561  .amux = 3,
3562  .tv = 1,
3563  },{
3564  .name = name_tv_mono,
3565  .vmux = 7,
3566  .amux = 4,
3567  .tv = 1,
3568  },{
3569  .name = name_comp1,
3570  .vmux = 3,
3571  .amux = 2,
3572  },{
3573  .name = name_svideo,
3574  .vmux = 0,
3575  .amux = 2,
3576  }},
3577  .radio = {
3578  .name = name_radio,
3579  .amux = LINE2,
3580  .gpio = 0x20000,
3581 
3582  },
3583  .mute = {
3584  .name = name_mute,
3585  .amux = 0,
3586  },
3587  },
3589  .name = "Encore ENLTV-FM v5.3",
3590  .audio_clock = 0x00200000,
3591  .tuner_type = TUNER_TNF_5335MF,
3592  .radio_type = UNSET,
3593  .tuner_addr = ADDR_UNSET,
3594  .radio_addr = ADDR_UNSET,
3595  .gpiomask = 0x7000,
3596  .inputs = { {
3597  .name = name_tv,
3598  .vmux = 1,
3599  .amux = 1,
3600  .tv = 1,
3601  .gpio = 0x50000,
3602  }, {
3603  .name = name_comp1,
3604  .vmux = 3,
3605  .amux = 2,
3606  .gpio = 0x2000,
3607  }, {
3608  .name = name_svideo,
3609  .vmux = 8,
3610  .amux = 2,
3611  .gpio = 0x2000,
3612  } },
3613  .radio = {
3614  .name = name_radio,
3615  .vmux = 1,
3616  .amux = 1,
3617  },
3618  .mute = {
3619  .name = name_mute,
3620  .gpio = 0xf000,
3621  .amux = 0,
3622  },
3623  },
3625  .name = "Encore ENLTV-FM 3",
3626  .audio_clock = 0x02187de7,
3627  .tuner_type = TUNER_TENA_TNF_5337,
3628  .radio_type = TUNER_TEA5767,
3629  .tuner_addr = 0x61,
3630  .radio_addr = 0x60,
3631  .inputs = { {
3632  .name = name_tv,
3633  .vmux = 1,
3634  .amux = LINE2,
3635  .tv = 1,
3636  }, {
3637  .name = name_comp1,
3638  .vmux = 3,
3639  .amux = LINE1,
3640  }, {
3641  .name = name_svideo,
3642  .vmux = 8,
3643  .amux = LINE1,
3644  } },
3645  .radio = {
3646  .name = name_radio,
3647  .vmux = 1,
3648  .amux = LINE1,
3649  },
3650  .mute = {
3651  .name = name_mute,
3652  .amux = LINE1,
3653  .gpio = 0x43000,
3654  },
3655  },
3657  .name = "Terratec Cinergy HT PCI",
3658  .audio_clock = 0x00187de7,
3659  .tuner_type = TUNER_PHILIPS_TDA8290,
3660  .radio_type = UNSET,
3661  .tuner_addr = ADDR_UNSET,
3662  .radio_addr = ADDR_UNSET,
3663  .mpeg = SAA7134_MPEG_DVB,
3664  .inputs = {{
3665  .name = name_tv,
3666  .vmux = 1,
3667  .amux = TV,
3668  .tv = 1,
3669  },{
3670  .name = name_comp1,
3671  .vmux = 0,
3672  .amux = LINE1,
3673  },{
3674  .name = name_svideo,
3675  .vmux = 6,
3676  .amux = LINE1,
3677  }},
3678  },
3680  .name = "Philips Tiger - S Reference design",
3681  .audio_clock = 0x00187de7,
3682  .tuner_type = TUNER_PHILIPS_TDA8290,
3683  .radio_type = UNSET,
3684  .tuner_addr = ADDR_UNSET,
3685  .radio_addr = ADDR_UNSET,
3686  .tuner_config = 2,
3687  .mpeg = SAA7134_MPEG_DVB,
3688  .gpiomask = 0x0200000,
3689  .inputs = {{
3690  .name = name_tv,
3691  .vmux = 1,
3692  .amux = TV,
3693  .tv = 1,
3694  },{
3695  .name = name_comp1,
3696  .vmux = 3,
3697  .amux = LINE1,
3698  },{
3699  .name = name_svideo,
3700  .vmux = 8,
3701  .amux = LINE1,
3702  }},
3703  .radio = {
3704  .name = name_radio,
3705  .amux = TV,
3706  .gpio = 0x0200000,
3707  },
3708  },
3710  .name = "Avermedia M102",
3711  .audio_clock = 0x00187de7,
3712  .tuner_type = TUNER_PHILIPS_TDA8290,
3713  .radio_type = UNSET,
3714  .tuner_addr = ADDR_UNSET,
3715  .radio_addr = ADDR_UNSET,
3716  .gpiomask = 1<<21,
3717  .inputs = {{
3718  .name = name_tv,
3719  .vmux = 1,
3720  .amux = TV,
3721  .tv = 1,
3722  },{
3723  .name = name_comp1,
3724  .vmux = 0,
3725  .amux = LINE2,
3726  },{
3727  .name = name_svideo,
3728  .vmux = 6,
3729  .amux = LINE2,
3730  }},
3731  },
3733  .name = "ASUS P7131 4871",
3734  .audio_clock = 0x00187de7,
3735  .tuner_type = TUNER_PHILIPS_TDA8290,
3736  .radio_type = UNSET,
3737  .tuner_addr = ADDR_UNSET,
3738  .radio_addr = ADDR_UNSET,
3739  .tuner_config = 2,
3740  .mpeg = SAA7134_MPEG_DVB,
3741  .gpiomask = 0x0200000,
3742  .inputs = {{
3743  .name = name_tv,
3744  .vmux = 1,
3745  .amux = TV,
3746  .tv = 1,
3747  .gpio = 0x0200000,
3748  }},
3749  },
3751  .name = "ASUSTeK P7131 Hybrid",
3752  .audio_clock = 0x00187de7,
3753  .tuner_type = TUNER_PHILIPS_TDA8290,
3754  .radio_type = UNSET,
3755  .tuner_addr = ADDR_UNSET,
3756  .radio_addr = ADDR_UNSET,
3757  .tuner_config = 2,
3758  .gpiomask = 1 << 21,
3759  .mpeg = SAA7134_MPEG_DVB,
3760  .inputs = {{
3761  .name = name_tv,
3762  .vmux = 1,
3763  .amux = TV,
3764  .tv = 1,
3765  .gpio = 0x0000000,
3766  },{
3767  .name = name_comp1,
3768  .vmux = 3,
3769  .amux = LINE2,
3770  .gpio = 0x0200000,
3771  },{
3772  .name = name_comp2,
3773  .vmux = 0,
3774  .amux = LINE2,
3775  .gpio = 0x0200000,
3776  },{
3777  .name = name_svideo,
3778  .vmux = 8,
3779  .amux = LINE2,
3780  .gpio = 0x0200000,
3781  }},
3782  .radio = {
3783  .name = name_radio,
3784  .amux = TV,
3785  .gpio = 0x0200000,
3786  },
3787  },
3789  .name = "ASUSTeK P7131 Analog",
3790  .audio_clock = 0x00187de7,
3791  .tuner_type = TUNER_PHILIPS_TDA8290,
3792  .radio_type = UNSET,
3793  .tuner_addr = ADDR_UNSET,
3794  .radio_addr = ADDR_UNSET,
3795  .gpiomask = 1 << 21,
3796  .inputs = {{
3797  .name = name_tv,
3798  .vmux = 1,
3799  .amux = TV,
3800  .tv = 1,
3801  .gpio = 0x0000000,
3802  }, {
3803  .name = name_comp1,
3804  .vmux = 3,
3805  .amux = LINE2,
3806  }, {
3807  .name = name_comp2,
3808  .vmux = 0,
3809  .amux = LINE2,
3810  }, {
3811  .name = name_svideo,
3812  .vmux = 8,
3813  .amux = LINE2,
3814  } },
3815  .radio = {
3816  .name = name_radio,
3817  .amux = TV,
3818  .gpio = 0x0200000,
3819  },
3820  },
3822  .name = "Sabrent PCMCIA TV-PCB05",
3823  .audio_clock = 0x00187de7,
3824  .tuner_type = TUNER_PHILIPS_TDA8290,
3825  .radio_type = UNSET,
3826  .tuner_addr = ADDR_UNSET,
3827  .radio_addr = ADDR_UNSET,
3828  .inputs = {{
3829  .name = name_tv,
3830  .vmux = 1,
3831  .amux = TV,
3832  .tv = 1,
3833  },{
3834  .name = name_comp1,
3835  .vmux = 3,
3836  .amux = LINE1,
3837  },{
3838  .name = name_comp2,
3839  .vmux = 0,
3840  .amux = LINE1,
3841  },{
3842  .name = name_svideo,
3843  .vmux = 8,
3844  .amux = LINE1,
3845  }},
3846  .mute = {
3847  .name = name_mute,
3848  .amux = TV,
3849  },
3850  },
3852  /* Tony Wan <[email protected]> */
3853  .name = "10MOONS TM300 TV Card",
3854  .audio_clock = 0x00200000,
3855  .tuner_type = TUNER_LG_PAL_NEW_TAPC,
3856  .radio_type = UNSET,
3857  .tuner_addr = ADDR_UNSET,
3858  .radio_addr = ADDR_UNSET,
3859  .gpiomask = 0x7000,
3860  .inputs = {{
3861  .name = name_tv,
3862  .vmux = 1,
3863  .amux = LINE2,
3864  .gpio = 0x0000,
3865  .tv = 1,
3866  },{
3867  .name = name_comp1,
3868  .vmux = 3,
3869  .amux = LINE1,
3870  .gpio = 0x2000,
3871  },{
3872  .name = name_svideo,
3873  .vmux = 8,
3874  .amux = LINE1,
3875  .gpio = 0x2000,
3876  }},
3877  .mute = {
3878  .name = name_mute,
3879  .amux = LINE2,
3880  .gpio = 0x3000,
3881  },
3882  },
3884  .name = "Avermedia Super 007",
3885  .audio_clock = 0x00187de7,
3886  .tuner_type = TUNER_PHILIPS_TDA8290,
3887  .radio_type = UNSET,
3888  .tuner_addr = ADDR_UNSET,
3889  .radio_addr = ADDR_UNSET,
3890  .tuner_config = 0,
3891  .mpeg = SAA7134_MPEG_DVB,
3892  .inputs = {{
3893  .name = name_tv, /* FIXME: analog tv untested */
3894  .vmux = 1,
3895  .amux = TV,
3896  .tv = 1,
3897  }},
3898  },
3900  .name = "Avermedia PCI pure analog (M135A)",
3901  .audio_clock = 0x00187de7,
3902  .tuner_type = TUNER_PHILIPS_TDA8290,
3903  .radio_type = UNSET,
3904  .tuner_addr = ADDR_UNSET,
3905  .radio_addr = ADDR_UNSET,
3906  .tuner_config = 2,
3907  .gpiomask = 0x020200000,
3908  .inputs = {{
3909  .name = name_tv,
3910  .vmux = 1,
3911  .amux = TV,
3912  .tv = 1,
3913  }, {
3914  .name = name_comp1,
3915  .vmux = 3,
3916  .amux = LINE1,
3917  }, {
3918  .name = name_svideo,
3919  .vmux = 8,
3920  .amux = LINE1,
3921  } },
3922  .radio = {
3923  .name = name_radio,
3924  .amux = TV,
3925  .gpio = 0x00200000,
3926  },
3927  .mute = {
3928  .name = name_mute,
3929  .amux = TV,
3930  .gpio = 0x01,
3931  },
3932  },
3934  .name = "Avermedia PCI M733A",
3935  .audio_clock = 0x00187de7,
3936  .tuner_type = TUNER_PHILIPS_TDA8290,
3937  .radio_type = UNSET,
3938  .tuner_addr = ADDR_UNSET,
3939  .radio_addr = ADDR_UNSET,
3940  .tuner_config = 0,
3941  .gpiomask = 0x020200000,
3942  .inputs = {{
3943  .name = name_tv,
3944  .vmux = 1,
3945  .amux = TV,
3946  .tv = 1,
3947  }, {
3948  .name = name_comp1,
3949  .vmux = 3,
3950  .amux = LINE1,
3951  }, {
3952  .name = name_svideo,
3953  .vmux = 8,
3954  .amux = LINE1,
3955  } },
3956  .radio = {
3957  .name = name_radio,
3958  .amux = TV,
3959  .gpio = 0x00200000,
3960  },
3961  .mute = {
3962  .name = name_mute,
3963  .amux = TV,
3964  .gpio = 0x01,
3965  },
3966  },
3968  /* Beholder Intl. Ltd. 2008 */
3969  /*Dmitry Belimov <[email protected]> */
3970  .name = "Beholder BeholdTV 401",
3971  .audio_clock = 0x00187de7,
3972  .tuner_type = TUNER_PHILIPS_FQ1216ME,
3973  .radio_type = UNSET,
3974  .tuner_addr = ADDR_UNSET,
3975  .radio_addr = ADDR_UNSET,
3976  .gpiomask = 0x00008000,
3977  .inputs = {{
3978  .name = name_svideo,
3979  .vmux = 8,
3980  .amux = LINE1,
3981  },{
3982  .name = name_comp1,
3983  .vmux = 1,
3984  .amux = LINE1,
3985  },{
3986  .name = name_tv,
3987  .vmux = 3,
3988  .amux = LINE2,
3989  .tv = 1,
3990  }},
3991  .mute = {
3992  .name = name_mute,
3993  .amux = LINE1,
3994  },
3995  },
3997  /* Beholder Intl. Ltd. 2008 */
3998  /*Dmitry Belimov <[email protected]> */
3999  .name = "Beholder BeholdTV 403",
4000  .audio_clock = 0x00187de7,
4001  .tuner_type = TUNER_PHILIPS_FQ1216ME,
4002  .radio_type = UNSET,
4003  .tuner_addr = ADDR_UNSET,
4004  .radio_addr = ADDR_UNSET,
4005  .gpiomask = 0x00008000,
4006  .inputs = {{
4007  .name = name_svideo,
4008  .vmux = 8,
4009  .amux = LINE1,
4010  },{
4011  .name = name_comp1,
4012  .vmux = 1,
4013  .amux = LINE1,
4014  },{
4015  .name = name_tv,
4016  .vmux = 3,
4017  .amux = LINE2,
4018  .tv = 1,
4019  }},
4020  },
4022  /* Beholder Intl. Ltd. 2008 */
4023  /*Dmitry Belimov <[email protected]> */
4024  .name = "Beholder BeholdTV 403 FM",
4025  .audio_clock = 0x00187de7,
4026  .tuner_type = TUNER_PHILIPS_FQ1216ME,
4027  .radio_type = UNSET,
4028  .tuner_addr = ADDR_UNSET,
4029  .radio_addr = ADDR_UNSET,
4030  .gpiomask = 0x00008000,
4031  .inputs = {{
4032  .name = name_svideo,
4033  .vmux = 8,
4034  .amux = LINE1,
4035  },{
4036  .name = name_comp1,
4037  .vmux = 1,
4038  .amux = LINE1,
4039  },{
4040  .name = name_tv,
4041  .vmux = 3,
4042  .amux = LINE2,
4043  .tv = 1,
4044  }},
4045  .radio = {
4046  .name = name_radio,
4047  .amux = LINE2,
4048  },
4049  },
4051  /* Beholder Intl. Ltd. 2008 */
4052  /*Dmitry Belimov <[email protected]> */
4053  .name = "Beholder BeholdTV 405",
4054  .audio_clock = 0x00187de7,
4055  .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
4056  .radio_type = UNSET,
4057  .tuner_addr = ADDR_UNSET,
4058  .radio_addr = ADDR_UNSET,
4059  .tda9887_conf = TDA9887_PRESENT,
4060  .gpiomask = 0x00008000,
4061  .inputs = {{
4062  .name = name_svideo,
4063  .vmux = 8,
4064  .amux = LINE1,
4065  },{
4066  .name = name_comp1,
4067  .vmux = 3,
4068  .amux = LINE1,
4069  },{
4070  .name = name_tv,
4071  .vmux = 3,
4072  .amux = LINE2,
4073  .tv = 1,
4074  }},
4075  },
4077  /* Sergey <[email protected]> */
4078  /* Beholder Intl. Ltd. 2008 */
4079  /*Dmitry Belimov <[email protected]> */
4080  .name = "Beholder BeholdTV 405 FM",
4081  .audio_clock = 0x00187de7,
4082  .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
4083  .radio_type = UNSET,
4084  .tuner_addr = ADDR_UNSET,
4085  .radio_addr = ADDR_UNSET,
4086  .tda9887_conf = TDA9887_PRESENT,
4087  .gpiomask = 0x00008000,
4088  .inputs = {{
4089  .name = name_svideo,
4090  .vmux = 8,
4091  .amux = LINE1,
4092  },{
4093  .name = name_comp1,
4094  .vmux = 3,
4095  .amux = LINE1,
4096  },{
4097  .name = name_tv,
4098  .vmux = 3,
4099  .amux = LINE2,
4100  .tv = 1,
4101  }},
4102  .radio = {
4103  .name = name_radio,
4104  .amux = LINE2,
4105  },
4106  },
4108  /* Beholder Intl. Ltd. 2008 */
4109  /*Dmitry Belimov <[email protected]> */
4110  .name = "Beholder BeholdTV 407",
4111  .audio_clock = 0x00187de7,
4112  .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
4113  .radio_type = UNSET,
4114  .tuner_addr = ADDR_UNSET,
4115  .radio_addr = ADDR_UNSET,
4116  .tda9887_conf = TDA9887_PRESENT,
4117  .gpiomask = 0x00008000,
4118  .inputs = {{
4119  .name = name_svideo,
4120  .vmux = 8,
4121  .amux = LINE1,
4122  .gpio = 0xc0c000,
4123  },{
4124  .name = name_comp1,
4125  .vmux = 1,
4126  .amux = LINE1,
4127  .gpio = 0xc0c000,
4128  },{
4129  .name = name_tv,
4130  .vmux = 3,
4131  .amux = TV,
4132  .tv = 1,
4133  .gpio = 0xc0c000,
4134  }},
4135  },
4137  /* Beholder Intl. Ltd. 2008 */
4138  /*Dmitry Belimov <[email protected]> */
4139  .name = "Beholder BeholdTV 407 FM",
4140  .audio_clock = 0x00187de7,
4141  .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
4142  .radio_type = UNSET,
4143  .tuner_addr = ADDR_UNSET,
4144  .radio_addr = ADDR_UNSET,
4145  .tda9887_conf = TDA9887_PRESENT,
4146  .gpiomask = 0x00008000,
4147  .inputs = {{
4148  .name = name_svideo,
4149  .vmux = 8,
4150  .amux = LINE1,
4151  .gpio = 0xc0c000,
4152  },{
4153  .name = name_comp1,
4154  .vmux = 1,
4155  .amux = LINE1,
4156  .gpio = 0xc0c000,
4157  },{
4158  .name = name_tv,
4159  .vmux = 3,
4160  .amux = TV,
4161  .tv = 1,
4162  .gpio = 0xc0c000,
4163  }},
4164  .radio = {
4165  .name = name_radio,
4166  .amux = LINE2,
4167  .gpio = 0xc0c000,
4168  },
4169  },
4171  /* Beholder Intl. Ltd. 2008 */
4172  /*Dmitry Belimov <[email protected]> */
4173  .name = "Beholder BeholdTV 409",
4174  .audio_clock = 0x00187de7,
4175  .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
4176  .radio_type = UNSET,
4177  .tuner_addr = ADDR_UNSET,
4178  .radio_addr = ADDR_UNSET,
4179  .tda9887_conf = TDA9887_PRESENT,
4180  .gpiomask = 0x00008000,
4181  .inputs = {{
4182  .name = name_tv,
4183  .vmux = 3,
4184  .amux = TV,
4185  .tv = 1,
4186  },{
4187  .name = name_comp1,
4188  .vmux = 1,
4189  .amux = LINE1,
4190  },{
4191  .name = name_svideo,
4192  .vmux = 8,
4193  .amux = LINE1,
4194  }},
4195  },
4197  /* Beholder Intl. Ltd. 2008 */
4198  /*Dmitry Belimov <[email protected]> */
4199  .name = "Beholder BeholdTV 505 FM",
4200  .audio_clock = 0x00200000,
4201  .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
4202  .radio_type = UNSET,
4203  .tuner_addr = ADDR_UNSET,
4204  .radio_addr = ADDR_UNSET,
4205  .tda9887_conf = TDA9887_PRESENT,
4206  .gpiomask = 0x00008000,
4207  .inputs = {{
4208  .name = name_tv,
4209  .vmux = 3,
4210  .amux = LINE2,
4211  .tv = 1,
4212  }, {
4213  .name = name_comp1,
4214  .vmux = 1,
4215  .amux = LINE1,
4216  }, {
4217  .name = name_svideo,
4218  .vmux = 8,
4219  .amux = LINE1,
4220  } },
4221  .mute = {
4222  .name = name_mute,
4223  .amux = LINE1,
4224  },
4225  .radio = {
4226  .name = name_radio,
4227  .amux = LINE2,
4228  },
4229  },
4231  /* Beholder Intl. Ltd. 2008 */
4232  /*Dmitry Belimov <[email protected]> */
4233  .name = "Beholder BeholdTV 505 RDS",
4234  .audio_clock = 0x00200000,
4235  .tuner_type = TUNER_PHILIPS_FM1216MK5,
4236  .radio_type = UNSET,
4237  .tuner_addr = ADDR_UNSET,
4238  .radio_addr = ADDR_UNSET,
4239  .rds_addr = 0x10,
4240  .tda9887_conf = TDA9887_PRESENT,
4241  .gpiomask = 0x00008000,
4242  .inputs = {{
4243  .name = name_tv,
4244  .vmux = 3,
4245  .amux = LINE2,
4246  .tv = 1,
4247  },{
4248  .name = name_comp1,
4249  .vmux = 1,
4250  .amux = LINE1,
4251  },{
4252  .name = name_svideo,
4253  .vmux = 8,
4254  .amux = LINE1,
4255  }},
4256  .mute = {
4257  .name = name_mute,
4258  .amux = LINE1,
4259  },
4260  .radio = {
4261  .name = name_radio,
4262  .amux = LINE2,
4263  },
4264  },
4266  /* Beholder Intl. Ltd. 2008 */
4267  /*Dmitry Belimov <[email protected]> */
4268  .name = "Beholder BeholdTV 507 FM / BeholdTV 509 FM",
4269  .audio_clock = 0x00187de7,
4270  .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
4271  .radio_type = UNSET,
4272  .tuner_addr = ADDR_UNSET,
4273  .radio_addr = ADDR_UNSET,
4274  .tda9887_conf = TDA9887_PRESENT,
4275  .gpiomask = 0x00008000,
4276  .inputs = {{
4277  .name = name_tv,
4278  .vmux = 3,
4279  .amux = TV,
4280  .tv = 1,
4281  },{
4282  .name = name_comp1,
4283  .vmux = 1,
4284  .amux = LINE1,
4285  },{
4286  .name = name_svideo,
4287  .vmux = 8,
4288  .amux = LINE1,
4289  }},
4290  .radio = {
4291  .name = name_radio,
4292  .amux = LINE2,
4293  },
4294  },
4296  /* Beholder Intl. Ltd. 2008 */
4297  /*Dmitry Belimov <[email protected]> */
4298  .name = "Beholder BeholdTV 507 RDS",
4299  .audio_clock = 0x00187de7,
4300  .tuner_type = TUNER_PHILIPS_FM1216MK5,
4301  .radio_type = UNSET,
4302  .tuner_addr = ADDR_UNSET,
4303  .radio_addr = ADDR_UNSET,
4304  .rds_addr = 0x10,
4305  .tda9887_conf = TDA9887_PRESENT,
4306  .gpiomask = 0x00008000,
4307  .inputs = {{
4308  .name = name_tv,
4309  .vmux = 3,
4310  .amux = TV,
4311  .tv = 1,
4312  }, {
4313  .name = name_comp1,
4314  .vmux = 1,
4315  .amux = LINE1,
4316  }, {
4317  .name = name_svideo,
4318  .vmux = 8,
4319  .amux = LINE1,
4320  } },
4321  .radio = {
4322  .name = name_radio,
4323  .amux = LINE2,
4324  },
4325  },
4327  /* Beholder Intl. Ltd. 2008 */
4328  /*Dmitry Belimov <[email protected]> */
4329  .name = "Beholder BeholdTV 507 RDS",
4330  .audio_clock = 0x00187de7,
4331  .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
4332  .radio_type = UNSET,
4333  .tuner_addr = ADDR_UNSET,
4334  .radio_addr = ADDR_UNSET,
4335  .rds_addr = 0x10,
4336  .tda9887_conf = TDA9887_PRESENT,
4337  .gpiomask = 0x00008000,
4338  .inputs = {{
4339  .name = name_tv,
4340  .vmux = 3,
4341  .amux = TV,
4342  .tv = 1,
4343  }, {
4344  .name = name_comp1,
4345  .vmux = 1,
4346  .amux = LINE1,
4347  }, {
4348  .name = name_svideo,
4349  .vmux = 8,
4350  .amux = LINE1,
4351  } },
4352  .radio = {
4353  .name = name_radio,
4354  .amux = LINE2,
4355  },
4356  },
4358  /* Beholder Intl. Ltd. 2008 */
4359  /* Dmitry Belimov <[email protected]> */
4360  .name = "Beholder BeholdTV Columbus TV/FM",
4361  .audio_clock = 0x00187de7,
4362  .tuner_type = TUNER_ALPS_TSBE5_PAL,
4363  .radio_type = TUNER_TEA5767,
4364  .tuner_addr = 0xc2 >> 1,
4365  .radio_addr = 0xc0 >> 1,
4366  .tda9887_conf = TDA9887_PRESENT,
4367  .gpiomask = 0x000A8004,
4368  .inputs = {{
4369  .name = name_tv,
4370  .vmux = 3,
4371  .amux = TV,
4372  .tv = 1,
4373  .gpio = 0x000A8004,
4374  }, {
4375  .name = name_comp1,
4376  .vmux = 1,
4377  .amux = LINE1,
4378  .gpio = 0x000A8000,
4379  }, {
4380  .name = name_svideo,
4381  .vmux = 8,
4382  .amux = LINE1,
4383  .gpio = 0x000A8000,
4384  } },
4385  .radio = {
4386  .name = name_radio,
4387  .amux = LINE2,
4388  .gpio = 0x000A8000,
4389  },
4390  },
4392  /* Andrey Melnikoff <[email protected]> */
4393  .name = "Beholder BeholdTV 607 FM",
4394  .audio_clock = 0x00187de7,
4395  .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
4396  .radio_type = UNSET,
4397  .tuner_addr = ADDR_UNSET,
4398  .radio_addr = ADDR_UNSET,
4399  .tda9887_conf = TDA9887_PRESENT,
4400  .inputs = {{
4401  .name = name_tv,
4402  .vmux = 3,
4403  .amux = TV,
4404  .tv = 1,
4405  }, {
4406  .name = name_comp1,
4407  .vmux = 1,
4408  .amux = LINE1,
4409  }, {
4410  .name = name_svideo,
4411  .vmux = 8,
4412  .amux = LINE1,
4413  } },
4414  .radio = {
4415  .name = name_radio,
4416  .amux = LINE2,
4417  },
4418  },
4420  /* Andrey Melnikoff <[email protected]> */
4421  .name = "Beholder BeholdTV 609 FM",
4422  .audio_clock = 0x00187de7,
4423  .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
4424  .radio_type = UNSET,
4425  .tuner_addr = ADDR_UNSET,
4426  .radio_addr = ADDR_UNSET,
4427  .tda9887_conf = TDA9887_PRESENT,
4428  .inputs = {{
4429  .name = name_tv,
4430  .vmux = 3,
4431  .amux = TV,
4432  .tv = 1,
4433  }, {
4434  .name = name_comp1,
4435  .vmux = 1,
4436  .amux = LINE1,
4437  }, {
4438  .name = name_svideo,
4439  .vmux = 8,
4440  .amux = LINE1,
4441  } },
4442  .radio = {
4443  .name = name_radio,
4444  .amux = LINE2,
4445  },
4446  },
4448  /* Andrey Melnikoff <[email protected]> */
4449  .name = "Beholder BeholdTV 607 FM",
4450  .audio_clock = 0x00187de7,
4451  .tuner_type = TUNER_PHILIPS_FM1216MK5,
4452  .radio_type = UNSET,
4453  .tuner_addr = ADDR_UNSET,
4454  .radio_addr = ADDR_UNSET,
4455  .tda9887_conf = TDA9887_PRESENT,
4456  .inputs = {{
4457  .name = name_tv,
4458  .vmux = 3,
4459  .amux = TV,
4460  .tv = 1,
4461  }, {
4462  .name = name_comp1,
4463  .vmux = 1,
4464  .amux = LINE1,
4465  }, {
4466  .name = name_svideo,
4467  .vmux = 8,
4468  .amux = LINE1,
4469  } },
4470  .radio = {
4471  .name = name_radio,
4472  .amux = LINE2,
4473  },
4474  },
4476  /* Andrey Melnikoff <[email protected]> */
4477  .name = "Beholder BeholdTV 609 FM",
4478  .audio_clock = 0x00187de7,
4479  .tuner_type = TUNER_PHILIPS_FM1216MK5,
4480  .radio_type = UNSET,
4481  .tuner_addr = ADDR_UNSET,
4482  .radio_addr = ADDR_UNSET,
4483  .tda9887_conf = TDA9887_PRESENT,
4484  .inputs = {{
4485  .name = name_tv,
4486  .vmux = 3,
4487  .amux = TV,
4488  .tv = 1,
4489  }, {
4490  .name = name_comp1,
4491  .vmux = 1,
4492  .amux = LINE1,
4493  }, {
4494  .name = name_svideo,
4495  .vmux = 8,
4496  .amux = LINE1,
4497  } },
4498  .radio = {
4499  .name = name_radio,
4500  .amux = LINE2,
4501  },
4502  },
4504  /* Andrey Melnikoff <[email protected]> */
4505  .name = "Beholder BeholdTV 607 RDS",
4506  .audio_clock = 0x00187de7,
4507  .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
4508  .radio_type = UNSET,
4509  .tuner_addr = ADDR_UNSET,
4510  .radio_addr = ADDR_UNSET,
4511  .rds_addr = 0x10,
4512  .tda9887_conf = TDA9887_PRESENT,
4513  .inputs = {{
4514  .name = name_tv,
4515  .vmux = 3,
4516  .amux = TV,
4517  .tv = 1,
4518  }, {
4519  .name = name_comp1,
4520  .vmux = 1,
4521  .amux = LINE1,
4522  }, {
4523  .name = name_svideo,
4524  .vmux = 8,
4525  .amux = LINE1,
4526  } },
4527  .radio = {
4528  .name = name_radio,
4529  .amux = LINE2,
4530  },
4531  },
4533  /* Andrey Melnikoff <[email protected]> */
4534  .name = "Beholder BeholdTV 609 RDS",
4535  .audio_clock = 0x00187de7,
4536  .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
4537  .radio_type = UNSET,
4538  .tuner_addr = ADDR_UNSET,
4539  .radio_addr = ADDR_UNSET,
4540  .rds_addr = 0x10,
4541  .tda9887_conf = TDA9887_PRESENT,
4542  .inputs = {{
4543  .name = name_tv,
4544  .vmux = 3,
4545  .amux = TV,
4546  .tv = 1,
4547  }, {
4548  .name = name_comp1,
4549  .vmux = 1,
4550  .amux = LINE1,
4551  }, {
4552  .name = name_svideo,
4553  .vmux = 8,
4554  .amux = LINE1,
4555  } },
4556  .radio = {
4557  .name = name_radio,
4558  .amux = LINE2,
4559  },
4560  },
4562  /* Andrey Melnikoff <[email protected]> */
4563  .name = "Beholder BeholdTV 607 RDS",
4564  .audio_clock = 0x00187de7,
4565  .tuner_type = TUNER_PHILIPS_FM1216MK5,
4566  .radio_type = UNSET,
4567  .tuner_addr = ADDR_UNSET,
4568  .radio_addr = ADDR_UNSET,
4569  .rds_addr = 0x10,
4570  .tda9887_conf = TDA9887_PRESENT,
4571  .inputs = {{
4572  .name = name_tv,
4573  .vmux = 3,
4574  .amux = TV,
4575  .tv = 1,
4576  }, {
4577  .name = name_comp1,
4578  .vmux = 1,
4579  .amux = LINE1,
4580  }, {
4581  .name = name_svideo,
4582  .vmux = 8,
4583  .amux = LINE1,
4584  } },
4585  .radio = {
4586  .name = name_radio,
4587  .amux = LINE2,
4588  },
4589  },
4591  /* Andrey Melnikoff <[email protected]> */
4592  .name = "Beholder BeholdTV 609 RDS",
4593  .audio_clock = 0x00187de7,
4594  .tuner_type = TUNER_PHILIPS_FM1216MK5,
4595  .radio_type = UNSET,
4596  .tuner_addr = ADDR_UNSET,
4597  .radio_addr = ADDR_UNSET,
4598  .rds_addr = 0x10,
4599  .tda9887_conf = TDA9887_PRESENT,
4600  .inputs = {{
4601  .name = name_tv,
4602  .vmux = 3,
4603  .amux = TV,
4604  .tv = 1,
4605  },{
4606  .name = name_comp1,
4607  .vmux = 1,
4608  .amux = LINE1,
4609  },{
4610  .name = name_svideo,
4611  .vmux = 8,
4612  .amux = LINE1,
4613  }},
4614  .radio = {
4615  .name = name_radio,
4616  .amux = LINE2,
4617  },
4618  },
4620  /* Igor Kuznetsov <[email protected]> */
4621  /* Andrey Melnikoff <[email protected]> */
4622  /* Beholder Intl. Ltd. Dmitry Belimov <[email protected]> */
4623  /* Alexey Osipov <[email protected]> */
4624  .name = "Beholder BeholdTV M6",
4625  .audio_clock = 0x00187de7,
4626  .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
4627  .radio_type = UNSET,
4628  .tuner_addr = ADDR_UNSET,
4629  .radio_addr = ADDR_UNSET,
4630  .empress_addr = 0x20,
4631  .tda9887_conf = TDA9887_PRESENT,
4632  .inputs = { {
4633  .name = name_tv,
4634  .vmux = 3,
4635  .amux = TV,
4636  .tv = 1,
4637  }, {
4638  .name = name_comp1,
4639  .vmux = 1,
4640  .amux = LINE1,
4641  }, {
4642  .name = name_svideo,
4643  .vmux = 8,
4644  .amux = LINE1,
4645  } },
4646  .radio = {
4647  .name = name_radio,
4648  .amux = LINE2,
4649  },
4650  .mpeg = SAA7134_MPEG_EMPRESS,
4651  .video_out = CCIR656,
4652  .vid_port_opts = (SET_T_CODE_POLARITY_NON_INVERTED |
4655  SET_VSYNC_OFF),
4656  },
4658  /* Igor Kuznetsov <[email protected]> */
4659  /* Andrey Melnikoff <[email protected]> */
4660  /* Beholder Intl. Ltd. Dmitry Belimov <[email protected]> */
4661  .name = "Beholder BeholdTV M63",
4662  .audio_clock = 0x00187de7,
4663  .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
4664  .radio_type = UNSET,
4665  .tuner_addr = ADDR_UNSET,
4666  .radio_addr = ADDR_UNSET,
4667  .empress_addr = 0x20,
4668  .tda9887_conf = TDA9887_PRESENT,
4669  .inputs = { {
4670  .name = name_tv,
4671  .vmux = 3,
4672  .amux = TV,
4673  .tv = 1,
4674  }, {
4675  .name = name_comp1,
4676  .vmux = 1,
4677  .amux = LINE1,
4678  }, {
4679  .name = name_svideo,
4680  .vmux = 8,
4681  .amux = LINE1,
4682  } },
4683  .radio = {
4684  .name = name_radio,
4685  .amux = LINE2,
4686  },
4687  .mpeg = SAA7134_MPEG_EMPRESS,
4688  .video_out = CCIR656,
4689  .vid_port_opts = (SET_T_CODE_POLARITY_NON_INVERTED |
4692  SET_VSYNC_OFF),
4693  },
4695  /* Igor Kuznetsov <[email protected]> */
4696  /* Andrey Melnikoff <[email protected]> */
4697  /* Beholder Intl. Ltd. Dmitry Belimov <[email protected]> */
4698  /* Alexey Osipov <[email protected]> */
4699  .name = "Beholder BeholdTV M6 Extra",
4700  .audio_clock = 0x00187de7,
4701  .tuner_type = TUNER_PHILIPS_FM1216MK5,
4702  .radio_type = UNSET,
4703  .tuner_addr = ADDR_UNSET,
4704  .radio_addr = ADDR_UNSET,
4705  .rds_addr = 0x10,
4706  .empress_addr = 0x20,
4707  .tda9887_conf = TDA9887_PRESENT,
4708  .inputs = { {
4709  .name = name_tv,
4710  .vmux = 3,
4711  .amux = TV,
4712  .tv = 1,
4713  }, {
4714  .name = name_comp1,
4715  .vmux = 1,
4716  .amux = LINE1,
4717  }, {
4718  .name = name_svideo,
4719  .vmux = 8,
4720  .amux = LINE1,
4721  } },
4722  .radio = {
4723  .name = name_radio,
4724  .amux = LINE2,
4725  },
4726  .mpeg = SAA7134_MPEG_EMPRESS,
4727  .video_out = CCIR656,
4728  .vid_port_opts = (SET_T_CODE_POLARITY_NON_INVERTED |
4731  SET_VSYNC_OFF),
4732  },
4734  .name = "Twinhan Hybrid DTV-DVB 3056 PCI",
4735  .audio_clock = 0x00187de7,
4736  .tuner_type = TUNER_PHILIPS_TDA8290,
4737  .radio_type = UNSET,
4738  .tuner_addr = ADDR_UNSET,
4739  .radio_addr = ADDR_UNSET,
4740  .tuner_config = 2,
4741  .mpeg = SAA7134_MPEG_DVB,
4742  .gpiomask = 0x0200000,
4743  .inputs = {{
4744  .name = name_tv,
4745  .vmux = 1,
4746  .amux = TV,
4747  .tv = 1,
4748  }, {
4749  .name = name_comp1,
4750  .vmux = 3,
4751  .amux = LINE1,
4752  }, {
4753  .name = name_svideo,
4754  .vmux = 8, /* untested */
4755  .amux = LINE1,
4756  } },
4757  .radio = {
4758  .name = name_radio,
4759  .amux = TV,
4760  .gpio = 0x0200000,
4761  },
4762  },
4764  /* Adrian Pardini <[email protected]> */
4765  .name = "Genius TVGO AM11MCE",
4766  .audio_clock = 0x00200000,
4767  .tuner_type = TUNER_TNF_5335MF,
4768  .radio_type = UNSET,
4769  .tuner_addr = ADDR_UNSET,
4770  .radio_addr = ADDR_UNSET,
4771  .gpiomask = 0xf000,
4772  .inputs = {{
4773  .name = name_tv_mono,
4774  .vmux = 1,
4775  .amux = LINE2,
4776  .gpio = 0x0000,
4777  .tv = 1,
4778  }, {
4779  .name = name_comp1,
4780  .vmux = 3,
4781  .amux = LINE1,
4782  .gpio = 0x2000,
4783  .tv = 1
4784  }, {
4785  .name = name_svideo,
4786  .vmux = 8,
4787  .amux = LINE1,
4788  .gpio = 0x2000,
4789  } },
4790  .radio = {
4791  .name = name_radio,
4792  .amux = LINE2,
4793  .gpio = 0x1000,
4794  },
4795  .mute = {
4796  .name = name_mute,
4797  .amux = LINE2,
4798  .gpio = 0x6000,
4799  },
4800  },
4802  .name = "NXP Snake DVB-S reference design",
4803  .audio_clock = 0x00200000,
4804  .tuner_type = TUNER_ABSENT,
4805  .radio_type = UNSET,
4806  .tuner_addr = ADDR_UNSET,
4807  .radio_addr = ADDR_UNSET,
4808  .mpeg = SAA7134_MPEG_DVB,
4809  .inputs = {{
4810  .name = name_comp1,
4811  .vmux = 3,
4812  .amux = LINE1,
4813  }, {
4814  .name = name_svideo,
4815  .vmux = 8,
4816  .amux = LINE1,
4817  } },
4818  },
4820  .name = "Medion/Creatix CTX953 Hybrid",
4821  .audio_clock = 0x00187de7,
4822  .tuner_type = TUNER_PHILIPS_TDA8290,
4823  .radio_type = UNSET,
4824  .tuner_addr = ADDR_UNSET,
4825  .radio_addr = ADDR_UNSET,
4826  .tuner_config = 0,
4827  .mpeg = SAA7134_MPEG_DVB,
4828  .inputs = {{
4829  .name = name_tv,
4830  .vmux = 1,
4831  .amux = TV,
4832  .tv = 1,
4833  }, {
4834  .name = name_comp1,
4835  .vmux = 0,
4836  .amux = LINE1,
4837  }, {
4838  .name = name_svideo,
4839  .vmux = 8,
4840  .amux = LINE1,
4841  } },
4842  },
4844  .name = "MSI TV@nywhere A/D v1.1",
4845  .audio_clock = 0x00187de7,
4846  .tuner_type = TUNER_PHILIPS_TDA8290,
4847  .radio_type = UNSET,
4848  .tuner_addr = ADDR_UNSET,
4849  .radio_addr = ADDR_UNSET,
4850  .tuner_config = 2,
4851  .mpeg = SAA7134_MPEG_DVB,
4852  .gpiomask = 0x0200000,
4853  .inputs = { {
4854  .name = name_tv,
4855  .vmux = 1,
4856  .amux = TV,
4857  .tv = 1,
4858  }, {
4859  .name = name_comp1,
4860  .vmux = 3,
4861  .amux = LINE1,
4862  }, {
4863  .name = name_svideo,
4864  .vmux = 8,
4865  .amux = LINE1,
4866  } },
4867  .radio = {
4868  .name = name_radio,
4869  .amux = TV,
4870  .gpio = 0x0200000,
4871  },
4872  },
4874  .name = "AVerMedia Cardbus TV/Radio (E506R)",
4875  .audio_clock = 0x187de7,
4876  .tuner_type = TUNER_XC2028,
4877  .radio_type = UNSET,
4878  .tuner_addr = ADDR_UNSET,
4879  .radio_addr = ADDR_UNSET,
4880  .mpeg = SAA7134_MPEG_DVB,
4881  .inputs = {{
4882  .name = name_tv,
4883  .vmux = 1,
4884  .amux = TV,
4885  .tv = 1,
4886  }, {
4887  .name = name_comp1,
4888  .vmux = 3,
4889  .amux = LINE1,
4890  }, {
4891  .name = name_svideo,
4892  .vmux = 8,
4893  .amux = LINE2,
4894  } },
4895  .radio = {
4896  .name = name_radio,
4897  .amux = TV,
4898  },
4899  },
4901  .name = "AVerMedia Hybrid TV/Radio (A16D)",
4902  .audio_clock = 0x187de7,
4903  .tuner_type = TUNER_XC2028,
4904  .radio_type = UNSET,
4905  .tuner_addr = ADDR_UNSET,
4906  .radio_addr = ADDR_UNSET,
4907  .mpeg = SAA7134_MPEG_DVB,
4908  .inputs = {{
4909  .name = name_tv,
4910  .vmux = 1,
4911  .amux = TV,
4912  .tv = 1,
4913  }, {
4914  .name = name_svideo,
4915  .vmux = 8,
4916  .amux = LINE1,
4917  }, {
4918  .name = name_comp,
4919  .vmux = 0,
4920  .amux = LINE1,
4921  } },
4922  .radio = {
4923  .name = name_radio,
4924  .amux = TV,
4925  },
4926  },
4928  .name = "Avermedia M115",
4929  .audio_clock = 0x187de7,
4930  .tuner_type = TUNER_XC2028,
4931  .radio_type = UNSET,
4932  .tuner_addr = ADDR_UNSET,
4933  .radio_addr = ADDR_UNSET,
4934  .inputs = {{
4935  .name = name_tv,
4936  .vmux = 1,
4937  .amux = TV,
4938  .tv = 1,
4939  }, {
4940  .name = name_comp1,
4941  .vmux = 3,
4942  .amux = LINE1,
4943  }, {
4944  .name = name_svideo,
4945  .vmux = 8,
4946  .amux = LINE2,
4947  } },
4948  },
4950  /* John Newbigin <[email protected]> */
4951  .name = "Compro VideoMate T750",
4952  .audio_clock = 0x00187de7,
4953  .tuner_type = TUNER_XC2028,
4954  .radio_type = UNSET,
4955  .tuner_addr = 0x61,
4956  .radio_addr = ADDR_UNSET,
4957  .mpeg = SAA7134_MPEG_DVB,
4958  .inputs = {{
4959  .name = name_tv,
4960  .vmux = 3,
4961  .amux = TV,
4962  .tv = 1,
4963  }, {
4964  .name = name_comp1,
4965  .vmux = 1,
4966  .amux = LINE2,
4967  }, {
4968  .name = name_svideo,
4969  .vmux = 8,
4970  .amux = LINE2,
4971  } },
4972  .radio = {
4973  .name = name_radio,
4974  .amux = TV,
4975  }
4976  },
4978  /* Matthias Schwarzott <[email protected]> */
4979  .name = "Avermedia DVB-S Pro A700",
4980  .audio_clock = 0x00187de7,
4981  .tuner_type = TUNER_ABSENT,
4982  .radio_type = UNSET,
4983  .tuner_addr = ADDR_UNSET,
4984  .radio_addr = ADDR_UNSET,
4985  .mpeg = SAA7134_MPEG_DVB,
4986  .inputs = { {
4987  .name = name_comp,
4988  .vmux = 1,
4989  .amux = LINE1,
4990  }, {
4991  .name = name_svideo,
4992  .vmux = 6,
4993  .amux = LINE1,
4994  } },
4995  },
4997  /* Matthias Schwarzott <[email protected]> */
4998  .name = "Avermedia DVB-S Hybrid+FM A700",
4999  .audio_clock = 0x00187de7,
5000  .tuner_type = TUNER_XC2028,
5001  .radio_type = UNSET,
5002  .tuner_addr = ADDR_UNSET,
5003  .radio_addr = ADDR_UNSET,
5004  .mpeg = SAA7134_MPEG_DVB,
5005  .inputs = { {
5006  .name = name_tv,
5007  .vmux = 4,
5008  .amux = TV,
5009  .tv = 1,
5010  }, {
5011  .name = name_comp,
5012  .vmux = 1,
5013  .amux = LINE1,
5014  }, {
5015  .name = name_svideo,
5016  .vmux = 6,
5017  .amux = LINE1,
5018  } },
5019  .radio = {
5020  .name = name_radio,
5021  .amux = TV,
5022  },
5023  },
5025  /* Igor Kuznetsov <[email protected]> */
5026  .name = "Beholder BeholdTV H6",
5027  .audio_clock = 0x00187de7,
5028  .tuner_type = TUNER_PHILIPS_FMD1216MEX_MK3,
5029  .radio_type = UNSET,
5030  .tuner_addr = ADDR_UNSET,
5031  .radio_addr = ADDR_UNSET,
5032  .tda9887_conf = TDA9887_PRESENT,
5033  .mpeg = SAA7134_MPEG_DVB,
5034  .inputs = {{
5035  .name = name_tv,
5036  .vmux = 3,
5037  .amux = TV,
5038  .tv = 1,
5039  }, {
5040  .name = name_comp1,
5041  .vmux = 1,
5042  .amux = LINE1,
5043  }, {
5044  .name = name_svideo,
5045  .vmux = 8,
5046  .amux = LINE1,
5047  } },
5048  .radio = {
5049  .name = name_radio,
5050  .amux = LINE2,
5051  },
5052  },
5054  .name = "Asus Tiger 3in1",
5055  .audio_clock = 0x00187de7,
5056  .tuner_type = TUNER_PHILIPS_TDA8290,
5057  .radio_type = UNSET,
5058  .tuner_addr = ADDR_UNSET,
5059  .radio_addr = ADDR_UNSET,
5060  .tuner_config = 2,
5061  .gpiomask = 1 << 21,
5062  .mpeg = SAA7134_MPEG_DVB,
5063  .inputs = {{
5064  .name = name_tv,
5065  .vmux = 1,
5066  .amux = TV,
5067  .tv = 1,
5068  }, {
5069  .name = name_comp,
5070  .vmux = 0,
5071  .amux = LINE2,
5072  }, {
5073  .name = name_svideo,
5074  .vmux = 8,
5075  .amux = LINE2,
5076  } },
5077  .radio = {
5078  .name = name_radio,
5079  .amux = TV,
5080  .gpio = 0x0200000,
5081  },
5082  },
5084  .name = "Asus My Cinema PS3-100",
5085  .audio_clock = 0x00187de7,
5086  .tuner_type = TUNER_PHILIPS_TDA8290,
5087  .radio_type = UNSET,
5088  .tuner_addr = ADDR_UNSET,
5089  .radio_addr = ADDR_UNSET,
5090  .tuner_config = 2,
5091  .gpiomask = 1 << 21,
5092  .mpeg = SAA7134_MPEG_DVB,
5093  .inputs = {{
5094  .name = name_tv,
5095  .vmux = 1,
5096  .amux = TV,
5097  .tv = 1,
5098  }, {
5099  .name = name_comp,
5100  .vmux = 0,
5101  .amux = LINE2,
5102  }, {
5103  .name = name_svideo,
5104  .vmux = 8,
5105  .amux = LINE2,
5106  } },
5107  .radio = {
5108  .name = name_radio,
5109  .amux = TV,
5110  .gpio = 0x0200000,
5111  },
5112  },
5114  .name = "Zogis Real Angel 220",
5115  .audio_clock = 0x00187de7,
5116  .tuner_type = TUNER_TNF_5335MF,
5117  .radio_type = UNSET,
5118  .tuner_addr = ADDR_UNSET,
5119  .radio_addr = ADDR_UNSET,
5120  .gpiomask = 0x801a8087,
5121  .inputs = { {
5122  .name = name_tv,
5123  .vmux = 3,
5124  .amux = LINE2,
5125  .tv = 1,
5126  .gpio = 0x624000,
5127  }, {
5128  .name = name_comp1,
5129  .vmux = 1,
5130  .amux = LINE1,
5131  .gpio = 0x624000,
5132  }, {
5133  .name = name_svideo,
5134  .vmux = 1,
5135  .amux = LINE1,
5136  .gpio = 0x624000,
5137  } },
5138  .radio = {
5139  .name = name_radio,
5140  .amux = LINE2,
5141  .gpio = 0x624001,
5142  },
5143  .mute = {
5144  .name = name_mute,
5145  .amux = TV,
5146  },
5147  },
5149  .name = "ADS Tech Instant HDTV",
5150  .audio_clock = 0x00187de7,
5151  .tuner_type = TUNER_PHILIPS_TUV1236D,
5152  .radio_type = UNSET,
5153  .tuner_addr = ADDR_UNSET,
5154  .radio_addr = ADDR_UNSET,
5155  .tda9887_conf = TDA9887_PRESENT,
5156  .mpeg = SAA7134_MPEG_DVB,
5157  .inputs = { {
5158  .name = name_tv,
5159  .vmux = 1,
5160  .amux = TV,
5161  .tv = 1,
5162  }, {
5163  .name = name_comp,
5164  .vmux = 4,
5165  .amux = LINE1,
5166  }, {
5167  .name = name_svideo,
5168  .vmux = 8,
5169  .amux = LINE1,
5170  } },
5171  },
5173  .name = "Asus Tiger Rev:1.00",
5174  .audio_clock = 0x00187de7,
5175  .tuner_type = TUNER_PHILIPS_TDA8290,
5176  .radio_type = UNSET,
5177  .tuner_addr = ADDR_UNSET,
5178  .radio_addr = ADDR_UNSET,
5179  .tuner_config = 0,
5180  .mpeg = SAA7134_MPEG_DVB,
5181  .gpiomask = 0x0200000,
5182  .inputs = { {
5183  .name = name_tv,
5184  .vmux = 1,
5185  .amux = TV,
5186  .tv = 1,
5187  }, {
5188  .name = name_comp1,
5189  .vmux = 3,
5190  .amux = LINE2,
5191  }, {
5192  .name = name_comp2,
5193  .vmux = 0,
5194  .amux = LINE2,
5195  }, {
5196  .name = name_svideo,
5197  .vmux = 8,
5198  .amux = LINE2,
5199  } },
5200  .radio = {
5201  .name = name_radio,
5202  .amux = TV,
5203  .gpio = 0x0200000,
5204  },
5205  },
5207  .name = "Kworld Plus TV Analog Lite PCI",
5208  .audio_clock = 0x00187de7,
5209  .tuner_type = TUNER_YMEC_TVF_5533MF,
5210  .radio_type = TUNER_TEA5767,
5211  .tuner_addr = ADDR_UNSET,
5212  .radio_addr = 0x60,
5213  .gpiomask = 0x80000700,
5214  .inputs = { {
5215  .name = name_tv,
5216  .vmux = 1,
5217  .amux = LINE2,
5218  .tv = 1,
5219  .gpio = 0x100,
5220  }, {
5221  .name = name_comp1,
5222  .vmux = 3,
5223  .amux = LINE1,
5224  .gpio = 0x200,
5225  }, {
5226  .name = name_svideo,
5227  .vmux = 8,
5228  .amux = LINE1,
5229  .gpio = 0x200,
5230  } },
5231  .radio = {
5232  .name = name_radio,
5233  .vmux = 1,
5234  .amux = LINE1,
5235  .gpio = 0x100,
5236  },
5237  .mute = {
5238  .name = name_mute,
5239  .vmux = 8,
5240  .amux = 2,
5241  },
5242  },
5244  .name = "Kworld PCI SBTVD/ISDB-T Full-Seg Hybrid",
5245  .audio_clock = 0x00187de7,
5246  .tuner_type = TUNER_PHILIPS_TDA8290,
5247  .tuner_addr = ADDR_UNSET,
5248  .radio_type = UNSET,
5249  .radio_addr = ADDR_UNSET,
5250  .gpiomask = 0x8e054000,
5251  .mpeg = SAA7134_MPEG_DVB,
5252  .ts_type = SAA7134_MPEG_TS_PARALLEL,
5253  .inputs = { {
5254  .name = name_tv,
5255  .vmux = 1,
5256  .amux = TV,
5257  .tv = 1,
5258 #if 0 /* FIXME */
5259  }, {
5260  .name = name_comp1,
5261  .vmux = 3,
5262  .amux = LINE1,
5263  .gpio = 0x200,
5264  }, {
5265  .name = name_svideo,
5266  .vmux = 8,
5267  .amux = LINE1,
5268  .gpio = 0x200,
5269 #endif
5270  } },
5271 #if 0
5272  .radio = {
5273  .name = name_radio,
5274  .vmux = 1,
5275  .amux = LINE1,
5276  .gpio = 0x100,
5277  },
5278 #endif
5279  .mute = {
5280  .name = name_mute,
5281  .vmux = 0,
5282  .amux = TV,
5283  },
5284  },
5286  .name = "Avermedia AVerTV GO 007 FM Plus",
5287  .audio_clock = 0x00187de7,
5288  .tuner_type = TUNER_PHILIPS_TDA8290,
5289  .radio_type = UNSET,
5290  .tuner_addr = ADDR_UNSET,
5291  .radio_addr = ADDR_UNSET,
5292  .gpiomask = 0x00300003,
5293  /* .gpiomask = 0x8c240003, */
5294  .inputs = { {
5295  .name = name_tv,
5296  .vmux = 1,
5297  .amux = TV,
5298  .tv = 1,
5299  .gpio = 0x01,
5300  }, {
5301  .name = name_svideo,
5302  .vmux = 6,
5303  .amux = LINE1,
5304  .gpio = 0x02,
5305  } },
5306  .radio = {
5307  .name = name_radio,
5308  .amux = TV,
5309  .gpio = 0x00300001,
5310  },
5311  .mute = {
5312  .name = name_mute,
5313  .amux = TV,
5314  .gpio = 0x01,
5315  },
5316  },
5318  /* Andy Shevchenko <[email protected]> */
5319  .name = "Avermedia AVerTV Studio 507UA",
5320  .audio_clock = 0x00187de7,
5321  .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, /* Should be MK5 */
5322  .radio_type = UNSET,
5323  .tuner_addr = ADDR_UNSET,
5324  .radio_addr = ADDR_UNSET,
5325  .tda9887_conf = TDA9887_PRESENT,
5326  .gpiomask = 0x03,
5327  .inputs = { {
5328  .name = name_tv,
5329  .vmux = 1,
5330  .amux = TV,
5331  .tv = 1,
5332  .gpio = 0x00,
5333  }, {
5334  .name = name_comp1,
5335  .vmux = 3,
5336  .amux = LINE1,
5337  .gpio = 0x00,
5338  }, {
5339  .name = name_svideo,
5340  .vmux = 8,
5341  .amux = LINE1,
5342  .gpio = 0x00,
5343  } },
5344  .radio = {
5345  .name = name_radio,
5346  .amux = LINE2,
5347  .gpio = 0x01,
5348  },
5349  .mute = {
5350  .name = name_mute,
5351  .amux = LINE1,
5352  .gpio = 0x00,
5353  },
5354  },
5356  /* Jan D. Louw <[email protected] */
5357  .name = "Compro VideoMate S350/S300",
5358  .audio_clock = 0x00187de7,
5359  .tuner_type = TUNER_ABSENT,
5360  .radio_type = UNSET,
5361  .tuner_addr = ADDR_UNSET,
5362  .radio_addr = ADDR_UNSET,
5363  .mpeg = SAA7134_MPEG_DVB,
5364  .inputs = { {
5365  .name = name_comp1,
5366  .vmux = 0,
5367  .amux = LINE1,
5368  }, {
5369  .name = name_svideo,
5370  .vmux = 8, /* Not tested */
5371  .amux = LINE1
5372  } },
5373  },
5375  /* Beholder Intl. Ltd. Dmitry Belimov <[email protected]> */
5376  .name = "Beholder BeholdTV X7",
5377  .audio_clock = 0x00187de7,
5378  .tuner_type = TUNER_XC5000,
5379  .radio_type = UNSET,
5380  .tuner_addr = ADDR_UNSET,
5381  .radio_addr = ADDR_UNSET,
5382  .mpeg = SAA7134_MPEG_DVB,
5383  .inputs = { {
5384  .name = name_tv,
5385  .vmux = 2,
5386  .amux = TV,
5387  .tv = 1,
5388  }, {
5389  .name = name_comp1,
5390  .vmux = 0,
5391  .amux = LINE1,
5392  }, {
5393  .name = name_svideo,
5394  .vmux = 9,
5395  .amux = LINE1,
5396  } },
5397  .radio = {
5398  .name = name_radio,
5399  .amux = TV,
5400  },
5401  },
5403  .name = "Zolid Hybrid TV Tuner PCI",
5404  .audio_clock = 0x00187de7,
5405  .tuner_type = TUNER_PHILIPS_TDA8290,
5406  .radio_type = UNSET,
5407  .tuner_addr = ADDR_UNSET,
5408  .radio_addr = ADDR_UNSET,
5409  .tuner_config = 0,
5410  .mpeg = SAA7134_MPEG_DVB,
5411  .ts_type = SAA7134_MPEG_TS_PARALLEL,
5412  .inputs = {{
5413  .name = name_tv,
5414  .vmux = 1,
5415  .amux = TV,
5416  .tv = 1,
5417  } },
5418  .radio = { /* untested */
5419  .name = name_radio,
5420  .amux = TV,
5421  },
5422  },
5424  .name = "Asus Europa Hybrid OEM",
5425  .audio_clock = 0x00187de7,
5426  .tuner_type = TUNER_PHILIPS_TD1316,
5427  .radio_type = UNSET,
5428  .tuner_addr = 0x61,
5429  .radio_addr = ADDR_UNSET,
5430  .tda9887_conf = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE,
5431  .mpeg = SAA7134_MPEG_DVB,
5432  .inputs = { {
5433  .name = name_tv,
5434  .vmux = 3,
5435  .amux = TV,
5436  .tv = 1,
5437  }, {
5438  .name = name_comp1,
5439  .vmux = 4,
5440  .amux = LINE2,
5441  }, {
5442  .name = name_svideo,
5443  .vmux = 8,
5444  .amux = LINE2,
5445  } },
5446  },
5448  .name = "Leadtek Winfast DTV1000S",
5449  .audio_clock = 0x00187de7,
5450  .tuner_type = TUNER_PHILIPS_TDA8290,
5451  .radio_type = UNSET,
5452  .tuner_addr = ADDR_UNSET,
5453  .radio_addr = ADDR_UNSET,
5454  .mpeg = SAA7134_MPEG_DVB,
5455  .inputs = { {
5456  .name = name_comp1,
5457  .vmux = 3,
5458  }, {
5459  .name = name_svideo,
5460  .vmux = 8,
5461  } },
5462  },
5464  /* Beholder Intl. Ltd. 2008 */
5465  /*Dmitry Belimov <[email protected]> */
5466  .name = "Beholder BeholdTV 505 RDS",
5467  .audio_clock = 0x00200000,
5468  .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
5469  .radio_type = UNSET,
5470  .tuner_addr = ADDR_UNSET,
5471  .radio_addr = ADDR_UNSET,
5472  .rds_addr = 0x10,
5473  .tda9887_conf = TDA9887_PRESENT,
5474  .gpiomask = 0x00008000,
5475  .inputs = {{
5476  .name = name_tv,
5477  .vmux = 3,
5478  .amux = LINE2,
5479  .tv = 1,
5480  }, {
5481  .name = name_comp1,
5482  .vmux = 1,
5483  .amux = LINE1,
5484  }, {
5485  .name = name_svideo,
5486  .vmux = 8,
5487  .amux = LINE1,
5488  } },
5489  .mute = {
5490  .name = name_mute,
5491  .amux = LINE1,
5492  },
5493  .radio = {
5494  .name = name_radio,
5495  .amux = LINE2,
5496  },
5497  },
5499  /* Hawell HW-404M7 & Hawell HW-808M7 */
5500  /* Bogoslovskiy Viktor <[email protected]> */
5501  .name = "Hawell HW-404M7",
5502  .audio_clock = 0x00200000,
5503  .tuner_type = UNSET,
5504  .radio_type = UNSET,
5505  .tuner_addr = ADDR_UNSET,
5506  .radio_addr = ADDR_UNSET,
5507  .gpiomask = 0x389c00,
5508  .inputs = {{
5509  .name = name_comp1,
5510  .vmux = 3,
5511  .amux = LINE1,
5512  .gpio = 0x01fc00,
5513  } },
5514  },
5516  /* Beholder Intl. Ltd. Dmitry Belimov <[email protected]> */
5517  .name = "Beholder BeholdTV H7",
5518  .audio_clock = 0x00187de7,
5519  .tuner_type = TUNER_XC5000,
5520  .radio_type = UNSET,
5521  .tuner_addr = ADDR_UNSET,
5522  .radio_addr = ADDR_UNSET,
5523  .mpeg = SAA7134_MPEG_DVB,
5524  .ts_type = SAA7134_MPEG_TS_PARALLEL,
5525  .inputs = { {
5526  .name = name_tv,
5527  .vmux = 2,
5528  .amux = TV,
5529  .tv = 1,
5530  }, {
5531  .name = name_comp1,
5532  .vmux = 0,
5533  .amux = LINE1,
5534  }, {
5535  .name = name_svideo,
5536  .vmux = 9,
5537  .amux = LINE1,
5538  } },
5539  .radio = {
5540  .name = name_radio,
5541  .amux = TV,
5542  },
5543  },
5545  /* Beholder Intl. Ltd. Dmitry Belimov <[email protected]> */
5546  .name = "Beholder BeholdTV A7",
5547  .audio_clock = 0x00187de7,
5548  .tuner_type = TUNER_XC5000,
5549  .radio_type = UNSET,
5550  .tuner_addr = ADDR_UNSET,
5551  .radio_addr = ADDR_UNSET,
5552  .inputs = { {
5553  .name = name_tv,
5554  .vmux = 2,
5555  .amux = TV,
5556  .tv = 1,
5557  }, {
5558  .name = name_comp1,
5559  .vmux = 0,
5560  .amux = LINE1,
5561  }, {
5562  .name = name_svideo,
5563  .vmux = 9,
5564  .amux = LINE1,
5565  } },
5566  .radio = {
5567  .name = name_radio,
5568  .amux = TV,
5569  },
5570  },
5572  .name = "TechoTrend TT-budget T-3000",
5573  .tuner_type = TUNER_PHILIPS_TD1316,
5574  .audio_clock = 0x00187de7,
5575  .radio_type = UNSET,
5576  .tuner_addr = 0x63,
5577  .radio_addr = ADDR_UNSET,
5578  .tda9887_conf = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE,
5579  .mpeg = SAA7134_MPEG_DVB,
5580  .inputs = {{
5581  .name = name_tv,
5582  .vmux = 3,
5583  .amux = TV,
5584  .tv = 1,
5585  }, {
5586  .name = name_comp1,
5587  .vmux = 0,
5588  .amux = LINE2,
5589  }, {
5590  .name = name_svideo,
5591  .vmux = 8,
5592  .amux = LINE2,
5593  } },
5594  },
5596  /* Pavel Osnova <[email protected]> */
5597  .name = "Compro VideoMate Vista M1F",
5598  .audio_clock = 0x00187de7,
5599  .tuner_type = TUNER_LG_PAL_NEW_TAPC,
5600  .radio_type = TUNER_TEA5767,
5601  .tuner_addr = ADDR_UNSET,
5602  .radio_addr = 0x60,
5603  .inputs = { {
5604  .name = name_tv,
5605  .vmux = 1,
5606  .amux = TV,
5607  .tv = 1,
5608  }, {
5609  .name = name_comp1,
5610  .vmux = 3,
5611  .amux = LINE2,
5612  }, {
5613  .name = name_svideo,
5614  .vmux = 8,
5615  .amux = LINE2,
5616  } },
5617  .radio = {
5618  .name = name_radio,
5619  .amux = LINE1,
5620  },
5621  .mute = {
5622  .name = name_mute,
5623  .amux = TV,
5624  },
5625  },
5627  /* Timothy Lee <[email protected]> */
5628  .name = "MagicPro ProHDTV Pro2 DMB-TH/Hybrid",
5629  .audio_clock = 0x00187de7,
5630  .tuner_type = TUNER_PHILIPS_TDA8290,
5631  .radio_type = UNSET,
5632  .tuner_config = 3,
5633  .tuner_addr = ADDR_UNSET,
5634  .radio_addr = ADDR_UNSET,
5635  .gpiomask = 0x02050000,
5636  .mpeg = SAA7134_MPEG_DVB,
5637  .ts_type = SAA7134_MPEG_TS_PARALLEL,
5638  .inputs = { {
5639  .name = name_tv,
5640  .vmux = 1,
5641  .amux = TV,
5642  .tv = 1,
5643  .gpio = 0x00050000,
5644  }, {
5645  .name = name_comp1,
5646  .vmux = 3,
5647  .amux = LINE1,
5648  .gpio = 0x00050000,
5649  }, {
5650  .name = name_svideo,
5651  .vmux = 8,
5652  .amux = LINE1,
5653  .gpio = 0x00050000,
5654  } },
5655  .radio = {
5656  .name = name_radio,
5657  .amux = TV,
5658  .gpio = 0x00050000,
5659  },
5660  .mute = {
5661  .name = name_mute,
5662  .vmux = 0,
5663  .amux = TV,
5664  .gpio = 0x00050000,
5665  },
5666  },
5668  /* Beholder Intl. Ltd. 2010 */
5669  /* Dmitry Belimov <[email protected]> */
5670  .name = "Beholder BeholdTV 501",
5671  .audio_clock = 0x00200000,
5672  .tuner_type = TUNER_ABSENT,
5673  .radio_type = UNSET,
5674  .tuner_addr = ADDR_UNSET,
5675  .radio_addr = ADDR_UNSET,
5676  .gpiomask = 0x00008000,
5677  .inputs = { {
5678  .name = name_tv,
5679  .vmux = 3,
5680  .amux = LINE2,
5681  .tv = 1,
5682  }, {
5683  .name = name_comp1,
5684  .vmux = 1,
5685  .amux = LINE1,
5686  }, {
5687  .name = name_svideo,
5688  .vmux = 8,
5689  .amux = LINE1,
5690  } },
5691  .mute = {
5692  .name = name_mute,
5693  .amux = LINE1,
5694  },
5695  },
5697  /* Beholder Intl. Ltd. 2010 */
5698  /* Dmitry Belimov <[email protected]> */
5699  .name = "Beholder BeholdTV 503 FM",
5700  .audio_clock = 0x00200000,
5701  .tuner_type = TUNER_ABSENT,
5702  .radio_type = UNSET,
5703  .tuner_addr = ADDR_UNSET,
5704  .radio_addr = ADDR_UNSET,
5705  .gpiomask = 0x00008000,
5706  .inputs = { {
5707  .name = name_tv,
5708  .vmux = 3,
5709  .amux = LINE2,
5710  .tv = 1,
5711  }, {
5712  .name = name_comp1,
5713  .vmux = 1,
5714  .amux = LINE1,
5715  }, {
5716  .name = name_svideo,
5717  .vmux = 8,
5718  .amux = LINE1,
5719  } },
5720  .mute = {
5721  .name = name_mute,
5722  .amux = LINE1,
5723  },
5724  },
5726  .name = "Sensoray 811/911",
5727  .audio_clock = 0x00200000,
5728  .tuner_type = TUNER_ABSENT,
5729  .radio_type = UNSET,
5730  .tuner_addr = ADDR_UNSET,
5731  .radio_addr = ADDR_UNSET,
5732  .inputs = {{
5733  .name = name_comp1,
5734  .vmux = 0,
5735  .amux = LINE1,
5736  }, {
5737  .name = name_comp3,
5738  .vmux = 2,
5739  .amux = LINE1,
5740  }, {
5741  .name = name_svideo,
5742  .vmux = 8,
5743  .amux = LINE1,
5744  } },
5745  },
5747  .name = "Kworld PC150-U",
5748  .audio_clock = 0x00187de7,
5749  .tuner_type = TUNER_PHILIPS_TDA8290,
5750  .radio_type = UNSET,
5751  .tuner_addr = ADDR_UNSET,
5752  .radio_addr = ADDR_UNSET,
5753  .mpeg = SAA7134_MPEG_DVB,
5754  .gpiomask = 1 << 21,
5755  .ts_type = SAA7134_MPEG_TS_PARALLEL,
5756  .inputs = { {
5757  .name = name_tv,
5758  .vmux = 1,
5759  .amux = TV,
5760  .tv = 1,
5761  }, {
5762  .name = name_comp,
5763  .vmux = 3,
5764  .amux = LINE1,
5765  }, {
5766  .name = name_svideo,
5767  .vmux = 8,
5768  .amux = LINE2,
5769  } },
5770  .radio = {
5771  .name = name_radio,
5772  .amux = TV,
5773  .gpio = 0x0000000,
5774  },
5775  },
5776 
5777 };
5778 
5779 const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards);
5780 
5781 /* ------------------------------------------------------------------ */
5782 /* PCI ids + subsystem IDs */
5783 
5785  {
5786  .vendor = PCI_VENDOR_ID_PHILIPS,
5788  .subvendor = PCI_VENDOR_ID_PHILIPS,
5789  .subdevice = 0x2001,
5790  .driver_data = SAA7134_BOARD_PROTEUS_PRO,
5791  },{
5792  .vendor = PCI_VENDOR_ID_PHILIPS,
5794  .subvendor = PCI_VENDOR_ID_PHILIPS,
5795  .subdevice = 0x2001,
5796  .driver_data = SAA7134_BOARD_PROTEUS_PRO,
5797  },{
5798  .vendor = PCI_VENDOR_ID_PHILIPS,
5800  .subvendor = PCI_VENDOR_ID_PHILIPS,
5801  .subdevice = 0x6752,
5802  .driver_data = SAA7134_BOARD_EMPRESS,
5803  },{
5804  .vendor = PCI_VENDOR_ID_PHILIPS,
5806  .subvendor = 0x1131,
5807  .subdevice = 0x4e85,
5808  .driver_data = SAA7134_BOARD_MONSTERTV,
5809  },{
5810  .vendor = PCI_VENDOR_ID_PHILIPS,
5812  .subvendor = 0x153b,
5813  .subdevice = 0x1142,
5814  .driver_data = SAA7134_BOARD_CINERGY400,
5815  },{
5816  .vendor = PCI_VENDOR_ID_PHILIPS,
5818  .subvendor = 0x153b,
5819  .subdevice = 0x1143,
5820  .driver_data = SAA7134_BOARD_CINERGY600,
5821  },{
5822  .vendor = PCI_VENDOR_ID_PHILIPS,
5824  .subvendor = 0x153b,
5825  .subdevice = 0x1158,
5826  .driver_data = SAA7134_BOARD_CINERGY600_MK3,
5827  },{
5828  .vendor = PCI_VENDOR_ID_PHILIPS,
5830  .subvendor = 0x153b,
5831  .subdevice = 0x1162,
5832  .driver_data = SAA7134_BOARD_CINERGY400_CARDBUS,
5833  },{
5834  .vendor = PCI_VENDOR_ID_PHILIPS,
5836  .subvendor = 0x5169,
5837  .subdevice = 0x0138,
5838  .driver_data = SAA7134_BOARD_FLYVIDEO3000_NTSC,
5839  },{
5840  .vendor = PCI_VENDOR_ID_PHILIPS,
5842  .subvendor = 0x5168,
5843  .subdevice = 0x0138,
5844  .driver_data = SAA7134_BOARD_FLYVIDEO3000,
5845  },{
5846  .vendor = PCI_VENDOR_ID_PHILIPS,
5848  .subvendor = 0x4e42, /* "Typhoon PCI Capture TV Card" Art.No. 50673 */
5849  .subdevice = 0x0138,
5850  .driver_data = SAA7134_BOARD_FLYVIDEO3000,
5851  },{
5852  .vendor = PCI_VENDOR_ID_PHILIPS,
5854  .subvendor = 0x5168,
5855  .subdevice = 0x0138,
5856  .driver_data = SAA7134_BOARD_FLYVIDEO2000,
5857  },{
5858  .vendor = PCI_VENDOR_ID_PHILIPS,
5860  .subvendor = 0x4e42, /* Typhoon */
5861  .subdevice = 0x0138, /* LifeView FlyTV Prime30 OEM */
5862  .driver_data = SAA7134_BOARD_FLYVIDEO2000,
5863  },{
5864  .vendor = PCI_VENDOR_ID_PHILIPS,
5866  .subvendor = 0x5168,
5867  .subdevice = 0x0212, /* minipci, LR212 */
5868  .driver_data = SAA7134_BOARD_FLYTVPLATINUM_MINI,
5869  },{
5870  .vendor = PCI_VENDOR_ID_PHILIPS,
5872  .subvendor = 0x14c0,
5873  .subdevice = 0x1212, /* minipci, LR1212 */
5874  .driver_data = SAA7134_BOARD_FLYTVPLATINUM_MINI2,
5875  },{
5876  .vendor = PCI_VENDOR_ID_PHILIPS,
5878  .subvendor = 0x4e42,
5879  .subdevice = 0x0212, /* OEM minipci, LR212 */
5880  .driver_data = SAA7134_BOARD_FLYTVPLATINUM_MINI,
5881  },{
5882  .vendor = PCI_VENDOR_ID_PHILIPS,
5884  .subvendor = 0x5168, /* Animation Technologies (LifeView) */
5885  .subdevice = 0x0214, /* Standard PCI, LR214 Rev E and earlier (SAA7135) */
5886  .driver_data = SAA7134_BOARD_FLYTVPLATINUM_FM,
5887  },{
5888  .vendor = PCI_VENDOR_ID_PHILIPS,
5890  .subvendor = 0x5168, /* Animation Technologies (LifeView) */
5891  .subdevice = 0x5214, /* Standard PCI, LR214 Rev F onwards (SAA7131) */
5892  .driver_data = SAA7134_BOARD_FLYTVPLATINUM_FM,
5893  },{
5894  .vendor = PCI_VENDOR_ID_PHILIPS,
5896  .subvendor = 0x1489, /* KYE */
5897  .subdevice = 0x0214, /* Genius VideoWonder ProTV */
5898  .driver_data = SAA7134_BOARD_FLYTVPLATINUM_FM, /* is an LR214WF actually */
5899  },{
5900  .vendor = PCI_VENDOR_ID_PHILIPS,
5902  .subvendor = 0x16be,
5903  .subdevice = 0x0003,
5904  .driver_data = SAA7134_BOARD_MD7134,
5905  },{
5906  .vendor = PCI_VENDOR_ID_PHILIPS,
5908  .subvendor = 0x16be, /* CTX946 analog TV, HW mpeg, DVB-T */
5909  .subdevice = 0x5000, /* only analog TV and DVB-T for now */
5910  .driver_data = SAA7134_BOARD_MD7134,
5911  }, {
5912  .vendor = PCI_VENDOR_ID_PHILIPS,
5914  .subvendor = 0x1048,
5915  .subdevice = 0x226b,
5916  .driver_data = SAA7134_BOARD_ELSA,
5917  },{
5918  .vendor = PCI_VENDOR_ID_PHILIPS,
5920  .subvendor = 0x1048,
5921  .subdevice = 0x226a,
5922  .driver_data = SAA7134_BOARD_ELSA_500TV,
5923  },{
5924  .vendor = PCI_VENDOR_ID_PHILIPS,
5926  .subvendor = 0x1048,
5927  .subdevice = 0x226c,
5928  .driver_data = SAA7134_BOARD_ELSA_700TV,
5929  },{
5930  .vendor = PCI_VENDOR_ID_PHILIPS,
5932  .subvendor = PCI_VENDOR_ID_ASUSTEK,
5933  .subdevice = 0x4842,
5934  .driver_data = SAA7134_BOARD_ASUSTeK_TVFM7134,
5935  },{
5936  .vendor = PCI_VENDOR_ID_PHILIPS,
5938  .subvendor = PCI_VENDOR_ID_ASUSTEK,
5939  .subdevice = 0x4845,
5940  .driver_data = SAA7134_BOARD_ASUSTeK_TVFM7135,
5941  },{
5942  .vendor = PCI_VENDOR_ID_PHILIPS,
5944  .subvendor = PCI_VENDOR_ID_ASUSTEK,
5945  .subdevice = 0x4830,
5946  .driver_data = SAA7134_BOARD_ASUSTeK_TVFM7134,
5947  },{
5948  .vendor = PCI_VENDOR_ID_PHILIPS,
5950  .subvendor = PCI_VENDOR_ID_ASUSTEK,
5951  .subdevice = 0x4843,
5952  .driver_data = SAA7134_BOARD_ASUSTEK_TVFM7133,
5953  },{
5954  .vendor = PCI_VENDOR_ID_PHILIPS,
5956  .subvendor = PCI_VENDOR_ID_ASUSTEK,
5957  .subdevice = 0x4840,
5958  .driver_data = SAA7134_BOARD_ASUSTeK_TVFM7134,
5959  },{
5960  .vendor = PCI_VENDOR_ID_PHILIPS,
5962  .subvendor = PCI_VENDOR_ID_PHILIPS,
5963  .subdevice = 0xfe01,
5964  .driver_data = SAA7134_BOARD_TVSTATION_RDS,
5965  },{
5966  .vendor = PCI_VENDOR_ID_PHILIPS,
5968  .subvendor = 0x1894,
5969  .subdevice = 0xfe01,
5970  .driver_data = SAA7134_BOARD_TVSTATION_RDS,
5971  },{
5972  .vendor = PCI_VENDOR_ID_PHILIPS,
5974  .subvendor = 0x1894,
5975  .subdevice = 0xa006,
5976  .driver_data = SAA7134_BOARD_TVSTATION_DVR,
5977  },{
5978  .vendor = PCI_VENDOR_ID_PHILIPS,
5980  .subvendor = 0x1131,
5981  .subdevice = 0x7133,
5982  .driver_data = SAA7134_BOARD_VA1000POWER,
5983  },{
5984  .vendor = PCI_VENDOR_ID_PHILIPS,
5986  .subvendor = PCI_VENDOR_ID_PHILIPS,
5987  .subdevice = 0x2001,
5988  .driver_data = SAA7134_BOARD_10MOONSTVMASTER,
5989  },{
5990  .vendor = PCI_VENDOR_ID_PHILIPS,
5992  .subvendor = 0x185b,
5993  .subdevice = 0xc100,
5994  .driver_data = SAA7134_BOARD_VIDEOMATE_TV,
5995  },{
5996  .vendor = PCI_VENDOR_ID_PHILIPS,
5998  .subvendor = 0x185b,
5999  .subdevice = 0xc100,
6000  .driver_data = SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUS,
6001  },{
6002  .vendor = PCI_VENDOR_ID_PHILIPS,
6004  .subvendor = PCI_VENDOR_ID_MATROX,
6005  .subdevice = 0x48d0,
6006  .driver_data = SAA7134_BOARD_CRONOS_PLUS,
6007  },{
6008  .vendor = PCI_VENDOR_ID_PHILIPS,
6010  .subvendor = 0x1461, /* Avermedia Technologies Inc */
6011  .subdevice = 0xa70b,
6012  .driver_data = SAA7134_BOARD_MD2819,
6013  },{
6014  .vendor = PCI_VENDOR_ID_PHILIPS,
6016  .subvendor = 0x1461, /* Avermedia Technologies Inc */
6017  .subdevice = 0xa7a1,
6018  .driver_data = SAA7134_BOARD_AVERMEDIA_A700_PRO,
6019  }, {
6020  .vendor = PCI_VENDOR_ID_PHILIPS,
6022  .subvendor = 0x1461, /* Avermedia Technologies Inc */
6023  .subdevice = 0xa7a2,
6024  .driver_data = SAA7134_BOARD_AVERMEDIA_A700_HYBRID,
6025  }, {
6026  .vendor = PCI_VENDOR_ID_PHILIPS,
6028  .subvendor = 0x1461, /* Avermedia Technologies Inc */
6029  .subdevice = 0x2115,
6030  .driver_data = SAA7134_BOARD_AVERMEDIA_STUDIO_305,
6031  },{
6032  .vendor = PCI_VENDOR_ID_PHILIPS,
6034  .subvendor = 0x1461, /* Avermedia Technologies Inc */
6035  .subdevice = 0xa115,
6036  .driver_data = SAA7134_BOARD_AVERMEDIA_STUDIO_505,
6037  }, {
6038  .vendor = PCI_VENDOR_ID_PHILIPS,
6040  .subvendor = 0x1461, /* Avermedia Technologies Inc */
6041  .subdevice = 0x2108,
6042  .driver_data = SAA7134_BOARD_AVERMEDIA_305,
6043  },{
6044  .vendor = PCI_VENDOR_ID_PHILIPS,
6046  .subvendor = 0x1461, /* Avermedia Technologies Inc */
6047  .subdevice = 0x10ff,
6048  .driver_data = SAA7134_BOARD_AVERMEDIA_DVD_EZMAKER,
6049  },{
6050  /* AVerMedia CardBus */
6051  .vendor = PCI_VENDOR_ID_PHILIPS,
6053  .subvendor = 0x1461, /* Avermedia Technologies Inc */
6054  .subdevice = 0xd6ee,
6055  .driver_data = SAA7134_BOARD_AVERMEDIA_CARDBUS,
6056  },{
6057  /* AVerMedia CardBus */
6058  .vendor = PCI_VENDOR_ID_PHILIPS,
6060  .subvendor = 0x1461, /* Avermedia Technologies Inc */
6061  .subdevice = 0xb7e9,
6062  .driver_data = SAA7134_BOARD_AVERMEDIA_CARDBUS_501,
6063  }, {
6064  /* TransGear 3000TV */
6065  .vendor = PCI_VENDOR_ID_PHILIPS,
6067  .subvendor = 0x1461, /* Avermedia Technologies Inc */
6068  .subdevice = 0x050c,
6069  .driver_data = SAA7134_BOARD_TG3000TV,
6070  },{
6071  .vendor = PCI_VENDOR_ID_PHILIPS,
6073  .subvendor = 0x11bd,
6074  .subdevice = 0x002b,
6075  .driver_data = SAA7134_BOARD_PINNACLE_PCTV_STEREO,
6076  },{
6077  .vendor = PCI_VENDOR_ID_PHILIPS,
6079  .subvendor = 0x11bd,
6080  .subdevice = 0x002d,
6081  .driver_data = SAA7134_BOARD_PINNACLE_300I_DVBT_PAL,
6082  },{
6083  .vendor = PCI_VENDOR_ID_PHILIPS,
6085  .subvendor = 0x1019,
6086  .subdevice = 0x4cb4,
6087  .driver_data = SAA7134_BOARD_ECS_TVP3XP,
6088  },{
6089  .vendor = PCI_VENDOR_ID_PHILIPS,
6091  .subvendor = 0x1019,
6092  .subdevice = 0x4cb5,
6093  .driver_data = SAA7134_BOARD_ECS_TVP3XP_4CB5,
6094  },{
6095  .vendor = PCI_VENDOR_ID_PHILIPS,
6097  .subvendor = 0x1019,
6098  .subdevice = 0x4cb6,
6099  .driver_data = SAA7134_BOARD_ECS_TVP3XP_4CB6,
6100  },{
6101  .vendor = PCI_VENDOR_ID_PHILIPS,
6103  .subvendor = 0x12ab,
6104  .subdevice = 0x0800,
6105  .driver_data = SAA7134_BOARD_UPMOST_PURPLE_TV,
6106  },{
6107  .vendor = PCI_VENDOR_ID_PHILIPS,
6109  .subvendor = 0x153b,
6110  .subdevice = 0x1152,
6111  .driver_data = SAA7134_BOARD_CINERGY200,
6112  },{
6113  .vendor = PCI_VENDOR_ID_PHILIPS,
6115  .subvendor = 0x185b,
6116  .subdevice = 0xc100,
6117  .driver_data = SAA7134_BOARD_VIDEOMATE_TV_PVR,
6118  },{
6119  .vendor = PCI_VENDOR_ID_PHILIPS,
6121  .subvendor = 0x1461, /* Avermedia Technologies Inc */
6122  .subdevice = 0x9715,
6123  .driver_data = SAA7134_BOARD_AVERMEDIA_STUDIO_307,
6124  },{
6125  .vendor = PCI_VENDOR_ID_PHILIPS,
6127  .subvendor = 0x1461, /* Avermedia Technologies Inc */
6128  .subdevice = 0xa70a,
6129  .driver_data = SAA7134_BOARD_AVERMEDIA_307,
6130  },{
6131  .vendor = PCI_VENDOR_ID_PHILIPS,
6133  .subvendor = 0x185b,
6134  .subdevice = 0xc200,
6135  .driver_data = SAA7134_BOARD_VIDEOMATE_GOLD_PLUS,
6136  },{
6137  .vendor = PCI_VENDOR_ID_PHILIPS,
6139  .subvendor = 0x1540,
6140  .subdevice = 0x9524,
6141  .driver_data = SAA7134_BOARD_PROVIDEO_PV952,
6142 
6143  },{
6144  .vendor = PCI_VENDOR_ID_PHILIPS,
6146  .subvendor = 0x5168,
6147  .subdevice = 0x0502, /* Cardbus version */
6148  .driver_data = SAA7134_BOARD_FLYDVBT_DUO_CARDBUS,
6149  },{
6150  .vendor = PCI_VENDOR_ID_PHILIPS,
6152  .subvendor = 0x5168,
6153  .subdevice = 0x0306, /* PCI version */
6154  .driver_data = SAA7134_BOARD_FLYDVBTDUO,
6155  },{
6156  .vendor = PCI_VENDOR_ID_PHILIPS,
6158  .subvendor = 0x1461, /* Avermedia Technologies Inc */
6159  .subdevice = 0xf31f,
6160  .driver_data = SAA7134_BOARD_AVERMEDIA_GO_007_FM,
6161 
6162  },{
6163  .vendor = PCI_VENDOR_ID_PHILIPS,
6165  .subvendor = 0x1461, /* Avermedia Technologies Inc */
6166  .subdevice = 0xf11d,
6167  .driver_data = SAA7134_BOARD_AVERMEDIA_M135A,
6168  }, {
6169  .vendor = PCI_VENDOR_ID_PHILIPS,
6171  .subvendor = 0x1461, /* Avermedia Technologies Inc */
6172  .subdevice = 0x4155,
6173  .driver_data = SAA7134_BOARD_AVERMEDIA_M733A,
6174  }, {
6175  .vendor = PCI_VENDOR_ID_PHILIPS,
6177  .subvendor = 0x1461, /* Avermedia Technologies Inc */
6178  .subdevice = 0x4255,
6179  .driver_data = SAA7134_BOARD_AVERMEDIA_M733A,
6180  }, {
6181  .vendor = PCI_VENDOR_ID_PHILIPS,
6183  .subvendor = PCI_VENDOR_ID_PHILIPS,
6184  .subdevice = 0x2004,
6185  .driver_data = SAA7134_BOARD_PHILIPS_TOUGH,
6186  },{
6187  .vendor = PCI_VENDOR_ID_PHILIPS,
6189  .subvendor = 0x1421,
6190  .subdevice = 0x0350, /* PCI version */
6191  .driver_data = SAA7134_BOARD_ADS_INSTANT_TV,
6192  },{
6193  .vendor = PCI_VENDOR_ID_PHILIPS,
6195  .subvendor = 0x1421,
6196  .subdevice = 0x0351, /* PCI version, new revision */
6197  .driver_data = SAA7134_BOARD_ADS_INSTANT_TV,
6198  },{
6199  .vendor = PCI_VENDOR_ID_PHILIPS,
6201  .subvendor = 0x1421,
6202  .subdevice = 0x0370, /* cardbus version */
6203  .driver_data = SAA7134_BOARD_ADS_INSTANT_TV,
6204  },{
6205  .vendor = PCI_VENDOR_ID_PHILIPS,
6207  .subvendor = 0x1421,
6208  .subdevice = 0x1370, /* cardbus version */
6209  .driver_data = SAA7134_BOARD_ADS_INSTANT_TV,
6210 
6211  },{
6212  .vendor = PCI_VENDOR_ID_PHILIPS,
6214  .subvendor = 0x4e42, /* Typhoon */
6215  .subdevice = 0x0502, /* LifeView LR502 OEM */
6216  .driver_data = SAA7134_BOARD_FLYDVBT_DUO_CARDBUS,
6217  },{
6218  .vendor = PCI_VENDOR_ID_PHILIPS,
6220  .subvendor = 0x1043,
6221  .subdevice = 0x0210, /* mini pci NTSC version */
6222  .driver_data = SAA7134_BOARD_FLYTV_DIGIMATRIX,
6223  },{
6224  .vendor = PCI_VENDOR_ID_PHILIPS,
6226  .subvendor = 0x1043,
6227  .subdevice = 0x0210, /* mini pci PAL/SECAM version */
6228  .driver_data = SAA7134_BOARD_ASUSTEK_DIGIMATRIX_TV,
6229 
6230  },{
6231  .vendor = PCI_VENDOR_ID_PHILIPS,
6233  .subvendor = 0x0000, /* It shouldn't break anything, since subdevice id seems unique */
6234  .subdevice = 0x4091,
6235  .driver_data = SAA7134_BOARD_BEHOLD_409FM,
6236  },{
6237  .vendor = PCI_VENDOR_ID_PHILIPS,
6239  .subvendor = 0x5456, /* GoTView */
6240  .subdevice = 0x7135,
6241  .driver_data = SAA7134_BOARD_GOTVIEW_7135,
6242  },{
6243  .vendor = PCI_VENDOR_ID_PHILIPS,
6245  .subvendor = PCI_VENDOR_ID_PHILIPS,
6246  .subdevice = 0x2004,
6247  .driver_data = SAA7134_BOARD_PHILIPS_EUROPA,
6248  },{
6249  .vendor = PCI_VENDOR_ID_PHILIPS,
6251  .subvendor = 0x185b,
6252  .subdevice = 0xc900,
6253  .driver_data = SAA7134_BOARD_VIDEOMATE_DVBT_300,
6254  },{
6255  .vendor = PCI_VENDOR_ID_PHILIPS,
6257  .subvendor = 0x185b,
6258  .subdevice = 0xc901,
6259  .driver_data = SAA7134_BOARD_VIDEOMATE_DVBT_200,
6260  },{
6261  .vendor = PCI_VENDOR_ID_PHILIPS,
6263  .subvendor = 0x1435,
6264  .subdevice = 0x7350,
6265  .driver_data = SAA7134_BOARD_RTD_VFG7350,
6266  },{
6267  .vendor = PCI_VENDOR_ID_PHILIPS,
6269  .subvendor = 0x1435,
6270  .subdevice = 0x7330,
6271  .driver_data = SAA7134_BOARD_RTD_VFG7330,
6272  },{
6273  .vendor = PCI_VENDOR_ID_PHILIPS,
6275  .subvendor = 0x1461,
6276  .subdevice = 0x1044,
6278  },{
6279  .vendor = PCI_VENDOR_ID_PHILIPS,
6281  .subvendor = 0x1131,
6282  .subdevice = 0x4ee9,
6283  .driver_data = SAA7134_BOARD_MONSTERTV_MOBILE,
6284  },{
6285  .vendor = PCI_VENDOR_ID_PHILIPS,
6287  .subvendor = 0x11bd,
6288  .subdevice = 0x002e,
6289  .driver_data = SAA7134_BOARD_PINNACLE_PCTV_110i,
6290  },{
6291  .vendor = PCI_VENDOR_ID_PHILIPS,
6293  .subvendor = 0x1043,
6294  .subdevice = 0x4862,
6295  .driver_data = SAA7134_BOARD_ASUSTeK_P7131_DUAL,
6296  },{
6297  .vendor = PCI_VENDOR_ID_PHILIPS,
6299  .subvendor = PCI_VENDOR_ID_PHILIPS,
6300  .subdevice = 0x2018,
6301  .driver_data = SAA7134_BOARD_PHILIPS_TIGER,
6302  },{
6303  .vendor = PCI_VENDOR_ID_PHILIPS,
6305  .subvendor = 0x1462,
6306  .subdevice = 0x6231, /* tda8275a, ks003 IR */
6307  .driver_data = SAA7134_BOARD_MSI_TVATANYWHERE_PLUS,
6308  },{
6309  .vendor = PCI_VENDOR_ID_PHILIPS,
6311  .subvendor = 0x1462,
6312  .subdevice = 0x8624, /* tda8275, ks003 IR */
6313  .driver_data = SAA7134_BOARD_MSI_TVATANYWHERE_PLUS,
6314  },{
6315  .vendor = PCI_VENDOR_ID_PHILIPS,
6317  .subvendor = 0x153b,
6318  .subdevice = 0x1160,
6319  .driver_data = SAA7134_BOARD_CINERGY250PCI,
6320  },{
6321  .vendor = PCI_VENDOR_ID_PHILIPS,
6322  .device = PCI_DEVICE_ID_PHILIPS_SAA7133, /* SAA 7131E */
6323  .subvendor = 0x5168,
6324  .subdevice = 0x0319,
6325  .driver_data = SAA7134_BOARD_FLYDVB_TRIO,
6326  },{
6327  .vendor = PCI_VENDOR_ID_PHILIPS,
6329  .subvendor = 0x1461,
6330  .subdevice = 0x2c05,
6331  .driver_data = SAA7134_BOARD_AVERMEDIA_777,
6332  },{
6333  .vendor = PCI_VENDOR_ID_PHILIPS,
6335  .subvendor = 0x5168,
6336  .subdevice = 0x0301,
6337  .driver_data = SAA7134_BOARD_FLYDVBT_LR301,
6338  },{
6339  .vendor = PCI_VENDOR_ID_PHILIPS,
6341  .subvendor = 0x0331,
6342  .subdevice = 0x1421,
6343  .driver_data = SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331,
6344  },{
6345  .vendor = PCI_VENDOR_ID_PHILIPS,
6347  .subvendor = 0x17de,
6348  .subdevice = 0x7201,
6349  .driver_data = SAA7134_BOARD_TEVION_DVBT_220RF,
6350  },{
6351  .vendor = PCI_VENDOR_ID_PHILIPS,
6353  .subvendor = 0x17de,
6354  .subdevice = 0x7250,
6355  .driver_data = SAA7134_BOARD_KWORLD_DVBT_210,
6356  },{
6357  .vendor = PCI_VENDOR_ID_PHILIPS,
6358  .device = PCI_DEVICE_ID_PHILIPS_SAA7133, /* SAA7135HL */
6359  .subvendor = 0x17de,
6360  .subdevice = 0x7350,
6361  .driver_data = SAA7134_BOARD_KWORLD_ATSC110,
6362  },{
6363  .vendor = PCI_VENDOR_ID_PHILIPS,
6364  .device = PCI_DEVICE_ID_PHILIPS_SAA7133, /* SAA7135HL */
6365  .subvendor = 0x17de,
6366  .subdevice = 0x7352,
6367  .driver_data = SAA7134_BOARD_KWORLD_ATSC110, /* ATSC 115 */
6368  },{
6369  .vendor = PCI_VENDOR_ID_PHILIPS,
6370  .device = PCI_DEVICE_ID_PHILIPS_SAA7133, /* SAA7135HL */
6371  .subvendor = 0x17de,
6372  .subdevice = 0xa134,
6373  .driver_data = SAA7134_BOARD_KWORLD_PC150U,
6374  }, {
6375  .vendor = PCI_VENDOR_ID_PHILIPS,
6377  .subvendor = 0x1461,
6378  .subdevice = 0x7360,
6379  .driver_data = SAA7134_BOARD_AVERMEDIA_A169_B,
6380  },{
6381  .vendor = PCI_VENDOR_ID_PHILIPS,
6383  .subvendor = 0x1461,
6384  .subdevice = 0x6360,
6385  .driver_data = SAA7134_BOARD_AVERMEDIA_A169_B1,
6386  },{
6387  .vendor = PCI_VENDOR_ID_PHILIPS,
6389  .subvendor = 0x16be,
6390  .subdevice = 0x0005,
6391  .driver_data = SAA7134_BOARD_MD7134_BRIDGE_2,
6392  },{
6393  .vendor = PCI_VENDOR_ID_PHILIPS,
6395  .subvendor = 0x5168,
6396  .subdevice = 0x0300,
6397  .driver_data = SAA7134_BOARD_FLYDVBS_LR300,
6398  },{
6399  .vendor = PCI_VENDOR_ID_PHILIPS,
6401  .subvendor = 0x4e42,
6402  .subdevice = 0x0300,/* LR300 */
6403  .driver_data = SAA7134_BOARD_FLYDVBS_LR300,
6404  },{
6405  .vendor = PCI_VENDOR_ID_PHILIPS,
6407  .subvendor = 0x1489,
6408  .subdevice = 0x0301,
6409  .driver_data = SAA7134_BOARD_FLYDVBT_LR301,
6410  },{
6411  .vendor = PCI_VENDOR_ID_PHILIPS,
6413  .subvendor = 0x5168, /* Animation Technologies (LifeView) */
6414  .subdevice = 0x0304,
6415  .driver_data = SAA7134_BOARD_FLYTVPLATINUM_FM,
6416  },{
6417  .vendor = PCI_VENDOR_ID_PHILIPS,
6419  .subvendor = 0x5168,
6420  .subdevice = 0x3306,
6421  .driver_data = SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS,
6422  },{
6423  .vendor = PCI_VENDOR_ID_PHILIPS,
6425  .subvendor = 0x5168,
6426  .subdevice = 0x3502, /* whats the difference to 0x3306 ?*/
6427  .driver_data = SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS,
6428  },{
6429  .vendor = PCI_VENDOR_ID_PHILIPS,
6431  .subvendor = 0x5168,
6432  .subdevice = 0x3307, /* FlyDVB-T Hybrid Mini PCI */
6433  .driver_data = SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS,
6434  }, {
6435  .vendor = PCI_VENDOR_ID_PHILIPS,
6437  .subvendor = 0x16be,
6438  .subdevice = 0x0007,
6439  .driver_data = SAA7134_BOARD_MEDION_MD8800_QUADRO,
6440  },{
6441  .vendor = PCI_VENDOR_ID_PHILIPS,
6443  .subvendor = 0x16be,
6444  .subdevice = 0x0008,
6445  .driver_data = SAA7134_BOARD_MEDION_MD8800_QUADRO,
6446  },{
6447  .vendor = PCI_VENDOR_ID_PHILIPS,
6449  .subvendor = 0x16be,
6450  .subdevice = 0x000d, /* triple CTX948_V1.1.1 */
6451  .driver_data = SAA7134_BOARD_MEDION_MD8800_QUADRO,
6452  }, {
6453  .vendor = PCI_VENDOR_ID_PHILIPS,
6455  .subvendor = 0x1461,
6456  .subdevice = 0x2c05,
6457  .driver_data = SAA7134_BOARD_AVERMEDIA_777,
6458  },{
6459  .vendor = PCI_VENDOR_ID_PHILIPS,
6461  .subvendor = 0x1489,
6462  .subdevice = 0x0502, /* Cardbus version */
6463  .driver_data = SAA7134_BOARD_FLYDVBT_DUO_CARDBUS,
6464  },{
6465  .vendor = PCI_VENDOR_ID_PHILIPS,
6467  .subvendor = 0x0919, /* Philips Proteus PRO 2309 */
6468  .subdevice = 0x2003,
6469  .driver_data = SAA7134_BOARD_PROTEUS_2309,
6470  },{
6471  .vendor = PCI_VENDOR_ID_PHILIPS,
6473  .subvendor = 0x1461,
6474  .subdevice = 0x2c00,
6475  .driver_data = SAA7134_BOARD_AVERMEDIA_A16AR,
6476  },{
6477  .vendor = PCI_VENDOR_ID_PHILIPS,
6479  .subvendor = 0x1043,
6480  .subdevice = 0x4860,
6481  .driver_data = SAA7134_BOARD_ASUS_EUROPA2_HYBRID,
6482  },{
6483  .vendor = PCI_VENDOR_ID_PHILIPS,
6485  .subvendor = 0x11bd,
6486  .subdevice = 0x002f,
6487  .driver_data = SAA7134_BOARD_PINNACLE_PCTV_310i,
6488  },{
6489  .vendor = PCI_VENDOR_ID_PHILIPS,
6491  .subvendor = 0x1461, /* Avermedia Technologies Inc */
6492  .subdevice = 0x9715,
6493  .driver_data = SAA7134_BOARD_AVERMEDIA_STUDIO_507,
6494  },{
6495  .vendor = PCI_VENDOR_ID_PHILIPS,
6497  .subvendor = 0x1461, /* Avermedia Technologies Inc */
6498  .subdevice = 0xa11b,
6499  .driver_data = SAA7134_BOARD_AVERMEDIA_STUDIO_507UA,
6500  }, {
6501  .vendor = PCI_VENDOR_ID_PHILIPS,
6503  .subvendor = 0x1043,
6504  .subdevice = 0x4876,
6506  },{
6507  .vendor = PCI_VENDOR_ID_PHILIPS,
6509  .subvendor = 0x0070,
6510  .subdevice = 0x6700,
6511  .driver_data = SAA7134_BOARD_HAUPPAUGE_HVR1110,
6512  },{
6513  .vendor = PCI_VENDOR_ID_PHILIPS,
6515  .subvendor = 0x0070,
6516  .subdevice = 0x6701,
6517  .driver_data = SAA7134_BOARD_HAUPPAUGE_HVR1110,
6518  },{
6519  .vendor = PCI_VENDOR_ID_PHILIPS,
6521  .subvendor = 0x0070,
6522  .subdevice = 0x6702,
6523  .driver_data = SAA7134_BOARD_HAUPPAUGE_HVR1110,
6524  },{
6525  .vendor = PCI_VENDOR_ID_PHILIPS,
6527  .subvendor = 0x0070,
6528  .subdevice = 0x6703,
6529  .driver_data = SAA7134_BOARD_HAUPPAUGE_HVR1110,
6530  },{
6531  .vendor = PCI_VENDOR_ID_PHILIPS,
6533  .subvendor = 0x0070,
6534  .subdevice = 0x6704,
6535  .driver_data = SAA7134_BOARD_HAUPPAUGE_HVR1110,
6536  },{
6537  .vendor = PCI_VENDOR_ID_PHILIPS,
6539  .subvendor = 0x0070,
6540  .subdevice = 0x6705,
6541  .driver_data = SAA7134_BOARD_HAUPPAUGE_HVR1110,
6542  },{
6543  .vendor = PCI_VENDOR_ID_PHILIPS,
6545  .subvendor = 0x0070,
6546  .subdevice = 0x6706,
6547  .driver_data = SAA7134_BOARD_HAUPPAUGE_HVR1150,
6548  },{
6549  .vendor = PCI_VENDOR_ID_PHILIPS,
6551  .subvendor = 0x0070,
6552  .subdevice = 0x6707,
6553  .driver_data = SAA7134_BOARD_HAUPPAUGE_HVR1120,
6554  },{
6555  .vendor = PCI_VENDOR_ID_PHILIPS,
6557  .subvendor = 0x0070,
6558  .subdevice = 0x6708,
6559  .driver_data = SAA7134_BOARD_HAUPPAUGE_HVR1150,
6560  },{
6561  .vendor = PCI_VENDOR_ID_PHILIPS,
6563  .subvendor = 0x0070,
6564  .subdevice = 0x6709,
6565  .driver_data = SAA7134_BOARD_HAUPPAUGE_HVR1120,
6566  },{
6567  .vendor = PCI_VENDOR_ID_PHILIPS,
6569  .subvendor = 0x0070,
6570  .subdevice = 0x670a,
6571  .driver_data = SAA7134_BOARD_HAUPPAUGE_HVR1120,
6572  },{
6573  .vendor = PCI_VENDOR_ID_PHILIPS,
6575  .subvendor = 0x153b,
6576  .subdevice = 0x1172,
6577  .driver_data = SAA7134_BOARD_CINERGY_HT_PCMCIA,
6578  },{
6579  .vendor = PCI_VENDOR_ID_PHILIPS,
6581  .subvendor = PCI_VENDOR_ID_PHILIPS,
6582  .subdevice = 0x2342,
6583  .driver_data = SAA7134_BOARD_ENCORE_ENLTV,
6584  },{
6585  .vendor = PCI_VENDOR_ID_PHILIPS,
6587  .subvendor = 0x1131,
6588  .subdevice = 0x2341,
6589  .driver_data = SAA7134_BOARD_ENCORE_ENLTV,
6590  },{
6591  .vendor = PCI_VENDOR_ID_PHILIPS,
6593  .subvendor = 0x3016,
6594  .subdevice = 0x2344,
6595  .driver_data = SAA7134_BOARD_ENCORE_ENLTV,
6596  },{
6597  .vendor = PCI_VENDOR_ID_PHILIPS,
6599  .subvendor = 0x1131,
6600  .subdevice = 0x230f,
6601  .driver_data = SAA7134_BOARD_ENCORE_ENLTV_FM,
6602  },{
6603  .vendor = PCI_VENDOR_ID_PHILIPS,
6605  .subvendor = 0x1a7f,
6606  .subdevice = 0x2008,
6607  .driver_data = SAA7134_BOARD_ENCORE_ENLTV_FM53,
6608  }, {
6609  .vendor = PCI_VENDOR_ID_PHILIPS,
6611  .subvendor = 0x1a7f,
6612  .subdevice = 0x2108,
6613  .driver_data = SAA7134_BOARD_ENCORE_ENLTV_FM3,
6614  }, {
6615  .vendor = PCI_VENDOR_ID_PHILIPS,
6617  .subvendor = 0x153b,
6618  .subdevice = 0x1175,
6619  .driver_data = SAA7134_BOARD_CINERGY_HT_PCI,
6620  },{
6621  .vendor = PCI_VENDOR_ID_PHILIPS,
6623  .subvendor = 0x1461, /* Avermedia Technologies Inc */
6624  .subdevice = 0xf31e,
6625  .driver_data = SAA7134_BOARD_AVERMEDIA_M102,
6626  },{
6627  .vendor = PCI_VENDOR_ID_PHILIPS,
6629  .subvendor = 0x4E42, /* MSI */
6630  .subdevice = 0x0306, /* TV@nywhere DUO */
6631  .driver_data = SAA7134_BOARD_FLYDVBTDUO,
6632  },{
6633  .vendor = PCI_VENDOR_ID_PHILIPS,
6635  .subvendor = 0x1043,
6636  .subdevice = 0x4871,
6637  .driver_data = SAA7134_BOARD_ASUS_P7131_4871,
6638  },{
6639  .vendor = PCI_VENDOR_ID_PHILIPS,
6641  .subvendor = 0x1043,
6642  .subdevice = 0x4857, /* REV:1.00 */
6643  .driver_data = SAA7134_BOARD_ASUSTeK_TIGER,
6644  },{
6645  .vendor = PCI_VENDOR_ID_PHILIPS,
6647  .subvendor = 0x0919, /* SinoVideo PCI 2309 Proteus (7134) */
6648  .subdevice = 0x2003, /* OEM cardbus */
6649  .driver_data = SAA7134_BOARD_SABRENT_TV_PCB05,
6650  },{
6651  .vendor = PCI_VENDOR_ID_PHILIPS,
6653  .subvendor = PCI_VENDOR_ID_PHILIPS,
6654  .subdevice = 0x2304,
6655  .driver_data = SAA7134_BOARD_10MOONSTVMASTER3,
6656  },{
6657  .vendor = PCI_VENDOR_ID_PHILIPS,
6659  .subvendor = 0x1461, /* Avermedia Technologies Inc */
6660  .subdevice = 0xf01d, /* AVerTV DVB-T Super 007 */
6661  .driver_data = SAA7134_BOARD_AVERMEDIA_SUPER_007,
6662  },{
6663  .vendor = PCI_VENDOR_ID_PHILIPS,
6665  .subvendor = 0x0000,
6666  .subdevice = 0x4016,
6667  .driver_data = SAA7134_BOARD_BEHOLD_401,
6668  },{
6669  .vendor = PCI_VENDOR_ID_PHILIPS,
6671  .subvendor = 0x0000,
6672  .subdevice = 0x4036,
6673  .driver_data = SAA7134_BOARD_BEHOLD_403,
6674  },{
6675  .vendor = PCI_VENDOR_ID_PHILIPS,
6677  .subvendor = 0x0000,
6678  .subdevice = 0x4037,
6679  .driver_data = SAA7134_BOARD_BEHOLD_403FM,
6680  },{
6681  .vendor = PCI_VENDOR_ID_PHILIPS,
6683  .subvendor = 0x0000,
6684  .subdevice = 0x4050,
6685  .driver_data = SAA7134_BOARD_BEHOLD_405,
6686  },{
6687  .vendor = PCI_VENDOR_ID_PHILIPS,
6689  .subvendor = 0x0000,
6690  .subdevice = 0x4051,
6691  .driver_data = SAA7134_BOARD_BEHOLD_405FM,
6692  },{
6693  .vendor = PCI_VENDOR_ID_PHILIPS,
6695  .subvendor = 0x0000,
6696  .subdevice = 0x4070,
6697  .driver_data = SAA7134_BOARD_BEHOLD_407,
6698  },{
6699  .vendor = PCI_VENDOR_ID_PHILIPS,
6701  .subvendor = 0x0000,
6702  .subdevice = 0x4071,
6703  .driver_data = SAA7134_BOARD_BEHOLD_407FM,
6704  },{
6705  .vendor = PCI_VENDOR_ID_PHILIPS,
6707  .subvendor = 0x0000,
6708  .subdevice = 0x4090,
6709  .driver_data = SAA7134_BOARD_BEHOLD_409,
6710  },{
6711  .vendor = PCI_VENDOR_ID_PHILIPS,
6713  .subvendor = 0x0000,
6714  .subdevice = 0x505B,
6715  .driver_data = SAA7134_BOARD_BEHOLD_505RDS_MK5,
6716  }, {
6717  .vendor = PCI_VENDOR_ID_PHILIPS,
6719  .subvendor = 0x0000,
6720  .subdevice = 0x5051,
6721  .driver_data = SAA7134_BOARD_BEHOLD_505RDS_MK3,
6722  },{
6723  .vendor = PCI_VENDOR_ID_PHILIPS,
6725  .subvendor = 0x5ace,
6726  .subdevice = 0x5050,
6727  .driver_data = SAA7134_BOARD_BEHOLD_505FM,
6728  },{
6729  .vendor = PCI_VENDOR_ID_PHILIPS,
6731  .subvendor = 0x0000,
6732  .subdevice = 0x5071,
6733  .driver_data = SAA7134_BOARD_BEHOLD_507RDS_MK3,
6734  },{
6735  .vendor = PCI_VENDOR_ID_PHILIPS,
6737  .subvendor = 0x0000,
6738  .subdevice = 0x507B,
6739  .driver_data = SAA7134_BOARD_BEHOLD_507RDS_MK5,
6740  },{
6741  .vendor = PCI_VENDOR_ID_PHILIPS,
6743  .subvendor = 0x5ace,
6744  .subdevice = 0x5070,
6745  .driver_data = SAA7134_BOARD_BEHOLD_507_9FM,
6746  },{
6747  .vendor = PCI_VENDOR_ID_PHILIPS,
6749  .subvendor = 0x5ace,
6750  .subdevice = 0x5090,
6751  .driver_data = SAA7134_BOARD_BEHOLD_507_9FM,
6752  },{
6753  .vendor = PCI_VENDOR_ID_PHILIPS,
6755  .subvendor = 0x0000,
6756  .subdevice = 0x5201,
6757  .driver_data = SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM,
6758  },{
6759  .vendor = PCI_VENDOR_ID_PHILIPS,
6761  .subvendor = 0x5ace,
6762  .subdevice = 0x6070,
6763  .driver_data = SAA7134_BOARD_BEHOLD_607FM_MK3,
6764  },{
6765  .vendor = PCI_VENDOR_ID_PHILIPS,
6767  .subvendor = 0x5ace,
6768  .subdevice = 0x6071,
6769  .driver_data = SAA7134_BOARD_BEHOLD_607FM_MK5,
6770  },{
6771  .vendor = PCI_VENDOR_ID_PHILIPS,
6773  .subvendor = 0x5ace,
6774  .subdevice = 0x6072,
6775  .driver_data = SAA7134_BOARD_BEHOLD_607RDS_MK3,
6776  },{
6777  .vendor = PCI_VENDOR_ID_PHILIPS,
6779  .subvendor = 0x5ace,
6780  .subdevice = 0x6073,
6781  .driver_data = SAA7134_BOARD_BEHOLD_607RDS_MK5,
6782  },{
6783  .vendor = PCI_VENDOR_ID_PHILIPS,
6785  .subvendor = 0x5ace,
6786  .subdevice = 0x6090,
6787  .driver_data = SAA7134_BOARD_BEHOLD_609FM_MK3,
6788  },{
6789  .vendor = PCI_VENDOR_ID_PHILIPS,
6791  .subvendor = 0x5ace,
6792  .subdevice = 0x6091,
6793  .driver_data = SAA7134_BOARD_BEHOLD_609FM_MK5,
6794  },{
6795  .vendor = PCI_VENDOR_ID_PHILIPS,
6797  .subvendor = 0x5ace,
6798  .subdevice = 0x6092,
6799  .driver_data = SAA7134_BOARD_BEHOLD_609RDS_MK3,
6800  },{
6801  .vendor = PCI_VENDOR_ID_PHILIPS,
6803  .subvendor = 0x5ace,
6804  .subdevice = 0x6093,
6805  .driver_data = SAA7134_BOARD_BEHOLD_609RDS_MK5,
6806  },{
6807  .vendor = PCI_VENDOR_ID_PHILIPS,
6809  .subvendor = 0x5ace,
6810  .subdevice = 0x6190,
6811  .driver_data = SAA7134_BOARD_BEHOLD_M6,
6812  },{
6813  .vendor = PCI_VENDOR_ID_PHILIPS,
6815  .subvendor = 0x5ace,
6816  .subdevice = 0x6193,
6817  .driver_data = SAA7134_BOARD_BEHOLD_M6_EXTRA,
6818  }, {
6819  .vendor = PCI_VENDOR_ID_PHILIPS,
6821  .subvendor = 0x5ace,
6822  .subdevice = 0x6191,
6823  .driver_data = SAA7134_BOARD_BEHOLD_M63,
6824  },{
6825  .vendor = PCI_VENDOR_ID_PHILIPS,
6827  .subvendor = 0x4e42,
6828  .subdevice = 0x3502,
6829  .driver_data = SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS,
6830  }, {
6831  .vendor = PCI_VENDOR_ID_PHILIPS,
6833  .subvendor = 0x1822, /*Twinhan Technology Co. Ltd*/
6834  .subdevice = 0x0022,
6835  .driver_data = SAA7134_BOARD_TWINHAN_DTV_DVB_3056,
6836  }, {
6837  .vendor = PCI_VENDOR_ID_PHILIPS,
6839  .subvendor = 0x16be,
6840  .subdevice = 0x0010, /* Medion version CTX953_V.1.4.3 */
6841  .driver_data = SAA7134_BOARD_CREATIX_CTX953,
6842  }, {
6843  .vendor = PCI_VENDOR_ID_PHILIPS,
6845  .subvendor = 0x1462, /* MSI */
6846  .subdevice = 0x8625, /* TV@nywhere A/D v1.1 */
6847  .driver_data = SAA7134_BOARD_MSI_TVANYWHERE_AD11,
6848  },{
6849  .vendor = PCI_VENDOR_ID_PHILIPS,
6851  .subvendor = 0x1461, /* Avermedia Technologies Inc */
6852  .subdevice = 0xf436,
6853  .driver_data = SAA7134_BOARD_AVERMEDIA_CARDBUS_506,
6854  }, {
6855  .vendor = PCI_VENDOR_ID_PHILIPS,
6857  .subvendor = 0x1461, /* Avermedia Technologies Inc */
6858  .subdevice = 0xf936,
6859  .driver_data = SAA7134_BOARD_AVERMEDIA_A16D,
6860  }, {
6861  .vendor = PCI_VENDOR_ID_PHILIPS,
6863  .subvendor = 0x1461, /* Avermedia Technologies Inc */
6864  .subdevice = 0xa836,
6865  .driver_data = SAA7134_BOARD_AVERMEDIA_M115,
6866  }, {
6867  .vendor = PCI_VENDOR_ID_PHILIPS,
6869  .subvendor = 0x185b,
6870  .subdevice = 0xc900,
6871  .driver_data = SAA7134_BOARD_VIDEOMATE_T750,
6872  }, {
6873  .vendor = PCI_VENDOR_ID_PHILIPS,
6874  .device = PCI_DEVICE_ID_PHILIPS_SAA7133, /* SAA7135HL */
6875  .subvendor = 0x1421,
6876  .subdevice = 0x0380,
6877  .driver_data = SAA7134_BOARD_ADS_INSTANT_HDTV_PCI,
6878  }, {
6879  .vendor = PCI_VENDOR_ID_PHILIPS,
6881  .subvendor = 0x5169,
6882  .subdevice = 0x1502,
6883  .driver_data = SAA7134_BOARD_FLYTVPLATINUM_MINI,
6884  }, {
6885  .vendor = PCI_VENDOR_ID_PHILIPS,
6887  .subvendor = 0x5ace,
6888  .subdevice = 0x6290,
6889  .driver_data = SAA7134_BOARD_BEHOLD_H6,
6890  }, {
6891  .vendor = PCI_VENDOR_ID_PHILIPS,
6893  .subvendor = 0x1461, /* Avermedia Technologies Inc */
6894  .subdevice = 0xf636,
6895  .driver_data = SAA7134_BOARD_AVERMEDIA_M103,
6896  }, {
6897  .vendor = PCI_VENDOR_ID_PHILIPS,
6899  .subvendor = 0x1461, /* Avermedia Technologies Inc */
6900  .subdevice = 0xf736,
6901  .driver_data = SAA7134_BOARD_AVERMEDIA_M103,
6902  }, {
6903  .vendor = PCI_VENDOR_ID_PHILIPS,
6905  .subvendor = 0x1043,
6906  .subdevice = 0x4878, /* REV:1.02G */
6907  .driver_data = SAA7134_BOARD_ASUSTeK_TIGER_3IN1,
6908  }, {
6909  .vendor = PCI_VENDOR_ID_PHILIPS,
6911  .subvendor = 0x1043,
6912  .subdevice = 0x48cd,
6913  .driver_data = SAA7134_BOARD_ASUSTeK_PS3_100,
6914  }, {
6915  .vendor = PCI_VENDOR_ID_PHILIPS,
6917  .subvendor = 0x17de,
6918  .subdevice = 0x7128,
6919  .driver_data = SAA7134_BOARD_KWORLD_PLUS_TV_ANALOG,
6920  }, {
6921  .vendor = PCI_VENDOR_ID_PHILIPS,
6923  .subvendor = 0x17de,
6924  .subdevice = 0xb136,
6926  }, {
6927  .vendor = PCI_VENDOR_ID_PHILIPS,
6929  .subvendor = 0x1461, /* Avermedia Technologies Inc */
6930  .subdevice = 0xf31d,
6932  }, {
6933  .vendor = PCI_VENDOR_ID_PHILIPS,
6935  .subvendor = 0x185b,
6936  .subdevice = 0xc900,
6937  .driver_data = SAA7134_BOARD_VIDEOMATE_S350,
6938  }, {
6939  .vendor = PCI_VENDOR_ID_PHILIPS,
6941  .subvendor = 0x5ace, /* Beholder Intl. Ltd. */
6942  .subdevice = 0x7595,
6943  .driver_data = SAA7134_BOARD_BEHOLD_X7,
6944  }, {
6945  .vendor = PCI_VENDOR_ID_PHILIPS,
6947  .subvendor = 0x19d1, /* RoverMedia */
6948  .subdevice = 0x0138, /* LifeView FlyTV Prime30 OEM */
6949  .driver_data = SAA7134_BOARD_ROVERMEDIA_LINK_PRO_FM,
6950  }, {
6951  .vendor = PCI_VENDOR_ID_PHILIPS,
6953  .subvendor = PCI_VENDOR_ID_PHILIPS,
6954  .subdevice = 0x2004,
6955  .driver_data = SAA7134_BOARD_ZOLID_HYBRID_PCI,
6956  }, {
6957  .vendor = PCI_VENDOR_ID_PHILIPS,
6959  .subvendor = 0x1043,
6960  .subdevice = 0x4847,
6961  .driver_data = SAA7134_BOARD_ASUS_EUROPA_HYBRID,
6962  }, {
6963  .vendor = PCI_VENDOR_ID_PHILIPS,
6965  .subvendor = 0x107d,
6966  .subdevice = 0x6655,
6968  }, {
6969  .vendor = PCI_VENDOR_ID_PHILIPS,
6971  .subvendor = 0x13c2,
6972  .subdevice = 0x2804,
6974  }, {
6975  .vendor = PCI_VENDOR_ID_PHILIPS,
6977  .subvendor = 0x5ace, /* Beholder Intl. Ltd. */
6978  .subdevice = 0x7190,
6979  .driver_data = SAA7134_BOARD_BEHOLD_H7,
6980  }, {
6981  .vendor = PCI_VENDOR_ID_PHILIPS,
6983  .subvendor = 0x5ace, /* Beholder Intl. Ltd. */
6984  .subdevice = 0x7090,
6985  .driver_data = SAA7134_BOARD_BEHOLD_A7,
6986  }, {
6987  .vendor = PCI_VENDOR_ID_PHILIPS,
6989  .subvendor = 0x185b,
6990  .subdevice = 0xc900,
6991  .driver_data = SAA7134_BOARD_VIDEOMATE_M1F,
6992  }, {
6993  .vendor = PCI_VENDOR_ID_PHILIPS,
6995  .subvendor = 0x5ace,
6996  .subdevice = 0x5030,
6997  .driver_data = SAA7134_BOARD_BEHOLD_503FM,
6998  }, {
6999  .vendor = PCI_VENDOR_ID_PHILIPS,
7001  .subvendor = 0x5ace,
7002  .subdevice = 0x5010,
7003  .driver_data = SAA7134_BOARD_BEHOLD_501,
7004  }, {
7005  .vendor = PCI_VENDOR_ID_PHILIPS,
7007  .subvendor = 0x17de,
7008  .subdevice = 0xd136,
7009  .driver_data = SAA7134_BOARD_MAGICPRO_PROHDTV_PRO2,
7010  }, {
7011  .vendor = PCI_VENDOR_ID_PHILIPS,
7013  .subvendor = 0x6000,
7014  .subdevice = 0x0811,
7015  .driver_data = SAA7134_BOARD_SENSORAY811_911,
7016  }, {
7017  .vendor = PCI_VENDOR_ID_PHILIPS,
7019  .subvendor = 0x6000,
7020  .subdevice = 0x0911,
7021  .driver_data = SAA7134_BOARD_SENSORAY811_911,
7022  }, {
7023  /* --- boards without eeprom + subsystem ID --- */
7024  .vendor = PCI_VENDOR_ID_PHILIPS,
7026  .subvendor = PCI_VENDOR_ID_PHILIPS,
7027  .subdevice = 0,
7028  .driver_data = SAA7134_BOARD_NOAUTO,
7029  },{
7030  .vendor = PCI_VENDOR_ID_PHILIPS,
7032  .subvendor = PCI_VENDOR_ID_PHILIPS,
7033  .subdevice = 0,
7034  .driver_data = SAA7134_BOARD_NOAUTO,
7035  },{
7036  /* --- default catch --- */
7037  .vendor = PCI_VENDOR_ID_PHILIPS,
7039  .subvendor = PCI_ANY_ID,
7040  .subdevice = PCI_ANY_ID,
7041  .driver_data = SAA7134_BOARD_UNKNOWN,
7042  },{
7043  .vendor = PCI_VENDOR_ID_PHILIPS,
7045  .subvendor = PCI_ANY_ID,
7046  .subdevice = PCI_ANY_ID,
7047  .driver_data = SAA7134_BOARD_UNKNOWN,
7048  },{
7049  .vendor = PCI_VENDOR_ID_PHILIPS,
7051  .subvendor = PCI_ANY_ID,
7052  .subdevice = PCI_ANY_ID,
7053  .driver_data = SAA7134_BOARD_UNKNOWN,
7054  },{
7055  .vendor = PCI_VENDOR_ID_PHILIPS,
7057  .subvendor = PCI_ANY_ID,
7058  .subdevice = PCI_ANY_ID,
7059  .driver_data = SAA7134_BOARD_UNKNOWN,
7060  },{
7061  /* --- end of list --- */
7062  }
7063 };
7064 MODULE_DEVICE_TABLE(pci, saa7134_pci_tbl);
7065 
7066 /* ----------------------------------------------------------- */
7067 /* flyvideo tweaks */
7068 
7069 
7070 static void board_flyvideo(struct saa7134_dev *dev)
7071 {
7072  printk("%s: there are different flyvideo cards with different tuners\n"
7073  "%s: out there, you might have to use the tuner=<nr> insmod\n"
7074  "%s: option to override the default value.\n",
7075  dev->name, dev->name, dev->name);
7076 }
7077 
7078 static int saa7134_xc2028_callback(struct saa7134_dev *dev,
7079  int command, int arg)
7080 {
7081  switch (command) {
7082  case XC2028_TUNER_RESET:
7083  saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00008000, 0x00000000);
7084  saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00008000, 0x00008000);
7085  switch (dev->board) {
7088  saa7134_set_gpio(dev, 23, 0);
7089  msleep(10);
7090  saa7134_set_gpio(dev, 23, 1);
7091  break;
7093  saa7134_set_gpio(dev, 21, 0);
7094  msleep(10);
7095  saa7134_set_gpio(dev, 21, 1);
7096  break;
7098  saa7134_set_gpio(dev, 18, 0);
7099  msleep(10);
7100  saa7134_set_gpio(dev, 18, 1);
7101  break;
7103  saa7134_set_gpio(dev, 20, 0);
7104  msleep(10);
7105  saa7134_set_gpio(dev, 20, 1);
7106  break;
7107  }
7108  return 0;
7109  }
7110  return -EINVAL;
7111 }
7112 
7113 static int saa7134_xc5000_callback(struct saa7134_dev *dev,
7114  int command, int arg)
7115 {
7116  switch (dev->board) {
7120  if (command == XC5000_TUNER_RESET) {
7121  /* Down and UP pheripherial RESET pin for reset all chips */
7123  msleep(10);
7125  msleep(10);
7126  }
7127  break;
7128  default:
7129  saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x06e20000, 0x06e20000);
7130  saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x06a20000, 0x06a20000);
7131  saa_andorl(SAA7133_ANALOG_IO_SELECT >> 2, 0x02, 0x02);
7132  saa_andorl(SAA7134_ANALOG_IN_CTRL1 >> 2, 0x81, 0x81);
7133  saa_andorl(SAA7134_AUDIO_CLOCK0 >> 2, 0x03187de7, 0x03187de7);
7134  saa_andorl(SAA7134_AUDIO_PLL_CTRL >> 2, 0x03, 0x03);
7136  0x0001e000, 0x0001e000);
7137  break;
7138  }
7139  return 0;
7140 }
7141 
7142 static int saa7134_tda8290_827x_callback(struct saa7134_dev *dev,
7143  int command, int arg)
7144 {
7145  u8 sync_control;
7146 
7147  switch (command) {
7148  case 0: /* switch LNA gain through GPIO 22*/
7149  saa7134_set_gpio(dev, 22, arg) ;
7150  break;
7151  case 1: /* vsync output at GPIO22. 50 / 60Hz */
7152  saa_andorb(SAA7134_VIDEO_PORT_CTRL3, 0x80, 0x80);
7153  saa_andorb(SAA7134_VIDEO_PORT_CTRL6, 0x0f, 0x03);
7154  if (arg == 1)
7155  sync_control = 11;
7156  else
7157  sync_control = 17;
7158  saa_writeb(SAA7134_VGATE_START, sync_control);
7159  saa_writeb(SAA7134_VGATE_STOP, sync_control + 1);
7160  saa_andorb(SAA7134_MISC_VGATE_MSB, 0x03, 0x00);
7161  break;
7162  default:
7163  return -EINVAL;
7164  }
7165 
7166  return 0;
7167 }
7168 
7169 static inline int saa7134_tda18271_hvr11x0_toggle_agc(struct saa7134_dev *dev,
7170  enum tda18271_mode mode)
7171 {
7172  /* toggle AGC switch through GPIO 26 */
7173  switch (mode) {
7174  case TDA18271_ANALOG:
7175  saa7134_set_gpio(dev, 26, 0);
7176  break;
7177  case TDA18271_DIGITAL:
7178  saa7134_set_gpio(dev, 26, 1);
7179  break;
7180  default:
7181  return -EINVAL;
7182  }
7183  return 0;
7184 }
7185 
7186 static inline int saa7134_kworld_sbtvd_toggle_agc(struct saa7134_dev *dev,
7187  enum tda18271_mode mode)
7188 {
7189  /* toggle AGC switch through GPIO 27 */
7190  switch (mode) {
7191  case TDA18271_ANALOG:
7192  saa_writel(SAA7134_GPIO_GPMODE0 >> 2, 0x4000);
7193  saa_writel(SAA7134_GPIO_GPSTATUS0 >> 2, 0x4000);
7194  msleep(20);
7195  break;
7196  case TDA18271_DIGITAL:
7197  saa_writel(SAA7134_GPIO_GPMODE0 >> 2, 0x14000);
7198  saa_writel(SAA7134_GPIO_GPSTATUS0 >> 2, 0x14000);
7199  msleep(20);
7200  saa_writel(SAA7134_GPIO_GPMODE0 >> 2, 0x54000);
7201  saa_writel(SAA7134_GPIO_GPSTATUS0 >> 2, 0x54000);
7202  msleep(30);
7203  break;
7204  default:
7205  return -EINVAL;
7206  }
7207  return 0;
7208 }
7209 
7210 static int saa7134_kworld_pc150u_toggle_agc(struct saa7134_dev *dev,
7211  enum tda18271_mode mode)
7212 {
7213  switch (mode) {
7214  case TDA18271_ANALOG:
7215  saa7134_set_gpio(dev, 18, 0);
7216  break;
7217  case TDA18271_DIGITAL:
7218  saa7134_set_gpio(dev, 18, 1);
7219  msleep(30);
7220  break;
7221  default:
7222  return -EINVAL;
7223  }
7224  return 0;
7225 }
7226 
7227 static int saa7134_tda8290_18271_callback(struct saa7134_dev *dev,
7228  int command, int arg)
7229 {
7230  int ret = 0;
7231 
7232  switch (command) {
7233  case TDA18271_CALLBACK_CMD_AGC_ENABLE: /* 0 */
7234  switch (dev->board) {
7238  ret = saa7134_tda18271_hvr11x0_toggle_agc(dev, arg);
7239  break;
7241  ret = saa7134_kworld_sbtvd_toggle_agc(dev, arg);
7242  break;
7244  ret = saa7134_kworld_pc150u_toggle_agc(dev, arg);
7245  break;
7246  default:
7247  break;
7248  }
7249  break;
7250  default:
7251  ret = -EINVAL;
7252  break;
7253  }
7254  return ret;
7255 }
7256 
7257 static int saa7134_tda8290_callback(struct saa7134_dev *dev,
7258  int command, int arg)
7259 {
7260  int ret;
7261 
7262  switch (dev->board) {
7269  /* tda8290 + tda18271 */
7270  ret = saa7134_tda8290_18271_callback(dev, command, arg);
7271  break;
7272  default:
7273  /* tda8290 + tda827x */
7274  ret = saa7134_tda8290_827x_callback(dev, command, arg);
7275  break;
7276  }
7277  return ret;
7278 }
7279 
7280 int saa7134_tuner_callback(void *priv, int component, int command, int arg)
7281 {
7282  struct saa7134_dev *dev = priv;
7283 
7284  if (dev != NULL) {
7285  switch (dev->tuner_type) {
7286  case TUNER_PHILIPS_TDA8290:
7287  return saa7134_tda8290_callback(dev, command, arg);
7288  case TUNER_XC2028:
7289  return saa7134_xc2028_callback(dev, command, arg);
7290  case TUNER_XC5000:
7291  return saa7134_xc5000_callback(dev, command, arg);
7292  }
7293  } else {
7294  printk(KERN_ERR "saa7134: Error - device struct undefined.\n");
7295  return -EINVAL;
7296  }
7297  return -EINVAL;
7298 }
7300 
7301 /* ----------------------------------------------------------- */
7302 
7303 static void hauppauge_eeprom(struct saa7134_dev *dev, u8 *eeprom_data)
7304 {
7305  struct tveeprom tv;
7306 
7307  tveeprom_hauppauge_analog(&dev->i2c_client, &tv, eeprom_data);
7308 
7309  /* Make sure we support the board model */
7310  switch (tv.model) {
7311  case 67019: /* WinTV-HVR1110 (Retail, IR Blaster, hybrid, FM, SVid/Comp, 3.5mm audio in) */
7312  case 67109: /* WinTV-HVR1000 (Retail, IR Receive, analog, no FM, SVid/Comp, 3.5mm audio in) */
7313  case 67201: /* WinTV-HVR1150 (Retail, IR Receive, hybrid, FM, SVid/Comp, 3.5mm audio in) */
7314  case 67301: /* WinTV-HVR1000 (Retail, IR Receive, analog, no FM, SVid/Comp, 3.5mm audio in) */
7315  case 67209: /* WinTV-HVR1110 (Retail, IR Receive, hybrid, FM, SVid/Comp, 3.5mm audio in) */
7316  case 67559: /* WinTV-HVR1110 (OEM, no IR, hybrid, FM, SVid/Comp, RCA aud) */
7317  case 67569: /* WinTV-HVR1110 (OEM, no IR, hybrid, FM) */
7318  case 67579: /* WinTV-HVR1110 (OEM, no IR, hybrid, no FM) */
7319  case 67589: /* WinTV-HVR1110 (OEM, no IR, hybrid, no FM, SVid/Comp, RCA aud) */
7320  case 67599: /* WinTV-HVR1110 (OEM, no IR, hybrid, no FM, SVid/Comp, RCA aud) */
7321  case 67651: /* WinTV-HVR1150 (OEM, no IR, hybrid, FM, SVid/Comp, RCA aud) */
7322  case 67659: /* WinTV-HVR1110 (OEM, no IR, hybrid, FM, SVid/Comp, RCA aud) */
7323  break;
7324  default:
7325  printk(KERN_WARNING "%s: warning: "
7326  "unknown hauppauge model #%d\n", dev->name, tv.model);
7327  break;
7328  }
7329 
7330  printk(KERN_INFO "%s: hauppauge eeprom: model=%d\n",
7331  dev->name, tv.model);
7332 }
7333 
7334 /* ----------------------------------------------------------- */
7335 
7337 {
7338  /* Always print gpio, often manufacturers encode tuner type and other info. */
7341  printk(KERN_INFO "%s: board init: gpio is %x\n", dev->name, dev->gpio_value);
7342 
7343  switch (dev->board) {
7348  board_flyvideo(dev);
7349  break;
7358  case SAA7134_BOARD_MD2819:
7370 /* case SAA7134_BOARD_SABRENT_SBTTVFM: */ /* not finished yet */
7419  break;
7424  break;
7425  case SAA7134_BOARD_MD5044:
7426  printk("%s: seems there are two different versions of the MD5044\n"
7427  "%s: (with the same ID) out there. If sound doesn't work for\n"
7428  "%s: you try the audio_clock_override=0x200000 insmod option.\n",
7429  dev->name,dev->name,dev->name);
7430  break;
7432  /* power-up tuner chip */
7433  saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x00040000, 0x00040000);
7434  saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00040000, 0x00000000);
7435  break;
7437  /* this turns the remote control chip off to work around a bug in it */
7440  break;
7442  /* power-up tuner chip */
7443  saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x00040000, 0x00040000);
7444  saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00040000, 0x00000004);
7445  break;
7447  /* turn the fan on */
7450  break;
7453  saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x08000000, 0x08000000);
7454  saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x08000000, 0x00000000);
7455  break;
7458  /* power-down tuner chip */
7459  saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0xffffffff, 0);
7460  saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0xffffffff, 0);
7461  msleep(10);
7462  /* power-up tuner chip */
7463  saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0xffffffff, 0xffffffff);
7464  saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0xffffffff, 0xffffffff);
7465  msleep(10);
7466  break;
7468  /* power-down tuner chip */
7469  saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x08400000, 0x08400000);
7470  saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x08400000, 0);
7471  msleep(10);
7472  saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x08400000, 0x08400000);
7473  saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x08400000, 0x08400000);
7474  msleep(10);
7476  break;
7478  saa7134_set_gpio(dev, 23, 0);
7479  msleep(10);
7480  saa7134_set_gpio(dev, 23, 1);
7482  break;
7484  saa7134_set_gpio(dev, 23, 0);
7485  msleep(10);
7486  saa7134_set_gpio(dev, 23, 1);
7487  break;
7489  saa7134_set_gpio(dev, 21, 0);
7490  msleep(10);
7491  saa7134_set_gpio(dev, 21, 1);
7492  msleep(1);
7494  break;
7496  /* power-down tuner chip */
7497  saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x000A8004, 0x000A8004);
7498  saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x000A8004, 0);
7499  msleep(10);
7500  /* power-up tuner chip */
7501  saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x000A8004, 0x000A8004);
7502  saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x000A8004, 0x000A8004);
7503  msleep(10);
7504  /* remote via GPIO */
7506  break;
7508 
7509  /*
7510  * Make sure Production Test Register at offset 0x1D1 is cleared
7511  * to take chip out of test mode. Clearing bit 4 (TST_EN_AOUT)
7512  * prevents pin 105 from remaining low; keeping pin 105 low
7513  * continually resets the SAA6752 chip.
7514  */
7515 
7517  break;
7521  /* GPIO 26 high for digital, low for analog */
7522  saa7134_set_gpio(dev, 26, 0);
7523  msleep(1);
7524 
7525  saa7134_set_gpio(dev, 22, 0);
7526  msleep(10);
7527  saa7134_set_gpio(dev, 22, 1);
7528  break;
7529  /* i2c remotes */
7552  break;
7554  printk("%s: %s: dual saa713x broadcast decoders\n"
7555  "%s: Sorry, none of the inputs to this chip are supported yet.\n"
7556  "%s: Dual decoder functionality is disabled for now, use the other chip.\n",
7557  dev->name,card(dev).name,dev->name,dev->name);
7558  break;
7560  /* enable tuner */
7562  saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x8c040007, 0x8c040007);
7563  saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x0c0007cd, 0x0c0007cd);
7564  break;
7567  /* write windows gpio values */
7568  saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x80040100, 0x80040100);
7569  saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x80040100, 0x00040100);
7570  break;
7573  saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x0000C000, 0x0000C000);
7574  saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x0000C000, 0x0000C000);
7575  break;
7577  saa7134_set_gpio(dev, 1, 1);
7578  msleep(10);
7579  saa7134_set_gpio(dev, 1, 0);
7580  msleep(10);
7581  saa7134_set_gpio(dev, 1, 1);
7583  break;
7585  /* enable LGS-8G75 */
7586  saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x0e050000, 0x0c050000);
7587  saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x0e050000, 0x0c050000);
7588  break;
7590  /* enable the analog tuner */
7591  saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x00008000, 0x00008000);
7592  saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00008000, 0x00008000);
7593  break;
7594  }
7595  return 0;
7596 }
7597 
7598 static void saa7134_tuner_setup(struct saa7134_dev *dev)
7599 {
7600  struct tuner_setup tun_setup;
7601  unsigned int mode_mask = T_RADIO | T_ANALOG_TV;
7602 
7603  memset(&tun_setup, 0, sizeof(tun_setup));
7604  tun_setup.tuner_callback = saa7134_tuner_callback;
7605 
7606  if (saa7134_boards[dev->board].radio_type != UNSET) {
7607  tun_setup.type = saa7134_boards[dev->board].radio_type;
7608  tun_setup.addr = saa7134_boards[dev->board].radio_addr;
7609 
7610  tun_setup.mode_mask = T_RADIO;
7611 
7612  saa_call_all(dev, tuner, s_type_addr, &tun_setup);
7613  mode_mask &= ~T_RADIO;
7614  }
7615 
7616  if ((dev->tuner_type != TUNER_ABSENT) && (dev->tuner_type != UNSET)) {
7617  tun_setup.type = dev->tuner_type;
7618  tun_setup.addr = dev->tuner_addr;
7619  tun_setup.config = saa7134_boards[dev->board].tuner_config;
7620  tun_setup.tuner_callback = saa7134_tuner_callback;
7621 
7622  tun_setup.mode_mask = mode_mask;
7623 
7624  saa_call_all(dev, tuner, s_type_addr, &tun_setup);
7625  }
7626 
7627  if (dev->tda9887_conf) {
7628  struct v4l2_priv_tun_config tda9887_cfg;
7629 
7630  tda9887_cfg.tuner = TUNER_TDA9887;
7631  tda9887_cfg.priv = &dev->tda9887_conf;
7632 
7633  saa_call_all(dev, tuner, s_config, &tda9887_cfg);
7634  }
7635 
7636  if (dev->tuner_type == TUNER_XC2028) {
7637  struct v4l2_priv_tun_config xc2028_cfg;
7638  struct xc2028_ctrl ctl;
7639 
7640  memset(&xc2028_cfg, 0, sizeof(xc2028_cfg));
7641  memset(&ctl, 0, sizeof(ctl));
7642 
7643  ctl.fname = XC2028_DEFAULT_FIRMWARE;
7644  ctl.max_len = 64;
7645 
7646  switch (dev->board) {
7651  ctl.demod = XC3028_FE_ZARLINK456;
7652  break;
7653  default:
7654  ctl.demod = XC3028_FE_OREN538;
7655  ctl.mts = 1;
7656  }
7657 
7658  xc2028_cfg.tuner = TUNER_XC2028;
7659  xc2028_cfg.priv = &ctl;
7660 
7661  saa_call_all(dev, tuner, s_config, &xc2028_cfg);
7662  }
7663 }
7664 
7665 /* stuff which needs working i2c */
7667 {
7668  unsigned char buf;
7669  int board;
7670 
7671  /* Put here the code that enables the chips that are needed
7672  for analog mode and doesn't depend on the tuner attachment.
7673  It is also a good idea to get tuner type from eeprom, etc before
7674  initializing tuner, since we can avoid loading tuner driver
7675  on devices that has TUNER_ABSENT
7676  */
7677  switch (dev->board) {
7680  /* Checks if the device has a tuner at 0x60 addr
7681  If the device doesn't have a tuner, TUNER_ABSENT
7682  will be used at tuner_type, avoiding loading tuner
7683  without needing it
7684  */
7685  dev->i2c_client.addr = 0x60;
7686  board = (i2c_master_recv(&dev->i2c_client, &buf, 0) < 0)
7689  if (board == dev->board)
7690  break;
7691  dev->board = board;
7692  printk("%s: board type fixup: %s\n", dev->name,
7693  saa7134_boards[dev->board].name);
7694  dev->tuner_type = saa7134_boards[dev->board].tuner_type;
7695 
7696  break;
7697  case SAA7134_BOARD_MD7134:
7698  {
7699  u8 subaddr;
7700  u8 data[3];
7701  int ret, tuner_t;
7702  struct i2c_msg msg[] = {{.addr=0x50, .flags=0, .buf=&subaddr, .len = 1},
7703  {.addr=0x50, .flags=I2C_M_RD, .buf=data, .len = 3}};
7704 
7705  subaddr= 0x14;
7706  tuner_t = 0;
7707 
7708  /* Retrieve device data from eeprom, checking for the
7709  proper tuner_type.
7710  */
7711  ret = i2c_transfer(&dev->i2c_adap, msg, 2);
7712  if (ret != 2) {
7713  printk(KERN_ERR "EEPROM read failure\n");
7714  } else if ((data[0] != 0) && (data[0] != 0xff)) {
7715  /* old config structure */
7716  subaddr = data[0] + 2;
7717  msg[1].len = 2;
7718  i2c_transfer(&dev->i2c_adap, msg, 2);
7719  tuner_t = (data[0] << 8) + data[1];
7720  switch (tuner_t){
7721  case 0x0103:
7722  dev->tuner_type = TUNER_PHILIPS_PAL;
7723  break;
7724  case 0x010C:
7725  dev->tuner_type = TUNER_PHILIPS_FM1216ME_MK3;
7726  break;
7727  default:
7728  printk(KERN_ERR "%s Can't determine tuner type %x from EEPROM\n", dev->name, tuner_t);
7729  }
7730  } else if ((data[1] != 0) && (data[1] != 0xff)) {
7731  /* new config structure */
7732  subaddr = data[1] + 1;
7733  msg[1].len = 1;
7734  i2c_transfer(&dev->i2c_adap, msg, 2);
7735  subaddr = data[0] + 1;
7736  msg[1].len = 2;
7737  i2c_transfer(&dev->i2c_adap, msg, 2);
7738  tuner_t = (data[1] << 8) + data[0];
7739  switch (tuner_t) {
7740  case 0x0005:
7741  dev->tuner_type = TUNER_PHILIPS_FM1216ME_MK3;
7742  break;
7743  case 0x001d:
7744  dev->tuner_type = TUNER_PHILIPS_FMD1216ME_MK3;
7745  printk(KERN_INFO "%s Board has DVB-T\n", dev->name);
7746  break;
7747  default:
7748  printk(KERN_ERR "%s Can't determine tuner type %x from EEPROM\n", dev->name, tuner_t);
7749  }
7750  } else {
7751  printk(KERN_ERR "%s unexpected config structure\n", dev->name);
7752  }
7753 
7754  printk(KERN_INFO "%s Tuner type is %d\n", dev->name, dev->tuner_type);
7755  break;
7756  }
7758  if (dev->autodetected && (dev->eedata[0x41] == 0x1c)) {
7759  /* Reconfigure board as Snake reference design */
7761  dev->tuner_type = saa7134_boards[dev->board].tuner_type;
7762  printk(KERN_INFO "%s: Reconfigured board as %s\n",
7763  dev->name, saa7134_boards[dev->board].name);
7764  break;
7765  }
7766  /* break intentionally omitted */
7771  {
7772 
7773  /* The Philips EUROPA based hybrid boards have the tuner
7774  connected through the channel decoder. We have to make it
7775  transparent to find it
7776  */
7777  u8 data[] = { 0x07, 0x02};
7778  struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
7779  i2c_transfer(&dev->i2c_adap, &msg, 1);
7780 
7781  break;
7782  }
7785  {
7786  u8 data[] = { 0x3c, 0x33, 0x60};
7787  struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
7788  if (dev->autodetected && (dev->eedata[0x49] == 0x50)) {
7790  printk(KERN_INFO "%s: Reconfigured board as %s\n",
7791  dev->name, saa7134_boards[dev->board].name);
7792  }
7793  if (dev->board == SAA7134_BOARD_PHILIPS_TIGER_S) {
7794  dev->tuner_type = TUNER_PHILIPS_TDA8290;
7795 
7796  data[2] = 0x68;
7797  i2c_transfer(&dev->i2c_adap, &msg, 1);
7798  break;
7799  }
7800  i2c_transfer(&dev->i2c_adap, &msg, 1);
7801  break;
7802  }
7804  /* The card below is detected as card=53, but is different */
7805  if (dev->autodetected && (dev->eedata[0x27] == 0x03)) {
7807  printk(KERN_INFO "%s: P7131 analog only, using "
7808  "entry of %s\n",
7809  dev->name, saa7134_boards[dev->board].name);
7810 
7811  /* IR init has already happened for other cards, so
7812  * we have to catch up. */
7814  saa7134_input_init1(dev);
7815  }
7816  break;
7819  hauppauge_eeprom(dev, dev->eedata+0x80);
7820  break;
7822  hauppauge_eeprom(dev, dev->eedata+0x80);
7823  /* break intentionally omitted */
7834  {
7835  /* this is a hybrid board, initialize to analog mode
7836  * and configure firmware eeprom address
7837  */
7838  u8 data[] = { 0x3c, 0x33, 0x60};
7839  struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
7840  i2c_transfer(&dev->i2c_adap, &msg, 1);
7841  break;
7842  }
7844  {
7845  u8 data[] = { 0x3c, 0x33, 0x60};
7846  struct i2c_msg msg = {.addr = 0x0b, .flags = 0, .buf = data,
7847  .len = sizeof(data)};
7848  i2c_transfer(&dev->i2c_adap, &msg, 1);
7849  break;
7850  }
7852  {
7853  u8 data[] = { 0x3c, 0x33, 0x60};
7854  struct i2c_msg msg = {.addr = 0x0b, .flags = 0, .buf = data,
7855  .len = sizeof(data)};
7856  i2c_transfer(&dev->i2c_adap, &msg, 1);
7857  break;
7858  }
7860  {
7861  u8 temp = 0;
7862  int rc;
7863  u8 data[] = { 0x3c, 0x33, 0x62};
7864  struct i2c_msg msg = {.addr=0x09, .flags=0, .buf=data, .len = sizeof(data)};
7865  i2c_transfer(&dev->i2c_adap, &msg, 1);
7866 
7867  /*
7868  * send weak up message to pic16C505 chip
7869  * @ LifeView FlyDVB Trio
7870  */
7871  msg.buf = &temp;
7872  msg.addr = 0x0b;
7873  msg.len = 1;
7874  if (1 != i2c_transfer(&dev->i2c_adap, &msg, 1)) {
7875  printk(KERN_WARNING "%s: send wake up byte to pic16C505"
7876  "(IR chip) failed\n", dev->name);
7877  } else {
7878  msg.flags = I2C_M_RD;
7879  rc = i2c_transfer(&dev->i2c_adap, &msg, 1);
7880  printk(KERN_INFO "%s: probe IR chip @ i2c 0x%02x: %s\n",
7881  dev->name, msg.addr,
7882  (1 == rc) ? "yes" : "no");
7883  if (rc == 1)
7885  }
7886  break;
7887  }
7890  {
7891  /* initialize analog mode */
7892  u8 data[] = { 0x3c, 0x33, 0x6a};
7893  struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
7894  i2c_transfer(&dev->i2c_adap, &msg, 1);
7895  break;
7896  }
7899  {
7900  /* initialize analog mode */
7901  u8 data[] = { 0x3c, 0x33, 0x68};
7902  struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
7903  i2c_transfer(&dev->i2c_adap, &msg, 1);
7904  break;
7905  }
7908  /* The T200 and the T200A share the same pci id. Consequently,
7909  * we are going to query eeprom to try to find out which one we
7910  * are actually looking at. */
7911 
7912  /* Don't do this if the board was specifically selected with an
7913  * insmod option or if we have the default configuration T200*/
7914  if (!dev->autodetected || (dev->eedata[0x41] == 0xd0))
7915  break;
7916  if (dev->eedata[0x41] == 0x02) {
7917  /* Reconfigure board as T200A */
7919  dev->tuner_type = saa7134_boards[dev->board].tuner_type;
7920  dev->tda9887_conf = saa7134_boards[dev->board].tda9887_conf;
7921  printk(KERN_INFO "%s: Reconfigured board as %s\n",
7922  dev->name, saa7134_boards[dev->board].name);
7923  } else {
7924  printk(KERN_WARNING "%s: Unexpected tuner type info: %x in eeprom\n",
7925  dev->name, dev->eedata[0x41]);
7926  break;
7927  }
7928  break;
7931  {
7932  struct i2c_msg msg = { .addr = 0x0a, .flags = 0 };
7933  int i;
7934  static u8 buffer[][2] = {
7935  { 0x10, 0x12 },
7936  { 0x13, 0x04 },
7937  { 0x16, 0x00 },
7938  { 0x14, 0x04 },
7939  { 0x17, 0x00 },
7940  };
7941 
7942  for (i = 0; i < ARRAY_SIZE(buffer); i++) {
7943  msg.buf = &buffer[i][0];
7944  msg.len = ARRAY_SIZE(buffer[0]);
7945  if (i2c_transfer(&dev->i2c_adap, &msg, 1) != 1)
7947  "%s: Unable to enable tuner(%i).\n",
7948  dev->name, i);
7949  }
7950  break;
7951  }
7953  {
7954  u8 data[] = { 0x09, 0x9f, 0x86, 0x11};
7955  struct i2c_msg msg = {.addr = 0x61, .flags = 0, .buf = data,
7956  .len = sizeof(data)};
7957 
7958  /* The tuner TUNER_PHILIPS_FMD1216MEX_MK3 after hardware */
7959  /* start has disabled IF and enabled DVB-T. When saa7134 */
7960  /* scan I2C devices it not detect IF tda9887 and can`t */
7961  /* watch TV without software reboot. For solve this problem */
7962  /* switch the tuner to analog TV mode manually. */
7963  if (i2c_transfer(&dev->i2c_adap, &msg, 1) != 1)
7965  "%s: Unable to enable IF of the tuner.\n",
7966  dev->name);
7967  break;
7968  }
7970  saa_writel(SAA7134_GPIO_GPMODE0 >> 2, 0x4000);
7971  saa_writel(SAA7134_GPIO_GPSTATUS0 >> 2, 0x4000);
7972 
7973  saa7134_set_gpio(dev, 27, 0);
7974  break;
7975  } /* switch() */
7976 
7977  /* initialize tuner */
7978  if (TUNER_ABSENT != dev->tuner_type) {
7979  int has_demod = (dev->tda9887_conf & TDA9887_PRESENT);
7980 
7981  /* Note: radio tuner address is always filled in,
7982  so we do not need to probe for a radio tuner device. */
7983  if (dev->radio_type != UNSET)
7985  &dev->i2c_adap, "tuner",
7986  dev->radio_addr, NULL);
7987  if (has_demod)
7989  &dev->i2c_adap, "tuner",
7991  if (dev->tuner_addr == ADDR_UNSET) {
7992  enum v4l2_i2c_tuner_type type =
7993  has_demod ? ADDRS_TV_WITH_DEMOD : ADDRS_TV;
7994 
7996  &dev->i2c_adap, "tuner",
7997  0, v4l2_i2c_tuner_addrs(type));
7998  } else {
8000  &dev->i2c_adap, "tuner",
8001  dev->tuner_addr, NULL);
8002  }
8003  }
8004 
8005  saa7134_tuner_setup(dev);
8006 
8007  switch (dev->board) {
8010  {
8011  struct v4l2_priv_tun_config tea5767_cfg;
8012  struct tea5767_ctrl ctl;
8013 
8014  dev->i2c_client.addr = 0xC0;
8015  /* set TEA5767(analog FM) defines */
8016  memset(&ctl, 0, sizeof(ctl));
8018  tea5767_cfg.tuner = TUNER_TEA5767;
8019  tea5767_cfg.priv = &ctl;
8020  saa_call_all(dev, tuner, s_config, &tea5767_cfg);
8021  break;
8022  }
8023  } /* switch() */
8024 
8025  return 0;
8026 }