diff options
author | Karl Kurbjun <kkurbjun@gmail.com> | 2009-03-03 18:05:22 +0000 |
---|---|---|
committer | Karl Kurbjun <kkurbjun@gmail.com> | 2009-03-03 18:05:22 +0000 |
commit | 096eb687a68c5ff90436ee0c65b2a1674813b633 (patch) | |
tree | 4242f97b91d2c925ac8d4d4ad9f4d2554e1fb3b7 | |
parent | 1fb8242d968a3ee7091ef86db37b3e8f593eaeeb (diff) | |
download | rockbox-096eb687a68c5ff90436ee0c65b2a1674813b633.tar.gz rockbox-096eb687a68c5ff90436ee0c65b2a1674813b633.zip |
Get the volume controls working on the M:Robe 500 along with some minor code changes.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20194 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | firmware/drivers/audio/tsc2100.c | 25 | ||||
-rw-r--r-- | firmware/export/config-mrobe500.h | 9 | ||||
-rw-r--r-- | firmware/export/tsc2100.h | 1 | ||||
-rw-r--r-- | firmware/sound.c | 3 | ||||
-rwxr-xr-x | firmware/target/arm/tms320dm320/debug-dm320.c | 3 | ||||
-rw-r--r-- | firmware/target/arm/tms320dm320/dsp/main.c | 21 |
6 files changed, 19 insertions, 43 deletions
diff --git a/firmware/drivers/audio/tsc2100.c b/firmware/drivers/audio/tsc2100.c index ca7f22d097..98a16f1fc1 100644 --- a/firmware/drivers/audio/tsc2100.c +++ b/firmware/drivers/audio/tsc2100.c | |||
@@ -29,20 +29,13 @@ | |||
29 | #include "tsc2100.h" | 29 | #include "tsc2100.h" |
30 | 30 | ||
31 | const struct sound_settings_info audiohw_settings[] = { | 31 | const struct sound_settings_info audiohw_settings[] = { |
32 | [SOUND_VOLUME] = {"dB", 0, 1, -63, 0, -25}, | 32 | [SOUND_VOLUME] = {"dB", 0, 1, VOLUME_MIN/10, VOLUME_MAX/10, -25}, |
33 | #if 0 | ||
34 | /* HAVE_SW_TONE_CONTROLS */ | 33 | /* HAVE_SW_TONE_CONTROLS */ |
35 | [SOUND_BASS] = {"dB", 0, 1, -24, 24, 0}, | 34 | [SOUND_BASS] = {"dB", 0, 1, -24, 24, 0}, |
36 | [SOUND_TREBLE] = {"dB", 0, 1, -24, 24, 0}, | 35 | [SOUND_TREBLE] = {"dB", 0, 1, -24, 24, 0}, |
37 | [SOUND_BALANCE] = {"%", 0, 1,-100, 100, 0}, | 36 | [SOUND_BALANCE] = {"%", 0, 1,-100, 100, 0}, |
38 | [SOUND_CHANNELS] = {"", 0, 1, 0, 5, 0}, | 37 | [SOUND_CHANNELS] = {"", 0, 1, 0, 5, 0}, |
39 | [SOUND_STEREO_WIDTH] = {"%", 0, 5, 0, 250, 100}, | 38 | [SOUND_STEREO_WIDTH] = {"%", 0, 5, 0, 250, 100}, |
40 | #ifdef HAVE_RECORDING | ||
41 | [SOUND_MIC_GAIN] = {"dB", 1, 1, 0, 39, 23}, | ||
42 | [SOUND_LEFT_GAIN] = {"dB", 1, 1, 0, 31, 23}, | ||
43 | [SOUND_RIGHT_GAIN] = {"dB", 1, 1, 0, 31, 23}, | ||
44 | #endif | ||
45 | #endif | ||
46 | }; | 39 | }; |
47 | static bool is_muted = false; | 40 | static bool is_muted = false; |
48 | /* convert tenth of dB volume to master volume register value */ | 41 | /* convert tenth of dB volume to master volume register value */ |
@@ -50,11 +43,11 @@ int tenthdb2master(int db) | |||
50 | { | 43 | { |
51 | /* 0 to -63.0dB in 1dB steps, tsc2100 can goto -63.5 in 0.5dB steps */ | 44 | /* 0 to -63.0dB in 1dB steps, tsc2100 can goto -63.5 in 0.5dB steps */ |
52 | if (db < VOLUME_MIN) { | 45 | if (db < VOLUME_MIN) { |
53 | return 0x0; | 46 | return 0x7E; |
54 | } else if (db >= VOLUME_MAX) { | 47 | } else if (db >= VOLUME_MAX) { |
55 | return 0x1f; | 48 | return 0x00; |
56 | } else { | 49 | } else { |
57 | return((db-VOLUME_MIN)/10); /* VOLUME_MIN is negative */ | 50 | return(-((db)/5)); /* VOLUME_MIN is negative */ |
58 | } | 51 | } |
59 | } | 52 | } |
60 | 53 | ||
@@ -95,15 +88,7 @@ void audiohw_postinit(void) | |||
95 | 88 | ||
96 | void audiohw_set_master_vol(int vol_l, int vol_r) | 89 | void audiohw_set_master_vol(int vol_l, int vol_r) |
97 | { | 90 | { |
98 | short vol = (vol_l<<14)|(vol_r); | 91 | tsc2100_writereg(TSDACGAIN_PAGE, TSDACGAIN_ADDRESS, (short)((vol_l<<8) | vol_r) ); |
99 | if (is_muted) | ||
100 | vol |= (1<<15)|(1<<7); | ||
101 | tsc2100_writereg(TSDACGAIN_PAGE, TSDACGAIN_ADDRESS, vol); | ||
102 | } | ||
103 | |||
104 | void audiohw_set_lineout_vol(int vol_l, int vol_r) | ||
105 | { | ||
106 | audiohw_set_master_vol(vol_l, vol_r); | ||
107 | } | 92 | } |
108 | 93 | ||
109 | void audiohw_mute(bool mute) | 94 | void audiohw_mute(bool mute) |
diff --git a/firmware/export/config-mrobe500.h b/firmware/export/config-mrobe500.h index 5f89a9667d..857404b3db 100644 --- a/firmware/export/config-mrobe500.h +++ b/firmware/export/config-mrobe500.h | |||
@@ -93,6 +93,9 @@ | |||
93 | /* Define this if you do software codec */ | 93 | /* Define this if you do software codec */ |
94 | #define CONFIG_CODEC SWCODEC | 94 | #define CONFIG_CODEC SWCODEC |
95 | 95 | ||
96 | /* There is no hardware tone control */ | ||
97 | #define HAVE_SW_TONE_CONTROLS | ||
98 | |||
96 | /* define this if you have a real-time clock */ | 99 | /* define this if you have a real-time clock */ |
97 | #define CONFIG_RTC RTC_RX5X348AB | 100 | #define CONFIG_RTC RTC_RX5X348AB |
98 | 101 | ||
@@ -120,12 +123,6 @@ | |||
120 | /* The number of bytes reserved for loadable plugins */ | 123 | /* The number of bytes reserved for loadable plugins */ |
121 | #define PLUGIN_BUFFER_SIZE 0x100000 | 124 | #define PLUGIN_BUFFER_SIZE 0x100000 |
122 | 125 | ||
123 | /* Define this if you have the WM8975 audio codec */ | ||
124 | //#define HAVE_WM8751 | ||
125 | |||
126 | /* Define this if you want to use the adaptive bass capibility of the 8751 */ | ||
127 | /* #define USE_ADAPTIVE_BASS */ | ||
128 | |||
129 | #define HW_SAMPR_CAPS (SAMPR_CAP_88 | SAMPR_CAP_44 | SAMPR_CAP_22 | \ | 126 | #define HW_SAMPR_CAPS (SAMPR_CAP_88 | SAMPR_CAP_44 | SAMPR_CAP_22 | \ |
130 | SAMPR_CAP_11) | 127 | SAMPR_CAP_11) |
131 | 128 | ||
diff --git a/firmware/export/tsc2100.h b/firmware/export/tsc2100.h index 242d3b1889..8d0ee529ff 100644 --- a/firmware/export/tsc2100.h +++ b/firmware/export/tsc2100.h | |||
@@ -134,6 +134,5 @@ void tsc2100_keyclick(void); | |||
134 | 134 | ||
135 | extern int tenthdb2master(int db); | 135 | extern int tenthdb2master(int db); |
136 | extern void audiohw_set_master_vol(int vol_l, int vol_r); | 136 | extern void audiohw_set_master_vol(int vol_l, int vol_r); |
137 | extern void audiohw_set_lineout_vol(int vol_l, int vol_r); | ||
138 | 137 | ||
139 | #endif | 138 | #endif |
diff --git a/firmware/sound.c b/firmware/sound.c index c602a41467..5e5a596374 100644 --- a/firmware/sound.c +++ b/firmware/sound.c | |||
@@ -257,8 +257,7 @@ static void set_prescaled_volume(void) | |||
257 | || defined(HAVE_WM8751) || defined(HAVE_AS3514) || defined(HAVE_TSC2100) | 257 | || defined(HAVE_WM8751) || defined(HAVE_AS3514) || defined(HAVE_TSC2100) |
258 | audiohw_set_master_vol(tenthdb2master(l), tenthdb2master(r)); | 258 | audiohw_set_master_vol(tenthdb2master(l), tenthdb2master(r)); |
259 | #if defined(HAVE_WM8975) || defined(HAVE_WM8758) \ | 259 | #if defined(HAVE_WM8975) || defined(HAVE_WM8758) \ |
260 | || (defined(HAVE_WM8751) && !defined(MROBE_100)) \ | 260 | || (defined(HAVE_WM8751) && !defined(MROBE_100)) || defined(HAVE_WM8985) |
261 | || defined(HAVE_TSC2100) || defined(HAVE_WM8985) | ||
262 | audiohw_set_lineout_vol(tenthdb2master(0), tenthdb2master(0)); | 261 | audiohw_set_lineout_vol(tenthdb2master(0), tenthdb2master(0)); |
263 | #endif | 262 | #endif |
264 | 263 | ||
diff --git a/firmware/target/arm/tms320dm320/debug-dm320.c b/firmware/target/arm/tms320dm320/debug-dm320.c index b630fe4795..db19a16a07 100755 --- a/firmware/target/arm/tms320dm320/debug-dm320.c +++ b/firmware/target/arm/tms320dm320/debug-dm320.c | |||
@@ -39,9 +39,6 @@ | |||
39 | bool __dbg_ports(void) | 39 | bool __dbg_ports(void) |
40 | { | 40 | { |
41 | dsp_init(); | 41 | dsp_init(); |
42 | #ifndef CREATIVE_ZVx | ||
43 | tsc2100_writereg(TSDACGAIN_PAGE, TSDACGAIN_ADDRESS, 0x2020/*x0303*/); | ||
44 | #endif | ||
45 | dsp_wake(); | 42 | dsp_wake(); |
46 | return false; | 43 | return false; |
47 | } | 44 | } |
diff --git a/firmware/target/arm/tms320dm320/dsp/main.c b/firmware/target/arm/tms320dm320/dsp/main.c index 57156e0451..ae2030a310 100644 --- a/firmware/target/arm/tms320dm320/dsp/main.c +++ b/firmware/target/arm/tms320dm320/dsp/main.c | |||
@@ -43,17 +43,6 @@ void main(void) { | |||
43 | 43 | ||
44 | debugf("DSP inited..."); | 44 | debugf("DSP inited..."); |
45 | 45 | ||
46 | #ifdef DATA_32_SINE | ||
47 | for (i = 0; i < 32; i++) { | ||
48 | double ratio = ((double)i)/32.0; | ||
49 | double rad = 3.0*3.141592*ratio; | ||
50 | double normal = sin(rad); | ||
51 | double scaled = 32767.0*(normal); | ||
52 | data[2*i + 0] = -(signed short)scaled; | ||
53 | data[2*i + 1] = (signed short)scaled; | ||
54 | } | ||
55 | #endif | ||
56 | |||
57 | for (;;) { | 46 | for (;;) { |
58 | asm(" IDLE 1"); | 47 | asm(" IDLE 1"); |
59 | asm(" NOP"); | 48 | asm(" NOP"); |
@@ -69,6 +58,16 @@ void main(void) { | |||
69 | memset((unsigned short *)0x7f80, 0, 0x80); | 58 | memset((unsigned short *)0x7f80, 0, 0x80); |
70 | #endif | 59 | #endif |
71 | 60 | ||
61 | #ifdef DATA_32_SINE | ||
62 | for (i = 0; i < 32; i++) { | ||
63 | double ratio = ((double)i)/32.0; | ||
64 | double rad = 3.0*3.141592*ratio; | ||
65 | double normal = sin(rad); | ||
66 | double scaled = 32767.0*(normal); | ||
67 | data[2*i + 0] = -(signed short)scaled; | ||
68 | data[2*i + 1] = (signed short)scaled; | ||
69 | } | ||
70 | #endif | ||
72 | 71 | ||
73 | #ifdef MANUAL_TRANSFER | 72 | #ifdef MANUAL_TRANSFER |
74 | register signed short *p; | 73 | register signed short *p; |