diff options
-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, |