diff options
author | Manu Abraham <abraham.manu@gmail.com> | 2009-04-07 15:08:26 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-06-16 17:20:38 -0400 |
commit | 5657150759ab67292db0333808a069970328663b (patch) | |
tree | c9c500a23f1a2bc46e50c778028283698a945882 /drivers/media/dvb/frontends/stv090x.c | |
parent | 017eb0381fedbfdcad1e8e536d014c4064e6687f (diff) |
V4L/DVB (11582): stv090x: fix Undocumented Registers
Signed-off-by: Manu Abraham <manu@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/dvb/frontends/stv090x.c')
-rw-r--r-- | drivers/media/dvb/frontends/stv090x.c | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/drivers/media/dvb/frontends/stv090x.c b/drivers/media/dvb/frontends/stv090x.c index e80d163c767..b450bf12db4 100644 --- a/drivers/media/dvb/frontends/stv090x.c +++ b/drivers/media/dvb/frontends/stv090x.c | |||
@@ -176,8 +176,10 @@ static const struct stv090x_tab stv090x_rf_tab[] = { | |||
176 | static struct stv090x_reg stv0900_initval[] = { | 176 | static struct stv090x_reg stv0900_initval[] = { |
177 | 177 | ||
178 | { STV090x_OUTCFG, 0x00 }, | 178 | { STV090x_OUTCFG, 0x00 }, |
179 | { STV090x_MODECFG, 0xff }, | ||
179 | { STV090x_AGCRF1CFG, 0x11 }, | 180 | { STV090x_AGCRF1CFG, 0x11 }, |
180 | { STV090x_AGCRF2CFG, 0x13 }, | 181 | { STV090x_AGCRF2CFG, 0x13 }, |
182 | { STV090x_TSGENERAL1X, 0x14 }, | ||
181 | { STV090x_TSTTNR2, 0x21 }, | 183 | { STV090x_TSTTNR2, 0x21 }, |
182 | { STV090x_TSTTNR4, 0x21 }, | 184 | { STV090x_TSTTNR4, 0x21 }, |
183 | { STV090x_P2_DISTXCTL, 0x22 }, | 185 | { STV090x_P2_DISTXCTL, 0x22 }, |
@@ -203,8 +205,10 @@ static struct stv090x_reg stv0900_initval[] = { | |||
203 | { STV090x_P2_ERRCTRL2, 0xc1 }, | 205 | { STV090x_P2_ERRCTRL2, 0xc1 }, |
204 | { STV090x_P2_CFRICFG, 0xf8 }, | 206 | { STV090x_P2_CFRICFG, 0xf8 }, |
205 | { STV090x_P2_NOSCFG, 0x1c }, | 207 | { STV090x_P2_NOSCFG, 0x1c }, |
208 | { STV090x_P2_DMDTOM, 0x20 }, | ||
206 | { STV090x_P2_CORRELMANT, 0x70 }, | 209 | { STV090x_P2_CORRELMANT, 0x70 }, |
207 | { STV090x_P2_CORRELABS, 0x88 }, | 210 | { STV090x_P2_CORRELABS, 0x88 }, |
211 | { STV090x_P2_AGC2O, 0x5b }, | ||
208 | { STV090x_P2_AGC2REF, 0x38 }, | 212 | { STV090x_P2_AGC2REF, 0x38 }, |
209 | { STV090x_P2_CARCFG, 0xe4 }, | 213 | { STV090x_P2_CARCFG, 0xe4 }, |
210 | { STV090x_P2_ACLC, 0x1A }, | 214 | { STV090x_P2_ACLC, 0x1A }, |
@@ -246,6 +250,7 @@ static struct stv090x_reg stv0900_initval[] = { | |||
246 | { STV090x_P1_DMDCFGMD, 0xf9 }, | 250 | { STV090x_P1_DMDCFGMD, 0xf9 }, |
247 | { STV090x_P1_DEMOD, 0x08 }, | 251 | { STV090x_P1_DEMOD, 0x08 }, |
248 | { STV090x_P1_DMDCFG3, 0xc4 }, | 252 | { STV090x_P1_DMDCFG3, 0xc4 }, |
253 | { STV090x_P1_DMDTOM, 0x20 }, | ||
249 | { STV090x_P1_CARFREQ, 0xed }, | 254 | { STV090x_P1_CARFREQ, 0xed }, |
250 | { STV090x_P1_LDT, 0xd0 }, | 255 | { STV090x_P1_LDT, 0xd0 }, |
251 | { STV090x_P1_LDT2, 0xb8 }, | 256 | { STV090x_P1_LDT2, 0xb8 }, |
@@ -265,6 +270,7 @@ static struct stv090x_reg stv0900_initval[] = { | |||
265 | { STV090x_P1_NOSCFG, 0x1c }, | 270 | { STV090x_P1_NOSCFG, 0x1c }, |
266 | { STV090x_P1_CORRELMANT, 0x70 }, | 271 | { STV090x_P1_CORRELMANT, 0x70 }, |
267 | { STV090x_P1_CORRELABS, 0x88 }, | 272 | { STV090x_P1_CORRELABS, 0x88 }, |
273 | { STV090x_P1_AGC2O, 0x5b }, | ||
268 | { STV090x_P1_AGC2REF, 0x38 }, | 274 | { STV090x_P1_AGC2REF, 0x38 }, |
269 | { STV090x_P1_CARCFG, 0xe4 }, | 275 | { STV090x_P1_CARCFG, 0xe4 }, |
270 | { STV090x_P1_ACLC, 0x1A }, | 276 | { STV090x_P1_ACLC, 0x1A }, |
@@ -326,6 +332,7 @@ static struct stv090x_reg stv0900_initval[] = { | |||
326 | { STV090x_GAINLLR_NF15, 0x1A }, | 332 | { STV090x_GAINLLR_NF15, 0x1A }, |
327 | { STV090x_GAINLLR_NF16, 0x1F }, | 333 | { STV090x_GAINLLR_NF16, 0x1F }, |
328 | { STV090x_GAINLLR_NF17, 0x21 }, | 334 | { STV090x_GAINLLR_NF17, 0x21 }, |
335 | { STV090x_RCCFGH, 0x20 }, | ||
329 | { STV090x_P1_FECM, 0x01 }, /* disable DSS modes */ | 336 | { STV090x_P1_FECM, 0x01 }, /* disable DSS modes */ |
330 | { STV090x_P2_FECM, 0x01 }, /* disable DSS modes */ | 337 | { STV090x_P2_FECM, 0x01 }, /* disable DSS modes */ |
331 | { STV090x_P1_PRVIT, 0x2F }, /* disable PR 6/7 */ | 338 | { STV090x_P1_PRVIT, 0x2F }, /* disable PR 6/7 */ |
@@ -364,12 +371,14 @@ static struct stv090x_reg stv0903_initval[] = { | |||
364 | { STV090x_P1_ERRCTRL2, 0xc1 }, | 371 | { STV090x_P1_ERRCTRL2, 0xc1 }, |
365 | { STV090x_P1_CFRICFG, 0xf8 }, | 372 | { STV090x_P1_CFRICFG, 0xf8 }, |
366 | { STV090x_P1_NOSCFG, 0x1c }, | 373 | { STV090x_P1_NOSCFG, 0x1c }, |
374 | { STV090x_P1_DMDTOM, 0x20 }, | ||
367 | { STV090x_P1_CORRELMANT, 0x70 }, | 375 | { STV090x_P1_CORRELMANT, 0x70 }, |
368 | { STV090x_P1_CORRELABS, 0x88 }, | 376 | { STV090x_P1_CORRELABS, 0x88 }, |
369 | { STV090x_P1_AGC2REF, 0x38 } , | 377 | { STV090x_P1_AGC2O, 0x5b }, |
378 | { STV090x_P1_AGC2REF, 0x38 }, | ||
370 | { STV090x_P1_CARCFG, 0xe4 }, | 379 | { STV090x_P1_CARCFG, 0xe4 }, |
371 | { STV090x_P1_ACLC, 0x1A }, | 380 | { STV090x_P1_ACLC, 0x1A }, |
372 | { STV090x_P1_BCLC, 0x09 } , | 381 | { STV090x_P1_BCLC, 0x09 }, |
373 | { STV090x_P1_CARHDR, 0x08 }, | 382 | { STV090x_P1_CARHDR, 0x08 }, |
374 | { STV090x_P1_KREFTMG, 0xc1 }, | 383 | { STV090x_P1_KREFTMG, 0xc1 }, |
375 | { STV090x_P1_SFRSTEP, 0x58 }, | 384 | { STV090x_P1_SFRSTEP, 0x58 }, |
@@ -427,6 +436,7 @@ static struct stv090x_reg stv0903_initval[] = { | |||
427 | { STV090x_GAINLLR_NF15, 0x1A }, | 436 | { STV090x_GAINLLR_NF15, 0x1A }, |
428 | { STV090x_GAINLLR_NF16, 0x1F }, | 437 | { STV090x_GAINLLR_NF16, 0x1F }, |
429 | { STV090x_GAINLLR_NF17, 0x21 }, | 438 | { STV090x_GAINLLR_NF17, 0x21 }, |
439 | { STV090x_RCCFGH, 0x20 }, | ||
430 | { STV090x_P1_FECM, 0x01 }, /*disable the DSS mode */ | 440 | { STV090x_P1_FECM, 0x01 }, /*disable the DSS mode */ |
431 | { STV090x_P1_PRVIT, 0x2f } /*disable puncture rate 6/7*/ | 441 | { STV090x_P1_PRVIT, 0x2f } /*disable puncture rate 6/7*/ |
432 | }; | 442 | }; |
@@ -434,6 +444,7 @@ static struct stv090x_reg stv0903_initval[] = { | |||
434 | static struct stv090x_reg stv0900_cut20_val[] = { | 444 | static struct stv090x_reg stv0900_cut20_val[] = { |
435 | 445 | ||
436 | { STV090x_P2_DMDCFG3, 0xe8 }, | 446 | { STV090x_P2_DMDCFG3, 0xe8 }, |
447 | { STV090x_P2_DMDCFG4, 0x10 }, | ||
437 | { STV090x_P2_CARFREQ, 0x38 }, | 448 | { STV090x_P2_CARFREQ, 0x38 }, |
438 | { STV090x_P2_CARHDR, 0x20 }, | 449 | { STV090x_P2_CARHDR, 0x20 }, |
439 | { STV090x_P2_KREFTMG, 0x5a }, | 450 | { STV090x_P2_KREFTMG, 0x5a }, |
@@ -442,6 +453,7 @@ static struct stv090x_reg stv0900_cut20_val[] = { | |||
442 | { STV090x_P2_SMAPCOEF5, 0x04 }, | 453 | { STV090x_P2_SMAPCOEF5, 0x04 }, |
443 | { STV090x_P2_NOSCFG, 0x0c }, | 454 | { STV090x_P2_NOSCFG, 0x0c }, |
444 | { STV090x_P1_DMDCFG3, 0xe8 }, | 455 | { STV090x_P1_DMDCFG3, 0xe8 }, |
456 | { STV090x_P1_DMDCFG4, 0x10 }, | ||
445 | { STV090x_P1_CARFREQ, 0x38 }, | 457 | { STV090x_P1_CARFREQ, 0x38 }, |
446 | { STV090x_P1_CARHDR, 0x20 }, | 458 | { STV090x_P1_CARHDR, 0x20 }, |
447 | { STV090x_P1_KREFTMG, 0x5a }, | 459 | { STV090x_P1_KREFTMG, 0x5a }, |
@@ -467,6 +479,7 @@ static struct stv090x_reg stv0900_cut20_val[] = { | |||
467 | 479 | ||
468 | static struct stv090x_reg stv0903_cut20_val[] = { | 480 | static struct stv090x_reg stv0903_cut20_val[] = { |
469 | { STV090x_P1_DMDCFG3, 0xe8 }, | 481 | { STV090x_P1_DMDCFG3, 0xe8 }, |
482 | { STV090x_P1_DMDCFG4, 0x10 }, | ||
470 | { STV090x_P1_CARFREQ, 0x38 }, | 483 | { STV090x_P1_CARFREQ, 0x38 }, |
471 | { STV090x_P1_CARHDR, 0x20 }, | 484 | { STV090x_P1_CARHDR, 0x20 }, |
472 | { STV090x_P1_KREFTMG, 0x5a }, | 485 | { STV090x_P1_KREFTMG, 0x5a }, |
@@ -640,11 +653,9 @@ static int stv090x_write_reg(struct stv090x_state *state, unsigned int reg, u8 d | |||
640 | static int stv090x_i2c_gate_ctrl(struct dvb_frontend *fe, int enable) | 653 | static int stv090x_i2c_gate_ctrl(struct dvb_frontend *fe, int enable) |
641 | { | 654 | { |
642 | struct stv090x_state *state = fe->demodulator_priv; | 655 | struct stv090x_state *state = fe->demodulator_priv; |
643 | const struct stv090x_config *config = state->config; | ||
644 | u32 reg; | 656 | u32 reg; |
645 | 657 | ||
646 | reg = STV090x_READ_DEMOD(state, I2CRPT); | 658 | reg = STV090x_READ_DEMOD(state, I2CRPT); |
647 | // STV090x_SETFIELD_Px(reg, ENARPT_LEVEL_FIELD, config->repeater_level); | ||
648 | if (enable) { | 659 | if (enable) { |
649 | dprintk(FE_DEBUG, 1, "Enable Gate"); | 660 | dprintk(FE_DEBUG, 1, "Enable Gate"); |
650 | STV090x_SETFIELD_Px(reg, I2CT_ON_FIELD, 1); | 661 | STV090x_SETFIELD_Px(reg, I2CT_ON_FIELD, 1); |
@@ -3605,10 +3616,12 @@ static int stv090x_set_tspath(struct stv090x_state *state) | |||
3605 | case STV090x_TSMODE_SERIAL_PUNCTURED: | 3616 | case STV090x_TSMODE_SERIAL_PUNCTURED: |
3606 | case STV090x_TSMODE_SERIAL_CONTINUOUS: | 3617 | case STV090x_TSMODE_SERIAL_CONTINUOUS: |
3607 | default: | 3618 | default: |
3619 | stv090x_write_reg(state, STV090x_TSGENERAL1X, 0x10); | ||
3608 | break; | 3620 | break; |
3609 | 3621 | ||
3610 | case STV090x_TSMODE_PARALLEL_PUNCTURED: | 3622 | case STV090x_TSMODE_PARALLEL_PUNCTURED: |
3611 | case STV090x_TSMODE_DVBCI: | 3623 | case STV090x_TSMODE_DVBCI: |
3624 | stv090x_write_reg(state, STV090x_TSGENERAL1X, 0x16); | ||
3612 | reg = stv090x_read_reg(state, STV090x_P1_TSCFGM); | 3625 | reg = stv090x_read_reg(state, STV090x_P1_TSCFGM); |
3613 | STV090x_SETFIELD_Px(reg, TSFIFO_MANSPEED_FIELD, 3); | 3626 | STV090x_SETFIELD_Px(reg, TSFIFO_MANSPEED_FIELD, 3); |
3614 | if (stv090x_write_reg(state, STV090x_P1_TSCFGM, reg) < 0) | 3627 | if (stv090x_write_reg(state, STV090x_P1_TSCFGM, reg) < 0) |
@@ -3632,10 +3645,12 @@ static int stv090x_set_tspath(struct stv090x_state *state) | |||
3632 | case STV090x_TSMODE_SERIAL_PUNCTURED: | 3645 | case STV090x_TSMODE_SERIAL_PUNCTURED: |
3633 | case STV090x_TSMODE_SERIAL_CONTINUOUS: | 3646 | case STV090x_TSMODE_SERIAL_CONTINUOUS: |
3634 | default: | 3647 | default: |
3648 | stv090x_write_reg(state, STV090x_TSGENERAL1X, 0x14); | ||
3635 | break; | 3649 | break; |
3636 | 3650 | ||
3637 | case STV090x_TSMODE_PARALLEL_PUNCTURED: | 3651 | case STV090x_TSMODE_PARALLEL_PUNCTURED: |
3638 | case STV090x_TSMODE_DVBCI: | 3652 | case STV090x_TSMODE_DVBCI: |
3653 | stv090x_write_reg(state, STV090x_TSGENERAL1X, 0x12); | ||
3639 | break; | 3654 | break; |
3640 | } | 3655 | } |
3641 | break; | 3656 | break; |
@@ -3893,6 +3908,7 @@ struct dvb_frontend *stv090x_attach(const struct stv090x_config *config, | |||
3893 | state->i2c = i2c; | 3908 | state->i2c = i2c; |
3894 | state->frontend.ops = stv090x_ops; | 3909 | state->frontend.ops = stv090x_ops; |
3895 | state->frontend.demodulator_priv = state; | 3910 | state->frontend.demodulator_priv = state; |
3911 | state->demod = demod; | ||
3896 | state->demod_mode = config->demod_mode; /* Single or Dual mode */ | 3912 | state->demod_mode = config->demod_mode; /* Single or Dual mode */ |
3897 | state->device = config->device; | 3913 | state->device = config->device; |
3898 | state->rolloff = 35; /* default */ | 3914 | state->rolloff = 35; /* default */ |