summaryrefslogtreecommitdiff
path: root/firmware/sound.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/sound.c')
-rw-r--r--firmware/sound.c89
1 files changed, 89 insertions, 0 deletions
diff --git a/firmware/sound.c b/firmware/sound.c
index a19cc15c41..9db30524d6 100644
--- a/firmware/sound.c
+++ b/firmware/sound.c
@@ -25,6 +25,8 @@
25#include "config.h" 25#include "config.h"
26#include "system.h" 26#include "system.h"
27#include "sound.h" 27#include "sound.h"
28#include "settings.h" /* sound_current */
29
28#ifdef HAVE_SW_VOLUME_CONTROL 30#ifdef HAVE_SW_VOLUME_CONTROL
29#include "pcm_sw_volume.h" 31#include "pcm_sw_volume.h"
30#endif /* HAVE_SW_VOLUME_CONTROL */ 32#endif /* HAVE_SW_VOLUME_CONTROL */
@@ -37,6 +39,10 @@
37#define AUDIOHW_SOUND_SETTINGS_VAL2PHYS 39#define AUDIOHW_SOUND_SETTINGS_VAL2PHYS
38#include "audiohw_settings.h" 40#include "audiohw_settings.h"
39 41
42/* Returns current sound settings from global_settings */
43#define SOUND_CUR_SET(name, var) \
44 case SOUND_##name: return var;
45
40extern bool audio_is_initialized; 46extern bool audio_is_initialized;
41 47
42static const struct sound_setting_entry * get_setting_entry(int setting) 48static const struct sound_setting_entry * get_setting_entry(int setting)
@@ -102,6 +108,89 @@ void sound_set(int setting, int value)
102 sound_set_val(value); 108 sound_set_val(value);
103} 109}
104 110
111int sound_current(int setting)
112{
113 switch(setting)
114 {
115#ifndef PLATFORM_HAS_VOLUME_CHANGE
116 SOUND_CUR_SET(VOLUME, global_settings.volume)
117#endif
118#if defined(AUDIOHW_HAVE_BASS)
119 SOUND_CUR_SET(BASS, global_settings.bass)
120#endif
121#if defined(AUDIOHW_HAVE_TREBLE)
122 SOUND_CUR_SET(TREBLE, global_settings.treble)
123#endif
124 SOUND_CUR_SET(BALANCE, global_settings.balance)
125 SOUND_CUR_SET(CHANNELS, global_settings.channel_config)
126 SOUND_CUR_SET(STEREO_WIDTH, global_settings.stereo_width)
127#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
128 SOUND_CUR_SET(LOUDNESS, global_settings.loudness)
129 SOUND_CUR_SET(AVC, global_settings.avc)
130 SOUND_CUR_SET(MDB_STRENGTH, global_settings.mdb_strength)
131 SOUND_CUR_SET(MDB_HARMONICS, global_settings.mdb_harmonics)
132 SOUND_CUR_SET(MDB_CENTER, global_settings.mdb_center)
133 SOUND_CUR_SET(MDB_SHAPE, global_settings.mdb_shape)
134 SOUND_CUR_SET(MDB_ENABLE, global_settings.mdb_enable)
135 SOUND_CUR_SET(SUPERBASS, global_settings.superbass)
136#endif /* (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) */
137#if defined(AUDIOHW_HAVE_BASS_CUTOFF)
138 SOUND_CUR_SET(BASS_CUTOFF, global_settings.bass_cutoff)
139#endif
140#if defined(AUDIOHW_HAVE_TREBLE_CUTOFF)
141 SOUND_CUR_SET(TREBLE_CUTOFF, global_settings.treble_cutoff)
142#endif
143#if defined(AUDIOHW_HAVE_DEPTH_3D)
144 SOUND_CUR_SET(DEPTH_3D, global_settings.depth_3d)
145#endif
146#if defined(AUDIOHW_HAVE_FILTER_ROLL_OFF)
147 SOUND_CUR_SET(FILTER_ROLL_OFF, global_settings.filter_roll_off)
148#endif
149/* Hardware EQ tone controls */
150#if defined(AUDIOHW_HAVE_EQ)
151 SOUND_CUR_SET(EQ_BAND1_GAIN, global_settings.hw_eq_band1_gain)
152#if defined(AUDIOHW_HAVE_EQ_BAND1_FREQUENCY)
153 SOUND_CUR_SET(EQ_BAND1_FREQUENCY, global_settings.hw_eq_band1_frequency)
154#endif
155#if defined(AUDIOHW_HAVE_EQ_BAND2)
156 SOUND_CUR_SET(EQ_BAND2_GAIN, global_settings.hw_eq_band2_gain)
157#if defined(AUDIOHW_HAVE_EQ_BAND2_FREQUENCY)
158 SOUND_CUR_SET(EQ_BAND2_FREQUENCY, global_settings.hw_eq_band2_frequency)
159#endif
160#if defined(AUDIOHW_HAVE_EQ_BAND2_WIDTH)
161 SOUND_CUR_SET(EQ_BAND2_WIDTH, global_settings.hw_eq_band2_width)
162#endif
163#endif /* AUDIOHW_HAVE_EQ_BAND2 */
164#if defined(AUDIOHW_HAVE_EQ_BAND3)
165 SOUND_CUR_SET(EQ_BAND3_GAIN, global_settings.hw_eq_band3_gain)
166#if defined(AUDIOHW_HAVE_EQ_BAND3_FREQUENCY)
167 SOUND_CUR_SET(EQ_BAND3_FREQUENCY, global_settings.hw_eq_band3_frequency)
168#endif
169#if defined(AUDIOHW_HAVE_EQ_BAND3_WIDTH)
170 SOUND_CUR_SET(EQ_BAND3_WIDTH, global_settings.hw_eq_band3_width)
171#endif
172#endif /* AUDIOHW_HAVE_EQ_BAND3 */
173#if defined(AUDIOHW_HAVE_EQ_BAND4)
174 SOUND_CUR_SET(EQ_BAND4_GAIN, global_settings.hw_eq_band4_gain)
175#if defined(AUDIOHW_HAVE_EQ_BAND4_FREQUENCY)
176 SOUND_CUR_SET(EQ_BAND4_FREQUENCY, global_settings.hw_eq_band4_frequency)
177#endif
178#if defined(AUDIOHW_HAVE_EQ_BAND4_WIDTH)
179 SOUND_CUR_SET(EQ_BAND4_WIDTH, global_settings.hw_eq_band4_width)
180#endif
181#endif /* AUDIOHW_HAVE_EQ_BAND4 */
182#if defined(AUDIOHW_HAVE_EQ_BAND5)
183 SOUND_CUR_SET(EQ_BAND5_GAIN, global_settings.hw_eq_band5_gain)
184#if defined(AUDIOHW_HAVE_EQ_BAND5_FREQUENCY)
185 SOUND_CUR_SET(EQ_BAND5_FREQUENCY, global_settings.hw_eq_band5_frequency)
186#endif
187#endif /* AUDIOHW_HAVE_EQ_BAND5 */
188#endif /* AUDIOHW_HAVE_EQ */
189 default:
190 return INT_MIN;
191 } /* switch(setting) */
192}/* sound_current */
193
105#if !defined(AUDIOHW_HAVE_CLIPPING) 194#if !defined(AUDIOHW_HAVE_CLIPPING)
106/* 195/*
107 * The prescaler compensates for any kind of boosts, to prevent clipping. 196 * The prescaler compensates for any kind of boosts, to prevent clipping.