diff -Naur linux-2.6.37.2.old//drivers/media/video/cx23885/cx23885-cards.c linux-2.6.37.2//drivers/media/video/cx23885/cx23885-cards.c --- linux-2.6.37.2.old//drivers/media/video/cx23885/cx23885-cards.c 2011-02-25 00:09:00.000000000 +0100 +++ linux-2.6.37.2//drivers/media/video/cx23885/cx23885-cards.c 2011-03-08 13:44:30.320890001 +0100 @@ -29,6 +29,7 @@ #include "tuner-xc2028.h" #include "netup-init.h" #include "cx23888-ir.h" +#include "xc4000.h" static unsigned int enable_885_ir; module_param(enable_885_ir, int, 0644); @@ -170,6 +171,34 @@ .name = "Leadtek Winfast PxDVR3200 H", .portc = CX23885_MPEG_DVB, }, + [CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H_XC4000] = { + .name = "Leadtek Winfast PxDVR3200 H (XC4000)", + .porta = CX23885_ANALOG_VIDEO, + .portc = CX23885_MPEG_DVB, + .tuner_type = TUNER_XC4000, + .tuner_addr = 0x61, + .radio_type = TUNER_XC4000, + .radio_addr = 0x61, + .input = {{ + .type = CX23885_VMUX_TELEVISION, + .vmux = CX25840_VIN2_CH1 | + CX25840_VIN5_CH2 | + CX25840_NONE0_CH3, + }, { + .type = CX23885_VMUX_COMPOSITE1, + .vmux = CX25840_COMPOSITE1, + }, { + .type = CX23885_VMUX_SVIDEO, + .vmux = CX25840_SVIDEO_LUMA3 | + CX25840_SVIDEO_CHROMA4, + }, { + .type = CX23885_VMUX_COMPONENT, + .vmux = CX25840_VIN7_CH1 | + CX25840_VIN6_CH2 | + CX25840_VIN8_CH3 | + CX25840_COMPONENT_ON, + } }, + }, [CX23885_BOARD_COMPRO_VIDEOMATE_E650F] = { .name = "Compro VideoMate E650F", .portc = CX23885_MPEG_DVB, @@ -389,6 +418,10 @@ .subdevice = 0x6681, .card = CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H, }, { + .subvendor = 0x107d, + .subdevice = 0x6f39, + .card = CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H_XC4000, + }, { .subvendor = 0x185b, .subdevice = 0xe800, .card = CX23885_BOARD_COMPRO_VIDEOMATE_E650F, @@ -697,6 +730,7 @@ case CX23885_BOARD_HAUPPAUGE_HVR1500: case CX23885_BOARD_HAUPPAUGE_HVR1500Q: case CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H: + case CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H_XC4000: case CX23885_BOARD_COMPRO_VIDEOMATE_E650F: case CX23885_BOARD_COMPRO_VIDEOMATE_E800: case CX23885_BOARD_LEADTEK_WINFAST_PXTV1200: @@ -850,6 +884,7 @@ cx_set(GP0_IO, 0x000f000f); break; case CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H: + case CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H_XC4000: case CX23885_BOARD_COMPRO_VIDEOMATE_E650F: case CX23885_BOARD_COMPRO_VIDEOMATE_E800: case CX23885_BOARD_LEADTEK_WINFAST_PXTV1200: @@ -1210,6 +1245,7 @@ case CX23885_BOARD_HAUPPAUGE_HVR1700: case CX23885_BOARD_HAUPPAUGE_HVR1400: case CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H: + case CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H_XC4000: case CX23885_BOARD_COMPRO_VIDEOMATE_E650F: case CX23885_BOARD_HAUPPAUGE_HVR1270: case CX23885_BOARD_HAUPPAUGE_HVR1275: @@ -1237,6 +1273,7 @@ case CX23885_BOARD_HAUPPAUGE_HVR1800lp: case CX23885_BOARD_HAUPPAUGE_HVR1700: case CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H: + case CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H_XC4000: case CX23885_BOARD_COMPRO_VIDEOMATE_E650F: case CX23885_BOARD_NETUP_DUAL_DVBS2_CI: case CX23885_BOARD_COMPRO_VIDEOMATE_E800: diff -Naur linux-2.6.37.2.old//drivers/media/video/cx23885/cx23885-dvb.c linux-2.6.37.2//drivers/media/video/cx23885/cx23885-dvb.c --- linux-2.6.37.2.old//drivers/media/video/cx23885/cx23885-dvb.c 2011-02-25 00:09:00.000000000 +0100 +++ linux-2.6.37.2//drivers/media/video/cx23885/cx23885-dvb.c 2011-03-08 13:47:09.040890000 +0100 @@ -38,6 +38,7 @@ #include "tda18271.h" #include "lgdt330x.h" #include "xc5000.h" +#include "xc4000.h" #include "max2165.h" #include "tda10048.h" #include "tuner-xc2028.h" @@ -825,6 +826,22 @@ fe->ops.tuner_ops.set_config(fe, &ctl); } break; + case CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H_XC4000: + i2c_bus = &dev->i2c_bus[0]; + + fe0->dvb.frontend = dvb_attach(zl10353_attach, &dvico_fusionhdtv_xc3028, &i2c_bus->i2c_adap); + + if (fe0->dvb.frontend != NULL) { + struct dvb_frontend *fe; + struct xc4000_config cfg = { + .card_type = XC4000_CARD_WINFAST_CX88, + .i2c_address = 0x61, + .if_khz = 5400, + }; + + fe = dvb_attach(xc4000_attach, fe0->dvb.frontend, &dev->i2c_bus[1].i2c_adap, &cfg); + } + break; case CX23885_BOARD_TBS_6920: i2c_bus = &dev->i2c_bus[1]; diff -Naur linux-2.6.37.2.old//drivers/media/video/cx23885/cx23885.h linux-2.6.37.2//drivers/media/video/cx23885/cx23885.h --- linux-2.6.37.2.old//drivers/media/video/cx23885/cx23885.h 2011-02-25 00:09:00.000000000 +0100 +++ linux-2.6.37.2//drivers/media/video/cx23885/cx23885.h 2011-03-08 13:49:07.308890000 +0100 @@ -84,6 +84,7 @@ #define CX23885_BOARD_HAUPPAUGE_HVR1290 26 #define CX23885_BOARD_MYGICA_X8558PRO 27 #define CX23885_BOARD_LEADTEK_WINFAST_PXTV1200 28 +#define CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H_XC4000 29 #define GPIO_0 0x00000001 #define GPIO_1 0x00000002