diff options
author | Abylay Ospan <aospan@netup.ru> | 2016-06-30 22:09:48 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@s-opensource.com> | 2016-07-08 17:55:42 -0400 |
commit | d0998ce76f428bd607ab73c3258eabeb9735820f (patch) | |
tree | 9979a7ef3aa6bb67467fc7c9e43809221c794e3c /drivers/media/dvb-frontends | |
parent | 5fda1b65c2ecb2acaceb4418c16cfd929ac138b3 (diff) |
[media] DVB-C read signal strength added for Sony demod
cxd2841er_read_agc_gain_c added to obtain signal strength.
signal strength now relay on AGC value.
Signed-off-by: Abylay Ospan <aospan@netup.ru>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Diffstat (limited to 'drivers/media/dvb-frontends')
-rw-r--r-- | drivers/media/dvb-frontends/cxd2841er.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/drivers/media/dvb-frontends/cxd2841er.c b/drivers/media/dvb-frontends/cxd2841er.c index c960e8a725cc..0c7d92aee857 100644 --- a/drivers/media/dvb-frontends/cxd2841er.c +++ b/drivers/media/dvb-frontends/cxd2841er.c | |||
@@ -1656,6 +1656,21 @@ static int cxd2841er_read_snr_i(struct cxd2841er_priv *priv, u32 *snr) | |||
1656 | return 0; | 1656 | return 0; |
1657 | } | 1657 | } |
1658 | 1658 | ||
1659 | static u16 cxd2841er_read_agc_gain_c(struct cxd2841er_priv *priv, | ||
1660 | u8 delsys) | ||
1661 | { | ||
1662 | u8 data[2]; | ||
1663 | |||
1664 | cxd2841er_write_reg( | ||
1665 | priv, I2C_SLVT, 0x00, 0x40); | ||
1666 | cxd2841er_read_regs(priv, I2C_SLVT, 0x49, data, 2); | ||
1667 | dev_dbg(&priv->i2c->dev, | ||
1668 | "%s(): AGC value=%u\n", | ||
1669 | __func__, (((u16)data[0] & 0x0F) << 8) | | ||
1670 | (u16)(data[1] & 0xFF)); | ||
1671 | return ((((u16)data[0] & 0x0F) << 8) | (u16)(data[1] & 0xFF)) << 4; | ||
1672 | } | ||
1673 | |||
1659 | static u16 cxd2841er_read_agc_gain_t_t2(struct cxd2841er_priv *priv, | 1674 | static u16 cxd2841er_read_agc_gain_t_t2(struct cxd2841er_priv *priv, |
1660 | u8 delsys) | 1675 | u8 delsys) |
1661 | { | 1676 | { |
@@ -1735,6 +1750,14 @@ static void cxd2841er_read_signal_strength(struct dvb_frontend *fe) | |||
1735 | 1750 | ||
1736 | dev_dbg(&priv->i2c->dev, "%s()\n", __func__); | 1751 | dev_dbg(&priv->i2c->dev, "%s()\n", __func__); |
1737 | switch (p->delivery_system) { | 1752 | switch (p->delivery_system) { |
1753 | case SYS_DVBC_ANNEX_A: | ||
1754 | case SYS_DVBC_ANNEX_B: | ||
1755 | case SYS_DVBC_ANNEX_C: | ||
1756 | strength = 65535 - cxd2841er_read_agc_gain_c( | ||
1757 | priv, p->delivery_system); | ||
1758 | p->strength.stat[0].scale = FE_SCALE_RELATIVE; | ||
1759 | p->strength.stat[0].uvalue = strength; | ||
1760 | break; | ||
1738 | case SYS_DVBT: | 1761 | case SYS_DVBT: |
1739 | case SYS_DVBT2: | 1762 | case SYS_DVBT2: |
1740 | strength = cxd2841er_read_agc_gain_t_t2(priv, | 1763 | strength = cxd2841er_read_agc_gain_t_t2(priv, |