aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/media/dvb-frontends/cxd2841er.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/drivers/media/dvb-frontends/cxd2841er.c b/drivers/media/dvb-frontends/cxd2841er.c
index 95d82c4445e2..2476d356069c 100644
--- a/drivers/media/dvb-frontends/cxd2841er.c
+++ b/drivers/media/dvb-frontends/cxd2841er.c
@@ -1746,7 +1746,7 @@ static void cxd2841er_read_signal_strength(struct dvb_frontend *fe)
1746{ 1746{
1747 struct dtv_frontend_properties *p = &fe->dtv_property_cache; 1747 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
1748 struct cxd2841er_priv *priv = fe->demodulator_priv; 1748 struct cxd2841er_priv *priv = fe->demodulator_priv;
1749 u32 strength; 1749 s32 strength;
1750 1750
1751 dev_dbg(&priv->i2c->dev, "%s()\n", __func__); 1751 dev_dbg(&priv->i2c->dev, "%s()\n", __func__);
1752 switch (p->delivery_system) { 1752 switch (p->delivery_system) {
@@ -1763,7 +1763,7 @@ static void cxd2841er_read_signal_strength(struct dvb_frontend *fe)
1763 p->delivery_system); 1763 p->delivery_system);
1764 p->strength.stat[0].scale = FE_SCALE_DECIBEL; 1764 p->strength.stat[0].scale = FE_SCALE_DECIBEL;
1765 /* Formula was empirically determinated @ 410 MHz */ 1765 /* Formula was empirically determinated @ 410 MHz */
1766 p->strength.stat[0].uvalue = ((s32)strength) * 366 / 100 - 89520; 1766 p->strength.stat[0].uvalue = strength * 366 / 100 - 89520;
1767 break; /* Code moved out of the function */ 1767 break; /* Code moved out of the function */
1768 case SYS_DVBC_ANNEX_A: 1768 case SYS_DVBC_ANNEX_A:
1769 strength = cxd2841er_read_agc_gain_t_t2(priv, 1769 strength = cxd2841er_read_agc_gain_t_t2(priv,
@@ -1774,13 +1774,16 @@ static void cxd2841er_read_signal_strength(struct dvb_frontend *fe)
1774 * using frequencies: 175 MHz, 410 MHz and 800 MHz, and a 1774 * using frequencies: 175 MHz, 410 MHz and 800 MHz, and a
1775 * stream modulated with QAM64 1775 * stream modulated with QAM64
1776 */ 1776 */
1777 p->strength.stat[0].uvalue = ((s32)strength) * 4045 / 1000 - 85224; 1777 p->strength.stat[0].uvalue = strength * 4045 / 1000 - 85224;
1778 break; 1778 break;
1779 case SYS_ISDBT: 1779 case SYS_ISDBT:
1780 strength = 65535 - cxd2841er_read_agc_gain_i( 1780 strength = cxd2841er_read_agc_gain_i(priv, p->delivery_system);
1781 priv, p->delivery_system); 1781 p->strength.stat[0].scale = FE_SCALE_DECIBEL;
1782 p->strength.stat[0].scale = FE_SCALE_RELATIVE; 1782 /*
1783 p->strength.stat[0].uvalue = strength; 1783 * Formula was empirically determinated via linear regression,
1784 * using frequencies: 175 MHz, 410 MHz and 800 MHz.
1785 */
1786 p->strength.stat[0].uvalue = strength * 3775 / 1000 - 90185;
1784 break; 1787 break;
1785 case SYS_DVBS: 1788 case SYS_DVBS:
1786 case SYS_DVBS2: 1789 case SYS_DVBS2: