From 623cbd6e02869a1704969fd8faf87fbdf11e766d Mon Sep 17 00:00:00 2001 From: Amaury Pouly Date: Tue, 18 Oct 2011 22:08:41 +0000 Subject: 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 --- firmware/drivers/audio/imx233-codec.c | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) (limited to 'firmware/drivers/audio/imx233-codec.c') diff --git a/firmware/drivers/audio/imx233-codec.c b/firmware/drivers/audio/imx233-codec.c index 769216af87..d99a4d0ca9 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) -- cgit v1.2.3