diff options
author | Amaury Pouly <amaury.pouly@gmail.com> | 2016-09-21 00:02:14 +0100 |
---|---|---|
committer | Amaury Pouly <amaury.pouly@gmail.com> | 2016-09-21 00:36:51 +0100 |
commit | 5e2600eb3ae4563ac9d856ca7a63af1322679ea3 (patch) | |
tree | 7b278f129e826bc3e505ea43efe506dfc803f19f /firmware/target/arm/imx233/audioin-imx233.c | |
parent | 6f7ee0bb7ce507902f571f823fe173f07ec7e32f (diff) | |
download | rockbox-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/audioin-imx233.c')
-rw-r--r-- | firmware/target/arm/imx233/audioin-imx233.c | 22 |
1 files changed, 18 insertions, 4 deletions
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 */ |
30 | static int audioin_vol[2][4]; /* 0=left, 1=right */ | 44 | static int audioin_vol[2][4]; /* 0=left, 1=right */ |
31 | static int audioin_select[2]; /* idem */ | 45 | static int audioin_select[2]; /* idem */ |
@@ -58,7 +72,7 @@ void imx233_audioin_open(void) | |||
58 | 72 | ||
59 | void imx233_audioin_close(void) | 73 | void 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)); |