summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2012-03-05 18:37:18 +0100
committerHarald Welte <laforge@gnumonks.org>2012-03-05 18:37:18 +0100
commit9ce29d79e8108f8641e2dbc1dc01bcdbe42f7cfb (patch)
treee5cd8c2c79bd29b5a629d58681c1e3e3f178c97e
parentc4c7c6add58f5989b4626d9e84ae6d0993f88eb0 (diff)
e4k: fix unresolved symbols in dc offset calibration
-rw-r--r--firmware/include/tuner_e4k.h1
-rw-r--r--firmware/src/tuner_e4k.c22
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));