提交 f1798495 编写于 作者: M Michael Krufky 提交者: Linus Torvalds

[PATCH] v4l: add DVB support for DViCO FusionHDTV3 Gold-Q

Add dvb support in v4l for DViCO FusionHDTV3 Gold-Q using lgdt3302 frontend.
Signed-off-by: NMac Michaels <wmichaels1@earthlink.net>
Signed-off-by: NMichael Krufky <mkrufky@m1k.net>
Signed-off-by: NAndrew Morton <akpm@osdl.org>
Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
上级 9ac4c158
......@@ -485,6 +485,7 @@ struct cx88_board cx88_boards[] = {
.vmux = 2,
.gpio0 = 0x0f00,
}},
.dvb = 1,
},
[CX88_BOARD_HAUPPAUGE_DVB_T1] = {
.name = "Hauppauge Nova-T DVB-T",
......
/*
* $Id: cx88-dvb.c,v 1.36 2005/06/21 06:08:12 mkrufky Exp $
* $Id: cx88-dvb.c,v 1.37 2005/06/28 23:41:47 mkrufky Exp $
*
* device driver for Conexant 2388x based TV cards
* MPEG Transport Stream (DVB) routines
......@@ -30,9 +30,10 @@
#include <linux/file.h>
#include <linux/suspend.h>
/* those two frontends need merging via linuxtv cvs ... */
/* these three frontends need merging via linuxtv cvs ... */
#define HAVE_CX22702 1
#define HAVE_OR51132 1
#define HAVE_LGDT3302 1
#include "cx88.h"
#include "dvb-pll.h"
......@@ -44,6 +45,9 @@
#if HAVE_OR51132
# include "or51132.h"
#endif
#if HAVE_LGDT3302
# include "lgdt3302.h"
#endif
MODULE_DESCRIPTION("driver for cx2388x based DVB cards");
MODULE_AUTHOR("Chris Pascoe <c.pascoe@itee.uq.edu.au>");
......@@ -199,6 +203,25 @@ static struct or51132_config pchdtv_hd3000 = {
};
#endif
#if HAVE_LGDT3302
static int lgdt3302_set_ts_param(struct dvb_frontend* fe, int is_punctured)
{
struct cx8802_dev *dev= fe->dvb->priv;
if (is_punctured)
dev->ts_gen_cntrl |= 0x04;
else
dev->ts_gen_cntrl &= ~0x04;
return 0;
}
static struct lgdt3302_config fusionhdtv_3_gold_q = {
.demod_address = 0x0e,
.pll_address = 0x61,
.pll_desc = &dvb_pll_microtune_4042,
.set_ts_params = lgdt3302_set_ts_param,
};
#endif
static int dvb_register(struct cx8802_dev *dev)
{
/* init struct videobuf_dvb */
......@@ -242,6 +265,22 @@ static int dvb_register(struct cx8802_dev *dev)
dev->dvb.frontend = or51132_attach(&pchdtv_hd3000,
&dev->core->i2c_adap);
break;
#endif
#if HAVE_LGDT3302
case CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_Q:
dev->ts_gen_cntrl = 0x08;
{
/* Do a hardware reset of chip before using it. */
struct cx88_core *core = dev->core;
cx_clear(MO_GP0_IO, 1);
mdelay(100);
cx_set(MO_GP0_IO, 9); // ANT connector too FIXME
mdelay(200);
dev->dvb.frontend = lgdt3302_attach(&fusionhdtv_3_gold_q,
&dev->core->i2c_adap);
}
break;
#endif
default:
printk("%s: The frontend of your DVB/ATSC card isn't supported yet\n",
......
/*
$Id: cx88-i2c.c,v 1.23 2005/06/12 04:19:19 mchehab Exp $
$Id: cx88-i2c.c,v 1.24 2005/06/17 18:46:23 mkrufky Exp $
cx88-i2c.c -- all the i2c code is here
......@@ -157,6 +157,7 @@ static struct i2c_client cx8800_i2c_client_template = {
};
static char *i2c_devs[128] = {
[ 0x1c >> 1 ] = "lgdt3302",
[ 0x86 >> 1 ] = "tda9887/cx22702",
[ 0xa0 >> 1 ] = "eeprom",
[ 0xc0 >> 1 ] = "tuner (analog)",
......
/*
* $Id: cx88-mpeg.c,v 1.26 2005/06/03 13:31:51 mchehab Exp $
* $Id: cx88-mpeg.c,v 1.28 2005/06/20 03:36:00 mkrufky Exp $
*
* Support for the mpeg transport stream transfers
* PCI function #2 of the cx2388x.
......@@ -70,11 +70,16 @@ static int cx8802_start_dma(struct cx8802_dev *dev,
if (cx88_boards[core->board].dvb) {
/* negedge driven & software reset */
cx_write(TS_GEN_CNTRL, 0x40);
cx_write(TS_GEN_CNTRL, 0x0040 | dev->ts_gen_cntrl);
udelay(100);
cx_write(MO_PINMUX_IO, 0x00);
cx_write(TS_HW_SOP_CNTRL,47<<16|188<<4|0x00);
cx_write(TS_SOP_STAT,0x00);
if (core->board == CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_Q) {
cx_write(TS_HW_SOP_CNTRL,0x47<<16 | 188<<4 | 0x00);
cx_write(TS_SOP_STAT, 0<<16 | 0<<14 | 1<<13 | 0<<12);
} else {
cx_write(TS_HW_SOP_CNTRL,47<<16|188<<4|0x00);
cx_write(TS_SOP_STAT,0x00);
}
cx_write(TS_GEN_CNTRL, dev->ts_gen_cntrl);
udelay(100);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册