[linux-dvb] DViCO Fusion HDTV DVB-T Dual Express [PATCH]

stev391 at email.com stev391 at email.com
Thu May 15 00:12:52 CEST 2008


 Thom,

Disclaimer: This not guranteed to work and will break any webcams you
have running on ubuntu, this is reversable by reinstalling the "linux-*"
packages that you have already installed.

I can't seem to find any information about that version of Mythbuntu, is
it supposed to be version 8.04? Anyway the following will work for
previous versions as well.
All commands to be run in a terminal.

Step 1, Install the required packages to retrieve and compile the source
(you also need to install the linux-headers that match your kernel, which
is done by the following command as well)
sudo apt-get install mercurial build-essential patch linux-headers-`uname
-r`

Step 2, Retrieve the v4l-dvb sources
hg clone http://linuxtv.org/hg/v4l-dvb

Step 3, Apply patch (which was an attachment on the previous email)
cd v4l-dvb
patch -p1 < ../DViCO_FUSIONHDTV_DVB_T_DUAL_EXP_v2.patch

Step 4, Compile which will take awhile... (maybe time to make a cup of
coffee)
make all

Step 5 Remove the old modules as this causes issues when loading the
modules later(this depends on version of ubuntu)
8.04:  cd /lib/modules/`uname -r`/ubuntu/media
cd /lib/modules/`uname -r`/kernel/drivers/media
sudo rm -r common
sudo rm -r dvb
sudo rm -r radio
sudo rm -r video

Step 6: return to v4l-dvb directory and run:
sudo make install

Step 7: Update the initramfs:
sudo dpkg-reconfigure linux-ubuntu-modules-`uname -r`

Step 8: Reboot and see if it worked
sudo shutdown -r now

If this didn't work with my patch please send me the output of dmesg and
any relevant logs of the application that you used to identify the
problem with (eg mythbackend log). Then try replacing step 2 & 3 with
(This uses the older branch by Chris Pascoe, whose code I'm trying to
update to bring into the main v4l-dvb):
hg clone http://linuxtv.org/hg/~pascoe/xc-test/
cd xc-test

If this still doesn't work and your dvb system is broken just reinstall
your linux-* packages.

Regards,
Stephen

  ----- Original Message -----
  From: "scuba sam"
  To: stev391 at email.com
  Subject: [linux-dvb] DViCO Fusion HDTV DVB-T Dual Express [PATCH]
  Date: Wed, 14 May 2008 21:32:51 +0100


  Hi

  I have one of these cards and have been wanting to get it working
  under Mythbuntu 8.01 and this looks promising.

  I'm fairly new to Linux and have no idea as to how to apply this
  patch to my existing Mythbuntu installation and would be very
  grateful for some pointers as to how to go about it. I'm sure there
  are many people in the same situation and I would be happy to write
  it up as a howto and post to relevant interest groups.

  Thank you for your work on this.

  Regards
  Thom



  ----------------------------------------
  I have updated my patch (from a week ago) and is included inline
  below as well as an attachment. The issue that was noticed and
  mentioned in previous posts regarding to tuners not resetting was
  possibly due to several "__FUNCTION_" in the tuner reset code,
  these should be "__func__", which is fixed in the attached patch.

  This patch is against the v4l-dvb head (7897, 2e9a2e4c8435) and is
  intended to merge Chris Pascoe's work into the current head to
  enable support for the DViCO Fusion HDTV DVB-T Dual Express (PCIe).
  This enables systems with different tuners to take advantage of
  other experimental drivers, (for example my TV Walker Twin USB
  tuner).

  Regards,

  Stephen

  diff -Naur v4l-dvb/linux/Documentation/video4linux/CARDLIST.cx23885
  v4l-dvb_dev/linux/Documentation/video4linux/CARDLIST.cx23885
  --- v4l-dvb/linux/Documentation/video4linux/CARDLIST.cx23885
  2008-05-14 09:48:21.000000000 +1000
  +++ v4l-dvb_dev/linux/Documentation/video4linux/CARDLIST.cx23885
  2008-05-14 13:39:30.000000000 +1000
  @@ -8,3 +8,4 @@
  7 -> Hauppauge WinTV-HVR1200
  [0070:71d1,0070:71d3]
  ; 8 -> Hauppauge WinTV-HVR1700 [0070:8101]
  9 -> Hauppauge WinTV-HVR1400 [0070:8010]
  + 10 -> DViCO FusionHDTV DVB-T Dual Express [18ac:db78]
  diff -Naur
  v4l-dvb/linux/drivers/media/video/cx23885/cx23885-cards.c
  v4l-dvb_dev/linux/drivers/media/video/cx23885/cx23885-cards.c
  --- v4l-dvb/linux/drivers/media/video/cx23885/cx23885-cards.c
  2008-05-14 09:48:22.000000000 +1000
  +++ v4l-dvb_dev/linux/drivers/media/video/cx23885/cx23885-cards.c
  2008-05-14 13:39:30.000000000 +1000
  @@ -144,6 +144,11 @@
  .name = "Hauppauge WinTV-HVR1400",
  .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);

  @@ -211,6 +216,10 @@
  .subvendor = 0x0070,
  .subdevice = 0x8010,
  .card = CX23885_BOARD_HAUPPAUGE_HVR1400,
  + },{
  + .subvendor = 0x18ac,
  + .subdevice = 0xdb78,
  + .card = CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP,
  },
  };
  const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids);
  @@ -428,6 +437,13 @@
  mdelay(20);
  cx_set(GP0_IO, 0x00050005);
  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 */
  + cx_write(GP0_IO, 0x002f1000);
  + break;
  }
  }

  @@ -442,6 +458,9 @@
  case CX23885_BOARD_HAUPPAUGE_HVR1400:
  /* FIXME: Implement me */
  break;
  + case CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP:
  + request_module("ir-kbd-i2c");
  + break;
  }

  return 0;
  @@ -478,6 +497,11 @@
  }

  switch (dev->board) {
  + 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;
  + /* FALLTHROUGH */
  case CX23885_BOARD_DVICO_FUSIONHDTV_5_EXP:
  ts1->gen_ctrl_val = 0xc; /* Serial bus + punctured clock */
  ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */
  diff -Naur v4l-dvb/linux/drivers/media/video/cx23885/cx23885-dvb.c
  v4l-dvb_dev/linux/drivers/media/video/cx23885/cx23885-dvb.c
  --- v4l-dvb/linux/drivers/media/video/cx23885/cx23885-dvb.c
  2008-05-14 09:48:22.000000000 +1000
  +++ v4l-dvb_dev/linux/drivers/media/video/cx23885/cx23885-dvb.c
  2008-05-14 13:39:30.000000000 +1000
  @@ -42,6 +42,9 @@
  #include "tuner-simple.h"
  #include "dib7000p.h"
  #include "dibx000_common.h"
  +#include "zl10353.h"
  +#include "tuner-xc2028.h"
  +#include "tuner-xc2028-types.h"

  static unsigned int debug;

  @@ -155,6 +158,44 @@
  .serial_mpeg = 0x40,
  };

  +static int cx23885_dvico_xc2028_callback(void *ptr, int command, int
  arg)
  +{
  + struct cx23885_tsport *port = ptr;
  + struct cx23885_dev *dev = port->dev;
  + u32 reset_mask = 0;
  +
  + switch (command) {
  + case XC2028_TUNER_RESET:
  + dprintk(1, "%s: XC2028_TUNER_RESET %d, port %d\n", __func__,
  + arg, port->nr);
  +
  + if (port->nr == 1)
  + reset_mask = 0x0101;
  + else if (port->nr == 2)
  + reset_mask = 0x0404;
  +
  + cx_clear(GP0_IO, reset_mask);
  + mdelay(5);
  + cx_set(GP0_IO, reset_mask);
  + break;
  + case XC2028_RESET_CLK:
  + dprintk(1, "%s: XC2028_RESET_CLK %d\n", __func__, arg);
  + break;
  + default:
  + dprintk(1, "%s: unknown command %d, arg %d\n", __func__,
  + command, arg);
  + return -EINVAL;
  + }
  +
  + return 0;
  +}
  +
  +static struct zl10353_config dvico_fusionhdtv_xc3028 = {
  + .demod_address = 0x0f,
  + .if2 = 45600,
  + .no_tuner = 1,
  +};
  +
  static struct s5h1409_config hauppauge_hvr1500q_config = {
  .demod_address = 0x32 >> 1,
  .output_mode = S5H1409_SERIAL_OUTPUT,
  @@ -454,6 +495,39 @@
  fe->ops.tuner_ops.set_config(fe, &ctl);
  }
  break;
  + case CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP: {
  + i2c_bus = &dev->i2c_bus[port->nr - 1];
  +
  + /* Take demod and tuner out of reset */
  + if (port->nr == 1)
  + cx_set(GP0_IO, 0x0303);
  + else if (port->nr == 2)
  + cx_set(GP0_IO, 0x0c0c);
  + mdelay(5);
  + 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_dvico_xc2028_callback,
  + };
  + static struct xc2028_ctrl ctl = {
  + .fname = "xc3028-dvico-au-01.fw",
  + .max_len = 64,
  + .scode_table = 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 -Naur v4l-dvb/linux/drivers/media/video/cx23885/cx23885.h
  v4l-dvb_dev/linux/drivers/media/video/cx23885/cx23885.h
  --- v4l-dvb/linux/drivers/media/video/cx23885/cx23885.h
  2008-05-14 09:48:22.000000000 +1000
  +++ v4l-dvb_dev/linux/drivers/media/video/cx23885/cx23885.h
  2008-05-14 13:39:30.000000000 +1000
  @@ -66,6 +66,7 @@
  #define CX23885_BOARD_HAUPPAUGE_HVR1200 7
  #define CX23885_BOARD_HAUPPAUGE_HVR1700 8
  #define CX23885_BOARD_HAUPPAUGE_HVR1400 9
  +#define CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP 10

  /* Currently unsupported by the driver: PAL/H, NTSC/Kr, SECAM
  B/G/H/LC */
  #define CX23885_NORMS (\
  diff -Naur v4l-dvb/linux/drivers/media/video/cx23885/Kconfig
  v4l-dvb_dev/linux/drivers/media/video/cx23885/Kconfig
  --- v4l-dvb/linux/drivers/media/video/cx23885/Kconfig 2008-05-14
  09:48:22.000000000 +1000
  +++ v4l-dvb_dev/linux/drivers/media/video/cx23885/Kconfig
  2008-05-14 13:39:30.000000000 +1000
  @@ -15,6 +15,7 @@
  select MEDIA_TUNER_MT2131 if !DVB_FE_CUSTOMISE
  select DVB_S5H1409 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

-- 
See Exclusive Video: 10th Annual Young Hollywood Awards
http://www.hollywoodlife.net/younghollywoodawards2008/

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.linuxtv.org/pipermail/linux-dvb/attachments/20080515/543686c2/attachment-0001.htm 


More information about the linux-dvb mailing list