--- stv090x.c.bak 2013-09-06 20:59:01.132365872 +0200 +++ stv090x.c 2013-09-10 03:21:48.884115191 +0200 @@ -173,9 +173,9 @@ /* DVBS2 C/N Lookup table */ static const struct stv090x_tab stv090x_s2cn_tab[] = { - { -30, 13348 }, /* -3.0dB */ - { -20, 12640 }, /* -2d.0B */ - { -10, 11883 }, /* -1.0dB */ +// { -30, 13348 }, /* -3.0dB */ +// { -20, 12640 }, /* -2d.0B */ +// { -10, 11883 }, /* -1.0dB */ { 0, 11101 }, /* -0.0dB */ { 5, 10718 }, /* 0.5dB */ { 10, 10339 }, /* 1.0dB */ @@ -3697,9 +3697,10 @@ } 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[0].real; + val = stv090x_table_lookup(stv090x_s2cn_tab, last, val); + *cnr = val * 0xFFFF / div; } break; @@ -3719,9 +3720,10 @@ } 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: