[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