From d8368d58b0bd073ef6bed6a7b7d51c671b8ea4ae Mon Sep 17 00:00:00 2001 From: Amaury Pouly Date: Tue, 18 Jun 2013 16:09:07 +0200 Subject: imx233: add recording side and 3d to codec driver Change-Id: I3587434749c401a28c6e77bd30395e7df15f2e8a --- firmware/drivers/audio/imx233-codec.c | 35 +++++++++++++++++++++++++++++++---- firmware/export/imx233-codec.h | 3 ++- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/firmware/drivers/audio/imx233-codec.c b/firmware/drivers/audio/imx233-codec.c index f808a73fae..512bab6280 100644 --- a/firmware/drivers/audio/imx233-codec.c +++ b/firmware/drivers/audio/imx233-codec.c @@ -53,14 +53,41 @@ void audiohw_set_frequency(int fsel) imx233_audioout_set_freq(fsel); } +void audiohw_enable_recording(bool source_mic) +{ + imx233_audioin_open(); + /* if source is microhpone we need to power the microphone too */ + imx233_audioin_enable_mic(source_mic); +} + +void audiohw_disable_recording(void) +{ + imx233_audioin_close(); +} + void audiohw_set_recvol(int left, int right, int type) { - (void) left; - (void) right; - (void) type; + if(type == AUDIO_GAIN_LINEIN) + { + imx233_audioin_set_vol(false, left, AUDIOIN_SELECT_LINE1); + imx233_audioin_set_vol(true, right, AUDIOIN_SELECT_LINE1); + imx233_audioin_set_vol(false, left, AUDIOIN_SELECT_LINE2); + imx233_audioin_set_vol(true, right, AUDIOIN_SELECT_LINE2); + imx233_audioin_set_vol(false, left, AUDIOIN_SELECT_HEADPHONE); + imx233_audioin_set_vol(true, right, AUDIOIN_SELECT_HEADPHONE); + } + else + imx233_audioin_set_vol(false, left, AUDIOIN_SELECT_MICROPHONE); } void audiohw_set_depth_3d(int val) { - (void) val; + /* input is raw value ranging from 0dB to 6dB in tenth of dB + * convert to value in 1.5dB steps */ + imx233_audioout_set_3d_effect(val / 15); +} + +void audiohw_set_monitor(bool enable) +{ + imx233_audioout_select_hp_input(enable); } diff --git a/firmware/export/imx233-codec.h b/firmware/export/imx233-codec.h index a02ef22fec..2bd6cba5de 100644 --- a/firmware/export/imx233-codec.h +++ b/firmware/export/imx233-codec.h @@ -37,6 +37,7 @@ AUDIOHW_SETTING(LEFT_GAIN, "dB", 1, 1, 0, 31, 23) AUDIOHW_SETTING(RIGHT_GAIN, "dB", 1, 1, 0, 31, 23) AUDIOHW_SETTING(MIC_GAIN, "dB", 1, 1, 0, 1, 1) #endif /* HAVE_RECORDING */ -AUDIOHW_SETTING(DEPTH_3D, "%", 0, 1, 0, 15, 0) +/* i.MX233 has four settings: 0dB, 3dB, 4.5dB, 6dB so fake 1.5dB steps */ +AUDIOHW_SETTING(DEPTH_3D, "dB", 1, 15, 0, 60, 0) #endif /* __IMX233_CODEC_H_ */ -- cgit v1.2.3