summaryrefslogtreecommitdiff
path: root/firmware/sound.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/sound.c')
-rw-r--r--firmware/sound.c347
1 files changed, 334 insertions, 13 deletions
diff --git a/firmware/sound.c b/firmware/sound.c
index b56e610034..fb2f353d71 100644
--- a/firmware/sound.c
+++ b/firmware/sound.c
@@ -48,8 +48,13 @@ extern void audiohw_set_volume(int value);
48/* dummy for sim */ 48/* dummy for sim */
49const struct sound_settings_info audiohw_settings[] = { 49const struct sound_settings_info audiohw_settings[] = {
50 [SOUND_VOLUME] = {"dB", 0, 1, VOLUME_MIN / 10, VOLUME_MAX / 10, -25}, 50 [SOUND_VOLUME] = {"dB", 0, 1, VOLUME_MIN / 10, VOLUME_MAX / 10, -25},
51/* Bass and treble tone controls */
52#ifdef AUDIOHW_HAVE_BASS
51 [SOUND_BASS] = {"dB", 0, 1, -24, 24, 0}, 53 [SOUND_BASS] = {"dB", 0, 1, -24, 24, 0},
54#endif
55#ifdef AUDIOHW_HAVE_TREBLE
52 [SOUND_TREBLE] = {"dB", 0, 1, -24, 24, 0}, 56 [SOUND_TREBLE] = {"dB", 0, 1, -24, 24, 0},
57#endif
53 [SOUND_BALANCE] = {"%", 0, 1,-100, 100, 0}, 58 [SOUND_BALANCE] = {"%", 0, 1,-100, 100, 0},
54 [SOUND_CHANNELS] = {"", 0, 1, 0, 5, 0}, 59 [SOUND_CHANNELS] = {"", 0, 1, 0, 5, 0},
55 [SOUND_STEREO_WIDTH] = {"%", 0, 5, 0, 250, 100}, 60 [SOUND_STEREO_WIDTH] = {"%", 0, 5, 0, 250, 100},
@@ -64,6 +69,50 @@ const struct sound_settings_info audiohw_settings[] = {
64#if defined(AUDIOHW_HAVE_TREBLE_CUTOFF) 69#if defined(AUDIOHW_HAVE_TREBLE_CUTOFF)
65 [SOUND_TREBLE_CUTOFF] = {"", 0, 1, 1, 4, 1}, 70 [SOUND_TREBLE_CUTOFF] = {"", 0, 1, 1, 4, 1},
66#endif 71#endif
72#if defined(AUDIOHW_HAVE_DEPTH_3D)
73 [SOUND_DEPTH_3D] = {"%", 0, 1, 0, 15, 0},
74#endif
75/* Hardware EQ tone controls */
76#if defined(AUDIOHW_HAVE_EQ_BAND1)
77 [SOUND_EQ_BAND1_GAIN] = {"dB", 0, 1, -12, 12, 0},
78#endif
79#if defined(AUDIOHW_HAVE_EQ_BAND2)
80 [SOUND_EQ_BAND2_GAIN] = {"dB", 0, 1, -12, 12, 0},
81#endif
82#if defined(AUDIOHW_HAVE_EQ_BAND3)
83 [SOUND_EQ_BAND3_GAIN] = {"dB", 0, 1, -12, 12, 0},
84#endif
85#if defined(AUDIOHW_HAVE_EQ_BAND4)
86 [SOUND_EQ_BAND4_GAIN] = {"dB", 0, 1, -12, 12, 0},
87#endif
88#if defined(AUDIOHW_HAVE_EQ_BAND5)
89 [SOUND_EQ_BAND5_GAIN] = {"dB", 0, 1, -12, 12, 0},
90#endif
91#if defined(AUDIOHW_HAVE_EQ_BAND1_FREQUENCY)
92 [SOUND_EQ_BAND1_FREQUENCY] = {"", 0, 1, 1, 4, 1},
93#endif
94#if defined(AUDIOHW_HAVE_EQ_BAND2_FREQUENCY)
95 [SOUND_EQ_BAND2_FREQUENCY] = {"", 0, 1, 1, 4, 1},
96#endif
97#if defined(AUDIOHW_HAVE_EQ_BAND3_FREQUENCY)
98 [SOUND_EQ_BAND3_FREQUENCY] = {"", 0, 1, 1, 4, 1},
99#endif
100#if defined(AUDIOHW_HAVE_EQ_BAND4_FREQUENCY)
101 [SOUND_EQ_BAND4_FREQUENCY] = {"", 0, 1, 1, 4, 1},
102#endif
103#if defined(AUDIOHW_HAVE_EQ_BAND5_FREQUENCY)
104 [SOUND_EQ_BAND5_FREQUENCY] = {"", 0, 1, 1, 4, 1},
105#endif
106#if defined(AUDIOHW_HAVE_EQ_BAND2_WIDTH)
107 [SOUND_EQ_BAND2_WIDTH] = {"", 0, 1, 0, 1, 0},
108#endif
109#if defined(AUDIOHW_HAVE_EQ_BAND3_WIDTH)
110 [SOUND_EQ_BAND3_WIDTH] = {"", 0, 1, 0, 1, 0},
111#endif
112#if defined(AUDIOHW_HAVE_EQ_BAND4_WIDTH)
113 [SOUND_EQ_BAND4_WIDTH] = {"", 0, 1, 0, 1, 0},
114#endif
115
67#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) 116#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
68 [SOUND_LOUDNESS] = {"dB", 0, 1, 0, 17, 0}, 117 [SOUND_LOUDNESS] = {"dB", 0, 1, 0, 17, 0},
69 [SOUND_AVC] = {"", 0, 1, -1, 4, 0}, 118 [SOUND_AVC] = {"", 0, 1, -1, 4, 0},
@@ -111,8 +160,12 @@ static sound_set_type * const sound_set_fns[] =
111{ 160{
112 [0 ... SOUND_LAST_SETTING-1] = NULL, 161 [0 ... SOUND_LAST_SETTING-1] = NULL,
113 [SOUND_VOLUME] = sound_set_volume, 162 [SOUND_VOLUME] = sound_set_volume,
163#if defined(AUDIOHW_HAVE_BASS)
114 [SOUND_BASS] = sound_set_bass, 164 [SOUND_BASS] = sound_set_bass,
165#endif
166#if defined(AUDIOHW_HAVE_TREBLE)
115 [SOUND_TREBLE] = sound_set_treble, 167 [SOUND_TREBLE] = sound_set_treble,
168#endif
116 [SOUND_BALANCE] = sound_set_balance, 169 [SOUND_BALANCE] = sound_set_balance,
117 [SOUND_CHANNELS] = sound_set_channels, 170 [SOUND_CHANNELS] = sound_set_channels,
118 [SOUND_STEREO_WIDTH] = sound_set_stereo_width, 171 [SOUND_STEREO_WIDTH] = sound_set_stereo_width,
@@ -132,6 +185,49 @@ static sound_set_type * const sound_set_fns[] =
132#if defined(AUDIOHW_HAVE_TREBLE_CUTOFF) 185#if defined(AUDIOHW_HAVE_TREBLE_CUTOFF)
133 [SOUND_TREBLE_CUTOFF] = sound_set_treble_cutoff, 186 [SOUND_TREBLE_CUTOFF] = sound_set_treble_cutoff,
134#endif 187#endif
188#if defined(AUDIOHW_HAVE_DEPTH_3D)
189 [SOUND_DEPTH_3D] = sound_set_depth_3d,
190#endif
191/* Hardware EQ tone controls */
192#if defined(AUDIOHW_HAVE_EQ)
193 [SOUND_EQ_BAND1_GAIN] = sound_set_hw_eq_band1_gain,
194#if defined(AUDIOHW_HAVE_EQ_BAND1_FREQUENCY)
195 [SOUND_EQ_BAND1_FREQUENCY] = sound_set_hw_eq_band1_frequency,
196#endif
197#if defined(AUDIOHW_HAVE_EQ_BAND2)
198 [SOUND_EQ_BAND2_GAIN] = sound_set_hw_eq_band2_gain,
199#if defined(AUDIOHW_HAVE_EQ_BAND2_FREQUENCY)
200 [SOUND_EQ_BAND2_FREQUENCY] = sound_set_hw_eq_band2_frequency,
201#endif
202#if defined(AUDIOHW_HAVE_EQ_BAND2_WIDTH)
203 [SOUND_EQ_BAND2_WIDTH] = sound_set_hw_eq_band2_width,
204#endif
205#endif /* AUDIOHW_HAVE_EQ_BAND2 */
206#if defined(AUDIOHW_HAVE_EQ_BAND3)
207 [SOUND_EQ_BAND3_GAIN] = sound_set_hw_eq_band3_gain,
208#if defined(AUDIOHW_HAVE_EQ_BAND3_FREQUENCY)
209 [SOUND_EQ_BAND3_FREQUENCY] = sound_set_hw_eq_band3_frequency,
210#endif
211#if defined(AUDIOHW_HAVE_EQ_BAND3_WIDTH)
212 [SOUND_EQ_BAND3_WIDTH] = sound_set_hw_eq_band3_width,
213#endif
214#endif /* AUDIOHW_HAVE_EQ_BAND3 */
215#if defined(AUDIOHW_HAVE_EQ_BAND4)
216 [SOUND_EQ_BAND4_GAIN] = sound_set_hw_eq_band4_gain,
217#if defined(AUDIOHW_HAVE_EQ_BAND4_FREQUENCY)
218 [SOUND_EQ_BAND4_FREQUENCY] = sound_set_hw_eq_band4_frequency,
219#endif
220#if defined(AUDIOHW_HAVE_EQ_BAND4_WIDTH)
221 [SOUND_EQ_BAND4_WIDTH] = sound_set_hw_eq_band4_width,
222#endif
223#endif /* AUDIOHW_HAVE_EQ_BAND4 */
224#if defined(AUDIOHW_HAVE_EQ_BAND5)
225 [SOUND_EQ_BAND5_GAIN] = sound_set_hw_eq_band5_gain,
226#if defined(AUDIOHW_HAVE_EQ_BAND5_FREQUENCY)
227 [SOUND_EQ_BAND5_FREQUENCY] = sound_set_hw_eq_band5_frequency,
228#endif
229#endif /* AUDIOHW_HAVE_EQ_BAND5 */
230#endif /* AUDIOHW_HAVE_EQ */
135}; 231};
136 232
137sound_set_type* sound_get_fn(int setting) 233sound_set_type* sound_get_fn(int setting)
@@ -174,8 +270,15 @@ static int tenthdb2reg(int db)
174/* all values in tenth of dB MAS3507D UDA1380 */ 270/* all values in tenth of dB MAS3507D UDA1380 */
175int current_volume = 0; /* -780..+180 -840.. 0 */ 271int current_volume = 0; /* -780..+180 -840.. 0 */
176int current_balance = 0; /* -960..+960 -840..+840 */ 272int current_balance = 0; /* -960..+960 -840..+840 */
273#ifdef AUDIOHW_HAVE_TREBLE
177int current_treble = 0; /* -150..+150 0.. +60 */ 274int current_treble = 0; /* -150..+150 0.. +60 */
275#endif
276#ifdef AUDIOHW_HAVE_BASS
178int current_bass = 0; /* -150..+150 0..+240 */ 277int current_bass = 0; /* -150..+150 0..+240 */
278#endif
279#ifdef AUDIOHW_HAVE_EQ
280int current_eq_band_gain[AUDIOHW_EQ_BAND_NUM];
281#endif
179 282
180static void set_prescaled_volume(void) 283static void set_prescaled_volume(void)
181{ 284{
@@ -191,10 +294,18 @@ static void set_prescaled_volume(void)
191 || defined(HAVE_WM8711) || defined(HAVE_WM8721) || defined(HAVE_WM8731) \ 294 || defined(HAVE_WM8711) || defined(HAVE_WM8721) || defined(HAVE_WM8731) \
192 || defined(HAVE_WM8758) || defined(HAVE_WM8985) || defined(HAVE_UDA1341)) 295 || defined(HAVE_WM8758) || defined(HAVE_WM8985) || defined(HAVE_UDA1341))
193 296
297#if defined(AUDIOHW_HAVE_BASS) && defined(AUDIOHW_HAVE_TREBLE)
194 prescale = MAX(current_bass, current_treble); 298 prescale = MAX(current_bass, current_treble);
299#endif
300#if defined(AUDIOHW_HAVE_EQ)
301 int i;
302 for (i = 0; i < AUDIOHW_EQ_BAND_NUM; i++)
303 prescale = MAX(current_eq_band_gain[i], prescale);
304#endif
305
195 if (prescale < 0) 306 if (prescale < 0)
196 prescale = 0; /* no need to prescale if we don't boost 307 prescale = 0; /* no need to prescale if we don't boost
197 bass or treble */ 308 bass, treble or eq band */
198 309
199 /* Gain up the analog volume to compensate the prescale gain reduction, 310 /* Gain up the analog volume to compensate the prescale gain reduction,
200 * but if this would push the volume over the top, reduce prescaling 311 * but if this would push the volume over the top, reduce prescaling
@@ -289,6 +400,7 @@ void sound_set_balance(int value)
289#endif 400#endif
290} 401}
291 402
403#ifdef AUDIOHW_HAVE_BASS
292void sound_set_bass(int value) 404void sound_set_bass(int value)
293{ 405{
294 if(!audio_is_initialized) 406 if(!audio_is_initialized)
@@ -302,17 +414,19 @@ void sound_set_bass(int value)
302#endif 414#endif
303#endif 415#endif
304 416
305#if defined(AUDIOHW_HAVE_BASS) 417#if defined(HAVE_SW_TONE_CONTROLS)
306 audiohw_set_bass(value);
307#else
308 dsp_callback(DSP_CALLBACK_SET_BASS, current_bass); 418 dsp_callback(DSP_CALLBACK_SET_BASS, current_bass);
419#else
420 audiohw_set_bass(value);
309#endif 421#endif
310 422
311#if !defined(AUDIOHW_HAVE_CLIPPING) 423#if !defined(AUDIOHW_HAVE_CLIPPING)
312 set_prescaled_volume(); 424 set_prescaled_volume();
313#endif 425#endif
314} 426}
427#endif /* AUDIOHW_HAVE_BASS */
315 428
429#ifdef AUDIOHW_HAVE_TREBLE
316void sound_set_treble(int value) 430void sound_set_treble(int value)
317{ 431{
318 if(!audio_is_initialized) 432 if(!audio_is_initialized)
@@ -326,16 +440,37 @@ void sound_set_treble(int value)
326#endif 440#endif
327#endif 441#endif
328 442
329#if defined(AUDIOHW_HAVE_TREBLE) 443#if defined(HAVE_SW_TONE_CONTROLS)
330 audiohw_set_treble(value);
331#else
332 dsp_callback(DSP_CALLBACK_SET_TREBLE, current_treble); 444 dsp_callback(DSP_CALLBACK_SET_TREBLE, current_treble);
445#else
446 audiohw_set_treble(value);
333#endif 447#endif
334 448
335#if !defined(AUDIOHW_HAVE_CLIPPING) 449#if !defined(AUDIOHW_HAVE_CLIPPING)
336 set_prescaled_volume(); 450 set_prescaled_volume();
337#endif 451#endif
338} 452}
453#endif /* AUDIOHW_HAVE_TREBLE */
454
455#if defined(AUDIOHW_HAVE_BASS_CUTOFF)
456void sound_set_bass_cutoff(int value)
457{
458 if(!audio_is_initialized)
459 return;
460
461 audiohw_set_bass_cutoff(value);
462}
463#endif
464
465#if defined(AUDIOHW_HAVE_TREBLE_CUTOFF)
466void sound_set_treble_cutoff(int value)
467{
468 if(!audio_is_initialized)
469 return;
470
471 audiohw_set_treble_cutoff(value);
472}
473#endif
339 474
340void sound_set_channels(int value) 475void sound_set_channels(int value)
341{ 476{
@@ -361,26 +496,208 @@ void sound_set_stereo_width(int value)
361#endif 496#endif
362} 497}
363 498
364#if defined(AUDIOHW_HAVE_BASS_CUTOFF) 499#if defined(AUDIOHW_HAVE_DEPTH_3D)
365void sound_set_bass_cutoff(int value) 500void sound_set_depth_3d(int value)
366{ 501{
367 if(!audio_is_initialized) 502 if(!audio_is_initialized)
368 return; 503 return;
369 504
370 audiohw_set_bass_cutoff(value); 505 audiohw_set_depth_3d(value);
371} 506}
372#endif 507#endif
373 508
374#if defined(AUDIOHW_HAVE_TREBLE_CUTOFF) 509#if defined(AUDIOHW_HAVE_EQ)
375void sound_set_treble_cutoff(int value) 510int sound_enum_hw_eq_band_setting(unsigned int band,
511 unsigned int band_setting)
512{
513 static const int8_t
514 sound_hw_eq_band_setting[AUDIOHW_EQ_SETTING_NUM][AUDIOHW_EQ_BAND_NUM] =
515 {
516 [AUDIOHW_EQ_GAIN] =
517 {
518 [0 ... AUDIOHW_EQ_BAND_NUM-1] = -1,
519 [AUDIOHW_EQ_BAND1] = SOUND_EQ_BAND1_GAIN,
520 #ifdef AUDIOHW_HAVE_EQ_BAND2
521 [AUDIOHW_EQ_BAND2] = SOUND_EQ_BAND2_GAIN,
522 #endif
523 #ifdef AUDIOHW_HAVE_EQ_BAND3
524 [AUDIOHW_EQ_BAND3] = SOUND_EQ_BAND3_GAIN,
525 #endif
526 #ifdef AUDIOHW_HAVE_EQ_BAND4
527 [AUDIOHW_EQ_BAND4] = SOUND_EQ_BAND4_GAIN,
528 #endif
529 #ifdef AUDIOHW_HAVE_EQ_BAND5
530 [AUDIOHW_EQ_BAND5] = SOUND_EQ_BAND5_GAIN,
531 #endif
532 },
533#ifdef AUDIOHW_HAVE_EQ_FREQUENCY
534 [AUDIOHW_EQ_FREQUENCY] =
535 {
536 [0 ... AUDIOHW_EQ_BAND_NUM-1] = -1,
537 #ifdef AUDIOHW_HAVE_EQ_BAND1_FREQUENCY
538 [AUDIOHW_EQ_BAND1] = SOUND_EQ_BAND1_FREQUENCY,
539 #endif
540 #ifdef AUDIOHW_HAVE_EQ_BAND2_FREQUENCY
541 [AUDIOHW_EQ_BAND2] = SOUND_EQ_BAND2_FREQUENCY,
542 #endif
543 #ifdef AUDIOHW_HAVE_EQ_BAND3_FREQUENCY
544 [AUDIOHW_EQ_BAND3] = SOUND_EQ_BAND3_FREQUENCY,
545 #endif
546 #ifdef AUDIOHW_HAVE_EQ_BAND4_FREQUENCY
547 [AUDIOHW_EQ_BAND4] = SOUND_EQ_BAND4_FREQUENCY,
548 #endif
549 #ifdef AUDIOHW_HAVE_EQ_BAND5_FREQUENCY
550 [AUDIOHW_EQ_BAND5] = SOUND_EQ_BAND5_FREQUENCY,
551 #endif
552 },
553#endif /* AUDIOHW_HAVE_EQ_FREQUENCY */
554#ifdef AUDIOHW_HAVE_EQ_WIDTH
555 [AUDIOHW_EQ_WIDTH] =
556 {
557 [0 ... AUDIOHW_EQ_BAND_NUM-1] = -1,
558 #ifdef AUDIOHW_HAVE_EQ_BAND2_WIDTH
559 [AUDIOHW_EQ_BAND2] = SOUND_EQ_BAND2_WIDTH,
560 #endif
561 #ifdef AUDIOHW_HAVE_EQ_BAND3_WIDTH
562 [AUDIOHW_EQ_BAND3] = SOUND_EQ_BAND3_WIDTH,
563 #endif
564 #ifdef AUDIOHW_HAVE_EQ_BAND4_WIDTH
565 [AUDIOHW_EQ_BAND4] = SOUND_EQ_BAND4_WIDTH,
566 #endif
567 },
568#endif /* AUDIOHW_HAVE_EQ_WIDTH */
569 };
570
571 if (band < AUDIOHW_EQ_BAND_NUM && band_setting < AUDIOHW_EQ_SETTING_NUM)
572 return sound_hw_eq_band_setting[band_setting][band];
573
574 return -1;
575}
576
577static void sound_set_hw_eq_band_gain(unsigned int band, int value)
376{ 578{
377 if(!audio_is_initialized) 579 if(!audio_is_initialized)
378 return; 580 return;
379 581
380 audiohw_set_treble_cutoff(value); 582 current_eq_band_gain[band] = value;
583 audiohw_set_eq_band_gain(band, value);
584 set_prescaled_volume();
585}
586
587void sound_set_hw_eq_band1_gain(int value)
588{
589 sound_set_hw_eq_band_gain(AUDIOHW_EQ_BAND1, value);
590}
591
592#if defined(AUDIOHW_HAVE_EQ_BAND2)
593void sound_set_hw_eq_band2_gain(int value)
594{
595 sound_set_hw_eq_band_gain(AUDIOHW_EQ_BAND2, value);
596}
597#endif
598
599#if defined(AUDIOHW_HAVE_EQ_BAND3)
600void sound_set_hw_eq_band3_gain(int value)
601{
602 sound_set_hw_eq_band_gain(AUDIOHW_EQ_BAND3, value);
381} 603}
382#endif 604#endif
383 605
606#if defined(AUDIOHW_HAVE_EQ_BAND4)
607void sound_set_hw_eq_band4_gain(int value)
608{
609 sound_set_hw_eq_band_gain(AUDIOHW_EQ_BAND4, value);
610}
611#endif
612
613#if defined(AUDIOHW_HAVE_EQ_BAND5)
614void sound_set_hw_eq_band5_gain(int value)
615{
616 sound_set_hw_eq_band_gain(AUDIOHW_EQ_BAND5, value);
617}
618#endif
619
620#if defined(AUDIOHW_HAVE_EQ_BAND1_FREQUENCY)
621void sound_set_hw_eq_band1_frequency(int value)
622{
623 if(!audio_is_initialized)
624 return;
625
626 audiohw_set_eq_band_frequency(AUDIOHW_EQ_BAND1, value);
627}
628#endif
629
630#if defined(AUDIOHW_HAVE_EQ_BAND2_FREQUENCY)
631void sound_set_hw_eq_band2_frequency(int value)
632{
633 if(!audio_is_initialized)
634 return;
635
636 audiohw_set_eq_band_frequency(AUDIOHW_EQ_BAND2, value);
637}
638#endif
639
640#if defined(AUDIOHW_HAVE_EQ_BAND3_FREQUENCY)
641void sound_set_hw_eq_band3_frequency(int value)
642{
643 if(!audio_is_initialized)
644 return;
645
646 audiohw_set_eq_band_frequency(AUDIOHW_EQ_BAND3, value);
647}
648#endif
649
650#if defined(AUDIOHW_HAVE_EQ_BAND4_FREQUENCY)
651void sound_set_hw_eq_band4_frequency(int value)
652{
653 if(!audio_is_initialized)
654 return;
655
656 audiohw_set_eq_band_frequency(AUDIOHW_EQ_BAND4, value);
657}
658#endif
659
660#if defined(AUDIOHW_HAVE_EQ_BAND5_FREQUENCY)
661void sound_set_hw_eq_band5_frequency(int value)
662{
663 if(!audio_is_initialized)
664 return;
665
666 audiohw_set_eq_band_frequency(AUDIOHW_EQ_BAND5, value);
667}
668#endif
669
670#if defined(AUDIOHW_HAVE_EQ_BAND2_WIDTH)
671void sound_set_hw_eq_band2_width(int value)
672{
673 if(!audio_is_initialized)
674 return;
675
676 audiohw_set_eq_band_width(AUDIOHW_EQ_BAND2, value);
677}
678#endif
679
680#if defined(AUDIOHW_HAVE_EQ_BAND3_WIDTH)
681void sound_set_hw_eq_band3_width(int value)
682{
683 if(!audio_is_initialized)
684 return;
685
686 audiohw_set_eq_band_width(AUDIOHW_EQ_BAND3, value);
687}
688#endif
689
690#if defined(AUDIOHW_HAVE_EQ_BAND4_WIDTH)
691void sound_set_hw_eq_band4_width(int value)
692{
693 if(!audio_is_initialized)
694 return;
695
696 audiohw_set_eq_band_width(AUDIOHW_EQ_BAND4, value);
697}
698#endif
699#endif /* AUDIOHW_HAVE_EQ */
700
384#if ((CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)) 701#if ((CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F))
385void sound_set_loudness(int value) 702void sound_set_loudness(int value)
386{ 703{
@@ -572,6 +889,10 @@ int sound_val2phys(int setting, int value)
572 break; 889 break;
573#endif 890#endif
574 891
892 case SOUND_DEPTH_3D:
893 result = (100 * value + 8) / 15;
894 break;
895
575 default: 896 default:
576 result = value; 897 result = value;
577 } 898 }