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/wm8758.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'firmware/drivers/audio/wm8758.c') 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); static unsigned short eq5_reg = EQ_GAIN_VALUE(0); /* convert tenth of dB volume (-89..6) to master volume register value */ -int tenthdb2master(int db) +static int vol_tenthdb2hw(int db) { /* att DAC AMP result +6dB 0 +6 96 @@ -47,10 +47,10 @@ int tenthdb2master(int db) -58dB -1 -57 32 -89dB -32 -57 1 -90dB -oo -oo 0 */ - if (db < VOLUME_MIN) { + if (db <= -900) { return 0; } else { - return (db-VOLUME_MIN)/10 + 1; + return db / 10 - -90; } } @@ -137,6 +137,10 @@ void audiohw_postinit(void) void audiohw_set_volume(int vol_l, int vol_r) { int dac_l, amp_l, dac_r, amp_r; + + vol_l = vol_tenthdb2hw(vol_l); + vol_r = vol_tenthdb2hw(vol_r); + get_volume_params(vol_l, &dac_l, &_l); get_volume_params(vol_r, &dac_r, &_r); -- cgit v1.2.3