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

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
...@@ -1449,15 +1449,26 @@ static const struct cx88_board cx88_boards[] = { ...@@ -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[] = { ...@@ -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) ...@@ -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;
......
...@@ -454,6 +454,12 @@ static struct xc5000_config pinnacle_pctv_hd_800i_tuner_config = { ...@@ -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) ...@@ -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;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment