diff options
author | Michael Sevakis <jethead71@rockbox.org> | 2011-01-21 08:31:40 +0000 |
---|---|---|
committer | Michael Sevakis <jethead71@rockbox.org> | 2011-01-21 08:31:40 +0000 |
commit | 485aecd923b4a984c8697fa6c6b773db338b5ab3 (patch) | |
tree | 4f2d534943368b83e8560e48bdce3d69162fb43e | |
parent | 863c03f2ae08e8fa431f3d40a167605fae726a15 (diff) | |
download | rockbox-485aecd923b4a984c8697fa6c6b773db338b5ab3.tar.gz rockbox-485aecd923b4a984c8697fa6c6b773db338b5ab3.zip |
WM8978: sound.c weirdness strikes again. Prescaler values have to be in centibels.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29100 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | firmware/drivers/audio/wm8978.c | 12 | ||||
-rw-r--r-- | firmware/sound.c | 6 |
2 files changed, 15 insertions, 3 deletions
diff --git a/firmware/drivers/audio/wm8978.c b/firmware/drivers/audio/wm8978.c index 2a19e22df3..f83a832854 100644 --- a/firmware/drivers/audio/wm8978.c +++ b/firmware/drivers/audio/wm8978.c @@ -217,6 +217,14 @@ int sound_val2phys(int setting, int value) break; #endif + case SOUND_EQ_BAND1_GAIN+0x10000: + case SOUND_EQ_BAND2_GAIN+0x10000: + case SOUND_EQ_BAND3_GAIN+0x10000: + case SOUND_EQ_BAND4_GAIN+0x10000: + case SOUND_EQ_BAND5_GAIN+0x10000: + result = value * 10; + break; + case SOUND_DEPTH_3D: result = (100 * value + 8) / 15; break; @@ -330,7 +338,7 @@ static void sync_prescaler(void) /* Combine all prescaling into a single DAC attenuation */ if (wmc_vol.eq_on) - prescaler = wmc_vol.prescaler * 2; + prescaler = wmc_vol.prescaler; if (wmc_vol.enh_3d_on) prescaler += wmc_vol.enh_3d_prescaler; @@ -460,7 +468,7 @@ void audiohw_set_eq_band_width(unsigned int band, int val) * gain to EQ bands. */ void audiohw_set_prescaler(int val) { - wmc_vol.prescaler = val; + wmc_vol.prescaler = val / 5; /* centibels->semi-decibels */ sync_prescaler(); } diff --git a/firmware/sound.c b/firmware/sound.c index de96360198..4dea2b8a84 100644 --- a/firmware/sound.c +++ b/firmware/sound.c @@ -477,10 +477,14 @@ int sound_enum_hw_eq_band_setting(unsigned int band, static void sound_set_hw_eq_band_gain(unsigned int band, int value) { + int setting; + if(!audio_is_initialized) return; - current_eq_band_gain[band] = value; + setting = sound_enum_hw_eq_band_setting(band, AUDIOHW_EQ_GAIN); + current_eq_band_gain[band] = sound_val2phys(setting + 0x10000, value); + audiohw_set_eq_band_gain(band, value); set_prescaled_volume(); } |