[linux-dvb] DViCO FusionHDTV DVB-T Dual Express2

Nicholas Leahy silvercordiagsr at hotmail.com
Wed Apr 27 03:13:00 CEST 2011


I’m trying to get the DViCO FusionHDTV DVB-T
Dual Express2 http://linuxtv.org/wiki/index.php/DViCO_FusionHDTV_DVB-T_Dual_Express2 to work with v4l

I found what looks like most of the relevant
information in dib0700_devices.c at line /*DIB7070 generic*/ however im not
sure about the "dib7070p_tuner_attach" and
"dib7070_set_param_override" configs as they refer to a usb adaptor
dib0700

 

I have modified the following
modules to load the card cx23885.h, cx23885-dvb.c & cx23885-cards.c

 

nicholas at Trial-Backend:~$
dmesg | grep -i dib

[   30.930887] DiB0070: successfully
identified

[   30.930903] DVB: registering adapter 0
frontend 0 (DiBcom 7000PC)...

[   31.420874] DiB0070: successfully
identified

[   31.420890] DVB: registering adapter 1
frontend 0 (DiBcom 7000PC)...

nicholas at Trial-Backend:~$ dmesg | grep -i cx

[   29.869405] cx23885 driver version
0.0.2 loaded

[   29.881296] cx23885 0000:03:00.0: PCI
INT A -> Link[AE2A] -> GSI 16 (level, low) -> IRQ 16

[   29.881552] CORE cx23885[0]:
subsystem: 18ac:db98, board: DViCO FusionHDTV DVB-T Dual Express Rev2
[card=29,autodetected]

[   30.460772] ir-kbd-i2c: i2c IR
(FusionHDTV) detected at i2c-3/3-006b/ir0 [cx23885[0]]

[   30.462879] cx23885_dvb_register()
allocating 1 frontend(s)

[   30.462886] cx23885[0]: cx23885 based
dvb card

[   30.930896] DVB: registering new
adapter (cx23885[0])

[   30.932021] cx23885_dvb_register()
allocating 1 frontend(s)

[   30.932028] cx23885[0]: cx23885 based
dvb card

[   31.420885] DVB: registering new
adapter (cx23885[0])

[   31.421369]
cx23885_dev_checkrevision() Hardware revision = 0xa5

[   31.421379] cx23885[0]/0: found at
0000:03:00.0, rev: 4, irq: 16, latency: 0, mmio: 0xfc000000

[   31.421386] cx23885 0000:03:00.0:
setting latency timer to 64



nicholas at Trial-Backend:~$ lspci



3:00.0 Multimedia video controller [0400]: Conexant Systems, Inc. CX23885 PCI
Video and Audio Decoder [14f1:8852] (rev 04)

                Subsystem: DViCO
Corporation Device [18ac:db98]

                Flags: bus master, fast
devsel, latency 0, IRQ 16

                Memory at fc000000
(64-bit, non-prefetchable) [size=2M]

                Capabilities: <access
denied>

                Kernel driver in use:
cx23885

                Kernel modules: cx23885



nicholas at Trial-Backend:~$ scan -c -a 0 -f 0 -d 0 -l 45000000,800000000

using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'

WARNING: filter timeout pid 0x0011

WARNING: filter timeout pid 0x0000

dumping lists (0 services)

Done.

 

 

 

--- cx23885.h          2011-04-06 00:21:42.000000000 +1000

+++ newcx23885.h 2011-04-06 09:38:48.000000000 +1000

@@ -85,6 +85,7 @@

 #define CX23885_BOARD_HAUPPAUGE_HVR1290        26

 #define CX23885_BOARD_MYGICA_X8558PRO          27

 #define CX23885_BOARD_LEADTEK_WINFAST_PXTV1200
28

+#define
CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP2 29

 

 #define GPIO_0 0x00000001

 #define GPIO_1 0x00000002

 

 

--- cx23885-cards.c               2011-04-06 00:21:42.000000000
+1000

+++ newcx23885-cards.c      2011-04-06 09:43:44.000000000 +1000

@@ -300,6 +300,11 @@

                                                                  CX25840_COMPONENT_ON,

                                }
},

                },

+              [CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP2]
= {

+                              .name                      = "DViCO FusionHDTV
DVB-T Dual Express Rev2",

+                              .portb                      = CX23885_MPEG_DVB,

+                              .portc                      = CX23885_MPEG_DVB,

+              },

 };

 const unsigned int cx23885_bcount =
ARRAY_SIZE(cx23885_boards);

 

@@ -447,6 +452,10 @@

                                .subvendor
= 0x107d,

                                .subdevice
= 0x6f22,

                                .card      = CX23885_BOARD_LEADTEK_WINFAST_PXTV1200,

+              },
{

+                              .subvendor
= 0x18ac,

+                              .subdevice
= 0xdb98,

+                              .card
     =
CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP2,

                },

 };

 const unsigned int cx23885_idcount =
ARRAY_SIZE(cx23885_subids);

@@ -653,6 +662,7 @@

                                break;

                case
CX23885_BOARD_DVICO_FUSIONHDTV_7_DUAL_EXP:

                case
CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP:

+              case
CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP2:

                                /*
Two identical tuners on two different i2c buses,

                                 * we need to reset the correct gpio. */

                                if
(port->nr == 1)

@@ -784,6 +794,7 @@

                                mdelay(20);

                                cx_set(GP0_IO,
0x000f000f);

                                break;

+              case
CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP2:

                case
CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP:

                                /*
GPIO-0 portb xc3028 reset */

                                /*
GPIO-1 portb zl10353 reset */

@@ -942,6 +953,7 @@

                                dev->sd_ir
= cx23885_find_hw(dev, CX23885_HW_888_IR);

                                dev->pci_irqmask
|= PCI_MSK_IR;

                                break;

+              case
CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP2:

                case
CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP:

                                request_module("ir-kbd-i2c");

                                break;

@@ -1011,6 +1023,7 @@

                }

 

                switch
(dev->board) {

+              case
CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP2:

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

 

--- cx23885-dvb.c  2011-04-06 00:21:42.000000000 +1000

+++ newcx23885-dvb.c         2011-04-20 22:35:32.000000000 +1000

@@ -45,6 +45,7 @@

 #include "tuner-simple.h"

 #include "dib7000p.h"

 #include "dibx000_common.h"

+#include "dib0070.h"

 #include "zl10353.h"

 #include "stv0900.h"

 #include "stv0900_reg.h"

@@ -77,6 +78,94 @@

 

 /*
------------------------------------------------------------------ */

 

+static struct dibx000_agc_config
dib7070_agc_config = {

+              BAND_UHF
| BAND_VHF | BAND_LBAND | BAND_SBAND,

+              /*
P_agc_use_sd_mod1=0, P_agc_use_sd_mod2=0, P_agc_freq_pwm_div=5, P_agc_inv_pwm1=0,
P_agc_inv_pwm2=0,

+              
* P_agc_inh_dc_rv_est=0, P_agc_time_est=3, P_agc_freeze=0, P_agc_nb_est=5,
P_agc_write=0 */

+              (0
<< 15) | (0 << 14) | (5 << 11) | (0 << 10) | (0
<< 9) | (0 << 8)

+              |
(3 << 5) | (0 << 4) | (5 << 1) | (0 << 0),

+

+              600,

+              10,

+

+              0,

+              118,

+

+              0,

+              3530,

+              1,

+              5,

+

+              65535,

+              0,

+

+              65535,

+              0,

+

+              0,

+              40,

+              183,

+              206,

+              255,

+              72,

+              152,

+              88,

+              90,

+

+              17,

+              27,

+              23,

+              51,

+

+              0,

+};

+

+static int
dib7070_tuner_reset(struct dvb_frontend *fe, int onoff)

+{

+              return
dib7000p_set_gpio(fe, 8, 0, !onoff);

+}

+

+static int
dib7070_tuner_sleep(struct dvb_frontend *fe, int onoff)

+{

+              return
0;

+}

+

+static struct dib0070_config
dib7070p_dib0070_config ={

+              

+                              .i2c_address
= DEFAULT_DIB0070_I2C_ADDRESS,

+                              .reset
= dib7070_tuner_reset,

+                              .sleep
= dib7070_tuner_sleep,

+                              .clock_khz
= 12000,

+              

+};

+

+static struct
dibx000_bandwidth_config dib7070_bw_config_12_mhz = {

+              60000,
15000,

+              1,
20, 3, 1, 0,

+              0,
0, 1, 1, 2,

+              (3
<< 14) | (1 << 12) | (524 << 0),

+              (0
<< 25) | 0,

+              20452225,

+              12000000,

+};

+

+static struct dib7000p_config
dib7070p_dib7000p_config = {

+              .output_mpeg2_in_188_bytes
= 1,

+

+              .agc_config_count
= 1,

+              .agc
= &dib7070_agc_config,

+              .bw  = &dib7070_bw_config_12_mhz,

+              .tuner_is_baseband
= 1,

+              .spur_protect
= 1,

+

+              .gpio_dir
= 0xfcef,

+              .gpio_val
= 0x0110,

+              .gpio_pwm_pos
= DIB7000P_GPIO_DEFAULT_PWM_POS,

+

+              .hostbus_diversity
= 1,

+              .output_mode
= OUTMODE_MPEG2_PAR_GATED_CLK,

+};

+

 static int dvb_buf_setup(struct videobuf_queue
*q,

                                                 unsigned int *count, unsigned int *size)

 {

@@ -760,6 +849,17 @@

                                                                fe->ops.tuner_ops.set_config(fe,
&ctl);

                                }

                                break;

+              case
CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP2:

+                              i2c_bus
= &dev->i2c_bus[port->nr - 1];

+                              fe0->dvb.frontend
= dvb_attach(dib7000p_attach,

+                                              &i2c_bus->i2c_adap,

+                                              0x12,
&dib7070p_dib7000p_config);

+

+                              if
(fe0->dvb.frontend != NULL)              

+                                              dvb_attach(dib0070_attach,
fe0->dvb.frontend,

+                                              &i2c_bus->i2c_adap,

+                                              &dib7070p_dib0070_config);

+                              break;

                case
CX23885_BOARD_DVICO_FUSIONHDTV_7_DUAL_EXP:

                                i2c_bus
= &dev->i2c_bus[port->nr - 1];

  		 	   		  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.linuxtv.org/pipermail/linux-dvb/attachments/20110427/ac4ce959/attachment.htm>


More information about the linux-dvb mailing list