Skip to content

Commit

Permalink
[media] stv090x: use lookup tables for carrier/noise ratio
Browse files Browse the repository at this point in the history
The stv090x driver uses the lookup table for signal strength already,
with this patch we use the lookup tables for carrier/noise ratio as well.
This has the advantage, that values for DVB-S and DVB-S2 are now
corresponding, while before they were way off. The values are now
proportional to real carrier/noise ratio, while before they were
corresponding to register values. So now applications are able to give
the user real carrier/noise ratio.

Because the output has to be within 0x0000...0xFFFF the three negative
values for DVB-S2 are omitted. This is no significant loss, because
reception is lost at 7.5 dB already (TT S2-1600, Cine S2), so the
negative values are not really important, and also for DVB-S they don´t
exist.

Signed-off-by: Joerg Riechardt <j.riechardt@gmx.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
  • Loading branch information
Joerg Riechardt authored and Mauro Carvalho Chehab committed Nov 23, 2016
1 parent 8ccd22d commit 3867018
Showing 1 changed file with 10 additions and 6 deletions.
16 changes: 10 additions & 6 deletions drivers/media/dvb-frontends/stv090x.c
Original file line number Diff line number Diff line change
Expand Up @@ -3692,9 +3692,12 @@ static int stv090x_read_cnr(struct dvb_frontend *fe, u16 *cnr)
}
val /= 16;
last = ARRAY_SIZE(stv090x_s2cn_tab) - 1;
div = stv090x_s2cn_tab[0].read -
stv090x_s2cn_tab[last].read;
*cnr = 0xFFFF - ((val * 0xFFFF) / div);
div = stv090x_s2cn_tab[last].real -
stv090x_s2cn_tab[3].real;
val = stv090x_table_lookup(stv090x_s2cn_tab, last, val);
if (val < 0)
val = 0;
*cnr = val * 0xFFFF / div;
}
break;

Expand All @@ -3714,9 +3717,10 @@ static int stv090x_read_cnr(struct dvb_frontend *fe, u16 *cnr)
}
val /= 16;
last = ARRAY_SIZE(stv090x_s1cn_tab) - 1;
div = stv090x_s1cn_tab[0].read -
stv090x_s1cn_tab[last].read;
*cnr = 0xFFFF - ((val * 0xFFFF) / div);
div = stv090x_s1cn_tab[last].real -
stv090x_s1cn_tab[0].real;
val = stv090x_table_lookup(stv090x_s1cn_tab, last, val);
*cnr = val * 0xFFFF / div;
}
break;
default:
Expand Down

0 comments on commit 3867018

Please sign in to comment.