diff options
-rw-r--r-- | drivers/media/dvb-frontends/cxd2841er.c | 17 |
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: |