Hi, all 3 patches are in one file, they depend on each other. All GPIOs spoted from Windows with original APs DTV1800H - there is patch pending in this thread from Miroslav Sustek, this is only modification of his patch, difference should be only in GPIOs (I think it is better to use GPIOs from Windows). DTV2000H (rev. I) - Only renamed from original old DTV2000H DTV2000H (rev. J) - Almost everything is working, I have problem only with FM radio (no sound). DTV2000H Plus - added pci id, GPIOs, sadly Tuner is XC4000, so it is not working yet. Mirek Slugen
diff -Naur v4l-dvb-57e1c3e9ec94.old/linux/drivers/media/video/cx88/cx88-cards.c v4l-dvb-57e1c3e9ec94/linux/drivers/media/video/cx88/cx88-cards.c --- v4l-dvb-57e1c3e9ec94.old/linux/drivers/media/video/cx88/cx88-cards.c 2008-11-28 11:46:34.000000000 +0100 +++ v4l-dvb-57e1c3e9ec94/linux/drivers/media/video/cx88/cx88-cards.c 2008-11-28 11:41:06.000000000 +0100 @@ -1269,8 +1269,45 @@ .gpio0 = 0x074a, }, }, - [CX88_BOARD_WINFAST_DTV2000H] = { - .name = "WinFast DTV2000 H", + [CX88_BOARD_WINFAST_DTV1800H] = { + .name = "WinFast DTV1800 H", + .tuner_type = TUNER_XC2028, + .radio_type = TUNER_XC2028, + .tuner_addr = 0x61, + .radio_addr = 0x61, + .input = {{ + .type = CX88_VMUX_TELEVISION, + .vmux = 0, + .gpio0 = 0x0403, + .gpio1 = 0xf0d7, + .gpio2 = 0x0001, + .gpio3 = 0x0000, + }, { + .type = CX88_VMUX_COMPOSITE1, + .vmux = 1, + .gpio0 = 0x0407, + .gpio1 = 0xf0f7, + .gpio2 = 0x0001, + .gpio3 = 0x0000, + }, { + .type = CX88_VMUX_SVIDEO, + .vmux = 2, + .gpio0 = 0x0407, + .gpio1 = 0xf0f7, + .gpio2 = 0x0001, + .gpio3 = 0x0000, + }}, + .radio = { + .type = CX88_RADIO, + .gpio0 = 0x0403, + .gpio1 = 0xf097, + .gpio2 = 0x0001, + .gpio3 = 0x0000, + }, + .mpeg = CX88_MPEG_DVB, + }, + [CX88_BOARD_WINFAST_DTV2000H_I] = { + .name = "WinFast DTV2000 H (ver. I)", .tuner_type = TUNER_PHILIPS_FMD1216ME_MK3, .radio_type = UNSET, .tuner_addr = ADDR_UNSET, @@ -1306,11 +1343,100 @@ .gpio3 = 0x02000000, }}, .radio = { - .type = CX88_RADIO, - .gpio0 = 0x00015702, - .gpio1 = 0x0000f207, - .gpio2 = 0x00015702, - .gpio3 = 0x02000000, + .type = CX88_RADIO, + .gpio0 = 0x00015702, + .gpio1 = 0x0000f207, + .gpio2 = 0x00015702, + .gpio3 = 0x02000000, + }, + .mpeg = CX88_MPEG_DVB, + }, + [CX88_BOARD_WINFAST_DTV2000H_J] = { + .name = "WinFast DTV2000 H (ver. J)", + .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 = 0x00013704, + .gpio1 = 0x00008207, + .gpio2 = 0x00013704, + .gpio3 = 0x02000000, + }, { + .type = CX88_VMUX_CABLE, + .vmux = 0, + .gpio0 = 0x0001b701, + .gpio1 = 0x00008207, + .gpio2 = 0x0001b701, + .gpio3 = 0x02000000, + }, { + .type = CX88_VMUX_COMPOSITE1, + .vmux = 1, + .gpio0 = 0x0001b701, + .gpio1 = 0x00008207, + .gpio2 = 0x0001b701, + .gpio3 = 0x02000000, + }, { + .type = CX88_VMUX_SVIDEO, + .vmux = 2, + .gpio0 = 0x0001b701, + .gpio1 = 0x00008207, + .gpio2 = 0x0001b701, + .gpio3 = 0x02000000, + }}, + .radio = { + .type = CX88_RADIO, + .gpio0 = 0x0001b702, + .gpio1 = 0x00008207, + .gpio2 = 0x0001b702, + .gpio3 = 0x02000000, + }, + .mpeg = CX88_MPEG_DVB, + }, + [CX88_BOARD_WINFAST_DTV2000H_PLUS] = { + .name = "WinFast DTV2000 H PLUS", + .tuner_type = TUNER_XC2028, + .radio_type = TUNER_XC2028, + .tuner_addr = 0x61, + .radio_addr = 0x61, + .input = {{ + .type = CX88_VMUX_TELEVISION, + .vmux = 0, + .gpio0 = 0x0403, + .gpio1 = 0xF0D7, + .gpio2 = 0x0101, + .gpio3 = 0x0000, + }, { + .type = CX88_VMUX_CABLE, + .vmux = 0, + .gpio0 = 0x0403, + .gpio1 = 0xF0D7, + .gpio2 = 0x0100, + .gpio3 = 0x0000, + }, { + .type = CX88_VMUX_COMPOSITE1, + .vmux = 1, + .gpio0 = 0x0407, + .gpio1 = 0xF0F7, + .gpio2 = 0x0101, + .gpio3 = 0x0000, + }, { + .type = CX88_VMUX_SVIDEO, + .vmux = 2, + .gpio0 = 0x0407, + .gpio1 = 0xF0F7, + .gpio2 = 0x0101, + .gpio3 = 0x0000, + }}, + .radio = { + .type = CX88_RADIO, + .gpio0 = 0x0403, + .gpio1 = 0xF097, + .gpio2 = 0x0100, + .gpio3 = 0x0000, }, .mpeg = CX88_MPEG_DVB, }, @@ -2217,8 +2343,20 @@ .card = CX88_BOARD_NPGTECH_REALTV_TOP10FM, },{ .subvendor = 0x107d, + .subdevice = 0x6654, + .card = CX88_BOARD_WINFAST_DTV1800H, + },{ + .subvendor = 0x107d, .subdevice = 0x665e, - .card = CX88_BOARD_WINFAST_DTV2000H, + .card = CX88_BOARD_WINFAST_DTV2000H_I, + },{ + .subvendor = 0x107d, + .subdevice = 0x6f2b, + .card = CX88_BOARD_WINFAST_DTV2000H_J, + },{ + .subvendor = 0x107d, + .subdevice = 0x6f42, + .card = CX88_BOARD_WINFAST_DTV2000H_PLUS, },{ .subvendor = 0x18ac, .subdevice = 0xd800, /* FusionHDTV 3 Gold (original revision) */ @@ -2573,6 +2711,23 @@ return -EINVAL; } +static int cx88_xc3028_winfast1800h_callback(struct cx88_core *core, + int command, int mode) +{ + switch (command) { + case XC2028_TUNER_RESET: + /* GPIO 12 (xc3028 tuner reset) */ + cx_set(MO_GP1_IO, 0x1010); + mdelay(50); + cx_clear(MO_GP1_IO, 0x10); + mdelay(50); + cx_set(MO_GP1_IO, 0x10); + mdelay(50); + return 0; + } + return -EINVAL; +} + /* ------------------------------------------------------------------- */ /* some Divco specific stuff */ static int cx88_pv_8000gt_callback(struct cx88_core *core, @@ -2645,6 +2800,10 @@ case CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_PRO: case CX88_BOARD_DVICO_FUSIONHDTV_5_PCI_NANO: return cx88_dvico_xc2028_callback(core, command, arg); + case CX88_BOARD_WINFAST_DTV2000H_PLUS: + case CX88_BOARD_WINFAST_DTV1800H: + return cx88_xc3028_winfast1800h_callback(core, command, arg); + } switch (command) { @@ -2819,6 +2978,17 @@ cx_set(MO_GP0_IO, 0x00000080); /* 702 out of reset */ udelay(1000); break; + + case CX88_BOARD_WINFAST_DTV2000H_PLUS: + case CX88_BOARD_WINFAST_DTV1800H: + /* GPIO 12 (xc3028 tuner reset) */ + cx_set(MO_GP1_IO, 0x1010); + mdelay(50); + cx_clear(MO_GP1_IO, 0x10); + mdelay(50); + cx_set(MO_GP1_IO, 0x10); + mdelay(50); + break; } } @@ -2838,7 +3008,9 @@ if (core->i2c_algo.udelay < 16) core->i2c_algo.udelay = 16; break; - case CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_PRO: + case CX88_BOARD_WINFAST_DTV2000H_PLUS: + case CX88_BOARD_WINFAST_DTV1800H: + case CX88_BOARD_PINNACLE_HYBRID_PCTV: ctl->demod = XC3028_FE_ZARLINK456; break; case CX88_BOARD_KWORLD_ATSC_120: @@ -2851,7 +3023,7 @@ * Those boards uses non-MTS firmware */ break; - case CX88_BOARD_PINNACLE_HYBRID_PCTV: + case CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_PRO: ctl->demod = XC3028_FE_ZARLINK456; ctl->mts = 1; break; diff -Naur v4l-dvb-57e1c3e9ec94.old/linux/drivers/media/video/cx88/cx88-dvb.c v4l-dvb-57e1c3e9ec94/linux/drivers/media/video/cx88/cx88-dvb.c --- v4l-dvb-57e1c3e9ec94.old/linux/drivers/media/video/cx88/cx88-dvb.c 2008-11-28 11:46:34.000000000 +0100 +++ v4l-dvb-57e1c3e9ec94/linux/drivers/media/video/cx88/cx88-dvb.c 2008-11-28 11:43:24.000000000 +0100 @@ -262,6 +262,7 @@ .no_tuner = 1, }; + static struct mt352_config dvico_fusionhdtv_mt352_xc3028 = { .demod_address = 0x0f, .if2 = 4560, @@ -645,7 +646,8 @@ goto frontend_detach; } break; - case CX88_BOARD_WINFAST_DTV2000H: + case CX88_BOARD_WINFAST_DTV2000H_I: + case CX88_BOARD_WINFAST_DTV2000H_J: case CX88_BOARD_HAUPPAUGE_HVR1100: case CX88_BOARD_HAUPPAUGE_HVR1100LP: case CX88_BOARD_HAUPPAUGE_HVR1300: @@ -964,7 +966,9 @@ fe->ops.tuner_ops.set_config(fe, &ctl); } break; - case CX88_BOARD_PINNACLE_HYBRID_PCTV: + case CX88_BOARD_WINFAST_DTV1800H: + case CX88_BOARD_WINFAST_DTV2000H_PLUS: + case CX88_BOARD_PINNACLE_HYBRID_PCTV: fe0->dvb.frontend = dvb_attach(zl10353_attach, &cx88_pinnacle_hybrid_pctv, &core->i2c_adap); @@ -974,7 +978,7 @@ goto frontend_detach; } break; - case CX88_BOARD_GENIATECH_X8000_MT: + case CX88_BOARD_GENIATECH_X8000_MT: dev->ts_gen_cntrl = 0x00; fe0->dvb.frontend = dvb_attach(zl10353_attach, @@ -983,7 +987,7 @@ if (attach_xc3028(0x61, dev) < 0) goto frontend_detach; break; - case CX88_BOARD_KWORLD_ATSC_120: + case CX88_BOARD_KWORLD_ATSC_120: fe0->dvb.frontend = dvb_attach(s5h1409_attach, &kworld_atsc_120_config, &core->i2c_adap); diff -Naur v4l-dvb-57e1c3e9ec94.old/linux/drivers/media/video/cx88/cx88.h v4l-dvb-57e1c3e9ec94/linux/drivers/media/video/cx88/cx88.h --- v4l-dvb-57e1c3e9ec94.old/linux/drivers/media/video/cx88/cx88.h 2008-11-28 11:46:34.000000000 +0100 +++ v4l-dvb-57e1c3e9ec94/linux/drivers/media/video/cx88/cx88.h 2008-11-27 23:44:54.000000000 +0100 @@ -204,7 +204,7 @@ #define CX88_BOARD_KWORLD_MCE200_DELUXE 48 #define CX88_BOARD_PIXELVIEW_PLAYTV_P7000 49 #define CX88_BOARD_NPGTECH_REALTV_TOP10FM 50 -#define CX88_BOARD_WINFAST_DTV2000H 51 +#define CX88_BOARD_WINFAST_DTV2000H_I 51 #define CX88_BOARD_GENIATECH_DVBS 52 #define CX88_BOARD_HAUPPAUGE_HVR3000 53 #define CX88_BOARD_NORWOOD_MICRO 54 @@ -232,6 +232,9 @@ #define CX88_BOARD_SATTRADE_ST4200 76 #define CX88_BOARD_TBS_8910 77 #define CX88_BOARD_PROF_6200 78 +#define CX88_BOARD_WINFAST_DTV1800H 79 +#define CX88_BOARD_WINFAST_DTV2000H_J 80 +#define CX88_BOARD_WINFAST_DTV2000H_PLUS 81 enum cx88_itype { CX88_VMUX_COMPOSITE1 = 1, diff -Naur v4l-dvb-57e1c3e9ec94.old/linux/drivers/media/video/cx88/cx88-input.c v4l-dvb-57e1c3e9ec94/linux/drivers/media/video/cx88/cx88-input.c --- v4l-dvb-57e1c3e9ec94.old/linux/drivers/media/video/cx88/cx88-input.c 2008-11-28 11:46:34.000000000 +0100 +++ v4l-dvb-57e1c3e9ec94/linux/drivers/media/video/cx88/cx88-input.c 2008-11-28 11:54:25.000000000 +0100 @@ -93,6 +93,10 @@ gpio=(gpio & 0x7fd) + (auxgpio & 0xef); break; case CX88_BOARD_WINFAST_DTV1000: + case CX88_BOARD_WINFAST_DTV1800H: + case CX88_BOARD_WINFAST_DTV2000H_I: + case CX88_BOARD_WINFAST_DTV2000H_J: + case CX88_BOARD_WINFAST_DTV2000H_PLUS: gpio = (gpio & 0x6ff) | ((cx_read(MO_GP1_IO) << 8) & 0x900); auxgpio = gpio; break; @@ -243,7 +247,10 @@ ir_type = IR_TYPE_RC5; ir->sampling = 1; break; - case CX88_BOARD_WINFAST_DTV2000H: + case CX88_BOARD_WINFAST_DTV1800H: + case CX88_BOARD_WINFAST_DTV2000H_I: + case CX88_BOARD_WINFAST_DTV2000H_J: + case CX88_BOARD_WINFAST_DTV2000H_PLUS: ir_codes = ir_codes_winfast; ir->gpio_addr = MO_GP0_IO; ir->mask_keycode = 0x8f8;
_______________________________________________ linux-dvb mailing list linux-dvb@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb