Commit df61f828 authored by Daniel Scheller's avatar Daniel Scheller Committed by Mauro Carvalho Chehab

[media] dvb-frontends/cxd2841er: improved snr reporting

On DVB-T/T2 at least, SNR might be reported as >2500dB, which not only is
just wrong but also ridiculous, so fix this by improving the conversion
of the register value.

The INTLOG10X100 function/macro and the way the values are converted were
both taken from DD's cxd2843 driver.
Signed-off-by: default avatarDaniel Scheller <d.scheller@gmx.net>
Acked-by: default avatarAbylay Ospan <aospan@netup.ru>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent bf51bbb0
...@@ -38,6 +38,8 @@ ...@@ -38,6 +38,8 @@
#define MAX_WRITE_REGSIZE 16 #define MAX_WRITE_REGSIZE 16
#define LOG2_E_100X 144 #define LOG2_E_100X 144
#define INTLOG10X100(x) ((u32) (((u64) intlog10(x) * 100) >> 24))
/* DVB-C constellation */ /* DVB-C constellation */
enum sony_dvbc_constellation_t { enum sony_dvbc_constellation_t {
SONY_DVBC_CONSTELLATION_16QAM, SONY_DVBC_CONSTELLATION_16QAM,
...@@ -1817,7 +1819,7 @@ static int cxd2841er_read_snr_t(struct cxd2841er_priv *priv, u32 *snr) ...@@ -1817,7 +1819,7 @@ static int cxd2841er_read_snr_t(struct cxd2841er_priv *priv, u32 *snr)
} }
if (reg > 4996) if (reg > 4996)
reg = 4996; reg = 4996;
*snr = 10000 * ((intlog10(reg) - intlog10(5350 - reg)) >> 24) + 28500; *snr = 100 * ((INTLOG10X100(reg) - INTLOG10X100(5350 - reg)) + 285);
return 0; return 0;
} }
...@@ -1846,8 +1848,7 @@ static int cxd2841er_read_snr_t2(struct cxd2841er_priv *priv, u32 *snr) ...@@ -1846,8 +1848,7 @@ static int cxd2841er_read_snr_t2(struct cxd2841er_priv *priv, u32 *snr)
} }
if (reg > 10876) if (reg > 10876)
reg = 10876; reg = 10876;
*snr = 10000 * ((intlog10(reg) - *snr = 100 * ((INTLOG10X100(reg) - INTLOG10X100(12600 - reg)) + 320);
intlog10(12600 - reg)) >> 24) + 32000;
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment