V4L/DVB (13334): stv6110: add configurable gain

It has positive effect for NetUP Dual DVB-S2 CI card.

Signed-off-by: Abylay Ospan <aospan@netup.ru>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
Abylay Ospan 2009-10-17 08:23:00 -03:00 committed by Mauro Carvalho Chehab
parent adcd8de6de
commit 873688cd30
3 changed files with 7 additions and 9 deletions

View file

@ -37,6 +37,7 @@ struct stv6110_priv {
u32 mclk;
u8 clk_div;
u8 gain;
u8 regs[8];
};
@ -255,7 +256,7 @@ static int stv6110_set_frequency(struct dvb_frontend *fe, u32 frequency)
u8 ret = 0x04;
u32 divider, ref, p, presc, i, result_freq, vco_freq;
s32 p_calc, p_calc_opt = 1000, r_div, r_div_opt = 0, p_val;
s32 srate; u8 gain;
s32 srate;
dprintk("%s, freq=%d kHz, mclk=%d Hz\n", __func__,
frequency, priv->mclk);
@ -273,15 +274,8 @@ static int stv6110_set_frequency(struct dvb_frontend *fe, u32 frequency)
} else
srate = 15000000;
if (srate >= 15000000)
gain = 3; /* +6 dB */
else if (srate >= 5000000)
gain = 3; /* +6 dB */
else
gain = 3; /* +6 dB */
priv->regs[RSTV6110_CTRL2] &= ~0x0f;
priv->regs[RSTV6110_CTRL2] |= (gain & 0x0f);
priv->regs[RSTV6110_CTRL2] |= (priv->gain & 0x0f);
if (frequency <= 1023000) {
p = 1;
@ -436,6 +430,7 @@ struct dvb_frontend *stv6110_attach(struct dvb_frontend *fe,
priv->i2c = i2c;
priv->mclk = config->mclk;
priv->clk_div = config->clk_div;
priv->gain = config->gain;
memcpy(&priv->regs, &reg0[1], 8);

View file

@ -41,6 +41,7 @@
struct stv6110_config {
u8 i2c_address;
u32 mclk;
u8 gain;
u8 clk_div; /* divisor value for the output clock */
};

View file

@ -414,12 +414,14 @@ static struct stv6110_config netup_stv6110_tunerconfig_a = {
.i2c_address = 0x60,
.mclk = 16000000,
.clk_div = 1,
.gain = 8, /* +16 dB - maximum gain */
};
static struct stv6110_config netup_stv6110_tunerconfig_b = {
.i2c_address = 0x63,
.mclk = 16000000,
.clk_div = 1,
.gain = 8, /* +16 dB - maximum gain */
};
static int tbs_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage)