Lines Matching refs:state
201 static void mxl5007t_set_mode_bits(struct mxl5007t_state *state,
207 set_reg_bits(state->tab_init, 0x06, 0x1f, 0x12);
210 set_reg_bits(state->tab_init, 0x06, 0x1f, 0x11);
213 set_reg_bits(state->tab_init, 0x06, 0x1f, 0x10);
216 set_reg_bits(state->tab_init_cable, 0x09, 0xff, 0xc1);
217 set_reg_bits(state->tab_init_cable, 0x0a, 0xff,
219 set_reg_bits(state->tab_init_cable, 0x0b, 0xff, 0x17);
227 static void mxl5007t_set_if_freq_bits(struct mxl5007t_state *state,
271 set_reg_bits(state->tab_init, 0x02, 0x0f, val);
274 set_reg_bits(state->tab_init, 0x02, 0x10, invert_if ? 0x10 : 0x00);
276 state->if_freq = if_freq;
281 static void mxl5007t_set_xtal_freq_bits(struct mxl5007t_state *state,
287 set_reg_bits(state->tab_init, 0x03, 0xf0, 0x00);
288 set_reg_bits(state->tab_init, 0x05, 0x0f, 0x00);
291 set_reg_bits(state->tab_init, 0x03, 0xf0, 0x10);
292 set_reg_bits(state->tab_init, 0x05, 0x0f, 0x01);
295 set_reg_bits(state->tab_init, 0x03, 0xf0, 0x20);
296 set_reg_bits(state->tab_init, 0x05, 0x0f, 0x02);
299 set_reg_bits(state->tab_init, 0x03, 0xf0, 0x30);
300 set_reg_bits(state->tab_init, 0x05, 0x0f, 0x03);
303 set_reg_bits(state->tab_init, 0x03, 0xf0, 0x40);
304 set_reg_bits(state->tab_init, 0x05, 0x0f, 0x04);
307 set_reg_bits(state->tab_init, 0x03, 0xf0, 0x50);
308 set_reg_bits(state->tab_init, 0x05, 0x0f, 0x05);
311 set_reg_bits(state->tab_init, 0x03, 0xf0, 0x60);
312 set_reg_bits(state->tab_init, 0x05, 0x0f, 0x06);
315 set_reg_bits(state->tab_init, 0x03, 0xf0, 0x70);
316 set_reg_bits(state->tab_init, 0x05, 0x0f, 0x07);
319 set_reg_bits(state->tab_init, 0x03, 0xf0, 0x80);
320 set_reg_bits(state->tab_init, 0x05, 0x0f, 0x08);
323 set_reg_bits(state->tab_init, 0x03, 0xf0, 0x90);
324 set_reg_bits(state->tab_init, 0x05, 0x0f, 0x09);
327 set_reg_bits(state->tab_init, 0x03, 0xf0, 0xa0);
328 set_reg_bits(state->tab_init, 0x05, 0x0f, 0x0a);
331 set_reg_bits(state->tab_init, 0x03, 0xf0, 0xb0);
332 set_reg_bits(state->tab_init, 0x05, 0x0f, 0x0b);
335 set_reg_bits(state->tab_init, 0x03, 0xf0, 0xc0);
336 set_reg_bits(state->tab_init, 0x05, 0x0f, 0x0c);
339 set_reg_bits(state->tab_init, 0x03, 0xf0, 0xd0);
340 set_reg_bits(state->tab_init, 0x05, 0x0f, 0x0d);
350 static struct reg_pair_t *mxl5007t_calc_init_regs(struct mxl5007t_state *state,
353 struct mxl5007t_config *cfg = state->config;
355 memcpy(&state->tab_init, &init_tab, sizeof(init_tab));
356 memcpy(&state->tab_init_cable, &init_tab_cable, sizeof(init_tab_cable));
358 mxl5007t_set_mode_bits(state, mode, cfg->if_diff_out_level);
359 mxl5007t_set_if_freq_bits(state, cfg->if_freq_hz, cfg->invert_if);
360 mxl5007t_set_xtal_freq_bits(state, cfg->xtal_freq_hz);
362 set_reg_bits(state->tab_init, 0x03, 0x08, cfg->clk_out_enable << 3);
363 set_reg_bits(state->tab_init, 0x03, 0x07, cfg->clk_out_amp);
366 copy_reg_bits(state->tab_init, state->tab_init_cable);
367 return state->tab_init_cable;
369 return state->tab_init;
380 static void mxl5007t_set_bw_bits(struct mxl5007t_state *state,
400 set_reg_bits(state->tab_rftune, 0x0c, 0x3f, val);
406 reg_pair_t *mxl5007t_calc_rf_tune_regs(struct mxl5007t_state *state,
414 memcpy(&state->tab_rftune, ®_pair_rftune, sizeof(reg_pair_rftune));
416 mxl5007t_set_bw_bits(state, bw);
437 set_reg_bits(state->tab_rftune, 0x0d, 0xff, (u8) dig_rf_freq);
438 set_reg_bits(state->tab_rftune, 0x0e, 0xff, (u8) (dig_rf_freq >> 8));
441 set_reg_bits(state->tab_rftune, 0x80, 0x40, 0x40);
443 return state->tab_rftune;
448 static int mxl5007t_write_reg(struct mxl5007t_state *state, u8 reg, u8 val)
451 struct i2c_msg msg = { .addr = state->i2c_props.addr, .flags = 0,
455 ret = i2c_transfer(state->i2c_props.adap, &msg, 1);
463 static int mxl5007t_write_regs(struct mxl5007t_state *state,
470 ret = mxl5007t_write_reg(state,
477 static int mxl5007t_read_reg(struct mxl5007t_state *state, u8 reg, u8 *val)
481 { .addr = state->i2c_props.addr, .flags = 0,
483 { .addr = state->i2c_props.addr, .flags = I2C_M_RD,
488 ret = i2c_transfer(state->i2c_props.adap, msg, 2);
496 static int mxl5007t_soft_reset(struct mxl5007t_state *state)
500 .addr = state->i2c_props.addr, .flags = 0,
503 int ret = i2c_transfer(state->i2c_props.adap, &msg, 1);
512 static int mxl5007t_tuner_init(struct mxl5007t_state *state,
519 init_regs = mxl5007t_calc_init_regs(state, mode);
521 ret = mxl5007t_write_regs(state, init_regs);
529 static int mxl5007t_tuner_rf_tune(struct mxl5007t_state *state, u32 rf_freq_hz,
536 rf_tune_regs = mxl5007t_calc_rf_tune_regs(state, rf_freq_hz, bw);
538 ret = mxl5007t_write_regs(state, rf_tune_regs);
548 static int mxl5007t_synth_lock_status(struct mxl5007t_state *state,
557 ret = mxl5007t_read_reg(state, 0xd8, &d);
574 struct mxl5007t_state *state = fe->tuner_priv;
582 ret = mxl5007t_synth_lock_status(state, &rf_locked, &ref_locked);
603 struct mxl5007t_state *state = fe->tuner_priv;
643 mutex_lock(&state->lock);
645 ret = mxl5007t_tuner_init(state, mode);
649 ret = mxl5007t_tuner_rf_tune(state, freq, bw);
653 state->frequency = freq;
654 state->bandwidth = c->bandwidth_hz;
656 mutex_unlock(&state->lock);
668 struct mxl5007t_state *state = fe->tuner_priv;
675 ret = mxl5007t_write_reg(state, 0x01, 0x01);
686 struct mxl5007t_state *state = fe->tuner_priv;
693 ret = mxl5007t_write_reg(state, 0x01, 0x00);
695 ret = mxl5007t_write_reg(state, 0x0f, 0x00);
708 struct mxl5007t_state *state = fe->tuner_priv;
709 *frequency = state->frequency;
715 struct mxl5007t_state *state = fe->tuner_priv;
716 *bandwidth = state->bandwidth;
722 struct mxl5007t_state *state = fe->tuner_priv;
726 switch (state->if_freq) {
766 struct mxl5007t_state *state = fe->tuner_priv;
770 if (state)
771 hybrid_tuner_release_state(state);
794 static int mxl5007t_get_chip_id(struct mxl5007t_state *state)
800 ret = mxl5007t_read_reg(state, 0xd9, &id);
831 state->chip_id = id;
833 i2c_adapter_id(state->i2c_props.adap),
834 state->i2c_props.addr);
838 i2c_adapter_id(state->i2c_props.adap),
839 state->i2c_props.addr);
841 state->chip_id = MxL_UNKNOWN_ID;
849 struct mxl5007t_state *state = NULL;
853 instance = hybrid_tuner_request_state(struct mxl5007t_state, state,
861 state->config = cfg;
863 mutex_init(&state->lock);
868 ret = mxl5007t_get_chip_id(state);
885 ret = mxl5007t_soft_reset(state);
896 ret = mxl5007t_write_reg(state, 0x04,
897 state->config->loop_thru_enable);
905 fe->tuner_priv = state;