diff options
author | Harald Welte <laforge@gnumonks.org> | 2012-03-05 18:37:18 +0100 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2012-03-05 18:37:18 +0100 |
commit | 9ce29d79e8108f8641e2dbc1dc01bcdbe42f7cfb (patch) | |
tree | e5cd8c2c79bd29b5a629d58681c1e3e3f178c97e | |
parent | c4c7c6add58f5989b4626d9e84ae6d0993f88eb0 (diff) |
e4k: fix unresolved symbols in dc offset calibration
-rw-r--r-- | firmware/include/tuner_e4k.h | 1 | ||||
-rw-r--r-- | firmware/src/tuner_e4k.c | 22 |
2 files changed, 22 insertions, 1 deletions
diff --git a/firmware/include/tuner_e4k.h b/firmware/include/tuner_e4k.h index 98ea889..579299a 100644 --- a/firmware/include/tuner_e4k.h +++ b/firmware/include/tuner_e4k.h @@ -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); diff --git a/firmware/src/tuner_e4k.c b/firmware/src/tuner_e4k.c index 029a66c..ed3c4a1 100644 --- a/firmware/src/tuner_e4k.c +++ b/firmware/src/tuner_e4k.c @@ -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)); |