Lines Matching refs:state
40 static int i2c_writebytes (struct sp887x_state* state, u8 *buf, u8 len)
42 struct i2c_msg msg = { .addr = state->config->demod_address, .flags = 0, .buf = buf, .len = len };
45 if ((err = i2c_transfer (state->i2c, &msg, 1)) != 1) {
47 __func__, state->config->demod_address, err);
54 static int sp887x_writereg (struct sp887x_state* state, u16 reg, u16 data)
57 struct i2c_msg msg = { .addr = state->config->demod_address, .flags = 0, .buf = b0, .len = 4 };
60 if ((ret = i2c_transfer(state->i2c, &msg, 1)) != 1) {
76 static int sp887x_readreg (struct sp887x_state* state, u16 reg)
81 struct i2c_msg msg[] = {{ .addr = state->config->demod_address, .flags = 0, .buf = b0, .len = 2 },
82 { .addr = state->config->demod_address, .flags = I2C_M_RD, .buf = b1, .len = 2 }};
84 if ((ret = i2c_transfer(state->i2c, msg, 2)) != 2) {
92 static void sp887x_microcontroller_stop (struct sp887x_state* state)
95 sp887x_writereg(state, 0xf08, 0x000);
96 sp887x_writereg(state, 0xf09, 0x000);
99 sp887x_writereg(state, 0xf00, 0x000);
102 static void sp887x_microcontroller_start (struct sp887x_state* state)
105 sp887x_writereg(state, 0xf08, 0x000);
106 sp887x_writereg(state, 0xf09, 0x000);
109 sp887x_writereg(state, 0xf00, 0x001);
112 static void sp887x_setup_agc (struct sp887x_state* state)
116 sp887x_writereg(state, 0x33c, 0x054);
117 sp887x_writereg(state, 0x33b, 0x04c);
118 sp887x_writereg(state, 0x328, 0x000);
119 sp887x_writereg(state, 0x327, 0x005);
120 sp887x_writereg(state, 0x326, 0x001);
121 sp887x_writereg(state, 0x325, 0x001);
122 sp887x_writereg(state, 0x324, 0x001);
123 sp887x_writereg(state, 0x318, 0x050);
124 sp887x_writereg(state, 0x317, 0x3fe);
125 sp887x_writereg(state, 0x316, 0x001);
126 sp887x_writereg(state, 0x313, 0x005);
127 sp887x_writereg(state, 0x312, 0x002);
128 sp887x_writereg(state, 0x306, 0x000);
129 sp887x_writereg(state, 0x303, 0x000);
139 struct sp887x_state* state = fe->demodulator_priv;
152 sp887x_writereg(state, 0xf1a, 0x000);
154 sp887x_microcontroller_stop (state);
160 sp887x_writereg(state, 0x8f08, 0x1fff);
163 sp887x_writereg(state, 0x8f0a, 0x0000);
180 if ((err = i2c_writebytes (state, buf, c+2)) < 0) {
188 sp887x_writereg(state, 0xc13, 0x001);
191 sp887x_writereg(state, 0xc14, 0x000);
194 sp887x_writereg(state, 0xc1a, 0x872);
195 sp887x_writereg(state, 0xc1b, 0x001);
196 sp887x_writereg(state, 0xc1c, 0x000); /* parallel mode (serial mode == 1) */
197 sp887x_writereg(state, 0xc1a, 0x871);
200 sp887x_writereg(state, 0x301, 0x002);
202 sp887x_setup_agc(state);
205 sp887x_writereg(state, 0xd00, 0x010);
206 sp887x_writereg(state, 0x0d1, 0x000);
303 static void sp887x_correct_offsets (struct sp887x_state* state,
339 sp887x_writereg(state, 0x319, srate_correction[bw_index] >> 12);
340 sp887x_writereg(state, 0x31a, srate_correction[bw_index] & 0xfff);
343 sp887x_writereg(state, 0x309, frequency_shift >> 12);
344 sp887x_writereg(state, 0x30a, frequency_shift & 0xfff);
350 struct sp887x_state* state = fe->demodulator_priv;
363 sp887x_microcontroller_stop(state);
378 sp887x_readreg(state, 0x200);
380 sp887x_correct_offsets(state, p, actual_freq);
390 sp887x_writereg(state, 0x311, val);
394 sp887x_writereg(state, 0x338, 0x000);
396 sp887x_writereg(state, 0x338, 0x001);
398 sp887x_writereg(state, 0xc05, reg0xc05);
410 sp887x_writereg(state, 0xf14, 0x160 | val);
411 sp887x_writereg(state, 0xf15, 0x000);
413 sp887x_microcontroller_start(state);
419 struct sp887x_state* state = fe->demodulator_priv;
420 u16 snr12 = sp887x_readreg(state, 0xf16);
421 u16 sync0x200 = sp887x_readreg(state, 0x200);
422 u16 sync0xf17 = sp887x_readreg(state, 0xf17);
453 struct sp887x_state* state = fe->demodulator_priv;
455 *ber = (sp887x_readreg(state, 0xc08) & 0x3f) |
456 (sp887x_readreg(state, 0xc07) << 6);
457 sp887x_writereg(state, 0xc08, 0x000);
458 sp887x_writereg(state, 0xc07, 0x000);
467 struct sp887x_state* state = fe->demodulator_priv;
469 u16 snr12 = sp887x_readreg(state, 0xf16);
478 struct sp887x_state* state = fe->demodulator_priv;
480 u16 snr12 = sp887x_readreg(state, 0xf16);
488 struct sp887x_state* state = fe->demodulator_priv;
490 *ucblocks = sp887x_readreg(state, 0xc0c);
499 struct sp887x_state* state = fe->demodulator_priv;
502 return sp887x_writereg(state, 0x206, 0x001);
504 return sp887x_writereg(state, 0x206, 0x000);
510 struct sp887x_state* state = fe->demodulator_priv;
513 sp887x_writereg(state, 0xc18, 0x000);
520 struct sp887x_state* state = fe->demodulator_priv;
524 if (!state->initialised) {
527 ret = state->config->request_firmware(fe, &fw, SP887X_DEFAULT_FIRMWARE);
540 state->initialised = 1;
544 sp887x_writereg(state, 0xc18, 0x00d);
559 struct sp887x_state* state = fe->demodulator_priv;
560 kfree(state);
568 struct sp887x_state* state = NULL;
570 /* allocate memory for the internal state */
571 state = kzalloc(sizeof(struct sp887x_state), GFP_KERNEL);
572 if (state == NULL) goto error;
574 /* setup the state */
575 state->config = config;
576 state->i2c = i2c;
577 state->initialised = 0;
580 if (sp887x_readreg(state, 0x0200) < 0) goto error;
583 memcpy(&state->frontend.ops, &sp887x_ops, sizeof(struct dvb_frontend_ops));
584 state->frontend.demodulator_priv = state;
585 return &state->frontend;
588 kfree(state);