Lines Matching refs:state
199 static void mxl5007t_set_mode_bits(struct mxl5007t_state *state,
205 set_reg_bits(state->tab_init, 0x06, 0x1f, 0x12);
208 set_reg_bits(state->tab_init, 0x06, 0x1f, 0x11);
211 set_reg_bits(state->tab_init, 0x06, 0x1f, 0x10);
214 set_reg_bits(state->tab_init_cable, 0x09, 0xff, 0xc1);
215 set_reg_bits(state->tab_init_cable, 0x0a, 0xff,
217 set_reg_bits(state->tab_init_cable, 0x0b, 0xff, 0x17);
224 static void mxl5007t_set_if_freq_bits(struct mxl5007t_state *state,
268 set_reg_bits(state->tab_init, 0x02, 0x0f, val);
271 set_reg_bits(state->tab_init, 0x02, 0x10, invert_if ? 0x10 : 0x00);
273 state->if_freq = if_freq;
276 static void mxl5007t_set_xtal_freq_bits(struct mxl5007t_state *state,
282 set_reg_bits(state->tab_init, 0x03, 0xf0, 0x00);
283 set_reg_bits(state->tab_init, 0x05, 0x0f, 0x00);
286 set_reg_bits(state->tab_init, 0x03, 0xf0, 0x10);
287 set_reg_bits(state->tab_init, 0x05, 0x0f, 0x01);
290 set_reg_bits(state->tab_init, 0x03, 0xf0, 0x20);
291 set_reg_bits(state->tab_init, 0x05, 0x0f, 0x02);
294 set_reg_bits(state->tab_init, 0x03, 0xf0, 0x30);
295 set_reg_bits(state->tab_init, 0x05, 0x0f, 0x03);
298 set_reg_bits(state->tab_init, 0x03, 0xf0, 0x40);
299 set_reg_bits(state->tab_init, 0x05, 0x0f, 0x04);
302 set_reg_bits(state->tab_init, 0x03, 0xf0, 0x50);
303 set_reg_bits(state->tab_init, 0x05, 0x0f, 0x05);
306 set_reg_bits(state->tab_init, 0x03, 0xf0, 0x60);
307 set_reg_bits(state->tab_init, 0x05, 0x0f, 0x06);
310 set_reg_bits(state->tab_init, 0x03, 0xf0, 0x70);
311 set_reg_bits(state->tab_init, 0x05, 0x0f, 0x07);
314 set_reg_bits(state->tab_init, 0x03, 0xf0, 0x80);
315 set_reg_bits(state->tab_init, 0x05, 0x0f, 0x08);
318 set_reg_bits(state->tab_init, 0x03, 0xf0, 0x90);
319 set_reg_bits(state->tab_init, 0x05, 0x0f, 0x09);
322 set_reg_bits(state->tab_init, 0x03, 0xf0, 0xa0);
323 set_reg_bits(state->tab_init, 0x05, 0x0f, 0x0a);
326 set_reg_bits(state->tab_init, 0x03, 0xf0, 0xb0);
327 set_reg_bits(state->tab_init, 0x05, 0x0f, 0x0b);
330 set_reg_bits(state->tab_init, 0x03, 0xf0, 0xc0);
331 set_reg_bits(state->tab_init, 0x05, 0x0f, 0x0c);
334 set_reg_bits(state->tab_init, 0x03, 0xf0, 0xd0);
335 set_reg_bits(state->tab_init, 0x05, 0x0f, 0x0d);
343 static struct reg_pair_t *mxl5007t_calc_init_regs(struct mxl5007t_state *state,
346 struct mxl5007t_config *cfg = state->config;
348 memcpy(&state->tab_init, &init_tab, sizeof(init_tab));
349 memcpy(&state->tab_init_cable, &init_tab_cable, sizeof(init_tab_cable));
351 mxl5007t_set_mode_bits(state, mode, cfg->if_diff_out_level);
352 mxl5007t_set_if_freq_bits(state, cfg->if_freq_hz, cfg->invert_if);
353 mxl5007t_set_xtal_freq_bits(state, cfg->xtal_freq_hz);
355 set_reg_bits(state->tab_init, 0x03, 0x08, cfg->clk_out_enable << 3);
356 set_reg_bits(state->tab_init, 0x03, 0x07, cfg->clk_out_amp);
359 copy_reg_bits(state->tab_init, state->tab_init_cable);
360 return state->tab_init_cable;
362 return state->tab_init;
373 static void mxl5007t_set_bw_bits(struct mxl5007t_state *state,
393 set_reg_bits(state->tab_rftune, 0x0c, 0x3f, val);
397 reg_pair_t *mxl5007t_calc_rf_tune_regs(struct mxl5007t_state *state,
405 memcpy(&state->tab_rftune, ®_pair_rftune, sizeof(reg_pair_rftune));
407 mxl5007t_set_bw_bits(state, bw);
428 set_reg_bits(state->tab_rftune, 0x0d, 0xff, (u8) dig_rf_freq);
429 set_reg_bits(state->tab_rftune, 0x0e, 0xff, (u8) (dig_rf_freq >> 8));
432 set_reg_bits(state->tab_rftune, 0x80, 0x40, 0x40);
434 return state->tab_rftune;
439 static int mxl5007t_write_reg(struct mxl5007t_state *state, u8 reg, u8 val)
442 struct i2c_msg msg = { .addr = state->i2c_props.addr, .flags = 0,
446 ret = i2c_transfer(state->i2c_props.adap, &msg, 1);
454 static int mxl5007t_write_regs(struct mxl5007t_state *state,
461 ret = mxl5007t_write_reg(state,
468 static int mxl5007t_read_reg(struct mxl5007t_state *state, u8 reg, u8 *val)
472 { .addr = state->i2c_props.addr, .flags = 0,
474 { .addr = state->i2c_props.addr, .flags = I2C_M_RD,
479 ret = i2c_transfer(state->i2c_props.adap, msg, 2);
487 static int mxl5007t_soft_reset(struct mxl5007t_state *state)
491 .addr = state->i2c_props.addr, .flags = 0,
494 int ret = i2c_transfer(state->i2c_props.adap, &msg, 1);
503 static int mxl5007t_tuner_init(struct mxl5007t_state *state,
510 init_regs = mxl5007t_calc_init_regs(state, mode);
512 ret = mxl5007t_write_regs(state, init_regs);
520 static int mxl5007t_tuner_rf_tune(struct mxl5007t_state *state, u32 rf_freq_hz,
527 rf_tune_regs = mxl5007t_calc_rf_tune_regs(state, rf_freq_hz, bw);
529 ret = mxl5007t_write_regs(state, rf_tune_regs);
539 static int mxl5007t_synth_lock_status(struct mxl5007t_state *state,
548 ret = mxl5007t_read_reg(state, 0xd8, &d);
565 struct mxl5007t_state *state = fe->tuner_priv;
573 ret = mxl5007t_synth_lock_status(state, &rf_locked, &ref_locked);
594 struct mxl5007t_state *state = fe->tuner_priv;
634 mutex_lock(&state->lock);
636 ret = mxl5007t_tuner_init(state, mode);
640 ret = mxl5007t_tuner_rf_tune(state, freq, bw);
644 state->frequency = freq;
645 state->bandwidth = c->bandwidth_hz;
647 mutex_unlock(&state->lock);
659 struct mxl5007t_state *state = fe->tuner_priv;
666 ret = mxl5007t_write_reg(state, 0x01, 0x01);
677 struct mxl5007t_state *state = fe->tuner_priv;
684 ret = mxl5007t_write_reg(state, 0x01, 0x00);
686 ret = mxl5007t_write_reg(state, 0x0f, 0x00);
699 struct mxl5007t_state *state = fe->tuner_priv;
700 *frequency = state->frequency;
706 struct mxl5007t_state *state = fe->tuner_priv;
707 *bandwidth = state->bandwidth;
713 struct mxl5007t_state *state = fe->tuner_priv;
717 switch (state->if_freq) {
757 struct mxl5007t_state *state = fe->tuner_priv;
761 if (state)
762 hybrid_tuner_release_state(state);
785 static int mxl5007t_get_chip_id(struct mxl5007t_state *state)
791 ret = mxl5007t_read_reg(state, 0xd9, &id);
822 state->chip_id = id;
824 i2c_adapter_id(state->i2c_props.adap),
825 state->i2c_props.addr);
829 i2c_adapter_id(state->i2c_props.adap),
830 state->i2c_props.addr);
832 state->chip_id = MxL_UNKNOWN_ID;
840 struct mxl5007t_state *state = NULL;
844 instance = hybrid_tuner_request_state(struct mxl5007t_state, state,
852 state->config = cfg;
854 mutex_init(&state->lock);
859 ret = mxl5007t_get_chip_id(state);
876 ret = mxl5007t_soft_reset(state);
887 ret = mxl5007t_write_reg(state, 0x04,
888 state->config->loop_thru_enable);
896 fe->tuner_priv = state;