aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb
diff options
context:
space:
mode:
authorAbylay Ospan <aospan@netup.ru>2009-10-17 07:23:00 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2009-12-05 15:41:23 -0500
commit873688cd30294412e185ba39f8487e3eed0f692d (patch)
tree118cfaef5829cb8ace6de57d2d51f0f87243afca /drivers/media/dvb
parentadcd8de6de36f67241a5c3562f2ef1d5998b30a9 (diff)
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>
Diffstat (limited to 'drivers/media/dvb')
-rw-r--r--drivers/media/dvb/frontends/stv6110.c13
-rw-r--r--drivers/media/dvb/frontends/stv6110.h1
2 files changed, 5 insertions, 9 deletions
diff --git a/drivers/media/dvb/frontends/stv6110.c b/drivers/media/dvb/frontends/stv6110.c
index dcf1b21ea974..bef0cc838471 100644
--- a/drivers/media/dvb/frontends/stv6110.c
+++ b/drivers/media/dvb/frontends/stv6110.c
@@ -37,6 +37,7 @@ struct stv6110_priv {
37 37
38 u32 mclk; 38 u32 mclk;
39 u8 clk_div; 39 u8 clk_div;
40 u8 gain;
40 u8 regs[8]; 41 u8 regs[8];
41}; 42};
42 43
@@ -255,7 +256,7 @@ static int stv6110_set_frequency(struct dvb_frontend *fe, u32 frequency)
255 u8 ret = 0x04; 256 u8 ret = 0x04;
256 u32 divider, ref, p, presc, i, result_freq, vco_freq; 257 u32 divider, ref, p, presc, i, result_freq, vco_freq;
257 s32 p_calc, p_calc_opt = 1000, r_div, r_div_opt = 0, p_val; 258 s32 p_calc, p_calc_opt = 1000, r_div, r_div_opt = 0, p_val;
258 s32 srate; u8 gain; 259 s32 srate;
259 260
260 dprintk("%s, freq=%d kHz, mclk=%d Hz\n", __func__, 261 dprintk("%s, freq=%d kHz, mclk=%d Hz\n", __func__,
261 frequency, priv->mclk); 262 frequency, priv->mclk);
@@ -273,15 +274,8 @@ static int stv6110_set_frequency(struct dvb_frontend *fe, u32 frequency)
273 } else 274 } else
274 srate = 15000000; 275 srate = 15000000;
275 276
276 if (srate >= 15000000)
277 gain = 3; /* +6 dB */
278 else if (srate >= 5000000)
279 gain = 3; /* +6 dB */
280 else
281 gain = 3; /* +6 dB */
282
283 priv->regs[RSTV6110_CTRL2] &= ~0x0f; 277 priv->regs[RSTV6110_CTRL2] &= ~0x0f;
284 priv->regs[RSTV6110_CTRL2] |= (gain & 0x0f); 278 priv->regs[RSTV6110_CTRL2] |= (priv->gain & 0x0f);
285 279
286 if (frequency <= 1023000) { 280 if (frequency <= 1023000) {
287 p = 1; 281 p = 1;
@@ -436,6 +430,7 @@ struct dvb_frontend *stv6110_attach(struct dvb_frontend *fe,
436 priv->i2c = i2c; 430 priv->i2c = i2c;
437 priv->mclk = config->mclk; 431 priv->mclk = config->mclk;
438 priv->clk_div = config->clk_div; 432 priv->clk_div = config->clk_div;
433 priv->gain = config->gain;
439 434
440 memcpy(&priv->regs, &reg0[1], 8); 435 memcpy(&priv->regs, &reg0[1], 8);
441 436
diff --git a/drivers/media/dvb/frontends/stv6110.h b/drivers/media/dvb/frontends/stv6110.h
index 9db2402410f6..fe71bba6a26e 100644
--- a/drivers/media/dvb/frontends/stv6110.h
+++ b/drivers/media/dvb/frontends/stv6110.h
@@ -41,6 +41,7 @@
41struct stv6110_config { 41struct stv6110_config {
42 u8 i2c_address; 42 u8 i2c_address;
43 u32 mclk; 43 u32 mclk;
44 u8 gain;
44 u8 clk_div; /* divisor value for the output clock */ 45 u8 clk_div; /* divisor value for the output clock */
45}; 46};
46 47