mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-11-01 17:08:10 +00:00
[media] rtl2830: implement .read_signal_strength()
Signed-off-by: Antti Palosaari <crope@iki.fi> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
525ffc19b9
commit
78e750754b
1 changed files with 22 additions and 1 deletions
|
@ -474,8 +474,29 @@ static int rtl2830_read_ucblocks(struct dvb_frontend *fe, u32 *ucblocks)
|
|||
|
||||
static int rtl2830_read_signal_strength(struct dvb_frontend *fe, u16 *strength)
|
||||
{
|
||||
*strength = 0;
|
||||
struct rtl2830_priv *priv = fe->demodulator_priv;
|
||||
int ret;
|
||||
u8 buf[2];
|
||||
u16 if_agc_raw, if_agc;
|
||||
|
||||
ret = rtl2830_rd_regs(priv, 0x359, buf, 2);
|
||||
if (ret)
|
||||
goto err;
|
||||
|
||||
if_agc_raw = (buf[0] << 8 | buf[1]) & 0x3fff;
|
||||
|
||||
if (if_agc_raw & (1 << 9))
|
||||
if_agc = -(~(if_agc_raw - 1) & 0x1ff);
|
||||
else
|
||||
if_agc = if_agc_raw;
|
||||
|
||||
*strength = (u8) (55 - if_agc / 182);
|
||||
*strength |= *strength << 8;
|
||||
|
||||
return 0;
|
||||
err:
|
||||
dbg("%s: failed=%d", __func__, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static struct dvb_frontend_ops rtl2830_ops;
|
||||
|
|
Loading…
Reference in a new issue