public inbox for linux-media@vger.kernel.org
 help / color / mirror / Atom feed
* Re: [linux-dvb] DViCO Fusion HDTV DVB-T Dual Express [PATCH]
@ 2008-05-20 21:45 stev391
  2008-05-20 23:48 ` jochen s
  0 siblings, 1 reply; 15+ messages in thread
From: stev391 @ 2008-05-20 21:45 UTC (permalink / raw)
  To: jochen s, linux-dvb; +Cc: stev391


[-- Attachment #1.1: Type: text/plain, Size: 10034 bytes --]

 Jochen,

Which sources is this dmesg output from (my patch or Chris Pascoe's
xc-test branch)?  Mine are definately dead in the water at the moment as
the existing code relies on the moons alligning to work.  I'm still
working on this...

If it is from Chris Pascoe's branch it should work, if not for the module
"tuner_xc2028" when loading pass the option debug=1 (This will generate
alot more lines in dmesg) and repeat whatever you did to break it.  Send
this on and I will attempt to work out where it is going wrong.

Regards,
Stephen

  ----- Original Message -----
  From: "jochen s"
  To: linux-dvb@linuxtv.org
  Subject: Re: [linux-dvb] DViCO Fusion HDTV DVB-T Dual Express [PATCH]
  Date: Tue, 20 May 2008 18:10:26 +0200



  May 20 17:48:11 kernel: [ 48.744161] ACPI: PCI Interrupt 0000:02:00.0
  [A] -> GSI 16 (level, low) -> IRQ 16
  May 20 17:48:11 kernel: [ 48.744179] CORE cx23885[0]: subsystem:
  18ac:db78, board: DViCO FusionHDTV DVB-T Dual Express
  [card=10,autodetected]
  May 20 17:48:11 kernel: [ 48.844132] cx23885[0]: i2c bus 0 registered
  May 20 17:48:11 kernel: [ 48.844154] cx23885[0]: i2c bus 1 registered
  May 20 17:48:11 kernel: [ 48.844168] cx23885[0]: i2c bus 2 registered
  May 20 17:48:11 kernel: [ 48.908665] input: i2c IR (FusionHDTV)
  as /class/input/input3
  May 20 17:48:11 kernel: [ 48.908687] ir-kbd-i2c: i2c IR (FusionHDTV)
  detected at i2c-2/2-006b/ir0 [cx23885[0]]
  May 20 17:48:11 kernel: [ 48.909711] cx23885[0]: cx23885 based dvb
  card
  May 20 17:48:11 kernel: [ 48.970326] xc2028 2-0061: type set to
  XCeive
  xc2028/xc3028 tuner
  May 20 17:48:11 kernel: [ 48.970336] DVB: registering new adapter
  (cx23885
  [0])
  May 20 17:48:11 kernel: [ 48.970340] DVB: registering frontend 1
  (Zarlink
  ZL10353 DVB-T)...
  May 20 17:48:11 kernel: [ 48.970625] cx23885[0]: cx23885 based dvb
  card
  May 20 17:48:11 kernel: [ 48.976144] xc2028 3-0061: type set to
  XCeive
  xc2028/xc3028 tuner
  May 20 17:48:11 kernel: [ 48.976147] DVB: registering new adapter
  (cx23885
  [0])
  May 20 17:48:11 kernel: [ 48.976151] DVB: registering frontend 2
  (Zarlink
  ZL10353 DVB-T)...
  May 20 17:48:11 kernel: [ 48.976368] cx23885_dev_checkrevision()
  Hardware
  revision = 0xb0
  May 20 17:48:11 kernel: [ 48.976376] cx23885[0]/0: found at
  0000:02:00.0,
  rev: 2, irq: 16, latency: 0, mmio: 0xfd600000
  May 20 17:48:11 kernel: [ 48.976383] PCI: Setting latency timer of
  device
  0000:02:00.0 to 64

  ok - so far...

  but then:

  May 20 17:48:50 vdr: [7428] frontend 1 timed out while tuning to
  channel 2,
  tp 514
  May 20 17:48:50 kernel: [ 80.313642] xc2028 2-0061: Loading firmware
  for
  type=BASE F8MHZ (3), id 0000000000000000.
  May 20 17:48:51 kernel: [ 81.247786] xc2028 2-0061: Loading firmware
  for
  type=BASE F8MHZ (3), id 0000000000000000.
  May 20 17:48:53 kernel: [ 83.150433] xc2028 2-0061: Loading firmware
  for
  type=BASE F8MHZ (3), id 0000000000000000.
  May 20 17:48:53 kernel: [ 83.720342] eth0: no IPv6 routers present
  May 20 17:48:54 kernel: [ 84.117987] xc2028 2-0061: Loading firmware
  for
  type=BASE F8MHZ (3), id 0000000000000000.
  May 20 17:48:56 kernel: [ 86.047256] xc2028 2-0061: Loading firmware
  for
  type=BASE F8MHZ (3), id 0000000000000000.
  May 20 17:48:57 kernel: [ 86.979688] xc2028 2-0061: Loading firmware
  for
  type=BASE F8MHZ (3), id 0000000000000000.
  ...
  May 20 17:48:59 kernel: [ 88.486428] xc2028 2-0061: Loading firmware
  for
  type=BASE F8MHZ (3), id 0000000000000000.
  May 20 17:49:00 kernel: [ 89.498026] xc2028 2-0061: Loading firmware
  for
  type=BASE F8MHZ (3), id 0000000000000000.
  May 20 17:49:02 kernel: [ 91.416250] xc2028 2-0061: Loading firmware
  for
  type=BASE F8MHZ (3), id 0000000000000000.
  May 20 17:49:03 kernel: [ 92.346871] xc2028 2-0061: Loading firmware
  for
  type=BASE F8MHZ (3), id 0000000000000000.
  ...
  May 20 17:49:23 kernel: [ 109.368185] xc2028 2-0061: Loading firmware
  for
  type=BASE F8MHZ (3), id 0000000000000000.
  May 20 17:49:24 kernel: [ 109.934506] xc2028 3-0061: Loading 3
  firmware
  images from xc3028-dvico-au-01.fw, type: DViCO DualDig4/Nano2
  (Australia),
  ver 2.7
  May 20 17:49:24 kernel: [ 109.938812] xc2028 3-0061: Loading firmware
  for
  type=BASE F8MHZ (3), id 0000000000000000.
  May 20 17:49:24 kernel: [ 110.034395] xc2028 2-0061: i2c output
  error: rc
  = -5 (should be 4)
  May 20 17:49:24 kernel: [ 110.034399] xc2028 2-0061: -5 returned from
  send
  May 20 17:49:24 kernel: [ 110.034434] xc2028 2-0061: Error -22 while
  loading base firmware
  May 20 17:49:24 kernel: [ 110.081951] xc2028 2-0061: Loading firmware
  for
  type=BASE F8MHZ (3), id 0000000000000000.
  May 20 17:49:24 kernel: [ 110.088001] xc2028 2-0061: i2c output
  error: rc
  = -5 (should be 64)
  May 20 17:49:24 kernel: [ 110.088003] xc2028 2-0061: -5 returned from
  send
  May 20 17:49:24 kernel: [ 110.088050] xc2028 2-0061: Error -22 while
  loading base firmware
  May 20 17:49:24 kernel: [ 110.089843] zl10353: write to reg 62 failed
  (err
  = -5)!
  May 20 17:49:24 kernel: [ 110.091667] zl10353: write to reg 5f failed
  (err
  = -5)!
  May 20 17:49:24 kernel: [ 110.093428] zl10353: write to reg 71 failed
  (err
  = -5)!
  May 20 17:49:24 kernel: [ 110.095201] zl10353_read_register: readreg
  error
  (reg=6, ret==-5)
  May 20 17:49:24 kernel: [ 110.105956] zl10353_read_register: readreg
  error
  (reg=6, ret==-5)
  May 20 17:49:24 kernel: [ 110.116251] zl10353_read_register: readreg
  error
  (reg=6, ret==-5)
  ...

  May 20 18:01:00 kernel: [ 791.122235] xc2028 3-0061: Loading firmware
  for
  type=BASE F8MHZ (3), id 0000000000000000.
  May 20 18:01:01 kernel: [ 791.998348] xc2028 2-0061: Loading firmware
  for
  type=BASE F8MHZ (3), id 0000000000000000.
  May 20 18:01:02 kernel: [ 793.049839] xc2028 2-0061: Loading firmware
  for
  type=BASE F8MHZ (3), id 0000000000000000.
  May 20 18:01:02 kernel: [ 793.144856] xc2028 3-0061: Loading firmware
  for
  type=BASE F8MHZ (3), id 0000000000000000.
  May 20 18:01:03 kernel: [ 794.054455] xc2028 2-0061: i2c output
  error: rc
  = -5 (should be 4)
  May 20 18:01:03 kernel: [ 794.054460] xc2028 2-0061: -5 returned from
  send
  May 20 18:01:03 kernel: [ 794.054528] xc2028 2-0061: Error -22 while
  loading base firmware
  May 20 18:01:03 kernel: [ 794.056622] zl10353: write to reg 62 failed
  (err
  = -5)!
  May 20 18:01:03 kernel: [ 794.058744] zl10353: write to reg 5f failed
  (err
  = -5)!
  May 20 18:01:03 kernel: [ 794.060858] zl10353: write to reg 71 failed
  (err
  = -5)!
  May 20 18:01:03 kernel: [ 794.063013] zl10353_read_register: readreg
  error
  (reg=6, ret==-5)
  May 20 18:01:03 kernel: [ 794.075006] zl10353_read_register: readreg
  error
  (reg=6, ret==-5)
  May 20 18:01:03 kernel: [ 794.087060] zl10353_read_register: readreg
  error
  (reg=6, ret==-5)
  May 20 18:01:03 kernel: [ 794.098969] zl10353_read_register: readreg
  error
  (reg=6, ret==-5)
  May 20 18:01:03 kernel: [ 794.111100] zl10353_read_register: readreg
  error
  (reg=6, ret==-5)
  May 20 18:01:03 kernel: [ 794.122939] zl10353_read_register: readreg
  error
  (reg=6, ret==-5)
  May 20 18:01:03 kernel: [ 794.135009] zl10353_read_register: readreg
  error
  (reg=6, ret==-5)
  May 20 18:01:03 kernel: [ 794.148908] zl10353_read_register: readreg
  error
  (reg=6, ret==-5)

  any idea to help me?

  thanks in advance, jochen

  Am Donnerstag 15 Mai 2008 00:12:52 schrieb stev391@email.com:
  > 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

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


[-- Attachment #1.2: Type: text/html, Size: 10920 bytes --]

[-- Attachment #2: Type: text/plain, Size: 150 bytes --]

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

^ permalink raw reply	[flat|nested] 15+ messages in thread
* Re: [linux-dvb] DViCO Fusion HDTV DVB-T Dual Express [PATCH]
@ 2008-05-25 11:28 stev391
  2008-05-26  2:20 ` bumkunjo
  0 siblings, 1 reply; 15+ messages in thread
From: stev391 @ 2008-05-25 11:28 UTC (permalink / raw)
  To: Hans-Frieder Vogt, jochen s; +Cc: linux-dvb


[-- Attachment #1.1: Type: text/plain, Size: 2248 bytes --]

 Hans-Frieder,

Thanks, for this patch.  I have tested it on 1 of 3 machines that I have
access to with this DVB card. No issues (Now loads 80 firmwares, instead
of 3)

It doesn't break Chris Pascoe's xc-test branch with the DViCO Fusion HDTV
DVB-T Dual Express.

It also makes my patch, to get support into the v4l-dvb head, (newer
version then posted here) work a lot more reliably (Perfectly on this
test machine, I will run it on my mythbox for a week or so before I post
it).

I think you should email Chris Pascoe and petition him to include it in
his branch.  As this will definitely help alot of people out.

Thanks again,

Stephen.

  ----- Original Message -----
  From: "Hans-Frieder Vogt"
  To: "jochen s" , stev391@email.com
  Subject: Re: [linux-dvb] DViCO Fusion HDTV DVB-T Dual Express [PATCH]
  Date: Fri, 23 May 2008 21:46:58 +0200


  Jochen,

  you are indeed missing firmwares. The xc-test branch from Chris
  Pascoe uses the special collection of firmwares
  xc3028-dvico-au-01.fw which only contains firmwares for 7MHz
  bandwidth (just try to tune a channel in the 7MHz band to confirm
  this). To make the card work also for other bandwidths please apply
  the following patch and put the standard firmware for xc3028
  (xc3028-v27.fw) in the usual place (e.g. /lib/firmware).

  This approach should also work for australia, because the standard
  firmware also contains those firmwares in xc3028-dvico-au-01.fw.

  Stephen, can you confirm this?

  Cheers,
  Hans-Frieder

  --- xc-test.orig/linux/drivers/media/video/cx23885/cx23885-dvb.c
  2008-04-26 23:40:52.000000000 +0200
  +++ xc-test/linux/drivers/media/video/cx23885/cx23885-dvb.c
  2008-05-19 23:15:08.000000000 +0200
  @@ -217,9 +217,9 @@ static int dvb_register(struct cx23885_t
  .callback = cx23885_dvico_xc2028_callback,
  };
  static struct xc2028_ctrl ctl = {
  - .fname = "xc3028-dvico-au-01.fw",
  + .fname = "xc3028-v27.fw",
  .max_len = 64,
  - .scode_table = ZARLINK456,
  + .demod = XC3028_FE_ZARLINK456,
  };

  fe = dvb_attach(xc2028_attach, port->dvb.frontend,

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


[-- Attachment #1.2: Type: text/html, Size: 3023 bytes --]

[-- Attachment #2: Type: text/plain, Size: 150 bytes --]

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

^ permalink raw reply	[flat|nested] 15+ messages in thread
* Re: [linux-dvb] DViCO Fusion HDTV DVB-T Dual Express [PATCH]
@ 2008-05-18  9:45 stev391
  0 siblings, 0 replies; 15+ messages in thread
From: stev391 @ 2008-05-18  9:45 UTC (permalink / raw)
  To: allan k; +Cc: linux-dvb


[-- Attachment #1.1: Type: text/plain, Size: 9302 bytes --]

 Allan,

My patch has not been merged into the branch,

For the moment don't worry about it and use Chris Pascoe's xc-test
branch. 

I have worked out what my issue is on the one PC that didn't work.  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.
I have been slowly going through the source to attempt to solve this, I
will post when it is working reliably on all machines.

Thanks for at least trying it.

Regards,
Stephen


  ----- Original Message -----
  From: "allan k"
  To: stev391@email.com
  Subject: Re: [linux-dvb] DViCO Fusion HDTV DVB-T Dual Express [PATCH]
  Date: Sat, 17 May 2008 21:27:19 +1000


  Hi Steve

  I'm getting a large amount of noise again, although after previous
  restarts this didn't happen.

  I'm wondering if your patch is already merged into the v4l sources or
  if
  I need to use this one you sent.

  cheers

  Allan
  On Wed, 2008-05-14 at 15:54 +1000, stev391@email.com wrote:
  >
  > 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
  >

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


[-- Attachment #1.2: Type: text/html, Size: 11979 bytes --]

[-- Attachment #2: Type: text/plain, Size: 150 bytes --]

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

^ permalink raw reply	[flat|nested] 15+ messages in thread
* Re: [linux-dvb] DViCO Fusion HDTV DVB-T Dual Express [PATCH]
@ 2008-05-14 22:12 stev391
  2008-05-20 16:10 ` jochen s
  0 siblings, 1 reply; 15+ messages in thread
From: stev391 @ 2008-05-14 22:12 UTC (permalink / raw)
  To: scuba sam; +Cc: linux-dvb


[-- Attachment #1.1: Type: text/plain, Size: 10450 bytes --]

 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@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/


[-- Attachment #1.2: Type: text/html, Size: 12735 bytes --]

[-- Attachment #2: Type: text/plain, Size: 150 bytes --]

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

^ permalink raw reply	[flat|nested] 15+ messages in thread
* Re: [linux-dvb] DViCO Fusion HDTV DVB-T Dual Express [PATCH]
@ 2008-05-14  5:54 stev391
  2008-05-17 11:27 ` allan k
  0 siblings, 1 reply; 15+ messages in thread
From: stev391 @ 2008-05-14  5:54 UTC (permalink / raw)
  To: allan k; +Cc: linux-dvb


[-- Attachment #1.1: Type: text/plain, Size: 7728 bytes --]

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/


[-- Attachment #1.2: Type: text/html, Size: 14251 bytes --]

[-- Attachment #2: DViCO_FUSIONHDTV_DVB_T_DUAL_EXP_v2.patch --]
[-- Type: application/octet-stream, Size: 6653 bytes --]

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

[-- Attachment #3: Type: text/plain, Size: 150 bytes --]

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

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2008-05-26  9:52 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-05-20 21:45 [linux-dvb] DViCO Fusion HDTV DVB-T Dual Express [PATCH] stev391
2008-05-20 23:48 ` jochen s
2008-05-23 19:46   ` Hans-Frieder Vogt
2008-05-23 20:36     ` [linux-dvb] NOVA-T500 : mesuring bit rate error ? kafifi
2008-05-23 20:56       ` Nicolas Will
2008-05-23 22:44         ` kafifi
  -- strict thread matches above, loose matches on Subject: below --
2008-05-25 11:28 [linux-dvb] DViCO Fusion HDTV DVB-T Dual Express [PATCH] stev391
2008-05-26  2:20 ` bumkunjo
2008-05-26  9:29   ` Zac Spitzer
2008-05-26  9:52     ` Andrew Herron
2008-05-18  9:45 stev391
2008-05-14 22:12 stev391
2008-05-20 16:10 ` jochen s
2008-05-14  5:54 stev391
2008-05-17 11:27 ` allan k

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox