Skip to content

Commit

Permalink
[PATCH] dvb/4vl: RF input selection fir
Browse files Browse the repository at this point in the history
Select the RF input connector based upon the type of demodulation selected.
 ANT RF connector is selected for 8-VSB and CABLE RF connector is selected
for QAM64/QAM256.  This only affects the cards that use the Microtune 4042
tuner.

Signed-off-by: Mac Michaels <wmichaels1@earthlink.net>
Signed-off-by: Michael Krufky <mkrufky@m1k.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
Michael Krufky authored and Linus Torvalds committed Jul 27, 2005
1 parent b6aef07 commit 0ccef6d
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 2 deletions.
12 changes: 12 additions & 0 deletions drivers/media/dvb/frontends/lgdt3302.c
Original file line number Diff line number Diff line change
Expand Up @@ -214,20 +214,32 @@ static int lgdt3302_set_parameters(struct dvb_frontend* fe,

/* Select VSB mode and serial MPEG interface */
top_ctrl_cfg[1] = 0x07;

/* Select ANT connector if supported by card */
if (state->config->pll_rf_set)
state->config->pll_rf_set(fe, 1);
break;

case QAM_64:
dprintk("%s: QAM_64 MODE\n", __FUNCTION__);

/* Select QAM_64 mode and serial MPEG interface */
top_ctrl_cfg[1] = 0x04;

/* Select CABLE connector if supported by card */
if (state->config->pll_rf_set)
state->config->pll_rf_set(fe, 0);
break;

case QAM_256:
dprintk("%s: QAM_256 MODE\n", __FUNCTION__);

/* Select QAM_256 mode and serial MPEG interface */
top_ctrl_cfg[1] = 0x05;

/* Select CABLE connector if supported by card */
if (state->config->pll_rf_set)
state->config->pll_rf_set(fe, 0);
break;
default:
printk(KERN_WARNING "lgdt3302: %s: Modulation type(%d) UNSUPPORTED\n", __FUNCTION__, param->u.vsb.modulation);
Expand Down
1 change: 1 addition & 0 deletions drivers/media/dvb/frontends/lgdt3302.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ struct lgdt3302_config
u8 demod_address;

/* PLL interface */
int (*pll_rf_set) (struct dvb_frontend* fe, int index);
int (*pll_set)(struct dvb_frontend* fe, struct dvb_frontend_parameters* params, u8* pll_address);

/* Need to set device param for start_dma */
Expand Down
20 changes: 18 additions & 2 deletions drivers/media/video/cx88/cx88-dvb.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* $Id: cx88-dvb.c,v 1.47 2005/07/20 05:20:37 mkrufky Exp $
* $Id: cx88-dvb.c,v 1.48 2005/07/20 05:33:33 mkrufky Exp $
*
* device driver for Conexant 2388x based TV cards
* MPEG Transport Stream (DVB) routines
Expand Down Expand Up @@ -223,6 +223,19 @@ static int lgdt3302_pll_set(struct dvb_frontend* fe,
return 0;
}

static int lgdt3302_pll_rf_set(struct dvb_frontend* fe, int index)
{
struct cx8802_dev *dev= fe->dvb->priv;
struct cx88_core *core = dev->core;

dprintk(1, "%s: index = %d\n", __FUNCTION__, index);
if (index == 0)
cx_clear(MO_GP0_IO, 8);
else
cx_set(MO_GP0_IO, 8);
return 0;
}

static int lgdt3302_set_ts_param(struct dvb_frontend* fe, int is_punctured)
{
struct cx8802_dev *dev= fe->dvb->priv;
Expand Down Expand Up @@ -296,8 +309,11 @@ static int dvb_register(struct cx8802_dev *dev)

cx_clear(MO_GP0_IO, 1);
mdelay(100);
cx_set(MO_GP0_IO, 9); // ANT connector too FIXME
cx_set(MO_GP0_IO, 1);
mdelay(200);

/* Select RF connector callback */
fusionhdtv_3_gold.pll_rf_set = lgdt3302_pll_rf_set;
dev->core->pll_addr = 0x61;
dev->core->pll_desc = &dvb_pll_microtune_4042;
dev->dvb.frontend = lgdt3302_attach(&fusionhdtv_3_gold,
Expand Down

0 comments on commit 0ccef6d

Please sign in to comment.