summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
authorMarcin Bukat <marcin.bukat@gmail.com>2012-07-10 20:09:21 +0200
committerMarcin Bukat <marcin.bukat@gmail.com>2012-07-10 20:09:21 +0200
commit676f72a0f41847b5356d514b31d981154ad125bb (patch)
tree2fafb52c772ba5168ca3ff87f3111d5acd30d70f /firmware
parent9f13f881b32bebad9486bfaa1e543cbd6f64ae36 (diff)
downloadrockbox-676f72a0f41847b5356d514b31d981154ad125bb.zip
rockbox-676f72a0f41847b5356d514b31d981154ad125bb.tar.gz
rockbox-676f72a0f41847b5356d514b31d981154ad125bb.tar.bz2
rockbox-676f72a0f41847b5356d514b31d981154ad125bb.tar.xz
rk27xx codec: Fix volume setting
Change-Id: If57e0225fed4a9f87dff9661b21b2e06fa3d341e
Diffstat (limited to 'firmware')
-rw-r--r--firmware/drivers/audio/rk27xx_codec.c19
-rw-r--r--firmware/export/rk27xx_codec.h4
2 files changed, 14 insertions, 9 deletions
diff --git a/firmware/drivers/audio/rk27xx_codec.c b/firmware/drivers/audio/rk27xx_codec.c
index ebc6c47..c2b5980 100644
--- a/firmware/drivers/audio/rk27xx_codec.c
+++ b/firmware/drivers/audio/rk27xx_codec.c
@@ -28,7 +28,7 @@
#include "i2c-rk27xx.h"
const struct sound_settings_info audiohw_settings[] = {
- [SOUND_VOLUME] = {"dB", 1, 5,-335, 45,-255},
+ [SOUND_VOLUME] = {"dB", 0, 1, -34, 4, -25},
/* HAVE_SW_TONE_CONTROLS */
[SOUND_BASS] = {"dB", 0, 1, -24, 24, 0},
[SOUND_TREBLE] = {"dB", 0, 1, -24, 24, 0},
@@ -72,7 +72,7 @@ int tenthdb2master(int tdb)
*/
if (tdb < VOLUME_MIN)
- return 31;
+ return 32;
else if (tdb < -115)
return -(((tdb + 115)/20) - 20); /* 2.0 dB steps */
else if (tdb < 5)
@@ -150,11 +150,16 @@ void audiohw_set_frequency(int fsel)
void audiohw_set_master_vol(int vol_l, int vol_r)
{
- uint8_t val;
- val = (uint8_t)(vol_r & 0x1f);
- codec_write(CGR9, val);
+ if (vol_l > 31 || vol_r > 31)
+ {
+ audiohw_mute(true);
+ }
+ else
+ {
+ audiohw_mute(false);
- val = (uint8_t)(vol_l & 0x1f);
- codec_write(CGR8, val);
+ codec_write(CGR9, vol_r);
+ codec_write(CGR8, vol_l);
+ }
}
diff --git a/firmware/export/rk27xx_codec.h b/firmware/export/rk27xx_codec.h
index e770e47..5fdf0a0 100644
--- a/firmware/export/rk27xx_codec.h
+++ b/firmware/export/rk27xx_codec.h
@@ -24,8 +24,8 @@
#ifndef _RK27XX_CODEC_H_
#define _RK27XX_CODEC_H_
-#define VOLUME_MIN -335
-#define VOLUME_MAX 45
+#define VOLUME_MIN -330
+#define VOLUME_MAX 40
#define AUDIOHW_CAPS (BASS_CAP | TREBLE_CAP)
extern int tenthdb2master(int db);