The patch number 9178 was added via Steven Toth <[EMAIL PROTECTED]>
to http://linuxtv.org/hg/v4l-dvb master development tree.

Kernel patches in this development tree may be modified to be backward
compatible with older kernels. Compatibility modifications will be
removed before inclusion into the mainstream Kernel

If anyone has any objections, please let us know by sending a message to:
        [EMAIL PROTECTED]

------

From: Steven Toth  <[EMAIL PROTECTED]>
cx24116: Add module parameter to return SNR as ESNO.


I've retained the older percentage code after discussing this with
Darron Broad, but made the ESNO option default.

Priority: normal

Signed-off-by: Steven Toth <[EMAIL PROTECTED]>


---

 linux/drivers/media/dvb/frontends/cx24116.c |   39 ++++++++++++++++++--
 1 file changed, 36 insertions(+), 3 deletions(-)

diff -r d1c25e26799f -r 648f9f80937e linux/drivers/media/dvb/frontends/cx24116.c
--- a/linux/drivers/media/dvb/frontends/cx24116.c       Mon Oct 06 20:06:48 
2008 -0400
+++ b/linux/drivers/media/dvb/frontends/cx24116.c       Mon Oct 06 20:20:21 
2008 -0400
@@ -57,8 +57,9 @@ static int debug = 0;
 #define CX24116_REG_RESET   (0x20)      /* reset status > 0     */
 #define CX24116_REG_SIGNAL  (0x9e)      /* signal low           */
 #define CX24116_REG_SSTATUS (0x9d)      /* signal high / status */
+#define CX24116_REG_QUALITY8 (0xa3)
 #define CX24116_REG_QSTATUS (0xbc)
-#define CX24116_REG_QUALITY (0xd5)
+#define CX24116_REG_QUALITY0 (0xd5)
 #define CX24116_REG_BER0    (0xc9)
 #define CX24116_REG_BER8    (0xc8)
 #define CX24116_REG_BER16   (0xc7)
@@ -115,6 +116,9 @@ static int debug = 0;
 
 /* DiSEqC tone burst */
 static int toneburst = 1;
+
+/* SNR measurements */
+static int esno_snr = 1;
 
 enum cmds
 {
@@ -703,7 +707,7 @@ static int cx24116_read_signal_strength(
 }
 
 /* SNR (0..100)% = (sig & 0xf0) * 10 + (sig & 0x0f) * 10 / 16 */
-static int cx24116_read_snr(struct dvb_frontend* fe, u16* snr)
+static int cx24116_read_snr_pct(struct dvb_frontend* fe, u16* snr)
 {
        struct cx24116_state *state = fe->demodulator_priv;
        u8 snr_reading;
@@ -714,7 +718,7 @@ static int cx24116_read_snr(struct dvb_f
 
        dprintk("%s()\n", __func__);
 
-       snr_reading = cx24116_readreg(state, CX24116_REG_QUALITY);
+       snr_reading = cx24116_readreg(state, CX24116_REG_QUALITY0);
 
        if(snr_reading >= 0xa0 /* 100% */)
                *snr = 0xffff;
@@ -726,6 +730,32 @@ static int cx24116_read_snr(struct dvb_f
                snr_reading, *snr);
 
        return 0;
+}
+
+/* The reelbox patches show the value in the registers represents
+ * ESNO, from 0->30db (values 0->300). We provide this value by
+ * default.
+ */
+static int cx24116_read_snr_esno(struct dvb_frontend* fe, u16* snr)
+{
+       struct cx24116_state *state = fe->demodulator_priv;
+
+       dprintk("%s()\n", __func__);
+
+       *snr = cx24116_readreg(state, CX24116_REG_QUALITY8) << 8 |
+               cx24116_readreg(state, CX24116_REG_QUALITY0);
+
+       dprintk("%s: raw 0x%04x\n", __func__, *snr);
+
+       return 0;
+}
+
+static int cx24116_read_snr(struct dvb_frontend* fe, u16* snr)
+{
+       if (esno_snr == 1)
+               return cx24116_read_snr_esno(fe, snr);
+       else
+               return cx24116_read_snr_pct(fe, snr);
 }
 
 static int cx24116_read_ucblocks(struct dvb_frontend* fe, u32* ucblocks)
@@ -1400,6 +1430,9 @@ module_param(toneburst, int, 0644);
 module_param(toneburst, int, 0644);
 MODULE_PARM_DESC(toneburst, "DiSEqC toneburst 0=OFF, 1=TONE CACHE, 2=MESSAGE 
CACHE (default:1)");
 
+module_param(esno_snr, int, 0644);
+MODULE_PARM_DESC(debug, "SNR return units, 0=PERCENTAGE 0-100, 1=ESNO(db * 10) 
(default:1)");
+
 MODULE_DESCRIPTION("DVB Frontend module for Conexant cx24116/cx24118 
hardware");
 MODULE_AUTHOR("Steven Toth");
 MODULE_LICENSE("GPL");


---

Patch is available at: 
http://linuxtv.org/hg/v4l-dvb/rev/648f9f80937e9b87a516bec2ee9dd2abb3e77fb4

_______________________________________________
linuxtv-commits mailing list
linuxtv-commits@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to