summaryrefslogtreecommitdiffstats
path: root/drivers/staging/media/mn88472
diff options
context:
space:
mode:
authorBenjamin Larsson2015-03-15 23:57:50 +0100
committerMauro Carvalho Chehab2015-04-03 02:52:16 +0200
commitba6d6d8a06c323782badf8cbead6e4ec1c742235 (patch)
tree30a2bed3df770a608d1e17845d77d25f873b3f88 /drivers/staging/media/mn88472
parent[media] rtl28xxu: lower the rc poll time to mitigate i2c transfer errors (diff)
downloadkernel-qcow2-linux-ba6d6d8a06c323782badf8cbead6e4ec1c742235.tar.gz
kernel-qcow2-linux-ba6d6d8a06c323782badf8cbead6e4ec1c742235.tar.xz
kernel-qcow2-linux-ba6d6d8a06c323782badf8cbead6e4ec1c742235.zip
[media] mn88472: implement lock for all delivery systems
The increase of the lock timeout is needed for dvb-t2. Signed-off-by: Benjamin Larsson <benjamin@southpole.se> Signed-off-by: Antti Palosaari <crope@iki.fi> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
Diffstat (limited to 'drivers/staging/media/mn88472')
-rw-r--r--drivers/staging/media/mn88472/mn88472.c24
1 files changed, 20 insertions, 4 deletions
diff --git a/drivers/staging/media/mn88472/mn88472.c b/drivers/staging/media/mn88472/mn88472.c
index 219a7d1db8d4..6f0cac44d273 100644
--- a/drivers/staging/media/mn88472/mn88472.c
+++ b/drivers/staging/media/mn88472/mn88472.c
@@ -19,7 +19,7 @@
static int mn88472_get_tune_settings(struct dvb_frontend *fe,
struct dvb_frontend_tune_settings *s)
{
- s->min_delay_ms = 400;
+ s->min_delay_ms = 800;
return 0;
}
@@ -201,6 +201,7 @@ static int mn88472_read_status(struct dvb_frontend *fe, fe_status_t *status)
struct dtv_frontend_properties *c = &fe->dtv_property_cache;
int ret;
unsigned int utmp;
+ int lock = 0;
*status = 0;
@@ -211,21 +212,36 @@ static int mn88472_read_status(struct dvb_frontend *fe, fe_status_t *status)
switch (c->delivery_system) {
case SYS_DVBT:
+ ret = regmap_read(dev->regmap[0], 0x7F, &utmp);
+ if (ret)
+ goto err;
+ if ((utmp & 0xF) >= 0x09)
+ lock = 1;
+ break;
case SYS_DVBT2:
- /* FIXME: implement me */
- utmp = 0x08; /* DVB-C lock value */
+ ret = regmap_read(dev->regmap[2], 0x92, &utmp);
+ if (ret)
+ goto err;
+ if ((utmp & 0xF) >= 0x07)
+ *status |= FE_HAS_SIGNAL;
+ if ((utmp & 0xF) >= 0x0a)
+ *status |= FE_HAS_CARRIER;
+ if ((utmp & 0xF) >= 0x0d)
+ *status |= FE_HAS_VITERBI | FE_HAS_SYNC | FE_HAS_LOCK;
break;
case SYS_DVBC_ANNEX_A:
ret = regmap_read(dev->regmap[1], 0x84, &utmp);
if (ret)
goto err;
+ if ((utmp & 0xF) >= 0x08)
+ lock = 1;
break;
default:
ret = -EINVAL;
goto err;
}
- if (utmp == 0x08)
+ if (lock)
*status = FE_HAS_SIGNAL | FE_HAS_CARRIER | FE_HAS_VITERBI |
FE_HAS_SYNC | FE_HAS_LOCK;