summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
Diffstat (limited to 'firmware')
-rw-r--r--firmware/drivers/audio/sdl.c4
-rw-r--r--firmware/export/audiohw.h15
-rw-r--r--firmware/export/audiohw_settings.h3
-rw-r--r--firmware/export/sound.h4
-rw-r--r--firmware/sound.c13
5 files changed, 39 insertions, 0 deletions
diff --git a/firmware/drivers/audio/sdl.c b/firmware/drivers/audio/sdl.c
index fb49a291d1..89f40baedf 100644
--- a/firmware/drivers/audio/sdl.c
+++ b/firmware/drivers/audio/sdl.c
@@ -118,6 +118,10 @@ void audiohw_set_lineout_volume(int vol_l, int vol_r)
118void audiohw_set_filter_roll_off(int value) 118void audiohw_set_filter_roll_off(int value)
119 { (void)value; } 119 { (void)value; }
120#endif 120#endif
121#if defined(AUDIOHW_HAVE_POWER_MODE)
122void audiohw_set_power_mode(int value)
123 { (void)value; }
124#endif
121 125
122void audiohw_close(void) {} 126void audiohw_close(void) {}
123 127
diff --git a/firmware/export/audiohw.h b/firmware/export/audiohw.h
index 8a46cbea78..d862c977db 100644
--- a/firmware/export/audiohw.h
+++ b/firmware/export/audiohw.h
@@ -41,6 +41,7 @@
41#define LIN_GAIN_CAP (1 << 11) 41#define LIN_GAIN_CAP (1 << 11)
42#define MIC_GAIN_CAP (1 << 12) 42#define MIC_GAIN_CAP (1 << 12)
43#define FILTER_ROLL_OFF_CAP (1 << 13) 43#define FILTER_ROLL_OFF_CAP (1 << 13)
44#define POWER_MODE_CAP (1 << 14)
44 45
45/* Used by every driver to export its min/max/default values for its audio 46/* Used by every driver to export its min/max/default values for its audio
46 settings. */ 47 settings. */
@@ -391,6 +392,10 @@ enum AUDIOHW_EQ_SETTINGS
391#define AUDIOHW_HAVE_FILTER_ROLL_OFF 392#define AUDIOHW_HAVE_FILTER_ROLL_OFF
392#endif 393#endif
393 394
395#if (AUDIOHW_CAPS & POWER_MODE_CAP)
396#define AUDIOHW_HAVE_POWER_MODE
397#endif
398
394#endif /* AUDIOHW_CAPS */ 399#endif /* AUDIOHW_CAPS */
395 400
396#ifdef HAVE_SW_TONE_CONTROLS 401#ifdef HAVE_SW_TONE_CONTROLS
@@ -586,6 +591,16 @@ void audiohw_set_depth_3d(int val);
586void audiohw_set_filter_roll_off(int val); 591void audiohw_set_filter_roll_off(int val);
587#endif 592#endif
588 593
594#ifdef AUDIOHW_HAVE_POWER_MODE
595/**
596 * Set DAC's power saving mode.
597 * @param enable 0 - highest performance, 1 - battery saving
598 * NOTE: AUDIOHW_CAPS need to contain
599 * POWER_MODE_CAP
600 */
601void audiohw_set_power_mode(int mode);
602#endif
603
589void audiohw_set_frequency(int fsel); 604void audiohw_set_frequency(int fsel);
590 605
591#ifdef HAVE_RECORDING 606#ifdef HAVE_RECORDING
diff --git a/firmware/export/audiohw_settings.h b/firmware/export/audiohw_settings.h
index 1d3e0dc12f..8010963ea4 100644
--- a/firmware/export/audiohw_settings.h
+++ b/firmware/export/audiohw_settings.h
@@ -103,6 +103,9 @@ AUDIOHW_SETTINGS(
103#if defined(AUDIOHW_HAVE_FILTER_ROLL_OFF) 103#if defined(AUDIOHW_HAVE_FILTER_ROLL_OFF)
104 AUDIOHW_SETTING_ENT(FILTER_ROLL_OFF, sound_set_filter_roll_off) 104 AUDIOHW_SETTING_ENT(FILTER_ROLL_OFF, sound_set_filter_roll_off)
105#endif 105#endif
106#if defined(AUDIOHW_HAVE_POWER_MODE)
107 AUDIOHW_SETTING_ENT(POWER_MODE, sound_set_power_mode)
108#endif
106/* Hardware EQ tone controls */ 109/* Hardware EQ tone controls */
107#if defined(AUDIOHW_HAVE_EQ) 110#if defined(AUDIOHW_HAVE_EQ)
108 AUDIOHW_SETTING_ENT(EQ_BAND1_GAIN, sound_set_hw_eq_band1_gain) 111 AUDIOHW_SETTING_ENT(EQ_BAND1_GAIN, sound_set_hw_eq_band1_gain)
diff --git a/firmware/export/sound.h b/firmware/export/sound.h
index 2e04cac854..8e79dd0aed 100644
--- a/firmware/export/sound.h
+++ b/firmware/export/sound.h
@@ -57,6 +57,10 @@ void sound_set_depth_3d(int value);
57void sound_set_filter_roll_off(int value); 57void sound_set_filter_roll_off(int value);
58#endif 58#endif
59 59
60#if defined(AUDIOHW_HAVE_POWER_MODE)
61void sound_set_power_mode(int value);
62#endif
63
60#ifdef AUDIOHW_HAVE_EQ 64#ifdef AUDIOHW_HAVE_EQ
61/* 65/*
62 * band = SOUND_EQ_BANDb 66 * band = SOUND_EQ_BANDb
diff --git a/firmware/sound.c b/firmware/sound.c
index 71bdc25003..6fe6115406 100644
--- a/firmware/sound.c
+++ b/firmware/sound.c
@@ -145,6 +145,9 @@ int sound_current(int setting)
145#if defined(AUDIOHW_HAVE_FILTER_ROLL_OFF) 145#if defined(AUDIOHW_HAVE_FILTER_ROLL_OFF)
146 SOUND_CUR_SET(FILTER_ROLL_OFF, global_settings.roll_off) 146 SOUND_CUR_SET(FILTER_ROLL_OFF, global_settings.roll_off)
147#endif 147#endif
148#if defined(AUDIOHW_HAVE_POWER_MODE)
149 SOUND_CUR_SET(POWER_MODE, global_settings.power_mode)
150#endif
148 151
149#if 0 /*WRONG -- these need to index the hw_eq_bands[AUDIOHW_EQ_BAND_NUM] struct*/ 152#if 0 /*WRONG -- these need to index the hw_eq_bands[AUDIOHW_EQ_BAND_NUM] struct*/
150/* Hardware EQ tone controls */ 153/* Hardware EQ tone controls */
@@ -425,6 +428,16 @@ void sound_set_filter_roll_off(int value)
425} 428}
426#endif 429#endif
427 430
431#if defined(AUDIOHW_HAVE_POWER_MODE)
432void sound_set_power_mode(int value)
433{
434 if (!audio_is_initialized)
435 return;
436
437 audiohw_set_power_mode(value);
438}
439#endif
440
428#if defined(AUDIOHW_HAVE_EQ) 441#if defined(AUDIOHW_HAVE_EQ)
429int sound_enum_hw_eq_band_setting(unsigned int band, 442int sound_enum_hw_eq_band_setting(unsigned int band,
430 unsigned int band_setting) 443 unsigned int band_setting)