Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 285401
b: refs/heads/master
c: 27d9a5e
h: refs/heads/master
i:
  285399: 65b4b62
v: v3
  • Loading branch information
Mauro Carvalho Chehab committed Dec 20, 2011
1 parent afcd923 commit 66cd598
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 23 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: 74b4576e63ec4cc765271db8815a42aa8f80ed14
refs/heads/master: 27d9a5e93842852c198aae9f45fd6c272bf2b374
59 changes: 37 additions & 22 deletions trunk/drivers/media/dvb/frontends/tda10021.c
Original file line number Diff line number Diff line change
Expand Up @@ -224,27 +224,43 @@ static int tda10021_init (struct dvb_frontend *fe)
return 0;
}

struct qam_params {
u8 conf, agcref, lthr, mseth, aref;
};

static int tda10021_set_parameters (struct dvb_frontend *fe,
struct dvb_frontend_parameters *p)
{
struct tda10021_state* state = fe->demodulator_priv;

//table for QAM4-QAM256 ready QAM4 QAM16 QAM32 QAM64 QAM128 QAM256
//CONF
static const u8 reg0x00 [] = { 0x14, 0x00, 0x04, 0x08, 0x0c, 0x10 };
//AGCREF value
static const u8 reg0x01 [] = { 0x78, 0x8c, 0x8c, 0x6a, 0x78, 0x5c };
//LTHR value
static const u8 reg0x05 [] = { 0x78, 0x87, 0x64, 0x46, 0x36, 0x26 };
//MSETH
static const u8 reg0x08 [] = { 0x8c, 0xa2, 0x74, 0x43, 0x34, 0x23 };
//AREF
static const u8 reg0x09 [] = { 0x96, 0x91, 0x96, 0x6a, 0x7e, 0x6b };

static const struct qam_params qam_params[] = {
/* Modulation Conf AGCref LTHR MSETH AREF */
[QPSK] = { 0x14, 0x78, 0x78, 0x8c, 0x96 },
[QAM_16] = { 0x00, 0x8c, 0x87, 0xa2, 0x91 },
[QAM_32] = { 0x04, 0x8c, 0x64, 0x74, 0x96 },
[QAM_64] = { 0x08, 0x6a, 0x46, 0x43, 0x6a },
[QAM_128] = { 0x0c, 0x78, 0x36, 0x34, 0x7e },
[QAM_256] = { 0x10, 0x5c, 0x26, 0x23, 0x6b },
};
int qam = p->u.qam.modulation;

if (qam < 0 || qam > 5)
/*
* gcc optimizes the code bellow the same way as it would code:
* "if (qam > 5) return -EINVAL;"
* Yet, the code is clearer, as it shows what QAM standards are
* supported by the driver, and avoids the usage of magic numbers on
* it.
*/
switch (qam) {
case QPSK:
case QAM_16:
case QAM_32:
case QAM_64:
case QAM_128:
case QAM_256:
break;
default:
return -EINVAL;
}

if (p->inversion != INVERSION_ON && p->inversion != INVERSION_OFF)
return -EINVAL;
Expand All @@ -256,15 +272,14 @@ static int tda10021_set_parameters (struct dvb_frontend *fe,
if (fe->ops.i2c_gate_ctrl) fe->ops.i2c_gate_ctrl(fe, 0);
}

tda10021_set_symbolrate (state, p->u.qam.symbol_rate);
_tda10021_writereg (state, 0x34, state->pwm);

_tda10021_writereg (state, 0x01, reg0x01[qam]);
_tda10021_writereg (state, 0x05, reg0x05[qam]);
_tda10021_writereg (state, 0x08, reg0x08[qam]);
_tda10021_writereg (state, 0x09, reg0x09[qam]);
tda10021_set_symbolrate(state, p->u.qam.symbol_rate);
_tda10021_writereg(state, 0x34, state->pwm);

tda10021_setup_reg0 (state, reg0x00[qam], p->inversion);
_tda10021_writereg(state, 0x01, qam_params[qam].agcref);
_tda10021_writereg(state, 0x05, qam_params[qam].lthr);
_tda10021_writereg(state, 0x08, qam_params[qam].mseth);
_tda10021_writereg(state, 0x09, qam_params[qam].aref);
tda10021_setup_reg0(state, qam_params[qam].conf, p->inversion);

return 0;
}
Expand Down

0 comments on commit 66cd598

Please sign in to comment.