Lines Matching refs:state

66 static int sp8870_writereg (struct sp8870_state* state, u16 reg, u16 data)  in sp8870_writereg()  argument
69 struct i2c_msg msg = { .addr = state->config->demod_address, .flags = 0, .buf = buf, .len = 4 }; in sp8870_writereg()
72 if ((err = i2c_transfer (state->i2c, &msg, 1)) != 1) { in sp8870_writereg()
80 static int sp8870_readreg (struct sp8870_state* state, u16 reg) in sp8870_readreg() argument
85 …struct i2c_msg msg [] = { { .addr = state->config->demod_address, .flags = 0, .buf = b0, .len = 2 … in sp8870_readreg()
86 { .addr = state->config->demod_address, .flags = I2C_M_RD, .buf = b1, .len = 2 } }; in sp8870_readreg()
88 ret = i2c_transfer (state->i2c, msg, 2); in sp8870_readreg()
98 static int sp8870_firmware_upload (struct sp8870_state* state, const struct firmware *fw) in sp8870_firmware_upload() argument
113 sp8870_writereg(state, 0x0F00, 0x0000); in sp8870_firmware_upload()
116 sp8870_writereg(state, 0x8F08, ((SP8870_FIRMWARE_SIZE / 2) & 0xFFFF)); in sp8870_firmware_upload()
119 sp8870_writereg(state, 0x8F0A, ((SP8870_FIRMWARE_SIZE / 2) >> 16)); in sp8870_firmware_upload()
129 msg.addr = state->config->demod_address; in sp8870_firmware_upload()
133 if ((err = i2c_transfer (state->i2c, &msg, 1)) != 1) { in sp8870_firmware_upload()
145 static void sp8870_microcontroller_stop (struct sp8870_state* state) in sp8870_microcontroller_stop() argument
147 sp8870_writereg(state, 0x0F08, 0x000); in sp8870_microcontroller_stop()
148 sp8870_writereg(state, 0x0F09, 0x000); in sp8870_microcontroller_stop()
151 sp8870_writereg(state, 0x0F00, 0x000); in sp8870_microcontroller_stop()
154 static void sp8870_microcontroller_start (struct sp8870_state* state) in sp8870_microcontroller_start() argument
156 sp8870_writereg(state, 0x0F08, 0x000); in sp8870_microcontroller_start()
157 sp8870_writereg(state, 0x0F09, 0x000); in sp8870_microcontroller_start()
160 sp8870_writereg(state, 0x0F00, 0x001); in sp8870_microcontroller_start()
163 sp8870_readreg(state, 0x0D01); in sp8870_microcontroller_start()
166 static int sp8870_read_data_valid_signal(struct sp8870_state* state) in sp8870_read_data_valid_signal() argument
168 return (sp8870_readreg(state, 0x0D02) > 0); in sp8870_read_data_valid_signal()
242 static int sp8870_wake_up(struct sp8870_state* state) in sp8870_wake_up() argument
245 return sp8870_writereg(state, 0xC18, 0x00D); in sp8870_wake_up()
251 struct sp8870_state* state = fe->demodulator_priv; in sp8870_set_frontend_parameters() local
259 sp8870_microcontroller_stop(state); in sp8870_set_frontend_parameters()
268 sp8870_writereg(state, 0x0319, 0x000A); in sp8870_set_frontend_parameters()
271 sp8870_writereg(state, 0x031A, 0x0AAB); in sp8870_set_frontend_parameters()
274 sp8870_writereg(state, 0x0309, 0x0400); in sp8870_set_frontend_parameters()
277 sp8870_writereg(state, 0x030A, 0x0000); in sp8870_set_frontend_parameters()
281 sp8870_writereg(state, 0x0311, 0x0002); in sp8870_set_frontend_parameters()
283 sp8870_writereg(state, 0x0311, 0x0001); in sp8870_set_frontend_parameters()
285 sp8870_writereg(state, 0x0311, 0x0000); in sp8870_set_frontend_parameters()
289 sp8870_writereg(state, 0x0338, 0x0000); in sp8870_set_frontend_parameters()
291 sp8870_writereg(state, 0x0338, 0x0001); in sp8870_set_frontend_parameters()
293 sp8870_writereg(state, 0xc05, reg0xc05); in sp8870_set_frontend_parameters()
296 sp8870_readreg(state, 0x200); in sp8870_set_frontend_parameters()
299 sp8870_microcontroller_start(state); in sp8870_set_frontend_parameters()
306 struct sp8870_state* state = fe->demodulator_priv; in sp8870_init() local
309 sp8870_wake_up(state); in sp8870_init()
310 if (state->initialised) return 0; in sp8870_init()
311 state->initialised = 1; in sp8870_init()
318 if (state->config->request_firmware(fe, &fw, SP8870_DEFAULT_FIRMWARE)) { in sp8870_init()
323 if (sp8870_firmware_upload(state, fw)) { in sp8870_init()
332 sp8870_writereg(state, 0xc18, 0x00d); in sp8870_init()
335 sp8870_microcontroller_stop(state); in sp8870_init()
338 sp8870_writereg(state, 0x0301, 0x0003); in sp8870_init()
341 sp8870_writereg(state, 0x0C13, 0x0001); in sp8870_init()
344 sp8870_writereg(state, 0x0C14, 0x0001); in sp8870_init()
347 sp8870_writereg(state, 0x0D00, 0x010); in sp8870_init()
348 sp8870_writereg(state, 0x0D01, 0x000); in sp8870_init()
355 struct sp8870_state* state = fe->demodulator_priv; in sp8870_read_status() local
361 status = sp8870_readreg (state, 0x0200); in sp8870_read_status()
365 signal = sp8870_readreg (state, 0x0303); in sp8870_read_status()
381 struct sp8870_state* state = fe->demodulator_priv; in sp8870_read_ber() local
387 ret = sp8870_readreg(state, 0xC08); in sp8870_read_ber()
393 ret = sp8870_readreg(state, 0xC07); in sp8870_read_ber()
408 struct sp8870_state* state = fe->demodulator_priv; in sp8870_read_signal_strength() local
414 ret = sp8870_readreg (state, 0x306); in sp8870_read_signal_strength()
420 ret = sp8870_readreg (state, 0x303); in sp8870_read_signal_strength()
434 struct sp8870_state* state = fe->demodulator_priv; in sp8870_read_uncorrected_blocks() local
439 ret = sp8870_readreg(state, 0xC0C); in sp8870_read_uncorrected_blocks()
464 struct sp8870_state* state = fe->demodulator_priv; in sp8870_set_frontend() local
488 valid = sp8870_read_data_valid_signal(state); in sp8870_set_frontend()
522 struct sp8870_state* state = fe->demodulator_priv; in sp8870_sleep() local
525 return sp8870_writereg(state, 0xC18, 0x000); in sp8870_sleep()
538 struct sp8870_state* state = fe->demodulator_priv; in sp8870_i2c_gate_ctrl() local
541 return sp8870_writereg(state, 0x206, 0x001); in sp8870_i2c_gate_ctrl()
543 return sp8870_writereg(state, 0x206, 0x000); in sp8870_i2c_gate_ctrl()
549 struct sp8870_state* state = fe->demodulator_priv; in sp8870_release() local
550 kfree(state); in sp8870_release()
558 struct sp8870_state* state = NULL; in sp8870_attach() local
561 state = kzalloc(sizeof(struct sp8870_state), GFP_KERNEL); in sp8870_attach()
562 if (state == NULL) goto error; in sp8870_attach()
565 state->config = config; in sp8870_attach()
566 state->i2c = i2c; in sp8870_attach()
567 state->initialised = 0; in sp8870_attach()
570 if (sp8870_readreg(state, 0x0200) < 0) goto error; in sp8870_attach()
573 memcpy(&state->frontend.ops, &sp8870_ops, sizeof(struct dvb_frontend_ops)); in sp8870_attach()
574 state->frontend.demodulator_priv = state; in sp8870_attach()
575 return &state->frontend; in sp8870_attach()
578 kfree(state); in sp8870_attach()