summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
Diffstat (limited to 'firmware')
-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 b9df35b852..3c7cc55ce9 100644
--- a/firmware/drivers/audio/sdl.c
+++ b/firmware/drivers/audio/sdl.c
@@ -29,6 +29,14 @@
29 * SDL. if we used DSP we would run code that doesn't actually run on the target 29 * SDL. if we used DSP we would run code that doesn't actually run on the target
30 **/ 30 **/
31 31
32#ifdef HAVE_SW_VOLUME_CONTROL
33#include "pcm_sw_volume.h"
34
35void audiohw_set_master_vol(int vol_l, int vol_r)
36{
37 pcm_set_master_volume(vol_l, vol_r);
38}
39#else /* ndef HAVE_SW_VOLUME_CONTROL */
32extern void pcm_set_mixer_volume(int); 40extern void pcm_set_mixer_volume(int);
33 41
34void audiohw_set_volume(int volume) 42void audiohw_set_volume(int volume)
@@ -44,6 +52,7 @@ void audiohw_set_volume(int volume)
44 (void)volume; 52 (void)volume;
45#endif /* CONFIG_CODEC == SWCODEC */ 53#endif /* CONFIG_CODEC == SWCODEC */
46} 54}
55#endif /* HAVE_SW_VOLUME_CONTROL */
47 56
48const struct sound_settings_info audiohw_settings[] = { 57const struct sound_settings_info audiohw_settings[] = {
49 [SOUND_VOLUME] = {"dB", 0, 1, VOLUME_MIN / 10, VOLUME_MAX / 10, -25}, 58 [SOUND_VOLUME] = {"dB", 0, 1, VOLUME_MIN / 10, VOLUME_MAX / 10, -25},
@@ -129,7 +138,13 @@ const struct sound_settings_info audiohw_settings[] = {
129 **/ 138 **/
130 139
131#if defined(AUDIOHW_HAVE_PRESCALER) 140#if defined(AUDIOHW_HAVE_PRESCALER)
132void audiohw_set_prescaler(int value) { (void)value; } 141void audiohw_set_prescaler(int value)
142{
143#ifdef HAVE_SW_VOLUME_CONTROL
144 pcm_set_prescaler(value);
145#endif
146 (void)value;
147}
133#endif 148#endif
134#if defined(AUDIOHW_HAVE_BALANCE) 149#if defined(AUDIOHW_HAVE_BALANCE)
135void audiohw_set_balance(int value) { (void)value; } 150void audiohw_set_balance(int value) { (void)value; }
diff --git a/firmware/export/pcm_sw_volume.h b/firmware/export/pcm_sw_volume.h
index b86e78f500..b5d70654a1 100644
--- a/firmware/export/pcm_sw_volume.h
+++ b/firmware/export/pcm_sw_volume.h
@@ -24,6 +24,7 @@
24#ifdef HAVE_SW_VOLUME_CONTROL 24#ifdef HAVE_SW_VOLUME_CONTROL
25 25
26#include <audiohw.h> 26#include <audiohw.h>
27#include <limits.h>
27 28
28#define PCM_MUTE_LEVEL INT_MIN 29#define PCM_MUTE_LEVEL INT_MIN
29 30
diff --git a/firmware/sound.c b/firmware/sound.c
index 2ffef0e72b..7c86b0bf05 100644
--- a/firmware/sound.c
+++ b/firmware/sound.c
@@ -235,8 +235,10 @@ static void set_prescaled_volume(void)
235 } 235 }
236 236
237/* ypr0 with sdl has separate volume controls */ 237/* ypr0 with sdl has separate volume controls */
238#if !defined(HAVE_SDL_AUDIO) || defined(SAMSUNG_YPR0) 238#if defined(HAVE_SW_VOLUME_CONTROL)
239#if defined(HAVE_SW_VOLUME_CONTROL) || defined(HAVE_JZ4740_CODEC) 239 audiohw_set_master_vol(l, r);
240#elif !defined(HAVE_SDL_AUDIO) || defined(SAMSUNG_YPR0)
241#if defined(HAVE_JZ4740_CODEC)
240 audiohw_set_master_vol(l, r); 242 audiohw_set_master_vol(l, r);
241#elif CONFIG_CODEC == MAS3507D 243#elif CONFIG_CODEC == MAS3507D
242 dac_volume(tenthdb2reg(l), tenthdb2reg(r), false); 244 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 bd56189f02..812211288e 100644
--- a/firmware/target/hosted/sdl/pcm-sdl.c
+++ b/firmware/target/hosted/sdl/pcm-sdl.c
@@ -51,7 +51,11 @@
51extern bool debug_audio; 51extern bool debug_audio;
52#endif 52#endif
53 53
54#ifdef HAVE_SW_VOLUME_CONTROL
55static int sim_volume = SDL_MIX_MAXVOLUME;
56#else
54static int sim_volume = 0; 57static int sim_volume = 0;
58#endif
55 59
56#if CONFIG_CODEC == SWCODEC 60#if CONFIG_CODEC == SWCODEC
57static int cvt_status = -1; 61static int cvt_status = -1;
@@ -414,9 +418,11 @@ void pcm_play_dma_postinit(void)
414{ 418{
415} 419}
416 420
421#ifndef HAVE_SW_VOLUME_CONTROL
417void pcm_set_mixer_volume(int volume) 422void pcm_set_mixer_volume(int volume)
418{ 423{
419 sim_volume = volume; 424 sim_volume = volume;
420} 425}
426#endif /* HAVE_SW_VOLUME_CONTROL */
421 427
422#endif /* CONFIG_CODEC == SWCODEC */ 428#endif /* CONFIG_CODEC == SWCODEC */