summaryrefslogtreecommitdiff
path: root/v4l
diff options
context:
space:
mode:
Diffstat (limited to 'v4l')
-rw-r--r--v4l/ChangeLog8
-rw-r--r--v4l/lgdt3302.c24
2 files changed, 30 insertions, 2 deletions
diff --git a/v4l/ChangeLog b/v4l/ChangeLog
index b7dcdf6ce..ebed47098 100644
--- a/v4l/ChangeLog
+++ b/v4l/ChangeLog
@@ -1,3 +1,9 @@
+2005-06-20 14:14 mkrufky
+ * lgdt3302.c:
+ - Change lgdt3302 driver to return raw data for SNR.
+
+ Signed-off-by: Mac Michaels <wmichaels1@earthlink.net>
+
2005-06-20 15:25 mchehab
*tuner-core.c:
- v4l2_tuner has three fields for audio mode:
@@ -16,7 +22,7 @@
2005-06-20 00:49 mkrufky
* lgdt3302.c:
- fixed FEC error status
+ - fixed FEC error status
Signed-off-by: Mac Michaels <wmichaels1@earthlink.net>
Signed-off-by: Michael Krufky <mkrufky@m1k.net>
diff --git a/v4l/lgdt3302.c b/v4l/lgdt3302.c
index 34d39efa6..5771d34ea 100644
--- a/v4l/lgdt3302.c
+++ b/v4l/lgdt3302.c
@@ -1,5 +1,5 @@
/*
- * $Id: lgdt3302.c,v 1.4 2005/06/20 04:54:30 mkrufky Exp $
+ * $Id: lgdt3302.c,v 1.5 2005/06/20 18:17:20 mkrufky Exp $
*
* Support for LGDT3302 (DViCO FustionHDTV 3 Gold) - VSB/QAM
*
@@ -425,6 +425,7 @@ static int lgdt3302_read_signal_strength(struct dvb_frontend* fe, u16* strength)
static int lgdt3302_read_snr(struct dvb_frontend* fe, u16* snr)
{
+#ifdef SNR_IN_DB
/*
* Spec sheet shows formula for SNR_EQ = 10 log10(25 * 24**2 / noise)
* and SNR_PH = 10 log10(25 * 32**2 / noise) for equalizer and phase tracker
@@ -511,6 +512,27 @@ static int lgdt3302_read_snr(struct dvb_frontend* fe, u16* snr)
}
}
}
+#else
+ /* Return the raw noise value */
+ static u8 buf[5];/* read data buffer */
+ static u32 noise; /* noise value */
+ struct lgdt3302_state* state = (struct lgdt3302_state*) fe->demodulator_priv;
+
+ /* read both equalizer and pase tracker noise data */
+ i2c_selectreadbytes(state, EQPH_ERR0, buf, sizeof(buf));
+
+ if (state->current_modulation == VSB_8) {
+ /* Equalizer Mean-Square Error Register for VSB */
+ noise = ((buf[0] & 7) << 16) | (buf[1] << 8) | buf[2];
+ } else {
+ /* Phase Tracker Mean-Square Error Register for QAM */
+ noise = ((buf[0] & 7<<3) << 13) | (buf[3] << 8) | buf[4];
+ }
+
+ /* Small values for noise mean signal is better so invert noise */
+ /* Noise is 19 bit value so discard 3 LSB*/
+ *snr = ~noise>>3;
+#endif
dprintk("%s: noise = 0x%05x, snr = %idb\n",__FUNCTION__, noise, *snr);