summaryrefslogtreecommitdiff
path: root/firmware/sound.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/sound.c')
-rw-r--r--firmware/sound.c36
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();