2 * device driver for philips saa7134 based TV cards
5 * (c) 2001-04 Gerd Knorr <kraxel@bytesex.org> [SuSE Labs]
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
22 #include <linux/init.h>
23 #include <linux/module.h>
25 #include "saa7134-reg.h"
28 /* commly used strings */
29 static char name_mute[] = "mute";
30 static char name_radio[] = "Radio";
31 static char name_tv[] = "Television";
32 static char name_tv_mono[] = "TV (mono only)";
33 static char name_comp1[] = "Composite1";
34 static char name_comp2[] = "Composite2";
35 static char name_comp3[] = "Composite3";
36 static char name_comp4[] = "Composite4";
37 static char name_svideo[] = "S-Video";
39 /* ------------------------------------------------------------------ */
40 /* board config info */
42 struct saa7134_board saa7134_boards[] = {
43 [SAA7134_BOARD_UNKNOWN] = {
44 .name = "UNKNOWN/GENERIC",
45 .audio_clock = 0x00187de7,
46 .tuner_type = TUNER_ABSENT,
53 [SAA7134_BOARD_PROTEUS_PRO] = {
55 .name = "Proteus Pro [philips reference design]",
56 .audio_clock = 0x00187de7,
57 .tuner_type = TUNER_PHILIPS_PAL,
78 [SAA7134_BOARD_FLYVIDEO3000] = {
79 /* "Marco d'Itri" <md@Linux.IT> */
80 .name = "LifeView FlyVIDEO3000",
81 .audio_clock = 0x00200000,
82 .tuner_type = TUNER_PHILIPS_PAL,
118 [SAA7134_BOARD_FLYVIDEO2000] = {
119 /* "TC Wan" <tcwan@cs.usm.my> */
120 .name = "LifeView FlyVIDEO2000",
121 .audio_clock = 0x00200000,
122 .tuner_type = TUNER_LG_PAL_NEW_TAPC,
157 [SAA7134_BOARD_EMPRESS] = {
158 /* "Gert Vervoort" <gert.vervoort@philips.com> */
160 .audio_clock = 0x00187de7,
161 .tuner_type = TUNER_PHILIPS_PAL,
182 .video_out = CCIR656,
184 [SAA7134_BOARD_MONSTERTV] = {
185 /* "K.Ohta" <alpha292@bremen.or.jp> */
186 .name = "SKNet Monster TV",
187 .audio_clock = 0x00187de7,
188 .tuner_type = TUNER_PHILIPS_NTSC_M,
208 [SAA7134_BOARD_MD9717] = {
209 .name = "Tevion MD 9717",
210 .audio_clock = 0x00200000,
211 .tuner_type = TUNER_PHILIPS_PAL,
218 /* workaround for problems with normal TV sound */
219 .name = name_tv_mono,
241 [SAA7134_BOARD_TVSTATION_RDS] = {
242 /* Typhoon TV Tuner RDS: Art.Nr. 50694 */
243 .name = "KNC One TV-Station RDS / Typhoon TV Tuner RDS",
244 .audio_clock = 0x00200000,
245 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
253 .name = name_tv_mono,
268 .name = "CVid over SVid",
277 [SAA7134_BOARD_TVSTATION_DVR] = {
278 .name = "KNC One TV-Station DVR",
279 .audio_clock = 0x00200000,
280 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
282 .gpiomask = 0x820000,
307 .video_out = CCIR656,
309 [SAA7134_BOARD_CINERGY400] = {
310 .name = "Terratec Cinergy 400 TV",
311 .audio_clock = 0x00200000,
312 .tuner_type = TUNER_PHILIPS_PAL,
327 .name = name_comp2, // CVideo over SVideo Connector
332 [SAA7134_BOARD_MD5044] = {
333 .name = "Medion 5044",
334 .audio_clock = 0x00187de7, // was: 0x00200000,
335 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
343 /* workaround for problems with normal TV sound */
344 .name = name_tv_mono,
366 [SAA7134_BOARD_KWORLD] = {
367 .name = "Kworld/KuroutoShikou SAA7130-TVPCI",
368 .audio_clock = 0x00187de7,
369 .tuner_type = TUNER_PHILIPS_NTSC_M,
385 [SAA7134_BOARD_CINERGY600] = {
386 .name = "Terratec Cinergy 600 TV",
387 .audio_clock = 0x00200000,
388 .tuner_type = TUNER_PHILIPS_PAL,
403 .name = name_comp2, // CVideo over SVideo Connector
412 [SAA7134_BOARD_MD7134] = {
413 .name = "Medion 7134",
414 //.audio_clock = 0x00200000,
415 .audio_clock = 0x00187de7,
416 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
437 [SAA7134_BOARD_TYPHOON_90031] = {
438 /* aka Typhoon "TV+Radio", Art.Nr 90031 */
439 /* Tom Zoerner <tomzo at users sourceforge net> */
440 .name = "Typhoon TV+Radio 90031",
441 .audio_clock = 0x00200000,
442 .tuner_type = TUNER_PHILIPS_PAL,
463 [SAA7134_BOARD_ELSA] = {
464 .name = "ELSA EX-VISION 300TV",
465 .audio_clock = 0x00187de7,
466 .tuner_type = TUNER_HITACHI_NTSC,
482 [SAA7134_BOARD_ELSA_500TV] = {
483 .name = "ELSA EX-VISION 500TV",
484 .audio_clock = 0x00187de7,
485 .tuner_type = TUNER_HITACHI_NTSC,
496 .name = name_tv_mono,
502 [SAA7134_BOARD_ASUSTeK_TVFM7134] = {
503 .name = "ASUS TV-FM 7134",
504 .audio_clock = 0x00187de7,
505 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
526 [SAA7134_BOARD_VA1000POWER] = {
527 .name = "AOPEN VA1000 POWER",
528 .audio_clock = 0x00187de7,
529 .tuner_type = TUNER_PHILIPS_NTSC,
545 [SAA7134_BOARD_10MOONSTVMASTER] = {
546 /* "lilicheng" <llc@linuxfans.org> */
547 .name = "10MOONS PCI TV CAPTURE CARD",
548 .audio_clock = 0x00200000,
549 .tuner_type = TUNER_LG_PAL_NEW_TAPC,
584 [SAA7134_BOARD_BMK_MPEX_NOTUNER] = {
585 /* "Andrew de Quincey" <adq@lidskialf.net> */
586 .name = "BMK MPEX No Tuner",
587 .audio_clock = 0x200000,
588 .tuner_type = TUNER_ABSENT,
612 .video_out = CCIR656,
614 [SAA7134_BOARD_VIDEOMATE_TV] = {
615 .name = "Compro VideoMate TV",
616 .audio_clock = 0x00187de7,
617 .tuner_type = TUNER_PHILIPS_NTSC_M,
633 [SAA7134_BOARD_CRONOS_PLUS] = {
639 14 .. 15 VIDIN_SEL */
640 .name = "Matrox CronosPlus",
641 .tuner_type = TUNER_ABSENT,
665 [SAA7134_BOARD_MD2819] = {
666 .name = "AverMedia M156 / Medion 2819",
667 .audio_clock = 0x00187de7,
668 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
693 [SAA7134_BOARD_BMK_MPEX_TUNER] = {
694 /* "Greg Wickham <greg.wickham@grangenet.net> */
695 .name = "BMK MPEX Tuner",
696 .audio_clock = 0x200000,
697 .tuner_type = TUNER_PHILIPS_PAL,
714 .video_out = CCIR656,
716 [SAA7134_BOARD_ASUSTEK_TVFM7133] = {
717 .name = "ASUS TV-FM 7133",
718 .audio_clock = 0x00187de7,
719 // probably wrong, the 7133 one is the NTSC version ...
720 // .tuner_type = TUNER_PHILIPS_FM1236_MK3
721 .tuner_type = TUNER_LG_NTSC_NEW_TAPC,
742 [SAA7134_BOARD_PINNACLE_PCTV_STEREO] = {
743 .name = "Pinnacle PCTV Stereo (saa7134)",
744 .audio_clock = 0x00187de7,
745 .tuner_type = TUNER_MT2032,
766 [SAA7134_BOARD_MANLI_MTV002] = {
767 /* Ognjen Nastic <ognjen@logosoft.ba> */
768 .name = "Manli MuchTV M-TV002",
769 .audio_clock = 0x00200000,
770 .tuner_type = TUNER_PHILIPS_PAL,
790 [SAA7134_BOARD_MANLI_MTV001] = {
791 /* Ognjen Nastic <ognjen@logosoft.ba> UNTESTED */
792 .name = "Manli MuchTV M-TV001",
793 .audio_clock = 0x00200000,
794 .tuner_type = TUNER_PHILIPS_PAL,
810 [SAA7134_BOARD_TG3000TV] = {
811 /* TransGear 3000TV */
812 .name = "Nagase Sangyo TransGear 3000TV",
813 .audio_clock = 0x00187de7,
814 .tuner_type = TUNER_PHILIPS_NTSC_M,
830 [SAA7134_BOARD_ECS_TVP3XP] = {
831 .name = "Elitegroup ECS TVP3XP FM1216 Tuner Card(PAL-BG,FM) ",
832 .audio_clock = 0x187de7, // xtal 32.1 MHz
833 .tuner_type = TUNER_PHILIPS_PAL,
840 .name = name_tv_mono,
853 .name = "CVid over SVid",
862 [SAA7134_BOARD_ECS_TVP3XP_4CB5] = {
863 .name = "Elitegroup ECS TVP3XP FM1236 Tuner Card (NTSC,FM)",
864 .audio_clock = 0x187de7,
865 .tuner_type = TUNER_PHILIPS_NTSC,
872 .name = name_tv_mono,
885 .name = "CVid over SVid",
894 [SAA7134_BOARD_AVACSSMARTTV] = {
895 /* Roman Pszonczenko <romka@kolos.math.uni.lodz.pl> */
896 .name = "AVACS SmartTV",
897 .audio_clock = 0x00187de7,
898 .tuner_type = TUNER_PHILIPS_PAL,
905 .name = name_tv_mono,
928 [SAA7134_BOARD_AVERMEDIA_DVD_EZMAKER] = {
929 /* Michael Smith <msmith@cbnco.com> */
930 .name = "AVerMedia DVD EZMaker",
931 .audio_clock = 0x00187de7,
932 .tuner_type = TUNER_ABSENT,
938 [SAA7134_BOARD_NOVAC_PRIMETV7133] = {
939 /* toshii@netbsd.org */
940 .name = "Noval Prime TV 7133",
941 .audio_clock = 0x00200000,
942 .tuner_type = TUNER_ALPS_TSBH1_NTSC,
956 [SAA7134_BOARD_AVERMEDIA_305] = {
957 .name = "AverMedia 305",
958 .audio_clock = 0x00187de7,
959 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
988 [SAA7133_BOARD_UPMOST_PURPLE_TV] = {
989 .name = "UPMOST PURPLE TV",
990 .audio_clock = 0x00187de7,
991 .tuner_type = TUNER_PHILIPS_FM1236_MK3,
1004 [SAA7134_BOARD_ITEMS_MTV005] = {
1005 /* Norman Jonas <normanjonas@arcor.de> */
1006 .name = "Items MuchTV Plus / IT-005",
1007 .audio_clock = 0x00187de7,
1008 .tuner_type = TUNER_PHILIPS_PAL,
1019 .name = name_svideo,
1029 const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards);
1031 /* ------------------------------------------------------------------ */
1032 /* PCI ids + subsystem IDs */
1034 struct pci_device_id saa7134_pci_tbl[] = {
1036 .vendor = PCI_VENDOR_ID_PHILIPS,
1037 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1038 .subvendor = PCI_VENDOR_ID_PHILIPS,
1039 .subdevice = 0x2001,
1040 .driver_data = SAA7134_BOARD_PROTEUS_PRO,
1042 .vendor = PCI_VENDOR_ID_PHILIPS,
1043 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
1044 .subvendor = PCI_VENDOR_ID_PHILIPS,
1045 .subdevice = 0x2001,
1046 .driver_data = SAA7134_BOARD_PROTEUS_PRO,
1048 .vendor = PCI_VENDOR_ID_PHILIPS,
1049 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1050 .subvendor = PCI_VENDOR_ID_PHILIPS,
1051 .subdevice = 0x6752,
1052 .driver_data = SAA7134_BOARD_EMPRESS,
1054 .vendor = PCI_VENDOR_ID_PHILIPS,
1055 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1056 .subvendor = 0x1131,
1057 .subdevice = 0x4e85,
1058 .driver_data = SAA7134_BOARD_MONSTERTV,
1060 .vendor = PCI_VENDOR_ID_PHILIPS,
1061 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1062 .subvendor = 0x153B,
1063 .subdevice = 0x1142,
1064 .driver_data = SAA7134_BOARD_CINERGY400,
1066 .vendor = PCI_VENDOR_ID_PHILIPS,
1067 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1068 .subvendor = 0x153B,
1069 .subdevice = 0x1143,
1070 .driver_data = SAA7134_BOARD_CINERGY600,
1072 .vendor = PCI_VENDOR_ID_PHILIPS,
1073 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1074 .subvendor = 0x5168,
1075 .subdevice = 0x0138,
1076 .driver_data = SAA7134_BOARD_FLYVIDEO3000,
1078 .vendor = PCI_VENDOR_ID_PHILIPS,
1079 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1080 .subvendor = 0x4e42, //"Typhoon PCI Capture TV Card" Art.No. 50673
1081 .subdevice = 0x0138,
1082 .driver_data = SAA7134_BOARD_FLYVIDEO3000,
1084 .vendor = PCI_VENDOR_ID_PHILIPS,
1085 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1086 .subvendor = 0x5168,
1087 .subdevice = 0x0138,
1088 .driver_data = SAA7134_BOARD_FLYVIDEO2000,
1090 .vendor = PCI_VENDOR_ID_PHILIPS,
1091 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1092 .subvendor = 0x16be,
1093 .subdevice = 0x0003,
1094 .driver_data = SAA7134_BOARD_MD7134,
1096 .vendor = PCI_VENDOR_ID_PHILIPS,
1097 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1098 .subvendor = 0x1048,
1099 .subdevice = 0x226b,
1100 .driver_data = SAA7134_BOARD_ELSA,
1102 .vendor = PCI_VENDOR_ID_PHILIPS,
1103 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1104 .subvendor = 0x1048,
1105 .subdevice = 0x226b,
1106 .driver_data = SAA7134_BOARD_ELSA_500TV,
1108 .vendor = PCI_VENDOR_ID_PHILIPS,
1109 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1110 .subvendor = PCI_VENDOR_ID_ASUSTEK,
1111 .subdevice = 0x4842,
1112 .driver_data = SAA7134_BOARD_ASUSTeK_TVFM7134,
1114 .vendor = PCI_VENDOR_ID_PHILIPS,
1115 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1116 .subvendor = PCI_VENDOR_ID_ASUSTEK,
1117 .subdevice = 0x4830,
1118 .driver_data = SAA7134_BOARD_ASUSTeK_TVFM7134,
1120 .vendor = PCI_VENDOR_ID_PHILIPS,
1121 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
1122 .subvendor = PCI_VENDOR_ID_ASUSTEK,
1123 .subdevice = 0x4843,
1124 .driver_data = SAA7134_BOARD_ASUSTEK_TVFM7133,
1126 .vendor = PCI_VENDOR_ID_PHILIPS,
1127 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1128 .subvendor = PCI_VENDOR_ID_ASUSTEK,
1129 .subdevice = 0x4840,
1130 .driver_data = SAA7134_BOARD_ASUSTeK_TVFM7134,
1132 .vendor = PCI_VENDOR_ID_PHILIPS,
1133 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1134 .subvendor = PCI_VENDOR_ID_PHILIPS,
1135 .subdevice = 0xfe01,
1136 .driver_data = SAA7134_BOARD_TVSTATION_RDS,
1138 .vendor = PCI_VENDOR_ID_PHILIPS,
1139 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1140 .subvendor = 0x1894,
1141 .subdevice = 0xfe01,
1142 .driver_data = SAA7134_BOARD_TVSTATION_RDS,
1144 .vendor = PCI_VENDOR_ID_PHILIPS,
1145 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1146 .subvendor = 0x1894,
1147 .subdevice = 0xa006,
1148 .driver_data = SAA7134_BOARD_TVSTATION_DVR,
1150 .vendor = PCI_VENDOR_ID_PHILIPS,
1151 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1152 .subvendor = 0x1131,
1153 .subdevice = 0x7133,
1154 .driver_data = SAA7134_BOARD_VA1000POWER,
1156 .vendor = PCI_VENDOR_ID_PHILIPS,
1157 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1158 .subvendor = PCI_VENDOR_ID_PHILIPS,
1159 .subdevice = 0x2001,
1160 .driver_data = SAA7134_BOARD_10MOONSTVMASTER,
1162 .vendor = PCI_VENDOR_ID_PHILIPS,
1163 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
1164 .subvendor = 0x185b,
1165 .subdevice = 0xc100,
1166 .driver_data = SAA7134_BOARD_VIDEOMATE_TV,
1168 .vendor = PCI_VENDOR_ID_PHILIPS,
1169 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1170 .subvendor = PCI_VENDOR_ID_MATROX,
1171 .subdevice = 0x48d0,
1172 .driver_data = SAA7134_BOARD_CRONOS_PLUS,
1174 .vendor = PCI_VENDOR_ID_PHILIPS,
1175 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1176 .subvendor = 0x1461, /* Avermedia Technologies Inc */
1177 .subdevice = 0xa70b,
1178 .driver_data = SAA7134_BOARD_MD2819,
1180 .vendor = PCI_VENDOR_ID_PHILIPS,
1181 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1182 .subvendor = 0x1461, /* Avermedia Technologies Inc */
1183 .subdevice = 0x2115,
1184 .driver_data = SAA7134_BOARD_AVERMEDIA_305,
1186 .vendor = PCI_VENDOR_ID_PHILIPS,
1187 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1188 .subvendor = 0x1461, /* Avermedia Technologies Inc */
1189 .subdevice = 0x10ff,
1190 .driver_data = SAA7134_BOARD_AVERMEDIA_DVD_EZMAKER,
1192 /* TransGear 3000TV */
1193 .vendor = PCI_VENDOR_ID_PHILIPS,
1194 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1195 .subvendor = 0x1461, /* Avermedia Technologies Inc */
1196 .subdevice = 0x050c,
1197 .driver_data = SAA7134_BOARD_TG3000TV,
1199 .vendor = PCI_VENDOR_ID_PHILIPS,
1200 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1201 .subvendor = 0x11bd,
1202 .subdevice = 0x002b,
1203 .driver_data = SAA7134_BOARD_PINNACLE_PCTV_STEREO,
1205 .vendor = PCI_VENDOR_ID_PHILIPS,
1206 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1207 .subvendor = 0x1019,
1208 .subdevice = 0x4cb4,
1209 .driver_data = SAA7134_BOARD_ECS_TVP3XP,
1211 .vendor = PCI_VENDOR_ID_PHILIPS,
1212 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
1213 .subvendor = 0x1019,
1214 .subdevice = 0x4cb5,
1215 .driver_data = SAA7134_BOARD_ECS_TVP3XP_4CB5,
1217 .vendor = PCI_VENDOR_ID_PHILIPS,
1218 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
1219 .subvendor = 0x12ab,
1220 .subdevice = 0x0800,
1221 .driver_data = SAA7133_BOARD_UPMOST_PURPLE_TV,
1224 /* --- boards without eeprom + subsystem ID --- */
1225 .vendor = PCI_VENDOR_ID_PHILIPS,
1226 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1227 .subvendor = PCI_VENDOR_ID_PHILIPS,
1229 .driver_data = SAA7134_BOARD_NOAUTO,
1231 .vendor = PCI_VENDOR_ID_PHILIPS,
1232 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1233 .subvendor = PCI_VENDOR_ID_PHILIPS,
1235 .driver_data = SAA7134_BOARD_NOAUTO,
1238 /* --- default catch --- */
1239 .vendor = PCI_VENDOR_ID_PHILIPS,
1240 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1241 .subvendor = PCI_ANY_ID,
1242 .subdevice = PCI_ANY_ID,
1243 .driver_data = SAA7134_BOARD_UNKNOWN,
1245 .vendor = PCI_VENDOR_ID_PHILIPS,
1246 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
1247 .subvendor = PCI_ANY_ID,
1248 .subdevice = PCI_ANY_ID,
1249 .driver_data = SAA7134_BOARD_UNKNOWN,
1251 .vendor = PCI_VENDOR_ID_PHILIPS,
1252 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1253 .subvendor = PCI_ANY_ID,
1254 .subdevice = PCI_ANY_ID,
1255 .driver_data = SAA7134_BOARD_UNKNOWN,
1257 .vendor = PCI_VENDOR_ID_PHILIPS,
1258 .device = PCI_DEVICE_ID_PHILIPS_SAA7135,
1259 .subvendor = PCI_ANY_ID,
1260 .subdevice = PCI_ANY_ID,
1261 .driver_data = SAA7134_BOARD_UNKNOWN,
1263 /* --- end of list --- */
1266 MODULE_DEVICE_TABLE(pci, saa7134_pci_tbl);
1268 /* ----------------------------------------------------------- */
1269 /* flyvideo tweaks */
1275 } fly_list[0x20] = {
1276 /* default catch ... */
1279 .tuner_type = TUNER_ABSENT,
1281 /* ... the ones known so far */
1284 .tuner_type = TUNER_LG_PAL_NEW_TAPC,
1287 .model = "PAL-BG / PAL-DK",
1288 .tuner_type = TUNER_PHILIPS_PAL,
1292 .tuner_type = TUNER_ABSENT /* FIXME */,
1297 static void board_flyvideo(struct saa7134_dev *dev)
1303 value = dev->gpio_value;
1304 index = (value & 0x1f00) >> 8;
1305 printk(KERN_INFO "%s: flyvideo: gpio is 0x%x [model=%s,tuner=%d]\n",
1306 dev->name, value, fly_list[index].model,
1307 fly_list[index].tuner_type);
1308 dev->tuner_type = fly_list[index].tuner_type;
1312 /* ----------------------------------------------------------- */
1314 int saa7134_board_init(struct saa7134_dev *dev)
1316 // Always print gpio, often manufacturers encode tuner type and other info.
1317 saa_writel(SAA7134_GPIO_GPMODE0 >> 2, 0);
1318 dev->gpio_value = saa_readl(SAA7134_GPIO_GPSTATUS0 >> 2);
1319 printk(KERN_INFO "%s: board init: gpio is %x\n", dev->name, dev->gpio_value);
1321 switch (dev->board) {
1322 case SAA7134_BOARD_FLYVIDEO2000:
1323 case SAA7134_BOARD_FLYVIDEO3000:
1324 board_flyvideo(dev);
1325 dev->has_remote = 1;
1327 case SAA7134_BOARD_CINERGY400:
1328 case SAA7134_BOARD_CINERGY600:
1329 case SAA7134_BOARD_ECS_TVP3XP:
1330 case SAA7134_BOARD_ECS_TVP3XP_4CB5:
1331 dev->has_remote = 1;
1333 case SAA7134_BOARD_AVACSSMARTTV:
1334 dev->has_remote = 1;
1340 /* ----------------------------------------------------------- */