summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--firmware/drivers/audio/wm8758.c1
-rw-r--r--firmware/export/wm8758.h9
2 files changed, 7 insertions, 3 deletions
diff --git a/firmware/drivers/audio/wm8758.c b/firmware/drivers/audio/wm8758.c
index 9ae78191bf..df90081354 100644
--- a/firmware/drivers/audio/wm8758.c
+++ b/firmware/drivers/audio/wm8758.c
@@ -305,6 +305,7 @@ void audiohw_disable_recording(void)
wmcodec_write(PWRMGMT2, PWRMGMT2_ROUT1EN | PWRMGMT2_LOUT1EN);
}
+/* volume in 0 .. 63, corresponds to -12dB .. +35.25dB in 0.75dB steps */
void audiohw_set_recvol(int left, int right, int type)
{
switch (type)
diff --git a/firmware/export/wm8758.h b/firmware/export/wm8758.h
index db6dd083dd..d4194b90ee 100644
--- a/firmware/export/wm8758.h
+++ b/firmware/export/wm8758.h
@@ -32,9 +32,12 @@ AUDIOHW_SETTING(TREBLE, "dB", 0, 1, -12, 12, 0)
AUDIOHW_SETTING(BASS_CUTOFF, "", 0, 1, 1, 4, 1)
AUDIOHW_SETTING(TREBLE_CUTOFF, "", 0, 1, 1, 4, 1)
#ifdef HAVE_RECORDING
-AUDIOHW_SETTING(LEFT_GAIN, "dB", 1, 1, 0, 63, 16, ((val - 23) * 15) / 2 + 200)
-AUDIOHW_SETTING(RIGHT_GAIN, "dB", 1, 1, 0, 63, 16, ((val - 23) * 15) / 2 + 200)
-AUDIOHW_SETTING(MIC_GAIN, "dB", 1, 1, 0, 63, 16, ((val - 23) * 15) / 2 + 200)
+/* The input PGAs have a gain range from -12dB to +35.25dB in 0.75dB steps
+ * Values: 0, 1, ..., 63
+ * => -12dB, -11.25dB, ..., 35.25dB */
+AUDIOHW_SETTING(LEFT_GAIN, "dB", 1, 1, 0, 63, 16, ((val) * 15) / 2 - 120)
+AUDIOHW_SETTING(RIGHT_GAIN, "dB", 1, 1, 0, 63, 16, ((val) * 15) / 2 - 120)
+AUDIOHW_SETTING(MIC_GAIN, "dB", 1, 1, 0, 63, 16, ((val) * 15) / 2 - 120)
#endif /* HAVE_RECORDING */
void audiohw_enable_lineout(bool enable);