static struct reg_pair_t *mxl5007t_calc_init_regs(struct mxl5007t_state *state, enum mxl5007t_mode mode) { struct mxl5007t_config *cfg = state->config; memcpy(&state->tab_init, &init_tab, sizeof(init_tab)); memcpy(&state->tab_init_cable, &init_tab_cable, sizeof(init_tab_cable)); mxl5007t_set_mode_bits(state, mode, cfg->if_diff_out_level); mxl5007t_set_if_freq_bits(state, cfg->if_freq_hz, cfg->invert_if); mxl5007t_set_xtal_freq_bits(state, cfg->xtal_freq_hz); set_reg_bits(state->tab_init, 0x10, 0x40, cfg->loop_thru_enable << 6); set_reg_bits(state->tab_init, 0xd8, 0x08, cfg->clk_out_enable << 3); set_reg_bits(state->tab_init, 0x10, 0x07, cfg->clk_out_amp); /* set IDAC to automatic mode control by AGC */ set_reg_bits(state->tab_init, 0x12, 0x80, 0x00); if (mode >= MxL_MODE_CABLE_DIGITAL) { copy_reg_bits(state->tab_init, state->tab_init_cable); return state->tab_init_cable; } else return state->tab_init; }
static struct reg_pair_t *mxl5007t_calc_init_regs(struct mxl5007t_state *state, enum mxl5007t_mode mode) { struct mxl5007t_config *cfg = state->config; memcpy(&state->tab_init, &init_tab, sizeof(init_tab)); memcpy(&state->tab_init_cable, &init_tab_cable, sizeof(init_tab_cable)); mxl5007t_set_mode_bits(state, mode, cfg->if_diff_out_level); mxl5007t_set_if_freq_bits(state, cfg->if_freq_hz, cfg->invert_if); mxl5007t_set_xtal_freq_bits(state, cfg->xtal_freq_hz); set_reg_bits(state->tab_init, 0x04, 0x01, cfg->loop_thru_enable); set_reg_bits(state->tab_init, 0x03, 0x08, cfg->clk_out_enable << 3); set_reg_bits(state->tab_init, 0x03, 0x07, cfg->clk_out_amp); if (mode >= MxL_MODE_CABLE) { copy_reg_bits(state->tab_init, state->tab_init_cable); return state->tab_init_cable; } else return state->tab_init; }