summaryrefslogtreecommitdiff
path: root/firmware/drivers/audio/wm8978.c
diff options
context:
space:
mode:
authorMichael Sevakis <jethead71@rockbox.org>2013-04-20 04:06:13 -0400
committerMichael Sevakis <jethead71@rockbox.org>2013-04-22 20:38:17 -0400
commite61e9c61d0ba6990576d59efca07afa13fd97566 (patch)
tree4b17b22dd4f56568666e25292f38224529ec7113 /firmware/drivers/audio/wm8978.c
parent91b33d5a3e92d62cf6fb6be875437d35b632caf5 (diff)
downloadrockbox-e61e9c61d0ba6990576d59efca07afa13fd97566.tar.gz
rockbox-e61e9c61d0ba6990576d59efca07afa13fd97566.zip
Do some cleanup, adjustment and a couple fixes to recent sound changes.
* SOUND_x enum can be generated by audiohw_settings.h along with settings entries and sound_val2phys. * VOLUME_MIN and VOLUME_MAX are no longer necessary within sound.c. If you need them, they are for target-defined purposes. * Fix up SDL volume implementation in sdl.c. Move sim volume calculation code to pcm-sdl.c. * Min trigger tresholds were based upon VOLUME_MIN for some reason. These setting have nothing to do with playback volume. Since it is no longer present, set these at -89dB which is the minimum peak meter sensitivity setting. * Fix an oversight in wm8758.c. I forgot to add the dB->register conversion to audiohw_set_volume. Change-Id: Ie1df33f1793eee75e6793f16bc7bddd16edb7f75
Diffstat (limited to 'firmware/drivers/audio/wm8978.c')
-rw-r--r--firmware/drivers/audio/wm8978.c21
1 files changed, 9 insertions, 12 deletions
diff --git a/firmware/drivers/audio/wm8978.c b/firmware/drivers/audio/wm8978.c
index 3a86ef204e..69ae608e5d 100644
--- a/firmware/drivers/audio/wm8978.c
+++ b/firmware/drivers/audio/wm8978.c
@@ -155,20 +155,17 @@ static void wmc_write_masked(unsigned int reg, unsigned int bits,
155 * (000000...111111) */ 155 * (000000...111111) */
156static int vol_tenthdb2hw(int db) 156static int vol_tenthdb2hw(int db)
157{ 157{
158 /* -90dB to +6dB 1dB steps (96 levels) 7bits */ 158 /* att DAC AMP result
159 /* 1100000 == +6dB (0x60,96) */ 159 +6dB 0 +6 96
160 /* 1101010 == 0dB (0x5a,90) */ 160 0dB 0 0 90
161 /* 1000001 == -57dB (0x21,33,DAC) */ 161 -57dB 0 -57 33
162 /* 0000001 == -89dB (0x01,01) */ 162 -58dB -1 -57 32
163 /* 0000000 == -90dB (0x00,00,Mute) */ 163 -89dB -32 -57 1
164 if (db < VOLUME_MIN) 164 -90dB -oo -oo 0 */
165 { 165 if (db <= -900)
166 return 0x0; 166 return 0x0;
167 }
168 else 167 else
169 { 168 return db / 10 - -90;
170 return (db - VOLUME_MIN) / 10;
171 }
172} 169}
173 170
174void audiohw_preinit(void) 171void audiohw_preinit(void)