<div>
Allan,<br><br>My patch has not been merged into the branch,<br><br>For the moment don't worry about it and use Chris Pascoe's xc-test branch.&nbsp; <br><br>I have worked out what my issue is on the one PC that didn't work.&nbsp; I'm actually surprised it worked on the other systems, it was only due to a weird coincidence in identifying my other tuner cards first.<br>I have been slowly going through the source to attempt to solve this, I will post when it is working reliably on all machines.<br><br>Thanks for at least trying it.<br><br>Regards,<br>Stephen<br><br>
<br>
<blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;">----- Original Message -----<br>
From: "allan k" <sonofzev@iinet.net.au><br>
To: stev391@email.com<br>
Subject: Re: [linux-dvb] DViCO Fusion HDTV DVB-T Dual Express [PATCH]<br>
Date: Sat, 17 May 2008 21:27:19 +1000<br>
<br>

<br>
Hi Steve<br>
<br>
I'm getting a large amount of noise again, although after previous<br>
restarts this didn't happen.<br>
<br>
I'm wondering if your patch is already merged into the v4l sources or if<br>
I need to use this one you sent.<br>
<br>
cheers<br>
<br>
Allan<br>
On Wed, 2008-05-14 at 15:54 +1000, stev391@email.com wrote:<br>
&gt;<br>
&gt; I have updated my patch (from a week ago) and is included inline below<br>
&gt; as well as an attachment. The issue that was noticed and mentioned in<br>
&gt; previous posts regarding to tuners not resetting was possibly due to<br>
&gt; several "__FUNCTION_" in the tuner reset code, these should be<br>
&gt; "__func__", which is fixed in the attached patch.<br>
&gt;<br>
&gt; This patch is against the v4l-dvb head (7897, 2e9a2e4c8435) and is<br>
&gt; intended to merge Chris Pascoe's work into the current head to enable<br>
&gt; support for the DViCO Fusion HDTV DVB-T Dual Express (PCIe).  This<br>
&gt; enables systems with different tuners to take advantage of other<br>
&gt; experimental drivers, (for example my TV Walker Twin USB tuner).<br>
&gt;<br>
&gt; Regards,<br>
&gt;<br>
&gt; Stephen<br>
&gt;<br>
&gt; diff -Naur v4l-dvb/linux/Documentation/video4linux/CARDLIST.cx23885<br>
&gt; v4l-dvb_dev/linux/Documentation/video4linux/CARDLIST.cx23885<br>
&gt; --- v4l-dvb/linux/Documentation/video4linux/CARDLIST.cx23885<br>
&gt; 2008-05-14 09:48:21.000000000 +1000<br>
&gt; +++ v4l-dvb_dev/linux/Documentation/video4linux/CARDLIST.cx23885<br>
&gt; 2008-05-14 13:39:30.000000000 +1000<br>
&gt; @@ -8,3 +8,4 @@<br>
&gt;    7 -&gt; Hauppauge WinTV-HVR1200<br>
&gt; [0070:71d1,0070:71d3]<br>
&gt;   ;  8 -&gt; Hauppauge WinTV-HVR1700<br>
&gt; [0070:8101]<br>
&gt;    9 -&gt; Hauppauge WinTV-HVR1400<br>
&gt; [0070:8010]<br>
&gt; + 10 -&gt; DViCO FusionHDTV DVB-T Dual Express<br>
&gt; [18ac:db78]<br>
&gt; diff -Naur v4l-dvb/linux/drivers/media/video/cx23885/cx23885-cards.c<br>
&gt; v4l-dvb_dev/linux/drivers/media/video/cx23885/cx23885-cards.c<br>
&gt; --- v4l-dvb/linux/drivers/media/video/cx23885/cx23885-cards.c<br>
&gt; 2008-05-14 09:48:22.000000000 +1000<br>
&gt; +++ v4l-dvb_dev/linux/drivers/media/video/cx23885/cx23885-cards.c<br>
&gt; 2008-05-14 13:39:30.000000000 +1000<br>
&gt; @@ -144,6 +144,11 @@<br>
&gt;          .name        = "Hauppauge WinTV-HVR1400",<br>
&gt;          .portc        = CX23885_MPEG_DVB,<br>
&gt;      },<br>
&gt; +    [CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP] = {<br>
&gt; +        .name        = "DViCO FusionHDTV DVB-T Dual Express",<br>
&gt; +        .portb        = CX23885_MPEG_DVB,<br>
&gt; +        .portc        = CX23885_MPEG_DVB,<br>
&gt; +    },<br>
&gt;  };<br>
&gt;  const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards);<br>
&gt;<br>
&gt; @@ -211,6 +216,10 @@<br>
&gt;          .subvendor = 0x0070,<br>
&gt;          .subdevice = 0x8010,<br>
&gt;          .card      = CX23885_BOARD_HAUPPAUGE_HVR1400,<br>
&gt; +    },{<br>
&gt; +        .subvendor = 0x18ac,<br>
&gt; +        .subdevice = 0xdb78,<br>
&gt; +        .card      = CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP,<br>
&gt;      },<br>
&gt;  };<br>
&gt;  const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids);<br>
&gt; @@ -428,6 +437,13 @@<br>
&gt;          mdelay(20);<br>
&gt;          cx_set(GP0_IO, 0x00050005);<br>
&gt;          break;<br>
&gt; +    case CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP:<br>
&gt; +        /* GPIO-0 portb xc3028 reset */<br>
&gt; +        /* GPIO-1 portb zl10353 reset */<br>
&gt; +        /* GPIO-2 portc xc3028 reset */<br>
&gt; +        /* GPIO-3 portc zl10353 reset */<br>
&gt; +        cx_write(GP0_IO, 0x002f1000);<br>
&gt; +        break;<br>
&gt;      }<br>
&gt;  }<br>
&gt;<br>
&gt; @@ -442,6 +458,9 @@<br>
&gt;      case CX23885_BOARD_HAUPPAUGE_HVR1400:<br>
&gt;          /* FIXME: Implement me */<br>
&gt;          break;<br>
&gt; +    case CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP:<br>
&gt; +        request_module("ir-kbd-i2c");<br>
&gt; +        break;<br>
&gt;      }<br>
&gt;<br>
&gt;      return 0;<br>
&gt; @@ -478,6 +497,11 @@<br>
&gt;      }<br>
&gt;<br>
&gt;      switch (dev-&gt;board) {<br>
&gt; +    case CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP:<br>
&gt; +        ts2-&gt;gen_ctrl_val  = 0xc; /* Serial bus + punctured clock */<br>
&gt; +        ts2-&gt;ts_clk_en_val = 0x1; /* Enable TS_CLK */<br>
&gt; +        ts2-&gt;src_sel_val   = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;<br>
&gt; +        /* FALLTHROUGH */<br>
&gt;      case CX23885_BOARD_DVICO_FUSIONHDTV_5_EXP:<br>
&gt;          ts1-&gt;gen_ctrl_val  = 0xc; /* Serial bus + punctured clock */<br>
&gt;          ts1-&gt;ts_clk_en_val = 0x1; /* Enable TS_CLK */<br>
&gt; diff -Naur v4l-dvb/linux/drivers/media/video/cx23885/cx23885-dvb.c<br>
&gt; v4l-dvb_dev/linux/drivers/media/video/cx23885/cx23885-dvb.c<br>
&gt; --- v4l-dvb/linux/drivers/media/video/cx23885/cx23885-dvb.c<br>
&gt; 2008-05-14 09:48:22.000000000 +1000<br>
&gt; +++ v4l-dvb_dev/linux/drivers/media/video/cx23885/cx23885-dvb.c<br>
&gt; 2008-05-14 13:39:30.000000000 +1000<br>
&gt; @@ -42,6 +42,9 @@<br>
&gt;  #include "tuner-simple.h"<br>
&gt;  #include "dib7000p.h"<br>
&gt;  #include "dibx000_common.h"<br>
&gt; +#include "zl10353.h"<br>
&gt; +#include "tuner-xc2028.h"<br>
&gt; +#include "tuner-xc2028-types.h"<br>
&gt;<br>
&gt;  static unsigned int debug;<br>
&gt;<br>
&gt; @@ -155,6 +158,44 @@<br>
&gt;      .serial_mpeg = 0x40,<br>
&gt;  };<br>
&gt;<br>
&gt; +static int cx23885_dvico_xc2028_callback(void *ptr, int command, int<br>
&gt; arg)<br>
&gt; +{<br>
&gt; +    struct cx23885_tsport *port = ptr;<br>
&gt; +    struct cx23885_dev *dev = port-&gt;dev;<br>
&gt; +    u32 reset_mask = 0;<br>
&gt; +<br>
&gt; +    switch (command) {<br>
&gt; +    case XC2028_TUNER_RESET:<br>
&gt; +        dprintk(1, "%s: XC2028_TUNER_RESET %d, port %d\n", __func__,<br>
&gt; +            arg, port-&gt;nr);<br>
&gt; +<br>
&gt; +        if (port-&gt;nr == 1)<br>
&gt; +            reset_mask = 0x0101;<br>
&gt; +        else if (port-&gt;nr == 2)<br>
&gt; +            reset_mask = 0x0404;<br>
&gt; +<br>
&gt; +        cx_clear(GP0_IO, reset_mask);<br>
&gt; +        mdelay(5);<br>
&gt; +        cx_set(GP0_IO, reset_mask);<br>
&gt; +        break;<br>
&gt; +    case XC2028_RESET_CLK:<br>
&gt; +        dprintk(1, "%s: XC2028_RESET_CLK %d\n", __func__, arg);<br>
&gt; +        break;<br>
&gt; +    default:<br>
&gt; +        dprintk(1, "%s: unknown command %d, arg %d\n", __func__,<br>
&gt; +               command, arg);<br>
&gt; +        return -EINVAL;<br>
&gt; +    }<br>
&gt; +<br>
&gt; +    return 0;<br>
&gt; +}<br>
&gt; +<br>
&gt; +static struct zl10353_config dvico_fusionhdtv_xc3028 = {<br>
&gt; +    .demod_address = 0x0f,<br>
&gt; +    .if2           = 45600,<br>
&gt; +    .no_tuner      = 1,<br>
&gt; +};<br>
&gt; +<br>
&gt;  static struct s5h1409_config hauppauge_hvr1500q_config = {<br>
&gt;      .demod_address = 0x32 &gt;&gt; 1,<br>
&gt;      .output_mode   = S5H1409_SERIAL_OUTPUT,<br>
&gt; @@ -454,6 +495,39 @@<br>
&gt;                  fe-&gt;ops.tuner_ops.set_config(fe, &amp;ctl);<br>
&gt;          }<br>
&gt;          break;<br>
&gt; +    case CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP: {<br>
&gt; +        i2c_bus = &amp;dev-&gt;i2c_bus[port-&gt;nr - 1];<br>
&gt; +<br>
&gt; +        /* Take demod and tuner out of reset */<br>
&gt; +        if (port-&gt;nr == 1)<br>
&gt; +            cx_set(GP0_IO, 0x0303);<br>
&gt; +        else if (port-&gt;nr == 2)<br>
&gt; +            cx_set(GP0_IO, 0x0c0c);<br>
&gt; +        mdelay(5);<br>
&gt; +        port-&gt;dvb.frontend = dvb_attach(zl10353_attach,<br>
&gt; +                           &amp;dvico_fusionhdtv_xc3028,<br>
&gt; +                           &amp;i2c_bus-&gt;i2c_adap);<br>
&gt; +        if (port-&gt;dvb.frontend != NULL) {<br>
&gt; +            struct dvb_frontend      *fe;<br>
&gt; +            struct xc2028_config      cfg = {<br>
&gt; +                .i2c_adap  = &amp;i2c_bus-&gt;i2c_adap,<br>
&gt; +                .i2c_addr  = 0x61,<br>
&gt; +                .video_dev = port,<br>
&gt; +                .callback  = cx23885_dvico_xc2028_callback,<br>
&gt; +            };<br>
&gt; +            static struct xc2028_ctrl ctl = {<br>
&gt; +                .fname       = "xc3028-dvico-au-01.fw",<br>
&gt; +                .max_len     = 64,<br>
&gt; +                .scode_table = ZARLINK456,<br>
&gt; +            };<br>
&gt; +<br>
&gt; +            fe = dvb_attach(xc2028_attach, port-&gt;dvb.frontend,<br>
&gt; +                    &amp;cfg);<br>
&gt; +            if (fe != NULL &amp;&amp; fe-&gt;ops.tuner_ops.set_config != NULL)<br>
&gt; +                fe-&gt;ops.tuner_ops.set_config(fe, &amp;ctl);<br>
&gt; +        }<br>
&gt; +        break;<br>
&gt; +        }<br>
&gt;      default:<br>
&gt;          printk("%s: The frontend of your DVB/ATSC card isn't<br>
&gt; supported yet\n",<br>
&gt;                 dev-&gt;name);<br>
&gt; diff -Naur v4l-dvb/linux/drivers/media/video/cx23885/cx23885.h<br>
&gt; v4l-dvb_dev/linux/drivers/media/video/cx23885/cx23885.h<br>
&gt; --- v4l-dvb/linux/drivers/media/video/cx23885/cx23885.h    2008-05-14<br>
&gt; 09:48:22.000000000 +1000<br>
&gt; +++ v4l-dvb_dev/linux/drivers/media/video/cx23885/cx23885.h<br>
&gt; 2008-05-14 13:39:30.000000000 +1000<br>
&gt; @@ -66,6 +66,7 @@<br>
&gt;  #define CX23885_BOARD_HAUPPAUGE_HVR1200        7<br>
&gt;  #define CX23885_BOARD_HAUPPAUGE_HVR1700        8<br>
&gt;  #define CX23885_BOARD_HAUPPAUGE_HVR1400        9<br>
&gt; +#define CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP 10<br>
&gt;<br>
&gt;  /* Currently unsupported by the driver: PAL/H, NTSC/Kr, SECAM<br>
&gt; B/G/H/LC */<br>
&gt;  #define CX23885_NORMS (\<br>
&gt; diff -Naur v4l-dvb/linux/drivers/media/video/cx23885/Kconfig<br>
&gt; v4l-dvb_dev/linux/drivers/media/video/cx23885/Kconfig<br>
&gt; --- v4l-dvb/linux/drivers/media/video/cx23885/Kconfig    2008-05-14<br>
&gt; 09:48:22.000000000 +1000<br>
&gt; +++ v4l-dvb_dev/linux/drivers/media/video/cx23885/Kconfig<br>
&gt; 2008-05-14 13:39:30.000000000 +1000<br>
&gt; @@ -15,6 +15,7 @@<br>
&gt;      select MEDIA_TUNER_MT2131 if !DVB_FE_CUSTOMISE<br>
&gt;      select DVB_S5H1409 if !DVB_FE_CUSTOMISE<br>
&gt;      select DVB_LGDT330X if !DVB_FE_CUSTOMISE<br>
&gt; +     select DVB_ZL10353 if !DVB_FE_CUSTOMISE<br>
&gt;      select MEDIA_TUNER_XC2028 if !DVB_FE_CUSTOMIZE<br>
&gt;      select MEDIA_TUNER_TDA8290 if !DVB_FE_CUSTOMIZE<br>
&gt;      select MEDIA_TUNER_TDA18271 if !DVB_FE_CUSTOMIZE<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; -- See Exclusive Video: 10th Annual Young Hollywood Awards<br>
&gt;<br>
</sonofzev@iinet.net.au></blockquote>
</div>
<BR>

-- 
<div> See Exclusive Video: <a href= "http://www.hollywoodlife.net/younghollywoodawards2008/" target="_blank"> <b> 10th Annual Young Hollywood Awards</b></a><br></div>