Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 138189
b: refs/heads/master
c: 11a8414
h: refs/heads/master
i:
  138187: 4b47f19
v: v3
  • Loading branch information
Igor M. Liplianin authored and Mauro Carvalho Chehab committed Mar 30, 2009
1 parent 1e73f69 commit 1121fb4
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 14 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: b8ced13462cdb0e407831683b8e2c989b13db3ac
refs/heads/master: 11a84143b27303095b035931350e9233b538c4e3
41 changes: 28 additions & 13 deletions trunk/drivers/media/dvb/frontends/stv0900_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -656,41 +656,53 @@ static s32 stv0900_carr_get_quality(struct dvb_frontend *fe,

dprintk(KERN_INFO "%s\n", __func__);

dmd_reg(lock_flag_field, F0900_P1_LOCK_DEFINITIF, F0900_P2_LOCK_DEFINITIF);
dmd_reg(lock_flag_field, F0900_P1_LOCK_DEFINITIF,
F0900_P2_LOCK_DEFINITIF);
if (stv0900_get_standard(fe, demod) == STV0900_DVBS2_STANDARD) {
dmd_reg(noise_field1, F0900_P1_NOSPLHT_NORMED1, F0900_P2_NOSPLHT_NORMED1);
dmd_reg(noise_field0, F0900_P1_NOSPLHT_NORMED0, F0900_P2_NOSPLHT_NORMED0);
dmd_reg(noise_field1, F0900_P1_NOSPLHT_NORMED1,
F0900_P2_NOSPLHT_NORMED1);
dmd_reg(noise_field0, F0900_P1_NOSPLHT_NORMED0,
F0900_P2_NOSPLHT_NORMED0);
} else {
dmd_reg(noise_field1, F0900_P1_NOSDATAT_NORMED1, F0900_P2_NOSDATAT_NORMED1);
dmd_reg(noise_field0, F0900_P1_NOSDATAT_NORMED0, F0900_P1_NOSDATAT_NORMED0);
dmd_reg(noise_field1, F0900_P1_NOSDATAT_NORMED1,
F0900_P2_NOSDATAT_NORMED1);
dmd_reg(noise_field0, F0900_P1_NOSDATAT_NORMED0,
F0900_P1_NOSDATAT_NORMED0);
}

if (stv0900_get_bits(i_params, lock_flag_field)) {
if ((lookup != NULL) && lookup->size) {
regval = 0;
msleep(5);
for (i = 0; i < 16; i++) {
regval += MAKEWORD(stv0900_get_bits(i_params, noise_field1),
stv0900_get_bits(i_params, noise_field0));
regval += MAKEWORD(stv0900_get_bits(i_params,
noise_field1),
stv0900_get_bits(i_params,
noise_field0));
msleep(1);
}

regval /= 16;
imin = 0;
imax = lookup->size - 1;
if (INRANGE(lookup->table[imin].regval, regval, lookup->table[imax].regval)) {
if (INRANGE(lookup->table[imin].regval,
regval,
lookup->table[imax].regval)) {
while ((imax - imin) > 1) {
i = (imax + imin) >> 1;

if (INRANGE(lookup->table[imin].regval, regval, lookup->table[i].regval))
if (INRANGE(lookup->table[imin].regval,
regval,
lookup->table[i].regval))
imax = i;
else
imin = i;
}

c_n = ((regval - lookup->table[imin].regval)
* (lookup->table[imax].realval - lookup->table[imin].realval)
/ (lookup->table[imax].regval - lookup->table[imin].regval))
* (lookup->table[imax].realval
- lookup->table[imin].realval)
/ (lookup->table[imax].regval
- lookup->table[imin].regval))
+ lookup->table[imin].realval;
} else if (regval < lookup->table[imin].regval)
c_n = 1000;
Expand All @@ -702,7 +714,10 @@ static s32 stv0900_carr_get_quality(struct dvb_frontend *fe,

static int stv0900_read_snr(struct dvb_frontend *fe, u16 *snr)
{
*snr = (16383 / 1030) * (30 + stv0900_carr_get_quality(fe, (const struct stv0900_table *)&stv0900_s2_cn));
*snr = stv0900_carr_get_quality(fe,
(const struct stv0900_table *)&stv0900_s2_cn);
*snr += 30;
*snr *= (16383 / 1030);

return 0;
}
Expand Down

0 comments on commit 1121fb4

Please sign in to comment.