diff options
| -rw-r--r-- | drivers/media/video/cx88/cx88-cards.c | 1 | ||||
| -rw-r--r-- | drivers/media/video/cx88/cx88-dvb.c | 43 | ||||
| -rw-r--r-- | drivers/media/video/cx88/cx88-i2c.c | 3 | ||||
| -rw-r--r-- | drivers/media/video/cx88/cx88-mpeg.c | 13 |
4 files changed, 53 insertions, 7 deletions
diff --git a/drivers/media/video/cx88/cx88-cards.c b/drivers/media/video/cx88/cx88-cards.c index f9e4cb196874..75de9cab4dbc 100644 --- a/drivers/media/video/cx88/cx88-cards.c +++ b/drivers/media/video/cx88/cx88-cards.c | |||
| @@ -485,6 +485,7 @@ struct cx88_board cx88_boards[] = { | |||
| 485 | .vmux = 2, | 485 | .vmux = 2, |
| 486 | .gpio0 = 0x0f00, | 486 | .gpio0 = 0x0f00, |
| 487 | }}, | 487 | }}, |
| 488 | .dvb = 1, | ||
| 488 | }, | 489 | }, |
| 489 | [CX88_BOARD_HAUPPAUGE_DVB_T1] = { | 490 | [CX88_BOARD_HAUPPAUGE_DVB_T1] = { |
| 490 | .name = "Hauppauge Nova-T DVB-T", | 491 | .name = "Hauppauge Nova-T DVB-T", |
diff --git a/drivers/media/video/cx88/cx88-dvb.c b/drivers/media/video/cx88/cx88-dvb.c index 82cc1538c105..206c6a0980e4 100644 --- a/drivers/media/video/cx88/cx88-dvb.c +++ b/drivers/media/video/cx88/cx88-dvb.c | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * $Id: cx88-dvb.c,v 1.36 2005/06/21 06:08:12 mkrufky Exp $ | 2 | * $Id: cx88-dvb.c,v 1.37 2005/06/28 23:41:47 mkrufky Exp $ |
| 3 | * | 3 | * |
| 4 | * device driver for Conexant 2388x based TV cards | 4 | * device driver for Conexant 2388x based TV cards |
| 5 | * MPEG Transport Stream (DVB) routines | 5 | * MPEG Transport Stream (DVB) routines |
| @@ -30,9 +30,10 @@ | |||
| 30 | #include <linux/file.h> | 30 | #include <linux/file.h> |
| 31 | #include <linux/suspend.h> | 31 | #include <linux/suspend.h> |
| 32 | 32 | ||
| 33 | /* those two frontends need merging via linuxtv cvs ... */ | 33 | /* these three frontends need merging via linuxtv cvs ... */ |
| 34 | #define HAVE_CX22702 1 | 34 | #define HAVE_CX22702 1 |
| 35 | #define HAVE_OR51132 1 | 35 | #define HAVE_OR51132 1 |
| 36 | #define HAVE_LGDT3302 1 | ||
| 36 | 37 | ||
| 37 | #include "cx88.h" | 38 | #include "cx88.h" |
| 38 | #include "dvb-pll.h" | 39 | #include "dvb-pll.h" |
| @@ -44,6 +45,9 @@ | |||
| 44 | #if HAVE_OR51132 | 45 | #if HAVE_OR51132 |
| 45 | # include "or51132.h" | 46 | # include "or51132.h" |
| 46 | #endif | 47 | #endif |
| 48 | #if HAVE_LGDT3302 | ||
| 49 | # include "lgdt3302.h" | ||
| 50 | #endif | ||
| 47 | 51 | ||
| 48 | MODULE_DESCRIPTION("driver for cx2388x based DVB cards"); | 52 | MODULE_DESCRIPTION("driver for cx2388x based DVB cards"); |
| 49 | MODULE_AUTHOR("Chris Pascoe <c.pascoe@itee.uq.edu.au>"); | 53 | MODULE_AUTHOR("Chris Pascoe <c.pascoe@itee.uq.edu.au>"); |
| @@ -199,6 +203,25 @@ static struct or51132_config pchdtv_hd3000 = { | |||
| 199 | }; | 203 | }; |
| 200 | #endif | 204 | #endif |
| 201 | 205 | ||
| 206 | #if HAVE_LGDT3302 | ||
| 207 | static int lgdt3302_set_ts_param(struct dvb_frontend* fe, int is_punctured) | ||
| 208 | { | ||
| 209 | struct cx8802_dev *dev= fe->dvb->priv; | ||
| 210 | if (is_punctured) | ||
| 211 | dev->ts_gen_cntrl |= 0x04; | ||
| 212 | else | ||
| 213 | dev->ts_gen_cntrl &= ~0x04; | ||
| 214 | return 0; | ||
| 215 | } | ||
| 216 | |||
| 217 | static struct lgdt3302_config fusionhdtv_3_gold_q = { | ||
| 218 | .demod_address = 0x0e, | ||
| 219 | .pll_address = 0x61, | ||
| 220 | .pll_desc = &dvb_pll_microtune_4042, | ||
| 221 | .set_ts_params = lgdt3302_set_ts_param, | ||
| 222 | }; | ||
| 223 | #endif | ||
| 224 | |||
| 202 | static int dvb_register(struct cx8802_dev *dev) | 225 | static int dvb_register(struct cx8802_dev *dev) |
| 203 | { | 226 | { |
| 204 | /* init struct videobuf_dvb */ | 227 | /* init struct videobuf_dvb */ |
| @@ -243,6 +266,22 @@ static int dvb_register(struct cx8802_dev *dev) | |||
| 243 | &dev->core->i2c_adap); | 266 | &dev->core->i2c_adap); |
| 244 | break; | 267 | break; |
| 245 | #endif | 268 | #endif |
| 269 | #if HAVE_LGDT3302 | ||
| 270 | case CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_Q: | ||
| 271 | dev->ts_gen_cntrl = 0x08; | ||
| 272 | { | ||
| 273 | /* Do a hardware reset of chip before using it. */ | ||
| 274 | struct cx88_core *core = dev->core; | ||
| 275 | |||
| 276 | cx_clear(MO_GP0_IO, 1); | ||
| 277 | mdelay(100); | ||
| 278 | cx_set(MO_GP0_IO, 9); // ANT connector too FIXME | ||
| 279 | mdelay(200); | ||
| 280 | dev->dvb.frontend = lgdt3302_attach(&fusionhdtv_3_gold_q, | ||
| 281 | &dev->core->i2c_adap); | ||
| 282 | } | ||
| 283 | break; | ||
| 284 | #endif | ||
| 246 | default: | 285 | default: |
| 247 | printk("%s: The frontend of your DVB/ATSC card isn't supported yet\n", | 286 | printk("%s: The frontend of your DVB/ATSC card isn't supported yet\n", |
| 248 | dev->core->name); | 287 | dev->core->name); |
diff --git a/drivers/media/video/cx88/cx88-i2c.c b/drivers/media/video/cx88/cx88-i2c.c index e20adefcfc6c..b5342234b305 100644 --- a/drivers/media/video/cx88/cx88-i2c.c +++ b/drivers/media/video/cx88/cx88-i2c.c | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | $Id: cx88-i2c.c,v 1.23 2005/06/12 04:19:19 mchehab Exp $ | 2 | $Id: cx88-i2c.c,v 1.24 2005/06/17 18:46:23 mkrufky Exp $ |
| 3 | 3 | ||
| 4 | cx88-i2c.c -- all the i2c code is here | 4 | cx88-i2c.c -- all the i2c code is here |
| 5 | 5 | ||
| @@ -157,6 +157,7 @@ static struct i2c_client cx8800_i2c_client_template = { | |||
| 157 | }; | 157 | }; |
| 158 | 158 | ||
| 159 | static char *i2c_devs[128] = { | 159 | static char *i2c_devs[128] = { |
| 160 | [ 0x1c >> 1 ] = "lgdt3302", | ||
| 160 | [ 0x86 >> 1 ] = "tda9887/cx22702", | 161 | [ 0x86 >> 1 ] = "tda9887/cx22702", |
| 161 | [ 0xa0 >> 1 ] = "eeprom", | 162 | [ 0xa0 >> 1 ] = "eeprom", |
| 162 | [ 0xc0 >> 1 ] = "tuner (analog)", | 163 | [ 0xc0 >> 1 ] = "tuner (analog)", |
diff --git a/drivers/media/video/cx88/cx88-mpeg.c b/drivers/media/video/cx88/cx88-mpeg.c index 9ade2ae91e9b..c5f4c595239d 100644 --- a/drivers/media/video/cx88/cx88-mpeg.c +++ b/drivers/media/video/cx88/cx88-mpeg.c | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * $Id: cx88-mpeg.c,v 1.26 2005/06/03 13:31:51 mchehab Exp $ | 2 | * $Id: cx88-mpeg.c,v 1.28 2005/06/20 03:36:00 mkrufky Exp $ |
| 3 | * | 3 | * |
| 4 | * Support for the mpeg transport stream transfers | 4 | * Support for the mpeg transport stream transfers |
| 5 | * PCI function #2 of the cx2388x. | 5 | * PCI function #2 of the cx2388x. |
| @@ -70,11 +70,16 @@ static int cx8802_start_dma(struct cx8802_dev *dev, | |||
| 70 | 70 | ||
| 71 | if (cx88_boards[core->board].dvb) { | 71 | if (cx88_boards[core->board].dvb) { |
| 72 | /* negedge driven & software reset */ | 72 | /* negedge driven & software reset */ |
| 73 | cx_write(TS_GEN_CNTRL, 0x40); | 73 | cx_write(TS_GEN_CNTRL, 0x0040 | dev->ts_gen_cntrl); |
| 74 | udelay(100); | 74 | udelay(100); |
| 75 | cx_write(MO_PINMUX_IO, 0x00); | 75 | cx_write(MO_PINMUX_IO, 0x00); |
| 76 | cx_write(TS_HW_SOP_CNTRL,47<<16|188<<4|0x00); | 76 | if (core->board == CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_Q) { |
| 77 | cx_write(TS_SOP_STAT,0x00); | 77 | cx_write(TS_HW_SOP_CNTRL,0x47<<16 | 188<<4 | 0x00); |
| 78 | cx_write(TS_SOP_STAT, 0<<16 | 0<<14 | 1<<13 | 0<<12); | ||
| 79 | } else { | ||
| 80 | cx_write(TS_HW_SOP_CNTRL,47<<16|188<<4|0x00); | ||
| 81 | cx_write(TS_SOP_STAT,0x00); | ||
| 82 | } | ||
| 78 | cx_write(TS_GEN_CNTRL, dev->ts_gen_cntrl); | 83 | cx_write(TS_GEN_CNTRL, dev->ts_gen_cntrl); |
| 79 | udelay(100); | 84 | udelay(100); |
| 80 | } | 85 | } |
