summaryrefslogtreecommitdiff
path: root/v4l
diff options
context:
space:
mode:
Diffstat (limited to 'v4l')
-rw-r--r--v4l/ChangeLog12
-rw-r--r--v4l/lgdt3302.c35
2 files changed, 30 insertions, 17 deletions
diff --git a/v4l/ChangeLog b/v4l/ChangeLog
index 526434fa1..202254079 100644
--- a/v4l/ChangeLog
+++ b/v4l/ChangeLog
@@ -1,3 +1,15 @@
+2005-07-06 21:44 mkrufky
+ * lgdt3302.c:
+ - Fix bug in lgdt3302_read_status to return correct
+ FE_HAS_SIGNAL and FS_HAS_CARRIER status.
+
+ * msp3400.c, saa7134-cards.c, saa7134-i2c.c:
+ * tuner-simple.c, video-buf-dvb.c:
+ - Remove trailing whitespace.
+
+ Signed-off-by: Mac Michaels <wmichaels1@earthlink.net>
+ Signed-off-by: Michael Krufky <mkrufky@m1k.net>
+
2005-07-07 01:44 nshmyrev
* tuner-simple.c:
- Use 50 kHz step when tunning radio for most tuners.
diff --git a/v4l/lgdt3302.c b/v4l/lgdt3302.c
index 5b591e349..27c95be25 100644
--- a/v4l/lgdt3302.c
+++ b/v4l/lgdt3302.c
@@ -1,5 +1,5 @@
/*
- * $Id: lgdt3302.c,v 1.13 2005/07/06 06:03:18 mkrufky Exp $
+ * $Id: lgdt3302.c,v 1.14 2005/07/07 01:49:30 mkrufky Exp $
*
* Support for LGDT3302 (DViCO FustionHDTV 3 Gold) - VSB/QAM
*
@@ -347,11 +347,28 @@ static int lgdt3302_read_status(struct dvb_frontend* fe, fe_status_t* status)
* This is done in SwReset();
*/
+ /* AGC status register */
+ i2c_selectreadbytes(state, AGC_STATUS, buf, 1);
+ dprintk("%s: AGC_STATUS = 0x%02x\n", __FUNCTION__, buf[0]);
+ if ((buf[0] & 0x0c) == 0x8){
+ /* Test signal does not exist flag */
+ /* as well as the AGC lock flag. */
+ *status |= FE_HAS_SIGNAL;
+ } else {
+ /* Without a signal all other status bits are meaningless */
+ return 0;
+ }
+
/* signal status */
i2c_selectreadbytes(state, TOP_CONTROL, buf, sizeof(buf));
dprintk("%s: TOP_CONTROL = 0x%02x, IRO_MASK = 0x%02x, IRQ_STATUS = 0x%02x\n", __FUNCTION__, buf[0], buf[1], buf[2]);
+
+#if 0
+ /* Alternative method to check for a signal */
+ /* using the SNR good/bad interrupts. */
if ((buf[2] & 0x30) == 0x10)
*status |= FE_HAS_SIGNAL;
+#endif
/* sync status */
if ((buf[2] & 0x03) == 0x01) {
@@ -364,17 +381,6 @@ static int lgdt3302_read_status(struct dvb_frontend* fe, fe_status_t* status)
*status |= FE_HAS_VITERBI;
}
-#if 0
- /* Alternative method to check for a signal */
- /* AGC status register */
- i2c_selectreadbytes(state, AGC_STATUS, buf, 1);
- dprintk("%s: AGC_STATUS = 0x%02x\n", __FUNCTION__, buf[0]);
- if ((buf[0] & 0x0c) == 0x80) /* Test signal does not exist flag */
- /* Test AGC lock flag */
- *status |= FE_HAS_SIGNAL;
- else
- return 0;
-
/* Carrier Recovery Lock Status Register */
i2c_selectreadbytes(state, CARRIER_LOCK, buf, 1);
dprintk("%s: CARRIER_LOCK = 0x%02x\n", __FUNCTION__, buf[0]);
@@ -384,19 +390,14 @@ static int lgdt3302_read_status(struct dvb_frontend* fe, fe_status_t* status)
/* Need to undestand why there are 3 lock levels here */
if ((buf[0] & 0x07) == 0x07)
*status |= FE_HAS_CARRIER;
- else
- return 0;
break;
case VSB_8:
if ((buf[0] & 0x80) == 0x80)
*status |= FE_HAS_CARRIER;
- else
- return 0;
break;
default:
printk("KERN_WARNING lgdt3302: %s: Modulation set to unsupported value\n", __FUNCTION__);
}
-#endif
return 0;
}