|
@@ -32,8 +32,8 @@
|
|
|
#include <media/saa7115.h>
|
|
|
#include <media/tvp5150.h>
|
|
|
#include <media/tveeprom.h>
|
|
|
-#include <media/audiochip.h>
|
|
|
#include <media/v4l2-common.h>
|
|
|
+#include <media/v4l2-chip-ident.h>
|
|
|
|
|
|
#include "em28xx.h"
|
|
|
|
|
@@ -52,6 +52,15 @@ struct em28xx_hash_table {
|
|
|
};
|
|
|
|
|
|
struct em28xx_board em28xx_boards[] = {
|
|
|
+ [EM2750_BOARD_UNKNOWN] = {
|
|
|
+ .name = "Unknown EM2750/EM2751 webcam grabber",
|
|
|
+ .vchannels = 1,
|
|
|
+ .input = { {
|
|
|
+ .type = EM28XX_VMUX_COMPOSITE1,
|
|
|
+ .vmux = 0,
|
|
|
+ .amux = 0,
|
|
|
+ } },
|
|
|
+ },
|
|
|
[EM2800_BOARD_UNKNOWN] = {
|
|
|
.name = "Unknown EM2800 video grabber",
|
|
|
.is_em2800 = 1,
|
|
@@ -73,6 +82,39 @@ struct em28xx_board em28xx_boards[] = {
|
|
|
.is_em2800 = 0,
|
|
|
.tuner_type = TUNER_ABSENT,
|
|
|
},
|
|
|
+ [EM2750_BOARD_DLCW_130] = {
|
|
|
+ /* Beijing Huaqi Information Digital Technology Co., Ltd */
|
|
|
+ .name = "Huaqi DLCW-130",
|
|
|
+ .valid = EM28XX_BOARD_NOT_VALIDATED,
|
|
|
+ .vchannels = 1,
|
|
|
+ .input = { {
|
|
|
+ .type = EM28XX_VMUX_COMPOSITE1,
|
|
|
+ .vmux = 0,
|
|
|
+ .amux = 0,
|
|
|
+ } },
|
|
|
+ },
|
|
|
+ [EM2800_BOARD_KWORLD_USB2800] = {
|
|
|
+ .name = "Kworld USB2800",
|
|
|
+ .valid = EM28XX_BOARD_NOT_VALIDATED,
|
|
|
+ .is_em2800 = 1,
|
|
|
+ .vchannels = 3,
|
|
|
+ .tuner_type = TUNER_PHILIPS_FCV1236D,
|
|
|
+ .tda9887_conf = TDA9887_PRESENT,
|
|
|
+ .decoder = EM28XX_SAA7113,
|
|
|
+ .input = { {
|
|
|
+ .type = EM28XX_VMUX_TELEVISION,
|
|
|
+ .vmux = SAA7115_COMPOSITE2,
|
|
|
+ .amux = 0,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_COMPOSITE1,
|
|
|
+ .vmux = SAA7115_COMPOSITE0,
|
|
|
+ .amux = 1,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_SVIDEO,
|
|
|
+ .vmux = SAA7115_SVIDEO3,
|
|
|
+ .amux = 1,
|
|
|
+ } },
|
|
|
+ },
|
|
|
[EM2820_BOARD_KWORLD_PVRTV2800RF] = {
|
|
|
.name = "Kworld PVR TV 2800 RF",
|
|
|
.is_em2800 = 0,
|
|
@@ -151,13 +193,251 @@ struct em28xx_board em28xx_boards[] = {
|
|
|
MSP_DSP_IN_SCART, MSP_DSP_IN_SCART),
|
|
|
} },
|
|
|
},
|
|
|
- [EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900] = {
|
|
|
- .name = "Hauppauge WinTV HVR 900",
|
|
|
+ [EM2820_BOARD_DLINK_USB_TV] = {
|
|
|
+ .name = "D-Link DUB-T210 TV Tuner",
|
|
|
+ .valid = EM28XX_BOARD_NOT_VALIDATED,
|
|
|
+ .vchannels = 3,
|
|
|
+ .is_em2800 = 0,
|
|
|
+ .tuner_type = TUNER_LG_PAL_NEW_TAPC,
|
|
|
+ .tda9887_conf = TDA9887_PRESENT,
|
|
|
+ .decoder = EM28XX_SAA7113,
|
|
|
+ .input = { {
|
|
|
+ .type = EM28XX_VMUX_TELEVISION,
|
|
|
+ .vmux = SAA7115_COMPOSITE2,
|
|
|
+ .amux = 1,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_COMPOSITE1,
|
|
|
+ .vmux = SAA7115_COMPOSITE0,
|
|
|
+ .amux = 1,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_SVIDEO,
|
|
|
+ .vmux = SAA7115_SVIDEO3,
|
|
|
+ .amux = 1,
|
|
|
+ } },
|
|
|
+ },
|
|
|
+ [EM2820_BOARD_HERCULES_SMART_TV_USB2] = {
|
|
|
+ .name = "Hercules Smart TV USB 2.0",
|
|
|
+ .valid = EM28XX_BOARD_NOT_VALIDATED,
|
|
|
+ .vchannels = 3,
|
|
|
+ .tuner_type = TUNER_LG_PAL_NEW_TAPC,
|
|
|
+ .tda9887_conf = TDA9887_PRESENT,
|
|
|
+ .decoder = EM28XX_SAA7113,
|
|
|
+ .input = { {
|
|
|
+ .type = EM28XX_VMUX_TELEVISION,
|
|
|
+ .vmux = SAA7115_COMPOSITE2,
|
|
|
+ .amux = 1,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_COMPOSITE1,
|
|
|
+ .vmux = SAA7115_COMPOSITE0,
|
|
|
+ .amux = 1,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_SVIDEO,
|
|
|
+ .vmux = SAA7115_SVIDEO3,
|
|
|
+ .amux = 1,
|
|
|
+ } },
|
|
|
+ },
|
|
|
+ [EM2820_BOARD_PINNACLE_USB_2_FM1216ME] = {
|
|
|
+ .name = "Pinnacle PCTV USB 2 (Philips FM1216ME)",
|
|
|
+ .valid = EM28XX_BOARD_NOT_VALIDATED,
|
|
|
+ .vchannels = 3,
|
|
|
+ .is_em2800 = 0,
|
|
|
+ .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
|
|
|
+ .tda9887_conf = TDA9887_PRESENT,
|
|
|
+ .decoder = EM28XX_SAA7113,
|
|
|
+ .input = { {
|
|
|
+ .type = EM28XX_VMUX_TELEVISION,
|
|
|
+ .vmux = SAA7115_COMPOSITE2,
|
|
|
+ .amux = 0,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_COMPOSITE1,
|
|
|
+ .vmux = SAA7115_COMPOSITE0,
|
|
|
+ .amux = 1,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_SVIDEO,
|
|
|
+ .vmux = SAA7115_SVIDEO3,
|
|
|
+ .amux = 1,
|
|
|
+ } },
|
|
|
+ },
|
|
|
+ [EM2820_BOARD_GADMEI_UTV310] = {
|
|
|
+ .name = "Gadmei UTV310",
|
|
|
+ .valid = EM28XX_BOARD_NOT_VALIDATED,
|
|
|
+ .vchannels = 3,
|
|
|
+ .tuner_type = TUNER_TNF_5335MF,
|
|
|
+ .tda9887_conf = TDA9887_PRESENT,
|
|
|
+ .decoder = EM28XX_SAA7113,
|
|
|
+ .input = { {
|
|
|
+ .type = EM28XX_VMUX_TELEVISION,
|
|
|
+ .vmux = SAA7115_COMPOSITE1,
|
|
|
+ .amux = 1,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_COMPOSITE1,
|
|
|
+ .vmux = SAA7115_COMPOSITE0,
|
|
|
+ .amux = 1,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_SVIDEO,
|
|
|
+ .vmux = SAA7115_SVIDEO3,
|
|
|
+ .amux = 1,
|
|
|
+ } },
|
|
|
+ },
|
|
|
+ [EM2820_BOARD_LEADTEK_WINFAST_USBII_DELUXE] = {
|
|
|
+ .name = "Leadtek Winfast USB II Deluxe",
|
|
|
+ .valid = EM28XX_BOARD_NOT_VALIDATED,
|
|
|
+ .vchannels = 3,
|
|
|
+ .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
|
|
|
+ .tda9887_conf = TDA9887_PRESENT,
|
|
|
+ .decoder = EM28XX_SAA7114,
|
|
|
+ .input = { {
|
|
|
+ .type = EM28XX_VMUX_TELEVISION,
|
|
|
+ .vmux = 2,
|
|
|
+ .amux = 0,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_COMPOSITE1,
|
|
|
+ .vmux = 0,
|
|
|
+ .amux = 1,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_SVIDEO,
|
|
|
+ .vmux = 9,
|
|
|
+ .amux = 1,
|
|
|
+ } },
|
|
|
+ },
|
|
|
+ [EM2820_BOARD_PINNACLE_DVC_100] = {
|
|
|
+ .name = "Pinnacle Dazzle DVC 100",
|
|
|
+ .valid = EM28XX_BOARD_NOT_VALIDATED,
|
|
|
+ .vchannels = 3,
|
|
|
+ .decoder = EM28XX_SAA7113,
|
|
|
+ .input = { {
|
|
|
+ .type = EM28XX_VMUX_COMPOSITE1,
|
|
|
+ .vmux = SAA7115_COMPOSITE0,
|
|
|
+ .amux = 1,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_SVIDEO,
|
|
|
+ .vmux = SAA7115_SVIDEO3,
|
|
|
+ .amux = 1,
|
|
|
+ } },
|
|
|
+ },
|
|
|
+ [EM2820_BOARD_VIDEOLOGY_20K14XUSB] = {
|
|
|
+ .name = "Videology 20K14XUSB USB2.0",
|
|
|
+ .valid = EM28XX_BOARD_NOT_VALIDATED,
|
|
|
+ .vchannels = 1,
|
|
|
+ .input = { {
|
|
|
+ .type = EM28XX_VMUX_COMPOSITE1,
|
|
|
+ .vmux = 0,
|
|
|
+ .amux = 0,
|
|
|
+ } },
|
|
|
+ },
|
|
|
+ [EM2821_BOARD_PROLINK_PLAYTV_USB2] = {
|
|
|
+ .name = "SIIG AVTuner-PVR/Prolink PlayTV USB 2.0",
|
|
|
+ .valid = EM28XX_BOARD_NOT_VALIDATED,
|
|
|
+ .vchannels = 3,
|
|
|
+ .is_em2800 = 0,
|
|
|
+ .tuner_type = TUNER_LG_PAL_NEW_TAPC, /* unknown? */
|
|
|
+ .tda9887_conf = TDA9887_PRESENT, /* unknown? */
|
|
|
+ .decoder = EM28XX_SAA7113,
|
|
|
+ .input = { {
|
|
|
+ .type = EM28XX_VMUX_TELEVISION,
|
|
|
+ .vmux = SAA7115_COMPOSITE2,
|
|
|
+ .amux = 1,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_COMPOSITE1,
|
|
|
+ .vmux = SAA7115_COMPOSITE0,
|
|
|
+ .amux = 1,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_SVIDEO,
|
|
|
+ .vmux = SAA7115_SVIDEO3,
|
|
|
+ .amux = 1,
|
|
|
+ } },
|
|
|
+ },
|
|
|
+ [EM2821_BOARD_SUPERCOMP_USB_2] = {
|
|
|
+ .name = "Supercomp USB 2.0 TV",
|
|
|
+ .valid = EM28XX_BOARD_NOT_VALIDATED,
|
|
|
+ .vchannels = 3,
|
|
|
+ .is_em2800 = 0,
|
|
|
+ .tuner_type = TUNER_PHILIPS_FM1236_MK3,
|
|
|
+ .tda9887_conf = TDA9887_PRESENT |
|
|
|
+ TDA9887_PORT1_ACTIVE |
|
|
|
+ TDA9887_PORT2_ACTIVE,
|
|
|
+ .decoder = EM28XX_SAA7113,
|
|
|
+ .input = { {
|
|
|
+ .type = EM28XX_VMUX_TELEVISION,
|
|
|
+ .vmux = SAA7115_COMPOSITE2,
|
|
|
+ .amux = 1,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_COMPOSITE1,
|
|
|
+ .vmux = SAA7115_COMPOSITE0,
|
|
|
+ .amux = 0,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_SVIDEO,
|
|
|
+ .vmux = SAA7115_SVIDEO3,
|
|
|
+ .amux = 1,
|
|
|
+ } },
|
|
|
+ },
|
|
|
+ [EM2821_BOARD_USBGEAR_VD204] = {
|
|
|
+ .name = "Usbgear VD204v9",
|
|
|
+ .valid = EM28XX_BOARD_NOT_VALIDATED,
|
|
|
+ .vchannels = 2,
|
|
|
+ .decoder = EM28XX_SAA7113,
|
|
|
+ .input = { {
|
|
|
+ .type = EM28XX_VMUX_COMPOSITE1,
|
|
|
+ .vmux = SAA7115_COMPOSITE0,
|
|
|
+ .amux = 1,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_SVIDEO,
|
|
|
+ .vmux = SAA7115_SVIDEO3,
|
|
|
+ .amux = 1,
|
|
|
+ } },
|
|
|
+ },
|
|
|
+ [EM2860_BOARD_NETGMBH_CAM] = {
|
|
|
+ /* Beijing Huaqi Information Digital Technology Co., Ltd */
|
|
|
+ .name = "NetGMBH Cam",
|
|
|
+ .valid = EM28XX_BOARD_NOT_VALIDATED,
|
|
|
+ .vchannels = 1,
|
|
|
+ .input = { {
|
|
|
+ .type = EM28XX_VMUX_COMPOSITE1,
|
|
|
+ .vmux = 0,
|
|
|
+ .amux = 0,
|
|
|
+ } },
|
|
|
+ },
|
|
|
+ [EM2860_BOARD_TYPHOON_DVD_MAKER] = {
|
|
|
+ .name = "Typhoon DVD Maker",
|
|
|
+ .valid = EM28XX_BOARD_NOT_VALIDATED,
|
|
|
+ .vchannels = 2,
|
|
|
+ .decoder = EM28XX_SAA7113,
|
|
|
+ .input = { {
|
|
|
+ .type = EM28XX_VMUX_COMPOSITE1,
|
|
|
+ .vmux = SAA7115_COMPOSITE0,
|
|
|
+ .amux = 1,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_SVIDEO,
|
|
|
+ .vmux = SAA7115_SVIDEO3,
|
|
|
+ .amux = 1,
|
|
|
+ } },
|
|
|
+ },
|
|
|
+ [EM2860_BOARD_GADMEI_UTV330] = {
|
|
|
+ .name = "Gadmei UTV330",
|
|
|
+ .valid = EM28XX_BOARD_NOT_VALIDATED,
|
|
|
.vchannels = 3,
|
|
|
+ .tuner_type = TUNER_TNF_5335MF,
|
|
|
.tda9887_conf = TDA9887_PRESENT,
|
|
|
+ .decoder = EM28XX_SAA7113,
|
|
|
+ .input = { {
|
|
|
+ .type = EM28XX_VMUX_TELEVISION,
|
|
|
+ .vmux = SAA7115_COMPOSITE2,
|
|
|
+ .amux = 0,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_COMPOSITE1,
|
|
|
+ .vmux = SAA7115_COMPOSITE0,
|
|
|
+ .amux = 1,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_SVIDEO,
|
|
|
+ .vmux = SAA7115_SVIDEO3,
|
|
|
+ .amux = 1,
|
|
|
+ } },
|
|
|
+ },
|
|
|
+ [EM2860_BOARD_TERRATEC_HYBRID_XS] = {
|
|
|
+ .name = "Terratec Cinergy A Hybrid XS",
|
|
|
+ .valid = EM28XX_BOARD_NOT_VALIDATED,
|
|
|
+ .vchannels = 3,
|
|
|
.tuner_type = TUNER_XC2028,
|
|
|
- .mts_firmware = 1,
|
|
|
- .has_dvb = 1,
|
|
|
.decoder = EM28XX_TVP5150,
|
|
|
.input = { {
|
|
|
.type = EM28XX_VMUX_TELEVISION,
|
|
@@ -173,12 +453,101 @@ struct em28xx_board em28xx_boards[] = {
|
|
|
.amux = 1,
|
|
|
} },
|
|
|
},
|
|
|
- [EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900_R2] = {
|
|
|
- .name = "Hauppauge WinTV HVR 900 (R2)",
|
|
|
+ [EM2861_BOARD_KWORLD_PVRTV_300U] = {
|
|
|
+ .name = "KWorld PVRTV 300U",
|
|
|
+ .valid = EM28XX_BOARD_NOT_VALIDATED,
|
|
|
+ .vchannels = 3,
|
|
|
+ .tuner_type = TUNER_XC2028,
|
|
|
+ .decoder = EM28XX_TVP5150,
|
|
|
+ .input = { {
|
|
|
+ .type = EM28XX_VMUX_TELEVISION,
|
|
|
+ .vmux = TVP5150_COMPOSITE0,
|
|
|
+ .amux = 0,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_COMPOSITE1,
|
|
|
+ .vmux = TVP5150_COMPOSITE1,
|
|
|
+ .amux = 1,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_SVIDEO,
|
|
|
+ .vmux = TVP5150_SVIDEO,
|
|
|
+ .amux = 1,
|
|
|
+ } },
|
|
|
+ },
|
|
|
+ [EM2861_BOARD_YAKUMO_MOVIE_MIXER] = {
|
|
|
+ .name = "Yakumo MovieMixer",
|
|
|
+ .valid = EM28XX_BOARD_NOT_VALIDATED,
|
|
|
+ .vchannels = 1,
|
|
|
+ .decoder = EM28XX_TVP5150,
|
|
|
+ .input = { {
|
|
|
+ .type = EM28XX_VMUX_TELEVISION,
|
|
|
+ .vmux = TVP5150_COMPOSITE0,
|
|
|
+ .amux = 0,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_COMPOSITE1,
|
|
|
+ .vmux = TVP5150_COMPOSITE1,
|
|
|
+ .amux = 1,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_SVIDEO,
|
|
|
+ .vmux = TVP5150_SVIDEO,
|
|
|
+ .amux = 1,
|
|
|
+ } },
|
|
|
+ },
|
|
|
+ [EM2861_BOARD_PLEXTOR_PX_TV100U] = {
|
|
|
+ .name = "Plextor ConvertX PX-TV100U",
|
|
|
+ .valid = EM28XX_BOARD_NOT_VALIDATED,
|
|
|
.vchannels = 3,
|
|
|
+ .tuner_type = TUNER_TNF_5335MF,
|
|
|
.tda9887_conf = TDA9887_PRESENT,
|
|
|
+ .decoder = EM28XX_TVP5150,
|
|
|
+ .input = { {
|
|
|
+ .type = EM28XX_VMUX_TELEVISION,
|
|
|
+ .vmux = TVP5150_COMPOSITE0,
|
|
|
+ .amux = 1,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_COMPOSITE1,
|
|
|
+ .vmux = TVP5150_COMPOSITE1,
|
|
|
+ .amux = 1,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_SVIDEO,
|
|
|
+ .vmux = TVP5150_SVIDEO,
|
|
|
+ .amux = 1,
|
|
|
+ } },
|
|
|
+ },
|
|
|
+ [EM2870_BOARD_TERRATEC_XS] = {
|
|
|
+ .name = "Terratec Cinergy T XS",
|
|
|
+ .valid = EM28XX_BOARD_NOT_VALIDATED,
|
|
|
+ .tuner_type = TUNER_XC2028,
|
|
|
+ },
|
|
|
+ [EM2870_BOARD_TERRATEC_XS_MT2060] = {
|
|
|
+ .name = "Terratec Cinergy T XS (MT2060)",
|
|
|
+ .valid = EM28XX_BOARD_NOT_VALIDATED,
|
|
|
+ .tuner_type = TUNER_ABSENT, /* MT2060 */
|
|
|
+ },
|
|
|
+ [EM2870_BOARD_KWORLD_350U] = {
|
|
|
+ .name = "Kworld 350 U DVB-T",
|
|
|
+ .valid = EM28XX_BOARD_NOT_VALIDATED,
|
|
|
+ .tuner_type = TUNER_XC2028,
|
|
|
+ },
|
|
|
+ [EM2870_BOARD_KWORLD_355U] = {
|
|
|
+ .name = "Kworld 355 U DVB-T",
|
|
|
+ .valid = EM28XX_BOARD_NOT_VALIDATED,
|
|
|
+ },
|
|
|
+ [EM2870_BOARD_PINNACLE_PCTV_DVB] = {
|
|
|
+ .name = "Pinnacle PCTV DVB-T",
|
|
|
+ .valid = EM28XX_BOARD_NOT_VALIDATED,
|
|
|
+ .tuner_type = TUNER_ABSENT, /* MT2060 */
|
|
|
+ },
|
|
|
+ [EM2870_BOARD_COMPRO_VIDEOMATE] = {
|
|
|
+ .name = "Compro, VideoMate U3",
|
|
|
+ .valid = EM28XX_BOARD_NOT_VALIDATED,
|
|
|
+ .tuner_type = TUNER_ABSENT, /* MT2060 */
|
|
|
+ },
|
|
|
+ [EM2880_BOARD_TERRATEC_HYBRID_XS_FR] = {
|
|
|
+ .name = "Terratec Hybrid XS Secam",
|
|
|
+ .valid = EM28XX_BOARD_NOT_VALIDATED,
|
|
|
+ .vchannels = 3,
|
|
|
+ .has_msp34xx = 1,
|
|
|
.tuner_type = TUNER_XC2028,
|
|
|
- .mts_firmware = 1,
|
|
|
.decoder = EM28XX_TVP5150,
|
|
|
.input = { {
|
|
|
.type = EM28XX_VMUX_TELEVISION,
|
|
@@ -194,8 +563,97 @@ struct em28xx_board em28xx_boards[] = {
|
|
|
.amux = 1,
|
|
|
} },
|
|
|
},
|
|
|
- [EM2880_BOARD_HAUPPAUGE_WINTV_HVR_950] = {
|
|
|
- .name = "Hauppauge WinTV HVR 950",
|
|
|
+ [EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900] = {
|
|
|
+ .name = "Hauppauge WinTV HVR 900",
|
|
|
+ .vchannels = 3,
|
|
|
+ .tda9887_conf = TDA9887_PRESENT,
|
|
|
+ .tuner_type = TUNER_XC2028,
|
|
|
+ .mts_firmware = 1,
|
|
|
+ .has_dvb = 1,
|
|
|
+ .decoder = EM28XX_TVP5150,
|
|
|
+ .input = { {
|
|
|
+ .type = EM28XX_VMUX_TELEVISION,
|
|
|
+ .vmux = TVP5150_COMPOSITE0,
|
|
|
+ .amux = 0,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_COMPOSITE1,
|
|
|
+ .vmux = TVP5150_COMPOSITE1,
|
|
|
+ .amux = 1,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_SVIDEO,
|
|
|
+ .vmux = TVP5150_SVIDEO,
|
|
|
+ .amux = 1,
|
|
|
+ } },
|
|
|
+ },
|
|
|
+ [EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900_R2] = {
|
|
|
+ .name = "Hauppauge WinTV HVR 900 (R2)",
|
|
|
+ .vchannels = 3,
|
|
|
+ .tda9887_conf = TDA9887_PRESENT,
|
|
|
+ .tuner_type = TUNER_XC2028,
|
|
|
+ .mts_firmware = 1,
|
|
|
+ .decoder = EM28XX_TVP5150,
|
|
|
+ .input = { {
|
|
|
+ .type = EM28XX_VMUX_TELEVISION,
|
|
|
+ .vmux = TVP5150_COMPOSITE0,
|
|
|
+ .amux = 0,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_COMPOSITE1,
|
|
|
+ .vmux = TVP5150_COMPOSITE1,
|
|
|
+ .amux = 1,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_SVIDEO,
|
|
|
+ .vmux = TVP5150_SVIDEO,
|
|
|
+ .amux = 1,
|
|
|
+ } },
|
|
|
+ },
|
|
|
+ [EM2883_BOARD_HAUPPAUGE_WINTV_HVR_950] = {
|
|
|
+ .name = "Hauppauge WinTV HVR 950",
|
|
|
+ .vchannels = 3,
|
|
|
+ .tda9887_conf = TDA9887_PRESENT,
|
|
|
+ .tuner_type = TUNER_XC2028,
|
|
|
+ .mts_firmware = 1,
|
|
|
+ .has_12mhz_i2s = 1,
|
|
|
+ .has_dvb = 1,
|
|
|
+ .decoder = EM28XX_TVP5150,
|
|
|
+ .input = { {
|
|
|
+ .type = EM28XX_VMUX_TELEVISION,
|
|
|
+ .vmux = TVP5150_COMPOSITE0,
|
|
|
+ .amux = 0,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_COMPOSITE1,
|
|
|
+ .vmux = TVP5150_COMPOSITE1,
|
|
|
+ .amux = 1,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_SVIDEO,
|
|
|
+ .vmux = TVP5150_SVIDEO,
|
|
|
+ .amux = 1,
|
|
|
+ } },
|
|
|
+ },
|
|
|
+ [EM2880_BOARD_PINNACLE_PCTV_HD_PRO] = {
|
|
|
+ .name = "Pinnacle PCTV HD Pro Stick",
|
|
|
+ .vchannels = 3,
|
|
|
+ .tda9887_conf = TDA9887_PRESENT,
|
|
|
+ .tuner_type = TUNER_XC2028,
|
|
|
+ .mts_firmware = 1,
|
|
|
+ .has_12mhz_i2s = 1,
|
|
|
+ .has_dvb = 1,
|
|
|
+ .decoder = EM28XX_TVP5150,
|
|
|
+ .input = { {
|
|
|
+ .type = EM28XX_VMUX_TELEVISION,
|
|
|
+ .vmux = TVP5150_COMPOSITE0,
|
|
|
+ .amux = 0,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_COMPOSITE1,
|
|
|
+ .vmux = TVP5150_COMPOSITE1,
|
|
|
+ .amux = 1,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_SVIDEO,
|
|
|
+ .vmux = TVP5150_SVIDEO,
|
|
|
+ .amux = 1,
|
|
|
+ } },
|
|
|
+ },
|
|
|
+ [EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600] = {
|
|
|
+ .name = "AMD ATI TV Wonder HD 600",
|
|
|
.vchannels = 3,
|
|
|
.tda9887_conf = TDA9887_PRESENT,
|
|
|
.tuner_type = TUNER_XC2028,
|
|
@@ -217,15 +675,247 @@ struct em28xx_board em28xx_boards[] = {
|
|
|
.amux = 1,
|
|
|
} },
|
|
|
},
|
|
|
- [EM2880_BOARD_PINNACLE_PCTV_HD_PRO] = {
|
|
|
- .name = "Pinnacle PCTV HD Pro Stick",
|
|
|
- .vchannels = 3,
|
|
|
- .tda9887_conf = TDA9887_PRESENT,
|
|
|
- .tuner_type = TUNER_XC2028,
|
|
|
- .mts_firmware = 1,
|
|
|
- .has_12mhz_i2s = 1,
|
|
|
- .has_dvb = 1,
|
|
|
- .decoder = EM28XX_TVP5150,
|
|
|
+ [EM2880_BOARD_TERRATEC_HYBRID_XS] = {
|
|
|
+ .name = "Terratec Hybrid XS",
|
|
|
+ .vchannels = 3,
|
|
|
+ .tda9887_conf = TDA9887_PRESENT,
|
|
|
+ .tuner_type = TUNER_XC2028,
|
|
|
+ .decoder = EM28XX_TVP5150,
|
|
|
+ .has_dvb = 1,
|
|
|
+ .input = { {
|
|
|
+ .type = EM28XX_VMUX_TELEVISION,
|
|
|
+ .vmux = TVP5150_COMPOSITE0,
|
|
|
+ .amux = 0,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_COMPOSITE1,
|
|
|
+ .vmux = TVP5150_COMPOSITE1,
|
|
|
+ .amux = 1,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_SVIDEO,
|
|
|
+ .vmux = TVP5150_SVIDEO,
|
|
|
+ .amux = 1,
|
|
|
+ } },
|
|
|
+ },
|
|
|
+ /* maybe there's a reason behind it why Terratec sells the Hybrid XS
|
|
|
+ as Prodigy XS with a different PID, let's keep it separated for now
|
|
|
+ maybe we'll need it lateron */
|
|
|
+ [EM2880_BOARD_TERRATEC_PRODIGY_XS] = {
|
|
|
+ .name = "Terratec Prodigy XS",
|
|
|
+ .vchannels = 3,
|
|
|
+ .tda9887_conf = TDA9887_PRESENT,
|
|
|
+ .tuner_type = TUNER_XC2028,
|
|
|
+ .decoder = EM28XX_TVP5150,
|
|
|
+ .input = { {
|
|
|
+ .type = EM28XX_VMUX_TELEVISION,
|
|
|
+ .vmux = TVP5150_COMPOSITE0,
|
|
|
+ .amux = 0,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_COMPOSITE1,
|
|
|
+ .vmux = TVP5150_COMPOSITE1,
|
|
|
+ .amux = 1,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_SVIDEO,
|
|
|
+ .vmux = TVP5150_SVIDEO,
|
|
|
+ .amux = 1,
|
|
|
+ } },
|
|
|
+ },
|
|
|
+ [EM2820_BOARD_MSI_VOX_USB_2] = {
|
|
|
+ .name = "MSI VOX USB 2.0",
|
|
|
+ .vchannels = 3,
|
|
|
+ .tuner_type = TUNER_LG_PAL_NEW_TAPC,
|
|
|
+ .tda9887_conf = TDA9887_PRESENT |
|
|
|
+ TDA9887_PORT1_ACTIVE |
|
|
|
+ TDA9887_PORT2_ACTIVE,
|
|
|
+ .max_range_640_480 = 1,
|
|
|
+
|
|
|
+ .decoder = EM28XX_SAA7114,
|
|
|
+ .input = { {
|
|
|
+ .type = EM28XX_VMUX_TELEVISION,
|
|
|
+ .vmux = SAA7115_COMPOSITE4,
|
|
|
+ .amux = 0,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_COMPOSITE1,
|
|
|
+ .vmux = SAA7115_COMPOSITE0,
|
|
|
+ .amux = 1,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_SVIDEO,
|
|
|
+ .vmux = SAA7115_SVIDEO3,
|
|
|
+ .amux = 1,
|
|
|
+ } },
|
|
|
+ },
|
|
|
+ [EM2800_BOARD_TERRATEC_CINERGY_200] = {
|
|
|
+ .name = "Terratec Cinergy 200 USB",
|
|
|
+ .is_em2800 = 1,
|
|
|
+ .vchannels = 3,
|
|
|
+ .tuner_type = TUNER_LG_PAL_NEW_TAPC,
|
|
|
+ .tda9887_conf = TDA9887_PRESENT,
|
|
|
+ .decoder = EM28XX_SAA7113,
|
|
|
+ .input = { {
|
|
|
+ .type = EM28XX_VMUX_TELEVISION,
|
|
|
+ .vmux = SAA7115_COMPOSITE2,
|
|
|
+ .amux = 0,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_COMPOSITE1,
|
|
|
+ .vmux = SAA7115_COMPOSITE0,
|
|
|
+ .amux = 1,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_SVIDEO,
|
|
|
+ .vmux = SAA7115_SVIDEO3,
|
|
|
+ .amux = 1,
|
|
|
+ } },
|
|
|
+ },
|
|
|
+ [EM2800_BOARD_GRABBEEX_USB2800] = {
|
|
|
+ .name = "eMPIA Technology, Inc. GrabBeeX+ Video Encoder",
|
|
|
+ .is_em2800 = 1,
|
|
|
+ .vchannels = 2,
|
|
|
+ .decoder = EM28XX_SAA7113,
|
|
|
+ .input = { {
|
|
|
+ .type = EM28XX_VMUX_COMPOSITE1,
|
|
|
+ .vmux = SAA7115_COMPOSITE0,
|
|
|
+ .amux = 1,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_SVIDEO,
|
|
|
+ .vmux = SAA7115_SVIDEO3,
|
|
|
+ .amux = 1,
|
|
|
+ } },
|
|
|
+ },
|
|
|
+ [EM2800_BOARD_LEADTEK_WINFAST_USBII] = {
|
|
|
+ .name = "Leadtek Winfast USB II",
|
|
|
+ .is_em2800 = 1,
|
|
|
+ .vchannels = 3,
|
|
|
+ .tuner_type = TUNER_LG_PAL_NEW_TAPC,
|
|
|
+ .tda9887_conf = TDA9887_PRESENT,
|
|
|
+ .decoder = EM28XX_SAA7113,
|
|
|
+ .input = { {
|
|
|
+ .type = EM28XX_VMUX_TELEVISION,
|
|
|
+ .vmux = SAA7115_COMPOSITE2,
|
|
|
+ .amux = 0,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_COMPOSITE1,
|
|
|
+ .vmux = SAA7115_COMPOSITE0,
|
|
|
+ .amux = 1,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_SVIDEO,
|
|
|
+ .vmux = SAA7115_SVIDEO3,
|
|
|
+ .amux = 1,
|
|
|
+ } },
|
|
|
+ },
|
|
|
+ [EM2800_BOARD_KWORLD_USB2800] = {
|
|
|
+ .name = "Kworld USB2800",
|
|
|
+ .is_em2800 = 1,
|
|
|
+ .vchannels = 3,
|
|
|
+ .tuner_type = TUNER_PHILIPS_FCV1236D,
|
|
|
+ .tda9887_conf = TDA9887_PRESENT,
|
|
|
+ .decoder = EM28XX_SAA7113,
|
|
|
+ .input = { {
|
|
|
+ .type = EM28XX_VMUX_TELEVISION,
|
|
|
+ .vmux = SAA7115_COMPOSITE2,
|
|
|
+ .amux = 0,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_COMPOSITE1,
|
|
|
+ .vmux = SAA7115_COMPOSITE0,
|
|
|
+ .amux = 1,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_SVIDEO,
|
|
|
+ .vmux = SAA7115_SVIDEO3,
|
|
|
+ .amux = 1,
|
|
|
+ } },
|
|
|
+ },
|
|
|
+ [EM2820_BOARD_PINNACLE_DVC_90] = {
|
|
|
+ .name = "Pinnacle Dazzle DVC 90/DVC 100",
|
|
|
+ .vchannels = 3,
|
|
|
+ .tuner_type = TUNER_ABSENT,
|
|
|
+ .decoder = EM28XX_SAA7113,
|
|
|
+ .input = { {
|
|
|
+ .type = EM28XX_VMUX_COMPOSITE1,
|
|
|
+ .vmux = SAA7115_COMPOSITE0,
|
|
|
+ .amux = 1,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_SVIDEO,
|
|
|
+ .vmux = SAA7115_SVIDEO3,
|
|
|
+ .amux = 1,
|
|
|
+ } },
|
|
|
+ },
|
|
|
+ [EM2800_BOARD_VGEAR_POCKETTV] = {
|
|
|
+ .name = "V-Gear PocketTV",
|
|
|
+ .is_em2800 = 1,
|
|
|
+ .vchannels = 3,
|
|
|
+ .tuner_type = TUNER_LG_PAL_NEW_TAPC,
|
|
|
+ .tda9887_conf = TDA9887_PRESENT,
|
|
|
+ .decoder = EM28XX_SAA7113,
|
|
|
+ .input = { {
|
|
|
+ .type = EM28XX_VMUX_TELEVISION,
|
|
|
+ .vmux = SAA7115_COMPOSITE2,
|
|
|
+ .amux = 0,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_COMPOSITE1,
|
|
|
+ .vmux = SAA7115_COMPOSITE0,
|
|
|
+ .amux = 1,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_SVIDEO,
|
|
|
+ .vmux = SAA7115_SVIDEO3,
|
|
|
+ .amux = 1,
|
|
|
+ } },
|
|
|
+ },
|
|
|
+ [EM2820_BOARD_PROLINK_PLAYTV_USB2] = {
|
|
|
+ .name = "Pixelview Prolink PlayTV USB 2.0",
|
|
|
+ .vchannels = 3,
|
|
|
+ .tda9887_conf = TDA9887_PRESENT,
|
|
|
+ .tuner_type = TUNER_YMEC_TVF_5533MF,
|
|
|
+ .decoder = EM28XX_SAA7113,
|
|
|
+ .input = { {
|
|
|
+ .type = EM28XX_VMUX_TELEVISION,
|
|
|
+ .vmux = SAA7115_COMPOSITE2,
|
|
|
+ .amux = EM28XX_AMUX_LINE_IN,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_COMPOSITE1,
|
|
|
+ .vmux = SAA7115_COMPOSITE0,
|
|
|
+ .amux = EM28XX_AMUX_LINE_IN,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_SVIDEO,
|
|
|
+ .vmux = SAA7115_SVIDEO3,
|
|
|
+ .amux = EM28XX_AMUX_LINE_IN,
|
|
|
+ } },
|
|
|
+ },
|
|
|
+ [EM2860_BOARD_POINTNIX_INTRAORAL_CAMERA] = {
|
|
|
+ .name = "PointNix Intra-Oral Camera",
|
|
|
+ .has_snapshot_button = 1,
|
|
|
+ .vchannels = 1,
|
|
|
+ .tda9887_conf = TDA9887_PRESENT,
|
|
|
+ .tuner_type = TUNER_ABSENT,
|
|
|
+ .decoder = EM28XX_SAA7113,
|
|
|
+ .input = { {
|
|
|
+ .type = EM28XX_VMUX_SVIDEO,
|
|
|
+ .vmux = SAA7115_SVIDEO3,
|
|
|
+ .amux = 0,
|
|
|
+ } },
|
|
|
+ },
|
|
|
+ [EM2880_BOARD_MSI_DIGIVOX_AD] = {
|
|
|
+ .name = "MSI DigiVox A/D",
|
|
|
+ .valid = EM28XX_BOARD_NOT_VALIDATED,
|
|
|
+ .vchannels = 3,
|
|
|
+ .tuner_type = TUNER_XC2028,
|
|
|
+ .decoder = EM28XX_TVP5150,
|
|
|
+ .input = { {
|
|
|
+ .type = EM28XX_VMUX_TELEVISION,
|
|
|
+ .vmux = TVP5150_COMPOSITE0,
|
|
|
+ .amux = 0,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_COMPOSITE1,
|
|
|
+ .vmux = TVP5150_COMPOSITE1,
|
|
|
+ .amux = 1,
|
|
|
+ }, {
|
|
|
+ .type = EM28XX_VMUX_SVIDEO,
|
|
|
+ .vmux = TVP5150_SVIDEO,
|
|
|
+ .amux = 1,
|
|
|
+ } },
|
|
|
+ },
|
|
|
+ [EM2880_BOARD_MSI_DIGIVOX_AD_II] = {
|
|
|
+ .name = "MSI DigiVox A/D II",
|
|
|
+ .valid = EM28XX_BOARD_NOT_VALIDATED,
|
|
|
+ .vchannels = 3,
|
|
|
+ .tuner_type = TUNER_XC2028,
|
|
|
+ .decoder = EM28XX_TVP5150,
|
|
|
.input = { {
|
|
|
.type = EM28XX_VMUX_TELEVISION,
|
|
|
.vmux = TVP5150_COMPOSITE0,
|
|
@@ -240,10 +930,10 @@ struct em28xx_board em28xx_boards[] = {
|
|
|
.amux = 1,
|
|
|
} },
|
|
|
},
|
|
|
- [EM2880_BOARD_TERRATEC_HYBRID_XS] = {
|
|
|
- .name = "Terratec Hybrid XS",
|
|
|
+ [EM2880_BOARD_KWORLD_DVB_305U] = {
|
|
|
+ .name = "KWorld DVB-T 305U",
|
|
|
+ .valid = EM28XX_BOARD_NOT_VALIDATED,
|
|
|
.vchannels = 3,
|
|
|
- .tda9887_conf = TDA9887_PRESENT,
|
|
|
.tuner_type = TUNER_XC2028,
|
|
|
.decoder = EM28XX_TVP5150,
|
|
|
.input = { {
|
|
@@ -260,13 +950,10 @@ struct em28xx_board em28xx_boards[] = {
|
|
|
.amux = 1,
|
|
|
} },
|
|
|
},
|
|
|
- /* maybe there's a reason behind it why Terratec sells the Hybrid XS
|
|
|
- as Prodigy XS with a different PID, let's keep it separated for now
|
|
|
- maybe we'll need it lateron */
|
|
|
- [EM2880_BOARD_TERRATEC_PRODIGY_XS] = {
|
|
|
- .name = "Terratec Prodigy XS",
|
|
|
+ [EM2880_BOARD_KWORLD_DVB_310U] = {
|
|
|
+ .name = "KWorld DVB-T 310U",
|
|
|
+ .valid = EM28XX_BOARD_NOT_VALIDATED,
|
|
|
.vchannels = 3,
|
|
|
- .tda9887_conf = TDA9887_PRESENT,
|
|
|
.tuner_type = TUNER_XC2028,
|
|
|
.decoder = EM28XX_TVP5150,
|
|
|
.input = { {
|
|
@@ -283,160 +970,141 @@ struct em28xx_board em28xx_boards[] = {
|
|
|
.amux = 1,
|
|
|
} },
|
|
|
},
|
|
|
- [EM2820_BOARD_MSI_VOX_USB_2] = {
|
|
|
- .name = "MSI VOX USB 2.0",
|
|
|
- .vchannels = 3,
|
|
|
- .tuner_type = TUNER_LG_PAL_NEW_TAPC,
|
|
|
- .tda9887_conf = TDA9887_PRESENT |
|
|
|
- TDA9887_PORT1_ACTIVE |
|
|
|
- TDA9887_PORT2_ACTIVE,
|
|
|
- .max_range_640_480 = 1,
|
|
|
-
|
|
|
- .decoder = EM28XX_SAA7114,
|
|
|
- .input = { {
|
|
|
- .type = EM28XX_VMUX_TELEVISION,
|
|
|
- .vmux = SAA7115_COMPOSITE4,
|
|
|
- .amux = 0,
|
|
|
- }, {
|
|
|
- .type = EM28XX_VMUX_COMPOSITE1,
|
|
|
- .vmux = SAA7115_COMPOSITE0,
|
|
|
- .amux = 1,
|
|
|
- }, {
|
|
|
- .type = EM28XX_VMUX_SVIDEO,
|
|
|
- .vmux = SAA7115_SVIDEO3,
|
|
|
- .amux = 1,
|
|
|
- } },
|
|
|
- },
|
|
|
- [EM2800_BOARD_TERRATEC_CINERGY_200] = {
|
|
|
- .name = "Terratec Cinergy 200 USB",
|
|
|
- .is_em2800 = 1,
|
|
|
+ [EM2881_BOARD_DNT_DA2_HYBRID] = {
|
|
|
+ .name = "DNT DA2 Hybrid",
|
|
|
+ .valid = EM28XX_BOARD_NOT_VALIDATED,
|
|
|
.vchannels = 3,
|
|
|
- .tuner_type = TUNER_LG_PAL_NEW_TAPC,
|
|
|
- .tda9887_conf = TDA9887_PRESENT,
|
|
|
- .decoder = EM28XX_SAA7113,
|
|
|
+ .tuner_type = TUNER_XC2028,
|
|
|
+ .decoder = EM28XX_TVP5150,
|
|
|
.input = { {
|
|
|
.type = EM28XX_VMUX_TELEVISION,
|
|
|
- .vmux = SAA7115_COMPOSITE2,
|
|
|
+ .vmux = TVP5150_COMPOSITE0,
|
|
|
.amux = 0,
|
|
|
}, {
|
|
|
.type = EM28XX_VMUX_COMPOSITE1,
|
|
|
- .vmux = SAA7115_COMPOSITE0,
|
|
|
+ .vmux = TVP5150_COMPOSITE1,
|
|
|
.amux = 1,
|
|
|
}, {
|
|
|
.type = EM28XX_VMUX_SVIDEO,
|
|
|
- .vmux = SAA7115_SVIDEO3,
|
|
|
+ .vmux = TVP5150_SVIDEO,
|
|
|
.amux = 1,
|
|
|
} },
|
|
|
},
|
|
|
- [EM2800_BOARD_LEADTEK_WINFAST_USBII] = {
|
|
|
- .name = "Leadtek Winfast USB II",
|
|
|
- .is_em2800 = 1,
|
|
|
+ [EM2881_BOARD_PINNACLE_HYBRID_PRO] = {
|
|
|
+ .name = "Pinnacle Hybrid Pro",
|
|
|
+ .valid = EM28XX_BOARD_NOT_VALIDATED,
|
|
|
.vchannels = 3,
|
|
|
- .tuner_type = TUNER_LG_PAL_NEW_TAPC,
|
|
|
- .tda9887_conf = TDA9887_PRESENT,
|
|
|
- .decoder = EM28XX_SAA7113,
|
|
|
+ .tuner_type = TUNER_XC2028,
|
|
|
+ .decoder = EM28XX_TVP5150,
|
|
|
.input = { {
|
|
|
.type = EM28XX_VMUX_TELEVISION,
|
|
|
- .vmux = SAA7115_COMPOSITE2,
|
|
|
+ .vmux = TVP5150_COMPOSITE0,
|
|
|
.amux = 0,
|
|
|
}, {
|
|
|
.type = EM28XX_VMUX_COMPOSITE1,
|
|
|
- .vmux = SAA7115_COMPOSITE0,
|
|
|
+ .vmux = TVP5150_COMPOSITE1,
|
|
|
.amux = 1,
|
|
|
}, {
|
|
|
.type = EM28XX_VMUX_SVIDEO,
|
|
|
- .vmux = SAA7115_SVIDEO3,
|
|
|
+ .vmux = TVP5150_SVIDEO,
|
|
|
.amux = 1,
|
|
|
} },
|
|
|
},
|
|
|
- [EM2800_BOARD_KWORLD_USB2800] = {
|
|
|
- .name = "Kworld USB2800",
|
|
|
- .is_em2800 = 1,
|
|
|
+ [EM2882_BOARD_PINNACLE_HYBRID_PRO] = {
|
|
|
+ .name = "Pinnacle Hybrid Pro (2)",
|
|
|
+ .valid = EM28XX_BOARD_NOT_VALIDATED,
|
|
|
.vchannels = 3,
|
|
|
- .tuner_type = TUNER_PHILIPS_FCV1236D,
|
|
|
- .tda9887_conf = TDA9887_PRESENT,
|
|
|
- .decoder = EM28XX_SAA7113,
|
|
|
+ .tuner_type = TUNER_XC2028,
|
|
|
+ .decoder = EM28XX_TVP5150,
|
|
|
.input = { {
|
|
|
.type = EM28XX_VMUX_TELEVISION,
|
|
|
- .vmux = SAA7115_COMPOSITE2,
|
|
|
+ .vmux = TVP5150_COMPOSITE0,
|
|
|
.amux = 0,
|
|
|
}, {
|
|
|
.type = EM28XX_VMUX_COMPOSITE1,
|
|
|
- .vmux = SAA7115_COMPOSITE0,
|
|
|
+ .vmux = TVP5150_COMPOSITE1,
|
|
|
.amux = 1,
|
|
|
}, {
|
|
|
.type = EM28XX_VMUX_SVIDEO,
|
|
|
- .vmux = SAA7115_SVIDEO3,
|
|
|
+ .vmux = TVP5150_SVIDEO,
|
|
|
.amux = 1,
|
|
|
} },
|
|
|
},
|
|
|
- [EM2820_BOARD_PINNACLE_DVC_90] = {
|
|
|
- .name = "Pinnacle Dazzle DVC 90/DVC 100",
|
|
|
+ [EM2882_BOARD_KWORLD_VS_DVBT] = {
|
|
|
+ .name = "Kworld VS-DVB-T 323UR",
|
|
|
+ .valid = EM28XX_BOARD_NOT_VALIDATED,
|
|
|
.vchannels = 3,
|
|
|
- .tuner_type = TUNER_ABSENT,
|
|
|
- .decoder = EM28XX_SAA7113,
|
|
|
+ .tuner_type = TUNER_XC2028,
|
|
|
+ .decoder = EM28XX_TVP5150,
|
|
|
.input = { {
|
|
|
+ .type = EM28XX_VMUX_TELEVISION,
|
|
|
+ .vmux = TVP5150_COMPOSITE0,
|
|
|
+ .amux = 0,
|
|
|
+ }, {
|
|
|
.type = EM28XX_VMUX_COMPOSITE1,
|
|
|
- .vmux = SAA7115_COMPOSITE0,
|
|
|
+ .vmux = TVP5150_COMPOSITE1,
|
|
|
.amux = 1,
|
|
|
}, {
|
|
|
.type = EM28XX_VMUX_SVIDEO,
|
|
|
- .vmux = SAA7115_SVIDEO3,
|
|
|
+ .vmux = TVP5150_SVIDEO,
|
|
|
.amux = 1,
|
|
|
} },
|
|
|
},
|
|
|
- [EM2800_BOARD_VGEAR_POCKETTV] = {
|
|
|
- .name = "V-Gear PocketTV",
|
|
|
- .is_em2800 = 1,
|
|
|
+ [EM2882_BOARD_TERRATEC_HYBRID_XS] = {
|
|
|
+ .name = "Terratec Hybrid XS (em2882)",
|
|
|
+ .valid = EM28XX_BOARD_NOT_VALIDATED,
|
|
|
.vchannels = 3,
|
|
|
- .tuner_type = TUNER_LG_PAL_NEW_TAPC,
|
|
|
- .tda9887_conf = TDA9887_PRESENT,
|
|
|
- .decoder = EM28XX_SAA7113,
|
|
|
+ .tuner_type = TUNER_XC2028,
|
|
|
+ .decoder = EM28XX_TVP5150,
|
|
|
.input = { {
|
|
|
.type = EM28XX_VMUX_TELEVISION,
|
|
|
- .vmux = SAA7115_COMPOSITE2,
|
|
|
+ .vmux = TVP5150_COMPOSITE0,
|
|
|
.amux = 0,
|
|
|
}, {
|
|
|
.type = EM28XX_VMUX_COMPOSITE1,
|
|
|
- .vmux = SAA7115_COMPOSITE0,
|
|
|
+ .vmux = TVP5150_COMPOSITE1,
|
|
|
.amux = 1,
|
|
|
}, {
|
|
|
.type = EM28XX_VMUX_SVIDEO,
|
|
|
- .vmux = SAA7115_SVIDEO3,
|
|
|
+ .vmux = TVP5150_SVIDEO,
|
|
|
.amux = 1,
|
|
|
} },
|
|
|
},
|
|
|
- [EM2820_BOARD_PROLINK_PLAYTV_USB2] = {
|
|
|
- .name = "Pixelview Prolink PlayTV USB 2.0",
|
|
|
+ [EM2883_BOARD_KWORLD_HYBRID_A316] = {
|
|
|
+ .name = "Kworld PlusTV HD Hybrid 330",
|
|
|
+ .valid = EM28XX_BOARD_NOT_VALIDATED,
|
|
|
.vchannels = 3,
|
|
|
- .tda9887_conf = TDA9887_PRESENT,
|
|
|
- .tuner_type = TUNER_YMEC_TVF_5533MF,
|
|
|
- .decoder = EM28XX_SAA7113,
|
|
|
+ .is_em2800 = 0,
|
|
|
+ .tuner_type = TUNER_XC2028,
|
|
|
+ .decoder = EM28XX_TVP5150,
|
|
|
.input = { {
|
|
|
.type = EM28XX_VMUX_TELEVISION,
|
|
|
- .vmux = SAA7115_COMPOSITE2,
|
|
|
- .amux = EM28XX_AMUX_LINE_IN,
|
|
|
+ .vmux = TVP5150_COMPOSITE0,
|
|
|
+ .amux = 0,
|
|
|
}, {
|
|
|
.type = EM28XX_VMUX_COMPOSITE1,
|
|
|
- .vmux = SAA7115_COMPOSITE0,
|
|
|
- .amux = EM28XX_AMUX_LINE_IN,
|
|
|
+ .vmux = TVP5150_COMPOSITE1,
|
|
|
+ .amux = 1,
|
|
|
}, {
|
|
|
.type = EM28XX_VMUX_SVIDEO,
|
|
|
- .vmux = SAA7115_SVIDEO3,
|
|
|
- .amux = EM28XX_AMUX_LINE_IN,
|
|
|
+ .vmux = TVP5150_SVIDEO,
|
|
|
+ .amux = 1,
|
|
|
} },
|
|
|
},
|
|
|
- [EM2860_BOARD_POINTNIX_INTRAORAL_CAMERA] = {
|
|
|
- .name = "PointNix Intra-Oral Camera",
|
|
|
- .has_snapshot_button = 1,
|
|
|
- .vchannels = 1,
|
|
|
+ [EM2820_BOARD_COMPRO_VIDEOMATE_FORYOU] = {
|
|
|
+ .name = "Compro VideoMate ForYou/Stereo",
|
|
|
+ .vchannels = 2,
|
|
|
+ .tuner_type = TUNER_LG_PAL_NEW_TAPC,
|
|
|
.tda9887_conf = TDA9887_PRESENT,
|
|
|
- .tuner_type = TUNER_ABSENT,
|
|
|
- .decoder = EM28XX_SAA7113,
|
|
|
+ .decoder = EM28XX_TVP5150,
|
|
|
.input = { {
|
|
|
+ .type = EM28XX_VMUX_TELEVISION,
|
|
|
+ .vmux = TVP5150_COMPOSITE0,
|
|
|
+ .amux = EM28XX_AMUX_LINE_IN,
|
|
|
+ }, {
|
|
|
.type = EM28XX_VMUX_SVIDEO,
|
|
|
- .vmux = SAA7115_SVIDEO3,
|
|
|
- .amux = 0,
|
|
|
+ .vmux = TVP5150_SVIDEO,
|
|
|
+ .amux = EM28XX_AMUX_LINE_IN,
|
|
|
} },
|
|
|
},
|
|
|
};
|
|
@@ -445,7 +1113,9 @@ const unsigned int em28xx_bcount = ARRAY_SIZE(em28xx_boards);
|
|
|
/* table of devices that work with this driver */
|
|
|
struct usb_device_id em28xx_id_table [] = {
|
|
|
{ USB_DEVICE(0xeb1a, 0x2750),
|
|
|
- .driver_info = EM2820_BOARD_UNKNOWN },
|
|
|
+ .driver_info = EM2750_BOARD_UNKNOWN },
|
|
|
+ { USB_DEVICE(0xeb1a, 0x2751),
|
|
|
+ .driver_info = EM2750_BOARD_UNKNOWN },
|
|
|
{ USB_DEVICE(0xeb1a, 0x2800),
|
|
|
.driver_info = EM2800_BOARD_UNKNOWN },
|
|
|
{ USB_DEVICE(0xeb1a, 0x2820),
|
|
@@ -462,36 +1132,78 @@ struct usb_device_id em28xx_id_table [] = {
|
|
|
.driver_info = EM2820_BOARD_UNKNOWN },
|
|
|
{ USB_DEVICE(0xeb1a, 0x2883),
|
|
|
.driver_info = EM2820_BOARD_UNKNOWN },
|
|
|
+ { USB_DEVICE(0xeb1a, 0xe300),
|
|
|
+ .driver_info = EM2861_BOARD_KWORLD_PVRTV_300U },
|
|
|
+ { USB_DEVICE(0xeb1a, 0xe305),
|
|
|
+ .driver_info = EM2880_BOARD_KWORLD_DVB_305U },
|
|
|
+ { USB_DEVICE(0xeb1a, 0xe310),
|
|
|
+ .driver_info = EM2880_BOARD_MSI_DIGIVOX_AD },
|
|
|
+ { USB_DEVICE(0xeb1a, 0xa316),
|
|
|
+ .driver_info = EM2883_BOARD_KWORLD_HYBRID_A316 },
|
|
|
+ { USB_DEVICE(0xeb1a, 0xe320),
|
|
|
+ .driver_info = EM2880_BOARD_MSI_DIGIVOX_AD_II },
|
|
|
+ { USB_DEVICE(0xeb1a, 0xe323),
|
|
|
+ .driver_info = EM2882_BOARD_KWORLD_VS_DVBT },
|
|
|
+ { USB_DEVICE(0xeb1a, 0xe350),
|
|
|
+ .driver_info = EM2870_BOARD_KWORLD_350U },
|
|
|
+ { USB_DEVICE(0xeb1a, 0xe355),
|
|
|
+ .driver_info = EM2870_BOARD_KWORLD_355U },
|
|
|
+ { USB_DEVICE(0xeb1a, 0x2801),
|
|
|
+ .driver_info = EM2800_BOARD_GRABBEEX_USB2800 },
|
|
|
+ { USB_DEVICE(0xeb1a, 0xe357),
|
|
|
+ .driver_info = EM2870_BOARD_KWORLD_355U },
|
|
|
{ USB_DEVICE(0x0ccd, 0x0036),
|
|
|
.driver_info = EM2820_BOARD_TERRATEC_CINERGY_250 },
|
|
|
- { USB_DEVICE(0x2304, 0x0208),
|
|
|
- .driver_info = EM2820_BOARD_PINNACLE_USB_2 },
|
|
|
+ { USB_DEVICE(0x0ccd, 0x004c),
|
|
|
+ .driver_info = EM2880_BOARD_TERRATEC_HYBRID_XS_FR },
|
|
|
+ { USB_DEVICE(0x0ccd, 0x004f),
|
|
|
+ .driver_info = EM2860_BOARD_TERRATEC_HYBRID_XS },
|
|
|
+ { USB_DEVICE(0x0ccd, 0x005e),
|
|
|
+ .driver_info = EM2882_BOARD_TERRATEC_HYBRID_XS },
|
|
|
+ { USB_DEVICE(0x0ccd, 0x0042),
|
|
|
+ .driver_info = EM2880_BOARD_TERRATEC_HYBRID_XS },
|
|
|
+ { USB_DEVICE(0x0ccd, 0x0043),
|
|
|
+ .driver_info = EM2870_BOARD_TERRATEC_XS },
|
|
|
+ { USB_DEVICE(0x0ccd, 0x0047),
|
|
|
+ .driver_info = EM2880_BOARD_TERRATEC_PRODIGY_XS },
|
|
|
+ { USB_DEVICE(0x185b, 0x2870),
|
|
|
+ .driver_info = EM2870_BOARD_COMPRO_VIDEOMATE },
|
|
|
+ { USB_DEVICE(0x185b, 0x2041),
|
|
|
+ .driver_info = EM2820_BOARD_COMPRO_VIDEOMATE_FORYOU },
|
|
|
{ USB_DEVICE(0x2040, 0x4200),
|
|
|
.driver_info = EM2820_BOARD_HAUPPAUGE_WINTV_USB_2 },
|
|
|
{ USB_DEVICE(0x2040, 0x4201),
|
|
|
.driver_info = EM2820_BOARD_HAUPPAUGE_WINTV_USB_2 },
|
|
|
- { USB_DEVICE(0x2304, 0x0207),
|
|
|
- .driver_info = EM2820_BOARD_PINNACLE_DVC_90 },
|
|
|
- { USB_DEVICE(0x2304, 0x021a),
|
|
|
- .driver_info = EM2820_BOARD_PINNACLE_DVC_90 },
|
|
|
- { USB_DEVICE(0x2304, 0x0227),
|
|
|
- .driver_info = EM2880_BOARD_PINNACLE_PCTV_HD_PRO },
|
|
|
{ USB_DEVICE(0x2040, 0x6500),
|
|
|
.driver_info = EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900 },
|
|
|
{ USB_DEVICE(0x2040, 0x6502),
|
|
|
.driver_info = EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900_R2 },
|
|
|
{ USB_DEVICE(0x2040, 0x6513), /* HCW HVR-980 */
|
|
|
- .driver_info = EM2880_BOARD_HAUPPAUGE_WINTV_HVR_950 },
|
|
|
+ .driver_info = EM2883_BOARD_HAUPPAUGE_WINTV_HVR_950 },
|
|
|
{ USB_DEVICE(0x2040, 0x6517), /* HP HVR-950 */
|
|
|
- .driver_info = EM2880_BOARD_HAUPPAUGE_WINTV_HVR_950 },
|
|
|
+ .driver_info = EM2883_BOARD_HAUPPAUGE_WINTV_HVR_950 },
|
|
|
{ USB_DEVICE(0x2040, 0x651b), /* RP HVR-950 */
|
|
|
- .driver_info = EM2880_BOARD_HAUPPAUGE_WINTV_HVR_950 },
|
|
|
+ .driver_info = EM2883_BOARD_HAUPPAUGE_WINTV_HVR_950 },
|
|
|
{ USB_DEVICE(0x2040, 0x651f), /* HCW HVR-850 */
|
|
|
- .driver_info = EM2880_BOARD_HAUPPAUGE_WINTV_HVR_950 },
|
|
|
- { USB_DEVICE(0x0ccd, 0x0042),
|
|
|
- .driver_info = EM2880_BOARD_TERRATEC_HYBRID_XS },
|
|
|
- { USB_DEVICE(0x0ccd, 0x0047),
|
|
|
- .driver_info = EM2880_BOARD_TERRATEC_PRODIGY_XS },
|
|
|
+ .driver_info = EM2883_BOARD_HAUPPAUGE_WINTV_HVR_950 },
|
|
|
+ { USB_DEVICE(0x0438, 0xb002),
|
|
|
+ .driver_info = EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600 },
|
|
|
+ { USB_DEVICE(0x2001, 0xf112),
|
|
|
+ .driver_info = EM2820_BOARD_DLINK_USB_TV },
|
|
|
+ { USB_DEVICE(0x2304, 0x0207),
|
|
|
+ .driver_info = EM2820_BOARD_PINNACLE_DVC_90 },
|
|
|
+ { USB_DEVICE(0x2304, 0x0208),
|
|
|
+ .driver_info = EM2820_BOARD_PINNACLE_USB_2 },
|
|
|
+ { USB_DEVICE(0x2304, 0x021a),
|
|
|
+ .driver_info = EM2820_BOARD_PINNACLE_DVC_90 },
|
|
|
+ { USB_DEVICE(0x2304, 0x0226),
|
|
|
+ .driver_info = EM2882_BOARD_PINNACLE_HYBRID_PRO },
|
|
|
+ { USB_DEVICE(0x2304, 0x0227),
|
|
|
+ .driver_info = EM2880_BOARD_PINNACLE_PCTV_HD_PRO },
|
|
|
+ { USB_DEVICE(0x0413, 0x6023),
|
|
|
+ .driver_info = EM2800_BOARD_LEADTEK_WINFAST_USBII },
|
|
|
+ { USB_DEVICE(0x093b, 0xa005),
|
|
|
+ .driver_info = EM2861_BOARD_PLEXTOR_PX_TV100U },
|
|
|
{ },
|
|
|
};
|
|
|
MODULE_DEVICE_TABLE(usb, em28xx_id_table);
|
|
@@ -500,6 +1212,18 @@ MODULE_DEVICE_TABLE(usb, em28xx_id_table);
|
|
|
* Reset sequences for analog/digital modes
|
|
|
*/
|
|
|
|
|
|
+/* Reset for the most [analog] boards */
|
|
|
+static struct em28xx_reg_seq default_analog[] = {
|
|
|
+ {EM28XX_R08_GPIO, 0x6d, ~EM_GPIO_4, 10},
|
|
|
+ { -1, -1, -1, -1},
|
|
|
+};
|
|
|
+
|
|
|
+/* Reset for the most [digital] boards */
|
|
|
+static struct em28xx_reg_seq default_digital[] = {
|
|
|
+ {EM28XX_R08_GPIO, 0x6e, ~EM_GPIO_4, 10},
|
|
|
+ { -1, -1, -1, -1},
|
|
|
+};
|
|
|
+
|
|
|
/* Board Hauppauge WinTV HVR 900 analog */
|
|
|
static struct em28xx_reg_seq hauppauge_wintv_hvr_900_analog[] = {
|
|
|
{EM28XX_R08_GPIO, 0x2d, ~EM_GPIO_4, 10},
|
|
@@ -515,14 +1239,42 @@ static struct em28xx_reg_seq hauppauge_wintv_hvr_900_digital[] = {
|
|
|
{ -1, -1, -1, -1},
|
|
|
};
|
|
|
|
|
|
-/* Board Hauppauge WinTV HVR 900 tuner_callback */
|
|
|
-static struct em28xx_reg_seq hauppauge_wintv_hvr_900_tuner_callback[] = {
|
|
|
+/* Boards - EM2880 MSI DIGIVOX AD and EM2880_BOARD_MSI_DIGIVOX_AD_II */
|
|
|
+static struct em28xx_reg_seq em2880_msi_digivox_ad_analog[] = {
|
|
|
+ {EM28XX_R08_GPIO, 0x69, ~EM_GPIO_4, 10},
|
|
|
+ { -1, -1, -1, -1},
|
|
|
+};
|
|
|
+
|
|
|
+/* Boards - EM2880 MSI DIGIVOX AD and EM2880_BOARD_MSI_DIGIVOX_AD_II */
|
|
|
+static struct em28xx_reg_seq em2880_msi_digivox_ad_digital[] = {
|
|
|
+ {EM28XX_R08_GPIO, 0x6a, ~EM_GPIO_4, 10},
|
|
|
+ { -1, -1, -1, -1},
|
|
|
+};
|
|
|
+
|
|
|
+/* Board - EM2870 Kworld 355u
|
|
|
+ Analog - No input analog */
|
|
|
+static struct em28xx_reg_seq em2870_kworld_355u_digital[] = {
|
|
|
+ {EM2880_R04_GPO, 0x01, 0xff, 10},
|
|
|
+ { -1, -1, -1, -1},
|
|
|
+};
|
|
|
+
|
|
|
+/* Callback for the most boards */
|
|
|
+static struct em28xx_reg_seq default_callback[] = {
|
|
|
{EM28XX_R08_GPIO, EM_GPIO_4, EM_GPIO_4, 10},
|
|
|
{EM28XX_R08_GPIO, 0, EM_GPIO_4, 10},
|
|
|
{EM28XX_R08_GPIO, EM_GPIO_4, EM_GPIO_4, 10},
|
|
|
{ -1, -1, -1, -1},
|
|
|
};
|
|
|
|
|
|
+/* Callback for EM2882 TERRATEC HYBRID XS */
|
|
|
+static struct em28xx_reg_seq em2882_terratec_hybrid_xs_digital[] = {
|
|
|
+ {EM28XX_R08_GPIO, 0x2e, 0xff, 6},
|
|
|
+ {EM28XX_R08_GPIO, 0x3e, ~EM_GPIO_4, 6},
|
|
|
+ {EM2880_R04_GPO, 0x04, 0xff, 10},
|
|
|
+ {EM2880_R04_GPO, 0x0c, 0xff, 10},
|
|
|
+ { -1, -1, -1, -1},
|
|
|
+};
|
|
|
+
|
|
|
/*
|
|
|
* EEPROM hash table for devices with generic USB IDs
|
|
|
*/
|
|
@@ -569,6 +1321,7 @@ static void em28xx_set_model(struct em28xx *dev)
|
|
|
dev->max_range_640_480 = em28xx_boards[dev->model].max_range_640_480;
|
|
|
dev->has_dvb = em28xx_boards[dev->model].has_dvb;
|
|
|
dev->has_snapshot_button = em28xx_boards[dev->model].has_snapshot_button;
|
|
|
+ dev->valid = em28xx_boards[dev->model].valid;
|
|
|
}
|
|
|
|
|
|
/* Since em28xx_pre_card_setup() requires a proper dev->model,
|
|
@@ -604,19 +1357,171 @@ void em28xx_pre_card_setup(struct em28xx *dev)
|
|
|
case EM2880_BOARD_TERRATEC_PRODIGY_XS:
|
|
|
case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900:
|
|
|
case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900_R2:
|
|
|
- case EM2880_BOARD_TERRATEC_HYBRID_XS:
|
|
|
- case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_950:
|
|
|
+ case EM2860_BOARD_TERRATEC_HYBRID_XS:
|
|
|
+ case EM2883_BOARD_HAUPPAUGE_WINTV_HVR_950:
|
|
|
case EM2880_BOARD_PINNACLE_PCTV_HD_PRO:
|
|
|
+ case EM2882_BOARD_PINNACLE_HYBRID_PRO:
|
|
|
+ case EM2883_BOARD_KWORLD_HYBRID_A316:
|
|
|
+ case EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600:
|
|
|
+ em28xx_write_regs(dev, EM28XX_R0F_XCLK, "\x27", 1);
|
|
|
+ em28xx_write_regs(dev, EM28XX_R06_I2C_CLK, "\x40", 1);
|
|
|
+ msleep(50);
|
|
|
+
|
|
|
+ /* Sets GPO/GPIO sequences for this device */
|
|
|
+ dev->analog_gpio = hauppauge_wintv_hvr_900_analog;
|
|
|
+ dev->digital_gpio = hauppauge_wintv_hvr_900_digital;
|
|
|
+ dev->tun_analog_gpio = default_callback;
|
|
|
+ dev->tun_digital_gpio = default_callback;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case EM2882_BOARD_TERRATEC_HYBRID_XS:
|
|
|
em28xx_write_regs(dev, EM28XX_R0F_XCLK, "\x27", 1);
|
|
|
em28xx_write_regs(dev, EM28XX_R06_I2C_CLK, "\x40", 1);
|
|
|
msleep(50);
|
|
|
|
|
|
+ /* should be added ir_codes here */
|
|
|
+
|
|
|
/* Sets GPO/GPIO sequences for this device */
|
|
|
dev->analog_gpio = hauppauge_wintv_hvr_900_analog;
|
|
|
dev->digital_gpio = hauppauge_wintv_hvr_900_digital;
|
|
|
- dev->tun_analog_gpio = hauppauge_wintv_hvr_900_tuner_callback;
|
|
|
- dev->tun_digital_gpio = hauppauge_wintv_hvr_900_tuner_callback;
|
|
|
+ dev->tun_analog_gpio = default_callback;
|
|
|
+ dev->tun_digital_gpio = em2882_terratec_hybrid_xs_digital;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case EM2880_BOARD_TERRATEC_HYBRID_XS_FR:
|
|
|
+ case EM2880_BOARD_TERRATEC_HYBRID_XS:
|
|
|
+ case EM2870_BOARD_TERRATEC_XS:
|
|
|
+ case EM2881_BOARD_PINNACLE_HYBRID_PRO:
|
|
|
+ case EM2880_BOARD_KWORLD_DVB_310U:
|
|
|
+ case EM2870_BOARD_KWORLD_350U:
|
|
|
+ case EM2881_BOARD_DNT_DA2_HYBRID:
|
|
|
+ em28xx_write_regs(dev, EM28XX_R0F_XCLK, "\x27", 1);
|
|
|
+ em28xx_write_regs(dev, EM28XX_R06_I2C_CLK, "\x40", 1);
|
|
|
+ msleep(50);
|
|
|
+
|
|
|
+ /* NOTE: EM2881_DNT_DA2_HYBRID spend 140 msleep for digital
|
|
|
+ and analog commands. If this commands doesn't work,
|
|
|
+ add this timer. */
|
|
|
+
|
|
|
+ /* Sets GPO/GPIO sequences for this device */
|
|
|
+ dev->analog_gpio = default_analog;
|
|
|
+ dev->digital_gpio = default_digital;
|
|
|
+ dev->tun_analog_gpio = default_callback;
|
|
|
+ dev->tun_digital_gpio = default_callback;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case EM2880_BOARD_MSI_DIGIVOX_AD:
|
|
|
+ case EM2880_BOARD_MSI_DIGIVOX_AD_II:
|
|
|
+ em28xx_write_regs(dev, EM28XX_R0F_XCLK, "\x27", 1);
|
|
|
+ em28xx_write_regs(dev, EM28XX_R06_I2C_CLK, "\x40", 1);
|
|
|
+ msleep(50);
|
|
|
+
|
|
|
+ /* Sets GPO/GPIO sequences for this device */
|
|
|
+ dev->analog_gpio = em2880_msi_digivox_ad_analog;
|
|
|
+ dev->digital_gpio = em2880_msi_digivox_ad_digital;
|
|
|
+ dev->tun_analog_gpio = default_callback;
|
|
|
+ dev->tun_digital_gpio = default_callback;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case EM2750_BOARD_UNKNOWN:
|
|
|
+ case EM2750_BOARD_DLCW_130:
|
|
|
+ em28xx_write_regs(dev, EM28XX_R0F_XCLK, "\x0a", 1);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case EM2861_BOARD_PLEXTOR_PX_TV100U:
|
|
|
+ em28xx_write_regs(dev, EM28XX_R0F_XCLK, "\x27", 1);
|
|
|
+ em28xx_write_regs(dev, EM28XX_R06_I2C_CLK, "\x40", 1);
|
|
|
+ /* FIXME guess */
|
|
|
+ /* Turn on analog audio output */
|
|
|
+ em28xx_write_regs_req(dev, 0x00, 0x08, "\xfd", 1);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case EM2861_BOARD_KWORLD_PVRTV_300U:
|
|
|
+ case EM2880_BOARD_KWORLD_DVB_305U:
|
|
|
+ em28xx_write_regs(dev, EM28XX_R0F_XCLK, "\x27", 1);
|
|
|
+ em28xx_write_regs(dev, EM28XX_R06_I2C_CLK, "\x4c", 1);
|
|
|
+ msleep(10);
|
|
|
+ em28xx_write_regs(dev, 0x08, "\x6d", 1);
|
|
|
+ msleep(10);
|
|
|
+ em28xx_write_regs(dev, 0x08, "\x7d", 1);
|
|
|
+ msleep(10);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case EM2870_BOARD_KWORLD_355U:
|
|
|
+ em28xx_write_regs(dev, EM28XX_R0F_XCLK, "\x27", 1);
|
|
|
+ em28xx_write_regs(dev, EM28XX_R06_I2C_CLK, "\x40", 1);
|
|
|
+ msleep(50);
|
|
|
+
|
|
|
+ /* Sets GPO/GPIO sequences for this device */
|
|
|
+ dev->digital_gpio = em2870_kworld_355u_digital;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case EM2870_BOARD_COMPRO_VIDEOMATE:
|
|
|
+ em28xx_write_regs(dev, EM28XX_R0F_XCLK, "\x27", 1);
|
|
|
+ em28xx_write_regs(dev, EM28XX_R06_I2C_CLK, "\x40", 1);
|
|
|
+ /* TODO: someone can do some cleanup here...
|
|
|
+ not everything's needed */
|
|
|
+ em28xx_write_regs(dev, 0x04, "\x00", 1);
|
|
|
+ msleep(10);
|
|
|
+ em28xx_write_regs(dev, 0x04, "\x01", 1);
|
|
|
+ msleep(10);
|
|
|
+ em28xx_write_regs(dev, 0x08, "\xfd", 1);
|
|
|
+ mdelay(70);
|
|
|
+ em28xx_write_regs(dev, 0x08, "\xfc", 1);
|
|
|
+ mdelay(70);
|
|
|
+ em28xx_write_regs(dev, 0x08, "\xdc", 1);
|
|
|
+ mdelay(70);
|
|
|
+ em28xx_write_regs(dev, 0x08, "\xfc", 1);
|
|
|
+ mdelay(70);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case EM2870_BOARD_TERRATEC_XS_MT2060:
|
|
|
+ em28xx_write_regs(dev, EM28XX_R0F_XCLK, "\x27", 1);
|
|
|
+ em28xx_write_regs(dev, EM28XX_R06_I2C_CLK, "\x40", 1);
|
|
|
+ /* this device needs some gpio writes to get the DVB-T
|
|
|
+ demod work */
|
|
|
+ em28xx_write_regs(dev, 0x08, "\xfe", 1);
|
|
|
+ mdelay(70);
|
|
|
+ em28xx_write_regs(dev, 0x08, "\xde", 1);
|
|
|
+ mdelay(70);
|
|
|
+ dev->em28xx_write_regs(dev, 0x08, "\xfe", 1);
|
|
|
+ mdelay(70);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case EM2870_BOARD_PINNACLE_PCTV_DVB:
|
|
|
+ em28xx_write_regs(dev, EM28XX_R06_I2C_CLK, "\x40", 1);
|
|
|
+ /* this device needs some gpio writes to get the
|
|
|
+ DVB-T demod work */
|
|
|
+ em28xx_write_regs(dev, 0x08, "\xfe", 1);
|
|
|
+ mdelay(70);
|
|
|
+ em28xx_write_regs(dev, 0x08, "\xde", 1);
|
|
|
+ mdelay(70);
|
|
|
+ em28xx_write_regs(dev, 0x08, "\xfe", 1);
|
|
|
+ mdelay(70);
|
|
|
+ /* switch em2880 rc protocol */
|
|
|
+ em28xx_write_regs(dev, EM28XX_R0F_XCLK, "\x22", 1);
|
|
|
+ /* should be added ir_codes here */
|
|
|
+ break;
|
|
|
+
|
|
|
+ case EM2820_BOARD_GADMEI_UTV310:
|
|
|
+ em28xx_write_regs(dev, EM28XX_R0F_XCLK, "\x27", 1);
|
|
|
+ em28xx_write_regs(dev, EM28XX_R06_I2C_CLK, "\x40", 1);
|
|
|
+ /* Turn on analog audio output */
|
|
|
+ em28xx_write_regs_req(dev, 0x00, 0x08, "\xfd", 1);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case EM2860_BOARD_GADMEI_UTV330:
|
|
|
+ /* Turn on IR */
|
|
|
+ em28xx_write_regs(dev, EM28XX_R0F_XCLK, "\x07", 1);
|
|
|
+ em28xx_write_regs(dev, EM28XX_R06_I2C_CLK, "\x40", 1);
|
|
|
+ /* should be added ir_codes here */
|
|
|
+ break;
|
|
|
|
|
|
+ case EM2820_BOARD_MSI_VOX_USB_2:
|
|
|
+ em28xx_write_regs(dev, EM28XX_R0F_XCLK, "\x27", 1);
|
|
|
+ em28xx_write_regs(dev, EM28XX_R06_I2C_CLK, "\x40", 1);
|
|
|
+ /* enables audio for that device */
|
|
|
+ em28xx_write_regs_req(dev, 0x00, 0x08, "\xfd", 1);
|
|
|
break;
|
|
|
}
|
|
|
|
|
@@ -639,12 +1544,16 @@ static void em28xx_setup_xc3028(struct em28xx *dev, struct xc2028_ctrl *ctl)
|
|
|
case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900:
|
|
|
ctl->demod = XC3028_FE_ZARLINK456;
|
|
|
break;
|
|
|
+ case EM2880_BOARD_TERRATEC_HYBRID_XS:
|
|
|
+ ctl->demod = XC3028_FE_ZARLINK456;
|
|
|
+ break;
|
|
|
case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900_R2:
|
|
|
/* djh - Not sure which demod we need here */
|
|
|
ctl->demod = XC3028_FE_DEFAULT;
|
|
|
break;
|
|
|
- case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_950:
|
|
|
+ case EM2883_BOARD_HAUPPAUGE_WINTV_HVR_950:
|
|
|
case EM2880_BOARD_PINNACLE_PCTV_HD_PRO:
|
|
|
+ case EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600:
|
|
|
/* FIXME: Better to specify the needed IF */
|
|
|
ctl->demod = XC3028_FE_DEFAULT;
|
|
|
break;
|
|
@@ -809,6 +1718,8 @@ void em28xx_set_ir(struct em28xx *dev, struct IR_i2c *ir)
|
|
|
break;
|
|
|
case (EM2800_BOARD_KWORLD_USB2800):
|
|
|
break;
|
|
|
+ case (EM2800_BOARD_GRABBEEX_USB2800):
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -823,7 +1734,7 @@ void em28xx_card_setup(struct em28xx *dev)
|
|
|
case EM2820_BOARD_HAUPPAUGE_WINTV_USB_2:
|
|
|
case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900:
|
|
|
case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900_R2:
|
|
|
- case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_950:
|
|
|
+ case EM2883_BOARD_HAUPPAUGE_WINTV_HVR_950:
|
|
|
{
|
|
|
struct tveeprom tv;
|
|
|
#ifdef CONFIG_MODULES
|
|
@@ -836,7 +1747,7 @@ void em28xx_card_setup(struct em28xx *dev)
|
|
|
|
|
|
dev->tuner_type = tv.tuner_type;
|
|
|
|
|
|
- if (tv.audio_processor == AUDIO_CHIP_MSP34XX) {
|
|
|
+ if (tv.audio_processor == V4L2_IDENT_MSPX4XX) {
|
|
|
dev->i2s_speed = 2048000;
|
|
|
dev->has_msp34xx = 1;
|
|
|
}
|
|
@@ -854,11 +1765,21 @@ void em28xx_card_setup(struct em28xx *dev)
|
|
|
case EM2800_BOARD_UNKNOWN:
|
|
|
if (!em28xx_hint_board(dev))
|
|
|
em28xx_set_model(dev);
|
|
|
+ break;
|
|
|
}
|
|
|
|
|
|
if (dev->has_snapshot_button)
|
|
|
em28xx_register_snapshot_button(dev);
|
|
|
|
|
|
+ if (dev->valid == EM28XX_BOARD_NOT_VALIDATED) {
|
|
|
+ em28xx_errdev("\n\n");
|
|
|
+ em28xx_errdev("The support for this board weren't "
|
|
|
+ "valid yet.\n");
|
|
|
+ em28xx_errdev("Please send a report of having this working\n");
|
|
|
+ em28xx_errdev("not to V4L mailing list (and/or to other "
|
|
|
+ "addresses)\n\n");
|
|
|
+ }
|
|
|
+
|
|
|
/* Allow override tuner type by a module parameter */
|
|
|
if (tuner >= 0)
|
|
|
dev->tuner_type = tuner;
|