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 | |
| parent | 6f7ee0bb7ce507902f571f823fe173f07ec7e32f (diff) | |
| download | rockbox-5e2600eb3ae4563ac9d856ca7a63af1322679ea3.zip rockbox-5e2600eb3ae4563ac9d856ca7a63af1322679ea3.tar.gz rockbox-5e2600eb3ae4563ac9d856ca7a63af1322679ea3.tar.bz2 rockbox-5e2600eb3ae4563ac9d856ca7a63af1322679ea3.tar.xz | |
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
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 035bf35..2596e81 100644 --- a/firmware/target/arm/imx233/audio-imx233.h +++ b/firmware/target/arm/imx233/audio-imx233.h @@ -36,6 +36,12 @@ * IMX233_AUDIO_SPKR_GATE_BANK (gpio bank) * IMX233_AUDIO_SPKR_GATE_PIN (gpio pin) * IMX233_AUDIO_SPKR_GATE_INVERTED (define if inverted) + * + * target can override those to control microphone parameters + * NOTE by default, mic select is 1, mic bias is 0 and mic resistor is 2KOhm + * IMX233_AUDIO_MIC_SELECT (mic bias pin: 0=lradc0, 1=lradc1) + * IMX233_AUDIO_MIC_BIAS (mic bias, 0=1.21V, 1=1.46, ..., 7=2.96V (0.25mV inc) + * IMX233_AUDIO_MIC_RESISTOR (mic resistor: 2KOhm, 4KOhm, 8KOhm) */ // do some initialisation related to next functions void imx233_audio_preinit(void); @@ -45,4 +51,4 @@ void imx233_audio_enable_hp(bool en); // enable/disable the speaker audio gate (typically using a GPIO) void imx233_audio_enable_spkr(bool en); -#endif /* __audio_imx233__ */
\ No newline at end of file +#endif /* __audio_imx233__ */ diff --git a/firmware/target/arm/imx233/audioin-imx233.c b/firmware/target/arm/imx233/audioin-imx233.c index e538765..e221ac0 100644 --- a/firmware/target/arm/imx233/audioin-imx233.c +++ b/firmware/target/arm/imx233/audioin-imx233.c @@ -26,6 +26,20 @@ /* some audioout registers impact audioin */ #include "regs/audioout.h" +#include "audio-target.h" + +#ifndef IMX233_AUDIO_MIC_SELECT +#define IMX233_AUDIO_MIC_SELECT 1 /* lradc1 */ +#endif + +#ifndef IMX233_AUDIO_MIC_BIAS +#define IMX233_AUDIO_MIC_BIAS 0 /* 1.21V */ +#endif + +#ifndef IMX233_AUDIO_MIC_RESISTOR +#define IMX233_AUDIO_MIC_RESISTOR 2KOhm +#endif + /* values in half-dB, one for each setting */ static int audioin_vol[2][4]; /* 0=left, 1=right */ static int audioin_select[2]; /* idem */ @@ -58,7 +72,7 @@ void imx233_audioin_open(void) void imx233_audioin_close(void) { - /* Stop ADC (doc says it gate off the module but that's not the case) */ + /* Stop ADC (doc says it gates off the module but that's not the case) */ BF_CLR(AUDIOIN_CTRL, RUN); /* Disable ADC clock */ BF_SET(AUDIOIN_ANACLKCTRL, CLKGATE); @@ -157,9 +171,9 @@ void imx233_audioin_enable_mic(bool enable) { if(enable) { - BF_WR(AUDIOIN_MICLINE, MIC_RESISTOR_V(2KOhm)); - BF_WR(AUDIOIN_MICLINE, MIC_BIAS(4)); - BF_WR(AUDIOIN_MICLINE, MIC_SELECT(1)); + BF_WR(AUDIOIN_MICLINE, MIC_RESISTOR_V(IMX233_AUDIO_MIC_RESISTOR)); + BF_WR(AUDIOIN_MICLINE, MIC_BIAS(IMX233_AUDIO_MIC_BIAS)); + BF_WR(AUDIOIN_MICLINE, MIC_SELECT(IMX233_AUDIO_MIC_SELECT)); } else 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 38e0dea..807a7b4 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 @@ #define IMX233_AUDIO_SPKR_GATE_PIN 12 #endif +#if defined(CREATIVE_ZENXFISTYLE) +#define IMX233_AUDIO_MIC_SELECT 0 /* lradc0 */ +#define IMX233_AUDIO_MIC_BIAS 0 /* 1.21V */ +#define IMX233_AUDIO_MIC_RESISTOR 2KOhm +#endif + #endif /* __audio_target__ */ diff --git a/firmware/target/arm/imx233/creative-zenxfi2/audio-target.h b/firmware/target/arm/imx233/creative-zenxfi2/audio-target.h index d38d58b..4179fe9 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 @@ #define IMX233_AUDIO_SPKR_GATE_BANK 0 #define IMX233_AUDIO_SPKR_GATE_PIN 12 +#define IMX233_AUDIO_MIC_SELECT 0 /* lradc0 */ +#define IMX233_AUDIO_MIC_BIAS 0 /* 1.21V */ +#define IMX233_AUDIO_MIC_RESISTOR 2KOhm + #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 bdb6b4a..7286900 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 @@ #define IMX233_AUDIO_COUPLING_MODE ACM_CAPLESS +#define IMX233_AUDIO_MIC_SELECT 1 /* lradc1 */ +#define IMX233_AUDIO_MIC_BIAS 0 /* 1.21V */ +#define IMX233_AUDIO_MIC_RESISTOR 2KOhm + #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 59e8fd6..46ae86a 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 @@ #define IMX233_AUDIO_COUPLING_MODE ACM_CAPLESS +#define IMX233_AUDIO_MIC_SELECT 1 /* lradc1 */ +#define IMX233_AUDIO_MIC_BIAS 4 /* 2.21V */ +#define IMX233_AUDIO_MIC_RESISTOR 2KOhm + #endif /* __audio_target__ */ |