aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media
diff options
context:
space:
mode:
authorStéphane Voltz <stef.dev@free.fr>2008-09-05 13:33:54 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2008-10-12 07:37:10 -0400
commit3f6014fc77c3630d2511302e19f4f02af1605947 (patch)
tree98f4cafcd95b9f1b71d671d45e05c2ce3c0da727 /drivers/media
parent3de2ed127013219efc439c0d052d1cc825da88c2 (diff)
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: Stéphane Voltz <stef.dev@free.fr> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media')
-rw-r--r--drivers/media/video/cx88/cx88-cards.c16
-rw-r--r--drivers/media/video/cx88/cx88-dvb.c15
2 files changed, 28 insertions, 3 deletions
diff --git a/drivers/media/video/cx88/cx88-cards.c b/drivers/media/video/cx88/cx88-cards.c
index 9f7210801524..369ba69cd0b4 100644
--- a/drivers/media/video/cx88/cx88-cards.c
+++ b/drivers/media/video/cx88/cx88-cards.c
@@ -1449,15 +1449,26 @@ static const struct cx88_board cx88_boards[] = {
1449 .name = "Pinnacle Hybrid PCTV", 1449 .name = "Pinnacle Hybrid PCTV",
1450 .tuner_type = TUNER_XC2028, 1450 .tuner_type = TUNER_XC2028,
1451 .tuner_addr = 0x61, 1451 .tuner_addr = 0x61,
1452 .radio_type = TUNER_XC2028,
1453 .radio_addr = 0x61,
1452 .input = { { 1454 .input = { {
1453 .type = CX88_VMUX_TELEVISION, 1455 .type = CX88_VMUX_TELEVISION,
1454 .vmux = 0, 1456 .vmux = 0,
1457 .gpio0 = 0x004ff,
1458 .gpio1 = 0x010ff,
1459 .gpio2 = 0x00001,
1455 }, { 1460 }, {
1456 .type = CX88_VMUX_COMPOSITE1, 1461 .type = CX88_VMUX_COMPOSITE1,
1457 .vmux = 1, 1462 .vmux = 1,
1463 .gpio0 = 0x004fb,
1464 .gpio1 = 0x010ef,
1465 .audioroute = 1,
1458 }, { 1466 }, {
1459 .type = CX88_VMUX_SVIDEO, 1467 .type = CX88_VMUX_SVIDEO,
1460 .vmux = 2, 1468 .vmux = 2,
1469 .gpio0 = 0x004fb,
1470 .gpio1 = 0x010ef,
1471 .audioroute = 1,
1461 } }, 1472 } },
1462 .radio = { 1473 .radio = {
1463 .type = CX88_RADIO, 1474 .type = CX88_RADIO,
@@ -1465,6 +1476,7 @@ static const struct cx88_board cx88_boards[] = {
1465 .gpio1 = 0x010ff, 1476 .gpio1 = 0x010ff,
1466 .gpio2 = 0x0ff, 1477 .gpio2 = 0x0ff,
1467 }, 1478 },
1479 .mpeg = CX88_MPEG_DVB,
1468 }, 1480 },
1469 [CX88_BOARD_WINFAST_TV2000_XP_GLOBAL] = { 1481 [CX88_BOARD_WINFAST_TV2000_XP_GLOBAL] = {
1470 .name = "Winfast TV2000 XP Global", 1482 .name = "Winfast TV2000 XP Global",
@@ -2671,6 +2683,10 @@ void cx88_setup_xc3028(struct cx88_core *core, struct xc2028_ctrl *ctl)
2671 * Those boards uses non-MTS firmware 2683 * Those boards uses non-MTS firmware
2672 */ 2684 */
2673 break; 2685 break;
2686 case CX88_BOARD_PINNACLE_HYBRID_PCTV:
2687 ctl->demod = XC3028_FE_ZARLINK456;
2688 ctl->mts = 1;
2689 break;
2674 default: 2690 default:
2675 ctl->demod = XC3028_FE_OREN538; 2691 ctl->demod = XC3028_FE_OREN538;
2676 ctl->mts = 1; 2692 ctl->mts = 1;
diff --git a/drivers/media/video/cx88/cx88-dvb.c b/drivers/media/video/cx88/cx88-dvb.c
index 6751f36e061e..cccf38222a31 100644
--- a/drivers/media/video/cx88/cx88-dvb.c
+++ b/drivers/media/video/cx88/cx88-dvb.c
@@ -454,6 +454,12 @@ static struct xc5000_config pinnacle_pctv_hd_800i_tuner_config = {
454 .if_khz = 5380, 454 .if_khz = 5380,
455}; 455};
456 456
457static struct zl10353_config cx88_pinnacle_hybrid_pctv = {
458 .demod_address = (0x1e >> 1),
459 .no_tuner = 1,
460 .if2 = 45600,
461};
462
457static struct zl10353_config cx88_geniatech_x8000_mt = { 463static struct zl10353_config cx88_geniatech_x8000_mt = {
458 .demod_address = (0x1e >> 1), 464 .demod_address = (0x1e >> 1),
459 .no_tuner = 1, 465 .no_tuner = 1,
@@ -890,10 +896,13 @@ static int dvb_register(struct cx8802_dev *dev)
890 break; 896 break;
891 case CX88_BOARD_PINNACLE_HYBRID_PCTV: 897 case CX88_BOARD_PINNACLE_HYBRID_PCTV:
892 dev->dvb.frontend = dvb_attach(zl10353_attach, 898 dev->dvb.frontend = dvb_attach(zl10353_attach,
893 &cx88_geniatech_x8000_mt, 899 &cx88_pinnacle_hybrid_pctv,
894 &core->i2c_adap); 900 &core->i2c_adap);
895 if (attach_xc3028(0x61, dev) < 0) 901 if (dev->dvb.frontend) {
896 goto frontend_detach; 902 dev->dvb.frontend->ops.i2c_gate_ctrl = NULL;
903 if (attach_xc3028(0x61, dev) < 0)
904 goto frontend_detach;
905 }
897 break; 906 break;
898 case CX88_BOARD_GENIATECH_X8000_MT: 907 case CX88_BOARD_GENIATECH_X8000_MT:
899 dev->ts_gen_cntrl = 0x00; 908 dev->ts_gen_cntrl = 0x00;