summaryrefslogtreecommitdiff
path: root/firmware/drivers
diff options
context:
space:
mode:
authorAmaury Pouly <pamaury@rockbox.org>2011-10-18 22:08:41 +0000
committerAmaury Pouly <pamaury@rockbox.org>2011-10-18 22:08:41 +0000
commit623cbd6e02869a1704969fd8faf87fbdf11e766d (patch)
tree12b6b715a481de7989787c1c065b4bfa10868865 /firmware/drivers
parent390edd58c877f62b4d9363e4f0172259d4d76148 (diff)
downloadrockbox-623cbd6e02869a1704969fd8faf87fbdf11e766d.zip
rockbox-623cbd6e02869a1704969fd8faf87fbdf11e766d.tar.gz
rockbox-623cbd6e02869a1704969fd8faf87fbdf11e766d.tar.bz2
rockbox-623cbd6e02869a1704969fd8faf87fbdf11e766d.tar.xz
imx233/fuze+: implement pcm out and audio codec, update SOURCES
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30800 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/drivers')
-rw-r--r--firmware/drivers/audio/imx233-codec.c33
1 files changed, 30 insertions, 3 deletions
diff --git a/firmware/drivers/audio/imx233-codec.c b/firmware/drivers/audio/imx233-codec.c
index 769216a..d99a4d0 100644
--- a/firmware/drivers/audio/imx233-codec.c
+++ b/firmware/drivers/audio/imx233-codec.c
@@ -22,34 +22,61 @@
#include "system.h"
#include "audiohw.h"
#include "audio.h"
+#include "audioout-imx233.h"
+#include "audioin-imx233.h"
-/* TO FILL */
const struct sound_settings_info audiohw_settings[] =
{
- [SOUND_VOLUME] = {"dB", 0, 1, -74, 6, -25},
+ /* i.MX233 has half dB steps */
+ [SOUND_VOLUME] = {"dB", 0, 5, VOLUME_MIN / 10, VOLUME_MAX / 10, -25},
+ /* HAVE_SW_TONE_CONTROLS */
+ [SOUND_BASS] = {"dB", 0, 1, -24, 24, 0},
+ [SOUND_TREBLE] = {"dB", 0, 1, -24, 24, 0},
[SOUND_BALANCE] = {"%", 0, 1,-100, 100, 0},
[SOUND_CHANNELS] = {"", 0, 1, 0, 5, 0},
[SOUND_STEREO_WIDTH] = {"%", 0, 5, 0, 250, 100},
+#ifdef HAVE_RECORDING
[SOUND_LEFT_GAIN] = {"dB", 1, 1, 0, 31, 23},
[SOUND_RIGHT_GAIN] = {"dB", 1, 1, 0, 31, 23},
[SOUND_MIC_GAIN] = {"dB", 1, 1, 0, 1, 0},
+#endif
[SOUND_DEPTH_3D] = {"%", 0, 1, 0, 15, 0},
};
-void audiohw_init(void)
+int tenthdb2master(int tdb)
{
+ /* Just go from tenth of dB to half to dB */
+ return tdb / 5;
}
void audiohw_preinit(void)
{
+ imx233_audioout_preinit();
+ imx233_audioin_preinit();
}
void audiohw_postinit(void)
{
+ imx233_audioout_postinit();
+ imx233_audioin_postinit();
}
void audiohw_close(void)
{
+ imx233_audioout_close();
+ imx233_audioin_close();
+}
+
+void audiohw_set_headphone_vol(int vol_l, int vol_r)
+{
+ /* Use playback volume if <0 and headphone volume if >0 */
+ imx233_audioout_set_dac_vol(MIN(0, vol_l), MIN(0, vol_r));
+ imx233_audioout_set_hp_vol(MAX(0, vol_l), MAX(0, vol_r));
+}
+
+void audiohw_set_frequency(int fsel)
+{
+ imx233_audioout_set_freq(fsel);
}
void audiohw_set_recvol(int left, int right, int type)