[linux-dvb] [PATCH] Pinnacle pctv310c DVB support

stef stef.dev at free.fr
Wed Aug 27 21:51:36 CEST 2008


	Hello,

	I finally managed to get DVB working on my Pinnacle PCTV Hybrid Pro card. I have it currently working, watching TV with kaffeine. 
The only drawback is that enabling DVB breaks analog TV, which is certainly an issue in tunex-xc2028.c which doesn't reload a proper 
firmware when changing from DVB to analog.

Regards,
	Stef

Signed-off-by: Stéphane Voltz <stef.dev at free.fr>


diff -baur v4l-dvb/linux/drivers/media/video/cx88/cx88-cards.c v4l-dvb-stef/linux/drivers/media/video/cx88/cx88-cards.c
--- v4l-dvb/linux/drivers/media/video/cx88/cx88-cards.c	2008-08-17 19:09:04.000000000 +0200
+++ v4l-dvb-stef/linux/drivers/media/video/cx88/cx88-cards.c	2008-08-27 21:06:57.000000000 +0200
@@ -1479,15 +1479,26 @@
 		.name           = "Pinnacle Hybrid PCTV",
 		.tuner_type     = TUNER_XC2028,
 		.tuner_addr     = 0x61,
+		.radio_type     = TUNER_XC2028,
+		.radio_addr     = 0x61,
 		.input          = { {
 			.type   = CX88_VMUX_TELEVISION,
 			.vmux   = 0,
+			.gpio0  = 0x004ff,
+			.gpio1  = 0x010ff,
+			.gpio2  = 0x00001,
 		}, {
 			.type   = CX88_VMUX_COMPOSITE1,
 			.vmux   = 1,
+			.gpio0  = 0x004fb,
+			.gpio1  = 0x010ef,
+			.audioroute = 1,
 		}, {
 			.type   = CX88_VMUX_SVIDEO,
 			.vmux   = 2,
+			.gpio0  = 0x004fb,
+			.gpio1  = 0x010ef,
+			.audioroute = 1,
 		} },
 		.radio = {
 			.type   = CX88_RADIO,
@@ -1495,10 +1506,7 @@
 			.gpio1  = 0x010ff,
 			.gpio2  = 0x0ff,
 		},
-#if 0
-		/* needs some more GPIO work */
 		.mpeg           = CX88_MPEG_DVB,
-#endif
 	},
 	[CX88_BOARD_WINFAST_TV2000_XP_GLOBAL] = {
 		.name           = "Winfast TV2000 XP Global",
@@ -2483,6 +2491,10 @@
 		 * This board uses non-MTS firmware
 		 */
 		break;
+	case CX88_BOARD_PINNACLE_HYBRID_PCTV:
+		ctl->demod = XC3028_FE_ZARLINK456;
+		ctl->mts = 1;
+		break;
 	default:
 		ctl->demod = XC3028_FE_OREN538;
 		ctl->mts = 1;
diff -baur v4l-dvb/linux/drivers/media/video/cx88/cx88-dvb.c v4l-dvb-stef/linux/drivers/media/video/cx88/cx88-dvb.c
--- v4l-dvb/linux/drivers/media/video/cx88/cx88-dvb.c	2008-08-17 19:09:04.000000000 +0200
+++ v4l-dvb-stef/linux/drivers/media/video/cx88/cx88-dvb.c	2008-08-27 21:03:52.000000000 +0200
@@ -460,6 +460,12 @@
 	.tuner_callback	= cx88_tuner_callback,
 };
 
+static struct zl10353_config cx88_pinnacle_hybrid_pctv = {
+	.demod_address = (0x1e >> 1),
+	.no_tuner      = 1,
+	.if2           = 45600,
+};
+
 static struct zl10353_config cx88_geniatech_x8000_mt = {
        .demod_address = (0x1e >> 1),
        .no_tuner = 1,
@@ -855,10 +861,13 @@
 		break;
 	 case CX88_BOARD_PINNACLE_HYBRID_PCTV:
 		dev->dvb.frontend = dvb_attach(zl10353_attach,
-					       &cx88_geniatech_x8000_mt,
+					       &cx88_pinnacle_hybrid_pctv,
 					       &core->i2c_adap);
+		if (dev->dvb.frontend) {
+			dev->dvb.frontend->ops.i2c_gate_ctrl = NULL;
 		if (attach_xc3028(0x61, dev) < 0)
 			goto frontend_detach;
+		}
 		break;
 	 case CX88_BOARD_GENIATECH_X8000_MT:
 		dev->ts_gen_cntrl = 0x00;



More information about the linux-dvb mailing list