[media] cxd2841er: adjust the dB scale for DVB-C

Instead of using a relative frequency range, calibrate it to
show the results in dB. The callibration was done getting
samples with a signal generated from -50dBm to -12dBm,
incremented in steps of 0.5 dB, using 3 frequencies:
175 MHz, 410 MHz and 800 MHz. The modulated signal was
using QAM64, and it was used a linear interpolation of all
the results.

Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
This commit is contained in:
Mauro Carvalho Chehab 2016-07-01 11:03:16 -03:00
parent 988bd281d3
commit d12b791e3d
1 changed files with 7 additions and 2 deletions

View File

@ -1768,8 +1768,13 @@ static void cxd2841er_read_signal_strength(struct dvb_frontend *fe)
case SYS_DVBC_ANNEX_A:
strength = cxd2841er_read_agc_gain_t_t2(priv,
p->delivery_system);
p->strength.stat[0].scale = FE_SCALE_RELATIVE;
p->strength.stat[0].uvalue = strength;
p->strength.stat[0].scale = FE_SCALE_DECIBEL;
/*
* Formula was empirically determinated via linear regression,
* using frequencies: 175 MHz, 410 MHz and 800 MHz, and a
* stream modulated with QAM64
*/
p->strength.stat[0].uvalue = ((s32)strength) * 4045 / 1000 - 85224;
break;
case SYS_ISDBT:
strength = 65535 - cxd2841er_read_agc_gain_i(