diff options
Diffstat (limited to 'firmware/mp3_playback.c')
-rw-r--r-- | firmware/mp3_playback.c | 134 |
1 files changed, 31 insertions, 103 deletions
diff --git a/firmware/mp3_playback.c b/firmware/mp3_playback.c index 239f987c56..28d14eae64 100644 --- a/firmware/mp3_playback.c +++ b/firmware/mp3_playback.c | |||
@@ -94,9 +94,14 @@ static int numdecimals[] = | |||
94 | static int minval[] = | 94 | static int minval[] = |
95 | { | 95 | { |
96 | 0, /* Volume */ | 96 | 0, /* Volume */ |
97 | 0, /* Bass */ | 97 | #ifdef HAVE_MAS3587F |
98 | 0, /* Treble */ | 98 | -12, /* Bass */ |
99 | -50, /* Balance */ | 99 | -12, /* Treble */ |
100 | #else | ||
101 | -15, /* Bass */ | ||
102 | -15, /* Treble */ | ||
103 | #endif | ||
104 | -100, /* Balance */ | ||
100 | 0, /* Loudness */ | 105 | 0, /* Loudness */ |
101 | 0, /* Bass boost */ | 106 | 0, /* Bass boost */ |
102 | -1, /* AVC */ | 107 | -1, /* AVC */ |
@@ -110,15 +115,15 @@ static int maxval[] = | |||
110 | { | 115 | { |
111 | 100, /* Volume */ | 116 | 100, /* Volume */ |
112 | #ifdef HAVE_MAS3587F | 117 | #ifdef HAVE_MAS3587F |
113 | 24, /* Bass */ | 118 | 12, /* Bass */ |
114 | 24, /* Treble */ | 119 | 12, /* Treble */ |
115 | #else | 120 | #else |
116 | 30, /* Bass */ | 121 | 15, /* Bass */ |
117 | 30, /* Treble */ | 122 | 15, /* Treble */ |
118 | #endif | 123 | #endif |
119 | 50, /* Balance */ | 124 | 100, /* Balance */ |
120 | 17, /* Loudness */ | 125 | 17, /* Loudness */ |
121 | 10, /* Bass boost */ | 126 | 100, /* Bass boost */ |
122 | 3, /* AVC */ | 127 | 3, /* AVC */ |
123 | 6, /* Channels */ | 128 | 6, /* Channels */ |
124 | 15, /* Left gain */ | 129 | 15, /* Left gain */ |
@@ -130,11 +135,11 @@ static int defaultval[] = | |||
130 | { | 135 | { |
131 | 70, /* Volume */ | 136 | 70, /* Volume */ |
132 | #ifdef HAVE_MAS3587F | 137 | #ifdef HAVE_MAS3587F |
133 | 12+6, /* Bass */ | 138 | 6, /* Bass */ |
134 | 12+6, /* Treble */ | 139 | 6, /* Treble */ |
135 | #else | 140 | #else |
136 | 15+7, /* Bass */ | 141 | 7, /* Bass */ |
137 | 15+7, /* Treble */ | 142 | 7, /* Treble */ |
138 | #endif | 143 | #endif |
139 | 0, /* Balance */ | 144 | 0, /* Balance */ |
140 | 0, /* Loudness */ | 145 | 0, /* Loudness */ |
@@ -614,30 +619,27 @@ void mpeg_sound_set(int setting, int value) | |||
614 | #ifdef HAVE_MAS3587F | 619 | #ifdef HAVE_MAS3587F |
615 | tmp = ((value * 127 / 100) & 0xff) << 8; | 620 | tmp = ((value * 127 / 100) & 0xff) << 8; |
616 | mas_codec_writereg(0x11, tmp & 0xff00); | 621 | mas_codec_writereg(0x11, tmp & 0xff00); |
617 | #else | ||
618 | /* Convert to percent */ | ||
619 | current_balance = value * 2; | ||
620 | #endif | 622 | #endif |
621 | break; | 623 | break; |
622 | 624 | ||
623 | case SOUND_BASS: | 625 | case SOUND_BASS: |
624 | #ifdef HAVE_MAS3587F | 626 | #ifdef HAVE_MAS3587F |
625 | tmp = (((value-12) * 8) & 0xff) << 8; | 627 | tmp = ((value * 8) & 0xff) << 8; |
626 | mas_codec_writereg(0x14, tmp & 0xff00); | 628 | mas_codec_writereg(0x14, tmp & 0xff00); |
627 | #else | 629 | #else |
628 | mas_writereg(MAS_REG_KBASS, bass_table[value]); | 630 | mas_writereg(MAS_REG_KBASS, bass_table[value+15]); |
629 | current_bass = (value-15) * 10; | 631 | current_bass = (value) * 10; |
630 | set_prescaled_volume(); | 632 | set_prescaled_volume(); |
631 | #endif | 633 | #endif |
632 | break; | 634 | break; |
633 | 635 | ||
634 | case SOUND_TREBLE: | 636 | case SOUND_TREBLE: |
635 | #ifdef HAVE_MAS3587F | 637 | #ifdef HAVE_MAS3587F |
636 | tmp = (((value-12) * 8) & 0xff) << 8; | 638 | tmp = ((value * 8) & 0xff) << 8; |
637 | mas_codec_writereg(0x15, tmp & 0xff00); | 639 | mas_codec_writereg(0x15, tmp & 0xff00); |
638 | #else | 640 | #else |
639 | mas_writereg(MAS_REG_KTREBLE, treble_table[value]); | 641 | mas_writereg(MAS_REG_KTREBLE, treble_table[value+15]); |
640 | current_treble = (value-15) * 10; | 642 | current_treble = (value) * 10; |
641 | set_prescaled_volume(); | 643 | set_prescaled_volume(); |
642 | #endif | 644 | #endif |
643 | break; | 645 | break; |
@@ -645,7 +647,7 @@ void mpeg_sound_set(int setting, int value) | |||
645 | #ifdef HAVE_MAS3587F | 647 | #ifdef HAVE_MAS3587F |
646 | case SOUND_SUPERBASS: | 648 | case SOUND_SUPERBASS: |
647 | if (value) { | 649 | if (value) { |
648 | tmp = MAX(MIN(value * 12, 0x7f), 0); | 650 | tmp = MAX(MIN(value * 127 / 100, 0x7f), 0); |
649 | mas_codec_writereg(MAS_REG_KMDB_STR, (tmp & 0xff) << 8); | 651 | mas_codec_writereg(MAS_REG_KMDB_STR, (tmp & 0xff) << 8); |
650 | tmp = 0x30; /* MDB_HAR: Space for experiment here */ | 652 | tmp = 0x30; /* MDB_HAR: Space for experiment here */ |
651 | mas_codec_writereg(MAS_REG_KMDB_HAR, (tmp & 0xff) << 8); | 653 | mas_codec_writereg(MAS_REG_KMDB_HAR, (tmp & 0xff) << 8); |
@@ -700,43 +702,11 @@ void mpeg_sound_set(int setting, int value) | |||
700 | 702 | ||
701 | int mpeg_val2phys(int setting, int value) | 703 | int mpeg_val2phys(int setting, int value) |
702 | { | 704 | { |
705 | #ifdef HAVE_MAS3587F | ||
703 | int result = 0; | 706 | int result = 0; |
704 | 707 | ||
705 | switch(setting) | 708 | switch(setting) |
706 | { | 709 | { |
707 | case SOUND_VOLUME: | ||
708 | result = value; | ||
709 | break; | ||
710 | |||
711 | case SOUND_BALANCE: | ||
712 | result = value * 2; | ||
713 | break; | ||
714 | |||
715 | case SOUND_BASS: | ||
716 | #ifdef HAVE_MAS3587F | ||
717 | result = value - 12; | ||
718 | #else | ||
719 | result = value - 15; | ||
720 | #endif | ||
721 | break; | ||
722 | |||
723 | case SOUND_TREBLE: | ||
724 | #ifdef HAVE_MAS3587F | ||
725 | result = value - 12; | ||
726 | #else | ||
727 | result = value - 15; | ||
728 | #endif | ||
729 | break; | ||
730 | |||
731 | #ifdef HAVE_MAS3587F | ||
732 | case SOUND_LOUDNESS: | ||
733 | result = value; | ||
734 | break; | ||
735 | |||
736 | case SOUND_SUPERBASS: | ||
737 | result = value * 10; | ||
738 | break; | ||
739 | |||
740 | case SOUND_LEFT_GAIN: | 710 | case SOUND_LEFT_GAIN: |
741 | case SOUND_RIGHT_GAIN: | 711 | case SOUND_RIGHT_GAIN: |
742 | result = (value - 2) * 15; | 712 | result = (value - 2) * 15; |
@@ -745,60 +715,18 @@ int mpeg_val2phys(int setting, int value) | |||
745 | case SOUND_MIC_GAIN: | 715 | case SOUND_MIC_GAIN: |
746 | result = value * 15 + 210; | 716 | result = value * 15 + 210; |
747 | break; | 717 | break; |
748 | #endif | ||
749 | } | ||
750 | return result; | ||
751 | } | ||
752 | |||
753 | int mpeg_phys2val(int setting, int value) | ||
754 | { | ||
755 | int result = 0; | ||
756 | |||
757 | switch(setting) | ||
758 | { | ||
759 | case SOUND_VOLUME: | ||
760 | result = value; | ||
761 | break; | ||
762 | |||
763 | case SOUND_BALANCE: | ||
764 | result = value / 2; | ||
765 | break; | ||
766 | |||
767 | case SOUND_BASS: | ||
768 | #ifdef HAVE_MAS3587F | ||
769 | result = value + 12; | ||
770 | #else | ||
771 | result = value + 15; | ||
772 | #endif | ||
773 | break; | ||
774 | |||
775 | case SOUND_TREBLE: | ||
776 | #ifdef HAVE_MAS3587F | ||
777 | result = value + 12; | ||
778 | #else | ||
779 | result = value + 15; | ||
780 | #endif | ||
781 | break; | ||
782 | 718 | ||
783 | #ifdef HAVE_MAS3587F | 719 | default: |
784 | case SOUND_SUPERBASS: | ||
785 | result = value / 10; | ||
786 | break; | ||
787 | |||
788 | case SOUND_LOUDNESS: | ||
789 | case SOUND_AVC: | ||
790 | case SOUND_LEFT_GAIN: | ||
791 | case SOUND_RIGHT_GAIN: | ||
792 | case SOUND_MIC_GAIN: | ||
793 | result = value; | 720 | result = value; |
794 | break; | 721 | break; |
795 | #endif | ||
796 | } | 722 | } |
797 | |||
798 | return result; | 723 | return result; |
724 | #else | ||
725 | (void)setting; | ||
726 | return value; | ||
727 | #endif | ||
799 | } | 728 | } |
800 | 729 | ||
801 | |||
802 | void mpeg_sound_channel_config(int configuration) | 730 | void mpeg_sound_channel_config(int configuration) |
803 | { | 731 | { |
804 | #ifdef SIMULATOR | 732 | #ifdef SIMULATOR |