diff options
| author | Steven Toth <stoth@linuxtv.org> | 2008-10-16 23:17:42 -0300 | 
|---|---|---|
| committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2008-10-21 14:30:48 -0200 | 
| commit | e16c63de928f00075f0ea466581e04b44bb33f75 (patch) | |
| tree | a2e42b008acef238108cbfaa66357a01789e63a0 | |
| parent | c96de5197d038cd1c5538085109c7329434ee94b (diff) | |
V4L/DVB (9310): s5h1411: read_status() locking detection fixes.
This includes new bit definitions for previously unknown bits.
Signed-off-by: Steven Toth <stoth@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| -rw-r--r-- | drivers/media/dvb/frontends/s5h1411.c | 29 | 
1 files changed, 15 insertions, 14 deletions
diff --git a/drivers/media/dvb/frontends/s5h1411.c b/drivers/media/dvb/frontends/s5h1411.c index 25a3fb31e023..c79e23ded4d7 100644 --- a/drivers/media/dvb/frontends/s5h1411.c +++ b/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;  | 
