diff options
author | Daniel Ankers <dan@weirdo.org.uk> | 2007-03-11 17:38:08 +0000 |
---|---|---|
committer | Daniel Ankers <dan@weirdo.org.uk> | 2007-03-11 17:38:08 +0000 |
commit | dfad406aa14a735b2cd071d8d399c79be0f98e43 (patch) | |
tree | 2993687589af53e570e27e6a025fe1c24b8f1a96 /firmware/sound.c | |
parent | e21d21720556bb069f7ceb5669c5b693138838bb (diff) | |
download | rockbox-dfad406aa14a735b2cd071d8d399c79be0f98e43.tar.gz rockbox-dfad406aa14a735b2cd071d8d399c79be0f98e43.zip |
Sound for Sansa E200 - based on work by myself, Rene Peinthor, Barry Wardell and Christian Gmeiner from the AS3514 datasheet.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12727 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/sound.c')
-rw-r--r-- | firmware/sound.c | 29 |
1 files changed, 11 insertions, 18 deletions
diff --git a/firmware/sound.c b/firmware/sound.c index 7b29e1f13f..d3f4435058 100644 --- a/firmware/sound.c +++ b/firmware/sound.c | |||
@@ -77,9 +77,8 @@ static const struct sound_settings_info sound_settings_table[] = { | |||
77 | [SOUND_VOLUME] = {"dB", 0, 1, -74, 6, -25, sound_set_volume}, | 77 | [SOUND_VOLUME] = {"dB", 0, 1, -74, 6, -25, sound_set_volume}, |
78 | #elif (CONFIG_CPU == PNX0101) | 78 | #elif (CONFIG_CPU == PNX0101) |
79 | [SOUND_VOLUME] = {"dB", 0, 1, -48, 15, 0, sound_set_volume}, | 79 | [SOUND_VOLUME] = {"dB", 0, 1, -48, 15, 0, sound_set_volume}, |
80 | #elif defined(HAVE_PP5024_CODEC) | 80 | #elif defined(HAVE_AS3514) |
81 | /* TODO: Make this correct */ | 81 | [SOUND_VOLUME] = {"dB", 0, 1, -45, 1, -25, sound_set_volume}, |
82 | [SOUND_VOLUME] = {"dB", 0, 1, -74, 6, -25, sound_set_volume}, | ||
83 | #else /* MAS3507D */ | 82 | #else /* MAS3507D */ |
84 | [SOUND_VOLUME] = {"dB", 0, 1, -78, 18, -18, sound_set_volume}, | 83 | [SOUND_VOLUME] = {"dB", 0, 1, -78, 18, -18, sound_set_volume}, |
85 | [SOUND_BASS] = {"dB", 0, 1, -15, 15, 7, sound_set_bass}, | 84 | [SOUND_BASS] = {"dB", 0, 1, -15, 15, 7, sound_set_bass}, |
@@ -292,17 +291,10 @@ static int tenthdb2reg(int db) | |||
292 | } | 291 | } |
293 | #endif | 292 | #endif |
294 | 293 | ||
295 | #if defined(HAVE_PP5024_CODEC) | ||
296 | /* TODO: Work out volume/balance/treble/bass interdependency */ | ||
297 | #define VOLUME_MIN 0 | ||
298 | #define VOLUME_MAX 1 | ||
299 | |||
300 | #endif | ||
301 | |||
302 | #if (CONFIG_CODEC == MAS3507D) || defined HAVE_UDA1380 \ | 294 | #if (CONFIG_CODEC == MAS3507D) || defined HAVE_UDA1380 \ |
303 | || defined HAVE_WM8975 || defined HAVE_WM8758 || defined(HAVE_WM8731) \ | 295 | || defined HAVE_WM8975 || defined HAVE_WM8758 || defined(HAVE_WM8731) \ |
304 | || defined(HAVE_WM8721) || defined(HAVE_TLV320) || defined(HAVE_WM8751) \ | 296 | || defined(HAVE_WM8721) || defined(HAVE_TLV320) || defined(HAVE_WM8751) \ |
305 | || defined(HAVE_PP5024_CODEC) | 297 | || defined(HAVE_AS3514) |
306 | /* volume/balance/treble/bass interdependency main part */ | 298 | /* volume/balance/treble/bass interdependency main part */ |
307 | #define VOLUME_RANGE (VOLUME_MAX - VOLUME_MIN) | 299 | #define VOLUME_RANGE (VOLUME_MAX - VOLUME_MIN) |
308 | 300 | ||
@@ -363,7 +355,8 @@ static void set_prescaled_volume(void) | |||
363 | #if CONFIG_CODEC == MAS3507D | 355 | #if CONFIG_CODEC == MAS3507D |
364 | dac_volume(tenthdb2reg(l), tenthdb2reg(r), false); | 356 | dac_volume(tenthdb2reg(l), tenthdb2reg(r), false); |
365 | #elif defined(HAVE_UDA1380) || defined(HAVE_WM8975) || defined(HAVE_WM8758) \ | 357 | #elif defined(HAVE_UDA1380) || defined(HAVE_WM8975) || defined(HAVE_WM8758) \ |
366 | || defined(HAVE_WM8731) || defined(HAVE_WM8721) || defined(HAVE_WM8751) | 358 | || defined(HAVE_WM8731) || defined(HAVE_WM8721) || defined(HAVE_WM8751) \ |
359 | || defined(HAVE_AS3514) | ||
367 | audiohw_set_master_vol(tenthdb2master(l), tenthdb2master(r)); | 360 | audiohw_set_master_vol(tenthdb2master(l), tenthdb2master(r)); |
368 | #if defined(HAVE_WM8975) || defined(HAVE_WM8758) || defined(HAVE_WM8751) | 361 | #if defined(HAVE_WM8975) || defined(HAVE_WM8758) || defined(HAVE_WM8751) |
369 | audiohw_set_lineout_vol(tenthdb2master(0), tenthdb2master(0)); | 362 | audiohw_set_lineout_vol(tenthdb2master(0), tenthdb2master(0)); |
@@ -479,7 +472,7 @@ void sound_set_volume(int value) | |||
479 | #elif (CONFIG_CODEC == MAS3507D) || defined HAVE_UDA1380 \ | 472 | #elif (CONFIG_CODEC == MAS3507D) || defined HAVE_UDA1380 \ |
480 | || defined HAVE_WM8975 || defined HAVE_WM8758 || defined HAVE_WM8731 \ | 473 | || defined HAVE_WM8975 || defined HAVE_WM8758 || defined HAVE_WM8731 \ |
481 | || defined(HAVE_WM8721) || defined(HAVE_TLV320) || defined(HAVE_WM8751) \ | 474 | || defined(HAVE_WM8721) || defined(HAVE_TLV320) || defined(HAVE_WM8751) \ |
482 | || defined(HAVE_PP5024_CODEC) | 475 | || defined(HAVE_AS3514) |
483 | current_volume = value * 10; /* tenth of dB */ | 476 | current_volume = value * 10; /* tenth of dB */ |
484 | set_prescaled_volume(); | 477 | set_prescaled_volume(); |
485 | #elif CONFIG_CPU == PNX0101 | 478 | #elif CONFIG_CPU == PNX0101 |
@@ -500,7 +493,7 @@ void sound_set_balance(int value) | |||
500 | || defined(HAVE_WM8721) || defined(HAVE_TLV320) || defined(HAVE_WM8751) | 493 | || defined(HAVE_WM8721) || defined(HAVE_TLV320) || defined(HAVE_WM8751) |
501 | current_balance = value * VOLUME_RANGE / 100; /* tenth of dB */ | 494 | current_balance = value * VOLUME_RANGE / 100; /* tenth of dB */ |
502 | set_prescaled_volume(); | 495 | set_prescaled_volume(); |
503 | #elif CONFIG_CPU == PNX0101 || defined(HAVE_PP5024_CODEC) | 496 | #elif CONFIG_CPU == PNX0101 || defined(HAVE_AS3514) |
504 | /* TODO: implement for iFP and Sansa */ | 497 | /* TODO: implement for iFP and Sansa */ |
505 | (void)value; | 498 | (void)value; |
506 | #endif | 499 | #endif |
@@ -530,8 +523,8 @@ void sound_set_bass(int value) | |||
530 | current_bass = value * 10; | 523 | current_bass = value * 10; |
531 | audiohw_set_bass(value); | 524 | audiohw_set_bass(value); |
532 | set_prescaled_volume(); | 525 | set_prescaled_volume(); |
533 | #elif CONFIG_CPU == PNX0101 || defined(HAVE_PP5024_CODEC) | 526 | #elif CONFIG_CPU == PNX0101 |
534 | /* TODO: implement for iFP and Sansa */ | 527 | /* TODO: implement for iFP */ |
535 | (void)value; | 528 | (void)value; |
536 | #endif | 529 | #endif |
537 | } | 530 | } |
@@ -560,8 +553,8 @@ void sound_set_treble(int value) | |||
560 | audiohw_set_treble(value); | 553 | audiohw_set_treble(value); |
561 | current_treble = value * 10; | 554 | current_treble = value * 10; |
562 | set_prescaled_volume(); | 555 | set_prescaled_volume(); |
563 | #elif CONFIG_CPU == PNX0101 || defined(HAVE_PP5024_CODEC) | 556 | #elif CONFIG_CPU == PNX0101 |
564 | /* TODO: implement for iFP and Sansa */ | 557 | /* TODO: implement for iFP */ |
565 | (void)value; | 558 | (void)value; |
566 | #endif | 559 | #endif |
567 | } | 560 | } |