diff options
Diffstat (limited to 'firmware/drivers/audio/imx233-codec.c')
-rw-r--r-- | firmware/drivers/audio/imx233-codec.c | 33 |
1 files changed, 30 insertions, 3 deletions
diff --git a/firmware/drivers/audio/imx233-codec.c b/firmware/drivers/audio/imx233-codec.c index 769216af87..d99a4d0ca9 100644 --- a/firmware/drivers/audio/imx233-codec.c +++ b/firmware/drivers/audio/imx233-codec.c | |||
@@ -22,34 +22,61 @@ | |||
22 | #include "system.h" | 22 | #include "system.h" |
23 | #include "audiohw.h" | 23 | #include "audiohw.h" |
24 | #include "audio.h" | 24 | #include "audio.h" |
25 | #include "audioout-imx233.h" | ||
26 | #include "audioin-imx233.h" | ||
25 | 27 | ||
26 | /* TO FILL */ | ||
27 | const struct sound_settings_info audiohw_settings[] = | 28 | const struct sound_settings_info audiohw_settings[] = |
28 | { | 29 | { |
29 | [SOUND_VOLUME] = {"dB", 0, 1, -74, 6, -25}, | 30 | /* i.MX233 has half dB steps */ |
31 | [SOUND_VOLUME] = {"dB", 0, 5, VOLUME_MIN / 10, VOLUME_MAX / 10, -25}, | ||
32 | /* HAVE_SW_TONE_CONTROLS */ | ||
33 | [SOUND_BASS] = {"dB", 0, 1, -24, 24, 0}, | ||
34 | [SOUND_TREBLE] = {"dB", 0, 1, -24, 24, 0}, | ||
30 | [SOUND_BALANCE] = {"%", 0, 1,-100, 100, 0}, | 35 | [SOUND_BALANCE] = {"%", 0, 1,-100, 100, 0}, |
31 | [SOUND_CHANNELS] = {"", 0, 1, 0, 5, 0}, | 36 | [SOUND_CHANNELS] = {"", 0, 1, 0, 5, 0}, |
32 | [SOUND_STEREO_WIDTH] = {"%", 0, 5, 0, 250, 100}, | 37 | [SOUND_STEREO_WIDTH] = {"%", 0, 5, 0, 250, 100}, |
38 | #ifdef HAVE_RECORDING | ||
33 | [SOUND_LEFT_GAIN] = {"dB", 1, 1, 0, 31, 23}, | 39 | [SOUND_LEFT_GAIN] = {"dB", 1, 1, 0, 31, 23}, |
34 | [SOUND_RIGHT_GAIN] = {"dB", 1, 1, 0, 31, 23}, | 40 | [SOUND_RIGHT_GAIN] = {"dB", 1, 1, 0, 31, 23}, |
35 | [SOUND_MIC_GAIN] = {"dB", 1, 1, 0, 1, 0}, | 41 | [SOUND_MIC_GAIN] = {"dB", 1, 1, 0, 1, 0}, |
42 | #endif | ||
36 | [SOUND_DEPTH_3D] = {"%", 0, 1, 0, 15, 0}, | 43 | [SOUND_DEPTH_3D] = {"%", 0, 1, 0, 15, 0}, |
37 | }; | 44 | }; |
38 | 45 | ||
39 | void audiohw_init(void) | 46 | int tenthdb2master(int tdb) |
40 | { | 47 | { |
48 | /* Just go from tenth of dB to half to dB */ | ||
49 | return tdb / 5; | ||
41 | } | 50 | } |
42 | 51 | ||
43 | void audiohw_preinit(void) | 52 | void audiohw_preinit(void) |
44 | { | 53 | { |
54 | imx233_audioout_preinit(); | ||
55 | imx233_audioin_preinit(); | ||
45 | } | 56 | } |
46 | 57 | ||
47 | void audiohw_postinit(void) | 58 | void audiohw_postinit(void) |
48 | { | 59 | { |
60 | imx233_audioout_postinit(); | ||
61 | imx233_audioin_postinit(); | ||
49 | } | 62 | } |
50 | 63 | ||
51 | void audiohw_close(void) | 64 | void audiohw_close(void) |
52 | { | 65 | { |
66 | imx233_audioout_close(); | ||
67 | imx233_audioin_close(); | ||
68 | } | ||
69 | |||
70 | void audiohw_set_headphone_vol(int vol_l, int vol_r) | ||
71 | { | ||
72 | /* Use playback volume if <0 and headphone volume if >0 */ | ||
73 | imx233_audioout_set_dac_vol(MIN(0, vol_l), MIN(0, vol_r)); | ||
74 | imx233_audioout_set_hp_vol(MAX(0, vol_l), MAX(0, vol_r)); | ||
75 | } | ||
76 | |||
77 | void audiohw_set_frequency(int fsel) | ||
78 | { | ||
79 | imx233_audioout_set_freq(fsel); | ||
53 | } | 80 | } |
54 | 81 | ||
55 | void audiohw_set_recvol(int left, int right, int type) | 82 | void audiohw_set_recvol(int left, int right, int type) |