Lines Matching defs:state
53 static int sp8870_writereg (struct sp8870_state* state, u16 reg, u16 data)
56 struct i2c_msg msg = { .addr = state->config->demod_address, .flags = 0, .buf = buf, .len = 4 };
59 if ((err = i2c_transfer (state->i2c, &msg, 1)) != 1) {
67 static int sp8870_readreg (struct sp8870_state* state, u16 reg)
72 struct i2c_msg msg [] = { { .addr = state->config->demod_address, .flags = 0, .buf = b0, .len = 2 },
73 { .addr = state->config->demod_address, .flags = I2C_M_RD, .buf = b1, .len = 2 } };
75 ret = i2c_transfer (state->i2c, msg, 2);
85 static int sp8870_firmware_upload (struct sp8870_state* state, const struct firmware *fw)
100 sp8870_writereg(state, 0x0F00, 0x0000);
103 sp8870_writereg(state, 0x8F08, ((SP8870_FIRMWARE_SIZE / 2) & 0xFFFF));
106 sp8870_writereg(state, 0x8F0A, ((SP8870_FIRMWARE_SIZE / 2) >> 16));
116 msg.addr = state->config->demod_address;
120 if ((err = i2c_transfer (state->i2c, &msg, 1)) != 1) {
132 static void sp8870_microcontroller_stop (struct sp8870_state* state)
134 sp8870_writereg(state, 0x0F08, 0x000);
135 sp8870_writereg(state, 0x0F09, 0x000);
138 sp8870_writereg(state, 0x0F00, 0x000);
141 static void sp8870_microcontroller_start (struct sp8870_state* state)
143 sp8870_writereg(state, 0x0F08, 0x000);
144 sp8870_writereg(state, 0x0F09, 0x000);
147 sp8870_writereg(state, 0x0F00, 0x001);
150 sp8870_readreg(state, 0x0D01);
153 static int sp8870_read_data_valid_signal(struct sp8870_state* state)
155 return (sp8870_readreg(state, 0x0D02) > 0);
229 static int sp8870_wake_up(struct sp8870_state* state)
232 return sp8870_writereg(state, 0xC18, 0x00D);
238 struct sp8870_state* state = fe->demodulator_priv;
246 sp8870_microcontroller_stop(state);
255 sp8870_writereg(state, 0x0319, 0x000A);
258 sp8870_writereg(state, 0x031A, 0x0AAB);
261 sp8870_writereg(state, 0x0309, 0x0400);
264 sp8870_writereg(state, 0x030A, 0x0000);
268 sp8870_writereg(state, 0x0311, 0x0002);
270 sp8870_writereg(state, 0x0311, 0x0001);
272 sp8870_writereg(state, 0x0311, 0x0000);
276 sp8870_writereg(state, 0x0338, 0x0000);
278 sp8870_writereg(state, 0x0338, 0x0001);
280 sp8870_writereg(state, 0xc05, reg0xc05);
283 err = sp8870_readreg(state, 0x200);
288 sp8870_microcontroller_start(state);
295 struct sp8870_state* state = fe->demodulator_priv;
298 sp8870_wake_up(state);
299 if (state->initialised) return 0;
300 state->initialised = 1;
307 if (state->config->request_firmware(fe, &fw, SP8870_DEFAULT_FIRMWARE)) {
312 if (sp8870_firmware_upload(state, fw)) {
321 sp8870_writereg(state, 0xc18, 0x00d);
324 sp8870_microcontroller_stop(state);
327 sp8870_writereg(state, 0x0301, 0x0003);
330 sp8870_writereg(state, 0x0C13, 0x0001);
333 sp8870_writereg(state, 0x0C14, 0x0001);
336 sp8870_writereg(state, 0x0D00, 0x010);
337 sp8870_writereg(state, 0x0D01, 0x000);
345 struct sp8870_state* state = fe->demodulator_priv;
351 status = sp8870_readreg (state, 0x0200);
355 signal = sp8870_readreg (state, 0x0303);
371 struct sp8870_state* state = fe->demodulator_priv;
377 ret = sp8870_readreg(state, 0xC08);
383 ret = sp8870_readreg(state, 0xC07);
398 struct sp8870_state* state = fe->demodulator_priv;
404 ret = sp8870_readreg (state, 0x306);
410 ret = sp8870_readreg (state, 0x303);
424 struct sp8870_state* state = fe->demodulator_priv;
429 ret = sp8870_readreg(state, 0xC0C);
454 struct sp8870_state* state = fe->demodulator_priv;
478 valid = sp8870_read_data_valid_signal(state);
512 struct sp8870_state* state = fe->demodulator_priv;
515 return sp8870_writereg(state, 0xC18, 0x000);
528 struct sp8870_state* state = fe->demodulator_priv;
531 return sp8870_writereg(state, 0x206, 0x001);
533 return sp8870_writereg(state, 0x206, 0x000);
539 struct sp8870_state* state = fe->demodulator_priv;
540 kfree(state);
548 struct sp8870_state* state = NULL;
550 /* allocate memory for the internal state */
551 state = kzalloc(sizeof(struct sp8870_state), GFP_KERNEL);
552 if (state == NULL) goto error;
554 /* setup the state */
555 state->config = config;
556 state->i2c = i2c;
557 state->initialised = 0;
560 if (sp8870_readreg(state, 0x0200) < 0) goto error;
563 memcpy(&state->frontend.ops, &sp8870_ops, sizeof(struct dvb_frontend_ops));
564 state->frontend.demodulator_priv = state;
565 return &state->frontend;
568 kfree(state);