summaryrefslogtreecommitdiff
path: root/firmware/drivers/audio/wm8758.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/drivers/audio/wm8758.c')
-rw-r--r--firmware/drivers/audio/wm8758.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/firmware/drivers/audio/wm8758.c b/firmware/drivers/audio/wm8758.c
index 3f3ac79229..f7d7a5bc22 100644
--- a/firmware/drivers/audio/wm8758.c
+++ b/firmware/drivers/audio/wm8758.c
@@ -38,7 +38,7 @@ static unsigned short eq1_reg = EQ1_EQ3DMODE | EQ_GAIN_VALUE(0);
38static unsigned short eq5_reg = EQ_GAIN_VALUE(0); 38static unsigned short eq5_reg = EQ_GAIN_VALUE(0);
39 39
40/* convert tenth of dB volume (-89..6) to master volume register value */ 40/* convert tenth of dB volume (-89..6) to master volume register value */
41int tenthdb2master(int db) 41static int vol_tenthdb2hw(int db)
42{ 42{
43 /* att DAC AMP result 43 /* att DAC AMP result
44 +6dB 0 +6 96 44 +6dB 0 +6 96
@@ -47,10 +47,10 @@ int tenthdb2master(int db)
47 -58dB -1 -57 32 47 -58dB -1 -57 32
48 -89dB -32 -57 1 48 -89dB -32 -57 1
49 -90dB -oo -oo 0 */ 49 -90dB -oo -oo 0 */
50 if (db < VOLUME_MIN) { 50 if (db <= -900) {
51 return 0; 51 return 0;
52 } else { 52 } else {
53 return (db-VOLUME_MIN)/10 + 1; 53 return db / 10 - -90;
54 } 54 }
55} 55}
56 56
@@ -137,6 +137,10 @@ void audiohw_postinit(void)
137void audiohw_set_volume(int vol_l, int vol_r) 137void audiohw_set_volume(int vol_l, int vol_r)
138{ 138{
139 int dac_l, amp_l, dac_r, amp_r; 139 int dac_l, amp_l, dac_r, amp_r;
140
141 vol_l = vol_tenthdb2hw(vol_l);
142 vol_r = vol_tenthdb2hw(vol_r);
143
140 get_volume_params(vol_l, &dac_l, &amp_l); 144 get_volume_params(vol_l, &dac_l, &amp_l);
141 get_volume_params(vol_r, &dac_r, &amp_r); 145 get_volume_params(vol_r, &dac_r, &amp_r);
142 146