Lines Matching defs: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;
154 sp887x_writereg(state, 0xf1a, 0x000);
156 sp887x_microcontroller_stop (state);
162 sp887x_writereg(state, 0x8f08, 0x1fff);
165 sp887x_writereg(state, 0x8f0a, 0x0000);
182 if ((err = i2c_writebytes (state, buf, c+2)) < 0) {
190 sp887x_writereg(state, 0xc13, 0x001);
193 sp887x_writereg(state, 0xc14, 0x000);
196 sp887x_writereg(state, 0xc1a, 0x872);
197 sp887x_writereg(state, 0xc1b, 0x001);
198 sp887x_writereg(state, 0xc1c, 0x000); /* parallel mode (serial mode == 1) */
199 sp887x_writereg(state, 0xc1a, 0x871);
202 sp887x_writereg(state, 0x301, 0x002);
204 sp887x_setup_agc(state);
207 sp887x_writereg(state, 0xd00, 0x010);
208 sp887x_writereg(state, 0x0d1, 0x000);
305 static void sp887x_correct_offsets (struct sp887x_state* state,
341 sp887x_writereg(state, 0x319, srate_correction[bw_index] >> 12);
342 sp887x_writereg(state, 0x31a, srate_correction[bw_index] & 0xfff);
345 sp887x_writereg(state, 0x309, frequency_shift >> 12);
346 sp887x_writereg(state, 0x30a, frequency_shift & 0xfff);
352 struct sp887x_state* state = fe->demodulator_priv;
365 sp887x_microcontroller_stop(state);
380 sp887x_readreg(state, 0x200);
382 sp887x_correct_offsets(state, p, actual_freq);
392 sp887x_writereg(state, 0x311, val);
396 sp887x_writereg(state, 0x338, 0x000);
398 sp887x_writereg(state, 0x338, 0x001);
400 sp887x_writereg(state, 0xc05, reg0xc05);
412 sp887x_writereg(state, 0xf14, 0x160 | val);
413 sp887x_writereg(state, 0xf15, 0x000);
415 sp887x_microcontroller_start(state);
421 struct sp887x_state* state = fe->demodulator_priv;
422 u16 snr12 = sp887x_readreg(state, 0xf16);
423 u16 sync0x200 = sp887x_readreg(state, 0x200);
424 u16 sync0xf17 = sp887x_readreg(state, 0xf17);
455 struct sp887x_state* state = fe->demodulator_priv;
457 *ber = (sp887x_readreg(state, 0xc08) & 0x3f) |
458 (sp887x_readreg(state, 0xc07) << 6);
459 sp887x_writereg(state, 0xc08, 0x000);
460 sp887x_writereg(state, 0xc07, 0x000);
469 struct sp887x_state* state = fe->demodulator_priv;
471 u16 snr12 = sp887x_readreg(state, 0xf16);
480 struct sp887x_state* state = fe->demodulator_priv;
482 u16 snr12 = sp887x_readreg(state, 0xf16);
490 struct sp887x_state* state = fe->demodulator_priv;
492 *ucblocks = sp887x_readreg(state, 0xc0c);
501 struct sp887x_state* state = fe->demodulator_priv;
504 return sp887x_writereg(state, 0x206, 0x001);
506 return sp887x_writereg(state, 0x206, 0x000);
512 struct sp887x_state* state = fe->demodulator_priv;
515 sp887x_writereg(state, 0xc18, 0x000);
522 struct sp887x_state* state = fe->demodulator_priv;
526 if (!state->initialised) {
529 ret = state->config->request_firmware(fe, &fw, SP887X_DEFAULT_FIRMWARE);
542 state->initialised = 1;
546 sp887x_writereg(state, 0xc18, 0x00d);
561 struct sp887x_state* state = fe->demodulator_priv;
562 kfree(state);
570 struct sp887x_state* state = NULL;
572 /* allocate memory for the internal state */
573 state = kzalloc(sizeof(struct sp887x_state), GFP_KERNEL);
574 if (state == NULL) goto error;
576 /* setup the state */
577 state->config = config;
578 state->i2c = i2c;
579 state->initialised = 0;
582 if (sp887x_readreg(state, 0x0200) < 0) goto error;
585 memcpy(&state->frontend.ops, &sp887x_ops, sizeof(struct dvb_frontend_ops));
586 state->frontend.demodulator_priv = state;
587 return &state->frontend;
590 kfree(state);