Hello all,

I bought Leadtek WinFast DTV2000H, but it didn't work. I found, that there are 
two types of this card. Type I (older), and type J (latest) ... and only type I 
is supported by the module.

Type J is not autodetected, and if you force card type (card = 51), DVB-T 
works, but there is no sound in analogue television. I know why (multiplexer, 
which is switching between the radio, TV, and external sound is driven by GPIO 
pins ... and setting of this pins is wrong), and I wrote a patch, which makes 
this card (DTV2000H type J) works. 

With this patch, card is autodetected, I'm having sound in analogue television, 
I can switch between antenna, and cable signal input, and I can see video from 
external S-video and composite video input.

So ... I'm sending this patch to you. I think it will be good to add support 
for this card to the cx88xx module.

Bye,
        Zbynek Hrabovsky, Brno, Czech Republic

PS .. sorry for my English.
diff -Naur /usr/src/linux/drivers/media/video/cx88/cx88-cards.c /usr/src/linux/drivers/media/video/cx88-patched/cx88-cards.c
--- /usr/src/linux/drivers/media/video/cx88/cx88-cards.c	2007-10-09 22:31:38.000000000 +0200
+++ /usr/src/linux/drivers/media/video/cx88-patched/cx88-cards.c	2008-01-10 19:24:06.000000000 +0100
@@ -1205,7 +1205,7 @@
 	},
 	[CX88_BOARD_WINFAST_DTV2000H] = {
 		/* video inputs and radio still in testing */
-		.name           = "WinFast DTV2000 H",
+		.name           = "WinFast DTV2000 H ver. I (old)",
 		.tuner_type     = TUNER_PHILIPS_FMD1216ME_MK3,
 		.radio_type     = UNSET,
 		.tuner_addr     = ADDR_UNSET,
@@ -1220,6 +1220,47 @@
 			.gpio3  = 0x02000000,
 		}},
 		.mpeg           = CX88_MPEG_DVB,
+
+	},
+    	[CX88_BOARD_WINFAST_DTV2000H_2] = {
+		/* this is just a try */
+		.name           = "WinFast DTV2000 H ver. J (new)",
+		.tuner_type     = TUNER_PHILIPS_FMD1216ME_MK3,
+		.radio_type     = UNSET,
+		.tuner_addr     = ADDR_UNSET,
+		.radio_addr     = ADDR_UNSET,
+		.tda9887_conf   = TDA9887_PRESENT,
+		.input          = {{
+			.type   = CX88_VMUX_TELEVISION,
+			.vmux   = 0,
+			.gpio0  = 0x00017300,
+			.gpio1  = 0x00008207,
+			.gpio2	= 0x00000000,
+			.gpio3  = 0x02000000,
+		},{
+			.type   = CX88_VMUX_TELEVISION,
+			.vmux   = 0,
+			.gpio0  = 0x00018300,
+			.gpio1  = 0x0000f207,
+			.gpio2	= 0x00017304,
+			.gpio3  = 0x02000000,
+		},{
+			.type   = CX88_VMUX_COMPOSITE1,
+			.vmux   = 1,
+			.gpio0  = 0x00018301,
+			.gpio1  = 0x0000f207,
+			.gpio2	= 0x00017304,
+			.gpio3  = 0x02000000,
+		},{
+			.type   = CX88_VMUX_SVIDEO,
+			.vmux   = 2,
+			.gpio0  = 0x00018301,
+			.gpio1  = 0x0000f207,
+			.gpio2	= 0x00017304,
+			.gpio3  = 0x02000000,
+		}},
+		.mpeg           = CX88_MPEG_DVB,
+
 	},
 	[CX88_BOARD_GENIATECH_DVBS] = {
 		.name          = "Geniatech DVB-S",
@@ -1601,6 +1642,10 @@
 		.subdevice = 0x665e,
 		.card      = CX88_BOARD_WINFAST_DTV2000H,
 	},{
+		.subvendor = 0x107d,
+		.subdevice = 0x6f2b,
+		.card      = CX88_BOARD_WINFAST_DTV2000H_2,
+	},{
 		.subvendor = 0x18ac,
 		.subdevice = 0xd800, /* FusionHDTV 3 Gold (original revision) */
 		.card      = CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_Q,
diff -Naur /usr/src/linux/drivers/media/video/cx88/cx88-core.c /usr/src/linux/drivers/media/video/cx88-patched/cx88-core.c
--- /usr/src/linux/drivers/media/video/cx88/cx88-core.c	2007-10-09 22:31:38.000000000 +0200
+++ /usr/src/linux/drivers/media/video/cx88-patched/cx88-core.c	2008-01-07 22:55:16.000000000 +0100
@@ -631,6 +631,8 @@
 	msleep(10);
 	cx_write(MO_SRST_IO, 1);
 
+	printk("RESEEEEEEEEEEEEEEEEET !");
+
 	return 0;
 }
 
diff -Naur /usr/src/linux/drivers/media/video/cx88/cx88-dvb.c /usr/src/linux/drivers/media/video/cx88-patched/cx88-dvb.c
--- /usr/src/linux/drivers/media/video/cx88/cx88-dvb.c	2007-10-09 22:31:38.000000000 +0200
+++ /usr/src/linux/drivers/media/video/cx88-patched/cx88-dvb.c	2008-01-06 22:08:53.000000000 +0100
@@ -403,6 +403,7 @@
 		}
 		break;
 	case CX88_BOARD_WINFAST_DTV2000H:
+	case CX88_BOARD_WINFAST_DTV2000H_2:
 	case CX88_BOARD_HAUPPAUGE_HVR1100:
 	case CX88_BOARD_HAUPPAUGE_HVR1100LP:
 	case CX88_BOARD_HAUPPAUGE_HVR1300:
diff -Naur /usr/src/linux/drivers/media/video/cx88/cx88-input.c /usr/src/linux/drivers/media/video/cx88-patched/cx88-input.c
--- /usr/src/linux/drivers/media/video/cx88/cx88-input.c	2007-10-09 22:31:38.000000000 +0200
+++ /usr/src/linux/drivers/media/video/cx88-patched/cx88-input.c	2008-01-06 22:10:13.000000000 +0100
@@ -230,6 +230,7 @@
 		ir->sampling = 1;
 		break;
 	case CX88_BOARD_WINFAST_DTV2000H:
+	case CX88_BOARD_WINFAST_DTV2000H_2:
 		ir_codes = ir_codes_winfast;
 		ir->gpio_addr = MO_GP0_IO;
 		ir->mask_keycode = 0x8f8;
diff -Naur /usr/src/linux/drivers/media/video/cx88/cx88-mpeg.c /usr/src/linux/drivers/media/video/cx88-patched/cx88-mpeg.c
--- /usr/src/linux/drivers/media/video/cx88/cx88-mpeg.c	2007-10-09 22:31:38.000000000 +0200
+++ /usr/src/linux/drivers/media/video/cx88-patched/cx88-mpeg.c	2008-01-07 23:28:29.000000000 +0100
@@ -93,6 +93,7 @@
 	/* FIXME: this needs a review.
 	 * also: move to cx88-blackbird + cx88-dvb source files? */
 
+	if ((core->board) == CX88_BOARD_WINFAST_DTV2000H_2) cx_write(MO_GP0_IO, 0x00017300);/*switch signal input to antena*/
 	dprintk( 1, "core->active_type_id = 0x%08x\n", core->active_type_id);
 
 	if ( (core->active_type_id == CX88_MPEG_DVB) &&
diff -Naur /usr/src/linux/drivers/media/video/cx88/cx88.h /usr/src/linux/drivers/media/video/cx88-patched/cx88.h
--- /usr/src/linux/drivers/media/video/cx88/cx88.h	2007-10-09 22:31:38.000000000 +0200
+++ /usr/src/linux/drivers/media/video/cx88-patched/cx88.h	2008-01-03 23:00:39.000000000 +0100
@@ -210,6 +210,8 @@
 #define CX88_BOARD_TE_DTV_250_OEM_SWANN    55
 #define CX88_BOARD_HAUPPAUGE_HVR1300       56
 #define CX88_BOARD_ADSTECH_PTV_390         57
+#define CX88_BOARD_WINFAST_DTV2000H_2      58
+
 
 enum cx88_itype {
 	CX88_VMUX_COMPOSITE1 = 1,

Reply via email to