Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3f6014fc authored by Stéphane Voltz's avatar Stéphane Voltz Committed by Mauro Carvalho Chehab
Browse files

V4L/DVB (9066): Pinnacle Hybrid PCTV Pro (pctv310c) DVB-T support



This patch against latest mercurial makes DVB-T working on Pinnacle
Hybrid PCTV Pro (pctv310c).

In cx88-dvb.c, a specific zl10353_config is created with the if2
inferred from the old comment in the currently used config. It is then
used for attach, and i2c_gate_ctrl is set to NULL.

The entry in cx88-cards.c is modified with GPIO gathered from windows
with regspy, and DVB enabled. The frontend is set to
XC3028_FE_ZARLINK456 to match the zl10353_config.

It is working great with the freeview channels I can receive.

Signed-off-by: default avatarStéphane Voltz <stef.dev@free.fr>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 3de2ed12
Loading
Loading
Loading
Loading
+16 −0
Original line number Original line Diff line number Diff line
@@ -1449,15 +1449,26 @@ static const struct cx88_board cx88_boards[] = {
		.name           = "Pinnacle Hybrid PCTV",
		.name           = "Pinnacle Hybrid PCTV",
		.tuner_type     = TUNER_XC2028,
		.tuner_type     = TUNER_XC2028,
		.tuner_addr     = 0x61,
		.tuner_addr     = 0x61,
		.radio_type     = TUNER_XC2028,
		.radio_addr     = 0x61,
		.input          = { {
		.input          = { {
			.type   = CX88_VMUX_TELEVISION,
			.type   = CX88_VMUX_TELEVISION,
			.vmux   = 0,
			.vmux   = 0,
			.gpio0  = 0x004ff,
			.gpio1  = 0x010ff,
			.gpio2  = 0x00001,
		}, {
		}, {
			.type   = CX88_VMUX_COMPOSITE1,
			.type   = CX88_VMUX_COMPOSITE1,
			.vmux   = 1,
			.vmux   = 1,
			.gpio0  = 0x004fb,
			.gpio1  = 0x010ef,
			.audioroute = 1,
		}, {
		}, {
			.type   = CX88_VMUX_SVIDEO,
			.type   = CX88_VMUX_SVIDEO,
			.vmux   = 2,
			.vmux   = 2,
			.gpio0  = 0x004fb,
			.gpio1  = 0x010ef,
			.audioroute = 1,
		} },
		} },
		.radio = {
		.radio = {
			.type   = CX88_RADIO,
			.type   = CX88_RADIO,
@@ -1465,6 +1476,7 @@ static const struct cx88_board cx88_boards[] = {
			.gpio1  = 0x010ff,
			.gpio1  = 0x010ff,
			.gpio2  = 0x0ff,
			.gpio2  = 0x0ff,
		},
		},
		.mpeg           = CX88_MPEG_DVB,
	},
	},
	[CX88_BOARD_WINFAST_TV2000_XP_GLOBAL] = {
	[CX88_BOARD_WINFAST_TV2000_XP_GLOBAL] = {
		.name           = "Winfast TV2000 XP Global",
		.name           = "Winfast TV2000 XP Global",
@@ -2671,6 +2683,10 @@ void cx88_setup_xc3028(struct cx88_core *core, struct xc2028_ctrl *ctl)
		 * Those boards uses non-MTS firmware
		 * Those boards uses non-MTS firmware
		 */
		 */
		break;
		break;
	case CX88_BOARD_PINNACLE_HYBRID_PCTV:
		ctl->demod = XC3028_FE_ZARLINK456;
		ctl->mts = 1;
		break;
	default:
	default:
		ctl->demod = XC3028_FE_OREN538;
		ctl->demod = XC3028_FE_OREN538;
		ctl->mts = 1;
		ctl->mts = 1;
+12 −3
Original line number Original line Diff line number Diff line
@@ -454,6 +454,12 @@ static struct xc5000_config pinnacle_pctv_hd_800i_tuner_config = {
	.if_khz		= 5380,
	.if_khz		= 5380,
};
};


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 = {
static struct zl10353_config cx88_geniatech_x8000_mt = {
       .demod_address = (0x1e >> 1),
       .demod_address = (0x1e >> 1),
       .no_tuner = 1,
       .no_tuner = 1,
@@ -890,10 +896,13 @@ static int dvb_register(struct cx8802_dev *dev)
		break;
		break;
	 case CX88_BOARD_PINNACLE_HYBRID_PCTV:
	 case CX88_BOARD_PINNACLE_HYBRID_PCTV:
		dev->dvb.frontend = dvb_attach(zl10353_attach,
		dev->dvb.frontend = dvb_attach(zl10353_attach,
					       &cx88_geniatech_x8000_mt,
					       &cx88_pinnacle_hybrid_pctv,
					       &core->i2c_adap);
					       &core->i2c_adap);
		if (dev->dvb.frontend) {
			dev->dvb.frontend->ops.i2c_gate_ctrl = NULL;
			if (attach_xc3028(0x61, dev) < 0)
			if (attach_xc3028(0x61, dev) < 0)
				goto frontend_detach;
				goto frontend_detach;
		}
		break;
		break;
	 case CX88_BOARD_GENIATECH_X8000_MT:
	 case CX88_BOARD_GENIATECH_X8000_MT:
		dev->ts_gen_cntrl = 0x00;
		dev->ts_gen_cntrl = 0x00;