Lines Matching refs:state
64 static u8 tda10023_readreg (struct tda10023_state* state, u8 reg) in tda10023_readreg() argument
68 …struct i2c_msg msg [] = { { .addr = state->config->demod_address, .flags = 0, .buf = b0, .len = 1 … in tda10023_readreg()
69 { .addr = state->config->demod_address, .flags = I2C_M_RD, .buf = b1, .len = 1 } }; in tda10023_readreg()
72 ret = i2c_transfer (state->i2c, msg, 2); in tda10023_readreg()
74 int num = state->frontend.dvb ? state->frontend.dvb->num : -1; in tda10023_readreg()
82 static int tda10023_writereg (struct tda10023_state* state, u8 reg, u8 data) in tda10023_writereg() argument
85 struct i2c_msg msg = { .addr = state->config->demod_address, .flags = 0, .buf = buf, .len = 2 }; in tda10023_writereg()
88 ret = i2c_transfer (state->i2c, &msg, 1); in tda10023_writereg()
90 int num = state->frontend.dvb ? state->frontend.dvb->num : -1; in tda10023_writereg()
99 static int tda10023_writebit (struct tda10023_state* state, u8 reg, u8 mask,u8 data) in tda10023_writebit() argument
102 return tda10023_writereg(state, reg, data); in tda10023_writebit()
105 val=tda10023_readreg(state,reg); in tda10023_writebit()
108 return tda10023_writereg(state, reg, val); in tda10023_writebit()
112 static void tda10023_writetab(struct tda10023_state* state, u8* tab) in tda10023_writetab() argument
126 tda10023_writebit(state,r,m,v); in tda10023_writetab()
131 static int lock_tuner(struct tda10023_state* state) in lock_tuner() argument
134 struct i2c_msg msg = {.addr=state->config->demod_address, .flags=0, .buf=buf, .len=2}; in lock_tuner()
136 if(i2c_transfer(state->i2c, &msg, 1) != 1) in lock_tuner()
145 static int unlock_tuner(struct tda10023_state* state) in unlock_tuner() argument
148 struct i2c_msg msg_post={.addr=state->config->demod_address, .flags=0, .buf=buf, .len=2}; in unlock_tuner()
150 if(i2c_transfer(state->i2c, &msg_post, 1) != 1) in unlock_tuner()
158 static int tda10023_setup_reg0 (struct tda10023_state* state, u8 reg0) in tda10023_setup_reg0() argument
160 reg0 |= state->reg0 & 0x63; in tda10023_setup_reg0()
162 tda10023_writereg (state, 0x00, reg0 & 0xfe); in tda10023_setup_reg0()
163 tda10023_writereg (state, 0x00, reg0 | 0x01); in tda10023_setup_reg0()
165 state->reg0 = reg0; in tda10023_setup_reg0()
169 static int tda10023_set_symbolrate (struct tda10023_state* state, u32 sr) in tda10023_set_symbolrate() argument
178 u32 sysclk_x_10 = state->sysclk * 10; in tda10023_set_symbolrate()
203 BDRI = (state->sysclk)*16; in tda10023_set_symbolrate()
216 do_div(BDRX, state->sysclk); /* BDRX/=SYSCLK; */ in tda10023_set_symbolrate()
222 tda10023_writebit (state, 0x03, 0xc0, NDEC<<6); in tda10023_set_symbolrate()
223 tda10023_writereg (state, 0x0a, BDR&255); in tda10023_set_symbolrate()
224 tda10023_writereg (state, 0x0b, (BDR>>8)&255); in tda10023_set_symbolrate()
225 tda10023_writereg (state, 0x0c, (BDR>>16)&31); in tda10023_set_symbolrate()
226 tda10023_writereg (state, 0x0d, BDRI); in tda10023_set_symbolrate()
227 tda10023_writereg (state, 0x3d, (SFIL<<7)); in tda10023_set_symbolrate()
233 struct tda10023_state* state = fe->demodulator_priv; in tda10023_init() local
241 /* 012 */ 0x28, 0xff, (state->pll_m-1), in tda10023_init()
243 /* 015 */ 0x29, 0xff, ((state->pll_p-1)<<6)|(state->pll_n-1), in tda10023_init()
288 if (state->config->deltaf) { in tda10023_init()
289 tda10023_inittab[80] = (state->config->deltaf & 0xff); in tda10023_init()
290 tda10023_inittab[83] = (state->config->deltaf >> 8); in tda10023_init()
293 if (state->config->output_mode) in tda10023_init()
294 tda10023_inittab[95] = state->config->output_mode; in tda10023_init()
296 tda10023_writetab(state, tda10023_inittab); in tda10023_init()
311 struct tda10023_state* state = fe->demodulator_priv; in tda10023_set_parameters() local
357 tda10023_set_symbolrate(state, c->symbol_rate); in tda10023_set_parameters()
358 tda10023_writereg(state, 0x05, qam_params[qam].lockthr); in tda10023_set_parameters()
359 tda10023_writereg(state, 0x08, qam_params[qam].mseth); in tda10023_set_parameters()
360 tda10023_writereg(state, 0x09, qam_params[qam].aref); in tda10023_set_parameters()
361 tda10023_writereg(state, 0xb4, qam_params[qam].agcrefnyq); in tda10023_set_parameters()
362 tda10023_writereg(state, 0xb6, qam_params[qam].eragnyq_thd); in tda10023_set_parameters()
364 tda10023_writereg(state, 0x04, (c->inversion ? 0x12 : 0x32)); in tda10023_set_parameters()
365 tda10023_writebit(state, 0x04, 0x60, (c->inversion ? 0 : 0x20)); in tda10023_set_parameters()
367 tda10023_writebit(state, 0x04, 0x40, 0x40); in tda10023_set_parameters()
370 tda10023_writebit(state, 0x3d, 0xfc, 0x03); in tda10023_set_parameters()
372 tda10023_writebit(state, 0x3d, 0xfc, 0x02); in tda10023_set_parameters()
374 tda10023_setup_reg0(state, qam_params[qam].qam); in tda10023_set_parameters()
381 struct tda10023_state* state = fe->demodulator_priv; in tda10023_read_status() local
390 sync = tda10023_readreg (state, 0x11); in tda10023_read_status()
406 struct tda10023_state* state = fe->demodulator_priv; in tda10023_read_ber() local
408 a=tda10023_readreg(state, 0x14); in tda10023_read_ber()
409 b=tda10023_readreg(state, 0x15); in tda10023_read_ber()
410 c=tda10023_readreg(state, 0x16)&0xf; in tda10023_read_ber()
411 tda10023_writebit (state, 0x10, 0xc0, 0x00); in tda10023_read_ber()
419 struct tda10023_state* state = fe->demodulator_priv; in tda10023_read_signal_strength() local
420 u8 ifgain=tda10023_readreg(state, 0x2f); in tda10023_read_signal_strength()
422 u16 gain = ((255-tda10023_readreg(state, 0x17))) + (255-ifgain)/16; in tda10023_read_signal_strength()
435 struct tda10023_state* state = fe->demodulator_priv; in tda10023_read_snr() local
437 u8 quality = ~tda10023_readreg(state, 0x18); in tda10023_read_snr()
444 struct tda10023_state* state = fe->demodulator_priv; in tda10023_read_ucblocks() local
446 a= tda10023_readreg (state, 0x74); in tda10023_read_ucblocks()
447 b= tda10023_readreg (state, 0x75); in tda10023_read_ucblocks()
448 c= tda10023_readreg (state, 0x76); in tda10023_read_ucblocks()
449 d= tda10023_readreg (state, 0x77); in tda10023_read_ucblocks()
452 tda10023_writebit (state, 0x10, 0x20,0x00); in tda10023_read_ucblocks()
453 tda10023_writebit (state, 0x10, 0x20,0x20); in tda10023_read_ucblocks()
454 tda10023_writebit (state, 0x13, 0x01, 0x00); in tda10023_read_ucblocks()
462 struct tda10023_state* state = fe->demodulator_priv; in tda10023_get_frontend() local
466 sync = tda10023_readreg(state, 0x11); in tda10023_get_frontend()
467 afc = tda10023_readreg(state, 0x19); in tda10023_get_frontend()
468 inv = tda10023_readreg(state, 0x04); in tda10023_get_frontend()
474 state->frontend.dvb->num, afc, in tda10023_get_frontend()
479 p->modulation = ((state->reg0 >> 2) & 7) + QAM_16; in tda10023_get_frontend()
492 struct tda10023_state* state = fe->demodulator_priv; in tda10023_sleep() local
494 tda10023_writereg (state, 0x1b, 0x02); /* pdown ADC */ in tda10023_sleep()
495 tda10023_writereg (state, 0x00, 0x80); /* standby */ in tda10023_sleep()
502 struct tda10023_state* state = fe->demodulator_priv; in tda10023_i2c_gate_ctrl() local
505 lock_tuner(state); in tda10023_i2c_gate_ctrl()
507 unlock_tuner(state); in tda10023_i2c_gate_ctrl()
514 struct tda10023_state* state = fe->demodulator_priv; in tda10023_release() local
515 kfree(state); in tda10023_release()
524 struct tda10023_state* state = NULL; in tda10023_attach() local
527 state = kzalloc(sizeof(struct tda10023_state), GFP_KERNEL); in tda10023_attach()
528 if (state == NULL) goto error; in tda10023_attach()
531 state->config = config; in tda10023_attach()
532 state->i2c = i2c; in tda10023_attach()
535 tda10023_writereg (state, 0x00, 0x33); in tda10023_attach()
537 if ((tda10023_readreg(state, 0x1a) & 0xf0) != 0x70) goto error; in tda10023_attach()
540 memcpy(&state->frontend.ops, &tda10023_ops, sizeof(struct dvb_frontend_ops)); in tda10023_attach()
541 state->pwm = pwm; in tda10023_attach()
542 state->reg0 = REG0_INIT_VAL; in tda10023_attach()
543 if (state->config->xtal) { in tda10023_attach()
544 state->xtal = state->config->xtal; in tda10023_attach()
545 state->pll_m = state->config->pll_m; in tda10023_attach()
546 state->pll_p = state->config->pll_p; in tda10023_attach()
547 state->pll_n = state->config->pll_n; in tda10023_attach()
550 state->xtal = 28920000; in tda10023_attach()
551 state->pll_m = 8; in tda10023_attach()
552 state->pll_p = 4; in tda10023_attach()
553 state->pll_n = 1; in tda10023_attach()
557 state->sysclk = (state->xtal * state->pll_m / \ in tda10023_attach()
558 (state->pll_n * state->pll_p)); in tda10023_attach()
560 state->frontend.ops.info.symbol_rate_min = (state->sysclk/2)/64; in tda10023_attach()
561 state->frontend.ops.info.symbol_rate_max = (state->sysclk/2)/4; in tda10023_attach()
564 __func__, state->xtal, state->pll_m, state->pll_p, in tda10023_attach()
565 state->pll_n); in tda10023_attach()
567 state->frontend.demodulator_priv = state; in tda10023_attach()
568 return &state->frontend; in tda10023_attach()
571 kfree(state); in tda10023_attach()