summaryrefslogtreecommitdiff
authorshuai.li <shuai.li@amlogic.com>2013-01-21 08:05:37 (GMT)
committer shuai.li <shuai.li@amlogic.com>2013-01-21 08:08:21 (GMT)
commit4f0f9de9fa3de363eb25def424f2c24a422ce1fc (patch)
tree3a7532059b2be2c288fff89137f8114edae08ab9
parent099e88b011898b544d5b7123f82d37c5d61f94a8 (diff)
downloadaudio-4f0f9de9fa3de363eb25def424f2c24a422ce1fc.zip
audio-4f0f9de9fa3de363eb25def424f2c24a422ce1fc.tar.gz
audio-4f0f9de9fa3de363eb25def424f2c24a422ce1fc.tar.bz2
enable wm8960 codec
Diffstat
-rwxr-xr-x[-rw-r--r--]Android.mk3
-rwxr-xr-xaudio_hw.c4
-rwxr-xr-xwm8960_mixer_ctrl.h368
3 files changed, 374 insertions, 1 deletions
diff --git a/Android.mk b/Android.mk
index 50cd668..b0e90d4 100644..100755
--- a/Android.mk
+++ b/Android.mk
@@ -39,6 +39,9 @@ ifeq ($(strip $(BOARD_ALSA_AUDIO)),tiny)
LOCAL_CFLAGS += -DAML_AUDIO_RT5631
endif
+ ifeq ($(BOARD_AUDIO_CODEC),wm8960)
+ LOCAL_CFLAGS += -DAML_AUDIO_WM8960
+ endif
include $(BUILD_SHARED_LIBRARY)
# The stub audio policy HAL module that can be used as a skeleton for
diff --git a/audio_hw.c b/audio_hw.c
index d9b65bc..e47113d 100755
--- a/audio_hw.c
+++ b/audio_hw.c
@@ -47,7 +47,9 @@
#if defined(AML_AUDIO_RT5631)
#include "rt5631_mixer_ctrl.h"
#elif defined(AML_AUDIO_M3CODEC)
-#inclued "m3codec_mixer_ctl.h"
+#include "m3codec_mixer_ctl.h"
+#elif defined(AML_AUDIO_WM8960)
+#include "wm8960_mixer_ctrl.h"
#else
struct route_setting
{
diff --git a/wm8960_mixer_ctrl.h b/wm8960_mixer_ctrl.h
new file mode 100755
index 0000000..74efeaf
--- a/dev/null
+++ b/wm8960_mixer_ctrl.h
@@ -0,0 +1,368 @@
+/*
+ * wm8960_mixer_ctrl.h -- Wm8960 Mixer control for Android ICS
+ *
+ * Copyright 2012 Amlogic Corp.
+ *
+ */
+
+#ifndef _WM8960_MIXER_CTRL_H_
+#define _WM8960_MIXER_CTRL_H_
+
+struct route_setting
+{
+ char *ctl_name;
+ int intval;
+ char *strval;
+};
+
+
+
+#define MIXER_LEFT_BOOST_MIXER_LINPUT1_SWITCH "Left Boost Mixer LINPUT1 Switch"
+#define MIXER_LEFT_INPUT_MIXER_BOOST_SWITCH "Left Input Mixer Boost Switch"
+#define MIXER_LEFT_BOOST_MIXER_LINPUT3_SWITCH "Left Boost Mixer LINPUT3 Switch"
+#define MIXER_LEFT_BOOST_MIXER_LINPUT2_SWITCH "Left Boost Mixer LINPUT2 Switch"
+#define MIXER_CAPTURE_SWITCH "Capture Switch"
+#define MIXER_CAPTURE_VOLUME "Capture Volume"
+#define MIXER_ADC_HIGH_PASS_FILTER_SWITCH "ADC High Pass Filter Switch"
+#define MIXER_CAPTURE_VOLUME_ZC_SWITCH "Capture Volume ZC Switch"
+#define MIXER_ADC_OUTPUT_SELECT "ADC Output Select"
+#define MIXER_ADC_PCM_CAPTURE_VOLUME "ADC PCM Capture Volume"
+#define MIXER_LEFT_OUTPUT_MIXER_PCM_PLAYBACK_SWITCH "Left Output Mixer PCM Playback Switch"
+#define MIXER_RIGHT_OUTPUT_MIXER_PCM_PLAYBACK_SWITCH "Right Output Mixer PCM Playback Switch"
+#define MIXER_HEADPHONE_PLAYBACK_VOLUME "Headphone Playback Volume"
+#define MIXER_SPEAKER_PLAYBACK_VOLUME "Speaker Playback Volume"
+#define MIXER_SPEAK_DC_VOLUME "Speaker DC Volume"
+#define MIXER_SPEAKER_AC_VOLUME "Speaker AC Volume"
+#define MIXER_DAC_MONO_MIX "DAC Mono Mix"
+#define MIXER_MONO_OUTPUT_MIXER_LEFT_SWITCH "Mono Output Mixer Left Switch"
+#define MIXER_MONO_OUTPUT_MIXER_RIGHT_SWITCH "Mono Output Mixer Right Switch"
+
+
+struct route_setting mic_input[] = {
+ {
+ .ctl_name = MIXER_LEFT_BOOST_MIXER_LINPUT1_SWITCH,
+ .intval = 1,
+ },
+ {
+ .ctl_name = MIXER_LEFT_INPUT_MIXER_BOOST_SWITCH,
+ .intval = 1,
+ },
+ {
+ .ctl_name = MIXER_LEFT_BOOST_MIXER_LINPUT3_SWITCH,
+ .intval = 0,
+ },
+ {
+ .ctl_name = MIXER_LEFT_BOOST_MIXER_LINPUT2_SWITCH,
+ .intval = 1,
+ },
+ {
+ .ctl_name = MIXER_CAPTURE_SWITCH,
+ .intval = 0,
+ },
+ {
+ .ctl_name = MIXER_CAPTURE_VOLUME,
+ .intval = 40,
+ },
+ {
+ .ctl_name = MIXER_ADC_HIGH_PASS_FILTER_SWITCH,
+ .intval = 1,
+ },
+ {
+ .ctl_name = MIXER_CAPTURE_VOLUME_ZC_SWITCH,
+ .intval = 1,
+ },
+ {
+ .ctl_name = MIXER_ADC_OUTPUT_SELECT,
+ .intval = 1,
+ },
+ {
+ .ctl_name = MIXER_ADC_PCM_CAPTURE_VOLUME,
+ .intval = 2,
+ },
+ {
+ .ctl_name = MIXER_LEFT_OUTPUT_MIXER_PCM_PLAYBACK_SWITCH,
+ .intval = 1,
+ },
+ {
+ .ctl_name = MIXER_RIGHT_OUTPUT_MIXER_PCM_PLAYBACK_SWITCH,
+ .intval = 1,
+ },
+ {
+ .ctl_name = MIXER_HEADPHONE_PLAYBACK_VOLUME,
+ .intval = 0,
+ },
+ {
+ .ctl_name = MIXER_SPEAKER_PLAYBACK_VOLUME,
+ .intval = 125,
+ },
+ {
+ .ctl_name = MIXER_SPEAK_DC_VOLUME,
+ .intval = 3,
+ },
+ {
+ .ctl_name = MIXER_SPEAKER_AC_VOLUME,
+ .intval = 3,
+ },
+ {
+ .ctl_name = MIXER_DAC_MONO_MIX,
+ .intval = 1,
+ },
+ {
+ .ctl_name = MIXER_MONO_OUTPUT_MIXER_LEFT_SWITCH,
+ .intval = 1,
+ },
+ {
+ .ctl_name = MIXER_MONO_OUTPUT_MIXER_RIGHT_SWITCH,
+ .intval = 1,
+ },
+ {
+ .ctl_name = NULL,
+ },
+};
+
+struct route_setting line_input[] = {
+ {
+ .ctl_name = NULL,
+ },
+};
+
+struct route_setting output_speaker[] = {
+ /*
+ {
+ .ctl_name = MIXER_LEFT_BOOST_MIXER_LINPUT1_SWITCH,
+ .intval = 1,
+ },
+ {
+ .ctl_name = MIXER_LEFT_INPUT_MIXER_BOOST_SWITCH,
+ .intval = 1,
+ },
+ {
+ .ctl_name = MIXER_LEFT_BOOST_MIXER_LINPUT3_SWITCH,
+ .intval = 0,
+ },
+ {
+ .ctl_name = MIXER_LEFT_BOOST_MIXER_LINPUT2_SWITCH,
+ .intval = 1,
+ },
+ {
+ .ctl_name = MIXER_CAPTURE_SWITCH,
+ .intval = 0,
+ },
+ {
+ .ctl_name = MIXER_CAPTURE_VOLUME,
+ .intval = 40,
+ },
+ {
+ .ctl_name = MIXER_ADC_HIGH_PASS_FILTER_SWITCH,
+ .intval = 1,
+ },
+ {
+ .ctl_name = MIXER_CAPTURE_VOLUME_ZC_SWITCH,
+ .intval = 1,
+ },
+ {
+ .ctl_name = MIXER_ADC_OUTPUT_SELECT,
+ .intval = 1,
+ },
+ {
+ .ctl_name = MIXER_ADC_PCM_CAPTURE_VOLUME,
+ .intval = 2,
+ },
+ */
+ {
+ .ctl_name = MIXER_LEFT_OUTPUT_MIXER_PCM_PLAYBACK_SWITCH,
+ .intval = 1,
+ },
+ {
+ .ctl_name = MIXER_RIGHT_OUTPUT_MIXER_PCM_PLAYBACK_SWITCH,
+ .intval = 1,
+ },
+ {
+ .ctl_name = MIXER_HEADPHONE_PLAYBACK_VOLUME,
+ .intval = 0,
+ },
+ {
+ .ctl_name = MIXER_SPEAKER_PLAYBACK_VOLUME,
+ .intval = 125,
+ },
+ {
+ .ctl_name = MIXER_SPEAK_DC_VOLUME,
+ .intval = 3,
+ },
+ {
+ .ctl_name = MIXER_SPEAKER_AC_VOLUME,
+ .intval = 3,
+ },
+ {
+ .ctl_name = MIXER_DAC_MONO_MIX,
+ .intval = 1,
+ },
+ {
+ .ctl_name = MIXER_MONO_OUTPUT_MIXER_LEFT_SWITCH,
+ .intval = 1,
+ },
+ {
+ .ctl_name = MIXER_MONO_OUTPUT_MIXER_RIGHT_SWITCH,
+ .intval = 1,
+ },
+ {
+ .ctl_name = NULL,
+ },
+};
+
+struct route_setting output_headphone[] = {
+ /*
+ {
+ .ctl_name = MIXER_LEFT_BOOST_MIXER_LINPUT1_SWITCH,
+ .intval = 1,
+ },
+ {
+ .ctl_name = MIXER_LEFT_INPUT_MIXER_BOOST_SWITCH,
+ .intval = 0,
+ },
+ {
+ .ctl_name = MIXER_LEFT_BOOST_MIXER_LINPUT3_SWITCH,
+ .intval = 0,
+ },
+ {
+ .ctl_name = MIXER_LEFT_BOOST_MIXER_LINPUT2_SWITCH,
+ .intval = 1,
+ },
+ {
+ .ctl_name = MIXER_CAPTURE_SWITCH,
+ .intval = 0,
+ },
+ {
+ .ctl_name = MIXER_CAPTURE_VOLUME,
+ .intval = 40,
+ },
+ {
+ .ctl_name = MIXER_ADC_HIGH_PASS_FILTER_SWITCH,
+ .intval = 1,
+ },
+ {
+ .ctl_name = MIXER_CAPTURE_VOLUME_ZC_SWITCH,
+ .intval = 1,
+ },
+ {
+ .ctl_name = MIXER_ADC_OUTPUT_SELECT,
+ .intval = 1,
+ },
+ {
+ .ctl_name = MIXER_ADC_PCM_CAPTURE_VOLUME,
+ .intval = 2,
+ },
+ */
+ {
+ .ctl_name = MIXER_LEFT_OUTPUT_MIXER_PCM_PLAYBACK_SWITCH,
+ .intval = 1,
+ },
+ {
+ .ctl_name = MIXER_RIGHT_OUTPUT_MIXER_PCM_PLAYBACK_SWITCH,
+ .intval = 1,
+ },
+ {
+ .ctl_name = MIXER_SPEAKER_PLAYBACK_VOLUME,
+ .intval = 0,
+ },
+ {
+ .ctl_name = MIXER_DAC_MONO_MIX,
+ .intval = 0,
+ },
+ {
+ .ctl_name = MIXER_MONO_OUTPUT_MIXER_LEFT_SWITCH,
+ .intval = 0,
+ },
+ {
+ .ctl_name = MIXER_MONO_OUTPUT_MIXER_RIGHT_SWITCH,
+ .intval = 0,
+ },
+ {
+ .ctl_name = MIXER_HEADPHONE_PLAYBACK_VOLUME,
+ .intval = 112,
+ },
+ {
+ .ctl_name = NULL,
+ },
+};
+
+struct route_setting output_headset[] = {
+ /*
+ {
+ .ctl_name = MIXER_LEFT_BOOST_MIXER_LINPUT1_SWITCH,
+ .intval = 1,
+ },
+ {
+ .ctl_name = MIXER_LEFT_INPUT_MIXER_BOOST_SWITCH,
+ .intval = 0,
+ },
+ {
+ .ctl_name = MIXER_LEFT_BOOST_MIXER_LINPUT3_SWITCH,
+ .intval = 0,
+ },
+ {
+ .ctl_name = MIXER_LEFT_BOOST_MIXER_LINPUT2_SWITCH,
+ .intval = 1,
+ },
+ {
+ .ctl_name = MIXER_CAPTURE_SWITCH,
+ .intval = 0,
+ },
+ {
+ .ctl_name = MIXER_CAPTURE_VOLUME,
+ .intval = 40,
+ },
+ {
+ .ctl_name = MIXER_ADC_HIGH_PASS_FILTER_SWITCH,
+ .intval = 1,
+ },
+ {
+ .ctl_name = MIXER_CAPTURE_VOLUME_ZC_SWITCH,
+ .intval = 1,
+ },
+ {
+ .ctl_name = MIXER_ADC_OUTPUT_SELECT,
+ .intval = 1,
+ },
+ {
+ .ctl_name = MIXER_ADC_PCM_CAPTURE_VOLUME,
+ .intval = 2,
+ },
+ */
+ {
+ .ctl_name = MIXER_LEFT_OUTPUT_MIXER_PCM_PLAYBACK_SWITCH,
+ .intval = 1,
+ },
+ {
+ .ctl_name = MIXER_RIGHT_OUTPUT_MIXER_PCM_PLAYBACK_SWITCH,
+ .intval = 1,
+ },
+
+ {
+ .ctl_name = MIXER_SPEAKER_PLAYBACK_VOLUME,
+ .intval = 0,
+ },
+ {
+ .ctl_name = MIXER_DAC_MONO_MIX,
+ .intval = 0,
+ },
+ {
+ .ctl_name = MIXER_MONO_OUTPUT_MIXER_LEFT_SWITCH,
+ .intval = 0,
+ },
+ {
+ .ctl_name = MIXER_MONO_OUTPUT_MIXER_RIGHT_SWITCH,
+ .intval = 0,
+ },
+ {
+ .ctl_name = MIXER_HEADPHONE_PLAYBACK_VOLUME,
+ .intval = 112,
+ },
+ {
+ .ctl_name = NULL,
+ },
+};
+
+
+#endif //_WM8960_MIXER_CTRL_H_
+