Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 114100
b: refs/heads/master
c: 8953db7
h: refs/heads/master
v: v3
  • Loading branch information
Steven Toth authored and Mauro Carvalho Chehab committed Oct 13, 2008
1 parent 46cf28a commit 449cc68
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 4 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 0a6393ae21d58e85882185ce1e6b0fe28ff2dfa6
refs/heads/master: 8953db793d5bdeea5ac92c9e97f57d3ff8a7dccf
39 changes: 36 additions & 3 deletions trunk/drivers/media/dvb/frontends/cx24116.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -116,6 +117,9 @@ static int debug = 0;
/* DiSEqC tone burst */
static int toneburst = 1;

/* SNR measurements */
static int esno_snr = 1;

enum cmds
{
CMD_SET_VCO = 0x10,
Expand Down Expand Up @@ -703,7 +707,7 @@ static int cx24116_read_signal_strength(struct dvb_frontend* fe, u16* signal_str
}

/* 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;
Expand All @@ -714,7 +718,7 @@ static int cx24116_read_snr(struct dvb_frontend* fe, u16* snr)

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;
Expand All @@ -728,6 +732,32 @@ static int cx24116_read_snr(struct dvb_frontend* fe, u16* 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)
{
struct cx24116_state *state = fe->demodulator_priv;
Expand Down Expand Up @@ -1383,6 +1413,9 @@ MODULE_PARM_DESC(debug, "Activates frontend debugging (default:0)");
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");
Expand Down

0 comments on commit 449cc68

Please sign in to comment.