diff options
Diffstat (limited to 'firmware/sound.c')
-rw-r--r-- | firmware/sound.c | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/firmware/sound.c b/firmware/sound.c index 9a3e9d456a..e682d583ae 100644 --- a/firmware/sound.c +++ b/firmware/sound.c | |||
@@ -30,7 +30,7 @@ | |||
30 | #include "wm8975.h" | 30 | #include "wm8975.h" |
31 | #elif defined(HAVE_WM8758) | 31 | #elif defined(HAVE_WM8758) |
32 | #include "wm8758.h" | 32 | #include "wm8758.h" |
33 | #elif defined(HAVE_WM8731) | 33 | #elif defined(HAVE_WM8731) || defined(HAVE_WM8721) |
34 | #include "wm8731l.h" | 34 | #include "wm8731l.h" |
35 | #elif defined(HAVE_TLV320) | 35 | #elif defined(HAVE_TLV320) |
36 | #include "tlv320.h" | 36 | #include "tlv320.h" |
@@ -81,7 +81,7 @@ static const struct sound_settings_info sound_settings_table[] = { | |||
81 | [SOUND_VOLUME] = {"dB", 0, 1, -58, 6, -25, sound_set_volume}, | 81 | [SOUND_VOLUME] = {"dB", 0, 1, -58, 6, -25, sound_set_volume}, |
82 | [SOUND_BASS] = {"dB", 0, 1, -6, 9, 0, sound_set_bass}, | 82 | [SOUND_BASS] = {"dB", 0, 1, -6, 9, 0, sound_set_bass}, |
83 | [SOUND_TREBLE] = {"dB", 0, 1, -6, 9, 0, sound_set_treble}, | 83 | [SOUND_TREBLE] = {"dB", 0, 1, -6, 9, 0, sound_set_treble}, |
84 | #elif defined(HAVE_WM8731) | 84 | #elif defined(HAVE_WM8731) || defined(HAVE_WM8721) |
85 | [SOUND_VOLUME] = {"dB", 0, 1, -74, 6, -25, sound_set_volume}, | 85 | [SOUND_VOLUME] = {"dB", 0, 1, -74, 6, -25, sound_set_volume}, |
86 | [SOUND_BASS] = {"dB", 0, 1, -6, 9, 0, sound_set_bass}, | 86 | [SOUND_BASS] = {"dB", 0, 1, -6, 9, 0, sound_set_bass}, |
87 | [SOUND_TREBLE] = {"dB", 0, 1, -6, 9, 0, sound_set_treble}, | 87 | [SOUND_TREBLE] = {"dB", 0, 1, -6, 9, 0, sound_set_treble}, |
@@ -380,7 +380,7 @@ static int tenthdb2mixer(int db) | |||
380 | return -db * 2 / 5; | 380 | return -db * 2 / 5; |
381 | } | 381 | } |
382 | 382 | ||
383 | #elif defined(HAVE_WM8731) | 383 | #elif defined(HAVE_WM8731) || defined(HAVE_WM8721) |
384 | /* volume/balance/treble/bass interdependency */ | 384 | /* volume/balance/treble/bass interdependency */ |
385 | #define VOLUME_MIN -730 | 385 | #define VOLUME_MIN -730 |
386 | #define VOLUME_MAX 60 | 386 | #define VOLUME_MAX 60 |
@@ -416,9 +416,9 @@ static int tenthdb2mixer(int db) | |||
416 | 416 | ||
417 | #endif | 417 | #endif |
418 | 418 | ||
419 | #if (CONFIG_CODEC == MAS3507D) || defined HAVE_UDA1380 || \ | 419 | #if (CONFIG_CODEC == MAS3507D) || defined HAVE_UDA1380 \ |
420 | defined HAVE_WM8975 || defined HAVE_WM8758 || defined(HAVE_WM8731) || \ | 420 | || defined HAVE_WM8975 || defined HAVE_WM8758 || defined(HAVE_WM8731) \ |
421 | defined(HAVE_TLV320) | 421 | || defined(HAVE_WM8721) || defined(HAVE_TLV320) |
422 | /* volume/balance/treble/bass interdependency main part */ | 422 | /* volume/balance/treble/bass interdependency main part */ |
423 | #define VOLUME_RANGE (VOLUME_MAX - VOLUME_MIN) | 423 | #define VOLUME_RANGE (VOLUME_MAX - VOLUME_MIN) |
424 | 424 | ||
@@ -450,7 +450,8 @@ static void set_prescaled_volume(void) | |||
450 | mas_writereg(MAS_REG_KPRESCALE, prescale_table[prescale/10]); | 450 | mas_writereg(MAS_REG_KPRESCALE, prescale_table[prescale/10]); |
451 | #elif defined(HAVE_UDA1380) | 451 | #elif defined(HAVE_UDA1380) |
452 | uda1380_set_mixer_vol(tenthdb2mixer(-prescale), tenthdb2mixer(-prescale)); | 452 | uda1380_set_mixer_vol(tenthdb2mixer(-prescale), tenthdb2mixer(-prescale)); |
453 | #elif defined(HAVE_WM8975) || defined(HAVE_WM8758) || defined(HAVE_WM8731) | 453 | #elif defined(HAVE_WM8975) || defined(HAVE_WM8758) \ |
454 | || defined(HAVE_WM8731) || defined(HAVE_WM8721) | ||
454 | wmcodec_set_mixer_vol(tenthdb2mixer(-prescale), tenthdb2mixer(-prescale)); | 455 | wmcodec_set_mixer_vol(tenthdb2mixer(-prescale), tenthdb2mixer(-prescale)); |
455 | #endif | 456 | #endif |
456 | 457 | ||
@@ -476,7 +477,8 @@ static void set_prescaled_volume(void) | |||
476 | dac_volume(tenthdb2reg(l), tenthdb2reg(r), false); | 477 | dac_volume(tenthdb2reg(l), tenthdb2reg(r), false); |
477 | #elif defined(HAVE_UDA1380) | 478 | #elif defined(HAVE_UDA1380) |
478 | uda1380_set_master_vol(tenthdb2master(l), tenthdb2master(r)); | 479 | uda1380_set_master_vol(tenthdb2master(l), tenthdb2master(r)); |
479 | #elif defined(HAVE_WM8975) || defined(HAVE_WM8758) || defined(HAVE_WM8731) | 480 | #elif defined(HAVE_WM8975) || defined(HAVE_WM8758) \ |
481 | || defined(HAVE_WM8731) || defined(HAVE_WM8721) | ||
480 | wmcodec_set_master_vol(tenthdb2master(l), tenthdb2master(r)); | 482 | wmcodec_set_master_vol(tenthdb2master(l), tenthdb2master(r)); |
481 | #if defined(HAVE_WM8975) || defined(HAVE_WM8758) | 483 | #if defined(HAVE_WM8975) || defined(HAVE_WM8758) |
482 | wmcodec_set_lineout_vol(tenthdb2master(0), tenthdb2master(0)); | 484 | wmcodec_set_lineout_vol(tenthdb2master(0), tenthdb2master(0)); |
@@ -589,9 +591,9 @@ void sound_set_volume(int value) | |||
589 | #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) | 591 | #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) |
590 | unsigned tmp = ((unsigned)(value + 115) & 0xff) << 8; | 592 | unsigned tmp = ((unsigned)(value + 115) & 0xff) << 8; |
591 | mas_codec_writereg(0x10, tmp); | 593 | mas_codec_writereg(0x10, tmp); |
592 | #elif (CONFIG_CODEC == MAS3507D) || defined HAVE_UDA1380 || \ | 594 | #elif (CONFIG_CODEC == MAS3507D) || defined HAVE_UDA1380 \ |
593 | defined HAVE_WM8975 || defined HAVE_WM8758 || defined HAVE_WM8731 || \ | 595 | || defined HAVE_WM8975 || defined HAVE_WM8758 || defined HAVE_WM8731 \ |
594 | defined(HAVE_TLV320) | 596 | || defined(HAVE_WM8721) || defined(HAVE_TLV320) |
595 | current_volume = value * 10; /* tenth of dB */ | 597 | current_volume = value * 10; /* tenth of dB */ |
596 | set_prescaled_volume(); | 598 | set_prescaled_volume(); |
597 | #elif CONFIG_CPU == PNX0101 | 599 | #elif CONFIG_CPU == PNX0101 |
@@ -607,9 +609,9 @@ void sound_set_balance(int value) | |||
607 | #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) | 609 | #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) |
608 | unsigned tmp = ((unsigned)(value * 127 / 100) & 0xff) << 8; | 610 | unsigned tmp = ((unsigned)(value * 127 / 100) & 0xff) << 8; |
609 | mas_codec_writereg(0x11, tmp); | 611 | mas_codec_writereg(0x11, tmp); |
610 | #elif CONFIG_CODEC == MAS3507D || defined HAVE_UDA1380 || \ | 612 | #elif CONFIG_CODEC == MAS3507D || defined HAVE_UDA1380 \ |
611 | defined HAVE_WM8975 || defined HAVE_WM8758 || defined HAVE_WM8731 || \ | 613 | || defined HAVE_WM8975 || defined HAVE_WM8758 || defined HAVE_WM8731 \ |
612 | defined(HAVE_TLV320) | 614 | || defined(HAVE_WM8721) || defined(HAVE_TLV320) |
613 | current_balance = value * VOLUME_RANGE / 100; /* tenth of dB */ | 615 | current_balance = value * VOLUME_RANGE / 100; /* tenth of dB */ |
614 | set_prescaled_volume(); | 616 | set_prescaled_volume(); |
615 | #elif CONFIG_CPU == PNX0101 | 617 | #elif CONFIG_CPU == PNX0101 |
@@ -634,7 +636,8 @@ void sound_set_bass(int value) | |||
634 | uda1380_set_bass(value >> 1); | 636 | uda1380_set_bass(value >> 1); |
635 | current_bass = value * 10; | 637 | current_bass = value * 10; |
636 | set_prescaled_volume(); | 638 | set_prescaled_volume(); |
637 | #elif defined HAVE_WM8975 || defined HAVE_WM8758 || defined HAVE_WM8731 | 639 | #elif defined HAVE_WM8975 || defined HAVE_WM8758 \ |
640 | || defined HAVE_WM8731 || defined(HAVE_WM8721) | ||
638 | current_bass = value * 10; | 641 | current_bass = value * 10; |
639 | wmcodec_set_bass(value); | 642 | wmcodec_set_bass(value); |
640 | set_prescaled_volume(); | 643 | set_prescaled_volume(); |
@@ -659,7 +662,8 @@ void sound_set_treble(int value) | |||
659 | uda1380_set_treble(value >> 1); | 662 | uda1380_set_treble(value >> 1); |
660 | current_treble = value * 10; | 663 | current_treble = value * 10; |
661 | set_prescaled_volume(); | 664 | set_prescaled_volume(); |
662 | #elif defined(HAVE_WM8975) || defined(HAVE_WM8758) || defined(HAVE_WM8731) | 665 | #elif defined(HAVE_WM8975) || defined(HAVE_WM8758) \ |
666 | || defined(HAVE_WM8731) || defined(HAVE_WM8721) | ||
663 | wmcodec_set_treble(value); | 667 | wmcodec_set_treble(value); |
664 | current_treble = value * 10; | 668 | current_treble = value * 10; |
665 | set_prescaled_volume(); | 669 | set_prescaled_volume(); |