Skip to content

Commit

Permalink
[media] drxk: Fix bogus signal strength indicator
Browse files Browse the repository at this point in the history
The DVBv3 signal strength indicator is bogus: it doesn't range
from 0 to 65535 as it would be expected. Also, 0 means the max
signal strength.
Now that a better way to estimate it was added, use the new
way.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
  • Loading branch information
Mauro Carvalho Chehab committed Mar 21, 2013
1 parent 59a7a23 commit 340e769
Showing 1 changed file with 3 additions and 30 deletions.
33 changes: 3 additions & 30 deletions drivers/media/dvb-frontends/drxk_hard.c
Original file line number Diff line number Diff line change
Expand Up @@ -2490,32 +2490,6 @@ static int SetAgcIf(struct drxk_state *state,
return status;
}

static int ReadIFAgc(struct drxk_state *state, u32 *pValue)
{
u16 agcDacLvl;
int status;
u16 Level = 0;

dprintk(1, "\n");

status = read16(state, IQM_AF_AGC_IF__A, &agcDacLvl);
if (status < 0) {
printk(KERN_ERR "drxk: Error %d on %s\n", status, __func__);
return status;
}

*pValue = 0;

if (agcDacLvl > DRXK_AGC_DAC_OFFSET)
Level = agcDacLvl - DRXK_AGC_DAC_OFFSET;
if (Level < 14000)
*pValue = (14000 - Level) / 4;
else
*pValue = 0;

return status;
}

static int GetQAMSignalToNoise(struct drxk_state *state,
s32 *pSignalToNoise)
{
Expand Down Expand Up @@ -6484,7 +6458,7 @@ static int get_strength(struct drxk_state *state, u64 *strength)
* If it can't be measured (AGC is disabled), just show 100%.
*/
if (totalGain > 0)
*strength = (65535UL * atten / totalGain);
*strength = (65535UL * atten / totalGain / 100);
else
*strength = 65535;

Expand Down Expand Up @@ -6633,7 +6607,7 @@ static int drxk_read_signal_strength(struct dvb_frontend *fe,
u16 *strength)
{
struct drxk_state *state = fe->demodulator_priv;
u32 val = 0;
struct dtv_frontend_properties *c = &fe->dtv_property_cache;

dprintk(1, "\n");

Expand All @@ -6642,8 +6616,7 @@ static int drxk_read_signal_strength(struct dvb_frontend *fe,
if (state->m_DrxkState == DRXK_UNINITIALIZED)
return -EAGAIN;

ReadIFAgc(state, &val);
*strength = val & 0xffff;
*strength = c->strength.stat[0].uvalue;
return 0;
}

Expand Down

0 comments on commit 340e769

Please sign in to comment.