e4k: fix unresolved symbols in dc offset calibration

This commit is contained in:
Harald Welte 2012-03-05 18:37:18 +01:00
parent c4c7c6add5
commit 9ce29d79e8
2 changed files with 22 additions and 1 deletions

View File

@ -190,6 +190,7 @@ struct e4k_state {
int e4k_init(struct e4k_state *e4k);
int e4k_if_gain_set(struct e4k_state *e4k, uint8_t stage, int8_t value);
int e4k_mixer_gain_set(struct e4k_state *e4k, int8_t value);
int e4k_tune_freq(struct e4k_state *e4k, uint32_t freq);
int e4k_tune_params(struct e4k_state *e4k, struct e4k_pll_params *p);
int e4k_compute_pll_params(struct e4k_pll_params *oscp, uint32_t fosc, uint32_t intended_flo);

View File

@ -684,6 +684,24 @@ int e4k_if_gain_set(struct e4k_state *e4k, uint8_t stage, int8_t value)
return e4k_reg_set_mask(e4k, field->reg, mask, rc << field->shift);
}
int e4k_mixer_gain_set(struct e4k_state *e4k, int8_t value)
{
uint8_t bit;
switch (value) {
case 0:
bit = 0;
break;
case 12:
bit = 1;
break;
default:
return -EINVAL;
}
return e4k_reg_set_mask(e4k, E4K_REG_GAIN2, 1, bit);
}
/***********************************************************************
* DC Offset */
@ -734,7 +752,7 @@ int e4k_dc_offset_gen_table(struct e4k_state *e4k)
uint8_t offs_i, offs_q, range_i, range_q;
/* set the combination of mixer / if1 gain */
e3k_mixer_gain_set(e4k, dc_gain_comb[i].mixer_gain);
e4k_mixer_gain_set(e4k, dc_gain_comb[i].mixer_gain);
e4k_if_gain_set(e4k, 1, dc_gain_comb[i].if1_gain);
/* perform actual calibration */
@ -747,6 +765,8 @@ int e4k_dc_offset_gen_table(struct e4k_state *e4k)
range_i = e4k_reg_read(e4k, E4K_REG_DC4) & 0x3;
range_q = (e4k_reg_read(e4k, E4K_REG_DC4) >> 4) & 0x3;
LOGP(DTUN, LOGL_DEBUG, "Table %u I=%u/%u, Q=%u/%u\n",
i, range_i, offs_i, range_q, offs_q);
/* write into the table */
e4k_reg_write(e4k, dc_gain_comb[i].reg,
TO_LUT(offs_q, range_q));