summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/drivers/audio/imx233-codec.c35
-rw-r--r--firmware/export/imx233-codec.h3
2 files changed, 33 insertions, 5 deletions
diff --git a/firmware/drivers/audio/imx233-codec.c b/firmware/drivers/audio/imx233-codec.c
index f808a73..512bab6 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 a02ef22..2bd6cba 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_ */