diff options
Diffstat (limited to 'firmware/sound.c')
-rw-r--r-- | firmware/sound.c | 42 |
1 files changed, 13 insertions, 29 deletions
diff --git a/firmware/sound.c b/firmware/sound.c index 45d3e4b1b6..1e8f9e2b24 100644 --- a/firmware/sound.c +++ b/firmware/sound.c | |||
@@ -227,11 +227,7 @@ static int tenthdb2reg(int db) | |||
227 | #endif | 227 | #endif |
228 | 228 | ||
229 | 229 | ||
230 | /* MAS3587F and MAS3539F handle clipping prevention internally so we do not need | 230 | #if !defined(AUDIOHW_HAVE_CLIPPING) |
231 | * the prescaler. | ||
232 | */ | ||
233 | #if (CONFIG_CODEC != MAS3587F) && (CONFIG_CODEC != MAS3539F) | ||
234 | |||
235 | /* | 231 | /* |
236 | * The prescaler compensates for any kind of boosts, to prevent clipping. | 232 | * The prescaler compensates for any kind of boosts, to prevent clipping. |
237 | * | 233 | * |
@@ -327,41 +323,29 @@ void sound_set_volume(int value) | |||
327 | { | 323 | { |
328 | if(!audio_is_initialized) | 324 | if(!audio_is_initialized) |
329 | return; | 325 | return; |
330 | #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) | 326 | |
331 | unsigned tmp = ((unsigned)(value + 115) & 0xff) << 8; | 327 | #if defined(AUDIOHW_HAVE_CLIPPING) |
332 | mas_codec_writereg(0x10, tmp); | 328 | audiohw_set_volume(value); |
333 | #elif (CONFIG_CODEC == MAS3507D) || defined HAVE_UDA1380 \ | ||
334 | || defined HAVE_WM8975 || defined HAVE_WM8758 || defined HAVE_WM8731 \ | ||
335 | || defined(HAVE_WM8721) || defined(HAVE_TLV320) || defined(HAVE_WM8751) \ | ||
336 | || defined(HAVE_AS3514) || defined(HAVE_WM8985) || defined(HAVE_TSC2100) \ | ||
337 | || defined(HAVE_WM8978) | ||
338 | current_volume = value * 10; /* tenth of dB */ | ||
339 | set_prescaled_volume(); | ||
340 | #elif CONFIG_CPU == PNX0101 | 329 | #elif CONFIG_CPU == PNX0101 |
341 | int tmp = (60 - value * 4) & 0xff; | 330 | int tmp = (60 - value * 4) & 0xff; |
342 | CODECVOL = tmp | (tmp << 8); | 331 | CODECVOL = tmp | (tmp << 8); |
332 | #else | ||
333 | current_volume = value * 10; /* tenth of dB */ | ||
334 | set_prescaled_volume(); | ||
343 | #endif | 335 | #endif |
344 | (void)value; | ||
345 | } | 336 | } |
346 | 337 | ||
347 | void sound_set_balance(int value) | 338 | void sound_set_balance(int value) |
348 | { | 339 | { |
349 | if(!audio_is_initialized) | 340 | if(!audio_is_initialized) |
350 | return; | 341 | return; |
351 | #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) | 342 | |
352 | unsigned tmp = ((unsigned)(value * 127 / 100) & 0xff) << 8; | 343 | #ifdef AUDIOHW_HAVE_BALANCE |
353 | mas_codec_writereg(0x11, tmp); | 344 | audiohw_set_balance(value); |
354 | #elif CONFIG_CODEC == MAS3507D || defined HAVE_UDA1380 \ | 345 | #else |
355 | || defined HAVE_WM8975 || defined HAVE_WM8758 || defined HAVE_WM8731 \ | ||
356 | || defined(HAVE_WM8721) || defined(HAVE_TLV320) || defined(HAVE_WM8751) \ | ||
357 | || defined(HAVE_AS3514) || defined(HAVE_WM8985) || defined(HAVE_TSC2100) \ | ||
358 | || defined(HAVE_WM8978) | ||
359 | current_balance = value * VOLUME_RANGE / 100; /* tenth of dB */ | 346 | current_balance = value * VOLUME_RANGE / 100; /* tenth of dB */ |
360 | set_prescaled_volume(); | 347 | set_prescaled_volume(); |
361 | #elif CONFIG_CPU == PNX0101 | ||
362 | /* TODO: implement for iFP */ | ||
363 | #endif | 348 | #endif |
364 | (void)value; | ||
365 | } | 349 | } |
366 | 350 | ||
367 | void sound_set_bass(int value) | 351 | void sound_set_bass(int value) |
@@ -375,7 +359,7 @@ void sound_set_bass(int value) | |||
375 | dsp_callback(DSP_CALLBACK_SET_BASS, current_bass); | 359 | dsp_callback(DSP_CALLBACK_SET_BASS, current_bass); |
376 | #endif | 360 | #endif |
377 | 361 | ||
378 | #if (CONFIG_CODEC != MAS3587F) && (CONFIG_CODEC != MAS3539F) | 362 | #if !defined(AUDIOHW_HAVE_CLIPPING) |
379 | #if defined(HAVE_WM8751) | 363 | #if defined(HAVE_WM8751) |
380 | current_bass = value; | 364 | current_bass = value; |
381 | #else | 365 | #else |
@@ -396,7 +380,7 @@ void sound_set_treble(int value) | |||
396 | dsp_callback(DSP_CALLBACK_SET_TREBLE, current_treble); | 380 | dsp_callback(DSP_CALLBACK_SET_TREBLE, current_treble); |
397 | #endif | 381 | #endif |
398 | 382 | ||
399 | #if (CONFIG_CODEC != MAS3587F) && (CONFIG_CODEC != MAS3539F) | 383 | #if !defined(AUDIOHW_HAVE_CLIPPING) |
400 | #if defined(HAVE_WM8751) | 384 | #if defined(HAVE_WM8751) |
401 | current_treble = value; | 385 | current_treble = value; |
402 | #else | 386 | #else |