Lines Matching defs:state

52 static int l64781_writereg (struct l64781_state* state, u8 reg, u8 data)
56 struct i2c_msg msg = { .addr = state->config->demod_address, .flags = 0, .buf = buf, .len = 2 };
58 if ((ret = i2c_transfer(state->i2c, &msg, 1)) != 1)
65 static int l64781_readreg (struct l64781_state* state, u8 reg)
70 struct i2c_msg msg [] = { { .addr = state->config->demod_address, .flags = 0, .buf = b0, .len = 1 },
71 { .addr = state->config->demod_address, .flags = I2C_M_RD, .buf = b1, .len = 1 } };
73 ret = i2c_transfer(state->i2c, msg, 2);
80 static void apply_tps (struct l64781_state* state)
82 l64781_writereg (state, 0x2a, 0x00);
83 l64781_writereg (state, 0x2a, 0x01);
90 l64781_writereg (state, 0x2a, 0x02);
94 static void reset_afc (struct l64781_state* state)
98 l64781_writereg (state, 0x07, 0x9e); /* stall AFC */
99 l64781_writereg (state, 0x08, 0); /* AFC INIT FREQ */
100 l64781_writereg (state, 0x09, 0);
101 l64781_writereg (state, 0x0a, 0);
102 l64781_writereg (state, 0x07, 0x8e);
103 l64781_writereg (state, 0x0e, 0); /* AGC gain to zero in beginning */
104 l64781_writereg (state, 0x11, 0x80); /* stall TIM */
105 l64781_writereg (state, 0x10, 0); /* TIM_OFFSET_LSB */
106 l64781_writereg (state, 0x12, 0);
107 l64781_writereg (state, 0x13, 0);
108 l64781_writereg (state, 0x11, 0x00);
111 static int reset_and_configure (struct l64781_state* state)
117 return (i2c_transfer(state->i2c, &msg, 1) == 1) ? 0 : -ENODEV;
123 struct l64781_state* state = fe->demodulator_priv;
217 l64781_writereg (state, 0x04, val0x04);
218 l64781_writereg (state, 0x05, val0x05);
219 l64781_writereg (state, 0x06, val0x06);
221 reset_afc (state);
224 l64781_writereg (state, 0x15,
226 l64781_writereg (state, 0x16, init_freq & 0xff);
227 l64781_writereg (state, 0x17, (init_freq >> 8) & 0xff);
228 l64781_writereg (state, 0x18, (init_freq >> 16) & 0xff);
230 l64781_writereg (state, 0x1b, spi_bias & 0xff);
231 l64781_writereg (state, 0x1c, (spi_bias >> 8) & 0xff);
232 l64781_writereg (state, 0x1d, ((spi_bias >> 16) & 0x7f) |
235 l64781_writereg (state, 0x22, ddfs_offset_fixed & 0xff);
236 l64781_writereg (state, 0x23, (ddfs_offset_fixed >> 8) & 0x3f);
238 l64781_readreg (state, 0x00); /* clear interrupt registers... */
239 l64781_readreg (state, 0x01); /* dto. */
241 apply_tps (state);
249 struct l64781_state* state = fe->demodulator_priv;
253 tmp = l64781_readreg(state, 0x04);
279 tmp = l64781_readreg(state, 0x05);
319 tmp = l64781_readreg(state, 0x06);
351 tmp = l64781_readreg (state, 0x1d);
354 tmp = (int) (l64781_readreg (state, 0x08) |
355 (l64781_readreg (state, 0x09) << 8) |
356 (l64781_readreg (state, 0x0a) << 16));
364 struct l64781_state* state = fe->demodulator_priv;
365 int sync = l64781_readreg (state, 0x32);
366 int gain = l64781_readreg (state, 0x0e);
368 l64781_readreg (state, 0x00); /* clear interrupt registers... */
369 l64781_readreg (state, 0x01); /* dto. */
393 struct l64781_state* state = fe->demodulator_priv;
397 *ber = l64781_readreg (state, 0x39)
398 | (l64781_readreg (state, 0x3a) << 8);
405 struct l64781_state* state = fe->demodulator_priv;
407 u8 gain = l64781_readreg (state, 0x0e);
415 struct l64781_state* state = fe->demodulator_priv;
417 u8 avg_quality = 0xff - l64781_readreg (state, 0x33);
425 struct l64781_state* state = fe->demodulator_priv;
427 *ucblocks = l64781_readreg (state, 0x37)
428 | (l64781_readreg (state, 0x38) << 8);
435 struct l64781_state* state = fe->demodulator_priv;
438 return l64781_writereg (state, 0x3e, 0x5a);
443 struct l64781_state* state = fe->demodulator_priv;
445 reset_and_configure (state);
448 l64781_writereg (state, 0x3e, 0xa5);
451 l64781_writereg (state, 0x2a, 0x04);
452 l64781_writereg (state, 0x2a, 0x00);
456 l64781_writereg (state, 0x07, 0x8e);
459 l64781_writereg (state, 0x0b, 0x81);
462 l64781_writereg (state, 0x0c, 0x84);
465 l64781_writereg (state, 0x0d, 0x8c);
470 /*l64781_writereg (state, 0x19, 0x92);*/
473 l64781_writereg (state, 0x1e, 0x09);
476 if (state->first) {
477 state->first = 0;
495 struct l64781_state* state = fe->demodulator_priv;
496 kfree(state);
504 struct l64781_state* state = NULL;
511 /* allocate memory for the internal state */
512 state = kzalloc(sizeof(struct l64781_state), GFP_KERNEL);
513 if (state == NULL) goto error;
515 /* setup the state */
516 state->config = config;
517 state->i2c = i2c;
518 state->first = 1;
524 if (reset_and_configure(state) < 0) {
530 if (i2c_transfer(state->i2c, msg, 2) != 2) {
536 reg0x3e = l64781_readreg(state, 0x3e);
545 l64781_writereg (state, 0x3e, 0x5a);
548 if (l64781_readreg(state, 0x1a) != 0) {
554 l64781_writereg (state, 0x3e, 0xa5);
557 if (l64781_readreg(state, 0x1a) != 0xa1) {
563 memcpy(&state->frontend.ops, &l64781_ops, sizeof(struct dvb_frontend_ops));
564 state->frontend.demodulator_priv = state;
565 return &state->frontend;
569 l64781_writereg (state, 0x3e, reg0x3e); /* restore reg 0x3e */
570 kfree(state);