summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
authorChristian Gmeiner <christian.gmeiner@gmail.com>2008-05-14 21:35:19 +0000
committerChristian Gmeiner <christian.gmeiner@gmail.com>2008-05-14 21:35:19 +0000
commit05e8488ad8f3ff849ab63f2273e44132c64fbfcd (patch)
tree334b360767aecc3050d1d7b0fd80f51e47d893d7 /firmware
parent955d889a15e6d61e9cbd9b2f35af48ec7b6f3bac (diff)
downloadrockbox-05e8488ad8f3ff849ab63f2273e44132c64fbfcd.tar.gz
rockbox-05e8488ad8f3ff849ab63f2273e44132c64fbfcd.zip
Introduce PRESCALER_CAP and move some driver specific code to the correct place.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17516 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware')
-rw-r--r--firmware/drivers/audio/mas35xx.c7
-rw-r--r--firmware/drivers/audio/uda1380.c5
-rw-r--r--firmware/export/audiohw.h15
-rw-r--r--firmware/export/mas35xx.h2
-rw-r--r--firmware/export/uda1380.h2
-rw-r--r--firmware/sound.c8
6 files changed, 32 insertions, 7 deletions
diff --git a/firmware/drivers/audio/mas35xx.c b/firmware/drivers/audio/mas35xx.c
index 403ce07068..1a0d2afe45 100644
--- a/firmware/drivers/audio/mas35xx.c
+++ b/firmware/drivers/audio/mas35xx.c
@@ -161,6 +161,13 @@ void audiohw_set_bass(int val)
161#endif 161#endif
162} 162}
163 163
164#if CONFIG_CODEC == MAS3507D
165void audiohw_set_prescaler(int val)
166{
167 mas_writereg(MAS_REG_KPRESCALE, prescale_table[val/10]);
168}
169#endif
170
164void audiohw_set_treble(int val) 171void audiohw_set_treble(int val)
165{ 172{
166#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) 173#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
diff --git a/firmware/drivers/audio/uda1380.c b/firmware/drivers/audio/uda1380.c
index f6a7c730cb..388e59b1d2 100644
--- a/firmware/drivers/audio/uda1380.c
+++ b/firmware/drivers/audio/uda1380.c
@@ -282,6 +282,11 @@ void audiohw_postinit(void)
282 audiohw_mute(false); 282 audiohw_mute(false);
283} 283}
284 284
285void audiohw_set_prescaler(int val)
286{
287 audiohw_set_mixer_vol(tenthdb2mixer(-val), tenthdb2mixer(-val));
288}
289
285/* Nice shutdown of UDA1380 codec */ 290/* Nice shutdown of UDA1380 codec */
286void audiohw_close(void) 291void audiohw_close(void)
287{ 292{
diff --git a/firmware/export/audiohw.h b/firmware/export/audiohw.h
index d11a3b5181..4c9271e03e 100644
--- a/firmware/export/audiohw.h
+++ b/firmware/export/audiohw.h
@@ -28,6 +28,7 @@
28#define BASS_CAP (1 << 1) 28#define BASS_CAP (1 << 1)
29#define BALANCE_CAP (1 << 2) 29#define BALANCE_CAP (1 << 2)
30#define CLIPPING_CAP (1 << 3) 30#define CLIPPING_CAP (1 << 3)
31#define PRESCALER_CAP (1 << 4)
31 32
32#ifdef HAVE_UDA1380 33#ifdef HAVE_UDA1380
33#include "uda1380.h" 34#include "uda1380.h"
@@ -72,6 +73,10 @@
72#if (AUDIOHW_CAPS & CLIPPING_CAP) 73#if (AUDIOHW_CAPS & CLIPPING_CAP)
73#define AUDIOHW_HAVE_CLIPPING 74#define AUDIOHW_HAVE_CLIPPING
74#endif 75#endif
76
77#if (AUDIOHW_CAPS & PRESCALER_CAP)
78#define AUDIOHW_HAVE_PRESCALER
79#endif
75#endif /* AUDIOHW_CAPS */ 80#endif /* AUDIOHW_CAPS */
76 81
77enum { 82enum {
@@ -164,6 +169,16 @@ void audiohw_close(void);
164void audiohw_set_volume(int val); 169void audiohw_set_volume(int val);
165#endif 170#endif
166 171
172#ifdef AUDIOHW_HAVE_PRESCALER
173/**
174 * Set new prescaler value.
175 * @param val to set.
176 * NOTE: AUDIOHW_CAPS need to contain
177 * PRESCALER_CAP
178 */
179void audiohw_set_prescaler(int val);
180#endif
181
167#ifdef AUDIOHW_HAVE_BALANCE 182#ifdef AUDIOHW_HAVE_BALANCE
168/** 183/**
169 * Set new balance value 184 * Set new balance value
diff --git a/firmware/export/mas35xx.h b/firmware/export/mas35xx.h
index d28db0fb33..a0da03d0a4 100644
--- a/firmware/export/mas35xx.h
+++ b/firmware/export/mas35xx.h
@@ -28,7 +28,7 @@
28 28
29#define VOLUME_MIN -780 29#define VOLUME_MIN -780
30#define VOLUME_MAX 180 30#define VOLUME_MAX 180
31#define AUDIOHW_CAPS (BASS_CAP | TREBLE_CAP) 31#define AUDIOHW_CAPS (BASS_CAP | TREBLE_CAP | PRESCALER_CAP)
32 32
33#else /* CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F */ 33#else /* CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F */
34 34
diff --git a/firmware/export/uda1380.h b/firmware/export/uda1380.h
index c23f95265b..e0125d8d63 100644
--- a/firmware/export/uda1380.h
+++ b/firmware/export/uda1380.h
@@ -24,7 +24,7 @@
24#define VOLUME_MIN -840 24#define VOLUME_MIN -840
25#define VOLUME_MAX 0 25#define VOLUME_MAX 0
26 26
27#define AUDIOHW_CAPS (BASS_CAP | TREBLE_CAP) 27#define AUDIOHW_CAPS (BASS_CAP | TREBLE_CAP | PRESCALER_CAP)
28 28
29extern int tenthdb2master(int db); 29extern int tenthdb2master(int db);
30extern int tenthdb2mixer(int db); 30extern int tenthdb2mixer(int db);
diff --git a/firmware/sound.c b/firmware/sound.c
index 8282decbbe..5c6a821d48 100644
--- a/firmware/sound.c
+++ b/firmware/sound.c
@@ -264,12 +264,10 @@ static void set_prescaled_volume(void)
264 prescale = VOLUME_MAX - current_volume; 264 prescale = VOLUME_MAX - current_volume;
265#endif 265#endif
266 266
267#if defined(HAVE_SW_TONE_CONTROLS) 267#if defined(AUDIOHW_HAVE_PRESCALER)
268 audiohw_set_prescaler(prescale);
269#else
268 dsp_callback(DSP_CALLBACK_SET_PRESCALE, prescale); 270 dsp_callback(DSP_CALLBACK_SET_PRESCALE, prescale);
269#elif CONFIG_CODEC == MAS3507D
270 mas_writereg(MAS_REG_KPRESCALE, prescale_table[prescale/10]);
271#elif defined(HAVE_UDA1380)
272 audiohw_set_mixer_vol(tenthdb2mixer(-prescale), tenthdb2mixer(-prescale));
273#endif 271#endif
274 272
275 if (current_volume == VOLUME_MIN) 273 if (current_volume == VOLUME_MIN)