summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteven Toth <stoth@linuxtv.org>2008-10-16 22:17:42 -0400
committerSteven Toth <stoth@linuxtv.org>2008-10-16 22:17:42 -0400
commit18a36373dd651572c6d08e930a38e8421abcafe8 (patch)
tree194f6e48cf372c1a8407daa8b2681ba29dda3000
parent8b08dc76bbe323b941b823d289c498f27057456f (diff)
downloadmediapointer-dvb-s2-18a36373dd651572c6d08e930a38e8421abcafe8.tar.gz
mediapointer-dvb-s2-18a36373dd651572c6d08e930a38e8421abcafe8.tar.bz2
s5h1411: read_status() locking detection fixes.
From: Steven Toth <stoth@linuxtv.org> This includes new bit definitions for previously unknown bits. Priority: normal Signed-off-by: Steven Toth <stoth@linuxtv.org>
-rw-r--r--linux/drivers/media/dvb/frontends/s5h1411.c29
1 files changed, 15 insertions, 14 deletions
diff --git a/linux/drivers/media/dvb/frontends/s5h1411.c b/linux/drivers/media/dvb/frontends/s5h1411.c
index 25a3fb31e..c79e23ded 100644
--- a/linux/drivers/media/dvb/frontends/s5h1411.c
+++ b/linux/drivers/media/dvb/frontends/s5h1411.c
@@ -636,28 +636,29 @@ static int s5h1411_read_status(struct dvb_frontend *fe, fe_status_t *status)
*status = 0;
- /* Get the demodulator status */
- reg = (s5h1411_readreg(state, S5H1411_I2C_TOP_ADDR, 0xf2) >> 15)
- & 0x0001;
- if (reg)
- *status |= FE_HAS_LOCK | FE_HAS_CARRIER | FE_HAS_SIGNAL;
+ /* Register F2 bit 15 = Master Lock, removed */
switch (state->current_modulation) {
case QAM_64:
case QAM_256:
reg = s5h1411_readreg(state, S5H1411_I2C_TOP_ADDR, 0xf0);
- if (reg & 0x100)
- *status |= FE_HAS_VITERBI;
- if (reg & 0x10)
- *status |= FE_HAS_SYNC;
+ if (reg & 0x10) /* QAM FEC Lock */
+ *status |= FE_HAS_SYNC | FE_HAS_LOCK;
+ if (reg & 0x100) /* QAM EQ Lock */
+ *status |= FE_HAS_VITERBI | FE_HAS_CARRIER | FE_HAS_SIGNAL;
+
break;
case VSB_8:
- reg = s5h1411_readreg(state, S5H1411_I2C_TOP_ADDR, 0x5e);
- if (reg & 0x0001)
- *status |= FE_HAS_SYNC;
reg = s5h1411_readreg(state, S5H1411_I2C_TOP_ADDR, 0xf2);
- if (reg & 0x1000)
- *status |= FE_HAS_VITERBI;
+ if (reg & 0x1000) /* FEC Lock */
+ *status |= FE_HAS_SYNC | FE_HAS_LOCK;
+ if (reg & 0x2000) /* EQ Lock */
+ *status |= FE_HAS_VITERBI | FE_HAS_CARRIER | FE_HAS_SIGNAL;
+
+ reg = s5h1411_readreg(state, S5H1411_I2C_TOP_ADDR, 0x53);
+ if (reg & 0x1) /* AFC Lock */
+ *status |= FE_HAS_SIGNAL;
+
break;
default:
return -EINVAL;