The patch number 8808 was added via Mauro Carvalho Chehab <[EMAIL PROTECTED]>
to http://linuxtv.org/hg/v4l-dvb master development tree.

Kernel patches in this development tree may be modified to be backward
compatible with older kernels. Compatibility modifications will be
removed before inclusion into the mainstream Kernel

If anyone has any objections, please let us know by sending a message to:
        [EMAIL PROTECTED]

------

From: Mauro Carvalho Chehab  <[EMAIL PROTECTED]>
merge: http://www.linuxtv.org/hg/~stoth/cx23885-leadtek




Signed-off-by: Mauro Carvalho Chehab <[EMAIL PROTECTED]>


---

 linux/Documentation/video4linux/CARDLIST.cx23885  |    1 
 linux/drivers/media/video/cx23885/Kconfig         |    1 
 linux/drivers/media/video/cx23885/cx23885-cards.c |   42 ++++++++++----
 linux/drivers/media/video/cx23885/cx23885-dvb.c   |   26 ++++++++
 linux/drivers/media/video/cx23885/cx23885.h       |    1 
 5 files changed, 60 insertions(+), 11 deletions(-)

diff -r b794d300ab2e -r 7d34ba657fa8 
linux/Documentation/video4linux/CARDLIST.cx23885
--- a/linux/Documentation/video4linux/CARDLIST.cx23885  Fri Aug 29 18:44:28 
2008 -0300
+++ b/linux/Documentation/video4linux/CARDLIST.cx23885  Fri Aug 29 18:48:28 
2008 -0300
@@ -10,3 +10,4 @@
   9 -> Hauppauge WinTV-HVR1400                             [0070:8010]
  10 -> DViCO FusionHDTV7 Dual Express                      [18ac:d618]
  11 -> DViCO FusionHDTV DVB-T Dual Express                 [18ac:db78]
+ 12 -> Leadtek Winfast PxDVR3200 H                         [107d:6681]
diff -r b794d300ab2e -r 7d34ba657fa8 linux/drivers/media/video/cx23885/Kconfig
--- a/linux/drivers/media/video/cx23885/Kconfig Fri Aug 29 18:44:28 2008 -0300
+++ b/linux/drivers/media/video/cx23885/Kconfig Fri Aug 29 18:48:28 2008 -0300
@@ -15,6 +15,7 @@ config VIDEO_CX23885
        select DVB_S5H1409 if !DVB_FE_CUSTOMISE
        select DVB_S5H1411 if !DVB_FE_CUSTOMISE
        select DVB_LGDT330X if !DVB_FE_CUSTOMISE
+       select DVB_ZL10353 if !DVB_FE_CUSTOMISE
        select MEDIA_TUNER_XC2028 if !DVB_FE_CUSTOMIZE
        select MEDIA_TUNER_TDA8290 if !DVB_FE_CUSTOMIZE
        select MEDIA_TUNER_TDA18271 if !DVB_FE_CUSTOMIZE
diff -r b794d300ab2e -r 7d34ba657fa8 
linux/drivers/media/video/cx23885/cx23885-cards.c
--- a/linux/drivers/media/video/cx23885/cx23885-cards.c Fri Aug 29 18:44:28 
2008 -0300
+++ b/linux/drivers/media/video/cx23885/cx23885-cards.c Fri Aug 29 18:48:28 
2008 -0300
@@ -155,6 +155,10 @@ struct cx23885_board cx23885_boards[] = 
                .portb          = CX23885_MPEG_DVB,
                .portc          = CX23885_MPEG_DVB,
        },
+       [CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H] = {
+               .name           = "Leadtek Winfast PxDVR3200 H",
+               .portc          = CX23885_MPEG_DVB,
+       },
 };
 const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards);
 
@@ -230,6 +234,10 @@ struct cx23885_subid cx23885_subids[] = 
                .subvendor = 0x18ac,
                .subdevice = 0xdb78,
                .card      = CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP,
+       }, {
+               .subvendor = 0x107d,
+               .subdevice = 0x6681,
+               .card      = CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H,
        },
 };
 const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids);
@@ -349,21 +357,18 @@ int cx23885_tuner_callback(void *priv, i
        case CX23885_BOARD_HAUPPAUGE_HVR1400:
        case CX23885_BOARD_HAUPPAUGE_HVR1500:
        case CX23885_BOARD_HAUPPAUGE_HVR1500Q:
+       case CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H:
                /* Tuner Reset Command */
-               if (command == 0)
-                       bitmask = 0x04;
+               bitmask = 0x04;
                break;
        case CX23885_BOARD_DVICO_FUSIONHDTV_7_DUAL_EXP:
        case CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP:
-               if (command == 0) {
-
-                       /* Two identical tuners on two different i2c buses,
-                        * we need to reset the correct gpio. */
-                       if (port->nr == 0)
-                               bitmask = 0x01;
-                       else if (port->nr == 1)
-                               bitmask = 0x04;
-               }
+               /* Two identical tuners on two different i2c buses,
+                * we need to reset the correct gpio. */
+               if (port->nr == 0)
+                       bitmask = 0x01;
+               else if (port->nr == 1)
+                       bitmask = 0x04;
                break;
        }
 
@@ -491,6 +496,19 @@ void cx23885_gpio_setup(struct cx23885_d
                cx_clear(GP0_IO, 0x0000000f);
                mdelay(20);
                cx_set(GP0_IO, 0x000f000f);
+               break;
+       case CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H:
+               /* GPIO-2  xc3028 tuner reset */
+
+               /* The following GPIO's are on the internal AVCore (cx25840) */
+               /* GPIO-?  zl10353 demod reset */
+
+               /* Put the parts into reset and back */
+               cx_set(GP0_IO, 0x00040000);
+               mdelay(20);
+               cx_clear(GP0_IO, 0x00000004);
+               mdelay(20);
+               cx_set(GP0_IO, 0x00040004);
                break;
        }
 }
@@ -579,6 +597,7 @@ void cx23885_card_setup(struct cx23885_d
        case CX23885_BOARD_HAUPPAUGE_HVR1200:
        case CX23885_BOARD_HAUPPAUGE_HVR1700:
        case CX23885_BOARD_HAUPPAUGE_HVR1400:
+       case CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H:
        default:
                ts2->gen_ctrl_val  = 0xc; /* Serial bus + punctured clock */
                ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */
@@ -592,6 +611,7 @@ void cx23885_card_setup(struct cx23885_d
        case CX23885_BOARD_HAUPPAUGE_HVR1800:
        case CX23885_BOARD_HAUPPAUGE_HVR1800lp:
        case CX23885_BOARD_HAUPPAUGE_HVR1700:
+       case CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H:
                request_module("cx25840");
                break;
        }
diff -r b794d300ab2e -r 7d34ba657fa8 
linux/drivers/media/video/cx23885/cx23885-dvb.c
--- a/linux/drivers/media/video/cx23885/cx23885-dvb.c   Fri Aug 29 18:44:28 
2008 -0300
+++ b/linux/drivers/media/video/cx23885/cx23885-dvb.c   Fri Aug 29 18:48:28 
2008 -0300
@@ -502,6 +502,32 @@ static int dvb_register(struct cx23885_t
                }
                break;
        }
+       case CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H:
+               i2c_bus = &dev->i2c_bus[0];
+
+               port->dvb.frontend = dvb_attach(zl10353_attach,
+                       &dvico_fusionhdtv_xc3028,
+                       &i2c_bus->i2c_adap);
+               if (port->dvb.frontend != NULL) {
+                       struct dvb_frontend      *fe;
+                       struct xc2028_config      cfg = {
+                               .i2c_adap  = &dev->i2c_bus[1].i2c_adap,
+                               .i2c_addr  = 0x61,
+                               .video_dev = port,
+                               .callback  = cx23885_tuner_callback,
+                       };
+                       static struct xc2028_ctrl ctl = {
+                               .fname       = "xc3028-v27.fw",
+                               .max_len     = 64,
+                               .demod       = XC3028_FE_ZARLINK456,
+                       };
+
+                       fe = dvb_attach(xc2028_attach, port->dvb.frontend,
+                               &cfg);
+                       if (fe != NULL && fe->ops.tuner_ops.set_config != NULL)
+                               fe->ops.tuner_ops.set_config(fe, &ctl);
+               }
+               break;
        default:
                printk("%s: The frontend of your DVB/ATSC card isn't supported 
yet\n",
                       dev->name);
diff -r b794d300ab2e -r 7d34ba657fa8 linux/drivers/media/video/cx23885/cx23885.h
--- a/linux/drivers/media/video/cx23885/cx23885.h       Fri Aug 29 18:44:28 
2008 -0300
+++ b/linux/drivers/media/video/cx23885/cx23885.h       Fri Aug 29 18:48:28 
2008 -0300
@@ -66,6 +66,7 @@
 #define CX23885_BOARD_HAUPPAUGE_HVR1400        9
 #define CX23885_BOARD_DVICO_FUSIONHDTV_7_DUAL_EXP 10
 #define CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP 11
+#define CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H 12
 
 /* Currently unsupported by the driver: PAL/H, NTSC/Kr, SECAM B/G/H/LC */
 #define CX23885_NORMS (\


---

Patch is available at: 
http://linuxtv.org/hg/v4l-dvb/rev/7d34ba657fa8fa5414a81619a87fb8f16781cb8c

_______________________________________________
linuxtv-commits mailing list
linuxtv-commits@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to