From e61e9c61d0ba6990576d59efca07afa13fd97566 Mon Sep 17 00:00:00 2001 From: Michael Sevakis Date: Sat, 20 Apr 2013 04:06:13 -0400 Subject: 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 --- firmware/drivers/audio/wm8978.c | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) (limited to 'firmware/drivers/audio/wm8978.c') 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, * (000000...111111) */ static int vol_tenthdb2hw(int db) { - /* -90dB to +6dB 1dB steps (96 levels) 7bits */ - /* 1100000 == +6dB (0x60,96) */ - /* 1101010 == 0dB (0x5a,90) */ - /* 1000001 == -57dB (0x21,33,DAC) */ - /* 0000001 == -89dB (0x01,01) */ - /* 0000000 == -90dB (0x00,00,Mute) */ - if (db < VOLUME_MIN) - { + /* att DAC AMP result + +6dB 0 +6 96 + 0dB 0 0 90 + -57dB 0 -57 33 + -58dB -1 -57 32 + -89dB -32 -57 1 + -90dB -oo -oo 0 */ + if (db <= -900) return 0x0; - } else - { - return (db - VOLUME_MIN) / 10; - } + return db / 10 - -90; } void audiohw_preinit(void) -- cgit v1.2.3