Lines Matching refs:state
40 static int l64781_writereg (struct l64781_state* state, u8 reg, u8 data)
44 struct i2c_msg msg = { .addr = state->config->demod_address, .flags = 0, .buf = buf, .len = 2 };
46 if ((ret = i2c_transfer(state->i2c, &msg, 1)) != 1)
53 static int l64781_readreg (struct l64781_state* state, u8 reg)
58 struct i2c_msg msg [] = { { .addr = state->config->demod_address, .flags = 0, .buf = b0, .len = 1 },
59 { .addr = state->config->demod_address, .flags = I2C_M_RD, .buf = b1, .len = 1 } };
61 ret = i2c_transfer(state->i2c, msg, 2);
68 static void apply_tps (struct l64781_state* state)
70 l64781_writereg (state, 0x2a, 0x00);
71 l64781_writereg (state, 0x2a, 0x01);
78 l64781_writereg (state, 0x2a, 0x02);
82 static void reset_afc (struct l64781_state* state)
86 l64781_writereg (state, 0x07, 0x9e); /* stall AFC */
87 l64781_writereg (state, 0x08, 0); /* AFC INIT FREQ */
88 l64781_writereg (state, 0x09, 0);
89 l64781_writereg (state, 0x0a, 0);
90 l64781_writereg (state, 0x07, 0x8e);
91 l64781_writereg (state, 0x0e, 0); /* AGC gain to zero in beginning */
92 l64781_writereg (state, 0x11, 0x80); /* stall TIM */
93 l64781_writereg (state, 0x10, 0); /* TIM_OFFSET_LSB */
94 l64781_writereg (state, 0x12, 0);
95 l64781_writereg (state, 0x13, 0);
96 l64781_writereg (state, 0x11, 0x00);
99 static int reset_and_configure (struct l64781_state* state)
105 return (i2c_transfer(state->i2c, &msg, 1) == 1) ? 0 : -ENODEV;
111 struct l64781_state* state = fe->demodulator_priv;
205 l64781_writereg (state, 0x04, val0x04);
206 l64781_writereg (state, 0x05, val0x05);
207 l64781_writereg (state, 0x06, val0x06);
209 reset_afc (state);
212 l64781_writereg (state, 0x15,
214 l64781_writereg (state, 0x16, init_freq & 0xff);
215 l64781_writereg (state, 0x17, (init_freq >> 8) & 0xff);
216 l64781_writereg (state, 0x18, (init_freq >> 16) & 0xff);
218 l64781_writereg (state, 0x1b, spi_bias & 0xff);
219 l64781_writereg (state, 0x1c, (spi_bias >> 8) & 0xff);
220 l64781_writereg (state, 0x1d, ((spi_bias >> 16) & 0x7f) |
223 l64781_writereg (state, 0x22, ddfs_offset_fixed & 0xff);
224 l64781_writereg (state, 0x23, (ddfs_offset_fixed >> 8) & 0x3f);
226 l64781_readreg (state, 0x00); /* clear interrupt registers... */
227 l64781_readreg (state, 0x01); /* dto. */
229 apply_tps (state);
237 struct l64781_state* state = fe->demodulator_priv;
241 tmp = l64781_readreg(state, 0x04);
267 tmp = l64781_readreg(state, 0x05);
307 tmp = l64781_readreg(state, 0x06);
339 tmp = l64781_readreg (state, 0x1d);
342 tmp = (int) (l64781_readreg (state, 0x08) |
343 (l64781_readreg (state, 0x09) << 8) |
344 (l64781_readreg (state, 0x0a) << 16));
352 struct l64781_state* state = fe->demodulator_priv;
353 int sync = l64781_readreg (state, 0x32);
354 int gain = l64781_readreg (state, 0x0e);
356 l64781_readreg (state, 0x00); /* clear interrupt registers... */
357 l64781_readreg (state, 0x01); /* dto. */
381 struct l64781_state* state = fe->demodulator_priv;
385 *ber = l64781_readreg (state, 0x39)
386 | (l64781_readreg (state, 0x3a) << 8);
393 struct l64781_state* state = fe->demodulator_priv;
395 u8 gain = l64781_readreg (state, 0x0e);
403 struct l64781_state* state = fe->demodulator_priv;
405 u8 avg_quality = 0xff - l64781_readreg (state, 0x33);
413 struct l64781_state* state = fe->demodulator_priv;
415 *ucblocks = l64781_readreg (state, 0x37)
416 | (l64781_readreg (state, 0x38) << 8);
423 struct l64781_state* state = fe->demodulator_priv;
426 return l64781_writereg (state, 0x3e, 0x5a);
431 struct l64781_state* state = fe->demodulator_priv;
433 reset_and_configure (state);
436 l64781_writereg (state, 0x3e, 0xa5);
439 l64781_writereg (state, 0x2a, 0x04);
440 l64781_writereg (state, 0x2a, 0x00);
444 l64781_writereg (state, 0x07, 0x8e);
447 l64781_writereg (state, 0x0b, 0x81);
450 l64781_writereg (state, 0x0c, 0x84);
453 l64781_writereg (state, 0x0d, 0x8c);
458 /*l64781_writereg (state, 0x19, 0x92);*/
461 l64781_writereg (state, 0x1e, 0x09);
464 if (state->first) {
465 state->first = 0;
483 struct l64781_state* state = fe->demodulator_priv;
484 kfree(state);
492 struct l64781_state* state = NULL;
499 /* allocate memory for the internal state */
500 state = kzalloc(sizeof(struct l64781_state), GFP_KERNEL);
501 if (state == NULL) goto error;
503 /* setup the state */
504 state->config = config;
505 state->i2c = i2c;
506 state->first = 1;
512 if (reset_and_configure(state) < 0) {
518 if (i2c_transfer(state->i2c, msg, 2) != 2) {
524 reg0x3e = l64781_readreg(state, 0x3e);
533 l64781_writereg (state, 0x3e, 0x5a);
536 if (l64781_readreg(state, 0x1a) != 0) {
542 l64781_writereg (state, 0x3e, 0xa5);
545 if (l64781_readreg(state, 0x1a) != 0xa1) {
551 memcpy(&state->frontend.ops, &l64781_ops, sizeof(struct dvb_frontend_ops));
552 state->frontend.demodulator_priv = state;
553 return &state->frontend;
557 l64781_writereg (state, 0x3e, reg0x3e); /* restore reg 0x3e */
558 kfree(state);