From 8391526f794b296e5b6edd5707bbf25b5be73e17 Mon Sep 17 00:00:00 2001 From: Christian Gmeiner Date: Mon, 28 Apr 2008 08:37:18 +0000 Subject: * introduce AUDIOHW_CAPS to define which audio codec can do what kind of operations in hw, e.g. setting bass * added documentation why and when we need the software based prescaler * implement audiohw_set_bass and audiohw_set_treble for mas35xx * clean up sound_set_bass and sound_set_treble * simplify some #ifdef logic * fix special handling of WM8751 - looking for tester :) git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17274 a1c6a512-1295-4272-9138-f99709370657 --- firmware/drivers/audio/mas35xx.c | 20 ++++++++++++++++++++ firmware/drivers/audio/wm8751.c | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) (limited to 'firmware/drivers') diff --git a/firmware/drivers/audio/mas35xx.c b/firmware/drivers/audio/mas35xx.c index dac890ddc8..983818bf61 100644 --- a/firmware/drivers/audio/mas35xx.c +++ b/firmware/drivers/audio/mas35xx.c @@ -150,3 +150,23 @@ void audiohw_set_stereo_width(int val) set_channel_config(); } } + +void audiohw_set_bass(int val) +{ +#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) + unsigned tmp = ((unsigned)(val * 8) & 0xff) << 8; + mas_codec_writereg(0x14, tmp); +#elif CONFIG_CODEC == MAS3507D + mas_writereg(MAS_REG_KBASS, bass_table[val+15]); +#endif +} + +void audiohw_set_treble(int val) +{ +#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) + unsigned tmp = ((unsigned)(val * 8) & 0xff) << 8; + mas_codec_writereg(0x15, tmp); +#elif CONFIG_CODEC == MAS3507D + mas_writereg(MAS_REG_KTREBLE, treble_table[val+15]); +#endif +} diff --git a/firmware/drivers/audio/wm8751.c b/firmware/drivers/audio/wm8751.c index 831f16ab17..26123456b6 100644 --- a/firmware/drivers/audio/wm8751.c +++ b/firmware/drivers/audio/wm8751.c @@ -79,7 +79,7 @@ static int tone_tenthdb2hw(int value) /* -6.0db..+0db..+9.0db step 1.5db - translate -60..+0..+90 step 15 to 10..6..0 step -1. */ - value = 10 - (value + 60) / 15; + value = (10 - (value + 60) / 15) / 10; if (value == 6) value = 0xf; /* 0db -> off */ -- cgit v1.2.3