The patch number 8644 was added via Steven Toth <[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: Steven Toth  <[EMAIL PROTECTED]>
Add support for DViCO FusionHDTV DVB-T Dual Express


Add support for the DViCO FusionHDTV DVB-T Dual Express card, based on
work by Chris Pascoe and Stephen Backway.

Signed-off-by: Steven Toth <[EMAIL PROTECTED]>
Signed-off-by: Anton Blanchard <[EMAIL PROTECTED]>


---

 linux/Documentation/video4linux/CARDLIST.cx23885  |    1 
 linux/drivers/media/video/cx23885/cx23885-cards.c |   24 +++++++++
 linux/drivers/media/video/cx23885/cx23885-dvb.c   |   34 ++++++++++++++
 linux/drivers/media/video/cx23885/cx23885.h       |    1 
 4 files changed, 60 insertions(+)

diff -r c2ad00518e83 -r d61c3d922e98 
linux/Documentation/video4linux/CARDLIST.cx23885
--- a/linux/Documentation/video4linux/CARDLIST.cx23885  Mon Aug 04 20:38:46 
2008 -0400
+++ b/linux/Documentation/video4linux/CARDLIST.cx23885  Mon Aug 04 20:39:53 
2008 -0400
@@ -9,3 +9,4 @@
   8 -> Hauppauge WinTV-HVR1700                             [0070:8101]
   9 -> Hauppauge WinTV-HVR1400                             [0070:8010]
  10 -> DViCO FusionHDTV7 Dual Express                      [18ac:d618]
+ 11 -> DViCO FusionHDTV DVB-T Dual Express                 [18ac:db78]
diff -r c2ad00518e83 -r d61c3d922e98 
linux/drivers/media/video/cx23885/cx23885-cards.c
--- a/linux/drivers/media/video/cx23885/cx23885-cards.c Mon Aug 04 20:38:46 
2008 -0400
+++ b/linux/drivers/media/video/cx23885/cx23885-cards.c Mon Aug 04 20:39:53 
2008 -0400
@@ -150,6 +150,11 @@ struct cx23885_board cx23885_boards[] = 
                .portb          = CX23885_MPEG_DVB,
                .portc          = CX23885_MPEG_DVB,
        },
+       [CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP] = {
+               .name           = "DViCO FusionHDTV DVB-T Dual Express",
+               .portb          = CX23885_MPEG_DVB,
+               .portc          = CX23885_MPEG_DVB,
+       },
 };
 const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards);
 
@@ -221,6 +226,10 @@ struct cx23885_subid cx23885_subids[] = 
                .subvendor = 0x18ac,
                .subdevice = 0xd618,
                .card      = CX23885_BOARD_DVICO_FUSIONHDTV_7_DUAL_EXP,
+       },{
+               .subvendor = 0x18ac,
+               .subdevice = 0xdb78,
+               .card      = CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP,
        },
 };
 const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids);
@@ -341,6 +350,7 @@ static int cx23885_tuner_callback(struct
                        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,
@@ -484,6 +494,19 @@ void cx23885_gpio_setup(struct cx23885_d
                mdelay(20);
                cx_set(GP0_IO, 0x000f000f);
                break;
+       case CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP:
+               /* GPIO-0 portb xc3028 reset */
+               /* GPIO-1 portb zl10353 reset */
+               /* GPIO-2 portc xc3028 reset */
+               /* GPIO-3 portc zl10353 reset */
+
+               /* Put the parts into reset and back */
+               cx_set(GP0_IO, 0x000f0000);
+               mdelay(20);
+               cx_clear(GP0_IO, 0x0000000f);
+               mdelay(20);
+               cx_set(GP0_IO, 0x000f000f);
+               break;
        }
 }
 
@@ -535,6 +558,7 @@ void cx23885_card_setup(struct cx23885_d
 
        switch (dev->board) {
        case CX23885_BOARD_DVICO_FUSIONHDTV_7_DUAL_EXP:
+       case CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP:
                ts2->gen_ctrl_val  = 0xc; /* Serial bus + punctured clock */
                ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */
                ts2->src_sel_val   = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
diff -r c2ad00518e83 -r d61c3d922e98 
linux/drivers/media/video/cx23885/cx23885-dvb.c
--- a/linux/drivers/media/video/cx23885/cx23885-dvb.c   Mon Aug 04 20:38:46 
2008 -0400
+++ b/linux/drivers/media/video/cx23885/cx23885-dvb.c   Mon Aug 04 20:39:53 
2008 -0400
@@ -43,6 +43,7 @@
 #include "tuner-simple.h"
 #include "dib7000p.h"
 #include "dibx000_common.h"
+#include "zl10353.h"
 
 static unsigned int debug;
 
@@ -302,6 +303,12 @@ static struct dib7000p_config hauppauge_
        .spur_protect = 0,
 
        .output_mode = OUTMODE_MPEG2_SERIAL,
+};
+
+static struct zl10353_config dvico_fusionhdtv_xc3028 = {
+       .demod_address = 0x0f,
+       .if2           = 45600,
+       .no_tuner      = 1,
 };
 
 static int dvb_register(struct cx23885_tsport *port)
@@ -466,6 +473,33 @@ static int dvb_register(struct cx23885_t
                                &i2c_bus->i2c_adap,
                                &dvico_xc5000_tunerconfig, i2c_bus);
                break;
+       case CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP: {
+               i2c_bus = &dev->i2c_bus[port->nr - 1];
+
+               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  = &i2c_bus->i2c_adap,
+                               .i2c_addr  = 0x61,
+                               .video_dev = port,
+                               .callback  = cx23885_xc3028_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 c2ad00518e83 -r d61c3d922e98 linux/drivers/media/video/cx23885/cx23885.h
--- a/linux/drivers/media/video/cx23885/cx23885.h       Mon Aug 04 20:38:46 
2008 -0400
+++ b/linux/drivers/media/video/cx23885/cx23885.h       Mon Aug 04 20:39:53 
2008 -0400
@@ -65,6 +65,7 @@
 #define CX23885_BOARD_HAUPPAUGE_HVR1700        8
 #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
 
 /* 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/d61c3d922e982b6ba4b525ce2f8d8daa7669d012

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

Reply via email to