3 * device driver for philips saa7134 based TV cards
6 * (c) 2001-04 Gerd Knorr <kraxel@bytesex.org> [SuSE Labs]
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.
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.
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.
23 #include <linux/init.h>
24 #include <linux/module.h>
26 #include "saa7134-reg.h"
28 #include <media/v4l2-common.h>
29 #include <media/tveeprom.h>
31 /* commly used strings */
32 static char name_mute
[] = "mute";
33 static char name_radio
[] = "Radio";
34 static char name_tv
[] = "Television";
35 static char name_tv_mono
[] = "TV (mono only)";
36 static char name_comp
[] = "Composite";
37 static char name_comp1
[] = "Composite1";
38 static char name_comp2
[] = "Composite2";
39 static char name_comp3
[] = "Composite3";
40 static char name_comp4
[] = "Composite4";
41 static char name_svideo
[] = "S-Video";
43 /* ------------------------------------------------------------------ */
44 /* board config info */
46 struct saa7134_board saa7134_boards
[] = {
47 [SAA7134_BOARD_UNKNOWN
] = {
48 .name
= "UNKNOWN/GENERIC",
49 .audio_clock
= 0x00187de7,
50 .tuner_type
= TUNER_ABSENT
,
52 .tuner_addr
= ADDR_UNSET
,
53 .radio_addr
= ADDR_UNSET
,
61 [SAA7134_BOARD_PROTEUS_PRO
] = {
63 .name
= "Proteus Pro [philips reference design]",
64 .audio_clock
= 0x00187de7,
65 .tuner_type
= TUNER_PHILIPS_PAL
,
67 .tuner_addr
= ADDR_UNSET
,
68 .radio_addr
= ADDR_UNSET
,
90 [SAA7134_BOARD_FLYVIDEO3000
] = {
91 /* "Marco d'Itri" <md@Linux.IT> */
92 .name
= "LifeView FlyVIDEO3000",
93 .audio_clock
= 0x00200000,
94 .tuner_type
= TUNER_PHILIPS_PAL
,
96 .tuner_addr
= ADDR_UNSET
,
97 .radio_addr
= ADDR_UNSET
,
107 .name
= name_tv_mono
,
139 [SAA7134_BOARD_FLYVIDEO2000
] = {
140 /* "TC Wan" <tcwan@cs.usm.my> */
141 .name
= "LifeView/Typhoon FlyVIDEO2000",
142 .audio_clock
= 0x00200000,
143 .tuner_type
= TUNER_LG_PAL_NEW_TAPC
,
145 .tuner_addr
= ADDR_UNSET
,
146 .radio_addr
= ADDR_UNSET
,
182 [SAA7134_BOARD_FLYTVPLATINUM_MINI
] = {
183 /* "Arnaud Quette" <aquette@free.fr> */
184 .name
= "LifeView FlyTV Platinum Mini",
185 .audio_clock
= 0x00200000,
186 .tuner_type
= TUNER_PHILIPS_TDA8290
,
188 .tuner_addr
= ADDR_UNSET
,
189 .radio_addr
= ADDR_UNSET
,
197 .name
= name_comp1
, /* Composite signal on S-Video input */
201 .name
= name_comp2
, /* Composite input */
210 [SAA7134_BOARD_FLYTVPLATINUM_FM
] = {
211 /* LifeView FlyTV Platinum FM (LR214WF) */
212 /* "Peter Missel <peter.missel@onlinehome.de> */
213 .name
= "LifeView FlyTV Platinum FM / Gold",
214 .audio_clock
= 0x00200000,
215 .tuner_type
= TUNER_PHILIPS_TDA8290
,
217 .tuner_addr
= ADDR_UNSET
,
218 .radio_addr
= ADDR_UNSET
,
220 .gpiomask
= 0x1E000, /* Set GP16 and unused 15,14,13 to Output */
225 .gpio
= 0x10000, /* GP16=1 selects TV input */
228 /* .name = name_tv_mono,
234 */ .name
= name_comp1
, /* Composite signal on S-Video input */
237 /* .gpio = 0x4000, */
239 .name
= name_comp2
, /* Composite input */
242 /* .gpio = 0x4000, */
244 .name
= name_svideo
, /* S-Video signal on S-Video input */
247 /* .gpio = 0x4000, */
252 .gpio
= 0x00000, /* GP16=0 selects FM radio antenna */
260 [SAA7134_BOARD_EMPRESS
] = {
261 /* "Gert Vervoort" <gert.vervoort@philips.com> */
263 .audio_clock
= 0x00187de7,
264 .tuner_type
= TUNER_PHILIPS_PAL
,
266 .tuner_addr
= ADDR_UNSET
,
267 .radio_addr
= ADDR_UNSET
,
287 .mpeg
= SAA7134_MPEG_EMPRESS
,
288 .video_out
= CCIR656
,
290 [SAA7134_BOARD_MONSTERTV
] = {
291 /* "K.Ohta" <alpha292@bremen.or.jp> */
292 .name
= "SKNet Monster TV",
293 .audio_clock
= 0x00187de7,
294 .tuner_type
= TUNER_PHILIPS_NTSC_M
,
296 .tuner_addr
= ADDR_UNSET
,
297 .radio_addr
= ADDR_UNSET
,
318 [SAA7134_BOARD_MD9717
] = {
319 .name
= "Tevion MD 9717",
320 .audio_clock
= 0x00200000,
321 .tuner_type
= TUNER_PHILIPS_PAL
,
323 .tuner_addr
= ADDR_UNSET
,
324 .radio_addr
= ADDR_UNSET
,
331 /* workaround for problems with normal TV sound */
332 .name
= name_tv_mono
,
354 [SAA7134_BOARD_TVSTATION_RDS
] = {
355 /* Typhoon TV Tuner RDS: Art.Nr. 50694 */
356 .name
= "KNC One TV-Station RDS / Typhoon TV Tuner RDS",
357 .audio_clock
= 0x00200000,
358 .tuner_type
= TUNER_PHILIPS_FM1216ME_MK3
,
360 .tuner_addr
= ADDR_UNSET
,
361 .radio_addr
= ADDR_UNSET
,
362 .tda9887_conf
= TDA9887_PRESENT
,
369 .name
= name_tv_mono
,
384 .name
= "CVid over SVid",
393 [SAA7134_BOARD_TVSTATION_DVR
] = {
394 .name
= "KNC One TV-Station DVR",
395 .audio_clock
= 0x00200000,
396 .tuner_type
= TUNER_PHILIPS_FM1216ME_MK3
,
398 .tuner_addr
= ADDR_UNSET
,
399 .radio_addr
= ADDR_UNSET
,
400 .tda9887_conf
= TDA9887_PRESENT
,
401 .gpiomask
= 0x820000,
424 .mpeg
= SAA7134_MPEG_EMPRESS
,
425 .video_out
= CCIR656
,
427 [SAA7134_BOARD_CINERGY400
] = {
428 .name
= "Terratec Cinergy 400 TV",
429 .audio_clock
= 0x00200000,
430 .tuner_type
= TUNER_PHILIPS_PAL
,
432 .tuner_addr
= ADDR_UNSET
,
433 .radio_addr
= ADDR_UNSET
,
448 .name
= name_comp2
, /* CVideo over SVideo Connector */
453 [SAA7134_BOARD_MD5044
] = {
454 .name
= "Medion 5044",
455 .audio_clock
= 0x00187de7, /* was: 0x00200000, */
456 .tuner_type
= TUNER_PHILIPS_FM1216ME_MK3
,
458 .tuner_addr
= ADDR_UNSET
,
459 .radio_addr
= ADDR_UNSET
,
460 .tda9887_conf
= TDA9887_PRESENT
,
467 /* workaround for problems with normal TV sound */
468 .name
= name_tv_mono
,
490 [SAA7134_BOARD_KWORLD
] = {
491 .name
= "Kworld/KuroutoShikou SAA7130-TVPCI",
492 .audio_clock
= 0x00187de7,
493 .tuner_type
= TUNER_PHILIPS_NTSC_M
,
495 .tuner_addr
= ADDR_UNSET
,
496 .radio_addr
= ADDR_UNSET
,
512 [SAA7134_BOARD_CINERGY600
] = {
513 .name
= "Terratec Cinergy 600 TV",
514 .audio_clock
= 0x00200000,
515 .tuner_type
= TUNER_PHILIPS_PAL
,
517 .tuner_addr
= ADDR_UNSET
,
518 .radio_addr
= ADDR_UNSET
,
519 .tda9887_conf
= TDA9887_PRESENT
,
534 .name
= name_comp2
, /* CVideo over SVideo Connector */
543 [SAA7134_BOARD_MD7134
] = {
544 .name
= "Medion 7134",
545 .audio_clock
= 0x00187de7,
546 .tuner_type
= TUNER_PHILIPS_FMD1216ME_MK3
,
548 .tuner_addr
= ADDR_UNSET
,
549 .radio_addr
= ADDR_UNSET
,
550 .tda9887_conf
= TDA9887_PRESENT
,
551 .mpeg
= SAA7134_MPEG_DVB
,
571 [SAA7134_BOARD_TYPHOON_90031
] = {
572 /* aka Typhoon "TV+Radio", Art.Nr 90031 */
573 /* Tom Zoerner <tomzo at users sourceforge net> */
574 .name
= "Typhoon TV+Radio 90031",
575 .audio_clock
= 0x00200000,
576 .tuner_type
= TUNER_PHILIPS_PAL
,
578 .tuner_addr
= ADDR_UNSET
,
579 .radio_addr
= ADDR_UNSET
,
580 .tda9887_conf
= TDA9887_PRESENT
,
600 [SAA7134_BOARD_ELSA
] = {
601 .name
= "ELSA EX-VISION 300TV",
602 .audio_clock
= 0x00187de7,
603 .tuner_type
= TUNER_HITACHI_NTSC
,
605 .tuner_addr
= ADDR_UNSET
,
606 .radio_addr
= ADDR_UNSET
,
622 [SAA7134_BOARD_ELSA_500TV
] = {
623 .name
= "ELSA EX-VISION 500TV",
624 .audio_clock
= 0x00187de7,
625 .tuner_type
= TUNER_HITACHI_NTSC
,
627 .tuner_addr
= ADDR_UNSET
,
628 .radio_addr
= ADDR_UNSET
,
639 .name
= name_tv_mono
,
645 [SAA7134_BOARD_ELSA_700TV
] = {
646 .name
= "ELSA EX-VISION 700TV",
647 .audio_clock
= 0x00187de7,
648 .tuner_type
= TUNER_HITACHI_NTSC
,
650 .tuner_addr
= ADDR_UNSET
,
651 .radio_addr
= ADDR_UNSET
,
671 [SAA7134_BOARD_ASUSTeK_TVFM7134
] = {
672 .name
= "ASUS TV-FM 7134",
673 .audio_clock
= 0x00187de7,
674 .tuner_type
= TUNER_PHILIPS_FM1216ME_MK3
,
676 .tuner_addr
= ADDR_UNSET
,
677 .radio_addr
= ADDR_UNSET
,
678 .tda9887_conf
= TDA9887_PRESENT
,
698 [SAA7134_BOARD_ASUSTeK_TVFM7135
] = {
699 .name
= "ASUS TV-FM 7135",
700 .audio_clock
= 0x00187de7,
701 .tuner_type
= TUNER_PHILIPS_TDA8290
,
703 .tuner_addr
= ADDR_UNSET
,
704 .radio_addr
= ADDR_UNSET
,
705 .gpiomask
= 0x200000,
734 [SAA7134_BOARD_VA1000POWER
] = {
735 .name
= "AOPEN VA1000 POWER",
736 .audio_clock
= 0x00187de7,
737 .tuner_type
= TUNER_PHILIPS_NTSC
,
739 .tuner_addr
= ADDR_UNSET
,
740 .radio_addr
= ADDR_UNSET
,
756 [SAA7134_BOARD_10MOONSTVMASTER
] = {
757 /* "lilicheng" <llc@linuxfans.org> */
758 .name
= "10MOONS PCI TV CAPTURE CARD",
759 .audio_clock
= 0x00200000,
760 .tuner_type
= TUNER_LG_PAL_NEW_TAPC
,
762 .tuner_addr
= ADDR_UNSET
,
763 .radio_addr
= ADDR_UNSET
,
798 [SAA7134_BOARD_BMK_MPEX_NOTUNER
] = {
799 /* "Andrew de Quincey" <adq@lidskialf.net> */
800 .name
= "BMK MPEX No Tuner",
801 .audio_clock
= 0x200000,
802 .tuner_type
= TUNER_ABSENT
,
804 .tuner_addr
= ADDR_UNSET
,
805 .radio_addr
= ADDR_UNSET
,
827 .mpeg
= SAA7134_MPEG_EMPRESS
,
828 .video_out
= CCIR656
,
830 [SAA7134_BOARD_VIDEOMATE_TV
] = {
831 .name
= "Compro VideoMate TV",
832 .audio_clock
= 0x00187de7,
833 .tuner_type
= TUNER_PHILIPS_NTSC_M
,
835 .tuner_addr
= ADDR_UNSET
,
836 .radio_addr
= ADDR_UNSET
,
852 [SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUS
] = {
853 .name
= "Compro VideoMate TV Gold+",
854 .audio_clock
= 0x00187de7,
855 .tuner_type
= TUNER_PHILIPS_NTSC_M
,
856 .gpiomask
= 0x800c0000,
858 .tuner_addr
= ADDR_UNSET
,
859 .radio_addr
= ADDR_UNSET
,
876 }}, /* radio and probably mute is missing */
878 [SAA7134_BOARD_CRONOS_PLUS
] = {
887 .name
= "Matrox CronosPlus",
888 .tuner_type
= TUNER_ABSENT
,
890 .tuner_addr
= ADDR_UNSET
,
891 .radio_addr
= ADDR_UNSET
,
915 [SAA7134_BOARD_MD2819
] = {
916 .name
= "AverMedia M156 / Medion 2819",
917 .audio_clock
= 0x00187de7,
918 .tuner_type
= TUNER_PHILIPS_FM1216ME_MK3
,
920 .tuner_addr
= ADDR_UNSET
,
921 .radio_addr
= ADDR_UNSET
,
922 .tda9887_conf
= TDA9887_PRESENT
,
946 [SAA7134_BOARD_BMK_MPEX_TUNER
] = {
947 /* "Greg Wickham <greg.wickham@grangenet.net> */
948 .name
= "BMK MPEX Tuner",
949 .audio_clock
= 0x200000,
950 .tuner_type
= TUNER_PHILIPS_PAL
,
952 .tuner_addr
= ADDR_UNSET
,
953 .radio_addr
= ADDR_UNSET
,
968 .mpeg
= SAA7134_MPEG_EMPRESS
,
969 .video_out
= CCIR656
,
971 [SAA7134_BOARD_ASUSTEK_TVFM7133
] = {
972 .name
= "ASUS TV-FM 7133",
973 .audio_clock
= 0x00187de7,
974 /* probably wrong, the 7133 one is the NTSC version ...
975 * .tuner_type = TUNER_PHILIPS_FM1236_MK3 */
976 .tuner_type
= TUNER_LG_NTSC_NEW_TAPC
,
978 .tuner_addr
= ADDR_UNSET
,
979 .radio_addr
= ADDR_UNSET
,
980 .tda9887_conf
= TDA9887_PRESENT
,
1001 [SAA7134_BOARD_PINNACLE_PCTV_STEREO
] = {
1002 .name
= "Pinnacle PCTV Stereo (saa7134)",
1003 .audio_clock
= 0x00187de7,
1004 .tuner_type
= TUNER_MT2032
,
1005 .radio_type
= UNSET
,
1006 .tuner_addr
= ADDR_UNSET
,
1007 .radio_addr
= ADDR_UNSET
,
1008 .tda9887_conf
= TDA9887_PRESENT
| TDA9887_INTERCARRIER
| TDA9887_PORT2_INACTIVE
,
1023 .name
= name_svideo
,
1028 [SAA7134_BOARD_MANLI_MTV002
] = {
1029 /* Ognjen Nastic <ognjen@logosoft.ba> */
1030 .name
= "Manli MuchTV M-TV002/Behold TV 403 FM",
1031 .audio_clock
= 0x00200000,
1032 .tuner_type
= TUNER_PHILIPS_PAL
,
1033 .radio_type
= UNSET
,
1034 .tuner_addr
= ADDR_UNSET
,
1035 .radio_addr
= ADDR_UNSET
,
1037 .name
= name_svideo
,
1055 [SAA7134_BOARD_MANLI_MTV001
] = {
1056 /* Ognjen Nastic <ognjen@logosoft.ba> UNTESTED */
1057 .name
= "Manli MuchTV M-TV001/Behold TV 401",
1058 .audio_clock
= 0x00200000,
1059 .tuner_type
= TUNER_PHILIPS_PAL
,
1060 .radio_type
= UNSET
,
1061 .tuner_addr
= ADDR_UNSET
,
1062 .radio_addr
= ADDR_UNSET
,
1064 .name
= name_svideo
,
1082 [SAA7134_BOARD_TG3000TV
] = {
1083 /* TransGear 3000TV */
1084 .name
= "Nagase Sangyo TransGear 3000TV",
1085 .audio_clock
= 0x00187de7,
1086 .tuner_type
= TUNER_PHILIPS_NTSC_M
,
1087 .radio_type
= UNSET
,
1088 .tuner_addr
= ADDR_UNSET
,
1089 .radio_addr
= ADDR_UNSET
,
1100 .name
= name_svideo
,
1105 [SAA7134_BOARD_ECS_TVP3XP
] = {
1106 .name
= "Elitegroup ECS TVP3XP FM1216 Tuner Card(PAL-BG,FM) ",
1107 .audio_clock
= 0x187de7, /* xtal 32.1 MHz */
1108 .tuner_type
= TUNER_PHILIPS_PAL
,
1109 .radio_type
= UNSET
,
1110 .tuner_addr
= ADDR_UNSET
,
1111 .radio_addr
= ADDR_UNSET
,
1118 .name
= name_tv_mono
,
1127 .name
= name_svideo
,
1131 .name
= "CVid over SVid",
1140 [SAA7134_BOARD_ECS_TVP3XP_4CB5
] = {
1141 .name
= "Elitegroup ECS TVP3XP FM1236 Tuner Card (NTSC,FM)",
1142 .audio_clock
= 0x187de7,
1143 .tuner_type
= TUNER_PHILIPS_NTSC
,
1144 .radio_type
= UNSET
,
1145 .tuner_addr
= ADDR_UNSET
,
1146 .radio_addr
= ADDR_UNSET
,
1153 .name
= name_tv_mono
,
1162 .name
= name_svideo
,
1166 .name
= "CVid over SVid",
1175 [SAA7134_BOARD_ECS_TVP3XP_4CB6
] = {
1176 /* Barry Scott <barry.scott@onelan.co.uk> */
1177 .name
= "Elitegroup ECS TVP3XP FM1246 Tuner Card (PAL,FM)",
1178 .audio_clock
= 0x187de7,
1179 .tuner_type
= TUNER_PHILIPS_PAL_I
,
1180 .radio_type
= UNSET
,
1181 .tuner_addr
= ADDR_UNSET
,
1182 .radio_addr
= ADDR_UNSET
,
1189 .name
= name_tv_mono
,
1198 .name
= name_svideo
,
1202 .name
= "CVid over SVid",
1211 [SAA7134_BOARD_AVACSSMARTTV
] = {
1212 /* Roman Pszonczenko <romka@kolos.math.uni.lodz.pl> */
1213 .name
= "AVACS SmartTV",
1214 .audio_clock
= 0x00187de7,
1215 .tuner_type
= TUNER_PHILIPS_PAL
,
1216 .radio_type
= UNSET
,
1217 .tuner_addr
= ADDR_UNSET
,
1218 .radio_addr
= ADDR_UNSET
,
1225 .name
= name_tv_mono
,
1238 .name
= name_svideo
,
1248 [SAA7134_BOARD_AVERMEDIA_DVD_EZMAKER
] = {
1249 /* Michael Smith <msmith@cbnco.com> */
1250 .name
= "AVerMedia DVD EZMaker",
1251 .audio_clock
= 0x00187de7,
1252 .tuner_type
= TUNER_ABSENT
,
1253 .radio_type
= UNSET
,
1254 .tuner_addr
= ADDR_UNSET
,
1255 .radio_addr
= ADDR_UNSET
,
1260 .name
= name_svideo
,
1264 [SAA7134_BOARD_NOVAC_PRIMETV7133
] = {
1265 /* toshii@netbsd.org */
1266 .name
= "Noval Prime TV 7133",
1267 .audio_clock
= 0x00200000,
1268 .tuner_type
= TUNER_ALPS_TSBH1_NTSC
,
1269 .radio_type
= UNSET
,
1270 .tuner_addr
= ADDR_UNSET
,
1271 .radio_addr
= ADDR_UNSET
,
1281 .name
= name_svideo
,
1285 [SAA7134_BOARD_AVERMEDIA_STUDIO_305
] = {
1286 .name
= "AverMedia AverTV Studio 305",
1287 .audio_clock
= 0x00187de7,
1288 .tuner_type
= TUNER_PHILIPS_FM1256_IH3
,
1289 .radio_type
= UNSET
,
1290 .tuner_addr
= ADDR_UNSET
,
1291 .radio_addr
= ADDR_UNSET
,
1292 .tda9887_conf
= TDA9887_PRESENT
,
1307 .name
= name_svideo
,
1320 [SAA7134_BOARD_UPMOST_PURPLE_TV
] = {
1321 .name
= "UPMOST PURPLE TV",
1322 .audio_clock
= 0x00187de7,
1323 .tuner_type
= TUNER_PHILIPS_FM1236_MK3
,
1324 .radio_type
= UNSET
,
1325 .tuner_addr
= ADDR_UNSET
,
1326 .radio_addr
= ADDR_UNSET
,
1327 .tda9887_conf
= TDA9887_PRESENT
,
1334 .name
= name_svideo
,
1339 [SAA7134_BOARD_ITEMS_MTV005
] = {
1340 /* Norman Jonas <normanjonas@arcor.de> */
1341 .name
= "Items MuchTV Plus / IT-005",
1342 .audio_clock
= 0x00187de7,
1343 .tuner_type
= TUNER_PHILIPS_PAL
,
1344 .radio_type
= UNSET
,
1345 .tuner_addr
= ADDR_UNSET
,
1346 .radio_addr
= ADDR_UNSET
,
1357 .name
= name_svideo
,
1366 [SAA7134_BOARD_CINERGY200
] = {
1367 .name
= "Terratec Cinergy 200 TV",
1368 .audio_clock
= 0x00200000,
1369 .tuner_type
= TUNER_PHILIPS_PAL
,
1370 .radio_type
= UNSET
,
1371 .tuner_addr
= ADDR_UNSET
,
1372 .radio_addr
= ADDR_UNSET
,
1383 .name
= name_svideo
,
1387 .name
= name_comp2
, /* CVideo over SVideo Connector */
1396 [SAA7134_BOARD_VIDEOMATE_TV_PVR
] = {
1397 /* Alain St-Denis <alain@topaze.homeip.net> */
1398 .name
= "Compro VideoMate TV PVR/FM",
1399 .audio_clock
= 0x00187de7,
1400 .tuner_type
= TUNER_PHILIPS_NTSC_M
,
1401 .radio_type
= UNSET
,
1402 .tuner_addr
= ADDR_UNSET
,
1403 .radio_addr
= ADDR_UNSET
,
1404 .gpiomask
= 0x808c0080,
1406 .name
= name_svideo
,
1433 [SAA7134_BOARD_SABRENT_SBTTVFM
] = {
1434 /* Michael Rodriguez-Torrent <mrtorrent@asu.edu> */
1435 .name
= "Sabrent SBT-TVFM (saa7130)",
1436 .audio_clock
= 0x00187de7,
1437 .tuner_type
= TUNER_PHILIPS_NTSC_M
,
1438 .radio_type
= UNSET
,
1439 .tuner_addr
= ADDR_UNSET
,
1440 .radio_addr
= ADDR_UNSET
,
1451 .name
= name_svideo
,
1460 [SAA7134_BOARD_ZOLID_XPERT_TV7134
] = {
1461 /* Helge Jensen <helge.jensen@slog.dk> */
1462 .name
= ":Zolid Xpert TV7134",
1463 .audio_clock
= 0x00187de7,
1464 .tuner_type
= TUNER_PHILIPS_NTSC
,
1465 .radio_type
= UNSET
,
1466 .tuner_addr
= ADDR_UNSET
,
1467 .radio_addr
= ADDR_UNSET
,
1469 .name
= name_svideo
,
1483 [SAA7134_BOARD_EMPIRE_PCI_TV_RADIO_LE
] = {
1484 /* "Matteo Az" <matte.az@nospam.libero.it> ;-) */
1485 .name
= "Empire PCI TV-Radio LE",
1486 .audio_clock
= 0x00187de7,
1487 .tuner_type
= TUNER_PHILIPS_PAL
,
1488 .radio_type
= UNSET
,
1489 .tuner_addr
= ADDR_UNSET
,
1490 .radio_addr
= ADDR_UNSET
,
1493 .name
= name_tv_mono
,
1504 .name
= name_svideo
,
1520 [SAA7134_BOARD_AVERMEDIA_STUDIO_307
] = {
1522 Nickolay V. Shmyrev <nshmyrev@yandex.ru>
1523 Lots of thanks to Andrey Zolotarev <zolotarev_andrey@mail.ru>
1525 .name
= "Avermedia AVerTV Studio 307",
1526 .audio_clock
= 0x00187de7,
1527 .tuner_type
= TUNER_PHILIPS_FM1256_IH3
,
1528 .radio_type
= UNSET
,
1529 .tuner_addr
= ADDR_UNSET
,
1530 .radio_addr
= ADDR_UNSET
,
1531 .tda9887_conf
= TDA9887_PRESENT
,
1545 .name
= name_svideo
,
1561 [SAA7134_BOARD_AVERMEDIA_GO_007_FM
] = {
1562 .name
= "Avermedia AVerTV GO 007 FM",
1563 .audio_clock
= 0x00187de7,
1564 .tuner_type
= TUNER_PHILIPS_TDA8290
,
1565 .radio_type
= UNSET
,
1566 .tuner_addr
= ADDR_UNSET
,
1567 .radio_addr
= ADDR_UNSET
,
1568 .gpiomask
= 0x00300003,
1569 /* .gpiomask = 0x8c240003, */
1582 .name
= name_svideo
,
1598 [SAA7134_BOARD_AVERMEDIA_CARDBUS
] = {
1599 /* Kees.Blom@cwi.nl */
1600 .name
= "AVerMedia Cardbus TV/Radio (E500)",
1601 .audio_clock
= 0x187de7,
1602 .tuner_type
= TUNER_PHILIPS_TDA8290
,
1603 .radio_type
= UNSET
,
1604 .tuner_addr
= ADDR_UNSET
,
1605 .radio_addr
= ADDR_UNSET
,
1616 .name
= name_svideo
,
1625 [SAA7134_BOARD_CINERGY400_CARDBUS
] = {
1626 .name
= "Terratec Cinergy 400 mobile",
1627 .audio_clock
= 0x187de7,
1628 .tuner_type
= TUNER_ALPS_TSBE5_PAL
,
1629 .radio_type
= UNSET
,
1630 .tuner_addr
= ADDR_UNSET
,
1631 .radio_addr
= ADDR_UNSET
,
1632 .tda9887_conf
= TDA9887_PRESENT
,
1639 .name
= name_tv_mono
,
1648 .name
= name_svideo
,
1653 [SAA7134_BOARD_CINERGY600_MK3
] = {
1654 .name
= "Terratec Cinergy 600 TV MK3",
1655 .audio_clock
= 0x00200000,
1656 .tuner_type
= TUNER_PHILIPS_FM1216ME_MK3
,
1657 .radio_type
= UNSET
,
1658 .tuner_addr
= ADDR_UNSET
,
1659 .radio_addr
= ADDR_UNSET
,
1660 .tda9887_conf
= TDA9887_PRESENT
,
1671 .name
= name_svideo
,
1675 .name
= name_comp2
, /* CVideo over SVideo Connector */
1684 [SAA7134_BOARD_VIDEOMATE_GOLD_PLUS
] = {
1685 /* Dylan Walkden <dylan_walkden@hotmail.com> */
1686 .name
= "Compro VideoMate Gold+ Pal",
1687 .audio_clock
= 0x00187de7,
1688 .tuner_type
= TUNER_PHILIPS_PAL
,
1689 .radio_type
= UNSET
,
1690 .tuner_addr
= ADDR_UNSET
,
1691 .radio_addr
= ADDR_UNSET
,
1692 .gpiomask
= 0x1ce780,
1694 .name
= name_svideo
,
1695 .vmux
= 0, /* CVideo over SVideo Connector - ok? */
1721 [SAA7134_BOARD_PINNACLE_300I_DVBT_PAL
] = {
1722 .name
= "Pinnacle PCTV 300i DVB-T + PAL",
1723 .audio_clock
= 0x00187de7,
1724 .tuner_type
= TUNER_MT2032
,
1725 .radio_type
= UNSET
,
1726 .tuner_addr
= ADDR_UNSET
,
1727 .radio_addr
= ADDR_UNSET
,
1728 .tda9887_conf
= TDA9887_PRESENT
| TDA9887_INTERCARRIER
| TDA9887_PORT2_INACTIVE
,
1729 .mpeg
= SAA7134_MPEG_DVB
,
1744 .name
= name_svideo
,
1749 [SAA7134_BOARD_PROVIDEO_PV952
] = {
1750 /* andreas.kretschmer@web.de */
1751 .name
= "ProVideo PV952",
1752 .audio_clock
= 0x00187de7,
1753 .tuner_type
= TUNER_PHILIPS_FM1216ME_MK3
,
1754 .radio_type
= UNSET
,
1755 .tuner_addr
= ADDR_UNSET
,
1756 .radio_addr
= ADDR_UNSET
,
1757 .tda9887_conf
= TDA9887_PRESENT
,
1768 .name
= name_tv_mono
,
1778 [SAA7134_BOARD_AVERMEDIA_305
] = {
1779 /* much like the "studio" version but without radio
1780 * and another tuner (sirspiritus@yandex.ru) */
1781 .name
= "AverMedia AverTV/305",
1782 .audio_clock
= 0x00187de7,
1783 .tuner_type
= TUNER_PHILIPS_FQ1216ME
,
1784 .radio_type
= UNSET
,
1785 .tuner_addr
= ADDR_UNSET
,
1786 .radio_addr
= ADDR_UNSET
,
1787 .tda9887_conf
= TDA9887_PRESENT
,
1802 .name
= name_svideo
,
1811 [SAA7134_BOARD_FLYDVBTDUO
] = {
1812 /* LifeView FlyDVB-T DUO */
1813 /* "Nico Sabbi <nsabbi@tiscali.it> Hartmut Hackmann hartmut.hackmann@t-online.de*/
1814 .name
= "LifeView FlyDVB-T DUO / MSI TV@nywhere Duo",
1815 .audio_clock
= 0x00200000,
1816 .tuner_type
= TUNER_PHILIPS_TDA8290
,
1817 .radio_type
= UNSET
,
1818 .tuner_addr
= ADDR_UNSET
,
1819 .radio_addr
= ADDR_UNSET
,
1820 .gpiomask
= 0x00200000,
1821 .mpeg
= SAA7134_MPEG_DVB
,
1826 .gpio
= 0x200000, /* GPIO21=High for TV input */
1829 .name
= name_comp1
, /* Composite signal on S-Video input */
1833 .name
= name_comp2
, /* Composite input */
1837 .name
= name_svideo
, /* S-Video signal on S-Video input */
1844 .gpio
= 0x000000, /* GPIO21=Low for FM radio antenna */
1847 [SAA7134_BOARD_PHILIPS_TOUGH
] = {
1848 .name
= "Philips TOUGH DVB-T reference design",
1849 .tuner_type
= TUNER_ABSENT
,
1850 .audio_clock
= 0x00187de7,
1851 .radio_type
= UNSET
,
1852 .tuner_addr
= ADDR_UNSET
,
1853 .radio_addr
= ADDR_UNSET
,
1854 .mpeg
= SAA7134_MPEG_DVB
,
1860 .name
= name_svideo
,
1865 [SAA7134_BOARD_AVERMEDIA_307
] = {
1867 Davydov Vladimir <vladimir@iqmedia.com>
1869 .name
= "Avermedia AVerTV 307",
1870 .audio_clock
= 0x00187de7,
1871 .tuner_type
= TUNER_PHILIPS_FQ1216ME
,
1872 .radio_type
= UNSET
,
1873 .tuner_addr
= ADDR_UNSET
,
1874 .radio_addr
= ADDR_UNSET
,
1875 .tda9887_conf
= TDA9887_PRESENT
,
1890 .name
= name_svideo
,
1895 [SAA7134_BOARD_ADS_INSTANT_TV
] = {
1896 .name
= "ADS Tech Instant TV (saa7135)",
1897 .audio_clock
= 0x00187de7,
1898 .tuner_type
= TUNER_PHILIPS_TDA8290
,
1899 .radio_type
= UNSET
,
1900 .tuner_addr
= ADDR_UNSET
,
1901 .radio_addr
= ADDR_UNSET
,
1912 .name
= name_svideo
,
1917 [SAA7134_BOARD_KWORLD_VSTREAM_XPERT
] = {
1918 .name
= "Kworld/Tevion V-Stream Xpert TV PVR7134",
1919 .audio_clock
= 0x00187de7,
1920 .tuner_type
= TUNER_PHILIPS_PAL_I
,
1921 .radio_type
= UNSET
,
1922 .tuner_addr
= ADDR_UNSET
,
1923 .radio_addr
= ADDR_UNSET
,
1935 .gpio
= 0x200, /* gpio by DScaler */
1937 .name
= name_svideo
,
1953 [SAA7134_BOARD_FLYDVBT_DUO_CARDBUS
] = {
1954 .name
= "LifeView/Typhoon/Genius FlyDVB-T Duo Cardbus",
1955 .audio_clock
= 0x00200000,
1956 .tuner_type
= TUNER_PHILIPS_TDA8290
,
1957 .radio_type
= UNSET
,
1958 .tuner_addr
= ADDR_UNSET
,
1959 .radio_addr
= ADDR_UNSET
,
1960 .mpeg
= SAA7134_MPEG_DVB
,
1961 .gpiomask
= 0x00200000,
1966 .gpio
= 0x200000, /* GPIO21=High for TV input */
1969 .name
= name_svideo
, /* S-Video signal on S-Video input */
1973 .name
= name_comp1
, /* Composite signal on S-Video input */
1977 .name
= name_comp2
, /* Composite input */
1984 .gpio
= 0x000000, /* GPIO21=Low for FM radio antenna */
1987 [SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUSII
] = {
1988 .name
= "Compro VideoMate TV Gold+II",
1989 .audio_clock
= 0x002187de7,
1990 .tuner_type
= TUNER_LG_PAL_NEW_TAPC
,
1991 .radio_type
= TUNER_TEA5767
,
1994 .gpiomask
= 0x8c1880,
1996 .name
= name_svideo
,
2023 [SAA7134_BOARD_KWORLD_XPERT
] = {
2026 - Remote control doesn't initialize properly.
2027 - Audio volume starts muted,
2028 then gradually increases after channel change.
2029 - Overlay scaling problems (application error?)
2030 - Composite S-Video untested.
2031 From: Konrad Rzepecki <hannibal@megapolis.pl>
2033 .name
= "Kworld Xpert TV PVR7134",
2034 .audio_clock
= 0x00187de7,
2035 .tuner_type
= TUNER_TENA_9533_DI
,
2036 .radio_type
= TUNER_TEA5767
,
2050 .gpio
= 0x200, /* gpio by DScaler */
2052 .name
= name_svideo
,
2068 [SAA7134_BOARD_FLYTV_DIGIMATRIX
] = {
2069 .name
= "FlyTV mini Asus Digimatrix",
2070 .audio_clock
= 0x00200000,
2071 .tuner_type
= TUNER_LG_TALN
,
2072 .radio_type
= UNSET
,
2073 .tuner_addr
= ADDR_UNSET
,
2074 .radio_addr
= ADDR_UNSET
,
2081 .name
= name_tv_mono
,
2094 .name
= name_svideo
,
2099 .name
= name_radio
, /* radio unconfirmed */
2103 [SAA7134_BOARD_KWORLD_TERMINATOR
] = {
2104 /* Kworld V-Stream Studio TV Terminator */
2105 /* "James Webb <jrwebb@qwest.net> */
2106 .name
= "V-Stream Studio TV Terminator",
2107 .audio_clock
= 0x00187de7,
2108 .tuner_type
= TUNER_PHILIPS_TDA8290
,
2109 .radio_type
= UNSET
,
2110 .tuner_addr
= ADDR_UNSET
,
2111 .radio_addr
= ADDR_UNSET
,
2112 .gpiomask
= 1 << 21,
2120 .name
= name_comp1
, /* Composite input */
2125 .name
= name_svideo
, /* S-Video input */
2136 [SAA7134_BOARD_YUAN_TUN900
] = {
2138 * S-Video and composite sources untested.
2139 * Radio not working.
2140 * Remote control not yet implemented.
2141 * From : codemaster@webgeeks.be */
2142 .name
= "Yuan TUN-900 (saa7135)",
2143 .audio_clock
= 0x00187de7,
2144 .tuner_type
= TUNER_PHILIPS_TDA8290
,
2145 .radio_type
= UNSET
,
2146 .tuner_addr
= ADDR_UNSET
,
2147 .radio_addr
= ADDR_UNSET
,
2148 .gpiomask
= 0x00010003,
2161 .name
= name_svideo
,
2177 [SAA7134_BOARD_BEHOLD_409FM
] = {
2178 /* <http://tuner.beholder.ru>, Sergey <skiv@orel.ru> */
2179 .name
= "Beholder BeholdTV 409 FM",
2180 .audio_clock
= 0x00187de7,
2181 .tuner_type
= TUNER_PHILIPS_FM1216ME_MK3
,
2182 .radio_type
= UNSET
,
2183 .tuner_addr
= ADDR_UNSET
,
2184 .radio_addr
= ADDR_UNSET
,
2185 .tda9887_conf
= TDA9887_PRESENT
,
2196 .name
= name_svideo
,
2205 [SAA7134_BOARD_GOTVIEW_7135
] = {
2206 /* Mike Baikov <mike@baikov.com> */
2207 /* Andrey Cvetcov <ays14@yandex.ru> */
2208 .name
= "GoTView 7135 PCI",
2209 .audio_clock
= 0x00187de7,
2210 .tuner_type
= TUNER_PHILIPS_FM1216ME_MK3
,
2211 .radio_type
= UNSET
,
2212 .tuner_addr
= ADDR_UNSET
,
2213 .radio_addr
= ADDR_UNSET
,
2214 .tda9887_conf
= TDA9887_PRESENT
,
2215 .gpiomask
= 0x00200003,
2223 .name
= name_tv_mono
,
2233 .name
= name_svideo
,
2249 [SAA7134_BOARD_PHILIPS_EUROPA
] = {
2250 .name
= "Philips EUROPA V3 reference design",
2251 .audio_clock
= 0x00187de7,
2252 .tuner_type
= TUNER_PHILIPS_TD1316
,
2253 .radio_type
= UNSET
,
2255 .radio_addr
= ADDR_UNSET
,
2256 .tda9887_conf
= TDA9887_PRESENT
| TDA9887_PORT1_ACTIVE
,
2257 .mpeg
= SAA7134_MPEG_DVB
,
2268 .name
= name_svideo
,
2273 [SAA7134_BOARD_VIDEOMATE_DVBT_300
] = {
2274 .name
= "Compro Videomate DVB-T300",
2275 .audio_clock
= 0x00187de7,
2276 .tuner_type
= TUNER_PHILIPS_TD1316
,
2277 .radio_type
= UNSET
,
2279 .radio_addr
= ADDR_UNSET
,
2280 .tda9887_conf
= TDA9887_PRESENT
| TDA9887_PORT1_ACTIVE
,
2281 .mpeg
= SAA7134_MPEG_DVB
,
2292 .name
= name_svideo
,
2297 [SAA7134_BOARD_VIDEOMATE_DVBT_200
] = {
2298 .name
= "Compro Videomate DVB-T200",
2299 .tuner_type
= TUNER_ABSENT
,
2300 .audio_clock
= 0x00187de7,
2301 .radio_type
= UNSET
,
2302 .tuner_addr
= ADDR_UNSET
,
2303 .radio_addr
= ADDR_UNSET
,
2304 .mpeg
= SAA7134_MPEG_DVB
,
2310 .name
= name_svideo
,
2315 [SAA7134_BOARD_RTD_VFG7350
] = {
2316 .name
= "RTD Embedded Technologies VFG7350",
2317 .audio_clock
= 0x00200000,
2318 .tuner_type
= TUNER_ABSENT
,
2319 .radio_type
= UNSET
,
2320 .tuner_addr
= ADDR_UNSET
,
2321 .radio_addr
= ADDR_UNSET
,
2323 .name
= "Composite 0",
2327 .name
= "Composite 1",
2331 .name
= "Composite 2",
2335 .name
= "Composite 3",
2339 .name
= "S-Video 0",
2343 .name
= "S-Video 1",
2347 .mpeg
= SAA7134_MPEG_EMPRESS
,
2348 .video_out
= CCIR656
,
2349 .vid_port_opts
= ( SET_T_CODE_POLARITY_NON_INVERTED
|
2350 SET_CLOCK_NOT_DELAYED
|
2351 SET_CLOCK_INVERTED
|
2354 [SAA7134_BOARD_RTD_VFG7330
] = {
2355 .name
= "RTD Embedded Technologies VFG7330",
2356 .audio_clock
= 0x00200000,
2357 .tuner_type
= TUNER_ABSENT
,
2358 .radio_type
= UNSET
,
2359 .tuner_addr
= ADDR_UNSET
,
2360 .radio_addr
= ADDR_UNSET
,
2362 .name
= "Composite 0",
2366 .name
= "Composite 1",
2370 .name
= "Composite 2",
2374 .name
= "Composite 3",
2378 .name
= "S-Video 0",
2382 .name
= "S-Video 1",
2387 [SAA7134_BOARD_FLYTVPLATINUM_MINI2
] = {
2388 .name
= "LifeView FlyTV Platinum Mini2",
2389 .audio_clock
= 0x00200000,
2390 .tuner_type
= TUNER_PHILIPS_TDA8290
,
2391 .radio_type
= UNSET
,
2392 .tuner_addr
= ADDR_UNSET
,
2393 .radio_addr
= ADDR_UNSET
,
2401 .name
= name_comp1
, /* Composite signal on S-Video input */
2405 .name
= name_comp2
, /* Composite input */
2409 .name
= name_svideo
,
2414 [SAA7134_BOARD_AVERMEDIA_AVERTVHD_A180
] = {
2415 /* Michael Krufky <mkrufky@m1k.net>
2416 * Uses Alps Electric TDHU2, containing NXT2004 ATSC Decoder
2417 * AFAIK, there is no analog demod, thus,
2418 * no support for analog television.
2420 .name
= "AVerMedia AVerTVHD MCE A180",
2421 .audio_clock
= 0x00187de7,
2422 .tuner_type
= TUNER_ABSENT
,
2423 .radio_type
= UNSET
,
2424 .tuner_addr
= ADDR_UNSET
,
2425 .radio_addr
= ADDR_UNSET
,
2426 .mpeg
= SAA7134_MPEG_DVB
,
2432 .name
= name_svideo
,
2437 [SAA7134_BOARD_MONSTERTV_MOBILE
] = {
2438 .name
= "SKNet MonsterTV Mobile",
2439 .audio_clock
= 0x00187de7,
2440 .tuner_type
= TUNER_PHILIPS_TDA8290
,
2441 .radio_type
= UNSET
,
2442 .tuner_addr
= ADDR_UNSET
,
2443 .radio_addr
= ADDR_UNSET
,
2455 .name
= name_svideo
,
2460 [SAA7134_BOARD_PINNACLE_PCTV_110i
] = {
2461 .name
= "Pinnacle PCTV 40i/50i/110i (saa7133)",
2462 .audio_clock
= 0x00187de7,
2463 .tuner_type
= TUNER_PHILIPS_TDA8290
,
2464 .radio_type
= UNSET
,
2465 .tuner_addr
= ADDR_UNSET
,
2466 .radio_addr
= ADDR_UNSET
,
2467 .gpiomask
= 0x080200000,
2482 .name
= name_svideo
,
2491 [SAA7134_BOARD_ASUSTeK_P7131_DUAL
] = {
2492 .name
= "ASUSTeK P7131 Dual",
2493 .audio_clock
= 0x00187de7,
2494 .tuner_type
= TUNER_PHILIPS_TDA8290
,
2495 .radio_type
= UNSET
,
2496 .tuner_addr
= ADDR_UNSET
,
2497 .radio_addr
= ADDR_UNSET
,
2498 .gpiomask
= 1 << 21,
2499 .mpeg
= SAA7134_MPEG_DVB
,
2517 .name
= name_svideo
,
2528 [SAA7134_BOARD_SEDNA_PC_TV_CARDBUS
] = {
2529 /* Paul Tom Zalac <pzalac@gmail.com> */
2530 /* Pavel Mihaylov <bin@bash.info> */
2531 .name
= "Sedna/MuchTV PC TV Cardbus TV/Radio (ITO25 Rev:2B)",
2532 /* Sedna/MuchTV (OEM) Cardbus TV Tuner */
2533 .audio_clock
= 0x00187de7,
2534 .tuner_type
= TUNER_PHILIPS_TDA8290
,
2535 .radio_type
= UNSET
,
2536 .tuner_addr
= ADDR_UNSET
,
2537 .radio_addr
= ADDR_UNSET
,
2538 .gpiomask
= 0xe880c0,
2549 .name
= name_svideo
,
2558 [SAA7134_BOARD_ASUSTEK_DIGIMATRIX_TV
] = {
2559 /* "Cyril Lacoux (Yack)" <clacoux@ifeelgood.org> */
2560 .name
= "ASUS Digimatrix TV",
2561 .audio_clock
= 0x00200000,
2562 .tuner_type
= TUNER_PHILIPS_FQ1216ME
,
2563 .tda9887_conf
= TDA9887_PRESENT
,
2564 .radio_type
= UNSET
,
2565 .tuner_addr
= ADDR_UNSET
,
2566 .radio_addr
= ADDR_UNSET
,
2577 .name
= name_svideo
,
2582 [SAA7134_BOARD_PHILIPS_TIGER
] = {
2583 .name
= "Philips Tiger reference design",
2584 .audio_clock
= 0x00187de7,
2585 .tuner_type
= TUNER_PHILIPS_TDA8290
,
2586 .radio_type
= UNSET
,
2587 .tuner_addr
= ADDR_UNSET
,
2588 .radio_addr
= ADDR_UNSET
,
2590 .mpeg
= SAA7134_MPEG_DVB
,
2591 .gpiomask
= 0x0200000,
2602 .name
= name_svideo
,
2612 [SAA7134_BOARD_MSI_TVATANYWHERE_PLUS
] = {
2613 .name
= "MSI TV@Anywhere plus",
2614 .audio_clock
= 0x00187de7,
2615 .tuner_type
= TUNER_PHILIPS_TDA8290
,
2616 .radio_type
= UNSET
,
2617 .tuner_addr
= ADDR_UNSET
,
2618 .radio_addr
= ADDR_UNSET
,
2619 .gpiomask
= 1 << 21,
2628 .amux
= LINE2
, /* unconfirmed, taken from Philips driver */
2631 .vmux
= 0, /* untested, Composite over S-Video */
2634 .name
= name_svideo
,
2644 [SAA7134_BOARD_CINERGY250PCI
] = {
2645 /* remote-control does not work. The signal about a
2646 key press comes in via gpio, but the key code
2647 doesn't. Neither does it have an i2c remote control
2649 .name
= "Terratec Cinergy 250 PCI TV",
2650 .audio_clock
= 0x00187de7,
2651 .tuner_type
= TUNER_PHILIPS_TDA8290
,
2652 .radio_type
= UNSET
,
2653 .tuner_addr
= ADDR_UNSET
,
2654 .radio_addr
= ADDR_UNSET
,
2655 .gpiomask
= 0x80200000,
2662 .name
= name_svideo
, /* NOT tested */
2672 [SAA7134_BOARD_FLYDVB_TRIO
] = {
2673 /* LifeView LR319 FlyDVB Trio */
2674 /* Peter Missel <peter.missel@onlinehome.de> */
2675 .name
= "LifeView FlyDVB Trio",
2676 .audio_clock
= 0x00200000,
2677 .tuner_type
= TUNER_PHILIPS_TDA8290
,
2678 .radio_type
= UNSET
,
2679 .tuner_addr
= ADDR_UNSET
,
2680 .radio_addr
= ADDR_UNSET
,
2681 .gpiomask
= 0x00200000,
2682 .mpeg
= SAA7134_MPEG_DVB
,
2684 .name
= name_tv
, /* Analog broadcast/cable TV */
2687 .gpio
= 0x200000, /* GPIO21=High for TV input */
2690 .name
= name_svideo
, /* S-Video signal on S-Video input */
2694 .name
= name_comp1
, /* Composite signal on S-Video input */
2698 .name
= name_comp2
, /* Composite input */
2705 .gpio
= 0x000000, /* GPIO21=Low for FM radio antenna */
2708 [SAA7134_BOARD_AVERMEDIA_777
] = {
2709 .name
= "AverTV DVB-T 777",
2710 .audio_clock
= 0x00187de7,
2711 .tuner_type
= TUNER_ABSENT
,
2712 .radio_type
= UNSET
,
2713 .tuner_addr
= ADDR_UNSET
,
2714 .radio_addr
= ADDR_UNSET
,
2715 .mpeg
= SAA7134_MPEG_DVB
,
2721 .name
= name_svideo
,
2726 [SAA7134_BOARD_FLYDVBT_LR301
] = {
2727 /* LifeView FlyDVB-T */
2728 /* Giampiero Giancipoli <gianci@libero.it> */
2729 .name
= "LifeView FlyDVB-T / Genius VideoWonder DVB-T",
2730 .audio_clock
= 0x00200000,
2731 .tuner_type
= TUNER_ABSENT
,
2732 .radio_type
= UNSET
,
2733 .tuner_addr
= ADDR_UNSET
,
2734 .radio_addr
= ADDR_UNSET
,
2735 .mpeg
= SAA7134_MPEG_DVB
,
2737 .name
= name_comp1
, /* Composite input */
2741 .name
= name_svideo
, /* S-Video signal on S-Video input */
2746 [SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331
] = {
2747 .name
= "ADS Instant TV Duo Cardbus PTV331",
2748 .audio_clock
= 0x00200000,
2749 .tuner_type
= TUNER_PHILIPS_TDA8290
,
2750 .radio_type
= UNSET
,
2751 .tuner_addr
= ADDR_UNSET
,
2752 .radio_addr
= ADDR_UNSET
,
2753 .mpeg
= SAA7134_MPEG_DVB
,
2754 .gpiomask
= 0x00600000, /* Bit 21 0=Radio, Bit 22 0=TV */
2763 [SAA7134_BOARD_TEVION_DVBT_220RF
] = {
2764 .name
= "Tevion/KWorld DVB-T 220RF",
2765 .audio_clock
= 0x00187de7,
2766 .tuner_type
= TUNER_PHILIPS_TDA8290
,
2767 .radio_type
= UNSET
,
2768 .tuner_addr
= ADDR_UNSET
,
2769 .radio_addr
= ADDR_UNSET
,
2770 .mpeg
= SAA7134_MPEG_DVB
,
2771 .gpiomask
= 1 << 21,
2786 .name
= name_svideo
,
2796 [SAA7134_BOARD_KWORLD_DVBT_210
] = {
2797 .name
= "KWorld DVB-T 210",
2798 .audio_clock
= 0x00187de7,
2799 .tuner_type
= TUNER_PHILIPS_TDA8290
,
2800 .radio_type
= UNSET
,
2801 .tuner_addr
= ADDR_UNSET
,
2802 .radio_addr
= ADDR_UNSET
,
2803 .mpeg
= SAA7134_MPEG_DVB
,
2804 .gpiomask
= 1 << 21,
2815 .name
= name_svideo
,
2825 [SAA7134_BOARD_KWORLD_ATSC110
] = {
2826 .name
= "Kworld ATSC110/115",
2827 .audio_clock
= 0x00187de7,
2828 .tuner_type
= TUNER_PHILIPS_TUV1236D
,
2829 .radio_type
= UNSET
,
2830 .tuner_addr
= ADDR_UNSET
,
2831 .radio_addr
= ADDR_UNSET
,
2832 .tda9887_conf
= TDA9887_PRESENT
,
2833 .mpeg
= SAA7134_MPEG_DVB
,
2844 .name
= name_svideo
,
2849 [SAA7134_BOARD_AVERMEDIA_A169_B
] = {
2850 /* AVerMedia A169 */
2851 /* Rickard Osser <ricky@osser.se> */
2852 /* This card has two saa7134 chips on it,
2853 but only one of them is currently working. */
2854 .name
= "AVerMedia A169 B",
2855 .audio_clock
= 0x02187de7,
2856 .tuner_type
= TUNER_LG_TALN
,
2857 .radio_type
= UNSET
,
2858 .tuner_addr
= ADDR_UNSET
,
2859 .radio_addr
= ADDR_UNSET
,
2860 .tda9887_conf
= TDA9887_PRESENT
,
2861 .gpiomask
= 0x0a60000,
2863 [SAA7134_BOARD_AVERMEDIA_A169_B1
] = {
2864 /* AVerMedia A169 */
2865 /* Rickard Osser <ricky@osser.se> */
2866 .name
= "AVerMedia A169 B1",
2867 .audio_clock
= 0x02187de7,
2868 .tuner_type
= TUNER_LG_TALN
,
2869 .radio_type
= UNSET
,
2870 .tuner_addr
= ADDR_UNSET
,
2871 .radio_addr
= ADDR_UNSET
,
2872 .tda9887_conf
= TDA9887_PRESENT
,
2873 .gpiomask
= 0xca60000,
2881 .name
= name_comp2
, /* Composite SVIDEO (B/W if signal is carried with SVIDEO) */
2885 .name
= name_svideo
,
2886 .vmux
= 9, /* 9 is correct as S-VIDEO1 according to a169.inf! */
2890 [SAA7134_BOARD_MD7134_BRIDGE_2
] = {
2891 /* This card has two saa7134 chips on it,
2892 but only one of them is currently working.
2893 The programming for the primary decoder is
2894 in SAA7134_BOARD_MD7134 */
2895 .name
= "Medion 7134 Bridge #2",
2896 .audio_clock
= 0x00187de7,
2897 .radio_type
= UNSET
,
2898 .tuner_addr
= ADDR_UNSET
,
2899 .radio_addr
= ADDR_UNSET
,
2901 [SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS
] = {
2902 .name
= "LifeView FlyDVB-T Hybrid Cardbus/MSI TV @nywhere A/D NB",
2903 .audio_clock
= 0x00200000,
2904 .tuner_type
= TUNER_PHILIPS_TDA8290
,
2905 .radio_type
= UNSET
,
2906 .tuner_addr
= ADDR_UNSET
,
2907 .radio_addr
= ADDR_UNSET
,
2908 .mpeg
= SAA7134_MPEG_DVB
,
2909 .gpiomask
= 0x00600000, /* Bit 21 0=Radio, Bit 22 0=TV */
2914 .gpio
= 0x200000, /* GPIO21=High for TV input */
2917 .name
= name_svideo
, /* S-Video signal on S-Video input */
2921 .name
= name_comp1
, /* Composite signal on S-Video input */
2925 .name
= name_comp2
, /* Composite input */
2932 .gpio
= 0x000000, /* GPIO21=Low for FM radio antenna */
2935 [SAA7134_BOARD_FLYVIDEO3000_NTSC
] = {
2936 /* "Zac Bowling" <zac@zacbowling.com> */
2937 .name
= "LifeView FlyVIDEO3000 (NTSC)",
2938 .audio_clock
= 0x00200000,
2939 .tuner_type
= TUNER_PHILIPS_NTSC
,
2940 .radio_type
= UNSET
,
2941 .tuner_addr
= ADDR_UNSET
,
2942 .radio_addr
= ADDR_UNSET
,
2952 .name
= name_tv_mono
,
2968 .name
= name_svideo
,
2984 [SAA7134_BOARD_MEDION_MD8800_QUADRO
] = {
2985 .name
= "Medion Md8800 Quadro",
2986 .audio_clock
= 0x00187de7,
2987 .tuner_type
= TUNER_PHILIPS_TDA8290
,
2988 .radio_type
= UNSET
,
2989 .tuner_addr
= ADDR_UNSET
,
2990 .radio_addr
= ADDR_UNSET
,
2991 .mpeg
= SAA7134_MPEG_DVB
,
3002 .name
= name_svideo
,
3007 [SAA7134_BOARD_FLYDVBS_LR300
] = {
3008 /* LifeView FlyDVB-s */
3009 /* Igor M. Liplianin <liplianin@tut.by> */
3010 .name
= "LifeView FlyDVB-S /Acorp TV134DS",
3011 .audio_clock
= 0x00200000,
3012 .tuner_type
= TUNER_ABSENT
,
3013 .radio_type
= UNSET
,
3014 .tuner_addr
= ADDR_UNSET
,
3015 .radio_addr
= ADDR_UNSET
,
3016 .mpeg
= SAA7134_MPEG_DVB
,
3018 .name
= name_comp1
, /* Composite input */
3022 .name
= name_svideo
, /* S-Video signal on S-Video input */
3027 [SAA7134_BOARD_PROTEUS_2309
] = {
3028 .name
= "Proteus Pro 2309",
3029 .audio_clock
= 0x00187de7,
3030 .tuner_type
= TUNER_PHILIPS_FM1216ME_MK3
,
3031 .radio_type
= UNSET
,
3032 .tuner_addr
= ADDR_UNSET
,
3033 .radio_addr
= ADDR_UNSET
,
3034 .tda9887_conf
= TDA9887_PRESENT
,
3049 .name
= name_svideo
,
3058 [SAA7134_BOARD_AVERMEDIA_A16AR
] = {
3059 /* Petr Baudis <pasky@ucw.cz> */
3060 .name
= "AVerMedia TV Hybrid A16AR",
3061 .audio_clock
= 0x187de7,
3062 .tuner_type
= TUNER_PHILIPS_TD1316
, /* untested */
3063 .radio_type
= TUNER_TEA5767
, /* untested */
3064 .tuner_addr
= ADDR_UNSET
,
3065 .radio_addr
= ADDR_UNSET
,
3066 .tda9887_conf
= TDA9887_PRESENT
,
3067 .mpeg
= SAA7134_MPEG_DVB
,
3078 .name
= name_svideo
,
3087 [SAA7134_BOARD_ASUS_EUROPA2_HYBRID
] = {
3088 .name
= "Asus Europa2 OEM",
3089 .audio_clock
= 0x00187de7,
3090 .tuner_type
= TUNER_PHILIPS_FMD1216ME_MK3
,
3091 .radio_type
= UNSET
,
3092 .tuner_addr
= ADDR_UNSET
,
3093 .radio_addr
= ADDR_UNSET
,
3094 .tda9887_conf
= TDA9887_PRESENT
| TDA9887_PORT1_ACTIVE
| TDA9887_PORT2_ACTIVE
,
3095 .mpeg
= SAA7134_MPEG_DVB
,
3106 .name
= name_svideo
,
3115 [SAA7134_BOARD_PINNACLE_PCTV_310i
] = {
3116 .name
= "Pinnacle PCTV 310i",
3117 .audio_clock
= 0x00187de7,
3118 .tuner_type
= TUNER_PHILIPS_TDA8290
,
3119 .radio_type
= UNSET
,
3120 .tuner_addr
= ADDR_UNSET
,
3121 .radio_addr
= ADDR_UNSET
,
3123 .mpeg
= SAA7134_MPEG_DVB
,
3124 .gpiomask
= 0x000200000,
3139 .name
= name_svideo
,
3149 [SAA7134_BOARD_AVERMEDIA_STUDIO_507
] = {
3150 /* Mikhail Fedotov <mo_fedotov@mail.ru> */
3151 .name
= "Avermedia AVerTV Studio 507",
3152 .audio_clock
= 0x00187de7,
3153 .tuner_type
= TUNER_PHILIPS_FM1256_IH3
,
3154 .radio_type
= UNSET
,
3155 .tuner_addr
= ADDR_UNSET
,
3156 .radio_addr
= ADDR_UNSET
,
3157 .tda9887_conf
= TDA9887_PRESENT
,
3176 .name
= name_svideo
,
3192 [SAA7134_BOARD_VIDEOMATE_DVBT_200A
] = {
3193 /* Francis Barber <fedora@barber-family.id.au> */
3194 .name
= "Compro Videomate DVB-T200A",
3195 .audio_clock
= 0x00187de7,
3196 .tuner_type
= TUNER_ABSENT
,
3197 .radio_type
= UNSET
,
3198 .tuner_addr
= ADDR_UNSET
,
3199 .radio_addr
= ADDR_UNSET
,
3200 .tda9887_conf
= TDA9887_PRESENT
| TDA9887_PORT1_ACTIVE
,
3201 .mpeg
= SAA7134_MPEG_DVB
,
3212 .name
= name_svideo
,
3217 [SAA7134_BOARD_HAUPPAUGE_HVR1110
] = {
3218 /* Thomas Genty <tomlohave@gmail.com> */
3219 .name
= "Hauppauge WinTV-HVR1110 DVB-T/Hybrid",
3220 .audio_clock
= 0x00187de7,
3221 .tuner_type
= TUNER_PHILIPS_TDA8290
,
3222 .radio_type
= UNSET
,
3223 .tuner_addr
= ADDR_UNSET
,
3224 .radio_addr
= ADDR_UNSET
,
3226 .mpeg
= SAA7134_MPEG_DVB
,
3235 .amux
= LINE2
, /* FIXME: audio doesn't work on svideo/composite */
3237 .name
= name_svideo
,
3239 .amux
= LINE2
, /* FIXME: audio doesn't work on svideo/composite */
3246 [SAA7134_BOARD_CINERGY_HT_PCMCIA
] = {
3247 .name
= "Terratec Cinergy HT PCMCIA",
3248 .audio_clock
= 0x00187de7,
3249 .tuner_type
= TUNER_PHILIPS_TDA8290
,
3250 .radio_type
= UNSET
,
3251 .tuner_addr
= ADDR_UNSET
,
3252 .radio_addr
= ADDR_UNSET
,
3253 .mpeg
= SAA7134_MPEG_DVB
,
3264 .name
= name_svideo
,
3269 [SAA7134_BOARD_ENCORE_ENLTV
] = {
3270 /* Steven Walter <stevenrwalter@gmail.com>
3271 Juan Pablo Sormani <sorman@gmail.com> */
3272 .name
= "Encore ENLTV",
3273 .audio_clock
= 0x00200000,
3274 .tuner_type
= TUNER_TNF_5335MF
,
3275 .radio_type
= UNSET
,
3276 .tuner_addr
= ADDR_UNSET
,
3277 .radio_addr
= ADDR_UNSET
,
3284 .name
= name_tv_mono
,
3293 .name
= name_svideo
,
3300 /* .gpio = 0x00300001,*/
3309 [SAA7134_BOARD_ENCORE_ENLTV_FM
] = {
3310 /* Juan Pablo Sormani <sorman@gmail.com> */
3311 .name
= "Encore ENLTV-FM",
3312 .audio_clock
= 0x00200000,
3313 .tuner_type
= TUNER_PHILIPS_ATSC
,
3314 .radio_type
= UNSET
,
3315 .tuner_addr
= ADDR_UNSET
,
3316 .radio_addr
= ADDR_UNSET
,
3323 .name
= name_tv_mono
,
3332 .name
= name_svideo
,
3347 [SAA7134_BOARD_CINERGY_HT_PCI
] = {
3348 .name
= "Terratec Cinergy HT PCI",
3349 .audio_clock
= 0x00187de7,
3350 .tuner_type
= TUNER_PHILIPS_TDA8290
,
3351 .radio_type
= UNSET
,
3352 .tuner_addr
= ADDR_UNSET
,
3353 .radio_addr
= ADDR_UNSET
,
3354 .mpeg
= SAA7134_MPEG_DVB
,
3365 .name
= name_svideo
,
3370 [SAA7134_BOARD_PHILIPS_TIGER_S
] = {
3371 .name
= "Philips Tiger - S Reference design",
3372 .audio_clock
= 0x00187de7,
3373 .tuner_type
= TUNER_PHILIPS_TDA8290
,
3374 .radio_type
= UNSET
,
3375 .tuner_addr
= ADDR_UNSET
,
3376 .radio_addr
= ADDR_UNSET
,
3378 .mpeg
= SAA7134_MPEG_DVB
,
3379 .gpiomask
= 0x0200000,
3390 .name
= name_svideo
,
3400 [SAA7134_BOARD_AVERMEDIA_M102
] = {
3401 .name
= "Avermedia M102",
3402 .audio_clock
= 0x00187de7,
3403 .tuner_type
= TUNER_PHILIPS_TDA8290
,
3404 .radio_type
= UNSET
,
3405 .tuner_addr
= ADDR_UNSET
,
3406 .radio_addr
= ADDR_UNSET
,
3418 .name
= name_svideo
,
3423 [SAA7134_BOARD_ASUS_P7131_4871
] = {
3424 .name
= "ASUS P7131 4871",
3425 .audio_clock
= 0x00187de7,
3426 .tuner_type
= TUNER_PHILIPS_TDA8290
,
3427 .radio_type
= UNSET
,
3428 .tuner_addr
= ADDR_UNSET
,
3429 .radio_addr
= ADDR_UNSET
,
3431 .mpeg
= SAA7134_MPEG_DVB
,
3432 .gpiomask
= 0x0200000,
3441 [SAA7134_BOARD_ASUSTeK_P7131_HYBRID_LNA
] = {
3442 .name
= "ASUSTeK P7131 Hybrid",
3443 .audio_clock
= 0x00187de7,
3444 .tuner_type
= TUNER_PHILIPS_TDA8290
,
3445 .radio_type
= UNSET
,
3446 .tuner_addr
= ADDR_UNSET
,
3447 .radio_addr
= ADDR_UNSET
,
3449 .gpiomask
= 1 << 21,
3450 .mpeg
= SAA7134_MPEG_DVB
,
3468 .name
= name_svideo
,
3479 [SAA7134_BOARD_SABRENT_TV_PCB05
] = {
3480 .name
= "Sabrent PCMCIA TV-PCB05",
3481 .audio_clock
= 0x00187de7,
3482 .tuner_type
= TUNER_PHILIPS_TDA8290
,
3483 .radio_type
= UNSET
,
3484 .tuner_addr
= ADDR_UNSET
,
3485 .radio_addr
= ADDR_UNSET
,
3500 .name
= name_svideo
,
3509 [SAA7134_BOARD_10MOONSTVMASTER3
] = {
3510 /* Tony Wan <aloha_cn@hotmail.com> */
3511 .name
= "10MOONS TM300 TV Card",
3512 .audio_clock
= 0x00200000,
3513 .tuner_type
= TUNER_LG_PAL_NEW_TAPC
,
3514 .radio_type
= UNSET
,
3515 .tuner_addr
= ADDR_UNSET
,
3516 .radio_addr
= ADDR_UNSET
,
3530 .name
= name_svideo
,
3541 [SAA7134_BOARD_AVERMEDIA_SUPER_007
] = {
3542 .name
= "Avermedia Super 007",
3543 .audio_clock
= 0x00187de7,
3544 .tuner_type
= TUNER_PHILIPS_TDA8290
,
3545 .radio_type
= UNSET
,
3546 .tuner_addr
= ADDR_UNSET
,
3547 .radio_addr
= ADDR_UNSET
,
3549 .mpeg
= SAA7134_MPEG_DVB
,
3551 .name
= name_tv
, /* FIXME: analog tv untested */
3559 const unsigned int saa7134_bcount
= ARRAY_SIZE(saa7134_boards
);
3561 /* ------------------------------------------------------------------ */
3562 /* PCI ids + subsystem IDs */
3564 struct pci_device_id saa7134_pci_tbl
[] = {
3566 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3567 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
3568 .subvendor
= PCI_VENDOR_ID_PHILIPS
,
3569 .subdevice
= 0x2001,
3570 .driver_data
= SAA7134_BOARD_PROTEUS_PRO
,
3572 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3573 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
3574 .subvendor
= PCI_VENDOR_ID_PHILIPS
,
3575 .subdevice
= 0x2001,
3576 .driver_data
= SAA7134_BOARD_PROTEUS_PRO
,
3578 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3579 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
3580 .subvendor
= PCI_VENDOR_ID_PHILIPS
,
3581 .subdevice
= 0x6752,
3582 .driver_data
= SAA7134_BOARD_EMPRESS
,
3584 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3585 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
3586 .subvendor
= 0x1131,
3587 .subdevice
= 0x4e85,
3588 .driver_data
= SAA7134_BOARD_MONSTERTV
,
3590 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3591 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
3592 .subvendor
= 0x153b,
3593 .subdevice
= 0x1142,
3594 .driver_data
= SAA7134_BOARD_CINERGY400
,
3596 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3597 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
3598 .subvendor
= 0x153b,
3599 .subdevice
= 0x1143,
3600 .driver_data
= SAA7134_BOARD_CINERGY600
,
3602 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3603 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
3604 .subvendor
= 0x153b,
3605 .subdevice
= 0x1158,
3606 .driver_data
= SAA7134_BOARD_CINERGY600_MK3
,
3608 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3609 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
3610 .subvendor
= 0x153b,
3611 .subdevice
= 0x1162,
3612 .driver_data
= SAA7134_BOARD_CINERGY400_CARDBUS
,
3614 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3615 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
3616 .subvendor
= 0x5169,
3617 .subdevice
= 0x0138,
3618 .driver_data
= SAA7134_BOARD_FLYVIDEO3000_NTSC
,
3620 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3621 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
3622 .subvendor
= 0x5168,
3623 .subdevice
= 0x0138,
3624 .driver_data
= SAA7134_BOARD_FLYVIDEO3000
,
3626 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3627 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
3628 .subvendor
= 0x4e42, /* "Typhoon PCI Capture TV Card" Art.No. 50673 */
3629 .subdevice
= 0x0138,
3630 .driver_data
= SAA7134_BOARD_FLYVIDEO3000
,
3632 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3633 .device
= PCI_DEVICE_ID_PHILIPS_SAA7130
,
3634 .subvendor
= 0x5168,
3635 .subdevice
= 0x0138,
3636 .driver_data
= SAA7134_BOARD_FLYVIDEO2000
,
3638 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3639 .device
= PCI_DEVICE_ID_PHILIPS_SAA7130
,
3640 .subvendor
= 0x4e42, /* Typhoon */
3641 .subdevice
= 0x0138, /* LifeView FlyTV Prime30 OEM */
3642 .driver_data
= SAA7134_BOARD_FLYVIDEO2000
,
3644 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3645 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
3646 .subvendor
= 0x5168,
3647 .subdevice
= 0x0212, /* minipci, LR212 */
3648 .driver_data
= SAA7134_BOARD_FLYTVPLATINUM_MINI
,
3650 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3651 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
3652 .subvendor
= 0x14c0,
3653 .subdevice
= 0x1212, /* minipci, LR1212 */
3654 .driver_data
= SAA7134_BOARD_FLYTVPLATINUM_MINI2
,
3656 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3657 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
3658 .subvendor
= 0x4e42,
3659 .subdevice
= 0x0212, /* OEM minipci, LR212 */
3660 .driver_data
= SAA7134_BOARD_FLYTVPLATINUM_MINI
,
3662 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3663 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
3664 .subvendor
= 0x5168, /* Animation Technologies (LifeView) */
3665 .subdevice
= 0x0214, /* Standard PCI, LR214 Rev E and earlier (SAA7135) */
3666 .driver_data
= SAA7134_BOARD_FLYTVPLATINUM_FM
,
3668 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3669 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
3670 .subvendor
= 0x5168, /* Animation Technologies (LifeView) */
3671 .subdevice
= 0x5214, /* Standard PCI, LR214 Rev F onwards (SAA7131) */
3672 .driver_data
= SAA7134_BOARD_FLYTVPLATINUM_FM
,
3674 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3675 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
3676 .subvendor
= 0x1489, /* KYE */
3677 .subdevice
= 0x0214, /* Genius VideoWonder ProTV */
3678 .driver_data
= SAA7134_BOARD_FLYTVPLATINUM_FM
, /* is an LR214WF actually */
3680 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3681 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
3682 .subvendor
= 0x16be,
3683 .subdevice
= 0x0003,
3684 .driver_data
= SAA7134_BOARD_MD7134
,
3686 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3687 .device
= PCI_DEVICE_ID_PHILIPS_SAA7130
,
3688 .subvendor
= 0x1048,
3689 .subdevice
= 0x226b,
3690 .driver_data
= SAA7134_BOARD_ELSA
,
3692 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3693 .device
= PCI_DEVICE_ID_PHILIPS_SAA7130
,
3694 .subvendor
= 0x1048,
3695 .subdevice
= 0x226a,
3696 .driver_data
= SAA7134_BOARD_ELSA_500TV
,
3698 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3699 .device
= PCI_DEVICE_ID_PHILIPS_SAA7130
,
3700 .subvendor
= 0x1048,
3701 .subdevice
= 0x226c,
3702 .driver_data
= SAA7134_BOARD_ELSA_700TV
,
3704 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3705 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
3706 .subvendor
= PCI_VENDOR_ID_ASUSTEK
,
3707 .subdevice
= 0x4842,
3708 .driver_data
= SAA7134_BOARD_ASUSTeK_TVFM7134
,
3710 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3711 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
3712 .subvendor
= PCI_VENDOR_ID_ASUSTEK
,
3713 .subdevice
= 0x4845,
3714 .driver_data
= SAA7134_BOARD_ASUSTeK_TVFM7135
,
3716 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3717 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
3718 .subvendor
= PCI_VENDOR_ID_ASUSTEK
,
3719 .subdevice
= 0x4830,
3720 .driver_data
= SAA7134_BOARD_ASUSTeK_TVFM7134
,
3722 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3723 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
3724 .subvendor
= PCI_VENDOR_ID_ASUSTEK
,
3725 .subdevice
= 0x4843,
3726 .driver_data
= SAA7134_BOARD_ASUSTEK_TVFM7133
,
3728 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3729 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
3730 .subvendor
= PCI_VENDOR_ID_ASUSTEK
,
3731 .subdevice
= 0x4840,
3732 .driver_data
= SAA7134_BOARD_ASUSTeK_TVFM7134
,
3734 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3735 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
3736 .subvendor
= PCI_VENDOR_ID_PHILIPS
,
3737 .subdevice
= 0xfe01,
3738 .driver_data
= SAA7134_BOARD_TVSTATION_RDS
,
3740 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3741 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
3742 .subvendor
= 0x1894,
3743 .subdevice
= 0xfe01,
3744 .driver_data
= SAA7134_BOARD_TVSTATION_RDS
,
3746 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3747 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
3748 .subvendor
= 0x1894,
3749 .subdevice
= 0xa006,
3750 .driver_data
= SAA7134_BOARD_TVSTATION_DVR
,
3752 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3753 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
3754 .subvendor
= 0x1131,
3755 .subdevice
= 0x7133,
3756 .driver_data
= SAA7134_BOARD_VA1000POWER
,
3758 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3759 .device
= PCI_DEVICE_ID_PHILIPS_SAA7130
,
3760 .subvendor
= PCI_VENDOR_ID_PHILIPS
,
3761 .subdevice
= 0x2001,
3762 .driver_data
= SAA7134_BOARD_10MOONSTVMASTER
,
3764 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3765 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
3766 .subvendor
= 0x185b,
3767 .subdevice
= 0xc100,
3768 .driver_data
= SAA7134_BOARD_VIDEOMATE_TV
,
3770 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3771 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
3772 .subvendor
= 0x185b,
3773 .subdevice
= 0xc100,
3774 .driver_data
= SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUS
,
3776 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3777 .device
= PCI_DEVICE_ID_PHILIPS_SAA7130
,
3778 .subvendor
= PCI_VENDOR_ID_MATROX
,
3779 .subdevice
= 0x48d0,
3780 .driver_data
= SAA7134_BOARD_CRONOS_PLUS
,
3782 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3783 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
3784 .subvendor
= 0x1461, /* Avermedia Technologies Inc */
3785 .subdevice
= 0xa70b,
3786 .driver_data
= SAA7134_BOARD_MD2819
,
3788 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3789 .device
= PCI_DEVICE_ID_PHILIPS_SAA7130
,
3790 .subvendor
= 0x1461, /* Avermedia Technologies Inc */
3791 .subdevice
= 0x2115,
3792 .driver_data
= SAA7134_BOARD_AVERMEDIA_STUDIO_305
,
3794 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3795 .device
= PCI_DEVICE_ID_PHILIPS_SAA7130
,
3796 .subvendor
= 0x1461, /* Avermedia Technologies Inc */
3797 .subdevice
= 0x2108,
3798 .driver_data
= SAA7134_BOARD_AVERMEDIA_305
,
3800 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3801 .device
= PCI_DEVICE_ID_PHILIPS_SAA7130
,
3802 .subvendor
= 0x1461, /* Avermedia Technologies Inc */
3803 .subdevice
= 0x10ff,
3804 .driver_data
= SAA7134_BOARD_AVERMEDIA_DVD_EZMAKER
,
3806 /* AVerMedia CardBus */
3807 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3808 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
3809 .subvendor
= 0x1461, /* Avermedia Technologies Inc */
3810 .subdevice
= 0xd6ee,
3811 .driver_data
= SAA7134_BOARD_AVERMEDIA_CARDBUS
,
3813 /* TransGear 3000TV */
3814 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3815 .device
= PCI_DEVICE_ID_PHILIPS_SAA7130
,
3816 .subvendor
= 0x1461, /* Avermedia Technologies Inc */
3817 .subdevice
= 0x050c,
3818 .driver_data
= SAA7134_BOARD_TG3000TV
,
3820 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3821 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
3822 .subvendor
= 0x11bd,
3823 .subdevice
= 0x002b,
3824 .driver_data
= SAA7134_BOARD_PINNACLE_PCTV_STEREO
,
3826 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3827 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
3828 .subvendor
= 0x11bd,
3829 .subdevice
= 0x002d,
3830 .driver_data
= SAA7134_BOARD_PINNACLE_300I_DVBT_PAL
,
3832 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3833 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
3834 .subvendor
= 0x1019,
3835 .subdevice
= 0x4cb4,
3836 .driver_data
= SAA7134_BOARD_ECS_TVP3XP
,
3838 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3839 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
3840 .subvendor
= 0x1019,
3841 .subdevice
= 0x4cb5,
3842 .driver_data
= SAA7134_BOARD_ECS_TVP3XP_4CB5
,
3844 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3845 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
3846 .subvendor
= 0x1019,
3847 .subdevice
= 0x4cb6,
3848 .driver_data
= SAA7134_BOARD_ECS_TVP3XP_4CB6
,
3850 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3851 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
3852 .subvendor
= 0x12ab,
3853 .subdevice
= 0x0800,
3854 .driver_data
= SAA7134_BOARD_UPMOST_PURPLE_TV
,
3856 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3857 .device
= PCI_DEVICE_ID_PHILIPS_SAA7130
,
3858 .subvendor
= 0x153b,
3859 .subdevice
= 0x1152,
3860 .driver_data
= SAA7134_BOARD_CINERGY200
,
3862 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3863 .device
= PCI_DEVICE_ID_PHILIPS_SAA7130
,
3864 .subvendor
= 0x185b,
3865 .subdevice
= 0xc100,
3866 .driver_data
= SAA7134_BOARD_VIDEOMATE_TV_PVR
,
3868 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3869 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
3870 .subvendor
= 0x1461, /* Avermedia Technologies Inc */
3871 .subdevice
= 0x9715,
3872 .driver_data
= SAA7134_BOARD_AVERMEDIA_STUDIO_307
,
3874 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3875 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
3876 .subvendor
= 0x1461, /* Avermedia Technologies Inc */
3877 .subdevice
= 0xa70a,
3878 .driver_data
= SAA7134_BOARD_AVERMEDIA_307
,
3880 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3881 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
3882 .subvendor
= 0x185b,
3883 .subdevice
= 0xc200,
3884 .driver_data
= SAA7134_BOARD_VIDEOMATE_GOLD_PLUS
,
3886 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3887 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
3888 .subvendor
= 0x1540,
3889 .subdevice
= 0x9524,
3890 .driver_data
= SAA7134_BOARD_PROVIDEO_PV952
,
3893 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3894 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
3895 .subvendor
= 0x5168,
3896 .subdevice
= 0x0502, /* Cardbus version */
3897 .driver_data
= SAA7134_BOARD_FLYDVBT_DUO_CARDBUS
,
3899 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3900 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
3901 .subvendor
= 0x5168,
3902 .subdevice
= 0x0306, /* PCI version */
3903 .driver_data
= SAA7134_BOARD_FLYDVBTDUO
,
3905 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3906 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
3907 .subvendor
= 0x1461, /* Avermedia Technologies Inc */
3908 .subdevice
= 0xf31f,
3909 .driver_data
= SAA7134_BOARD_AVERMEDIA_GO_007_FM
,
3912 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3913 .device
= PCI_DEVICE_ID_PHILIPS_SAA7130
,
3914 .subvendor
= PCI_VENDOR_ID_PHILIPS
,
3915 .subdevice
= 0x2004,
3916 .driver_data
= SAA7134_BOARD_PHILIPS_TOUGH
,
3918 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3919 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
3920 .subvendor
= 0x1421,
3921 .subdevice
= 0x0350, /* PCI version */
3922 .driver_data
= SAA7134_BOARD_ADS_INSTANT_TV
,
3924 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3925 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
3926 .subvendor
= 0x1421,
3927 .subdevice
= 0x0351, /* PCI version, new revision */
3928 .driver_data
= SAA7134_BOARD_ADS_INSTANT_TV
,
3930 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3931 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
3932 .subvendor
= 0x1421,
3933 .subdevice
= 0x0370, /* cardbus version */
3934 .driver_data
= SAA7134_BOARD_ADS_INSTANT_TV
,
3936 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3937 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
3938 .subvendor
= 0x1421,
3939 .subdevice
= 0x1370, /* cardbus version */
3940 .driver_data
= SAA7134_BOARD_ADS_INSTANT_TV
,
3943 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3944 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
3945 .subvendor
= 0x4e42, /* Typhoon */
3946 .subdevice
= 0x0502, /* LifeView LR502 OEM */
3947 .driver_data
= SAA7134_BOARD_FLYDVBT_DUO_CARDBUS
,
3949 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3950 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
3951 .subvendor
= 0x1043,
3952 .subdevice
= 0x0210, /* mini pci NTSC version */
3953 .driver_data
= SAA7134_BOARD_FLYTV_DIGIMATRIX
,
3955 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3956 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
3957 .subvendor
= 0x1043,
3958 .subdevice
= 0x0210, /* mini pci PAL/SECAM version */
3959 .driver_data
= SAA7134_BOARD_ASUSTEK_DIGIMATRIX_TV
,
3962 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3963 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
3964 .subvendor
= 0x0000, /* It shouldn't break anything, since subdevice id seems unique */
3965 .subdevice
= 0x4091,
3966 .driver_data
= SAA7134_BOARD_BEHOLD_409FM
,
3968 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3969 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
3970 .subvendor
= 0x5456, /* GoTView */
3971 .subdevice
= 0x7135,
3972 .driver_data
= SAA7134_BOARD_GOTVIEW_7135
,
3974 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3975 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
3976 .subvendor
= PCI_VENDOR_ID_PHILIPS
,
3977 .subdevice
= 0x2004,
3978 .driver_data
= SAA7134_BOARD_PHILIPS_EUROPA
,
3980 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3981 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
3982 .subvendor
= 0x185b,
3983 .subdevice
= 0xc900,
3984 .driver_data
= SAA7134_BOARD_VIDEOMATE_DVBT_300
,
3986 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3987 .device
= PCI_DEVICE_ID_PHILIPS_SAA7130
,
3988 .subvendor
= 0x185b,
3989 .subdevice
= 0xc901,
3990 .driver_data
= SAA7134_BOARD_VIDEOMATE_DVBT_200
,
3992 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3993 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
3994 .subvendor
= 0x1435,
3995 .subdevice
= 0x7350,
3996 .driver_data
= SAA7134_BOARD_RTD_VFG7350
,
3998 .vendor
= PCI_VENDOR_ID_PHILIPS
,
3999 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
4000 .subvendor
= 0x1435,
4001 .subdevice
= 0x7330,
4002 .driver_data
= SAA7134_BOARD_RTD_VFG7330
,
4004 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4005 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
4006 .subvendor
= 0x1461,
4007 .subdevice
= 0x1044,
4008 .driver_data
= SAA7134_BOARD_AVERMEDIA_AVERTVHD_A180
,
4010 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4011 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
4012 .subvendor
= 0x1131,
4013 .subdevice
= 0x4ee9,
4014 .driver_data
= SAA7134_BOARD_MONSTERTV_MOBILE
,
4016 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4017 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
4018 .subvendor
= 0x11bd,
4019 .subdevice
= 0x002e,
4020 .driver_data
= SAA7134_BOARD_PINNACLE_PCTV_110i
,
4022 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4023 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
4024 .subvendor
= 0x1043,
4025 .subdevice
= 0x4862,
4026 .driver_data
= SAA7134_BOARD_ASUSTeK_P7131_DUAL
,
4028 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4029 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
4030 .subvendor
= PCI_VENDOR_ID_PHILIPS
,
4031 .subdevice
= 0x2018,
4032 .driver_data
= SAA7134_BOARD_PHILIPS_TIGER
,
4034 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4035 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
4036 .subvendor
= 0x1462,
4037 .subdevice
= 0x6231,
4038 .driver_data
= SAA7134_BOARD_MSI_TVATANYWHERE_PLUS
,
4040 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4041 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
4042 .subvendor
= 0x153b,
4043 .subdevice
= 0x1160,
4044 .driver_data
= SAA7134_BOARD_CINERGY250PCI
,
4046 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4047 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
, /* SAA 7131E */
4048 .subvendor
= 0x5168,
4049 .subdevice
= 0x0319,
4050 .driver_data
= SAA7134_BOARD_FLYDVB_TRIO
,
4052 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4053 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
4054 .subvendor
= 0x1461,
4055 .subdevice
= 0x2c05,
4056 .driver_data
= SAA7134_BOARD_AVERMEDIA_777
,
4058 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4059 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
4060 .subvendor
= 0x5168,
4061 .subdevice
= 0x0301,
4062 .driver_data
= SAA7134_BOARD_FLYDVBT_LR301
,
4064 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4065 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
4066 .subvendor
= 0x0331,
4067 .subdevice
= 0x1421,
4068 .driver_data
= SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331
,
4070 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4071 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
4072 .subvendor
= 0x17de,
4073 .subdevice
= 0x7201,
4074 .driver_data
= SAA7134_BOARD_TEVION_DVBT_220RF
,
4076 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4077 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
4078 .subvendor
= 0x17de,
4079 .subdevice
= 0x7250,
4080 .driver_data
= SAA7134_BOARD_KWORLD_DVBT_210
,
4082 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4083 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
, /* SAA7135HL */
4084 .subvendor
= 0x17de,
4085 .subdevice
= 0x7350,
4086 .driver_data
= SAA7134_BOARD_KWORLD_ATSC110
,
4088 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4089 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
, /* SAA7135HL */
4090 .subvendor
= 0x17de,
4091 .subdevice
= 0x7352,
4092 .driver_data
= SAA7134_BOARD_KWORLD_ATSC110
, /* ATSC 115 */
4094 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4095 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
4096 .subvendor
= 0x1461,
4097 .subdevice
= 0x7360,
4098 .driver_data
= SAA7134_BOARD_AVERMEDIA_A169_B
,
4100 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4101 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
4102 .subvendor
= 0x1461,
4103 .subdevice
= 0x6360,
4104 .driver_data
= SAA7134_BOARD_AVERMEDIA_A169_B1
,
4106 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4107 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
4108 .subvendor
= 0x16be,
4109 .subdevice
= 0x0005,
4110 .driver_data
= SAA7134_BOARD_MD7134_BRIDGE_2
,
4112 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4113 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
4114 .subvendor
= 0x5168,
4115 .subdevice
= 0x0300,
4116 .driver_data
= SAA7134_BOARD_FLYDVBS_LR300
,
4118 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4119 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
4120 .subvendor
= 0x4e42,
4121 .subdevice
= 0x0300,/* LR300 */
4122 .driver_data
= SAA7134_BOARD_FLYDVBS_LR300
,
4124 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4125 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
4126 .subvendor
= 0x1489,
4127 .subdevice
= 0x0301,
4128 .driver_data
= SAA7134_BOARD_FLYDVBT_LR301
,
4130 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4131 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
4132 .subvendor
= 0x5168, /* Animation Technologies (LifeView) */
4133 .subdevice
= 0x0304,
4134 .driver_data
= SAA7134_BOARD_FLYTVPLATINUM_FM
,
4136 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4137 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
4138 .subvendor
= 0x5168,
4139 .subdevice
= 0x3306,
4140 .driver_data
= SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS
,
4142 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4143 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
4144 .subvendor
= 0x5168,
4145 .subdevice
= 0x3502, /* whats the difference to 0x3306 ?*/
4146 .driver_data
= SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS
,
4148 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4149 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
4150 .subvendor
= 0x16be,
4151 .subdevice
= 0x0007,
4152 .driver_data
= SAA7134_BOARD_MEDION_MD8800_QUADRO
,
4154 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4155 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
4156 .subvendor
= 0x16be,
4157 .subdevice
= 0x0008,
4158 .driver_data
= SAA7134_BOARD_MEDION_MD8800_QUADRO
,
4160 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4161 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
4162 .subvendor
= 0x1461,
4163 .subdevice
= 0x2c05,
4164 .driver_data
= SAA7134_BOARD_AVERMEDIA_777
,
4166 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4167 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
4168 .subvendor
= 0x1489,
4169 .subdevice
= 0x0502, /* Cardbus version */
4170 .driver_data
= SAA7134_BOARD_FLYDVBT_DUO_CARDBUS
,
4172 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4173 .device
= PCI_DEVICE_ID_PHILIPS_SAA7130
,
4174 .subvendor
= 0x0919, /* Philips Proteus PRO 2309 */
4175 .subdevice
= 0x2003,
4176 .driver_data
= SAA7134_BOARD_PROTEUS_2309
,
4178 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4179 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
4180 .subvendor
= 0x1461,
4181 .subdevice
= 0x2c00,
4182 .driver_data
= SAA7134_BOARD_AVERMEDIA_A16AR
,
4184 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4185 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
4186 .subvendor
= 0x1043,
4187 .subdevice
= 0x4860,
4188 .driver_data
= SAA7134_BOARD_ASUS_EUROPA2_HYBRID
,
4190 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4191 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
4192 .subvendor
= 0x11bd,
4193 .subdevice
= 0x002f,
4194 .driver_data
= SAA7134_BOARD_PINNACLE_PCTV_310i
,
4196 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4197 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
4198 .subvendor
= 0x1461, /* Avermedia Technologies Inc */
4199 .subdevice
= 0x9715,
4200 .driver_data
= SAA7134_BOARD_AVERMEDIA_STUDIO_507
,
4202 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4203 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
4204 .subvendor
= 0x1043,
4205 .subdevice
= 0x4876,
4206 .driver_data
= SAA7134_BOARD_ASUSTeK_P7131_HYBRID_LNA
,
4208 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4209 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
4210 .subvendor
= 0x0070,
4211 .subdevice
= 0x6700,
4212 .driver_data
= SAA7134_BOARD_HAUPPAUGE_HVR1110
,
4214 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4215 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
4216 .subvendor
= 0x0070,
4217 .subdevice
= 0x6701,
4218 .driver_data
= SAA7134_BOARD_HAUPPAUGE_HVR1110
,
4220 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4221 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
4222 .subvendor
= 0x0070,
4223 .subdevice
= 0x6702,
4224 .driver_data
= SAA7134_BOARD_HAUPPAUGE_HVR1110
,
4226 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4227 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
4228 .subvendor
= 0x0070,
4229 .subdevice
= 0x6703,
4230 .driver_data
= SAA7134_BOARD_HAUPPAUGE_HVR1110
,
4232 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4233 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
4234 .subvendor
= 0x0070,
4235 .subdevice
= 0x6704,
4236 .driver_data
= SAA7134_BOARD_HAUPPAUGE_HVR1110
,
4238 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4239 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
4240 .subvendor
= 0x0070,
4241 .subdevice
= 0x6705,
4242 .driver_data
= SAA7134_BOARD_HAUPPAUGE_HVR1110
,
4244 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4245 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
4246 .subvendor
= 0x153b,
4247 .subdevice
= 0x1172,
4248 .driver_data
= SAA7134_BOARD_CINERGY_HT_PCMCIA
,
4250 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4251 .device
= PCI_DEVICE_ID_PHILIPS_SAA7130
,
4252 .subvendor
= PCI_VENDOR_ID_PHILIPS
,
4253 .subdevice
= 0x2342,
4254 .driver_data
= SAA7134_BOARD_ENCORE_ENLTV
,
4256 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4257 .device
= PCI_DEVICE_ID_PHILIPS_SAA7130
,
4258 .subvendor
= 0x1131,
4259 .subdevice
= 0x2341,
4260 .driver_data
= SAA7134_BOARD_ENCORE_ENLTV
,
4262 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4263 .device
= PCI_DEVICE_ID_PHILIPS_SAA7130
,
4264 .subvendor
= 0x3016,
4265 .subdevice
= 0x2344,
4266 .driver_data
= SAA7134_BOARD_ENCORE_ENLTV
,
4268 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4269 .device
= PCI_DEVICE_ID_PHILIPS_SAA7130
,
4270 .subvendor
= 0x1131,
4271 .subdevice
= 0x230f,
4272 .driver_data
= SAA7134_BOARD_ENCORE_ENLTV_FM
,
4274 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4275 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
4276 .subvendor
= 0x153b,
4277 .subdevice
= 0x1175,
4278 .driver_data
= SAA7134_BOARD_CINERGY_HT_PCI
,
4280 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4281 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
4282 .subvendor
= 0x1461, /* Avermedia Technologies Inc */
4283 .subdevice
= 0xf31e,
4284 .driver_data
= SAA7134_BOARD_AVERMEDIA_M102
,
4286 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4287 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
4288 .subvendor
= 0x4E42, /* MSI */
4289 .subdevice
= 0x0306, /* TV@nywhere DUO */
4290 .driver_data
= SAA7134_BOARD_FLYDVBTDUO
,
4292 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4293 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
4294 .subvendor
= 0x1043,
4295 .subdevice
= 0x4871,
4296 .driver_data
= SAA7134_BOARD_ASUS_P7131_4871
,
4298 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4299 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
4300 .subvendor
= 0x1043,
4301 .subdevice
= 0x4857,
4302 .driver_data
= SAA7134_BOARD_ASUSTeK_P7131_DUAL
,
4304 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4305 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
4306 .subvendor
= 0x0919, /* SinoVideo PCI 2309 Proteus (7134) */
4307 .subdevice
= 0x2003, /* OEM cardbus */
4308 .driver_data
= SAA7134_BOARD_SABRENT_TV_PCB05
,
4310 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4311 .device
= PCI_DEVICE_ID_PHILIPS_SAA7130
,
4312 .subvendor
= PCI_VENDOR_ID_PHILIPS
,
4313 .subdevice
= 0x2304,
4314 .driver_data
= SAA7134_BOARD_10MOONSTVMASTER3
,
4316 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4317 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
4318 .subvendor
= 0x1461, /* Avermedia Technologies Inc */
4319 .subdevice
= 0xf01d, /* AVerTV DVB-T Super 007 */
4320 .driver_data
= SAA7134_BOARD_AVERMEDIA_SUPER_007
,
4322 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4323 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
4324 .subvendor
= 0x4e42,
4325 .subdevice
= 0x3502,
4326 .driver_data
= SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS
4328 /* --- boards without eeprom + subsystem ID --- */
4329 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4330 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
4331 .subvendor
= PCI_VENDOR_ID_PHILIPS
,
4333 .driver_data
= SAA7134_BOARD_NOAUTO
,
4335 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4336 .device
= PCI_DEVICE_ID_PHILIPS_SAA7130
,
4337 .subvendor
= PCI_VENDOR_ID_PHILIPS
,
4339 .driver_data
= SAA7134_BOARD_NOAUTO
,
4341 /* --- default catch --- */
4342 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4343 .device
= PCI_DEVICE_ID_PHILIPS_SAA7130
,
4344 .subvendor
= PCI_ANY_ID
,
4345 .subdevice
= PCI_ANY_ID
,
4346 .driver_data
= SAA7134_BOARD_UNKNOWN
,
4348 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4349 .device
= PCI_DEVICE_ID_PHILIPS_SAA7133
,
4350 .subvendor
= PCI_ANY_ID
,
4351 .subdevice
= PCI_ANY_ID
,
4352 .driver_data
= SAA7134_BOARD_UNKNOWN
,
4354 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4355 .device
= PCI_DEVICE_ID_PHILIPS_SAA7134
,
4356 .subvendor
= PCI_ANY_ID
,
4357 .subdevice
= PCI_ANY_ID
,
4358 .driver_data
= SAA7134_BOARD_UNKNOWN
,
4360 .vendor
= PCI_VENDOR_ID_PHILIPS
,
4361 .device
= PCI_DEVICE_ID_PHILIPS_SAA7135
,
4362 .subvendor
= PCI_ANY_ID
,
4363 .subdevice
= PCI_ANY_ID
,
4364 .driver_data
= SAA7134_BOARD_UNKNOWN
,
4366 /* --- end of list --- */
4369 MODULE_DEVICE_TABLE(pci
, saa7134_pci_tbl
);
4371 /* ----------------------------------------------------------- */
4372 /* flyvideo tweaks */
4375 static void board_flyvideo(struct saa7134_dev
*dev
)
4377 printk("%s: there are different flyvideo cards with different tuners\n"
4378 "%s: out there, you might have to use the tuner=<nr> insmod\n"
4379 "%s: option to override the default value.\n",
4380 dev
->name
, dev
->name
, dev
->name
);
4383 /* ----------------------------------------------------------- */
4385 static void hauppauge_eeprom(struct saa7134_dev
*dev
, u8
*eeprom_data
)
4389 tveeprom_hauppauge_analog(&dev
->i2c_client
, &tv
, eeprom_data
);
4391 /* Make sure we support the board model */
4393 case 67019: /* WinTV-HVR1110 (Retail, IR Blaster, hybrid, FM, SVid/Comp, 3.5mm audio in) */
4394 case 67109: /* WinTV-HVR1000 (Retail, IR Receive, analog, no FM, SVid/Comp, 3.5mm audio in) */
4395 case 67559: /* WinTV-HVR1110 (OEM, no IR, hybrid, FM, SVid/Comp, RCA aud) */
4396 case 67569: /* WinTV-HVR1110 (OEM, no IR, hybrid, FM) */
4397 case 67579: /* WinTV-HVR1110 (OEM, no IR, hybrid, no FM) */
4398 case 67589: /* WinTV-HVR1110 (OEM, no IR, hybrid, no FM, SVid/Comp, RCA aud) */
4399 case 67599: /* WinTV-HVR1110 (OEM, no IR, hybrid, no FM, SVid/Comp, RCA aud) */
4402 printk(KERN_WARNING
"%s: warning: "
4403 "unknown hauppauge model #%d\n", dev
->name
, tv
.model
);
4407 printk(KERN_INFO
"%s: hauppauge eeprom: model=%d\n",
4408 dev
->name
, tv
.model
);
4411 /* ----------------------------------------------------------- */
4413 int saa7134_board_init1(struct saa7134_dev
*dev
)
4415 /* Always print gpio, often manufacturers encode tuner type and other info. */
4416 saa_writel(SAA7134_GPIO_GPMODE0
>> 2, 0);
4417 dev
->gpio_value
= saa_readl(SAA7134_GPIO_GPSTATUS0
>> 2);
4418 printk(KERN_INFO
"%s: board init: gpio is %x\n", dev
->name
, dev
->gpio_value
);
4420 switch (dev
->board
) {
4421 case SAA7134_BOARD_FLYVIDEO2000
:
4422 case SAA7134_BOARD_FLYVIDEO3000
:
4423 case SAA7134_BOARD_FLYVIDEO3000_NTSC
:
4424 dev
->has_remote
= SAA7134_REMOTE_GPIO
;
4425 board_flyvideo(dev
);
4427 case SAA7134_BOARD_FLYTVPLATINUM_MINI2
:
4428 case SAA7134_BOARD_FLYTVPLATINUM_FM
:
4429 case SAA7134_BOARD_CINERGY400
:
4430 case SAA7134_BOARD_CINERGY600
:
4431 case SAA7134_BOARD_CINERGY600_MK3
:
4432 case SAA7134_BOARD_ECS_TVP3XP
:
4433 case SAA7134_BOARD_ECS_TVP3XP_4CB5
:
4434 case SAA7134_BOARD_ECS_TVP3XP_4CB6
:
4435 case SAA7134_BOARD_MD2819
:
4436 case SAA7134_BOARD_KWORLD_VSTREAM_XPERT
:
4437 case SAA7134_BOARD_KWORLD_XPERT
:
4438 case SAA7134_BOARD_AVERMEDIA_STUDIO_305
:
4439 case SAA7134_BOARD_AVERMEDIA_305
:
4440 case SAA7134_BOARD_AVERMEDIA_STUDIO_307
:
4441 case SAA7134_BOARD_AVERMEDIA_307
:
4442 case SAA7134_BOARD_AVERMEDIA_STUDIO_507
:
4443 case SAA7134_BOARD_AVERMEDIA_GO_007_FM
:
4444 case SAA7134_BOARD_AVERMEDIA_777
:
4445 /* case SAA7134_BOARD_SABRENT_SBTTVFM: */ /* not finished yet */
4446 case SAA7134_BOARD_VIDEOMATE_TV_PVR
:
4447 case SAA7134_BOARD_VIDEOMATE_GOLD_PLUS
:
4448 case SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUSII
:
4449 case SAA7134_BOARD_VIDEOMATE_DVBT_300
:
4450 case SAA7134_BOARD_VIDEOMATE_DVBT_200
:
4451 case SAA7134_BOARD_VIDEOMATE_DVBT_200A
:
4452 case SAA7134_BOARD_MANLI_MTV001
:
4453 case SAA7134_BOARD_MANLI_MTV002
:
4454 case SAA7134_BOARD_BEHOLD_409FM
:
4455 case SAA7134_BOARD_AVACSSMARTTV
:
4456 case SAA7134_BOARD_GOTVIEW_7135
:
4457 case SAA7134_BOARD_KWORLD_TERMINATOR
:
4458 case SAA7134_BOARD_SEDNA_PC_TV_CARDBUS
:
4459 case SAA7134_BOARD_FLYDVBT_LR301
:
4460 case SAA7134_BOARD_ASUSTeK_P7131_DUAL
:
4461 case SAA7134_BOARD_ASUSTeK_P7131_HYBRID_LNA
:
4462 case SAA7134_BOARD_FLYDVBTDUO
:
4463 case SAA7134_BOARD_PROTEUS_2309
:
4464 case SAA7134_BOARD_AVERMEDIA_A16AR
:
4465 case SAA7134_BOARD_ENCORE_ENLTV
:
4466 case SAA7134_BOARD_ENCORE_ENLTV_FM
:
4467 case SAA7134_BOARD_10MOONSTVMASTER3
:
4468 dev
->has_remote
= SAA7134_REMOTE_GPIO
;
4470 case SAA7134_BOARD_FLYDVBS_LR300
:
4471 saa_writeb(SAA7134_GPIO_GPMODE3
, 0x80);
4472 saa_writeb(SAA7134_GPIO_GPSTATUS2
, 0x40);
4473 dev
->has_remote
= SAA7134_REMOTE_GPIO
;
4475 case SAA7134_BOARD_MD5044
:
4476 printk("%s: seems there are two different versions of the MD5044\n"
4477 "%s: (with the same ID) out there. If sound doesn't work for\n"
4478 "%s: you try the audio_clock_override=0x200000 insmod option.\n",
4479 dev
->name
,dev
->name
,dev
->name
);
4481 case SAA7134_BOARD_CINERGY400_CARDBUS
:
4482 /* power-up tuner chip */
4483 saa_andorl(SAA7134_GPIO_GPMODE0
>> 2, 0x00040000, 0x00040000);
4484 saa_andorl(SAA7134_GPIO_GPSTATUS0
>> 2, 0x00040000, 0x00000000);
4486 case SAA7134_BOARD_PINNACLE_300I_DVBT_PAL
:
4487 /* this turns the remote control chip off to work around a bug in it */
4488 saa_writeb(SAA7134_GPIO_GPMODE1
, 0x80);
4489 saa_writeb(SAA7134_GPIO_GPSTATUS1
, 0x80);
4491 case SAA7134_BOARD_MONSTERTV_MOBILE
:
4492 /* power-up tuner chip */
4493 saa_andorl(SAA7134_GPIO_GPMODE0
>> 2, 0x00040000, 0x00040000);
4494 saa_andorl(SAA7134_GPIO_GPSTATUS0
>> 2, 0x00040000, 0x00000004);
4496 case SAA7134_BOARD_FLYDVBT_DUO_CARDBUS
:
4497 /* turn the fan on */
4498 saa_writeb(SAA7134_GPIO_GPMODE3
, 0x08);
4499 saa_writeb(SAA7134_GPIO_GPSTATUS3
, 0x06);
4501 case SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331
:
4502 case SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS
:
4503 saa_andorl(SAA7134_GPIO_GPMODE0
>> 2, 0x08000000, 0x08000000);
4504 saa_andorl(SAA7134_GPIO_GPSTATUS0
>> 2, 0x08000000, 0x00000000);
4506 case SAA7134_BOARD_AVERMEDIA_CARDBUS
:
4507 /* power-up tuner chip */
4508 saa_andorl(SAA7134_GPIO_GPMODE0
>> 2, 0xffffffff, 0xffffffff);
4509 saa_andorl(SAA7134_GPIO_GPSTATUS0
>> 2, 0xffffffff, 0xffffffff);
4512 case SAA7134_BOARD_RTD_VFG7350
:
4515 * Make sure Production Test Register at offset 0x1D1 is cleared
4516 * to take chip out of test mode. Clearing bit 4 (TST_EN_AOUT)
4517 * prevents pin 105 from remaining low; keeping pin 105 low
4518 * continually resets the SAA6752 chip.
4521 saa_writeb (SAA7134_PRODUCTION_TEST_MODE
, 0x00);
4524 case SAA7134_BOARD_PINNACLE_PCTV_110i
:
4525 case SAA7134_BOARD_PINNACLE_PCTV_310i
:
4526 case SAA7134_BOARD_UPMOST_PURPLE_TV
:
4527 case SAA7134_BOARD_HAUPPAUGE_HVR1110
:
4528 dev
->has_remote
= SAA7134_REMOTE_I2C
;
4530 case SAA7134_BOARD_AVERMEDIA_A169_B
:
4531 case SAA7134_BOARD_MD7134_BRIDGE_2
:
4532 printk("%s: %s: dual saa713x broadcast decoders\n"
4533 "%s: Sorry, none of the inputs to this chip are supported yet.\n"
4534 "%s: Dual decoder functionality is disabled for now, use the other chip.\n",
4535 dev
->name
,card(dev
).name
,dev
->name
,dev
->name
);
4537 case SAA7134_BOARD_AVERMEDIA_M102
:
4539 saa_andorl(SAA7134_GPIO_GPMODE0
>> 2, 0x8c040007, 0x8c040007);
4540 saa_andorl(SAA7134_GPIO_GPSTATUS0
>> 2, 0x0c0007cd, 0x0c0007cd);
4546 /* stuff which needs working i2c */
4547 int saa7134_board_init2(struct saa7134_dev
*dev
)
4551 struct tuner_setup tun_setup
;
4552 tun_setup
.config
= 0;
4553 tun_setup
.tuner_callback
= saa7134_tuner_callback
;
4555 switch (dev
->board
) {
4556 case SAA7134_BOARD_BMK_MPEX_NOTUNER
:
4557 case SAA7134_BOARD_BMK_MPEX_TUNER
:
4558 dev
->i2c_client
.addr
= 0x60;
4559 board
= (i2c_master_recv(&dev
->i2c_client
,&buf
,0) < 0)
4560 ? SAA7134_BOARD_BMK_MPEX_NOTUNER
4561 : SAA7134_BOARD_BMK_MPEX_TUNER
;
4562 if (board
== dev
->board
)
4565 printk("%s: board type fixup: %s\n", dev
->name
,
4566 saa7134_boards
[dev
->board
].name
);
4567 dev
->tuner_type
= saa7134_boards
[dev
->board
].tuner_type
;
4569 if (TUNER_ABSENT
!= dev
->tuner_type
) {
4570 tun_setup
.mode_mask
= T_RADIO
| T_ANALOG_TV
| T_DIGITAL_TV
;
4571 tun_setup
.type
= dev
->tuner_type
;
4572 tun_setup
.addr
= ADDR_UNSET
;
4574 saa7134_i2c_call_clients (dev
, TUNER_SET_TYPE_ADDR
, &tun_setup
);
4577 case SAA7134_BOARD_MD7134
:
4583 struct i2c_msg msg
[] = {{.addr
=0x50, .flags
=0, .buf
=&subaddr
, .len
= 1},
4584 {.addr
=0x50, .flags
=I2C_M_RD
, .buf
=data
, .len
= 3}};
4587 ret
= i2c_transfer(&dev
->i2c_adap
, msg
, 2);
4589 printk(KERN_ERR
"EEPROM read failure\n");
4590 } else if ((data
[0] != 0) && (data
[0] != 0xff)) {
4591 /* old config structure */
4592 subaddr
= data
[0] + 2;
4594 i2c_transfer(&dev
->i2c_adap
, msg
, 2);
4595 tuner_t
= (data
[0] << 8) + data
[1];
4598 dev
->tuner_type
= TUNER_PHILIPS_PAL
;
4601 dev
->tuner_type
= TUNER_PHILIPS_FM1216ME_MK3
;
4604 printk(KERN_ERR
"%s Cant determine tuner type %x from EEPROM\n", dev
->name
, tuner_t
);
4606 } else if ((data
[1] != 0) && (data
[1] != 0xff)) {
4607 /* new config structure */
4608 subaddr
= data
[1] + 1;
4610 i2c_transfer(&dev
->i2c_adap
, msg
, 2);
4611 subaddr
= data
[0] + 1;
4613 i2c_transfer(&dev
->i2c_adap
, msg
, 2);
4614 tuner_t
= (data
[1] << 8) + data
[0];
4617 dev
->tuner_type
= TUNER_PHILIPS_FM1216ME_MK3
;
4620 dev
->tuner_type
= TUNER_PHILIPS_FMD1216ME_MK3
;
4621 printk(KERN_INFO
"%s Board has DVB-T\n", dev
->name
);
4624 printk(KERN_ERR
"%s Cant determine tuner type %x from EEPROM\n", dev
->name
, tuner_t
);
4627 printk(KERN_ERR
"%s unexpected config structure\n", dev
->name
);
4630 printk(KERN_INFO
"%s Tuner type is %d\n", dev
->name
, dev
->tuner_type
);
4631 if (dev
->tuner_type
== TUNER_PHILIPS_FMD1216ME_MK3
) {
4632 struct v4l2_priv_tun_config tda9887_cfg
;
4634 tda9887_cfg
.tuner
= TUNER_TDA9887
;
4635 tda9887_cfg
.priv
= &dev
->tda9887_conf
;
4637 dev
->tda9887_conf
= TDA9887_PRESENT
|
4638 TDA9887_PORT1_ACTIVE
|
4639 TDA9887_PORT2_ACTIVE
;
4641 saa7134_i2c_call_clients(dev
, TUNER_SET_CONFIG
,
4645 tun_setup
.mode_mask
= T_RADIO
| T_ANALOG_TV
| T_DIGITAL_TV
;
4646 tun_setup
.type
= dev
->tuner_type
;
4647 tun_setup
.addr
= ADDR_UNSET
;
4649 saa7134_i2c_call_clients (dev
, TUNER_SET_TYPE_ADDR
,&tun_setup
);
4652 case SAA7134_BOARD_PHILIPS_EUROPA
:
4653 case SAA7134_BOARD_VIDEOMATE_DVBT_300
:
4654 case SAA7134_BOARD_ASUS_EUROPA2_HYBRID
:
4655 /* The Philips EUROPA based hybrid boards have the tuner connected through
4656 * the channel decoder. We have to make it transparent to find it
4659 u8 data
[] = { 0x07, 0x02};
4660 struct i2c_msg msg
= {.addr
=0x08, .flags
=0, .buf
=data
, .len
= sizeof(data
)};
4661 i2c_transfer(&dev
->i2c_adap
, &msg
, 1);
4663 tun_setup
.mode_mask
= T_ANALOG_TV
| T_DIGITAL_TV
;
4664 tun_setup
.type
= dev
->tuner_type
;
4665 tun_setup
.addr
= dev
->tuner_addr
;
4667 saa7134_i2c_call_clients (dev
, TUNER_SET_TYPE_ADDR
,&tun_setup
);
4670 case SAA7134_BOARD_PHILIPS_TIGER
:
4671 case SAA7134_BOARD_PHILIPS_TIGER_S
:
4672 case SAA7134_BOARD_AVERMEDIA_SUPER_007
:
4674 u8 data
[] = { 0x3c, 0x33, 0x60};
4675 struct i2c_msg msg
= {.addr
=0x08, .flags
=0, .buf
=data
, .len
= sizeof(data
)};
4676 if(dev
->autodetected
&& (dev
->eedata
[0x49] == 0x50)) {
4677 dev
->board
= SAA7134_BOARD_PHILIPS_TIGER_S
;
4678 printk(KERN_INFO
"%s: Reconfigured board as %s\n",
4679 dev
->name
, saa7134_boards
[dev
->board
].name
);
4681 if(dev
->board
== SAA7134_BOARD_PHILIPS_TIGER_S
) {
4682 tun_setup
.mode_mask
= T_ANALOG_TV
| T_DIGITAL_TV
;
4683 tun_setup
.type
= TUNER_PHILIPS_TDA8290
;
4684 tun_setup
.addr
= 0x4b;
4685 tun_setup
.config
= 2;
4687 saa7134_i2c_call_clients (dev
, TUNER_SET_TYPE_ADDR
,&tun_setup
);
4690 i2c_transfer(&dev
->i2c_adap
, &msg
, 1);
4693 case SAA7134_BOARD_HAUPPAUGE_HVR1110
:
4694 hauppauge_eeprom(dev
, dev
->eedata
+0x80);
4695 /* break intentionally omitted */
4696 case SAA7134_BOARD_PINNACLE_PCTV_310i
:
4697 case SAA7134_BOARD_KWORLD_DVBT_210
:
4698 case SAA7134_BOARD_TEVION_DVBT_220RF
:
4699 case SAA7134_BOARD_ASUSTeK_P7131_DUAL
:
4700 case SAA7134_BOARD_ASUSTeK_P7131_HYBRID_LNA
:
4701 case SAA7134_BOARD_MEDION_MD8800_QUADRO
:
4702 /* this is a hybrid board, initialize to analog mode
4703 * and configure firmware eeprom address
4706 u8 data
[] = { 0x3c, 0x33, 0x60};
4707 struct i2c_msg msg
= {.addr
=0x08, .flags
=0, .buf
=data
, .len
= sizeof(data
)};
4708 i2c_transfer(&dev
->i2c_adap
, &msg
, 1);
4711 case SAA7134_BOARD_FLYDVB_TRIO
:
4713 u8 data
[] = { 0x3c, 0x33, 0x62};
4714 struct i2c_msg msg
= {.addr
=0x09, .flags
=0, .buf
=data
, .len
= sizeof(data
)};
4715 i2c_transfer(&dev
->i2c_adap
, &msg
, 1);
4718 case SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331
:
4719 case SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS
:
4720 /* initialize analog mode */
4722 u8 data
[] = { 0x3c, 0x33, 0x6a};
4723 struct i2c_msg msg
= {.addr
=0x08, .flags
=0, .buf
=data
, .len
= sizeof(data
)};
4724 i2c_transfer(&dev
->i2c_adap
, &msg
, 1);
4727 case SAA7134_BOARD_CINERGY_HT_PCMCIA
:
4728 case SAA7134_BOARD_CINERGY_HT_PCI
:
4729 /* initialize analog mode */
4731 u8 data
[] = { 0x3c, 0x33, 0x68};
4732 struct i2c_msg msg
= {.addr
=0x08, .flags
=0, .buf
=data
, .len
= sizeof(data
)};
4733 i2c_transfer(&dev
->i2c_adap
, &msg
, 1);
4736 case SAA7134_BOARD_KWORLD_ATSC110
:
4740 static const u8 buffer
[] = { 0x10,0x12,0x13,0x04,0x16,0x00,0x14,0x04,0x017,0x00 };
4741 dev
->i2c_client
.addr
= 0x0a;
4742 for (i
= 0; i
< 5; i
++)
4743 if (2 != i2c_master_send(&dev
->i2c_client
,&buffer
[i
*2],2))
4744 printk(KERN_WARNING
"%s: Unable to enable tuner(%i).\n",
4748 case SAA7134_BOARD_VIDEOMATE_DVBT_200
:
4749 case SAA7134_BOARD_VIDEOMATE_DVBT_200A
:
4750 /* The T200 and the T200A share the same pci id. Consequently,
4751 * we are going to query eeprom to try to find out which one we
4752 * are actually looking at. */
4754 /* Don't do this if the board was specifically selected with an
4755 * insmod option or if we have the default configuration T200*/
4756 if(!dev
->autodetected
|| (dev
->eedata
[0x41] == 0xd0))
4758 if(dev
->eedata
[0x41] == 0x02) {
4759 /* Reconfigure board as T200A */
4760 dev
->board
= SAA7134_BOARD_VIDEOMATE_DVBT_200A
;
4761 dev
->tuner_type
= saa7134_boards
[dev
->board
].tuner_type
;
4762 dev
->tda9887_conf
= saa7134_boards
[dev
->board
].tda9887_conf
;
4763 printk(KERN_INFO
"%s: Reconfigured board as %s\n",
4764 dev
->name
, saa7134_boards
[dev
->board
].name
);
4766 printk(KERN_WARNING
"%s: Unexpected tuner type info: %x in eeprom\n",
4767 dev
->name
, dev
->eedata
[0x41]);
4775 /* ----------------------------------------------------------- */