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,
443 [SAA7134_BOARD_TYPHOON_90031] = {
444 /* aka Typhoon "TV+Radio", Art.Nr 90031 */
445 /* Tom Zoerner <tomzo at users sourceforge net> */
446 .name = "Typhoon TV+Radio 90031",
447 .audio_clock = 0x00200000,
448 .tuner_type = TUNER_PHILIPS_PAL,
469 [SAA7134_BOARD_ELSA] = {
470 .name = "ELSA EX-VISION 300TV",
471 .audio_clock = 0x00187de7,
472 .tuner_type = TUNER_HITACHI_NTSC,
488 [SAA7134_BOARD_ELSA_500TV] = {
489 .name = "ELSA EX-VISION 500TV",
490 .audio_clock = 0x00187de7,
491 .tuner_type = TUNER_HITACHI_NTSC,
502 .name = name_tv_mono,
508 [SAA7134_BOARD_ASUSTeK_TVFM7134] = {
509 .name = "ASUS TV-FM 7134",
510 .audio_clock = 0x00187de7,
511 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
542 [SAA7134_BOARD_VA1000POWER] = {
543 .name = "AOPEN VA1000 POWER",
544 .audio_clock = 0x00187de7,
545 .tuner_type = TUNER_PHILIPS_NTSC,
561 [SAA7134_BOARD_10MOONSTVMASTER] = {
562 /* "lilicheng" <llc@linuxfans.org> */
563 .name = "10MOONS PCI TV CAPTURE CARD",
564 .audio_clock = 0x00200000,
565 .tuner_type = TUNER_LG_PAL_NEW_TAPC,
600 [SAA7134_BOARD_BMK_MPEX_NOTUNER] = {
601 /* "Andrew de Quincey" <adq@lidskialf.net> */
602 .name = "BMK MPEX No Tuner",
603 .audio_clock = 0x200000,
604 .tuner_type = TUNER_ABSENT,
628 .video_out = CCIR656,
630 [SAA7134_BOARD_VIDEOMATE_TV] = {
631 .name = "Compro VideoMate TV",
632 .audio_clock = 0x00187de7,
633 .tuner_type = TUNER_PHILIPS_NTSC_M,
649 [SAA7134_BOARD_CRONOS_PLUS] = {
655 14 .. 15 VIDIN_SEL */
656 .name = "Matrox CronosPlus",
657 .tuner_type = TUNER_ABSENT,
681 [SAA7134_BOARD_MD2819] = {
682 .name = "Medion 2819/ AverMedia M156",
683 .audio_clock = 0x00187de7,
684 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
709 [SAA7134_BOARD_BMK_MPEX_TUNER] = {
710 /* "Greg Wickham <greg.wickham@grangenet.net> */
711 .name = "BMK MPEX Tuner",
712 .audio_clock = 0x200000,
713 .tuner_type = TUNER_PHILIPS_PAL,
730 .video_out = CCIR656,
732 [SAA7134_BOARD_ASUSTEK_TVFM7133] = {
733 .name = "ASUS TV-FM 7133",
734 .audio_clock = 0x00187de7,
735 // probably wrong, the 7133 one is the NTSC version ...
736 // .tuner_type = TUNER_PHILIPS_FM1236_MK3
737 .tuner_type = TUNER_LG_NTSC_NEW_TAPC,
758 [SAA7134_BOARD_PINNACLE_PCTV_STEREO] = {
759 .name = "Pinnacle PCTV Stereo (saa7134)",
760 .audio_clock = 0x00187de7,
761 .tuner_type = TUNER_MT2032,
782 [SAA7134_BOARD_MANLI_MTV002] = {
783 /* Ognjen Nastic <ognjen@logosoft.ba> */
784 .name = "Manli MuchTV M-TV002",
785 .audio_clock = 0x00200000,
786 .tuner_type = TUNER_PHILIPS_PAL,
806 [SAA7134_BOARD_MANLI_MTV001] = {
807 /* Ognjen Nastic <ognjen@logosoft.ba> UNTESTED */
808 .name = "Manli MuchTV M-TV001",
809 .audio_clock = 0x00200000,
810 .tuner_type = TUNER_PHILIPS_PAL,
826 [SAA7134_BOARD_TG3000TV] = {
827 /* TransGear 3000TV */
828 .name = "Nagase Sangyo TransGear 3000TV",
829 .audio_clock = 0x00187de7,
830 .tuner_type = TUNER_PHILIPS_NTSC_M,
846 [SAA7134_BOARD_ECS_TVP3XP] = {
847 .name = "Elitegroup ECS TVP3XP FM1216 Tuner Card(PAL-BG,FM) ",
848 .audio_clock = 0x187de7, // xtal 32.1 MHz
849 .tuner_type = TUNER_PHILIPS_PAL,
856 .name = name_tv_mono,
869 .name = "CVid over SVid",
878 [SAA7134_BOARD_ECS_TVP3XP_4CB5] = {
879 .name = "Elitegroup ECS TVP3XP FM1236 Tuner Card (NTSC,FM)",
880 .audio_clock = 0x187de7,
881 .tuner_type = TUNER_PHILIPS_NTSC,
888 .name = name_tv_mono,
901 .name = "CVid over SVid",
910 [SAA7134_BOARD_AVACSSMARTTV] = {
911 /* Roman Pszonczenko <romka@kolos.math.uni.lodz.pl> */
912 .name = "AVACS SmartTV",
913 .audio_clock = 0x00187de7,
914 .tuner_type = TUNER_PHILIPS_PAL,
921 .name = name_tv_mono,
944 [SAA7134_BOARD_AVERMEDIA_DVD_EZMAKER] = {
945 /* Michael Smith <msmith@cbnco.com> */
946 .name = "AVerMedia DVD EZMaker",
947 .audio_clock = 0x00187de7,
948 .tuner_type = TUNER_ABSENT,
955 const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards);
957 /* ------------------------------------------------------------------ */
958 /* PCI ids + subsystem IDs */
960 struct pci_device_id saa7134_pci_tbl[] = {
962 .vendor = PCI_VENDOR_ID_PHILIPS,
963 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
964 .subvendor = PCI_VENDOR_ID_PHILIPS,
966 .driver_data = SAA7134_BOARD_PROTEUS_PRO,
968 .vendor = PCI_VENDOR_ID_PHILIPS,
969 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
970 .subvendor = PCI_VENDOR_ID_PHILIPS,
972 .driver_data = SAA7134_BOARD_PROTEUS_PRO,
974 .vendor = PCI_VENDOR_ID_PHILIPS,
975 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
976 .subvendor = PCI_VENDOR_ID_PHILIPS,
978 .driver_data = SAA7134_BOARD_EMPRESS,
980 .vendor = PCI_VENDOR_ID_PHILIPS,
981 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
984 .driver_data = SAA7134_BOARD_MONSTERTV,
986 .vendor = PCI_VENDOR_ID_PHILIPS,
987 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
990 .driver_data = SAA7134_BOARD_CINERGY400,
992 .vendor = PCI_VENDOR_ID_PHILIPS,
993 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
996 .driver_data = SAA7134_BOARD_CINERGY600,
998 .vendor = PCI_VENDOR_ID_PHILIPS,
999 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1000 .subvendor = 0x5168,
1001 .subdevice = 0x0138,
1002 .driver_data = SAA7134_BOARD_FLYVIDEO3000,
1004 .vendor = PCI_VENDOR_ID_PHILIPS,
1005 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1006 .subvendor = 0x4e42, //"Typhoon PCI Capture TV Card" Art.No. 50673
1007 .subdevice = 0x0138,
1008 .driver_data = SAA7134_BOARD_FLYVIDEO3000,
1010 .vendor = PCI_VENDOR_ID_PHILIPS,
1011 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1012 .subvendor = 0x5168,
1013 .subdevice = 0x0138,
1014 .driver_data = SAA7134_BOARD_FLYVIDEO2000,
1016 .vendor = PCI_VENDOR_ID_PHILIPS,
1017 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1018 .subvendor = 0x16be,
1019 .subdevice = 0x0003,
1020 .driver_data = SAA7134_BOARD_MD7134,
1022 .vendor = PCI_VENDOR_ID_PHILIPS,
1023 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1024 .subvendor = 0x1048,
1025 .subdevice = 0x226b,
1026 .driver_data = SAA7134_BOARD_ELSA,
1028 .vendor = PCI_VENDOR_ID_PHILIPS,
1029 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1030 .subvendor = 0x1048,
1031 .subdevice = 0x226b,
1032 .driver_data = SAA7134_BOARD_ELSA_500TV,
1034 .vendor = PCI_VENDOR_ID_PHILIPS,
1035 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1036 .subvendor = PCI_VENDOR_ID_ASUSTEK,
1037 .subdevice = 0x4842,
1038 .driver_data = SAA7134_BOARD_ASUSTeK_TVFM7134,
1040 .vendor = PCI_VENDOR_ID_PHILIPS,
1041 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1042 .subvendor = PCI_VENDOR_ID_ASUSTEK,
1043 .subdevice = 0x4830,
1044 .driver_data = SAA7134_BOARD_ASUSTeK_TVFM7134,
1046 .vendor = PCI_VENDOR_ID_PHILIPS,
1047 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
1048 .subvendor = PCI_VENDOR_ID_ASUSTEK,
1049 .subdevice = 0x4843,
1050 .driver_data = SAA7134_BOARD_ASUSTEK_TVFM7133,
1052 .vendor = PCI_VENDOR_ID_PHILIPS,
1053 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1054 .subvendor = PCI_VENDOR_ID_ASUSTEK,
1055 .subdevice = 0x4840,
1056 .driver_data = SAA7134_BOARD_ASUSTeK_TVFM7134,
1058 .vendor = PCI_VENDOR_ID_PHILIPS,
1059 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1060 .subvendor = PCI_VENDOR_ID_PHILIPS,
1061 .subdevice = 0xfe01,
1062 .driver_data = SAA7134_BOARD_TVSTATION_RDS,
1064 .vendor = PCI_VENDOR_ID_PHILIPS,
1065 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1066 .subvendor = 0x1894,
1067 .subdevice = 0xfe01,
1068 .driver_data = SAA7134_BOARD_TVSTATION_RDS,
1070 .vendor = PCI_VENDOR_ID_PHILIPS,
1071 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1072 .subvendor = 0x1894,
1073 .subdevice = 0xa006,
1074 .driver_data = SAA7134_BOARD_TVSTATION_DVR,
1076 .vendor = PCI_VENDOR_ID_PHILIPS,
1077 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1078 .subvendor = 0x1131,
1079 .subdevice = 0x7133,
1080 .driver_data = SAA7134_BOARD_VA1000POWER,
1082 .vendor = PCI_VENDOR_ID_PHILIPS,
1083 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1084 .subvendor = PCI_VENDOR_ID_PHILIPS,
1085 .subdevice = 0x2001,
1086 .driver_data = SAA7134_BOARD_10MOONSTVMASTER,
1088 .vendor = PCI_VENDOR_ID_PHILIPS,
1089 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
1090 .subvendor = 0x185b,
1091 .subdevice = 0xc100,
1092 .driver_data = SAA7134_BOARD_VIDEOMATE_TV,
1094 .vendor = PCI_VENDOR_ID_PHILIPS,
1095 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1096 .subvendor = PCI_VENDOR_ID_MATROX,
1097 .subdevice = 0x48d0,
1098 .driver_data = SAA7134_BOARD_CRONOS_PLUS,
1100 .vendor = PCI_VENDOR_ID_PHILIPS,
1101 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1102 .subvendor = 0x1461, /* Avermedia Technologies Inc */
1103 .subdevice = 0xa70b,
1104 .driver_data = SAA7134_BOARD_MD2819,
1106 /* AverMedia Studio 305, using AverMedia M156 entry for now */
1107 .vendor = PCI_VENDOR_ID_PHILIPS,
1108 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1109 .subvendor = 0x1461, /* Avermedia Technologies Inc */
1110 .subdevice = 0x2115,
1111 .driver_data = SAA7134_BOARD_MD2819,
1113 .vendor = PCI_VENDOR_ID_PHILIPS,
1114 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1115 .subvendor = 0x1461, /* Avermedia Technologies Inc */
1116 .subdevice = 0x10ff,
1117 .driver_data = SAA7134_BOARD_AVERMEDIA_DVD_EZMAKER,
1119 /* TransGear 3000TV */
1120 .vendor = PCI_VENDOR_ID_PHILIPS,
1121 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1122 .subvendor = 0x1461, /* Avermedia Technologies Inc */
1123 .subdevice = 0x050c,
1124 .driver_data = SAA7134_BOARD_TG3000TV,
1126 .vendor = PCI_VENDOR_ID_PHILIPS,
1127 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1128 .subvendor = 0x11bd,
1129 .subdevice = 0x002b,
1130 .driver_data = SAA7134_BOARD_PINNACLE_PCTV_STEREO,
1132 .vendor = PCI_VENDOR_ID_PHILIPS,
1133 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1134 .subvendor = 0x1019,
1135 .subdevice = 0x4cb4,
1136 .driver_data = SAA7134_BOARD_ECS_TVP3XP,
1138 .vendor = PCI_VENDOR_ID_PHILIPS,
1139 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
1140 .subvendor = 0x1019,
1141 .subdevice = 0x4cb5,
1142 .driver_data = SAA7134_BOARD_ECS_TVP3XP_4CB5,
1145 /* --- boards without eeprom + subsystem ID --- */
1146 .vendor = PCI_VENDOR_ID_PHILIPS,
1147 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1148 .subvendor = PCI_VENDOR_ID_PHILIPS,
1150 .driver_data = SAA7134_BOARD_NOAUTO,
1152 .vendor = PCI_VENDOR_ID_PHILIPS,
1153 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1154 .subvendor = PCI_VENDOR_ID_PHILIPS,
1156 .driver_data = SAA7134_BOARD_NOAUTO,
1159 /* --- default catch --- */
1160 .vendor = PCI_VENDOR_ID_PHILIPS,
1161 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
1162 .subvendor = PCI_ANY_ID,
1163 .subdevice = PCI_ANY_ID,
1164 .driver_data = SAA7134_BOARD_UNKNOWN,
1166 .vendor = PCI_VENDOR_ID_PHILIPS,
1167 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
1168 .subvendor = PCI_ANY_ID,
1169 .subdevice = PCI_ANY_ID,
1170 .driver_data = SAA7134_BOARD_UNKNOWN,
1172 .vendor = PCI_VENDOR_ID_PHILIPS,
1173 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
1174 .subvendor = PCI_ANY_ID,
1175 .subdevice = PCI_ANY_ID,
1176 .driver_data = SAA7134_BOARD_UNKNOWN,
1178 .vendor = PCI_VENDOR_ID_PHILIPS,
1179 .device = PCI_DEVICE_ID_PHILIPS_SAA7135,
1180 .subvendor = PCI_ANY_ID,
1181 .subdevice = PCI_ANY_ID,
1182 .driver_data = SAA7134_BOARD_UNKNOWN,
1184 /* --- end of list --- */
1187 MODULE_DEVICE_TABLE(pci, saa7134_pci_tbl);
1189 /* ----------------------------------------------------------- */
1190 /* flyvideo tweaks */
1196 } fly_list[0x20] = {
1197 /* default catch ... */
1200 .tuner_type = TUNER_ABSENT,
1202 /* ... the ones known so far */
1205 .tuner_type = TUNER_LG_PAL_NEW_TAPC,
1208 .model = "PAL-BG / PAL-DK",
1209 .tuner_type = TUNER_PHILIPS_PAL,
1213 .tuner_type = TUNER_ABSENT /* FIXME */,
1218 static void board_flyvideo(struct saa7134_dev *dev)
1224 value = dev->gpio_value;
1225 index = (value & 0x1f00) >> 8;
1226 printk(KERN_INFO "%s: flyvideo: gpio is 0x%x [model=%s,tuner=%d]\n",
1227 dev->name, value, fly_list[index].model,
1228 fly_list[index].tuner_type);
1229 dev->tuner_type = fly_list[index].tuner_type;
1233 /* ----------------------------------------------------------- */
1235 int saa7134_board_init(struct saa7134_dev *dev)
1237 // Always print gpio, often manufacturers encode tuner type and other info.
1238 saa_writel(SAA7134_GPIO_GPMODE0 >> 2, 0);
1239 dev->gpio_value = saa_readl(SAA7134_GPIO_GPSTATUS0 >> 2);
1240 printk(KERN_INFO "%s: board init: gpio is %x\n", dev->name, dev->gpio_value);
1242 switch (dev->board) {
1243 case SAA7134_BOARD_FLYVIDEO2000:
1244 case SAA7134_BOARD_FLYVIDEO3000:
1245 board_flyvideo(dev);
1246 dev->has_remote = 1;
1248 case SAA7134_BOARD_CINERGY400:
1249 case SAA7134_BOARD_CINERGY600:
1250 case SAA7134_BOARD_ECS_TVP3XP:
1251 case SAA7134_BOARD_ECS_TVP3XP_4CB5:
1252 dev->has_remote = 1;
1258 /* ----------------------------------------------------------- */