summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/drivers/audio/imx233-codec.c4
-rw-r--r--firmware/export/imx233-codec.h19
-rw-r--r--firmware/target/arm/imx233/audioout-imx233.h2
3 files changed, 16 insertions, 9 deletions
diff --git a/firmware/drivers/audio/imx233-codec.c b/firmware/drivers/audio/imx233-codec.c
index 357aa33bb5..d56eb44d57 100644
--- a/firmware/drivers/audio/imx233-codec.c
+++ b/firmware/drivers/audio/imx233-codec.c
@@ -93,9 +93,7 @@ void audiohw_set_recvol(int left, int right, int type)
93 93
94void audiohw_set_depth_3d(int val) 94void audiohw_set_depth_3d(int val)
95{ 95{
96 /* input is raw value ranging from 0dB to 6dB in tenth of dB 96 imx233_audioout_set_3d_effect(val);
97 * convert to value in 1.5dB steps */
98 imx233_audioout_set_3d_effect(val / 15);
99} 97}
100 98
101void audiohw_set_monitor(bool enable) 99void audiohw_set_monitor(bool enable)
diff --git a/firmware/export/imx233-codec.h b/firmware/export/imx233-codec.h
index 10500f15b9..040a829284 100644
--- a/firmware/export/imx233-codec.h
+++ b/firmware/export/imx233-codec.h
@@ -21,12 +21,12 @@
21#ifndef __IMX233_CODEC_H_ 21#ifndef __IMX233_CODEC_H_
22#define __IMX233_CODEC_H_ 22#define __IMX233_CODEC_H_
23 23
24/* i.MX233 can boost up to 6dB in DAC mode and 12dB in line mode. Since mic/line
25 * already have adjustable gain, keep lowest of both. With chained DAC volume
26 * and headphone volume, the i.MX233 can achieve < -100dB but stay at -100dB. */
27#define AUDIOHW_CAPS (DEPTH_3D_CAP | BASS_CAP | TREBLE_CAP | \ 24#define AUDIOHW_CAPS (DEPTH_3D_CAP | BASS_CAP | TREBLE_CAP | \
28 LIN_GAIN_CAP | MIC_GAIN_CAP) 25 LIN_GAIN_CAP | MIC_GAIN_CAP)
29 26
27/* i.MX233 can boost up to 6dB in DAC mode and 12dB in line mode. Pretend we can
28 * do 12dB (but we cap at 6dB in DAC mode). With chained DAC volume
29 * and headphone volume, the i.MX233 can achieve < -100dB but stay at -100dB. */
30AUDIOHW_SETTING(VOLUME, "dB", 0, 1, -100, 12, -25) 30AUDIOHW_SETTING(VOLUME, "dB", 0, 1, -100, 12, -25)
31/* HAVE_SW_TONE_CONTROLS */ 31/* HAVE_SW_TONE_CONTROLS */
32#ifdef HAVE_RECORDING 32#ifdef HAVE_RECORDING
@@ -38,7 +38,16 @@ AUDIOHW_SETTING(LEFT_GAIN, "dB", 0, 1, -100, 22, 0)
38AUDIOHW_SETTING(RIGHT_GAIN, "dB", 0, 1, -100, 22, 0) 38AUDIOHW_SETTING(RIGHT_GAIN, "dB", 0, 1, -100, 22, 0)
39AUDIOHW_SETTING(MIC_GAIN, "dB", 0, 1, -100, 60, 20) 39AUDIOHW_SETTING(MIC_GAIN, "dB", 0, 1, -100, 60, 20)
40#endif /* HAVE_RECORDING */ 40#endif /* HAVE_RECORDING */
41/* i.MX233 has four settings: 0dB, 3dB, 4.5dB, 6dB so fake 1.5dB steps */ 41/* i.MX233 has four settings: 0dB, 3dB, 4.5dB, 6dB */
42AUDIOHW_SETTING(DEPTH_3D, "dB", 1,15, 0, 60, 0) 42/* depth_3d setting: 0=0dB, 1=3dB, 2=4.5dB, 3=6dB. Return value in tenth of dB */
43static inline int imx233_depth_3d_val2phys(int val)
44{
45 if(val == 0)
46 return 0; /* 0dB */
47 else
48 return 15 * (val + 1); /* 3dB + 1.5dB per step */
49}
50AUDIOHW_SETTING(DEPTH_3D, "dB", 1, 1, 0, 3, 0, imx233_depth_3d_val2phys(val))
51
43 52
44#endif /* __IMX233_CODEC_H_ */ 53#endif /* __IMX233_CODEC_H_ */
diff --git a/firmware/target/arm/imx233/audioout-imx233.h b/firmware/target/arm/imx233/audioout-imx233.h
index c819fdb294..4c27ae2375 100644
--- a/firmware/target/arm/imx233/audioout-imx233.h
+++ b/firmware/target/arm/imx233/audioout-imx233.h
@@ -60,7 +60,7 @@ void imx233_audioout_set_hp_vol(int vol_l, int vol_r);
60void imx233_audioout_set_freq(int fsel); 60void imx233_audioout_set_freq(int fsel);
61/* select between DAC and Line1 */ 61/* select between DAC and Line1 */
62void imx233_audioout_select_hp_input(bool line1); 62void imx233_audioout_select_hp_input(bool line1);
63/* value in 1.5dB steps, from 0dB to 6dB */ 63/* value is uses register encoding: 0=Off, 1=3dB, 2=4.5dB, 3=6dB */
64void imx233_audioout_set_3d_effect(int val); 64void imx233_audioout_set_3d_effect(int val);
65/* enable/disable speaker amplifier */ 65/* enable/disable speaker amplifier */
66void imx233_audioout_enable_spkr(bool en); 66void imx233_audioout_enable_spkr(bool en);