summaryrefslogtreecommitdiff
path: root/firmware/target/arm/imx233
diff options
context:
space:
mode:
authorAmaury Pouly <amaury.pouly@gmail.com>2016-09-21 00:02:14 +0100
committerAmaury Pouly <amaury.pouly@gmail.com>2016-09-21 00:36:51 +0100
commit5e2600eb3ae4563ac9d856ca7a63af1322679ea3 (patch)
tree7b278f129e826bc3e505ea43efe506dfc803f19f /firmware/target/arm/imx233
parent6f7ee0bb7ce507902f571f823fe173f07ec7e32f (diff)
downloadrockbox-5e2600eb3ae4563ac9d856ca7a63af1322679ea3.tar.gz
rockbox-5e2600eb3ae4563ac9d856ca7a63af1322679ea3.zip
imx233: make microphone bias, bias pin and resistor configurable
This clearly fixes recording on targets where the bias pin was wrong. It may also improve recording on targets where the bias voltage was wrong. I was unable to find those parameters on the ZEN Mozaic, which fallback to default values. Change-Id: Ifb5f823c9cbd01f0d9a80fa5d49d93972c8b7cfe
Diffstat (limited to 'firmware/target/arm/imx233')
-rw-r--r--firmware/target/arm/imx233/audio-imx233.h8
-rw-r--r--firmware/target/arm/imx233/audioin-imx233.c22
-rw-r--r--firmware/target/arm/imx233/creative-zen/audio-target.h6
-rw-r--r--firmware/target/arm/imx233/creative-zenxfi2/audio-target.h4
-rw-r--r--firmware/target/arm/imx233/creative-zenxfi3/audio-target.h4
-rw-r--r--firmware/target/arm/imx233/sansa-fuzeplus/audio-target.h4
6 files changed, 43 insertions, 5 deletions
diff --git a/firmware/target/arm/imx233/audio-imx233.h b/firmware/target/arm/imx233/audio-imx233.h
index 035bf357e1..2596e81bac 100644
--- a/firmware/target/arm/imx233/audio-imx233.h
+++ b/firmware/target/arm/imx233/audio-imx233.h
@@ -36,6 +36,12 @@
36 * IMX233_AUDIO_SPKR_GATE_BANK (gpio bank) 36 * IMX233_AUDIO_SPKR_GATE_BANK (gpio bank)
37 * IMX233_AUDIO_SPKR_GATE_PIN (gpio pin) 37 * IMX233_AUDIO_SPKR_GATE_PIN (gpio pin)
38 * IMX233_AUDIO_SPKR_GATE_INVERTED (define if inverted) 38 * IMX233_AUDIO_SPKR_GATE_INVERTED (define if inverted)
39 *
40 * target can override those to control microphone parameters
41 * NOTE by default, mic select is 1, mic bias is 0 and mic resistor is 2KOhm
42 * IMX233_AUDIO_MIC_SELECT (mic bias pin: 0=lradc0, 1=lradc1)
43 * IMX233_AUDIO_MIC_BIAS (mic bias, 0=1.21V, 1=1.46, ..., 7=2.96V (0.25mV inc)
44 * IMX233_AUDIO_MIC_RESISTOR (mic resistor: 2KOhm, 4KOhm, 8KOhm)
39 */ 45 */
40// do some initialisation related to next functions 46// do some initialisation related to next functions
41void imx233_audio_preinit(void); 47void imx233_audio_preinit(void);
@@ -45,4 +51,4 @@ void imx233_audio_enable_hp(bool en);
45// enable/disable the speaker audio gate (typically using a GPIO) 51// enable/disable the speaker audio gate (typically using a GPIO)
46void imx233_audio_enable_spkr(bool en); 52void imx233_audio_enable_spkr(bool en);
47 53
48#endif /* __audio_imx233__ */ \ No newline at end of file 54#endif /* __audio_imx233__ */
diff --git a/firmware/target/arm/imx233/audioin-imx233.c b/firmware/target/arm/imx233/audioin-imx233.c
index e538765244..e221ac07e9 100644
--- a/firmware/target/arm/imx233/audioin-imx233.c
+++ b/firmware/target/arm/imx233/audioin-imx233.c
@@ -26,6 +26,20 @@
26/* some audioout registers impact audioin */ 26/* some audioout registers impact audioin */
27#include "regs/audioout.h" 27#include "regs/audioout.h"
28 28
29#include "audio-target.h"
30
31#ifndef IMX233_AUDIO_MIC_SELECT
32#define IMX233_AUDIO_MIC_SELECT 1 /* lradc1 */
33#endif
34
35#ifndef IMX233_AUDIO_MIC_BIAS
36#define IMX233_AUDIO_MIC_BIAS 0 /* 1.21V */
37#endif
38
39#ifndef IMX233_AUDIO_MIC_RESISTOR
40#define IMX233_AUDIO_MIC_RESISTOR 2KOhm
41#endif
42
29/* values in half-dB, one for each setting */ 43/* values in half-dB, one for each setting */
30static int audioin_vol[2][4]; /* 0=left, 1=right */ 44static int audioin_vol[2][4]; /* 0=left, 1=right */
31static int audioin_select[2]; /* idem */ 45static int audioin_select[2]; /* idem */
@@ -58,7 +72,7 @@ void imx233_audioin_open(void)
58 72
59void imx233_audioin_close(void) 73void imx233_audioin_close(void)
60{ 74{
61 /* Stop ADC (doc says it gate off the module but that's not the case) */ 75 /* Stop ADC (doc says it gates off the module but that's not the case) */
62 BF_CLR(AUDIOIN_CTRL, RUN); 76 BF_CLR(AUDIOIN_CTRL, RUN);
63 /* Disable ADC clock */ 77 /* Disable ADC clock */
64 BF_SET(AUDIOIN_ANACLKCTRL, CLKGATE); 78 BF_SET(AUDIOIN_ANACLKCTRL, CLKGATE);
@@ -157,9 +171,9 @@ void imx233_audioin_enable_mic(bool enable)
157{ 171{
158 if(enable) 172 if(enable)
159 { 173 {
160 BF_WR(AUDIOIN_MICLINE, MIC_RESISTOR_V(2KOhm)); 174 BF_WR(AUDIOIN_MICLINE, MIC_RESISTOR_V(IMX233_AUDIO_MIC_RESISTOR));
161 BF_WR(AUDIOIN_MICLINE, MIC_BIAS(4)); 175 BF_WR(AUDIOIN_MICLINE, MIC_BIAS(IMX233_AUDIO_MIC_BIAS));
162 BF_WR(AUDIOIN_MICLINE, MIC_SELECT(1)); 176 BF_WR(AUDIOIN_MICLINE, MIC_SELECT(IMX233_AUDIO_MIC_SELECT));
163 } 177 }
164 else 178 else
165 BF_WR(AUDIOIN_MICLINE, MIC_RESISTOR_V(Off)); 179 BF_WR(AUDIOIN_MICLINE, MIC_RESISTOR_V(Off));
diff --git a/firmware/target/arm/imx233/creative-zen/audio-target.h b/firmware/target/arm/imx233/creative-zen/audio-target.h
index 38e0dea0af..807a7b4966 100644
--- a/firmware/target/arm/imx233/creative-zen/audio-target.h
+++ b/firmware/target/arm/imx233/creative-zen/audio-target.h
@@ -28,5 +28,11 @@
28#define IMX233_AUDIO_SPKR_GATE_PIN 12 28#define IMX233_AUDIO_SPKR_GATE_PIN 12
29#endif 29#endif
30 30
31#if defined(CREATIVE_ZENXFISTYLE)
32#define IMX233_AUDIO_MIC_SELECT 0 /* lradc0 */
33#define IMX233_AUDIO_MIC_BIAS 0 /* 1.21V */
34#define IMX233_AUDIO_MIC_RESISTOR 2KOhm
35#endif
36
31#endif /* __audio_target__ */ 37#endif /* __audio_target__ */
32 38
diff --git a/firmware/target/arm/imx233/creative-zenxfi2/audio-target.h b/firmware/target/arm/imx233/creative-zenxfi2/audio-target.h
index d38d58bada..4179fe910e 100644
--- a/firmware/target/arm/imx233/creative-zenxfi2/audio-target.h
+++ b/firmware/target/arm/imx233/creative-zenxfi2/audio-target.h
@@ -26,4 +26,8 @@
26#define IMX233_AUDIO_SPKR_GATE_BANK 0 26#define IMX233_AUDIO_SPKR_GATE_BANK 0
27#define IMX233_AUDIO_SPKR_GATE_PIN 12 27#define IMX233_AUDIO_SPKR_GATE_PIN 12
28 28
29#define IMX233_AUDIO_MIC_SELECT 0 /* lradc0 */
30#define IMX233_AUDIO_MIC_BIAS 0 /* 1.21V */
31#define IMX233_AUDIO_MIC_RESISTOR 2KOhm
32
29#endif /* __audio_target__ */ 33#endif /* __audio_target__ */
diff --git a/firmware/target/arm/imx233/creative-zenxfi3/audio-target.h b/firmware/target/arm/imx233/creative-zenxfi3/audio-target.h
index bdb6b4a610..7286900331 100644
--- a/firmware/target/arm/imx233/creative-zenxfi3/audio-target.h
+++ b/firmware/target/arm/imx233/creative-zenxfi3/audio-target.h
@@ -29,4 +29,8 @@
29 29
30#define IMX233_AUDIO_COUPLING_MODE ACM_CAPLESS 30#define IMX233_AUDIO_COUPLING_MODE ACM_CAPLESS
31 31
32#define IMX233_AUDIO_MIC_SELECT 1 /* lradc1 */
33#define IMX233_AUDIO_MIC_BIAS 0 /* 1.21V */
34#define IMX233_AUDIO_MIC_RESISTOR 2KOhm
35
32#endif /* __audio_target__ */ 36#endif /* __audio_target__ */
diff --git a/firmware/target/arm/imx233/sansa-fuzeplus/audio-target.h b/firmware/target/arm/imx233/sansa-fuzeplus/audio-target.h
index 59e8fd6f01..46ae86ae94 100644
--- a/firmware/target/arm/imx233/sansa-fuzeplus/audio-target.h
+++ b/firmware/target/arm/imx233/sansa-fuzeplus/audio-target.h
@@ -23,4 +23,8 @@
23 23
24#define IMX233_AUDIO_COUPLING_MODE ACM_CAPLESS 24#define IMX233_AUDIO_COUPLING_MODE ACM_CAPLESS
25 25
26#define IMX233_AUDIO_MIC_SELECT 1 /* lradc1 */
27#define IMX233_AUDIO_MIC_BIAS 4 /* 2.21V */
28#define IMX233_AUDIO_MIC_RESISTOR 2KOhm
29
26#endif /* __audio_target__ */ 30#endif /* __audio_target__ */