aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb/frontends/stv090x.c
diff options
context:
space:
mode:
authorManu Abraham <abraham.manu@gmail.com>2009-04-07 15:08:26 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2009-06-16 17:20:38 -0400
commit5657150759ab67292db0333808a069970328663b (patch)
treec9c500a23f1a2bc46e50c778028283698a945882 /drivers/media/dvb/frontends/stv090x.c
parent017eb0381fedbfdcad1e8e536d014c4064e6687f (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.c24
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[] = {
176static struct stv090x_reg stv0900_initval[] = { 176static 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[] = {
434static struct stv090x_reg stv0900_cut20_val[] = { 444static 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
468static struct stv090x_reg stv0903_cut20_val[] = { 480static 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
640static int stv090x_i2c_gate_ctrl(struct dvb_frontend *fe, int enable) 653static 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 */