summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Sevakis <jethead71@rockbox.org>2013-04-11 18:57:06 -0400
committerMichael Sevakis <jethead71@rockbox.org>2013-04-11 19:00:23 -0400
commit2dd1f37a109792b262a4000c050f7a48a145f1c4 (patch)
treec76ac85fd65972956ffe994158cc5ae9b43c99ca
parentf5a5b946867677de76c405ee72e2ea47e36e4c83 (diff)
downloadrockbox-2dd1f37a109792b262a4000c050f7a48a145f1c4.zip
rockbox-2dd1f37a109792b262a4000c050f7a48a145f1c4.tar.gz
rockbox-2dd1f37a109792b262a4000c050f7a48a145f1c4.tar.bz2
rockbox-2dd1f37a109792b262a4000c050f7a48a145f1c4.tar.xz
Fix f5a5b94 errors. Employ SW volume for select targets on SIM.
Onda VX747 sim was missing a limits #define; #include limits.h in pcm_sw_volume.h. Simply use the software volume control for the SIM volume control rather than the SDL volume control when the target would have it natively. Change-Id: I8e924a2ff1b410f602452d2ea9b691efb82c931e
-rw-r--r--firmware/drivers/audio/sdl.c17
-rw-r--r--firmware/export/pcm_sw_volume.h1
-rw-r--r--firmware/sound.c6
-rw-r--r--firmware/target/hosted/sdl/pcm-sdl.c6
4 files changed, 27 insertions, 3 deletions
diff --git a/firmware/drivers/audio/sdl.c b/firmware/drivers/audio/sdl.c
index b9df35b..3c7cc55 100644
--- a/firmware/drivers/audio/sdl.c
+++ b/firmware/drivers/audio/sdl.c
@@ -29,6 +29,14 @@
* SDL. if we used DSP we would run code that doesn't actually run on the target
**/
+#ifdef HAVE_SW_VOLUME_CONTROL
+#include "pcm_sw_volume.h"
+
+void audiohw_set_master_vol(int vol_l, int vol_r)
+{
+ pcm_set_master_volume(vol_l, vol_r);
+}
+#else /* ndef HAVE_SW_VOLUME_CONTROL */
extern void pcm_set_mixer_volume(int);
void audiohw_set_volume(int volume)
@@ -44,6 +52,7 @@ void audiohw_set_volume(int volume)
(void)volume;
#endif /* CONFIG_CODEC == SWCODEC */
}
+#endif /* HAVE_SW_VOLUME_CONTROL */
const struct sound_settings_info audiohw_settings[] = {
[SOUND_VOLUME] = {"dB", 0, 1, VOLUME_MIN / 10, VOLUME_MAX / 10, -25},
@@ -129,7 +138,13 @@ const struct sound_settings_info audiohw_settings[] = {
**/
#if defined(AUDIOHW_HAVE_PRESCALER)
-void audiohw_set_prescaler(int value) { (void)value; }
+void audiohw_set_prescaler(int value)
+{
+#ifdef HAVE_SW_VOLUME_CONTROL
+ pcm_set_prescaler(value);
+#endif
+ (void)value;
+}
#endif
#if defined(AUDIOHW_HAVE_BALANCE)
void audiohw_set_balance(int value) { (void)value; }
diff --git a/firmware/export/pcm_sw_volume.h b/firmware/export/pcm_sw_volume.h
index b86e78f..b5d7065 100644
--- a/firmware/export/pcm_sw_volume.h
+++ b/firmware/export/pcm_sw_volume.h
@@ -24,6 +24,7 @@
#ifdef HAVE_SW_VOLUME_CONTROL
#include <audiohw.h>
+#include <limits.h>
#define PCM_MUTE_LEVEL INT_MIN
diff --git a/firmware/sound.c b/firmware/sound.c
index 2ffef0e..7c86b0b 100644
--- a/firmware/sound.c
+++ b/firmware/sound.c
@@ -235,8 +235,10 @@ static void set_prescaled_volume(void)
}
/* ypr0 with sdl has separate volume controls */
-#if !defined(HAVE_SDL_AUDIO) || defined(SAMSUNG_YPR0)
-#if defined(HAVE_SW_VOLUME_CONTROL) || defined(HAVE_JZ4740_CODEC)
+#if defined(HAVE_SW_VOLUME_CONTROL)
+ audiohw_set_master_vol(l, r);
+#elif !defined(HAVE_SDL_AUDIO) || defined(SAMSUNG_YPR0)
+#if defined(HAVE_JZ4740_CODEC)
audiohw_set_master_vol(l, r);
#elif CONFIG_CODEC == MAS3507D
dac_volume(tenthdb2reg(l), tenthdb2reg(r), false);
diff --git a/firmware/target/hosted/sdl/pcm-sdl.c b/firmware/target/hosted/sdl/pcm-sdl.c
index bd56189..8122112 100644
--- a/firmware/target/hosted/sdl/pcm-sdl.c
+++ b/firmware/target/hosted/sdl/pcm-sdl.c
@@ -51,7 +51,11 @@
extern bool debug_audio;
#endif
+#ifdef HAVE_SW_VOLUME_CONTROL
+static int sim_volume = SDL_MIX_MAXVOLUME;
+#else
static int sim_volume = 0;
+#endif
#if CONFIG_CODEC == SWCODEC
static int cvt_status = -1;
@@ -414,9 +418,11 @@ void pcm_play_dma_postinit(void)
{
}
+#ifndef HAVE_SW_VOLUME_CONTROL
void pcm_set_mixer_volume(int volume)
{
sim_volume = volume;
}
+#endif /* HAVE_SW_VOLUME_CONTROL */
#endif /* CONFIG_CODEC == SWCODEC */