Commit 873688cd authored by Abylay Ospan's avatar Abylay Ospan Committed by Mauro Carvalho Chehab

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

It has positive effect for NetUP Dual DVB-S2 CI card.
Signed-off-by: default avatarAbylay Ospan <aospan@netup.ru>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent adcd8de6
...@@ -37,6 +37,7 @@ struct stv6110_priv { ...@@ -37,6 +37,7 @@ struct stv6110_priv {
u32 mclk; u32 mclk;
u8 clk_div; u8 clk_div;
u8 gain;
u8 regs[8]; u8 regs[8];
}; };
...@@ -255,7 +256,7 @@ static int stv6110_set_frequency(struct dvb_frontend *fe, u32 frequency) ...@@ -255,7 +256,7 @@ static int stv6110_set_frequency(struct dvb_frontend *fe, u32 frequency)
u8 ret = 0x04; u8 ret = 0x04;
u32 divider, ref, p, presc, i, result_freq, vco_freq; 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 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__, dprintk("%s, freq=%d kHz, mclk=%d Hz\n", __func__,
frequency, priv->mclk); frequency, priv->mclk);
...@@ -273,15 +274,8 @@ static int stv6110_set_frequency(struct dvb_frontend *fe, u32 frequency) ...@@ -273,15 +274,8 @@ static int stv6110_set_frequency(struct dvb_frontend *fe, u32 frequency)
} else } else
srate = 15000000; 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] &= ~0x0f;
priv->regs[RSTV6110_CTRL2] |= (gain & 0x0f); priv->regs[RSTV6110_CTRL2] |= (priv->gain & 0x0f);
if (frequency <= 1023000) { if (frequency <= 1023000) {
p = 1; p = 1;
...@@ -436,6 +430,7 @@ struct dvb_frontend *stv6110_attach(struct dvb_frontend *fe, ...@@ -436,6 +430,7 @@ struct dvb_frontend *stv6110_attach(struct dvb_frontend *fe,
priv->i2c = i2c; priv->i2c = i2c;
priv->mclk = config->mclk; priv->mclk = config->mclk;
priv->clk_div = config->clk_div; priv->clk_div = config->clk_div;
priv->gain = config->gain;
memcpy(&priv->regs, &reg0[1], 8); memcpy(&priv->regs, &reg0[1], 8);
......
...@@ -41,6 +41,7 @@ ...@@ -41,6 +41,7 @@
struct stv6110_config { struct stv6110_config {
u8 i2c_address; u8 i2c_address;
u32 mclk; u32 mclk;
u8 gain;
u8 clk_div; /* divisor value for the output clock */ u8 clk_div; /* divisor value for the output clock */
}; };
......
...@@ -414,12 +414,14 @@ static struct stv6110_config netup_stv6110_tunerconfig_a = { ...@@ -414,12 +414,14 @@ static struct stv6110_config netup_stv6110_tunerconfig_a = {
.i2c_address = 0x60, .i2c_address = 0x60,
.mclk = 16000000, .mclk = 16000000,
.clk_div = 1, .clk_div = 1,
.gain = 8, /* +16 dB - maximum gain */
}; };
static struct stv6110_config netup_stv6110_tunerconfig_b = { static struct stv6110_config netup_stv6110_tunerconfig_b = {
.i2c_address = 0x63, .i2c_address = 0x63,
.mclk = 16000000, .mclk = 16000000,
.clk_div = 1, .clk_div = 1,
.gain = 8, /* +16 dB - maximum gain */
}; };
static int tbs_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage) static int tbs_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment