[Bugfix][T106BUG-153] Solve the problem of no sound in the call codec

Only Configure:No
Affected branch:master
Affected module:Codec
Is it affected on both ZXIC and MTK: only ZXIC
Self-test: Yes
Doc Update:No

Change-Id: I465419323674bb2959c26a96b58ad554c0d95d18
diff --git a/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/sound/soc/codecs/es8311.c b/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/sound/soc/codecs/es8311.c
index e5e7d25..6f5eecc 100755
--- a/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/sound/soc/codecs/es8311.c
+++ b/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/sound/soc/codecs/es8311.c
@@ -440,7 +440,8 @@
 	struct snd_soc_component *component = dai->component;

 	struct es8311_private *es8311 = snd_soc_component_get_drvdata(component);

 

-	pr_info("Enter into %s()\n", __func__);

+	//fix T106BUG-153

+	printk("Enter into %s(),freq:%d\n", __func__,freq);

 	switch (freq) {

 	case 11289600:

 	case 22579200:

@@ -459,6 +460,8 @@
 	case 1536000:

 	case 1024000:

 	case 12000000:

+	//fix T106BUG-153

+	case 26000000:

 		es8311->mclk_rate = freq;

 		return 0;

 	}

@@ -496,7 +499,7 @@
 		return -EINVAL;

 	}

 	snd_soc_component_write(component, ES8311_RESET_REG00, iface);

-

+    

 

 	/* interface format */

 	switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {

@@ -584,7 +587,9 @@
 	int coeff;

 	u8 regv, datmp;

 

-	pr_info("Enter into %s()\n", __func__);

+	//fix T106BUG-153

+	int rate;

+	printk("Enter into %s()\n", __func__);

 	/* we need mclk rate to configure registers. Set MCLK here if failed

 	 * to get mclk from set_sysclk.

 	 *

@@ -603,6 +608,8 @@
 		es8311->mclk_rate = 64 * params_rate(params);

 	}

 

+	//fix T106BUG-153

+	rate = params_rate(params);

 	pr_info("%s, mclk = %d, lrck = %d\n", __func__,

 			es8311->mclk_rate, params_rate(params));

 

@@ -610,7 +617,8 @@
 	if (coeff < 0) {

 		pr_info("Unable to configure sample rate %dHz with %dHz MCLK\n",

 			params_rate(params), es8311->mclk_rate);

-		return -EINVAL;

+		//fix T106BUG-153

+		//return -EINVAL;

 	}

 	/*

 	 * set clock parammeters

@@ -720,6 +728,27 @@
 		/* set iface */

 		snd_soc_component_write(component, ES8311_SDPOUT_REG0A, iface);

 	}

+

+	//fix T106BUG-153

+	snd_soc_component_write(component, ES8311_CLK_MANAGER_REG02, 0x98);

+

+	snd_soc_component_write(component, ES8311_CLK_MANAGER_REG03, 0x1b);

+

+	snd_soc_component_write(component, ES8311_CLK_MANAGER_REG04, 0x1b);

+

+	if(rate == 3000)

+	snd_soc_component_write(component, ES8311_CLK_MANAGER_REG05, 0xbb);

+	if(rate == 16000)

+	snd_soc_component_write(component, ES8311_CLK_MANAGER_REG05, 0x55);

+

+	snd_soc_component_write(component, ES8311_CLK_MANAGER_REG06, 0x18);

+

+	snd_soc_component_write(component, ES8311_CLK_MANAGER_REG07, 0x06);

+

+

+	snd_soc_component_write(component, ES8311_CLK_MANAGER_REG08, 0x58);

+	//fix T106BUG-153

+

 	return 0;

 }

 

@@ -1071,7 +1100,10 @@
 	snd_soc_component_write(component, ES8311_CLK_MANAGER_REG01, 0x30);

 	snd_soc_component_write(component, ES8311_CLK_MANAGER_REG02, 0x00);

 	snd_soc_component_write(component, ES8311_CLK_MANAGER_REG03, 0x10);

-	snd_soc_component_write(component, ES8311_ADC_REG16, 0x24);

+

+	//fix T106BUG-153

+	//snd_soc_component_write(component, ES8311_ADC_REG16, 0x24);

+	snd_soc_component_write(component, ES8311_ADC_REG16, 0x21);

 	snd_soc_component_write(component, ES8311_CLK_MANAGER_REG04, 0x10);

 	snd_soc_component_write(component, ES8311_CLK_MANAGER_REG05, 0x00);

 	snd_soc_component_write(component, ES8311_SDPIN_REG09, 0x00);

diff --git a/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/platform/libtinyalsa/audio_mixer_ctrl.c b/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/platform/libtinyalsa/audio_mixer_ctrl.c
index fb429c0..7c3e1d6 100755
--- a/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/platform/libtinyalsa/audio_mixer_ctrl.c
+++ b/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/platform/libtinyalsa/audio_mixer_ctrl.c
@@ -1,1841 +1,4027 @@
 #include <stdio.h>
+
 #include <unistd.h>
+
 #include <string.h>
+
 #include <fcntl.h>
+
 #include <stdint.h>
+
 #include <stdbool.h>
+
 #include <errno.h>
+
 #include <stdlib.h>
+
 #include <ctype.h>
+
 #include <tinyalsa/asoundlib.h>
+
 #include <sound/asound.h>
+
 #include <tinyalsa/audio_mixer_ctrl.h>
 
+
+
 #define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0]))
 
+
+
 struct audio_para_conf {
+
 	const char *control;
+
 	char *values[2];
+
 };
 
 
+
+
+
 #if defined _USE_CODEC_TI3100
 
 
+
+
+
 enum t_output_vol {
+
     T_OUTPUT_VOL_MINUS_63_5DB = 0,
+
     T_OUTPUT_VOL_MINUS_63DB = 1,
+
     T_OUTPUT_VOL_MINUS_27DB = 73,
+
     T_OUTPUT_VOL_MINUS_24DB = 79,
+
     T_OUTPUT_VOL_MINUS_21DB = 85,
+
     T_OUTPUT_VOL_MINUS_18DB = 91,
+
     T_OUTPUT_VOL_MINUS_15DB = 97,
+
     T_OUTPUT_VOL_MINUS_12DB = 103,
+
     T_OUTPUT_VOL_MINUS_9DB = 109,
+
     T_OUTPUT_VOL_MINUS_6DB = 115,
+
     T_OUTPUT_VOL_MINUS_3DB = 121,
+
     T_OUTPUT_VOL_MINUS_2DB = 123,
+
     T_OUTPUT_VOL_MINUS_1DB = 125,
+
     T_OUTPUT_VOL_0DB = 127,
+
     T_OUTPUT_VOL_1DB = 129,
+
     T_OUTPUT_VOL_2DB = 131,
+
     T_OUTPUT_VOL_3DB = 133,
+
     T_OUTPUT_VOL_6DB = 139,
+
     T_OUTPUT_VOL_9DB = 145,
+
     T_OUTPUT_VOL_12DB = 151,
+
     T_OUTPUT_VOL_24DB = 175,
+
 };
 
+
+
 enum t_input_vol {
+
     T_INPUT_VOL_MINUS_12DB = 0,
+
 	T_INPUT_VOL_MINUS_7DB = 10,
+
     T_INPUT_VOL_MINUS_6DB = 12,
+
     T_INPUT_VOL_MINUS_5DB = 14,
+
     T_INPUT_VOL_MINUS_4DB = 16,
+
     T_INPUT_VOL_MINUS_3DB = 18,
+
     T_INPUT_VOL_MINUS_2DB = 20,
+
     T_INPUT_VOL_MINUS_1DB = 22,
+
     T_INPUT_VOL_0DB = 24,
+
     T_INPUT_VOL_1DB = 26,
+
     T_INPUT_VOL_2DB = 28,
+
     T_INPUT_VOL_3DB = 30,
+
     T_INPUT_VOL_20DB = 64,
+
 };
 
-static struct audio_para_conf init_default_para[] = {  //¿ª»ú³õʼ»¯µ÷ÓÃ
+
+
+static struct audio_para_conf init_default_para[] = {  //开机初始化调用
+
 	{"Mic PGA Capture Volume", {"40"}},
+
 	{"ADC Mute", {"0"}},
+
 	{"ADC Fine Capture Volume", {"0"}},
+
 	{"Speaker Analog Playback Volume", {"127"}},
+
 	{"Speaker Driver Playback Switch", {"1"}},
+
 	{"DAC Left Input", {"Mono"}},
+
 	{"DAC Right Input", {"Mono"}},
+
 	{"Output Right From Right DAC", {"1"}},
+
 	{"Output Left From Left DAC", {"1"}},
+
 	{"HP Analog Playback Volume", {"127", "127"}},
+
 	{"HP Driver Playback Switch", {"1", "1"}}, //7dB
+
 };
 
+
+
 #ifdef _USE_7520V3_PHONE_TYPE_FWP
-static struct audio_para_conf  common_out_para_audio[] = {  //¶ÔÓ¦¹«¹²²¿·Ö
+
+static struct audio_para_conf  common_out_para_audio[] = {  //对应公共部分
+
 	{"Speaker Analog Playback Volume", {"127"}},
+
 	{"Speaker Driver Playback Switch", {"1"}},
+
 	{"DAC Left Input", {"Mono"}},
+
 	{"DAC Right Input", {"Mono"}},
+
 	{"Output Right From Right DAC", {"1"}},
+
 	{"Output Left From Left DAC", {"1"}},
+
 	{"HP Analog Playback Volume", {"127", "127"}},
+
 	{"HP Driver Playback Switch", {"1", "1"}}, //7dB
+
 };
 
-static struct audio_para_conf  common_in_para_audio[] = {  //¶ÔÓ¦¹«¹²²¿·Ö
+
+
+static struct audio_para_conf  common_in_para_audio[] = {  //对应公共部分
+
 	{"Mic PGA Capture Volume", {"12"}},
+
 	{"ADC Mute", {"0"}},
+
 	{"ADC Fine Capture Volume", {"0"}},
 
+
+
 };
 
-static struct audio_para_conf  hp_outpath_para_audio[] = {  //¶ÔÓ¦ÓÚHpÊä³öͨµÀ
+
+
+static struct audio_para_conf  hp_outpath_para_audio[] = {  //对应于Hp输出通道
+
 	{"Speaker Switch", {"0"}},
+
 	{"HP Left Switch", {"1"}},
+
 	{"HP Right Switch", {"1"}},
+
 	{"HP Driver Playback Volume", {"0", "0"}},
+
 };
 
-static struct audio_para_conf  spk_outpath_para_audio[] = { //¶ÔÓ¦ÓÚSpkÊä³öͨµÀ
+
+
+static struct audio_para_conf  spk_outpath_para_audio[] = { //对应于Spk输出通道
+
 	{"Speaker Switch", {"1"}},
+
 	{"Speaker Driver Playback Volume", {"2"}}, //18dB
+
 	{"HP Left Switch", {"0"}},
+
 	{"HP Right Switch", {"0"}},
+
 };
 
-static  struct  audio_para_conf  main_mic_inpath_para_audio[] = { //¶ÔÓ¦ÓÚMic1lp_Mic1lmÊäÈëͨµÀ
+
+
+static  struct  audio_para_conf  main_mic_inpath_para_audio[] = { //对应于Mic1lp_Mic1lm输入通道
+
 	{"MIC1LM P-Terminal", {"Off"}},
+
 	{"MIC1RP P-Terminal", {"Off"}},
+
 	{"MIC1LP P-Terminal", {"FFR 10 Ohm"}},
+
 	{"MIC1LM M-Terminal", {"FFR 10 Ohm"}},
 
+
+
 };
 
-static  struct  audio_para_conf  aux_mic_inpath_para_audio[] = {//¶ÔÓ¦ÓÚMic1rpÊäÈëͨµÀ
+
+
+static  struct  audio_para_conf  aux_mic_inpath_para_audio[] = {//对应于Mic1rp输入通道
+
 	{"MIC1LM P-Terminal", {"Off"}},
+
 	{"MIC1RP P-Terminal", {"FFR 10 Ohm"}},
+
 	{"MIC1LP P-Terminal", {"Off"}},
+
 	{"MIC1LM M-Terminal", {"Off"}},
+
 };
 
-static struct audio_para_conf  handset_inoutpath_para_voice[] = {  //¶ÔÓ¦ÓÚHpÊä³öͨµÀMic1lp_Mic1lmÊäÈëͨµÀ
+
+
+static struct audio_para_conf  handset_inoutpath_para_voice[] = {  //对应于Hp输出通道Mic1lp_Mic1lm输入通道
+
 	{"Mic PGA Capture Volume", {"12"}},
+
 	//{"ADC Mute", {"0"}},
+
 	//{"ADC Fine Capture Volume", {"0"}},
+
 	{"DAC Left Input", {"Mono"}},
+
 	{"DAC Right Input", {"Mono"}},
+
 	{"Output Right From Right DAC", {"1"}},
+
 	{"Output Left From Left DAC", {"1"}},
+
 	{"HP Analog Playback Volume", {"127", "127"}},
+
 	{"HP Driver Playback Switch", {"1", "1"}}, //7dB	
+
 	{"Speaker Switch", {"0"}},
+
 	{"DAC Playback Volume", {"129", "129"}},
+
 	{"HP Left Switch", {"1"}},
+
 	{"HP Right Switch", {"1"}},
+
 	{"HP Driver Playback Volume", {"5", "5"}},
+
 	{"MIC1LM P-Terminal", {"Off"}},
+
 	{"MIC1RP P-Terminal", {"Off"}},
+
 	{"MIC1LP P-Terminal", {"FFR 10 Ohm"}},
+
 	{"MIC1LM M-Terminal", {"FFR 10 Ohm"}},
+
 	{"ADC Capture Volume", {"24"}},
+
 #ifndef USE_CAP_SUPPORT     
+
         
+
 	{"voice processing path select", {"handset"}},  // handset speak headset bluetooth
+
 #endif	
+
 };
 
-static struct audio_para_conf  headset_inoutpath_para_voice[] = {  //¶ÔÓ¦ÓÚHpÊä³öͨµÀ Mic1rpÊäÈëͨµÀ
+
+
+static struct audio_para_conf  headset_inoutpath_para_voice[] = {  //对应于Hp输出通道 Mic1rp输入通道
+
 	{"Mic PGA Capture Volume", {"40"}},
+
 	//{"ADC Mute", {"0"}},
+
 	//{"ADC Fine Capture Volume", {"0"}},
+
 	{"DAC Left Input", {"Mono"}},
+
 	{"DAC Right Input", {"Mono"}},
+
 	{"Output Right From Right DAC", {"1"}},
+
 	{"Output Left From Left DAC", {"1"}},
+
 	{"HP Analog Playback Volume", {"127", "127"}},
+
 	{"HP Driver Playback Switch", {"1", "1"}}, //7dB	
+
 	{"Speaker Switch", {"0"}},
+
 	{"DAC Playback Volume ", {"129", "129"}},
+
 	{"HP Left Switch", {"1"}},
+
 	{"HP Right Switch", {"1"}},
+
 	{"HP Driver Playback Switch", {"7", "7"}}, //7dB
+
 	{"MIC1LM P-Terminal", {"Off"}},
+
 	{"MIC1RP P-Terminal", {"FFR 10 Ohm"}},
+
 	{"MIC1LP P-Terminal", {"Off"}},
+
 	{"MIC1LM M-Terminal", {"Off"}},
+
 	{"ADC Capture Volume", {"24"}},
+
 #ifndef USE_CAP_SUPPORT     
+
 	{"voice processing select", {"headset"}}, // handset speak headset bluetooth
+
 #endif	
+
 };
 
-static struct audio_para_conf  spk_inoutpath_para_voice[] = { //¶ÔÓ¦ÓÚSpkÊä³öͨµÀMic1lp_Mic1lmÊäÈëͨµÀ
+
+
+static struct audio_para_conf  spk_inoutpath_para_voice[] = { //对应于Spk输出通道Mic1lp_Mic1lm输入通道
+
 	{"Mic PGA Capture Volume", {"12"}},
+
 	//{"ADC Mute", {"0"}},
+
 	//{"ADC Fine Capture Volume", {"0"}},
+
 	{"Speaker Analog Playback Volume", {"127"}},
+
 	{"Speaker Driver Playback Switch", {"1"}},
+
 	{"DAC Left Input", {"Mono"}},
+
 	{"DAC Right Input", {"Mono"}},
+
 	{"Output Right From Right DAC", {"1"}},
+
 	{"Output Left From Left DAC", {"1"}},
+
 	{"DAC Playback Volume", {"124", "124"}}, //-1.5dB
+
 	{"Speaker Switch", {"1"}},
+
 	{"Speaker Driver Playback Volume", {"0"}}, //18dB
+
 	{"HP Left Switch", {"0"}},
+
 	{"HP Right Switch", {"0"}},
+
 	{"MIC1LM P-Terminal", {"Off"}},
+
 	{"MIC1RP P-Terminal", {"Off"}},
+
 	{"MIC1LP P-Terminal", {"FFR 10 Ohm"}},
+
 	{"MIC1LM M-Terminal", {"FFR 10 Ohm"}},
+
 	{"ADC Capture Volume", {"24"}},
+
 #ifndef USE_CAP_SUPPORT     
 
+
+
 	{"voice processing path select", {"speak"}}, // handset speak headset bluetooth
+
 #endif	
+
 };
 
+
+
 #else 
-static struct audio_para_conf  common_out_para_audio[] = {  //¶ÔÓ¦¹«¹²²¿·Ö
+
+static struct audio_para_conf  common_out_para_audio[] = {  //对应公共部分
+
 	{"Speaker Analog Playback Volume", {"127"}},
+
 	{"Speaker Driver Playback Switch", {"1"}},
+
 	{"DAC Left Input", {"Mono"}},
+
 	{"DAC Right Input", {"Mono"}},
+
 	{"Output Right From Right DAC", {"1"}},
+
 	{"Output Left From Left DAC", {"1"}},
+
 	{"HP Analog Playback Volume", {"127", "127"}},
+
 	{"HP Driver Playback Switch", {"1", "1"}}, //7dB
+
 };
 
-static struct audio_para_conf  common_in_para_audio[] = {  //¶ÔÓ¦¹«¹²²¿·Ö
+
+
+static struct audio_para_conf  common_in_para_audio[] = {  //对应公共部分
+
 	{"Mic PGA Capture Volume", {"40"}},
+
 	{"ADC Mute", {"0"}},
+
 	{"ADC Fine Capture Volume", {"0"}},
 
+
+
 };
 
-static struct audio_para_conf  hp_outpath_para_audio[] = {  //¶ÔÓ¦ÓÚHpÊä³öͨµÀ
+
+
+static struct audio_para_conf  hp_outpath_para_audio[] = {  //对应于Hp输出通道
+
 	{"Speaker Switch", {"0"}},
+
 	{"HP Left Switch", {"1"}},
+
 	{"HP Right Switch", {"1"}},
+
 	{"HP Driver Playback Volume", {"0", "0"}},
+
 };
 
-static struct audio_para_conf  spk_outpath_para_audio[] = { //¶ÔÓ¦ÓÚSpkÊä³öͨµÀ
+
+
+static struct audio_para_conf  spk_outpath_para_audio[] = { //对应于Spk输出通道
+
 	{"Speaker Switch", {"1"}},
+
 	{"Speaker Driver Playback Volume", {"2"}}, //18dB
+
 	{"HP Left Switch", {"0"}},
+
 	{"HP Right Switch", {"0"}},
+
 };
 
-static  struct  audio_para_conf  main_mic_inpath_para_audio[] = { //¶ÔÓ¦ÓÚMic1lp_Mic1lmÊäÈëͨµÀ
+
+
+static  struct  audio_para_conf  main_mic_inpath_para_audio[] = { //对应于Mic1lp_Mic1lm输入通道
+
 	{"MIC1LM P-Terminal", {"Off"}},
+
 	{"MIC1RP P-Terminal", {"Off"}},
+
 	{"MIC1LP P-Terminal", {"FFR 10 Ohm"}},
+
 	{"MIC1LM M-Terminal", {"FFR 10 Ohm"}},
 
+
+
 };
 
-static  struct  audio_para_conf  aux_mic_inpath_para_audio[] = {//¶ÔÓ¦ÓÚMic1rpÊäÈëͨµÀ
+
+
+static  struct  audio_para_conf  aux_mic_inpath_para_audio[] = {//对应于Mic1rp输入通道
+
 	{"MIC1LM P-Terminal", {"Off"}},
+
 	{"MIC1RP P-Terminal", {"FFR 10 Ohm"}},
+
 	{"MIC1LP P-Terminal", {"Off"}},
+
 	{"MIC1LM M-Terminal", {"Off"}},
+
 };
 
-static struct audio_para_conf  handset_inoutpath_para_voice[] = {  //¶ÔÓ¦ÓÚHpÊä³öͨµÀMic1lp_Mic1lmÊäÈëͨµÀ
-	{"Mic PGA Capture Volume", {"40"}},//analog gain control from 0 dB to 59.5 dB in steps of 0.5 dB
-	{"ADC Mute", {"0"}},//ADC muting
-	{"DAC Mute", {"0","0"}},//DAC muting and setting up a master gain control to control both channels occurs
-	//{"ADC Fine Capture Volume", {"0"}},
-	{"DAC Left Input", {"Mono"}},
-	{"DAC Right Input", {"Mono"}},
-	{"Output Right From Right DAC", {"1"}},
-	{"Output Left From Left DAC", {"1"}},//"1" means DAC_L is firstly routed to the left-channel mixer amplifier, then routed HPL driver
-	{"HP Analog Playback Volume", {"114", "114"}},//Analog Volume Control for Headphone and Speaker Outputs(D0~D6)
-	{"HP Driver Playback Switch", {"1", "1"}}, // HPL/HPR driver is not muted
-	{"Speaker Switch", {"0"}},//Analog Volume Control for Speaker Outputs(D7)
-	{"DAC Playback Volume", {"135", "135"}},//DAC volume: -127 to 48??//0627Ô½´óÔöÒæÔ½´ó
-	{"HP Left Switch", {"1"}},//Analog Volume Control for Headphone Outputs(D7)
-	{"HP Right Switch", {"1"}},
-	{"HP Driver Playback Volume", {"9", "9"}},//HPL/HPR driver is 9dB(0~9)
-	{"MIC1LM P-Terminal", {"Off"}},
-	{"MIC1RP P-Terminal", {"Off"}},
-	{"MIC1LP P-Terminal", {"FFR 10 Ohm"}},
-	{"MIC1LM M-Terminal", {"FFR 10 Ohm"}},
-	{"ADC Capture Volume", {"24"}},
-#ifndef USE_CAP_SUPPORT
-	{"voice processing path select", {"handset"}},  // handset speak headset bluetooth
-#endif	
-};
 
-static struct audio_para_conf  headset_inoutpath_para_voice[] = {  //¶ÔÓ¦ÓÚHpÊä³öͨµÀ Mic1rpÊäÈëͨµÀ
+
+static struct audio_para_conf  handset_inoutpath_para_voice[] = {  //对应于Hp输出通道Mic1lp_Mic1lm输入通道
+
 	{"Mic PGA Capture Volume", {"40"}},
+
 	{"ADC Mute", {"0"}},
+
 	{"DAC Mute", {"0","0"}},	
+
 	//{"ADC Fine Capture Volume", {"0"}},
+
 	{"DAC Left Input", {"Mono"}},
+
 	{"DAC Right Input", {"Mono"}},
+
 	{"Output Right From Right DAC", {"1"}},
+
 	{"Output Left From Left DAC", {"1"}},
+
 	{"HP Analog Playback Volume", {"127", "127"}},
+
 	{"HP Driver Playback Switch", {"1", "1"}}, //7dB	
+
 	{"Speaker Switch", {"0"}},
-	{"DAC Playback Volume ", {"129", "129"}},
+
+	{"DAC Playback Volume", {"129", "129"}},
+
 	{"HP Left Switch", {"1"}},
+
 	{"HP Right Switch", {"1"}},
-	{"HP Driver Playback Switch", {"7", "7"}}, //7dB
+
+	{"HP Driver Playback Volume", {"7", "7"}},
+
 	{"MIC1LM P-Terminal", {"Off"}},
-	{"MIC1RP P-Terminal", {"FFR 10 Ohm"}},
-	{"MIC1LP P-Terminal", {"Off"}},
-	{"MIC1LM M-Terminal", {"Off"}},
+
+	{"MIC1RP P-Terminal", {"Off"}},
+
+	{"MIC1LP P-Terminal", {"FFR 10 Ohm"}},
+
+	{"MIC1LM M-Terminal", {"FFR 10 Ohm"}},
+
 	{"ADC Capture Volume", {"24"}},
-#ifndef USE_CAP_SUPPORT     
-	{"voice processing select", {"headset"}}, // handset speak headset bluetooth
+
+#ifndef USE_CAP_SUPPORT
+
+	{"voice processing path select", {"handset"}},  // handset speak headset bluetooth
+
 #endif	
+
 };
 
-static struct audio_para_conf  spk_inoutpath_para_voice[] = { //¶ÔÓ¦ÓÚSpkÊä³öͨµÀMic1lp_Mic1lmÊäÈëͨµÀ
-	{"Mic PGA Capture Volume", {"20"}},
+
+
+static struct audio_para_conf  headset_inoutpath_para_voice[] = {  //对应于Hp输出通道 Mic1rp输入通道
+
+	{"Mic PGA Capture Volume", {"40"}},
+
 	{"ADC Mute", {"0"}},
-	{"DAC Mute", {"0","0"}},
+
+	{"DAC Mute", {"0","0"}},	
+
 	//{"ADC Fine Capture Volume", {"0"}},
-	{"Speaker Analog Playback Volume", {"116"}},
-	{"Speaker Driver Playback Switch", {"1"}},
+
 	{"DAC Left Input", {"Mono"}},
+
 	{"DAC Right Input", {"Mono"}},
+
 	{"Output Right From Right DAC", {"1"}},
+
 	{"Output Left From Left DAC", {"1"}},
-	{"DAC Playback Volume", {"130", "130"}}, //
-	{"Speaker Switch", {"1"}},
-	{"Speaker Driver Playback Volume", {"1"}}, //12dB //0~3 is 6dB~24dB(6-dB Steps)
-	{"HP Left Switch", {"0"}},
-	{"HP Right Switch", {"0"}},
+
+	{"HP Analog Playback Volume", {"127", "127"}},
+
+	{"HP Driver Playback Switch", {"1", "1"}}, //7dB	
+
+	{"Speaker Switch", {"0"}},
+
+	{"DAC Playback Volume ", {"129", "129"}},
+
+	{"HP Left Switch", {"1"}},
+
+	{"HP Right Switch", {"1"}},
+
+	{"HP Driver Playback Switch", {"7", "7"}}, //7dB
+
 	{"MIC1LM P-Terminal", {"Off"}},
-	{"MIC1RP P-Terminal", {"Off"}},
-	{"MIC1LP P-Terminal", {"FFR 10 Ohm"}},
-	{"MIC1LM M-Terminal", {"FFR 10 Ohm"}},
+
+	{"MIC1RP P-Terminal", {"FFR 10 Ohm"}},
+
+	{"MIC1LP P-Terminal", {"Off"}},
+
+	{"MIC1LM M-Terminal", {"Off"}},
+
 	{"ADC Capture Volume", {"24"}},
+
 #ifndef USE_CAP_SUPPORT     
-        
-	{"voice processing path select", {"speak"}}, // handset speak headset bluetooth
+
+	{"voice processing select", {"headset"}}, // handset speak headset bluetooth
+
 #endif	
+
 };
 
+
+
+static struct audio_para_conf  spk_inoutpath_para_voice[] = { //对应于Spk输出通道Mic1lp_Mic1lm输入通道
+
+	{"Mic PGA Capture Volume", {"20"}},
+
+	{"ADC Mute", {"0"}},
+
+	{"DAC Mute", {"0","0"}},
+
+	//{"ADC Fine Capture Volume", {"0"}},
+
+	{"Speaker Analog Playback Volume", {"127"}},
+
+	{"Speaker Driver Playback Switch", {"1"}},
+
+	{"DAC Left Input", {"Mono"}},
+
+	{"DAC Right Input", {"Mono"}},
+
+	{"Output Right From Right DAC", {"1"}},
+
+	{"Output Left From Left DAC", {"1"}},
+
+	{"DAC Playback Volume", {"124", "124"}}, //-1.5dB
+
+	{"Speaker Switch", {"1"}},
+
+	{"Speaker Driver Playback Volume", {"2"}}, //18dB
+
+	{"HP Left Switch", {"0"}},
+
+	{"HP Right Switch", {"0"}},
+
+	{"MIC1LM P-Terminal", {"Off"}},
+
+	{"MIC1RP P-Terminal", {"Off"}},
+
+	{"MIC1LP P-Terminal", {"FFR 10 Ohm"}},
+
+	{"MIC1LM M-Terminal", {"FFR 10 Ohm"}},
+
+	{"ADC Capture Volume", {"24"}},
+
+#ifndef USE_CAP_SUPPORT     
+
+        
+
+	{"voice processing path select", {"speak"}}, // handset speak headset bluetooth
+
+#endif	
+
+};
+
+
+
 #endif
+
 static struct audio_para_conf output_dac_vol = 	{"DAC Playback Volume", {"129","129"}};
 
+
+
 static struct audio_para_conf input_adc_vol = {"ADC Capture Volume", {"24"}};
 
+
+
 static struct audio_para_conf dac_mute = {"DAC Mute", {"1", "1"}};
+
 static struct audio_para_conf adc_mute = {"ADC Mute", {"1"}};
 
+
+
 static struct audio_para_conf spk_path_onoff[] = {
+
 	{"Speaker Switch", {"0"}},
+
 };
+
 static struct audio_para_conf rcv_path_onoff[] = {
+
 	{"HP Left Switch", {"0"}},
+
 	{"HP Right Switch", {"0"}},
+
 };
+
 static struct audio_para_conf earp_path_onoff[] = {
+
 	{"HP Left Switch", {"0"}},
+
 	{"HP Right Switch", {"0"}},
+
 };
+
 static int output_vol_conversion(int vol)
+
 {
+
 	switch(vol){
+
 	case T_AUDIO_OUTPUT_VOL_LEVEL_0:
+
 		return T_OUTPUT_VOL_MINUS_63_5DB;
+
 	case T_AUDIO_OUTPUT_VOL_LEVEL_1:
+
 		return T_OUTPUT_VOL_MINUS_27DB;
+
 	case T_AUDIO_OUTPUT_VOL_LEVEL_2:
+
 		return T_OUTPUT_VOL_MINUS_24DB;
+
 	case T_AUDIO_OUTPUT_VOL_LEVEL_3:
+
 		return T_OUTPUT_VOL_MINUS_21DB;
+
 	case T_AUDIO_OUTPUT_VOL_LEVEL_4:
+
 		return T_OUTPUT_VOL_MINUS_18DB;
+
 	case T_AUDIO_OUTPUT_VOL_LEVEL_5:
+
 		return T_OUTPUT_VOL_MINUS_15DB;
+
 	case T_AUDIO_OUTPUT_VOL_LEVEL_6:
+
 		return T_OUTPUT_VOL_MINUS_12DB;
+
 	case T_AUDIO_OUTPUT_VOL_LEVEL_7:
+
 		return T_OUTPUT_VOL_MINUS_9DB;
+
 	case T_AUDIO_OUTPUT_VOL_LEVEL_8:
+
 		return T_OUTPUT_VOL_MINUS_6DB;
+
 	case T_AUDIO_OUTPUT_VOL_LEVEL_9:
+
 		return T_OUTPUT_VOL_MINUS_3DB;
+
 	case T_AUDIO_OUTPUT_VOL_LEVEL_10:
+
 		return T_OUTPUT_VOL_0DB;
+
 	case T_AUDIO_OUTPUT_VOL_LEVEL_11:
+
 		return T_OUTPUT_VOL_3DB;
+
 	default:
+
 		return T_OUTPUT_VOL_0DB;
+
 	}
+
 }
 
+
+
 static int input_vol_conversion(int vol)
+
 {
+
 	switch(vol) {
+
 	case T_AUDIO_INPUT_VOL_LEVEL_0:
+
 		return T_INPUT_VOL_MINUS_12DB;
+
 	case T_AUDIO_INPUT_VOL_LEVEL_1:
+
 		return T_INPUT_VOL_MINUS_7DB;
+
 	case T_AUDIO_INPUT_VOL_LEVEL_2:
+
 		return T_INPUT_VOL_MINUS_6DB;
+
 	case T_AUDIO_INPUT_VOL_LEVEL_3:
+
 		return T_INPUT_VOL_MINUS_5DB;
+
 	case T_AUDIO_INPUT_VOL_LEVEL_4:
+
 		return T_INPUT_VOL_MINUS_4DB;
+
 	case T_AUDIO_INPUT_VOL_LEVEL_5:
+
 		return T_INPUT_VOL_MINUS_3DB;
+
 	case T_AUDIO_INPUT_VOL_LEVEL_6:
+
 		return T_INPUT_VOL_MINUS_2DB;
+
 	case T_AUDIO_INPUT_VOL_LEVEL_7:
+
 		return T_INPUT_VOL_MINUS_1DB;
+
 	case T_AUDIO_INPUT_VOL_LEVEL_8:
+
 		return T_INPUT_VOL_0DB;
+
 	case T_AUDIO_INPUT_VOL_LEVEL_9:
+
 		return T_INPUT_VOL_1DB;
+
 	case T_AUDIO_INPUT_VOL_LEVEL_10:
+
 		return T_INPUT_VOL_2DB;
+
 	case T_AUDIO_INPUT_VOL_LEVEL_11:
+
 		return T_INPUT_VOL_3DB;
+
 	default:
+
 		return T_INPUT_VOL_0DB;
+
 	}
+
 }
 
- 
-#elif defined _USE_CODEC_ES8374
+#elif defined _USE_CODEC_ES8311
+
+static struct audio_para_conf init_default_para[] = {  //开机初始化调用
 
 
-enum t_output_vol {
-    T_OUTPUT_VOL_MINUS_96DB = 0,
-	T_OUTPUT_VOL_MINUS_95DB = 2,
-	T_OUTPUT_VOL_MINUS_90DB = 12,
-	T_OUTPUT_VOL_MINUS_85DB = 22,
-    T_OUTPUT_VOL_MINUS_80DB = 32,
-    T_OUTPUT_VOL_MINUS_75DB = 42,
-    T_OUTPUT_VOL_MINUS_70DB = 52,
-    T_OUTPUT_VOL_MINUS_65DB = 62,
-    T_OUTPUT_VOL_MINUS_60DB = 72,
-    T_OUTPUT_VOL_MINUS_55DB = 82,
-    T_OUTPUT_VOL_MINUS_50DB = 92,
-    T_OUTPUT_VOL_MINUS_45DB = 102,
-    T_OUTPUT_VOL_MINUS_40DB = 112,
-    T_OUTPUT_VOL_MINUS_35DB = 122,
-    T_OUTPUT_VOL_MINUS_30DB = 132,
-    T_OUTPUT_VOL_MINUS_25DB = 142,
-    T_OUTPUT_VOL_MINUS_20DB = 152,
-    T_OUTPUT_VOL_MINUS_15DB = 162,
-    T_OUTPUT_VOL_MINUS_10DB = 172,
-    T_OUTPUT_VOL_MINUS_7DB  = 178,
-    T_OUTPUT_VOL_MINUS_6DB  = 180,
-    T_OUTPUT_VOL_MINUS_5DB  = 182,
-    T_OUTPUT_VOL_MINUS_4DB  = 184,
-    T_OUTPUT_VOL_MINUS_3DB  = 186,
-    T_OUTPUT_VOL_MINUS_2DB  = 188,
-    T_OUTPUT_VOL_MINUS_1DB  = 190,
-    T_OUTPUT_VOL_0DB        = 192
-};
 
-enum t_input_vol {
-    T_INPUT_VOL_MINUS_96DB = 0,
-	T_INPUT_VOL_MINUS_95DB = 2,
-	T_INPUT_VOL_MINUS_90DB = 12,
-	T_INPUT_VOL_MINUS_85DB = 22,
-    T_INPUT_VOL_MINUS_80DB = 32,
-    T_INPUT_VOL_MINUS_75DB = 42,
-    T_INPUT_VOL_MINUS_70DB = 52,
-    T_INPUT_VOL_MINUS_65DB = 62,
-    T_INPUT_VOL_MINUS_60DB = 72,
-    T_INPUT_VOL_MINUS_55DB = 82,
-    T_INPUT_VOL_MINUS_50DB = 92,
-    T_INPUT_VOL_MINUS_45DB = 102,
-    T_INPUT_VOL_MINUS_40DB = 112,
-    T_INPUT_VOL_MINUS_35DB = 122,
-    T_INPUT_VOL_MINUS_30DB = 132,
-    T_INPUT_VOL_MINUS_25DB = 142,
-    T_INPUT_VOL_MINUS_20DB = 152,
-    T_INPUT_VOL_MINUS_15DB = 162,
-    T_INPUT_VOL_MINUS_10DB = 172,
-    T_INPUT_VOL_MINUS_7DB  = 178,
-    T_INPUT_VOL_MINUS_6DB  = 180,
-    T_INPUT_VOL_MINUS_5DB  = 182,
-    T_INPUT_VOL_MINUS_4DB  = 184,
-    T_INPUT_VOL_MINUS_3DB  = 186,
-    T_INPUT_VOL_MINUS_2DB  = 188,
-    T_INPUT_VOL_MINUS_1DB  = 190,
-    T_INPUT_VOL_0DB        = 192
 };
 
 
-static struct audio_para_conf init_default_para[] = {  //¿ª»ú³õʼ»¯µ÷ÓÃ
-	{"DMIC MUX", {"0"}},	
-	{"SDP OUT MUX", {"0"}},
-	{"ALC MUX", {"0"}},	
-	{"D2SE MIC BOOST GAIN", {"1"}},
-	{"LIN PGA GAIN", {"6"}},	
-	{"ADC Capture Volume", {"192"}},	
-	{"ALC Capture Max PGA", {"15"}},
-	{"DAC MUTE", {"0"}},  	  
-	{"DAC Playback Volume", {"120"}},	
-	{"DAC SDP SRC MUX",  {"0"}},  
-	{"DAC SRC MUX",  {"0"}} 
-};
 
-//#ifdef  _USE_7520V3_PHONE_TYPE_C31F
-#if ( defined _USE_7520V3_PHONE_TYPE_C31F || defined _USE_7520V3_PHONE_TYPE_WTWD )
-
-static struct audio_para_conf  common_out_para_audio[] = {  //¶ÔÓ¦¹«¹²²¿·Ö
-	{"DAC MUTE", {"0"}},  	  
-	//{"DAC Playback Volume", {"120"}},	
-	{"DAC SDP SRC MUX",  {"0"}},  
-	{"DAC SRC MUX",  {"0"}} 
-};
-
-static struct audio_para_conf  common_in_para_audio[] = {  //¶ÔÓ¦¹«¹²²¿·Ö
-	{"DMIC MUX", {"0"}},	
-	{"SDP OUT MUX", {"0"}},
-	{"ADC Soft Ramp", {"0"}},	
-	{"ADC HPF COEFFICIENT", {"5"}},
-#if 0	
-	{"ALC MUX", {"1"}},	
-	{"ALC Capture Target Volume", {"5"}},
-	{"ALC Capture Max PGA", {"11"}},
-	{"ALC Capture Min PGA", {"2"}},
-	{"ALC Capture Hold Time", {"0"}},
-	{"ALC Capture Decay Time", {"0"}},
-	{"ALC Capture Attack Time", {"0"}},
-	{"ALC WIN SIZE", {"6"}},
-	{"ALC Capture NG Threshold", {"14"}},
-	{"ALC Capture NG Type", {"0"}},
-	{"ALC Capture NG Switch", {"0"}},
-#endif
-	{"D2SE MIC BOOST GAIN", {"1"}},
-	{"LIN PGA GAIN", {"6"}},	
-	{"ADC Capture Volume", {"192"}},	
-};
-
-#ifdef _USE_7520V3_PHONE_TYPE_WTWD
-static struct audio_para_conf  hp_outpath_para_audio[] = {  //¶ÔÓ¦ÓÚHpÊä³öͨµÀ
-	{"MONO MIXER DAC TO MONO OUT Switch", {"0"}},
-	{"SPEAKER MIXER DAC TO SPEAKER OUT Switch", {"1"}}, 	
-	{"SPEAKER MIXER GAIN", {"41"}},		//1d	
-	{"SPEAKER OUTPUT Volume", {"0"}},	//1e
-	{"DAC Playback Volume", {"192"}}, //38
-};
-#else
-static struct audio_para_conf  hp_outpath_para_audio[] = {  //¶ÔÓ¦ÓÚHpÊä³öͨµÀ
-	{"SPEAKER MIXER DAC TO SPEAKER OUT Switch", {"0"}}, 		
-	{"MONO OUT GAIN", {"4"}},      
-	{"MONO MIXER DAC TO MONO OUT Switch", {"1"}},
-	{"audio path select",{"handset"}},
-};
-
-#endif
-/*
-static struct audio_para_conf  spk_outpath_para_audio[] = { //¶ÔÓ¦ÓÚSpkÊä³öͨµÀ
-	{"MONO MIXER DAC TO MONO OUT Switch", {"0"}},	
-	{"SPEAKER MIXER GAIN", {"4"}},			
-	{"SPEAKER OUTPUT Volume", {"4"}},		
-	{"SPEAKER MIXER DAC TO SPEAKER OUT Switch", {"1"}} 	
-};
-*/
-
-static struct audio_para_conf  spk_outpath_para_audio[] = {  //¶ÔÓ¦ÓÚSpkÊä³öͨµÀ
-	{"SPEAKER MIXER DAC TO SPEAKER OUT Switch", {"0"}}, 		
-	{"MONO OUT GAIN", {"11"}},      
-	{"MONO MIXER DAC TO MONO OUT Switch", {"1"}},
-	{"audio path select",{"speak"}},
-};
-
-static  struct  audio_para_conf  main_mic_inpath_para_audio[] = { //¶ÔÓ¦ÓÚLin1-Rin1ÊäÈëͨµÀ
-	{"DIFFERENTIAL MUX", {"1"}},
-};
-
-static  struct  audio_para_conf  aux_mic_inpath_para_audio[] = {//¶ÔÓ¦ÓÚLin2-Rin2ÊäÈëͨµÀ
-	{"DIFFERENTIAL MUX", {"2"}},	
-};
-
-#ifdef _USE_7520V3_PHONE_TYPE_WTWD
-
-static struct audio_para_conf  handset_inoutpath_para_voice[] = {  //¶ÔÓ¦ÓÚHpÊä³öͨµÀMic1lp_Mic1lmÊäÈëͨµÀ
-#ifndef USE_CAP_SUPPORT
-
-	//{"voice processing path select", {"headset"}},  // handset speak headset bluetooth
-	{"voice processing path select", {"handset"}},	// handset speak headset bluetooth
-#endif	
-	{"DIFFERENTIAL MUX", {"1"}},	
-	{"DMIC MUX", {"0"}},	
-	{"SDP OUT MUX", {"0"}},
-	{"ADC Soft Ramp", {"0"}},
-	{"ADC HPF COEFFICIENT", {"5"}},
-
-	{"ALC MUX", {"0"}}, 
-	{"D2SE MIC BOOST GAIN", {"1"}},
-	{"LIN PGA GAIN", {"6"}},	
-	{"ADC Capture Volume", {"192"}},	
-			
-	{"MONO MIXER DAC TO MONO OUT Switch", {"0"}},
-	{"SPEAKER MIXER DAC TO SPEAKER OUT Switch", {"1"}}, 	
-	{"SPEAKER MIXER GAIN", {"32"}},	//old 41		
-	{"SPEAKER OUTPUT Volume", {"0"}},	//1
-	{"DAC Playback Volume", {"192"}}, //38
-};
-
-#else
-static struct audio_para_conf  handset_inoutpath_para_voice[] = {  //¶ÔÓ¦ÓÚHpÊä³öͨµÀMic1lp_Mic1lmÊäÈëͨµÀ
-#ifndef USE_CAP_SUPPORT
-
-	{"voice processing path select", {"handset"}},  // handset speak headset bluetooth
-#endif	
-	{"DIFFERENTIAL MUX", {"1"}},	
-	{"DMIC MUX", {"0"}},	
-	{"SDP OUT MUX", {"0"}},
-	{"ADC Soft Ramp", {"0"}},
-	{"ADC HPF COEFFICIENT", {"5"}},
-
-	{"ALC MUX", {"0"}},	
-#if 0
-	{"ALC Capture Target Volume", {"7"}},
-	{"ALC Capture Max PGA", {"13"}},
-	{"ALC Capture Min PGA", {"8"}},
-	{"ALC Capture Hold Time", {"0"}},
-	{"ALC Capture Decay Time", {"1"}},
-	{"ALC Capture Attack Time", {"2"}},
-	{"ALC WIN SIZE", {"6"}},
-	{"ALC Capture NG Threshold", {"14"}},
-	{"ALC Capture NG Type", {"0"}},
-	{"ALC Capture NG Switch", {"0"}},
-#endif	
-	{"D2SE MIC BOOST GAIN", {"1"}},
-	{"LIN PGA GAIN", {"6"}},	
-	{"ADC Capture Volume", {"192"}},	
-	{"SPEAKER MIXER DAC TO SPEAKER OUT Switch", {"0"}}, 		
-	{"MONO OUT GAIN", {"11"}}, 
-    {"DAC Playback Volume", {"192"}}, 
-	{"MONO MIXER DAC TO MONO OUT Switch", {"1"}},
-};
-#endif
-static struct audio_para_conf  headset_inoutpath_para_voice[] = {  //¶ÔÓ¦ÓÚHpÊä³öͨµÀ Mic1rpÊäÈëͨµÀ
-	{"DIFFERENTIAL MUX", {"1"}},	
-	{"DMIC MUX", {"0"}},	
-	{"SDP OUT MUX", {"0"}},
-	{"ADC Soft Ramp", {"0"}},
-	{"ADC HPF COEFFICIENT", {"5"}},
-
-	{"ALC MUX", {"0"}},	
-#if 0
-	{"ALC Capture Target Volume", {"7"}},
-	{"ALC Capture Max PGA", {"13"}},
-	{"ALC Capture Min PGA", {"8"}},
-	{"ALC Capture Hold Time", {"0"}},
-	{"ALC Capture Decay Time", {"1"}},
-	{"ALC Capture Attack Time", {"2"}},
-	{"ALC WIN SIZE", {"6"}},
-	{"ALC Capture NG Threshold", {"14"}},
-	{"ALC Capture NG Type", {"0"}},
-	{"ALC Capture NG Switch", {"0"}},
-#endif	
-	{"D2SE MIC BOOST GAIN", {"1"}},
-	{"LIN PGA GAIN", {"7"}},	
-	{"ADC Capture Volume", {"192"}},	
-	{"SPEAKER MIXER DAC TO SPEAKER OUT Switch", {"0"}}, 		
-	{"MONO OUT GAIN", {"4"}},
-	{"DAC Playback Volume", {"190"}},
-	{"MONO MIXER DAC TO MONO OUT Switch", {"1"}},
-#ifndef USE_CAP_SUPPORT        
-	{"voice processing select", {"headset"}}, // handset speak headset bluetooth
-#endif	
-};
-#ifdef _USE_7520V3_PHONE_TYPE_WTWD //class-d -->receiver
-static struct audio_para_conf  spk_inoutpath_para_voice[] = { //¶ÔÓ¦ÓÚSpkÊä³öͨµÀMic1lp_Mic1lmÊäÈëͨµÀ
-	{"DIFFERENTIAL MUX", {"1"}},	
-	{"DMIC MUX", {"0"}},	
-	{"SDP OUT MUX", {"0"}},
-	{"ADC Soft Ramp", {"0"}},
-	{"ADC HPF COEFFICIENT", {"5"}},
-
-	{"ALC MUX", {"0"}},	
-#if 0	
-	{"ALC Capture Target Volume", {"7"}},
-	{"ALC Capture Max PGA", {"13"}},
-	{"ALC Capture Min PGA", {"8"}},
-	{"ALC Capture Hold Time", {"0"}},
-	{"ALC Capture Decay Time", {"1"}},
-	{"ALC Capture Attack Time", {"2"}},
-	{"ALC WIN SIZE", {"6"}},
-	{"ALC Capture NG Threshold", {"14"}},
-	{"ALC Capture NG Type", {"0"}},
-	{"ALC Capture NG Switch", {"0"}},
-#endif	
-	{"D2SE MIC BOOST GAIN", {"1"}},
-	{"LIN PGA GAIN", {"6"}},	
-	{"ADC Capture Volume", {"192"}},	
-	{"SPEAKER MIXER DAC TO SPEAKER OUT Switch", {"0"}},		
-	{"MONO OUT GAIN", {"4"}}, 
-	{"DAC Playback Volume", {"186"}},
-	{"MONO MIXER DAC TO MONO OUT Switch", {"1"}},
-#ifndef USE_CAP_SUPPORT        
-	{"voice processing path select", {"speak"}}, // handset speak headset bluetooth
-#endif	
-};
-#else//momo out -> speaker
-static struct audio_para_conf  spk_inoutpath_para_voice[] = { //¶ÔÓ¦ÓÚSpkÊä³öͨµÀMic1lp_Mic1lmÊäÈëͨµÀ
-	{"DIFFERENTIAL MUX", {"1"}},	
-	{"DMIC MUX", {"0"}},	
-	{"SDP OUT MUX", {"0"}},
-	{"ADC Soft Ramp", {"0"}},
-	{"ADC HPF COEFFICIENT", {"5"}},
-
-	{"ALC MUX", {"0"}},	
-#if 0	
-	{"ALC Capture Target Volume", {"7"}},
-	{"ALC Capture Max PGA", {"13"}},
-	{"ALC Capture Min PGA", {"8"}},
-	{"ALC Capture Hold Time", {"0"}},
-	{"ALC Capture Decay Time", {"1"}},
-	{"ALC Capture Attack Time", {"2"}},
-	{"ALC WIN SIZE", {"6"}},
-	{"ALC Capture NG Threshold", {"14"}},
-	{"ALC Capture NG Type", {"0"}},
-	{"ALC Capture NG Switch", {"0"}},
-#endif	
-	{"D2SE MIC BOOST GAIN", {"1"}},
-	{"LIN PGA GAIN", {"6"}},	
-	{"ADC Capture Volume", {"192"}},	
-	{"SPEAKER MIXER DAC TO SPEAKER OUT Switch", {"0"}},		
-	{"MONO OUT GAIN", {"0"}}, 
-	{"DAC Playback Volume", {"186"}},
-	{"MONO MIXER DAC TO MONO OUT Switch", {"1"}},
-#ifndef USE_CAP_SUPPORT        
-	{"voice processing path select", {"speak"}}, // handset speak headset bluetooth
-#endif	
-};
-
-#endif
-
-
-
-#else
-static struct audio_para_conf  common_out_para_audio[] = {  //¶ÔÓ¦¹«¹²²¿·Ö
-	{"DAC MUTE", {"0"}},  	  
-	//{"DAC Playback Volume", {"120"}},	
-	{"DAC SDP SRC MUX",  {"0"}},  
-	{"DAC SRC MUX",  {"0"}} 
-};
-
-static struct audio_para_conf  common_in_para_audio[] = {  //¶ÔÓ¦¹«¹²²¿·Ö
-	{"DMIC MUX", {"0"}},	
-	{"SDP OUT MUX", {"0"}},
-	{"ADC Soft Ramp", {"0"}},	
-	{"ADC HPF COEFFICIENT", {"5"}},
-#if 1	
-	{"ALC MUX", {"1"}},	
-	{"ALC Capture Target Volume", {"5"}},
-	{"ALC Capture Max PGA", {"11"}},
-	{"ALC Capture Min PGA", {"2"}},
-	{"ALC Capture Hold Time", {"0"}},
-	{"ALC Capture Decay Time", {"0"}},
-	{"ALC Capture Attack Time", {"0"}},
-	{"ALC WIN SIZE", {"6"}},
-	{"ALC Capture NG Threshold", {"14"}},
-	{"ALC Capture NG Type", {"0"}},
-	{"ALC Capture NG Switch", {"0"}},
-#endif
-	{"D2SE MIC BOOST GAIN", {"1"}},
-	{"LIN PGA GAIN", {"3"}},	
-	{"ADC Capture Volume", {"180"}},	
-};
-
-static struct audio_para_conf  hp_outpath_para_audio[] = {  //¶ÔÓ¦ÓÚHpÊä³öͨµÀ
-	{"SPEAKER MIXER DAC TO SPEAKER OUT Switch", {"0"}}, 		
-	{"MONO OUT GAIN", {"4"}},      
-	{"MONO MIXER DAC TO MONO OUT Switch", {"1"}}
-};
-
-/*
-static struct audio_para_conf  spk_outpath_para_audio[] = { //¶ÔÓ¦ÓÚSpkÊä³öͨµÀ
-	{"MONO MIXER DAC TO MONO OUT Switch", {"0"}},	
-	{"SPEAKER MIXER GAIN", {"4"}},			
-	{"SPEAKER OUTPUT Volume", {"4"}},		
-	{"SPEAKER MIXER DAC TO SPEAKER OUT Switch", {"1"}} 	
-};
-*/
-
-static struct audio_para_conf  spk_outpath_para_audio[] = {  //¶ÔÓ¦ÓÚSpkÊä³öͨµÀ
-	{"SPEAKER MIXER DAC TO SPEAKER OUT Switch", {"0"}}, 		
-	{"MONO OUT GAIN", {"3"}},      
-	{"MONO MIXER DAC TO MONO OUT Switch", {"1"}}
-};
-
-static  struct  audio_para_conf  main_mic_inpath_para_audio[] = { //¶ÔÓ¦ÓÚLin1-Rin1ÊäÈëͨµÀ
-	{"DIFFERENTIAL MUX", {"1"}},
-};
-
-static  struct  audio_para_conf  aux_mic_inpath_para_audio[] = {//¶ÔÓ¦ÓÚLin2-Rin2ÊäÈëͨµÀ
-	{"DIFFERENTIAL MUX", {"2"}},	
-};
-
-static struct audio_para_conf  handset_inoutpath_para_voice[] = {  //¶ÔÓ¦ÓÚHpÊä³öͨµÀMic1lp_Mic1lmÊäÈëͨµÀ
-	{"DIFFERENTIAL MUX", {"1"}},	
-	{"DMIC MUX", {"0"}},	
-	{"SDP OUT MUX", {"0"}},
-	{"ADC Soft Ramp", {"0"}},
-	{"ADC HPF COEFFICIENT", {"5"}},
-
-	{"ALC MUX", {"0"}},	
-#if 0
-	{"ALC Capture Target Volume", {"7"}},
-	{"ALC Capture Max PGA", {"13"}},
-	{"ALC Capture Min PGA", {"8"}},
-	{"ALC Capture Hold Time", {"0"}},
-	{"ALC Capture Decay Time", {"1"}},
-	{"ALC Capture Attack Time", {"2"}},
-	{"ALC WIN SIZE", {"6"}},
-	{"ALC Capture NG Threshold", {"14"}},
-	{"ALC Capture NG Type", {"0"}},
-	{"ALC Capture NG Switch", {"0"}},
-#endif	
-	{"D2SE MIC BOOST GAIN", {"1"}},
-	{"LIN PGA GAIN", {"7"}},	
-	{"ADC Capture Volume", {"192"}},	
-	{"SPEAKER MIXER DAC TO SPEAKER OUT Switch", {"0"}}, 		
-	{"MONO OUT GAIN", {"4"}}, 
-    {"DAC Playback Volume", {"190"}}, 
-	{"MONO MIXER DAC TO MONO OUT Switch", {"1"}},
-#ifndef USE_CAP_SUPPORT        
-	{"voice processing path select", {"handset"}},  // handset speak headset bluetooth
-#endif	
-};
-
-static struct audio_para_conf  headset_inoutpath_para_voice[] = {  //¶ÔÓ¦ÓÚHpÊä³öͨµÀ Mic1rpÊäÈëͨµÀ
-	{"DIFFERENTIAL MUX", {"1"}},	
-	{"DMIC MUX", {"0"}},	
-	{"SDP OUT MUX", {"0"}},
-	{"ADC Soft Ramp", {"0"}},
-	{"ADC HPF COEFFICIENT", {"5"}},
-
-	{"ALC MUX", {"0"}},	
-#if 0
-	{"ALC Capture Target Volume", {"7"}},
-	{"ALC Capture Max PGA", {"13"}},
-	{"ALC Capture Min PGA", {"8"}},
-	{"ALC Capture Hold Time", {"0"}},
-	{"ALC Capture Decay Time", {"1"}},
-	{"ALC Capture Attack Time", {"2"}},
-	{"ALC WIN SIZE", {"6"}},
-	{"ALC Capture NG Threshold", {"14"}},
-	{"ALC Capture NG Type", {"0"}},
-	{"ALC Capture NG Switch", {"0"}},
-#endif	
-	{"D2SE MIC BOOST GAIN", {"1"}},
-	{"LIN PGA GAIN", {"7"}},	
-	{"ADC Capture Volume", {"192"}},	
-	{"SPEAKER MIXER DAC TO SPEAKER OUT Switch", {"0"}}, 		
-	{"MONO OUT GAIN", {"4"}},
-	{"DAC Playback Volume", {"190"}},
-	{"MONO MIXER DAC TO MONO OUT Switch", {"1"}},
-#ifndef USE_CAP_SUPPORT        
-	{"voice processing select", {"headset"}}, // handset speak headset bluetooth
-#endif	
-};
-
-static struct audio_para_conf  spk_inoutpath_para_voice[] = { //¶ÔÓ¦ÓÚSpkÊä³öͨµÀMic1lp_Mic1lmÊäÈëͨµÀ
-	{"DIFFERENTIAL MUX", {"1"}},	
-	{"DMIC MUX", {"0"}},	
-	{"SDP OUT MUX", {"0"}},
-	{"ADC Soft Ramp", {"0"}},
-	{"ADC HPF COEFFICIENT", {"5"}},
-
-	{"ALC MUX", {"0"}},	
-#if 0	
-	{"ALC Capture Target Volume", {"7"}},
-	{"ALC Capture Max PGA", {"13"}},
-	{"ALC Capture Min PGA", {"8"}},
-	{"ALC Capture Hold Time", {"0"}},
-	{"ALC Capture Decay Time", {"1"}},
-	{"ALC Capture Attack Time", {"2"}},
-	{"ALC WIN SIZE", {"6"}},
-	{"ALC Capture NG Threshold", {"14"}},
-	{"ALC Capture NG Type", {"0"}},
-	{"ALC Capture NG Switch", {"0"}},
-#endif	
-	{"D2SE MIC BOOST GAIN", {"1"}},
-	{"LIN PGA GAIN", {"7"}},	
-	{"ADC Capture Volume", {"192"}},	
-	{"SPEAKER MIXER DAC TO SPEAKER OUT Switch", {"0"}},		
-	{"MONO OUT GAIN", {"4"}}, 
-	{"DAC Playback Volume", {"190"}},
-	{"MONO MIXER DAC TO MONO OUT Switch", {"1"}},
-#ifndef USE_CAP_SUPPORT        
-	{"voice processing path select", {"speak"}}, // handset speak headset bluetooth
-#endif	
-};
-
-#endif
-
-static struct audio_para_conf output_dac_vol = {"DAC Playback Volume", {"120"}};
-
-static struct audio_para_conf input_adc_vol = {"ADC Capture Volume", {"192"}};
-
-static struct audio_para_conf dac_mute = {"DAC MUTE", {"1"}};
-static struct audio_para_conf adc_mute = {"ADC MUTE", {"1"}};
-
-static struct audio_para_conf spk_path_onoff[] = {
-	{"MONO MIXER DAC TO MONO OUT Switch", {"0"}},
-};
-
-static struct audio_para_conf rcv_path_onoff[] = {
-	{"MONO MIXER DAC TO MONO OUT Switch", {"0"}},
-};
-
-static struct audio_para_conf earp_path_onoff[] = {
-	{"MONO MIXER DAC TO MONO OUT Switch", {"0"}},
-};
-
-
-static int output_vol_conversion(int vol)
-{
-	switch(vol){
-	case T_AUDIO_OUTPUT_VOL_LEVEL_0:
-		return T_OUTPUT_VOL_MINUS_96DB;
-	case T_AUDIO_OUTPUT_VOL_LEVEL_1:
-		return T_OUTPUT_VOL_MINUS_45DB;
-	case T_AUDIO_OUTPUT_VOL_LEVEL_2:
-		return T_OUTPUT_VOL_MINUS_40DB;
-	case T_AUDIO_OUTPUT_VOL_LEVEL_3:
-		return T_OUTPUT_VOL_MINUS_35DB;
-	case T_AUDIO_OUTPUT_VOL_LEVEL_4:
-		return T_OUTPUT_VOL_MINUS_30DB;
-	case T_AUDIO_OUTPUT_VOL_LEVEL_5:
-		return T_OUTPUT_VOL_MINUS_25DB;
-	case T_AUDIO_OUTPUT_VOL_LEVEL_6:
-		return T_OUTPUT_VOL_MINUS_20DB;
-	case T_AUDIO_OUTPUT_VOL_LEVEL_7:
-		return T_OUTPUT_VOL_MINUS_15DB;
-	case T_AUDIO_OUTPUT_VOL_LEVEL_8:
-		return T_OUTPUT_VOL_MINUS_10DB;
-	case T_AUDIO_OUTPUT_VOL_LEVEL_9:
-		return T_OUTPUT_VOL_MINUS_6DB;
-	case T_AUDIO_OUTPUT_VOL_LEVEL_10:
-		return T_OUTPUT_VOL_MINUS_3DB;
-	case T_AUDIO_OUTPUT_VOL_LEVEL_11:
-		return T_OUTPUT_VOL_0DB;
-	default:
-		return T_OUTPUT_VOL_0DB;
-	}
-}
-
-static int input_vol_conversion(int vol)
-{
-	switch(vol) {
-	case T_AUDIO_INPUT_VOL_LEVEL_0:
-		return T_INPUT_VOL_MINUS_96DB;
-	case T_AUDIO_INPUT_VOL_LEVEL_1:
-		return T_INPUT_VOL_MINUS_30DB;
-	case T_AUDIO_INPUT_VOL_LEVEL_2:
-		return T_INPUT_VOL_MINUS_25DB;
-	case T_AUDIO_INPUT_VOL_LEVEL_3:
-		return T_INPUT_VOL_MINUS_20DB;
-	case T_AUDIO_INPUT_VOL_LEVEL_4:
-		return T_INPUT_VOL_MINUS_15DB;
-	case T_AUDIO_INPUT_VOL_LEVEL_5:
-		return T_INPUT_VOL_MINUS_10DB;
-	case T_AUDIO_INPUT_VOL_LEVEL_6:
-		return T_INPUT_VOL_MINUS_7DB;
-	case T_AUDIO_INPUT_VOL_LEVEL_7:
-		return T_INPUT_VOL_MINUS_4DB;
-	case T_AUDIO_INPUT_VOL_LEVEL_8:
-		return T_INPUT_VOL_MINUS_3DB;
-	case T_AUDIO_INPUT_VOL_LEVEL_9:
-		return T_INPUT_VOL_MINUS_2DB;
-	case T_AUDIO_INPUT_VOL_LEVEL_10:
-		return T_INPUT_VOL_MINUS_1DB;
-	case T_AUDIO_INPUT_VOL_LEVEL_11:
-		return T_INPUT_VOL_0DB;
-	default:
-		return T_INPUT_VOL_MINUS_30DB;
-	}
-}
-
-#elif defined _USE_CODEC_AK4940
-
-static struct audio_para_conf  common_out_para_audio[] = {  //¶ÔÓ¦¹«¹²²¿·Ö
-    {"DAC Soft Mute Control", {"0"}},
-    //{"BICK Frequency", {"32fs"}},    
-    {"BICK Frequency", {"2"}},//0 64fs,1 48fs,2 32fs
-
-};
-	
-
-static struct audio_para_conf  common_in_para_audio[] = {  //¶ÔÓ¦¹«¹²²¿·Ö
-
-		{"Mic Gain Control", {"0"}},
-		{"ADC Digital Volume (VOLAD)", {"195"}},
-		{"ADC Soft Mute Control", {"0"}},
-		
-
-};
-
-static struct audio_para_conf  hp_outpath_para_audio[] = {  //¶ÔÓ¦ÓÚHpÊä³öͨµÀ
-	{"OUT2 MUX", {"DAC"}},
-	{"Lineout Type", {"Single-end"}},
-
-};
-
-static struct audio_para_conf  spk_outpath_para_audio[] = { //¶ÔÓ¦ÓÚSpkÊä³öͨµÀ
-	{"OUT1 MUX", {"DAC"}},
-	{"Lineout Type", {"Differential"}},
-
-};
-
-static  struct  audio_para_conf  main_mic_inpath_para_audio[] = { //¶ÔÓ¦ÓÚMic1lp_Mic1lmÊäÈëͨµÀ
-
-		{"ADC Input Type", {"Single-end"}},
-		{"AIN MUX", {"AIN1"}},	
-
-};
-
-static  struct  audio_para_conf  aux_mic_inpath_para_audio[] = {//¶ÔÓ¦ÓÚMic1rpÊäÈëͨµÀ
-
-	{"ADC Input Type", {"Single-end"}},	
-	{"AIN MUX", {"AIN2"}},
-};
-
-static struct audio_para_conf  handset_inoutpath_para_voice[] = {  //¶ÔÓ¦ÓÚHpÊä³öͨµÀMic1lp_Mic1lmÊäÈëͨµÀ
-    // common in
-
-	{"Mic Gain Control", {"0"}},
-	{"ADC Digital Volume (VOLAD)", {"195"}},
-	{"ADC Soft Mute Control", {"0"}},
-    //diff in	
-	{"ADC Input Type", {"Single-end"}},
-	{"AIN MUX", {"AIN1"}},	
-
-    // common out
-
-    {"DAC Soft Mute Control", {"0"}},
-    //{"BICK Frequency", {"32fs"}},    
-    {"BICK Frequency", {"2"}},//0 64fs,1 48fs,2 32fs
-	//diff out
-
-	//voice
-#ifndef USE_CAP_SUPPORT
-
-	{"voice processing path select", {"handset"}},  // handset speak headset bluetooth
-#endif	
-};
-
-static struct audio_para_conf  headset_inoutpath_para_voice[] = {  //¶ÔÓ¦ÓÚHpÊä³öͨµÀ Mic1rpÊäÈëͨµÀ
-    // common in
-
-	{"Mic Gain Control", {"0"}},
-	{"ADC Digital Volume (VOLAD)", {"195"}},
-	{"ADC Soft Mute Control", {"0"}},
-	//diff in
-	{"ADC Input Type", {"Single-end"}},	
-	{"AIN MUX", {"AIN2"}},	
-		// common out
-
-    {"DAC Soft Mute Control", {"0"}},
-    //{"BICK Frequency", {"32fs"}},	
-    {"BICK Frequency", {"2"}},//0 64fs,1 48fs,2 32fs
-	//diff out
-
-	{"OUT2 MUX", {"DAC"}},
-	{"Lineout Type", {"Single-end"}},
-	//voice
-#ifndef USE_CAP_SUPPORT
-
-	{"voice processing select", {"headset"}}, // handset speak headset bluetooth
-#endif	
-};
-
-static struct audio_para_conf  spk_inoutpath_para_voice[] = { //¶ÔÓ¦ÓÚSpkÊä³öͨµÀMic1lp_Mic1lmÊäÈëͨµÀ
-
-    // common in
-    {"Mic Gain Control", {"0"}},
-	{"ADC Digital Volume (VOLAD)", {"195"}},
-	{"ADC Soft Mute Control", {"0"}},
-	//diff in
-	{"ADC Input Type", {"Single-end"}},
-	{"AIN MUX", {"AIN1"}},	
-    // common out		
-    {"DAC Soft Mute Control", {"0"}},
-    //{"BICK Frequency", {"32fs"}},    
-    {"BICK Frequency", {"2"}},//0 64fs,1 48fs,2 32fs
-	//diff out    
-	{"OUT1 MUX", {"DAC"}},
-	{"Lineout Type", {"Differential"}},
-	//voice
-#ifndef USE_CAP_SUPPORT
-
-	{"voice processing path select", {"speak"}}, // handset speak headset bluetooth
-#endif	
-};
-
-#elif defined _USE_CODEC_NAU8810
-static struct audio_para_conf init_default_para[] = {  //¿ª»ú³õʼ»¯µ÷ÓÃ
-
-};
+static struct audio_para_conf  common_out_para_audio[] = {  //对应公共部分
 
-static struct audio_para_conf  common_out_para_audio[] = {  //¶ÔÓ¦¹«¹²²¿·Ö
     //{"DAC Soft Mute Control", {"0"}},
 
 
+
+
+
 };
 
 
-static struct audio_para_conf  common_in_para_audio[] = {  //¶ÔÓ¦¹«¹²²¿·Ö
+
+
+
+static struct audio_para_conf  common_in_para_audio[] = {  //对应公共部分
+
+
 
 	//{"Mic Gain Control", {"0"}},
 
-};
-
-static struct audio_para_conf  hp_outpath_para_audio[] = {  //¶ÔÓ¦ÓÚHpÊä³öͨµÀ
-	{"Speaker Mute Switch", {"1"}},
-	{"Mono Mute Switch", {"0"}},
-	{"Mono Mixer PCM Playback Switch", {"1"}},
 
 
 };
 
-static struct audio_para_conf  spk_outpath_para_audio[] = { //¶ÔÓ¦ÓÚSpkÊä³öͨµÀ
-	{"Mono Mute Switch", {"1"}},
-	{"Speaker Volume", {"57"}},
-	{"Speaker Mute Switch", {"0"}},
-	{"Speaker Mixer PCM Playback Switch", {"1"}},
 
 
-};
+static struct audio_para_conf  hp_outpath_para_audio[] = {  //对应于Hp输出通道
 
-static  struct  audio_para_conf  main_mic_inpath_para_audio[] = { //¶ÔÓ¦ÓÚMic1lp_Mic1lmÊäÈëͨµÀ
+	{"MIC PGA GAIN", {"10"}},
 
-    //#0x2d b6 pga mute
-	{"Input Boost Stage PGA Mute Switch", {"1"}},
-	{"Capture Volume", {"255"}},
-	{"PGA Volume", {"32"}},
-	{"Input PGA MicN Switch", {"1"}},
-	{"Input PGA MicP Switch", {"1"}},
+	{"ADC SCALE", {"1"}},
 
-	//#0x2f b4~b6
-	{"Input Boost Stage PMIC PGA Switch", {"0"}},
+	{"DMIC TYPE", {"dmic at high level"}},
 
-};
+	{"ADC RAMP RATE", {"4"}},
 
-static  struct  audio_para_conf  aux_mic_inpath_para_audio[] = {//¶ÔÓ¦ÓÚMic1rpÊäÈëͨµÀ
+	{"ADC SDP MUTE", {"0"}},
 
-    //#0x2d b6 pga mute
-	{"Input Boost Stage PGA Mute Switch", {"1"}},
-	{"Capture Volume", {"255"}},
-	{"PGA Volume", {"32"}},
-	{"Input PGA MicN Switch", {"1"}},
-	{"Input PGA MicP Switch", {"1"}},
+	{"ADC INVERTED", {"0"}},
 
-	//#0x2f b4~b6
-	{"Input Boost Stage PMIC PGA Switch", {"0"}},
+	{"ADC SYNC", {"0"}},
+
+	{"ADC RAM CLR", {"0"}},
+
+	{"ADC VOLUME", {"191"}},
+
+	{"ALC ENABLE", {"0"}},
+
+	{"ALC AUTOMUTE TYPE", {"automute disabled"}},
+
+	{"ALC WIN SIZE", {"0"}},
+
+	{"ALC MAX LEVEL", {"0"}},
+
+	{"ALC MIN LEVEL", {"0"}},
+
+	{"ALC AUTOMUTE WINSIZE", {"0"}},
+
+	{"ALC AUTOMUTE GATE THRESHOLD", {"0"}},
+
+	{"ALC AUTOMUTE VOLUME", {"0"}},
+
+	{"ADC FS MODE", {"0"}},
+
+	{"DAC SDP MUTE", {"0"}},
+
+	{"DAC DEM  MUTE", {"0"}},
+
+	{"DAC INVERT", {"0"}},
+
+	{"DAC RAM CLR", {"0"}},
+
+	{"DAC DSM MUTE", {"mute to 8"}},
+
+	{"DAC OFFSET", {"0"}},
+
+	{"DAC VOLUME", {"191"}},
+
+	{"DRC ENABLE", {"0"}},
+
+	{"DRC WIN SIZE", {"0"}},
+
+	{"DRC MAX LEVEL", {"0"}},
+
+	{"DRC MIN LEVEL", {"0"}},
+
+	{"DAC RAMP RATE", {"4"}},
+
+	{"AEC MODE", {"adc left, adc right"}},
+
+	{"ADC DATA TO DAC TEST MODE", {"disable"}},
+
+	{"MCLK INVERT", {"0"}},
+
+	{"BCLK INVERT", {"0"}},
+
+	{"MCLK SOURCE", {"from mclk pin"}},
 
 	
+
+	{"DMIC MUX", {"DMIC DISABLE"}},
+
+	{"SDP OUT MUX", {"FROM ADC OUT"}},
+
+	{"DAC SDP SRC MUX", {"SELECT SDP LEFT DATA"}},
+
+
+
+
+
+
+
 };
 
-static struct audio_para_conf  handset_inoutpath_para_voice[] = {  //¶ÔÓ¦ÓÚHpÊä³öͨµÀMic1lp_Mic1lmÊäÈëͨµÀ
-    //in
-    //#0x2d b6 pga mute
-	{"Input Boost Stage PGA Mute Switch", {"1"}},
-	{"Capture Volume", {"255"}},
-	{"PGA Volume", {"32"}},
-	{"Input PGA MicN Switch", {"1"}},
-	{"Input PGA MicP Switch", {"1"}},
 
-	//#0x2f b4~b6
-	{"Input Boost Stage PMIC PGA Switch", {"0"}},
 
-    //out
-    {"Playback Volume", {"255"}},
-	{"Speaker Mute Switch", {"1"}},
-	{"Mono Mute Switch", {"0"}},
-	{"Mono Mixer PCM Playback Switch", {"1"}},
+static struct audio_para_conf  spk_outpath_para_audio[] = { //对应于Spk输出通道
+
+	{"MIC PGA GAIN", {"10"}},
+
+	{"ADC SCALE", {"1"}},
+
+	{"DMIC TYPE", {"dmic at high level"}},
+
+	{"ADC RAMP RATE", {"4"}},
+
+	{"ADC SDP MUTE", {"0"}},
+
+	{"ADC INVERTED", {"0"}},
+
+	{"ADC SYNC", {"0"}},
+
+	{"ADC RAM CLR", {"0"}},
+
+	{"ADC VOLUME", {"191"}},
+
+	{"ALC ENABLE", {"0"}},
+
+	{"ALC AUTOMUTE TYPE", {"automute disabled"}},
+
+	{"ALC WIN SIZE", {"0"}},
+
+	{"ALC MAX LEVEL", {"0"}},
+
+	{"ALC MIN LEVEL", {"0"}},
+
+	{"ALC AUTOMUTE WINSIZE", {"0"}},
+
+	{"ALC AUTOMUTE GATE THRESHOLD", {"0"}},
+
+	{"ALC AUTOMUTE VOLUME", {"0"}},
+
+	{"ADC FS MODE", {"0"}},
+
+	{"DAC SDP MUTE", {"0"}},
+
+	{"DAC DEM  MUTE", {"0"}},
+
+	{"DAC INVERT", {"0"}},
+
+	{"DAC RAM CLR", {"0"}},
+
+	{"DAC DSM MUTE", {"mute to 8"}},
+
+	{"DAC OFFSET", {"0"}},
+
+	{"DAC VOLUME", {"191"}},
+
+	{"DRC ENABLE", {"0"}},
+
+	{"DRC WIN SIZE", {"0"}},
+
+	{"DRC MAX LEVEL", {"0"}},
+
+	{"DRC MIN LEVEL", {"0"}},
+
+	{"DAC RAMP RATE", {"4"}},
+
+	{"AEC MODE", {"adc left, adc right"}},
+
+	{"ADC DATA TO DAC TEST MODE", {"disable"}},
+
+	{"MCLK INVERT", {"0"}},
+
+	{"BCLK INVERT", {"0"}},
+
+	{"MCLK SOURCE", {"from mclk pin"}},
+
+	
+
+	{"DMIC MUX", {"DMIC DISABLE"}},
+
+	{"SDP OUT MUX", {"FROM ADC OUT"}},
+
+	{"DAC SDP SRC MUX", {"SELECT SDP LEFT DATA"}},
 
 
 
-	//voice
-#ifndef USE_CAP_SUPPORT
 
-	{"voice processing path select", {"handset"}},  // handset speak headset bluetooth
-#endif	
+
 };
 
-static struct audio_para_conf  headset_inoutpath_para_voice[] = {  //¶ÔÓ¦ÓÚHpÊä³öͨµÀ Mic1rpÊäÈëͨµÀ
-    //in
-    //#0x2d b6 pga mute
-	{"Input Boost Stage PGA Mute Switch", {"1"}},
-	{"Capture Volume", {"255"}},
-	{"PGA Volume", {"32"}},
-	{"Input PGA MicN Switch", {"1"}},
-	{"Input PGA MicP Switch", {"1"}},
 
-	//#0x2f b4~b6
-	{"Input Boost Stage PMIC PGA Switch", {"0"}},
 
-    //out
-    {"Playback Volume", {"255"}},    
-	{"Speaker Mute Switch", {"1"}},
-	{"Mono Mute Switch", {"0"}},
-	{"Mono Mixer PCM Playback Switch", {"1"}},
+static  struct  audio_para_conf  main_mic_inpath_para_audio[] = { //对应于Mic1lp_Mic1lm输入通道
 
-	//voice
-#ifndef USE_CAP_SUPPORT
 
-	{"voice processing select", {"headset"}}, // handset speak headset bluetooth
-#endif	
+
+    {"MIC PGA GAIN", {"10"}},
+
+	{"ADC SCALE", {"1"}},
+
+	{"DMIC TYPE", {"dmic at high level"}},
+
+	{"ADC RAMP RATE", {"4"}},
+
+	{"ADC SDP MUTE", {"0"}},
+
+	{"ADC INVERTED", {"0"}},
+
+	{"ADC SYNC", {"0"}},
+
+	{"ADC RAM CLR", {"0"}},
+
+	{"ADC VOLUME", {"191"}},
+
+	{"ALC ENABLE", {"0"}},
+
+	{"ALC AUTOMUTE TYPE", {"automute disabled"}},
+
+	{"ALC WIN SIZE", {"0"}},
+
+	{"ALC MAX LEVEL", {"0"}},
+
+	{"ALC MIN LEVEL", {"0"}},
+
+	{"ALC AUTOMUTE WINSIZE", {"0"}},
+
+	{"ALC AUTOMUTE GATE THRESHOLD", {"0"}},
+
+	{"ALC AUTOMUTE VOLUME", {"0"}},
+
+	{"ADC FS MODE", {"0"}},
+
+	{"DAC SDP MUTE", {"0"}},
+
+	{"DAC DEM  MUTE", {"0"}},
+
+	{"DAC INVERT", {"0"}},
+
+	{"DAC RAM CLR", {"0"}},
+
+	{"DAC DSM MUTE", {"mute to 8"}},
+
+	{"DAC OFFSET", {"0"}},
+
+	{"DAC VOLUME", {"191"}},
+
+	{"DRC ENABLE", {"0"}},
+
+	{"DRC WIN SIZE", {"0"}},
+
+	{"DRC MAX LEVEL", {"0"}},
+
+	{"DRC MIN LEVEL", {"0"}},
+
+	{"DAC RAMP RATE", {"4"}},
+
+	{"AEC MODE", {"adc left, adc right"}},
+
+	{"ADC DATA TO DAC TEST MODE", {"disable"}},
+
+	{"MCLK INVERT", {"0"}},
+
+	{"BCLK INVERT", {"0"}},
+
+	{"MCLK SOURCE", {"from mclk pin"}},
+
+	
+
+	{"DMIC MUX", {"DMIC DISABLE"}},
+
+	{"SDP OUT MUX", {"FROM ADC OUT"}},
+
+	{"DAC SDP SRC MUX", {"SELECT SDP LEFT DATA"}},
+
+
+
 };
 
-static struct audio_para_conf  spk_inoutpath_para_voice[] = { //¶ÔÓ¦ÓÚSpkÊä³öͨµÀMic1lp_Mic1lmÊäÈëͨµÀ
-
-    //in
-    //#0x2d b6 pga mute
-	{"Input Boost Stage PGA Mute Switch", {"1"}},
-	{"Capture Volume", {"255"}},
-	{"PGA Volume", {"32"}},
-	{"Input PGA MicN Switch", {"1"}},
-	{"Input PGA MicP Switch", {"1"}},
-
-	//#0x2f b4~b6
-	{"Input Boost Stage PMIC PGA Switch", {"0"}},
-
-	//out
-    {"Playback Volume", {"255"}},	
-	{"Mono Mute Switch", {"1"}},
-	{"Speaker Volume", {"57"}},
-	{"Speaker Mute Switch", {"0"}},
-	{"Speaker Mixer PCM Playback Switch", {"1"}},
 
 
-	//voice
-#ifndef USE_CAP_SUPPORT
+static  struct  audio_para_conf  aux_mic_inpath_para_audio[] = {//对应于Mic1rp输入通道
 
-	{"voice processing path select", {"speak"}}, // handset speak headset bluetooth
-#endif	
+
+
+   {"MIC PGA GAIN", {"10"}},
+
+	{"ADC SCALE", {"1"}},
+
+	{"DMIC TYPE", {"dmic at high level"}},
+
+	{"ADC RAMP RATE", {"4"}},
+
+	{"ADC SDP MUTE", {"0"}},
+
+	{"ADC INVERTED", {"0"}},
+
+	{"ADC SYNC", {"0"}},
+
+	{"ADC RAM CLR", {"0"}},
+
+	{"ADC VOLUME", {"191"}},
+
+	{"ALC ENABLE", {"0"}},
+
+	{"ALC AUTOMUTE TYPE", {"automute disabled"}},
+
+	{"ALC WIN SIZE", {"0"}},
+
+	{"ALC MAX LEVEL", {"0"}},
+
+	{"ALC MIN LEVEL", {"0"}},
+
+	{"ALC AUTOMUTE WINSIZE", {"0"}},
+
+	{"ALC AUTOMUTE GATE THRESHOLD", {"0"}},
+
+	{"ALC AUTOMUTE VOLUME", {"0"}},
+
+	{"ADC FS MODE", {"0"}},
+
+	{"DAC SDP MUTE", {"0"}},
+
+	{"DAC DEM  MUTE", {"0"}},
+
+	{"DAC INVERT", {"0"}},
+
+	{"DAC RAM CLR", {"0"}},
+
+	{"DAC DSM MUTE", {"mute to 8"}},
+
+	{"DAC OFFSET", {"0"}},
+
+	{"DAC VOLUME", {"191"}},
+
+	{"DRC ENABLE", {"0"}},
+
+	{"DRC WIN SIZE", {"0"}},
+
+	{"DRC MAX LEVEL", {"0"}},
+
+	{"DRC MIN LEVEL", {"0"}},
+
+	{"DAC RAMP RATE", {"4"}},
+
+	{"AEC MODE", {"adc left, adc right"}},
+
+	{"ADC DATA TO DAC TEST MODE", {"disable"}},
+
+	{"MCLK INVERT", {"0"}},
+
+	{"BCLK INVERT", {"0"}},
+
+	{"MCLK SOURCE", {"from mclk pin"}},
+
+	
+
+	{"DMIC MUX", {"DMIC DISABLE"}},
+
+	{"SDP OUT MUX", {"FROM ADC OUT"}},
+
+	{"DAC SDP SRC MUX", {"SELECT SDP LEFT DATA"}},
+
+
+
+
+
+	
+
 };
 
 
+
+static struct audio_para_conf  handset_inoutpath_para_voice[] = {  //对应于Hp输出通道Mic1lp_Mic1lm输入通道
+
+    {"MIC PGA GAIN", {"10"}},
+
+	{"ADC SCALE", {"1"}},
+
+	{"DMIC TYPE", {"dmic at high level"}},
+
+	{"ADC RAMP RATE", {"4"}},
+
+	{"ADC SDP MUTE", {"0"}},
+
+	{"ADC INVERTED", {"0"}},
+
+	{"ADC SYNC", {"0"}},
+
+	{"ADC RAM CLR", {"0"}},
+
+	{"ADC VOLUME", {"191"}},
+
+	{"ALC ENABLE", {"0"}},
+
+	{"ALC AUTOMUTE TYPE", {"automute disabled"}},
+
+	{"ALC WIN SIZE", {"0"}},
+
+	{"ALC MAX LEVEL", {"0"}},
+
+	{"ALC MIN LEVEL", {"0"}},
+
+	{"ALC AUTOMUTE WINSIZE", {"0"}},
+
+	{"ALC AUTOMUTE GATE THRESHOLD", {"0"}},
+
+	{"ALC AUTOMUTE VOLUME", {"0"}},
+
+	{"ADC FS MODE", {"0"}},
+
+	{"DAC SDP MUTE", {"0"}},
+
+	{"DAC DEM  MUTE", {"0"}},
+
+	{"DAC INVERT", {"0"}},
+
+	{"DAC RAM CLR", {"0"}},
+
+	{"DAC DSM MUTE", {"mute to 8"}},
+
+	{"DAC OFFSET", {"0"}},
+
+	{"DAC VOLUME", {"191"}},
+
+	{"DRC ENABLE", {"0"}},
+
+	{"DRC WIN SIZE", {"0"}},
+
+	{"DRC MAX LEVEL", {"0"}},
+
+	{"DRC MIN LEVEL", {"0"}},
+
+	{"DAC RAMP RATE", {"4"}},
+
+	{"AEC MODE", {"adc left, adc right"}},
+
+	{"ADC DATA TO DAC TEST MODE", {"disable"}},
+
+	{"MCLK INVERT", {"0"}},
+
+	{"BCLK INVERT", {"0"}},
+
+	{"MCLK SOURCE", {"from mclk pin"}},
+
+	
+
+	{"DMIC MUX", {"DMIC DISABLE"}},
+
+	{"SDP OUT MUX", {"FROM ADC OUT"}},
+
+	{"DAC SDP SRC MUX", {"SELECT SDP LEFT DATA"}},
+
+
+
+
+
+	
+
+};
+
+
+
+static struct audio_para_conf  headset_inoutpath_para_voice[] = {  //对应于Hp输出通道 Mic1rp输入通道
+
+      {"MIC PGA GAIN", {"10"}},
+
+	{"ADC SCALE", {"1"}},
+
+	{"DMIC TYPE", {"dmic at high level"}},
+
+	{"ADC RAMP RATE", {"4"}},
+
+	{"ADC SDP MUTE", {"0"}},
+
+	{"ADC INVERTED", {"0"}},
+
+	{"ADC SYNC", {"0"}},
+
+	{"ADC RAM CLR", {"0"}},
+
+	{"ADC VOLUME", {"191"}},
+
+	{"ALC ENABLE", {"0"}},
+
+	{"ALC AUTOMUTE TYPE", {"automute disabled"}},
+
+	{"ALC WIN SIZE", {"0"}},
+
+	{"ALC MAX LEVEL", {"0"}},
+
+	{"ALC MIN LEVEL", {"0"}},
+
+	{"ALC AUTOMUTE WINSIZE", {"0"}},
+
+	{"ALC AUTOMUTE GATE THRESHOLD", {"0"}},
+
+	{"ALC AUTOMUTE VOLUME", {"0"}},
+
+	{"ADC FS MODE", {"0"}},
+
+	{"DAC SDP MUTE", {"0"}},
+
+	{"DAC DEM  MUTE", {"0"}},
+
+	{"DAC INVERT", {"0"}},
+
+	{"DAC RAM CLR", {"0"}},
+
+	{"DAC DSM MUTE", {"mute to 8"}},
+
+	{"DAC OFFSET", {"0"}},
+
+	{"DAC VOLUME", {"191"}},
+
+	{"DRC ENABLE", {"0"}},
+
+	{"DRC WIN SIZE", {"0"}},
+
+	{"DRC MAX LEVEL", {"0"}},
+
+	{"DRC MIN LEVEL", {"0"}},
+
+	{"DAC RAMP RATE", {"4"}},
+
+	{"AEC MODE", {"adc left, adc right"}},
+
+	{"ADC DATA TO DAC TEST MODE", {"disable"}},
+
+	{"MCLK INVERT", {"0"}},
+
+	{"BCLK INVERT", {"0"}},
+
+	{"MCLK SOURCE", {"from mclk pin"}},
+
+	
+
+	{"DMIC MUX", {"DMIC DISABLE"}},
+
+	{"SDP OUT MUX", {"FROM ADC OUT"}},
+
+	{"DAC SDP SRC MUX", {"SELECT SDP LEFT DATA"}},
+
+};
+
+
+
+static struct audio_para_conf  spk_inoutpath_para_voice[] = { //对应于Spk输出通道Mic1lp_Mic1lm输入通道
+
+
+
+     {"MIC PGA GAIN", {"10"}},
+
+	{"ADC SCALE", {"1"}},
+
+	{"DMIC TYPE", {"dmic at high level"}},
+
+	{"ADC RAMP RATE", {"4"}},
+
+	{"ADC SDP MUTE", {"0"}},
+
+	{"ADC INVERTED", {"0"}},
+
+	{"ADC SYNC", {"0"}},
+
+	{"ADC RAM CLR", {"0"}},
+
+	{"ADC VOLUME", {"191"}},
+
+	{"ALC ENABLE", {"0"}},
+
+	{"ALC AUTOMUTE TYPE", {"automute disabled"}},
+
+	{"ALC WIN SIZE", {"0"}},
+
+	{"ALC MAX LEVEL", {"0"}},
+
+	{"ALC MIN LEVEL", {"0"}},
+
+	{"ALC AUTOMUTE WINSIZE", {"0"}},
+
+	{"ALC AUTOMUTE GATE THRESHOLD", {"0"}},
+
+	{"ALC AUTOMUTE VOLUME", {"0"}},
+
+	{"ADC FS MODE", {"0"}},
+
+	{"DAC SDP MUTE", {"0"}},
+
+	{"DAC DEM  MUTE", {"0"}},
+
+	{"DAC INVERT", {"0"}},
+
+	{"DAC RAM CLR", {"0"}},
+
+	{"DAC DSM MUTE", {"mute to 8"}},
+
+	{"DAC OFFSET", {"0"}},
+
+	{"DAC VOLUME", {"191"}},
+
+	{"DRC ENABLE", {"0"}},
+
+	{"DRC WIN SIZE", {"0"}},
+
+	{"DRC MAX LEVEL", {"0"}},
+
+	{"DRC MIN LEVEL", {"0"}},
+
+	{"DAC RAMP RATE", {"4"}},
+
+	{"AEC MODE", {"adc left, adc right"}},
+
+	{"ADC DATA TO DAC TEST MODE", {"disable"}},
+
+	{"MCLK INVERT", {"0"}},
+
+	{"BCLK INVERT", {"0"}},
+
+	{"MCLK SOURCE", {"from mclk pin"}},
+
+	
+
+	{"DMIC MUX", {"DMIC DISABLE"}},
+
+	{"SDP OUT MUX", {"FROM ADC OUT"}},
+
+	{"DAC SDP SRC MUX", {"SELECT SDP LEFT DATA"}},
+
+};
+
+
+
+
+
 static struct audio_para_conf output_dac_vol = {
-	"Playback Volume", {"255"}
+
+	//"Playback Volume", {"255"}
+
+	{"DAC VOLUME", {"191"}},
+
+
+
 	
+
 };
 
+
+
 static struct audio_para_conf input_adc_vol = {
-	"Capture Volume", {"255"}
+
+	//"Capture Volume", {"255"}
+
+	{"ADC VOLUME", {"191"}},
+
+
+
 };
 
+
+
 static struct audio_para_conf dac_mute = {
-	"DAC MUTE", {"1"}
+
+	//"DAC MUTE", {"1"}
+
+	{"DAC SDP MUTE", {"0"}},
+
+	{"DAC DEM  MUTE", {"0"}},
+
+
+
+
+
 };
+
 static struct audio_para_conf adc_mute = {
-	"Input Boost Stage PGA Mute Switch", {"0"}
+
+	//"Input Boost Stage PGA Mute Switch", {"0"}
+
+	{"ADC SDP MUTE", {"0"}},
+
+
+
+	
+
 };
 
+
+
 static struct audio_para_conf spk_path_onoff[] = {
-	{"Mono Mixer PCM Playback Switch", {"0"}},
+
+	//{"Mono Mixer PCM Playback Switch", {"0"}},
+
+	{"DAC SDP MUTE", {"0"}},
+
+	{"DAC DEM  MUTE", {"0"}},
+
+
+
+
+
 };
 
+
+
 static struct audio_para_conf rcv_path_onoff[] = {
-	{"Mono Mixer PCM Playback Switch", {"0"}},
+
+	//{"Mono Mixer PCM Playback Switch", {"0"}},
+
+	{"ADC SDP MUTE", {"0"}},
+
+
+
 };
 
+
+
 static struct audio_para_conf earp_path_onoff[] = {
-	{"Speaker Mixer PCM Playback Switch", {"0"}},
+
+	//{"Speaker Mixer PCM Playback Switch", {"0"}},
+
+	{"DAC SDP MUTE", {"0"}},
+
+	{"DAC DEM  MUTE", {"0"}},
+
 };
 
 
+
+
+
 static int output_vol_conversion(int vol)
+
 {
+
 	return 255;
 
+
+
 }
+
 static int input_vol_conversion(int vol)
+
 {
+
 	return 255;
 
+
+
+}
+
+ 
+
+#elif defined _USE_CODEC_ES8374
+
+
+
+
+
+enum t_output_vol {
+
+    T_OUTPUT_VOL_MINUS_96DB = 0,
+
+	T_OUTPUT_VOL_MINUS_95DB = 2,
+
+	T_OUTPUT_VOL_MINUS_90DB = 12,
+
+	T_OUTPUT_VOL_MINUS_85DB = 22,
+
+    T_OUTPUT_VOL_MINUS_80DB = 32,
+
+    T_OUTPUT_VOL_MINUS_75DB = 42,
+
+    T_OUTPUT_VOL_MINUS_70DB = 52,
+
+    T_OUTPUT_VOL_MINUS_65DB = 62,
+
+    T_OUTPUT_VOL_MINUS_60DB = 72,
+
+    T_OUTPUT_VOL_MINUS_55DB = 82,
+
+    T_OUTPUT_VOL_MINUS_50DB = 92,
+
+    T_OUTPUT_VOL_MINUS_45DB = 102,
+
+    T_OUTPUT_VOL_MINUS_40DB = 112,
+
+    T_OUTPUT_VOL_MINUS_35DB = 122,
+
+    T_OUTPUT_VOL_MINUS_30DB = 132,
+
+    T_OUTPUT_VOL_MINUS_25DB = 142,
+
+    T_OUTPUT_VOL_MINUS_20DB = 152,
+
+    T_OUTPUT_VOL_MINUS_15DB = 162,
+
+    T_OUTPUT_VOL_MINUS_10DB = 172,
+
+    T_OUTPUT_VOL_MINUS_7DB  = 178,
+
+    T_OUTPUT_VOL_MINUS_6DB  = 180,
+
+    T_OUTPUT_VOL_MINUS_5DB  = 182,
+
+    T_OUTPUT_VOL_MINUS_4DB  = 184,
+
+    T_OUTPUT_VOL_MINUS_3DB  = 186,
+
+    T_OUTPUT_VOL_MINUS_2DB  = 188,
+
+    T_OUTPUT_VOL_MINUS_1DB  = 190,
+
+    T_OUTPUT_VOL_0DB        = 192
+
+};
+
+
+
+enum t_input_vol {
+
+    T_INPUT_VOL_MINUS_96DB = 0,
+
+	T_INPUT_VOL_MINUS_95DB = 2,
+
+	T_INPUT_VOL_MINUS_90DB = 12,
+
+	T_INPUT_VOL_MINUS_85DB = 22,
+
+    T_INPUT_VOL_MINUS_80DB = 32,
+
+    T_INPUT_VOL_MINUS_75DB = 42,
+
+    T_INPUT_VOL_MINUS_70DB = 52,
+
+    T_INPUT_VOL_MINUS_65DB = 62,
+
+    T_INPUT_VOL_MINUS_60DB = 72,
+
+    T_INPUT_VOL_MINUS_55DB = 82,
+
+    T_INPUT_VOL_MINUS_50DB = 92,
+
+    T_INPUT_VOL_MINUS_45DB = 102,
+
+    T_INPUT_VOL_MINUS_40DB = 112,
+
+    T_INPUT_VOL_MINUS_35DB = 122,
+
+    T_INPUT_VOL_MINUS_30DB = 132,
+
+    T_INPUT_VOL_MINUS_25DB = 142,
+
+    T_INPUT_VOL_MINUS_20DB = 152,
+
+    T_INPUT_VOL_MINUS_15DB = 162,
+
+    T_INPUT_VOL_MINUS_10DB = 172,
+
+    T_INPUT_VOL_MINUS_7DB  = 178,
+
+    T_INPUT_VOL_MINUS_6DB  = 180,
+
+    T_INPUT_VOL_MINUS_5DB  = 182,
+
+    T_INPUT_VOL_MINUS_4DB  = 184,
+
+    T_INPUT_VOL_MINUS_3DB  = 186,
+
+    T_INPUT_VOL_MINUS_2DB  = 188,
+
+    T_INPUT_VOL_MINUS_1DB  = 190,
+
+    T_INPUT_VOL_0DB        = 192
+
+};
+
+
+
+
+
+static struct audio_para_conf init_default_para[] = {  //开机初始化调用
+
+	{"DMIC MUX", {"0"}},	
+
+	{"SDP OUT MUX", {"0"}},
+
+	{"ALC MUX", {"0"}},	
+
+	{"D2SE MIC BOOST GAIN", {"1"}},
+
+	{"LIN PGA GAIN", {"6"}},	
+
+	{"ADC Capture Volume", {"192"}},	
+
+	{"ALC Capture Max PGA", {"15"}},
+
+	{"DAC MUTE", {"0"}},  	  
+
+	{"DAC Playback Volume", {"120"}},	
+
+	{"DAC SDP SRC MUX",  {"0"}},  
+
+	{"DAC SRC MUX",  {"0"}} 
+
+};
+
+
+
+//#ifdef  _USE_7520V3_PHONE_TYPE_C31F
+
+#if ( defined _USE_7520V3_PHONE_TYPE_C31F || defined _USE_7520V3_PHONE_TYPE_WTWD )
+
+
+
+static struct audio_para_conf  common_out_para_audio[] = {  //对应公共部分
+
+	{"DAC MUTE", {"0"}},  	  
+
+	//{"DAC Playback Volume", {"120"}},	
+
+	{"DAC SDP SRC MUX",  {"0"}},  
+
+	{"DAC SRC MUX",  {"0"}} 
+
+};
+
+
+
+static struct audio_para_conf  common_in_para_audio[] = {  //对应公共部分
+
+	{"DMIC MUX", {"0"}},	
+
+	{"SDP OUT MUX", {"0"}},
+
+	{"ADC Soft Ramp", {"0"}},	
+
+	{"ADC HPF COEFFICIENT", {"5"}},
+
+#if 0	
+
+	{"ALC MUX", {"1"}},	
+
+	{"ALC Capture Target Volume", {"5"}},
+
+	{"ALC Capture Max PGA", {"11"}},
+
+	{"ALC Capture Min PGA", {"2"}},
+
+	{"ALC Capture Hold Time", {"0"}},
+
+	{"ALC Capture Decay Time", {"0"}},
+
+	{"ALC Capture Attack Time", {"0"}},
+
+	{"ALC WIN SIZE", {"6"}},
+
+	{"ALC Capture NG Threshold", {"14"}},
+
+	{"ALC Capture NG Type", {"0"}},
+
+	{"ALC Capture NG Switch", {"0"}},
+
+#endif
+
+	{"D2SE MIC BOOST GAIN", {"1"}},
+
+	{"LIN PGA GAIN", {"6"}},	
+
+	{"ADC Capture Volume", {"192"}},	
+
+};
+
+
+
+#ifdef _USE_7520V3_PHONE_TYPE_WTWD
+
+static struct audio_para_conf  hp_outpath_para_audio[] = {  //对应于Hp输出通道
+
+	{"MONO MIXER DAC TO MONO OUT Switch", {"0"}},
+
+	{"SPEAKER MIXER DAC TO SPEAKER OUT Switch", {"1"}}, 	
+
+	{"SPEAKER MIXER GAIN", {"41"}},		//1d	
+
+	{"SPEAKER OUTPUT Volume", {"0"}},	//1e
+
+	{"DAC Playback Volume", {"192"}}, //38
+
+};
+
+#else
+
+static struct audio_para_conf  hp_outpath_para_audio[] = {  //对应于Hp输出通道
+
+	{"SPEAKER MIXER DAC TO SPEAKER OUT Switch", {"0"}}, 		
+
+	{"MONO OUT GAIN", {"4"}},      
+
+	{"MONO MIXER DAC TO MONO OUT Switch", {"1"}},
+
+	{"audio path select",{"handset"}},
+
+};
+
+
+
+#endif
+
+/*
+
+static struct audio_para_conf  spk_outpath_para_audio[] = { //对应于Spk输出通道
+
+	{"MONO MIXER DAC TO MONO OUT Switch", {"0"}},	
+
+	{"SPEAKER MIXER GAIN", {"4"}},			
+
+	{"SPEAKER OUTPUT Volume", {"4"}},		
+
+	{"SPEAKER MIXER DAC TO SPEAKER OUT Switch", {"1"}} 	
+
+};
+
+*/
+
+
+
+static struct audio_para_conf  spk_outpath_para_audio[] = {  //对应于Spk输出通道
+
+	{"SPEAKER MIXER DAC TO SPEAKER OUT Switch", {"0"}}, 		
+
+	{"MONO OUT GAIN", {"11"}},      
+
+	{"MONO MIXER DAC TO MONO OUT Switch", {"1"}},
+
+	{"audio path select",{"speak"}},
+
+};
+
+
+
+static  struct  audio_para_conf  main_mic_inpath_para_audio[] = { //对应于Lin1-Rin1输入通道
+
+	{"DIFFERENTIAL MUX", {"1"}},
+
+};
+
+
+
+static  struct  audio_para_conf  aux_mic_inpath_para_audio[] = {//对应于Lin2-Rin2输入通道
+
+	{"DIFFERENTIAL MUX", {"2"}},	
+
+};
+
+
+
+#ifdef _USE_7520V3_PHONE_TYPE_WTWD
+
+
+
+static struct audio_para_conf  handset_inoutpath_para_voice[] = {  //对应于Hp输出通道Mic1lp_Mic1lm输入通道
+
+#ifndef USE_CAP_SUPPORT
+
+
+
+	//{"voice processing path select", {"headset"}},  // handset speak headset bluetooth
+
+	{"voice processing path select", {"handset"}},	// handset speak headset bluetooth
+
+#endif	
+
+	{"DIFFERENTIAL MUX", {"1"}},	
+
+	{"DMIC MUX", {"0"}},	
+
+	{"SDP OUT MUX", {"0"}},
+
+	{"ADC Soft Ramp", {"0"}},
+
+	{"ADC HPF COEFFICIENT", {"5"}},
+
+
+
+	{"ALC MUX", {"0"}}, 
+
+	{"D2SE MIC BOOST GAIN", {"1"}},
+
+	{"LIN PGA GAIN", {"6"}},	
+
+	{"ADC Capture Volume", {"192"}},	
+
+			
+
+	{"MONO MIXER DAC TO MONO OUT Switch", {"0"}},
+
+	{"SPEAKER MIXER DAC TO SPEAKER OUT Switch", {"1"}}, 	
+
+	{"SPEAKER MIXER GAIN", {"32"}},	//old 41		
+
+	{"SPEAKER OUTPUT Volume", {"0"}},	//1
+
+	{"DAC Playback Volume", {"192"}}, //38
+
+};
+
+
+
+#else
+
+static struct audio_para_conf  handset_inoutpath_para_voice[] = {  //对应于Hp输出通道Mic1lp_Mic1lm输入通道
+
+#ifndef USE_CAP_SUPPORT
+
+
+
+	{"voice processing path select", {"handset"}},  // handset speak headset bluetooth
+
+#endif	
+
+	{"DIFFERENTIAL MUX", {"1"}},	
+
+	{"DMIC MUX", {"0"}},	
+
+	{"SDP OUT MUX", {"0"}},
+
+	{"ADC Soft Ramp", {"0"}},
+
+	{"ADC HPF COEFFICIENT", {"5"}},
+
+
+
+	{"ALC MUX", {"0"}},	
+
+#if 0
+
+	{"ALC Capture Target Volume", {"7"}},
+
+	{"ALC Capture Max PGA", {"13"}},
+
+	{"ALC Capture Min PGA", {"8"}},
+
+	{"ALC Capture Hold Time", {"0"}},
+
+	{"ALC Capture Decay Time", {"1"}},
+
+	{"ALC Capture Attack Time", {"2"}},
+
+	{"ALC WIN SIZE", {"6"}},
+
+	{"ALC Capture NG Threshold", {"14"}},
+
+	{"ALC Capture NG Type", {"0"}},
+
+	{"ALC Capture NG Switch", {"0"}},
+
+#endif	
+
+	{"D2SE MIC BOOST GAIN", {"1"}},
+
+	{"LIN PGA GAIN", {"6"}},	
+
+	{"ADC Capture Volume", {"192"}},	
+
+	{"SPEAKER MIXER DAC TO SPEAKER OUT Switch", {"0"}}, 		
+
+	{"MONO OUT GAIN", {"11"}}, 
+
+    {"DAC Playback Volume", {"192"}}, 
+
+	{"MONO MIXER DAC TO MONO OUT Switch", {"1"}},
+
+};
+
+#endif
+
+static struct audio_para_conf  headset_inoutpath_para_voice[] = {  //对应于Hp输出通道 Mic1rp输入通道
+
+	{"DIFFERENTIAL MUX", {"1"}},	
+
+	{"DMIC MUX", {"0"}},	
+
+	{"SDP OUT MUX", {"0"}},
+
+	{"ADC Soft Ramp", {"0"}},
+
+	{"ADC HPF COEFFICIENT", {"5"}},
+
+
+
+	{"ALC MUX", {"0"}},	
+
+#if 0
+
+	{"ALC Capture Target Volume", {"7"}},
+
+	{"ALC Capture Max PGA", {"13"}},
+
+	{"ALC Capture Min PGA", {"8"}},
+
+	{"ALC Capture Hold Time", {"0"}},
+
+	{"ALC Capture Decay Time", {"1"}},
+
+	{"ALC Capture Attack Time", {"2"}},
+
+	{"ALC WIN SIZE", {"6"}},
+
+	{"ALC Capture NG Threshold", {"14"}},
+
+	{"ALC Capture NG Type", {"0"}},
+
+	{"ALC Capture NG Switch", {"0"}},
+
+#endif	
+
+	{"D2SE MIC BOOST GAIN", {"1"}},
+
+	{"LIN PGA GAIN", {"7"}},	
+
+	{"ADC Capture Volume", {"192"}},	
+
+	{"SPEAKER MIXER DAC TO SPEAKER OUT Switch", {"0"}}, 		
+
+	{"MONO OUT GAIN", {"4"}},
+
+	{"DAC Playback Volume", {"190"}},
+
+	{"MONO MIXER DAC TO MONO OUT Switch", {"1"}},
+
+#ifndef USE_CAP_SUPPORT        
+
+	{"voice processing select", {"headset"}}, // handset speak headset bluetooth
+
+#endif	
+
+};
+
+#ifdef _USE_7520V3_PHONE_TYPE_WTWD //class-d -->receiver
+
+static struct audio_para_conf  spk_inoutpath_para_voice[] = { //对应于Spk输出通道Mic1lp_Mic1lm输入通道
+
+	{"DIFFERENTIAL MUX", {"1"}},	
+
+	{"DMIC MUX", {"0"}},	
+
+	{"SDP OUT MUX", {"0"}},
+
+	{"ADC Soft Ramp", {"0"}},
+
+	{"ADC HPF COEFFICIENT", {"5"}},
+
+
+
+	{"ALC MUX", {"0"}},	
+
+#if 0	
+
+	{"ALC Capture Target Volume", {"7"}},
+
+	{"ALC Capture Max PGA", {"13"}},
+
+	{"ALC Capture Min PGA", {"8"}},
+
+	{"ALC Capture Hold Time", {"0"}},
+
+	{"ALC Capture Decay Time", {"1"}},
+
+	{"ALC Capture Attack Time", {"2"}},
+
+	{"ALC WIN SIZE", {"6"}},
+
+	{"ALC Capture NG Threshold", {"14"}},
+
+	{"ALC Capture NG Type", {"0"}},
+
+	{"ALC Capture NG Switch", {"0"}},
+
+#endif	
+
+	{"D2SE MIC BOOST GAIN", {"1"}},
+
+	{"LIN PGA GAIN", {"6"}},	
+
+	{"ADC Capture Volume", {"192"}},	
+
+	{"SPEAKER MIXER DAC TO SPEAKER OUT Switch", {"0"}},		
+
+	{"MONO OUT GAIN", {"4"}}, 
+
+	{"DAC Playback Volume", {"186"}},
+
+	{"MONO MIXER DAC TO MONO OUT Switch", {"1"}},
+
+#ifndef USE_CAP_SUPPORT        
+
+	{"voice processing path select", {"speak"}}, // handset speak headset bluetooth
+
+#endif	
+
+};
+
+#else//momo out -> speaker
+
+static struct audio_para_conf  spk_inoutpath_para_voice[] = { //对应于Spk输出通道Mic1lp_Mic1lm输入通道
+
+	{"DIFFERENTIAL MUX", {"1"}},	
+
+	{"DMIC MUX", {"0"}},	
+
+	{"SDP OUT MUX", {"0"}},
+
+	{"ADC Soft Ramp", {"0"}},
+
+	{"ADC HPF COEFFICIENT", {"5"}},
+
+
+
+	{"ALC MUX", {"0"}},	
+
+#if 0	
+
+	{"ALC Capture Target Volume", {"7"}},
+
+	{"ALC Capture Max PGA", {"13"}},
+
+	{"ALC Capture Min PGA", {"8"}},
+
+	{"ALC Capture Hold Time", {"0"}},
+
+	{"ALC Capture Decay Time", {"1"}},
+
+	{"ALC Capture Attack Time", {"2"}},
+
+	{"ALC WIN SIZE", {"6"}},
+
+	{"ALC Capture NG Threshold", {"14"}},
+
+	{"ALC Capture NG Type", {"0"}},
+
+	{"ALC Capture NG Switch", {"0"}},
+
+#endif	
+
+	{"D2SE MIC BOOST GAIN", {"1"}},
+
+	{"LIN PGA GAIN", {"6"}},	
+
+	{"ADC Capture Volume", {"192"}},	
+
+	{"SPEAKER MIXER DAC TO SPEAKER OUT Switch", {"0"}},		
+
+	{"MONO OUT GAIN", {"0"}}, 
+
+	{"DAC Playback Volume", {"186"}},
+
+	{"MONO MIXER DAC TO MONO OUT Switch", {"1"}},
+
+#ifndef USE_CAP_SUPPORT        
+
+	{"voice processing path select", {"speak"}}, // handset speak headset bluetooth
+
+#endif	
+
+};
+
+
+
+#endif
+
+
+
+
+
+
+
+#else
+
+static struct audio_para_conf  common_out_para_audio[] = {  //对应公共部分
+
+	{"DAC MUTE", {"0"}},  	  
+
+	//{"DAC Playback Volume", {"120"}},	
+
+	{"DAC SDP SRC MUX",  {"0"}},  
+
+	{"DAC SRC MUX",  {"0"}} 
+
+};
+
+
+
+static struct audio_para_conf  common_in_para_audio[] = {  //对应公共部分
+
+	{"DMIC MUX", {"0"}},	
+
+	{"SDP OUT MUX", {"0"}},
+
+	{"ADC Soft Ramp", {"0"}},	
+
+	{"ADC HPF COEFFICIENT", {"5"}},
+
+#if 1	
+
+	{"ALC MUX", {"1"}},	
+
+	{"ALC Capture Target Volume", {"5"}},
+
+	{"ALC Capture Max PGA", {"11"}},
+
+	{"ALC Capture Min PGA", {"2"}},
+
+	{"ALC Capture Hold Time", {"0"}},
+
+	{"ALC Capture Decay Time", {"0"}},
+
+	{"ALC Capture Attack Time", {"0"}},
+
+	{"ALC WIN SIZE", {"6"}},
+
+	{"ALC Capture NG Threshold", {"14"}},
+
+	{"ALC Capture NG Type", {"0"}},
+
+	{"ALC Capture NG Switch", {"0"}},
+
+#endif
+
+	{"D2SE MIC BOOST GAIN", {"1"}},
+
+	{"LIN PGA GAIN", {"3"}},	
+
+	{"ADC Capture Volume", {"180"}},	
+
+};
+
+
+
+static struct audio_para_conf  hp_outpath_para_audio[] = {  //对应于Hp输出通道
+
+	{"SPEAKER MIXER DAC TO SPEAKER OUT Switch", {"0"}}, 		
+
+	{"MONO OUT GAIN", {"4"}},      
+
+	{"MONO MIXER DAC TO MONO OUT Switch", {"1"}}
+
+};
+
+
+
+/*
+
+static struct audio_para_conf  spk_outpath_para_audio[] = { //对应于Spk输出通道
+
+	{"MONO MIXER DAC TO MONO OUT Switch", {"0"}},	
+
+	{"SPEAKER MIXER GAIN", {"4"}},			
+
+	{"SPEAKER OUTPUT Volume", {"4"}},		
+
+	{"SPEAKER MIXER DAC TO SPEAKER OUT Switch", {"1"}} 	
+
+};
+
+*/
+
+
+
+static struct audio_para_conf  spk_outpath_para_audio[] = {  //对应于Spk输出通道
+
+	{"SPEAKER MIXER DAC TO SPEAKER OUT Switch", {"0"}}, 		
+
+	{"MONO OUT GAIN", {"3"}},      
+
+	{"MONO MIXER DAC TO MONO OUT Switch", {"1"}}
+
+};
+
+
+
+static  struct  audio_para_conf  main_mic_inpath_para_audio[] = { //对应于Lin1-Rin1输入通道
+
+	{"DIFFERENTIAL MUX", {"1"}},
+
+};
+
+
+
+static  struct  audio_para_conf  aux_mic_inpath_para_audio[] = {//对应于Lin2-Rin2输入通道
+
+	{"DIFFERENTIAL MUX", {"2"}},	
+
+};
+
+
+
+static struct audio_para_conf  handset_inoutpath_para_voice[] = {  //对应于Hp输出通道Mic1lp_Mic1lm输入通道
+
+	{"DIFFERENTIAL MUX", {"1"}},	
+
+	{"DMIC MUX", {"0"}},	
+
+	{"SDP OUT MUX", {"0"}},
+
+	{"ADC Soft Ramp", {"0"}},
+
+	{"ADC HPF COEFFICIENT", {"5"}},
+
+
+
+	{"ALC MUX", {"0"}},	
+
+#if 0
+
+	{"ALC Capture Target Volume", {"7"}},
+
+	{"ALC Capture Max PGA", {"13"}},
+
+	{"ALC Capture Min PGA", {"8"}},
+
+	{"ALC Capture Hold Time", {"0"}},
+
+	{"ALC Capture Decay Time", {"1"}},
+
+	{"ALC Capture Attack Time", {"2"}},
+
+	{"ALC WIN SIZE", {"6"}},
+
+	{"ALC Capture NG Threshold", {"14"}},
+
+	{"ALC Capture NG Type", {"0"}},
+
+	{"ALC Capture NG Switch", {"0"}},
+
+#endif	
+
+	{"D2SE MIC BOOST GAIN", {"1"}},
+
+	{"LIN PGA GAIN", {"7"}},	
+
+	{"ADC Capture Volume", {"192"}},	
+
+	{"SPEAKER MIXER DAC TO SPEAKER OUT Switch", {"0"}}, 		
+
+	{"MONO OUT GAIN", {"4"}}, 
+
+    {"DAC Playback Volume", {"190"}}, 
+
+	{"MONO MIXER DAC TO MONO OUT Switch", {"1"}},
+
+#ifndef USE_CAP_SUPPORT        
+
+	{"voice processing path select", {"handset"}},  // handset speak headset bluetooth
+
+#endif	
+
+};
+
+
+
+static struct audio_para_conf  headset_inoutpath_para_voice[] = {  //对应于Hp输出通道 Mic1rp输入通道
+
+	{"DIFFERENTIAL MUX", {"1"}},	
+
+	{"DMIC MUX", {"0"}},	
+
+	{"SDP OUT MUX", {"0"}},
+
+	{"ADC Soft Ramp", {"0"}},
+
+	{"ADC HPF COEFFICIENT", {"5"}},
+
+
+
+	{"ALC MUX", {"0"}},	
+
+#if 0
+
+	{"ALC Capture Target Volume", {"7"}},
+
+	{"ALC Capture Max PGA", {"13"}},
+
+	{"ALC Capture Min PGA", {"8"}},
+
+	{"ALC Capture Hold Time", {"0"}},
+
+	{"ALC Capture Decay Time", {"1"}},
+
+	{"ALC Capture Attack Time", {"2"}},
+
+	{"ALC WIN SIZE", {"6"}},
+
+	{"ALC Capture NG Threshold", {"14"}},
+
+	{"ALC Capture NG Type", {"0"}},
+
+	{"ALC Capture NG Switch", {"0"}},
+
+#endif	
+
+	{"D2SE MIC BOOST GAIN", {"1"}},
+
+	{"LIN PGA GAIN", {"7"}},	
+
+	{"ADC Capture Volume", {"192"}},	
+
+	{"SPEAKER MIXER DAC TO SPEAKER OUT Switch", {"0"}}, 		
+
+	{"MONO OUT GAIN", {"4"}},
+
+	{"DAC Playback Volume", {"190"}},
+
+	{"MONO MIXER DAC TO MONO OUT Switch", {"1"}},
+
+#ifndef USE_CAP_SUPPORT        
+
+	{"voice processing select", {"headset"}}, // handset speak headset bluetooth
+
+#endif	
+
+};
+
+
+
+static struct audio_para_conf  spk_inoutpath_para_voice[] = { //对应于Spk输出通道Mic1lp_Mic1lm输入通道
+
+	{"DIFFERENTIAL MUX", {"1"}},	
+
+	{"DMIC MUX", {"0"}},	
+
+	{"SDP OUT MUX", {"0"}},
+
+	{"ADC Soft Ramp", {"0"}},
+
+	{"ADC HPF COEFFICIENT", {"5"}},
+
+
+
+	{"ALC MUX", {"0"}},	
+
+#if 0	
+
+	{"ALC Capture Target Volume", {"7"}},
+
+	{"ALC Capture Max PGA", {"13"}},
+
+	{"ALC Capture Min PGA", {"8"}},
+
+	{"ALC Capture Hold Time", {"0"}},
+
+	{"ALC Capture Decay Time", {"1"}},
+
+	{"ALC Capture Attack Time", {"2"}},
+
+	{"ALC WIN SIZE", {"6"}},
+
+	{"ALC Capture NG Threshold", {"14"}},
+
+	{"ALC Capture NG Type", {"0"}},
+
+	{"ALC Capture NG Switch", {"0"}},
+
+#endif	
+
+	{"D2SE MIC BOOST GAIN", {"1"}},
+
+	{"LIN PGA GAIN", {"7"}},	
+
+	{"ADC Capture Volume", {"192"}},	
+
+	{"SPEAKER MIXER DAC TO SPEAKER OUT Switch", {"0"}},		
+
+	{"MONO OUT GAIN", {"4"}}, 
+
+	{"DAC Playback Volume", {"190"}},
+
+	{"MONO MIXER DAC TO MONO OUT Switch", {"1"}},
+
+#ifndef USE_CAP_SUPPORT        
+
+	{"voice processing path select", {"speak"}}, // handset speak headset bluetooth
+
+#endif	
+
+};
+
+
+
+#endif
+
+
+
+static struct audio_para_conf output_dac_vol = {"DAC Playback Volume", {"120"}};
+
+
+
+static struct audio_para_conf input_adc_vol = {"ADC Capture Volume", {"192"}};
+
+
+
+static struct audio_para_conf dac_mute = {"DAC MUTE", {"1"}};
+
+static struct audio_para_conf adc_mute = {"ADC MUTE", {"1"}};
+
+
+
+static struct audio_para_conf spk_path_onoff[] = {
+
+	{"MONO MIXER DAC TO MONO OUT Switch", {"0"}},
+
+};
+
+
+
+static struct audio_para_conf rcv_path_onoff[] = {
+
+	{"MONO MIXER DAC TO MONO OUT Switch", {"0"}},
+
+};
+
+
+
+static struct audio_para_conf earp_path_onoff[] = {
+
+	{"MONO MIXER DAC TO MONO OUT Switch", {"0"}},
+
+};
+
+
+
+
+
+static int output_vol_conversion(int vol)
+
+{
+
+	switch(vol){
+
+	case T_AUDIO_OUTPUT_VOL_LEVEL_0:
+
+		return T_OUTPUT_VOL_MINUS_96DB;
+
+	case T_AUDIO_OUTPUT_VOL_LEVEL_1:
+
+		return T_OUTPUT_VOL_MINUS_45DB;
+
+	case T_AUDIO_OUTPUT_VOL_LEVEL_2:
+
+		return T_OUTPUT_VOL_MINUS_40DB;
+
+	case T_AUDIO_OUTPUT_VOL_LEVEL_3:
+
+		return T_OUTPUT_VOL_MINUS_35DB;
+
+	case T_AUDIO_OUTPUT_VOL_LEVEL_4:
+
+		return T_OUTPUT_VOL_MINUS_30DB;
+
+	case T_AUDIO_OUTPUT_VOL_LEVEL_5:
+
+		return T_OUTPUT_VOL_MINUS_25DB;
+
+	case T_AUDIO_OUTPUT_VOL_LEVEL_6:
+
+		return T_OUTPUT_VOL_MINUS_20DB;
+
+	case T_AUDIO_OUTPUT_VOL_LEVEL_7:
+
+		return T_OUTPUT_VOL_MINUS_15DB;
+
+	case T_AUDIO_OUTPUT_VOL_LEVEL_8:
+
+		return T_OUTPUT_VOL_MINUS_10DB;
+
+	case T_AUDIO_OUTPUT_VOL_LEVEL_9:
+
+		return T_OUTPUT_VOL_MINUS_6DB;
+
+	case T_AUDIO_OUTPUT_VOL_LEVEL_10:
+
+		return T_OUTPUT_VOL_MINUS_3DB;
+
+	case T_AUDIO_OUTPUT_VOL_LEVEL_11:
+
+		return T_OUTPUT_VOL_0DB;
+
+	default:
+
+		return T_OUTPUT_VOL_0DB;
+
+	}
+
 }
 
 
 
+static int input_vol_conversion(int vol)
 
-#else //default
+{
+
+	switch(vol) {
+
+	case T_AUDIO_INPUT_VOL_LEVEL_0:
+
+		return T_INPUT_VOL_MINUS_96DB;
+
+	case T_AUDIO_INPUT_VOL_LEVEL_1:
+
+		return T_INPUT_VOL_MINUS_30DB;
+
+	case T_AUDIO_INPUT_VOL_LEVEL_2:
+
+		return T_INPUT_VOL_MINUS_25DB;
+
+	case T_AUDIO_INPUT_VOL_LEVEL_3:
+
+		return T_INPUT_VOL_MINUS_20DB;
+
+	case T_AUDIO_INPUT_VOL_LEVEL_4:
+
+		return T_INPUT_VOL_MINUS_15DB;
+
+	case T_AUDIO_INPUT_VOL_LEVEL_5:
+
+		return T_INPUT_VOL_MINUS_10DB;
+
+	case T_AUDIO_INPUT_VOL_LEVEL_6:
+
+		return T_INPUT_VOL_MINUS_7DB;
+
+	case T_AUDIO_INPUT_VOL_LEVEL_7:
+
+		return T_INPUT_VOL_MINUS_4DB;
+
+	case T_AUDIO_INPUT_VOL_LEVEL_8:
+
+		return T_INPUT_VOL_MINUS_3DB;
+
+	case T_AUDIO_INPUT_VOL_LEVEL_9:
+
+		return T_INPUT_VOL_MINUS_2DB;
+
+	case T_AUDIO_INPUT_VOL_LEVEL_10:
+
+		return T_INPUT_VOL_MINUS_1DB;
+
+	case T_AUDIO_INPUT_VOL_LEVEL_11:
+
+		return T_INPUT_VOL_0DB;
+
+	default:
+
+		return T_INPUT_VOL_MINUS_30DB;
+
+	}
+
+}
+
+
+
+#elif defined _USE_CODEC_AK4940
+
+
+
+static struct audio_para_conf  common_out_para_audio[] = {  //对应公共部分
+
+    {"DAC Soft Mute Control", {"0"}},
+
+    //{"BICK Frequency", {"32fs"}},    
+
+    {"BICK Frequency", {"2"}},//0 64fs,1 48fs,2 32fs
+
+
+
+};
+
+	
+
+
+
+static struct audio_para_conf  common_in_para_audio[] = {  //对应公共部分
+
+
+
+		{"Mic Gain Control", {"0"}},
+
+		{"ADC Digital Volume (VOLAD)", {"195"}},
+
+		{"ADC Soft Mute Control", {"0"}},
+
+		
+
+
+
+};
+
+
+
+static struct audio_para_conf  hp_outpath_para_audio[] = {  //对应于Hp输出通道
+
+	{"OUT2 MUX", {"DAC"}},
+
+	{"Lineout Type", {"Single-end"}},
+
+
+
+};
+
+
+
+static struct audio_para_conf  spk_outpath_para_audio[] = { //对应于Spk输出通道
+
+	{"OUT1 MUX", {"DAC"}},
+
+	{"Lineout Type", {"Differential"}},
+
+
+
+};
+
+
+
+static  struct  audio_para_conf  main_mic_inpath_para_audio[] = { //对应于Mic1lp_Mic1lm输入通道
+
+
+
+		{"ADC Input Type", {"Single-end"}},
+
+		{"AIN MUX", {"AIN1"}},	
+
+
+
+};
+
+
+
+static  struct  audio_para_conf  aux_mic_inpath_para_audio[] = {//对应于Mic1rp输入通道
+
+
+
+	{"ADC Input Type", {"Single-end"}},	
+
+	{"AIN MUX", {"AIN2"}},
+
+};
+
+
+
+static struct audio_para_conf  handset_inoutpath_para_voice[] = {  //对应于Hp输出通道Mic1lp_Mic1lm输入通道
+
+    // common in
+
+
+
+	{"Mic Gain Control", {"0"}},
+
+	{"ADC Digital Volume (VOLAD)", {"195"}},
+
+	{"ADC Soft Mute Control", {"0"}},
+
+    //diff in	
+
+	{"ADC Input Type", {"Single-end"}},
+
+	{"AIN MUX", {"AIN1"}},	
+
+
+
+    // common out
+
+
+
+    {"DAC Soft Mute Control", {"0"}},
+
+    //{"BICK Frequency", {"32fs"}},    
+
+    {"BICK Frequency", {"2"}},//0 64fs,1 48fs,2 32fs
+
+	//diff out
+
+
+
+	//voice
+
+#ifndef USE_CAP_SUPPORT
+
+
+
+	{"voice processing path select", {"handset"}},  // handset speak headset bluetooth
+
+#endif	
+
+};
+
+
+
+static struct audio_para_conf  headset_inoutpath_para_voice[] = {  //对应于Hp输出通道 Mic1rp输入通道
+
+    // common in
+
+
+
+	{"Mic Gain Control", {"0"}},
+
+	{"ADC Digital Volume (VOLAD)", {"195"}},
+
+	{"ADC Soft Mute Control", {"0"}},
+
+	//diff in
+
+	{"ADC Input Type", {"Single-end"}},	
+
+	{"AIN MUX", {"AIN2"}},	
+
+		// common out
+
+
+
+    {"DAC Soft Mute Control", {"0"}},
+
+    //{"BICK Frequency", {"32fs"}},	
+
+    {"BICK Frequency", {"2"}},//0 64fs,1 48fs,2 32fs
+
+	//diff out
+
+
+
+	{"OUT2 MUX", {"DAC"}},
+
+	{"Lineout Type", {"Single-end"}},
+
+	//voice
+
+#ifndef USE_CAP_SUPPORT
+
+
+
+	{"voice processing select", {"headset"}}, // handset speak headset bluetooth
+
+#endif	
+
+};
+
+
+
+static struct audio_para_conf  spk_inoutpath_para_voice[] = { //对应于Spk输出通道Mic1lp_Mic1lm输入通道
+
+
+
+    // common in
+
+    {"Mic Gain Control", {"0"}},
+
+	{"ADC Digital Volume (VOLAD)", {"195"}},
+
+	{"ADC Soft Mute Control", {"0"}},
+
+	//diff in
+
+	{"ADC Input Type", {"Single-end"}},
+
+	{"AIN MUX", {"AIN1"}},	
+
+    // common out		
+
+    {"DAC Soft Mute Control", {"0"}},
+
+    //{"BICK Frequency", {"32fs"}},    
+
+    {"BICK Frequency", {"2"}},//0 64fs,1 48fs,2 32fs
+
+	//diff out    
+
+	{"OUT1 MUX", {"DAC"}},
+
+	{"Lineout Type", {"Differential"}},
+
+	//voice
+
+#ifndef USE_CAP_SUPPORT
+
+
+
+	{"voice processing path select", {"speak"}}, // handset speak headset bluetooth
+
+#endif	
+
+};
+
+#else 
+
+
 
 static struct audio_para_conf init_default_para[] = { 
+
 };
 
+
+
 static struct audio_para_conf  common_out_para_audio[] = {  
 
+
+
 };
 
 
 
+
+
+
+
 static struct audio_para_conf  common_in_para_audio[] = { 
+
 };
 
+
+
 static struct audio_para_conf  hp_outpath_para_audio[] = { 
+
 };
 
 
+
+
+
 static struct audio_para_conf  spk_outpath_para_audio[] = {  
+
 };
 
+
+
 static  struct  audio_para_conf  main_mic_inpath_para_audio[] = { 
+
 };
 
+
+
 static  struct  audio_para_conf  aux_mic_inpath_para_audio[] = {
+
 };
 
+
+
 static struct audio_para_conf  handset_inoutpath_para_voice[] = { 
+
 	
+
 };
 
+
+
 static struct audio_para_conf  headset_inoutpath_para_voice[] = { 
+
 };
 
+
+
 static struct audio_para_conf  spk_inoutpath_para_voice[] = {
+
 };
 
+
+
 static struct audio_para_conf output_dac_vol = 	{};
 
+
+
 static struct audio_para_conf input_adc_vol = {};
 
+
+
 static struct audio_para_conf dac_mute = {};
+
 static struct audio_para_conf adc_mute = {};
 
+
+
 static struct audio_para_conf spk_path_onoff[] = {
+
 	
+
 };
+
 static struct audio_para_conf rcv_path_onoff[] = {
 
+
+
 };
+
 static struct audio_para_conf earp_path_onoff[] = {
 
+
+
 };
+
 static int output_vol_conversion(int vol)
+
 {
 
+
+
 	return 24;
+
 }
 
+
+
 static int input_vol_conversion(int vol)
+
 {
+
 	
+
 	return 24;
 
+
+
 }
 
 
+
+
+
 #endif
 
+
+
 static void mix_set_value_wrap(struct mixer *mixer, const char *control, char **values)
+
 {
+
 	struct mixer_ctl *ctl;
+
 	enum mixer_ctl_type type;
+
 	unsigned int num_ctl_values;
+
 	unsigned int i;
 
+
+
 	if (isdigit(control[0]))
+
 		ctl = mixer_get_ctl(mixer, atoi(control));
+
 	else
+
 		ctl = mixer_get_ctl_by_name(mixer, control);
 
+
+
 	if (!ctl) {
+
 		fprintf(stderr, "Invalid mixer control(%s)\n",control);
+
 		return;
+
 	}
 
+
+
 	type = mixer_ctl_get_type(ctl);
+
 	num_ctl_values = mixer_ctl_get_num_values(ctl);
 
+
+
 	if (isdigit(values[0][0])) {
 
+
+
 		for (i = 0; i < num_ctl_values; i++) {
+
 			if (mixer_ctl_set_value(ctl, i, atoi(values[i]))) {
+
 				fprintf(stderr, "Error: invalid value for index %d\n", i);
+
 				return;
+
 			}
+
 		}
 
+
+
 	} else {
+
 		if (type == MIXER_CTL_TYPE_ENUM) {
+
 			/*if (num_values != 1) {
+
 			    fprintf(stderr, "Enclose strings in quotes and try again\n");
+
 			    return;
+
 			}*/
+
 			if (mixer_ctl_set_enum_by_string(ctl, values[0]))
+
 				fprintf(stderr, "Error: invalid enum value\n");
+
 		} else {
+
 			fprintf(stderr, "Error: only enum types can be set with strings\n");
+
 		}
+
 	}
+
 }
 
+
+
 static void mix_get_value_wrap(struct mixer *mixer, const char *control, int *values)
+
 {
+
 	struct mixer_ctl *ctl;
+
 	enum mixer_ctl_type type;
+
 	unsigned int num_ctl_values;
+
 	unsigned int i;
+
 	int val;
 
+
+
 	if (isdigit(control[0]))
+
 		ctl = mixer_get_ctl(mixer, atoi(control));
+
 	else
+
 		ctl = mixer_get_ctl_by_name(mixer, control);
 
+
+
 	if (!ctl) {
+
 		fprintf(stderr, "Invalid mixer control(%s)\n",control);
+
 		return;
+
 	}
 
+
+
 	type = mixer_ctl_get_type(ctl);
+
 	num_ctl_values = mixer_ctl_get_num_values(ctl);
 
 
+
+
+
 	for (i = 0; i < num_ctl_values; i++) {
+
 		val = mixer_ctl_get_value(ctl, i);
+
 		if (val == -EINVAL) {
+
 			fprintf(stderr, "Error: invalid value for index %d\n", i);
+
 			return;
+
 		}
+
 		*(values+i) = val;
+
 	}
 
+
+
 }
 
 
-#if (defined _USE_CODEC_TI3100)||(defined _USE_CODEC_AK4940)||(defined _USE_CODEC_NAU8810)
+
+
+
+#if (defined _USE_CODEC_TI3100)||(defined _USE_CODEC_AK4940)||(defined _USE_CODEC_ES8311)
+
 /*
+
 int mix_set_input_vol(struct mixer *mixer, int volume)
+
 {
+
 	struct mixer_ctl *ctl;
+
 	char *name = input_adc_vol.control;
+
 	int num_values, i;
+
 	int vol = input_vol_conversion(volume);
 
+
+
 	ctl = mixer_get_ctl_by_name(mixer, name);
+
 	if (!ctl) {
+
 		fprintf(stderr, "Invalid mixer control\n");
+
 		return -1;
+
 	}
 
+
+
     num_values = mixer_ctl_get_num_values(ctl);
 
+
+
     for (i = 0; i < num_values; i++) {
+
 		mixer_ctl_set_value(ctl, i, vol);
+
     }
 
+
+
 	return 0;
+
 }
 
+
+
 int mix_set_output_vol(struct mixer *mixer, int volume)
+
 {
+
 	struct mixer_ctl *ctl;
+
 	char *name = output_dac_vol.control;
+
 	int num_values, i;
 
+
+
 	int vol = output_vol_conversion(volume);
 
+
+
 	ctl = mixer_get_ctl_by_name(mixer, name);
+
 	if (!ctl) {
+
 		fprintf(stderr, "Invalid mixer control\n");
+
 		return -1;
+
 	}
 
+
+
 	num_values = mixer_ctl_get_num_values(ctl);
 
+
+
     for (i = 0; i < num_values; i++) {
+
 		mixer_ctl_set_value(ctl, i, vol);
+
     }
 
+
+
 	return 0;
+
 }
 
+
+
 int mix_set_output_mute(struct mixer *mixer, bool enable)
+
 {
+
 	struct mixer_ctl *ctl;
+
 	char *name = dac_mute.control; 
+
 	int num_values, i;
 
+
+
 	ctl = mixer_get_ctl_by_name(mixer, name);
+
 	if (!ctl) {
+
 		fprintf(stderr, "Invalid mixer control\n");
+
 		return -1;
+
 	}
 
+
+
 	num_values = mixer_ctl_get_num_values(ctl);
 
+
+
     for (i = 0; i < num_values; i++) {
+
 		mixer_ctl_set_value(ctl, i, enable);
+
     }
 
+
+
 	return 0;
+
 }
 
+
+
 int mix_set_input_mute(struct mixer *mixer, bool enable)
+
 {
+
 	struct mixer_ctl *ctl;
+
 	char *name = adc_mute.control;
+
 	ctl = mixer_get_ctl_by_name(mixer, name);
+
 	int num_values, i;
 
+
+
 	if (!ctl) {
+
 		fprintf(stderr, "Invalid mixer control\n");
+
 		return -1;
+
 	}
 
+
+
 	num_values = mixer_ctl_get_num_values(ctl);
 
+
+
     for (i = 0; i < num_values; i++) {
+
 		mixer_ctl_set_value(ctl, 0, enable);
+
     }
+
 		
+
 	return 0;
+
 }
 
+
+
 int mix_set_outputpath_onoff(struct mixer *mixer, int path ,bool onoff)
+
 {
+
 	struct mixer_ctl *ctl;
+
 	struct audio_para_conf *path_para;
+
 	int i, j, num_values, size;
+
 	switch(path) {
+
 	case T_OUTPUT_RECEIVER:
+
 		size = ARRAY_SIZE(rcv_path_onoff);
+
 		path_para = rcv_path_onoff;
+
 		break;
+
 	case T_OUTPUT_SPEAKER:
+
 		size = ARRAY_SIZE(spk_path_onoff);
+
 		path_para = spk_path_onoff;
+
 		break;
+
 	case T_OUTPUT_HEADSET:
+
 		size = ARRAY_SIZE(earp_path_onoff);
+
 		path_para = earp_path_onoff;
+
 		break;
+
 	default:
+
 		return -1;
+
 	}
 
+
+
 	for (i = 0; i < size; i++) {
+
 		ctl = mixer_get_ctl_by_name(mixer, path_para[i].control);
+
 		num_values = mixer_ctl_get_num_values(ctl);
 
+
+
 	    for (j = 0; j < num_values; j++) {
+
 			mixer_ctl_set_value(ctl, j, onoff);
+
 	    }
 
+
+
 //		mix_set_value_wrap(mixer, spk_path_onoff[i].control, spk_path_onoff[i].values);
+
     }
 
+
+
 	return 0;
+
 }
+
 */
 
+
+
 /*
 
+
+
 int mix_set_in_call_tone(struct mixer *mixer, int tontype)
+
 {
+
 	struct mixer_ctl *ctl;
+
 	char name[] = "voice tone sel";
+
 	ctl = mixer_get_ctl_by_name(mixer, name);
+
 	if (!ctl) {
+
 		fprintf(stderr, "Invalid mixer control\n");
+
 		return -1;
+
 	}
 
+
+
 	mixer_ctl_set_value(ctl, 0, tontype);
 
+
+
 	return 0;
+
 }
 
+
+
 int mix_set_default_param(struct mixer *mixer) 
+
 {
+
 	int i;
+
 	for (i = 0; i < ARRAY_SIZE(init_default_para); i++) {
+
 		mix_set_value_wrap(mixer, init_default_para[i].control, init_default_para[i].values);
+
 	}
+
 	
+
 	return 0;
+
 }
 
+
+
 */
 
+
+
 #define VOCIE_SND_CARD_NUM 0
 
+
+
 int mix_set_input_vol(struct mixer *mixer, int volume)
+
 {
+
 	struct mixer_ctl *ctl;
+
 	char *name = input_adc_vol.control;
+
 	int num_values, i;
+
 	int vol = input_vol_conversion(volume);
-    if(name == NULL){
-		printf("%s: name is null,return!\n",__func__);
-		return 0;
+
+
+
+	ctl = mixer_get_ctl_by_name(mixer, name);
+
+	if (!ctl) {
+
+		fprintf(stderr, "Invalid mixer control\n");
+
+		return -1;
 
 	}
-	ctl = mixer_get_ctl_by_name(mixer, name);
-	if (!ctl) {
-		fprintf(stderr, "Invalid mixer control\n");
-		return -1;
-	}
+
+
 
     num_values = mixer_ctl_get_num_values(ctl);
 
+
+
     for (i = 0; i < num_values; i++) {
+
 		mixer_ctl_set_value(ctl, i, vol);
+
     }
 
+
+
 	return 0;
+
 }
 
+
+
 int mix_set_output_vol(struct mixer *mixer, int volume)
+
 {
+
 	struct mixer_ctl *ctl;
+
 	char *name = output_dac_vol.control;
+
 	int num_values, i;
 
+
+
 	int vol = output_vol_conversion(volume);
-    if(name == NULL){
-		printf("%s: name is null,return!\n",__func__);
-		return 0;
 
-	}
+
 
 	ctl = mixer_get_ctl_by_name(mixer, name);
+
 	if (!ctl) {
+
 		fprintf(stderr, "Invalid mixer control\n");
+
 		return -1;
+
 	}
 
+
+
 	num_values = mixer_ctl_get_num_values(ctl);
 
+
+
     for (i = 0; i < num_values; i++) {
+
 		mixer_ctl_set_value(ctl, i, vol);
+
     }
 
+
+
 	return 0;
+
 }
 
+
+
 int mix_set_output_mute(struct mixer *mixer, bool enable)
-{
-	struct mixer_ctl *ctl;
-	char *name = dac_mute.control; 
-	int num_values, i;
-    if(name == NULL){
-		printf("%s: name is null,return!\n",__func__);
-		return 0;
 
-	}
+{
+
+	struct mixer_ctl *ctl;
+
+	char *name = dac_mute.control; 
+
+	int num_values, i;
+
+
 
 	ctl = mixer_get_ctl_by_name(mixer, name);
+
 	if (!ctl) {
+
 		fprintf(stderr, "Invalid mixer control\n");
+
 		return -1;
+
 	}
 
+
+
 	num_values = mixer_ctl_get_num_values(ctl);
 
+
+
     for (i = 0; i < num_values; i++) {
+
 		mixer_ctl_set_value(ctl, i, enable);
+
     }
 
+
+
 	return 0;
+
 }
 
+
+
 int mix_set_input_mute(struct mixer *mixer, bool enable)
-{
-	struct mixer_ctl *ctl;
-	char *name = adc_mute.control;
-	int num_values, i;
-    if(name == NULL){
-		printf("%s: name is null,return!\n",__func__);
-		return 0;
 
-	}
+{
+
+	struct mixer_ctl *ctl;
+
+	char *name = adc_mute.control;
+
 	ctl = mixer_get_ctl_by_name(mixer, name);
 
+	int num_values, i;
+
+
+
 	if (!ctl) {
+
 		fprintf(stderr, "Invalid mixer control\n");
+
 		return -1;
+
 	}
 
+
+
 	num_values = mixer_ctl_get_num_values(ctl);
 
+
+
     for (i = 0; i < num_values; i++) {
+
 		mixer_ctl_set_value(ctl, 0, enable);
+
     }
+
 		
+
 	return 0;
+
 }
 
+
+
 int mix_set_outputpath_onoff(struct mixer *mixer, int path ,bool onoff)
+
 {
+
 	struct mixer_ctl *ctl;
+
 	struct audio_para_conf *path_para;
+
 	int i, j, num_values, size;
+
 	switch(path) {
+
 	case T_OUTPUT_RECEIVER:
+
 		size = ARRAY_SIZE(rcv_path_onoff);
+
 		path_para = rcv_path_onoff;
+
 		break;
+
 	case T_OUTPUT_SPEAKER:
+
 		size = ARRAY_SIZE(spk_path_onoff);
+
 		path_para = spk_path_onoff;
+
 		break;
+
 	case T_OUTPUT_HEADSET:
+
 		size = ARRAY_SIZE(earp_path_onoff);
+
 		path_para = earp_path_onoff;
+
 		break;
+
 	default:
+
 		return -1;
+
 	}
-    if(size == 0){
-		printf("%s: array size is 0,return!\n",__func__);
-		return 0;		
-    }		
+
+
+
 	for (i = 0; i < size; i++) {
+
 		ctl = mixer_get_ctl_by_name(mixer, path_para[i].control);
+
 		num_values = mixer_ctl_get_num_values(ctl);
 
+
+
 	    for (j = 0; j < num_values; j++) {
+
 			mixer_ctl_set_value(ctl, j, onoff);
+
 	    }
 
+
+
 //		mix_set_value_wrap(mixer, spk_path_onoff[i].control, spk_path_onoff[i].values);
+
     }
 
+
+
 	return 0;
+
 }
 
+
+
 int mix_set_in_call_tone(struct mixer *mixer, int tontype)
+
 {
+
 	struct mixer_ctl *ctl;
+
 	char name[] = "voice tone sel";
+
 	ctl = mixer_get_ctl_by_name(mixer, name);
+
 	if (!ctl) {
+
 		fprintf(stderr, "Invalid mixer control\n");
+
 		return -1;
+
 	}
 
+
+
 	mixer_ctl_set_value(ctl, 0, tontype);
 
+
+
 	return 0;
+
 }
 
+
+
 int mix_set_default_param(struct mixer *mixer) 
+
 {
+
 	int i;
+
 	for (i = 0; i < ARRAY_SIZE(init_default_para); i++) {
+
 		mix_set_value_wrap(mixer, init_default_para[i].control, init_default_para[i].values);
+
 	}
+
 	
+
 	return 0;
+
 }
 
+
+
 int mix_set_voice_vol(struct mixer *mixer, int volume)
+
 {
+
 	struct mixer_ctl *ctl;
+
 	char name[] = "voice processing path Volume";
+
 	ctl = mixer_get_ctl_by_name(mixer, name);
+
 	if (!ctl) {
+
 		fprintf(stderr, "Invalid mixer control\n");
+
 		return -1;
+
 	}
 
+
+
 	mixer_ctl_set_value(ctl, 0, volume);
 
+
+
 	return 0;
+
 }
+
 int mix_get_voice_vol(struct mixer *mixer, int *volume)
+
 {
 
+
+
 	mix_get_value_wrap(mixer, "voice processing path Volume", volume);
 
+
+
 	return 0;
 
+
+
 }
 
+
+
 int mix_set_tx_voice_vol(struct mixer *mixer, int volume)
+
 {
+
 	struct mixer_ctl *ctl;
+
 	char name[] = "voice processing tx path Volume";
+
 	ctl = mixer_get_ctl_by_name(mixer, name);
+
 	if (!ctl) {
+
 		fprintf(stderr, "Invalid mixer control\n");
+
 		return -1;
+
 	}
 
+
+
 	mixer_ctl_set_value(ctl, 0, volume);
 
+
+
 	return 0;
+
 }
+
 int mix_get_tx_voice_vol(struct mixer *mixer, int *volume)
+
 {
 
+
+
 	mix_get_value_wrap(mixer, "voice processing tx path Volume", volume);
 
+
+
 	return 0;
 
+
+
 }
 
 
+
+
+
 int mix_set_voice_mute(struct mixer *mixer, bool enable)
+
 {
+
 	struct mixer_ctl *ctl;
+
 	char name[] = "voice uplink mute";
+
 	ctl = mixer_get_ctl_by_name(mixer, name);
+
 	if (!ctl) {
+
 		fprintf(stderr, "Invalid mixer control\n");
+
 		return -1;
+
 	}
 
+
+
 	mixer_ctl_set_value(ctl, 0, enable);
+
 	
+
 	return 0;
+
 }
+
 int mix_get_voice_mute(struct mixer *mixer, int *enable)
+
 {
 
+
+
 	mix_get_value_wrap(mixer, "voice uplink mute", enable);
 
+
+
 	return 0;
 
+
+
 }
 
+
+
 //voice downlink mute
 
+
+
 int mix_set_rx_voice_mute(struct mixer *mixer, bool enable)
+
 {
+
 	struct mixer_ctl *ctl;
+
 	char name[] = "voice downlink mute";
+
 	ctl = mixer_get_ctl_by_name(mixer, name);
+
 	if (!ctl) {
+
 		fprintf(stderr, "Invalid mixer control\n");
+
 		return -1;
+
 	}
 
+
+
 	mixer_ctl_set_value(ctl, 0, enable);
+
 	
+
 	return 0;
+
 }
+
 int mix_get_rx_voice_mute(struct mixer *mixer, int *enable)
+
 {
 
+
+
 	mix_get_value_wrap(mixer, "voice downlink mute", enable);
 
+
+
 	return 0;
 
+
+
 }
 
 
@@ -1843,197 +4029,397 @@
 
 
 
+
+
+
+
+
+
+
 int mix_set_output_path(struct mixer *mixer, int path)
+
 {
+
 	int i;
+
 	for (i = 0; i < ARRAY_SIZE(common_out_para_audio); i++) {
+
 		mix_set_value_wrap(mixer, common_out_para_audio[i].control, common_out_para_audio[i].values);
+
 	}
+
+	printf("yanming mix_set_output_path:%d\n",path);
+
 	switch (path) {
+
 	case T_OUTPUT_RECEIVER:
+
 		for (i = 0; i < ARRAY_SIZE(hp_outpath_para_audio); i++) {
+
 			mix_set_value_wrap(mixer, hp_outpath_para_audio[i].control, hp_outpath_para_audio[i].values);
+
 		}
+
 		break;
+
 	case T_OUTPUT_SPEAKER:
+
 		for (i = 0; i < ARRAY_SIZE(spk_outpath_para_audio); i++) {
+
 			mix_set_value_wrap(mixer, spk_outpath_para_audio[i].control, spk_outpath_para_audio[i].values);
+
 		}
+
 		break;
+
 	default:
+
 		break;
+
 	}
 
+
+
 	return 0;
+
 }
 
+
+
 int mix_set_input_path(struct mixer *mixer, int path)
+
 {
+
 	int i;
+
 	for (i = 0; i < ARRAY_SIZE(common_in_para_audio); i++) {
+
 		mix_set_value_wrap(mixer, common_in_para_audio[i].control, common_in_para_audio[i].values);
+
 	}
 
-	#if (defined _USE_CODEC_TI3100)
+
+
+	#if (defined _USE_CODEC_TI3100)||(defined _USE_CODEC_ES8311)
+
 	switch (path) {
+
 	case T_INPUT_MICLP:
+
 		for (i = 0; i < ARRAY_SIZE(main_mic_inpath_para_audio); i++) {
+
 			mix_set_value_wrap(mixer, main_mic_inpath_para_audio[i].control, main_mic_inpath_para_audio[i].values);
+
 		}
+
 		break;
+
 	case T_INPUT_MICRP:
+
 		for (i = 0; i < ARRAY_SIZE(aux_mic_inpath_para_audio); i++) {
+
 			mix_set_value_wrap(mixer, aux_mic_inpath_para_audio[i].control, aux_mic_inpath_para_audio[i].values);
+
 		}
+
 		break;
+
 	default:
+
 		break;
+
 	}
 
 
+
 	#else
+
 	switch (path) {
-	case T_INPUT_HANDSET:
-	case T_INPUT_SPEAKER:
+
+	case CODEC_INPUT_MICPHONE:
+
+	case CODEC_INPUT_BLUETOOTH:
+
+	case CODEC_INPUT_HANDSFREE:
+
 		for (i = 0; i < ARRAY_SIZE(main_mic_inpath_para_audio); i++) {
+
 			mix_set_value_wrap(mixer, main_mic_inpath_para_audio[i].control, main_mic_inpath_para_audio[i].values);
+
 		}
+
 		break;
-	case T_INPUT_HEADSET:
+
+	case CODEC_INPUT_HEADSET:
+
 		for (i = 0; i < ARRAY_SIZE(aux_mic_inpath_para_audio); i++) {
+
 			mix_set_value_wrap(mixer, aux_mic_inpath_para_audio[i].control, aux_mic_inpath_para_audio[i].values);
+
 		}
+
 		break;
+
 	default:
+
 		break;
+
 	}	
+
 	#endif
 
+
+
 	return 0;
+
 }
+
 /*
+
 int mix_set_input_vol(struct mixer *mixer, int volume)
+
 {
+
 	struct mixer_ctl *ctl;
+
 	char *name = input_adc_vol.control;
+
 	int num_values, i;
+
 	int vol = input_vol_conversion(volume);
 
+
+
 	ctl = mixer_get_ctl_by_name(mixer, name);
+
 	if (!ctl) {
+
 		fprintf(stderr, "Invalid mixer control\n");
+
 		return -1;
+
 	}
 
+
+
     num_values = mixer_ctl_get_num_values(ctl);
 
+
+
     for (i = 0; i < num_values; i++) {
+
 		mixer_ctl_set_value(ctl, i, vol);
+
     }
 
+
+
 	return 0;
+
 }
 
+
+
 int mix_set_output_vol(struct mixer *mixer, int volume)
+
 {
+
 	struct mixer_ctl *ctl;
+
 	char *name = output_dac_vol.control;
+
 	int num_values, i;
 
+
+
 	int vol = output_vol_conversion(volume);
 
+
+
 	ctl = mixer_get_ctl_by_name(mixer, name);
+
 	if (!ctl) {
+
 		fprintf(stderr, "Invalid mixer control\n");
+
 		return -1;
+
 	}
 
+
+
 	num_values = mixer_ctl_get_num_values(ctl);
 
+
+
     for (i = 0; i < num_values; i++) {
+
 		mixer_ctl_set_value(ctl, i, vol);
+
     }
 
+
+
 	return 0;
+
 }
 
+
+
 int mix_set_output_mute(struct mixer *mixer, bool enable)
+
 {
+
 	struct mixer_ctl *ctl;
+
 	char *name = dac_mute.control; 
+
 	int num_values, i;
 
+
+
 	ctl = mixer_get_ctl_by_name(mixer, name);
+
 	if (!ctl) {
+
 		fprintf(stderr, "Invalid mixer control\n");
+
 		return -1;
+
 	}
 
+
+
 	num_values = mixer_ctl_get_num_values(ctl);
 
+
+
     for (i = 0; i < num_values; i++) {
+
 		mixer_ctl_set_value(ctl, i, enable);
+
     }
 
+
+
 	return 0;
+
 }
 
+
+
 int mix_set_input_mute(struct mixer *mixer, bool enable)
+
 {
+
 	struct mixer_ctl *ctl;
+
 	char *name = adc_mute.control;
+
 	ctl = mixer_get_ctl_by_name(mixer, name);
+
 	int num_values, i;
 
+
+
 	if (!ctl) {
+
 		fprintf(stderr, "Invalid mixer control\n");
+
 		return -1;
+
 	}
 
+
+
 	num_values = mixer_ctl_get_num_values(ctl);
 
+
+
     for (i = 0; i < num_values; i++) {
+
 		mixer_ctl_set_value(ctl, 0, enable);
+
     }
+
 		
+
 	return 0;
+
 }
 
+
+
 int mix_set_outputpath_onoff(struct mixer *mixer, int path ,bool onoff)
+
 {
+
 	struct mixer_ctl *ctl;
+
 	struct audio_para_conf *path_para;
+
 	int i, j, num_values, size;
+
 	switch(path) {
+
 	case T_OUTPUT_RECEIVER:
+
 		size = ARRAY_SIZE(rcv_path_onoff);
+
 		path_para = rcv_path_onoff;
+
 		break;
+
 	case T_OUTPUT_SPEAKER:
+
 		size = ARRAY_SIZE(spk_path_onoff);
+
 		path_para = spk_path_onoff;
+
 		break;
+
 	case T_OUTPUT_HEADSET:
+
 		size = ARRAY_SIZE(earp_path_onoff);
+
 		path_para = earp_path_onoff;
+
 		break;
+
 	default:
+
 		return -1;
+
 	}
 
+
+
 	for (i = 0; i < size; i++) {
+
 		ctl = mixer_get_ctl_by_name(mixer, path_para[i].control);
+
 		num_values = mixer_ctl_get_num_values(ctl);
 
+
+
 	    for (j = 0; j < num_values; j++) {
+
 			mixer_ctl_set_value(ctl, j, onoff);
+
 	    }
 
+
+
 //		mix_set_value_wrap(mixer, spk_path_onoff[i].control, spk_path_onoff[i].values);
+
     }
 
+
+
 	return 0;
+
 }
+
 */
 
 
@@ -2041,248 +4427,505 @@
 
 
 
+
+
+
+
+
+
+
 int mix_set_voice_path(struct mixer *mixer, int path)
+
 {
+
 	int i;
+
 /*
+
 	for (i = 0; i < ARRAY_SIZE(common_in_para_audio); i++) {
+
 		tinymix_set_value_test(mixer, common_in_para_audio[i].control, common_in_para_audio[i].values);
-	}
-	
-	for(i = 0;i<ARRAY_SIZE(common_out_para_audio);i++)
-	{
- 	  	tinymix_set_value_test(mixer,common_out_para_audio[i].control,common_out_para_audio[i].values);
-	}
-*/	
-	switch (path) {
-	case T_OUTPUT_RECEIVER:
-		for (i = 0; i < ARRAY_SIZE(handset_inoutpath_para_voice); i++)	{
-			mix_set_value_wrap(mixer, handset_inoutpath_para_voice[i].control, handset_inoutpath_para_voice[i].values);
-		}
-		break;
-	case T_OUTPUT_SPEAKER:
-		for (i = 0; i < ARRAY_SIZE(spk_inoutpath_para_voice); i++) {
-			mix_set_value_wrap(mixer, spk_inoutpath_para_voice[i].control, spk_inoutpath_para_voice[i].values);
-		}
-		break;
-	case T_OUTPUT_HEADSET:
-		for (i = 0; i < ARRAY_SIZE(headset_inoutpath_para_voice); i++) {
-			mix_set_value_wrap(mixer, headset_inoutpath_para_voice[i].control, headset_inoutpath_para_voice[i].values);
-		}
-	default:
-		break;
+
 	}
 
+	
+
+	for(i = 0;i<ARRAY_SIZE(common_out_para_audio);i++)
+
+	{
+
+ 	  	tinymix_set_value_test(mixer,common_out_para_audio[i].control,common_out_para_audio[i].values);
+
+	}
+
+*/	
+
+	switch (path) {
+
+	case T_OUTPUT_RECEIVER:
+
+		printf("yanming mix_set_voice_path receiver\n");
+
+
+
+		for (i = 0; i < ARRAY_SIZE(handset_inoutpath_para_voice); i++)	{
+
+			mix_set_value_wrap(mixer, handset_inoutpath_para_voice[i].control, handset_inoutpath_para_voice[i].values);
+
+		}
+
+		break;
+
+	case T_OUTPUT_SPEAKER:
+
+		for (i = 0; i < ARRAY_SIZE(spk_inoutpath_para_voice); i++) {
+
+			mix_set_value_wrap(mixer, spk_inoutpath_para_voice[i].control, spk_inoutpath_para_voice[i].values);
+
+		}
+
+		break;
+
+	case T_OUTPUT_HEADSET:
+
+		printf("yanming mix_set_voice_path headset\n");
+
+		for (i = 0; i < ARRAY_SIZE(headset_inoutpath_para_voice); i++) {
+
+			mix_set_value_wrap(mixer, headset_inoutpath_para_voice[i].control, headset_inoutpath_para_voice[i].values);
+
+		}
+
+	default:
+
+		break;
+
+	}
+
+
+
 	return 0;
+
 }
 
 
+
+
+
 int mix_get_voice_path(struct mixer *mixer, int *path)
+
 {
 
+
+
 	mix_get_value_wrap(mixer, "audio path select", path);
 
+
+
 	return 0;
 
+
+
 }
+
 /*
 
+
+
 int mix_set_in_call_tone(struct mixer *mixer, int tontype)
+
 {
+
 	struct mixer_ctl *ctl;
+
 	char name[] = "voice tone sel";
+
 	ctl = mixer_get_ctl_by_name(mixer, name);
+
 	if (!ctl) {
+
 		fprintf(stderr, "Invalid mixer control\n");
+
 		return -1;
+
 	}
 
+
+
 	mixer_ctl_set_value(ctl, 0, tontype);
 
+
+
 	return 0;
+
 }
 
+
+
 int mix_set_default_param(struct mixer *mixer) 
+
 {
+
 	int i;
+
 	for (i = 0; i < ARRAY_SIZE(init_default_para); i++) {
+
 		mix_set_value_wrap(mixer, init_default_para[i].control, init_default_para[i].values);
+
 	}
+
 	
+
 	return 0;
+
 }
 
+
+
 */
 
+
+
 	
+
 	
+
 	
-//����voice��Ƶ�豸ģʽ dev_mode��handset,speaker,headset	0 ��ʾ�ɹ��� ������ʾ�д���
+
+//锟斤拷锟斤拷voice锟斤拷频锟借备模式 dev_mode锟斤拷handset,speaker,headset	0 锟斤拷示锟缴癸拷锟斤拷 锟斤拷锟斤拷锟斤拷示锟叫达拷锟斤拷
+
 int set_voice_device_mode(int dev_mode)
+
 {
 
+
+
 	struct mixer *voice_mixer = NULL;
+
 	printf("%s: start dev_mode=%d!\n",__func__, dev_mode);
 
+
+
 	if ((dev_mode < T_OUTPUT_HANDSET ) ||(dev_mode >= T_OUTPUT_MAX)){
+
 		printf("%s: dev_mode not support, dev_mode=%d!\n",__func__, dev_mode);
+
 		return -1;
+
 	}
 
+
+
 	//open mixer dev for  control
+
 	voice_mixer = mixer_open(VOCIE_SND_CARD_NUM);
+
 	if (!voice_mixer) {
+
 		printf("voice_mixer open failed!\n");
+
 		return -1;
+
 	}
 
+
+
 	//config mixer dev
+
 	mix_set_voice_path(voice_mixer, dev_mode);
 
+
+
 	//close mixer
+
 	mixer_close(voice_mixer);
+
 	voice_mixer = NULL;
 
 
+
+
+
 	return 0;
+
 	
+
 	
+
 }
 
+
+
 //#ifdef _CPE_AUDIO_PRJ
+
 #else
+
 int mix_set_output_path(struct mixer *mixer, int path)
+
 {
+
 	
+
 	return 0;
+
 }
 
+
+
 int mix_set_input_path(struct mixer *mixer, int path)
+
 {
 
 
+
+
+
 	return 0;
+
 }
 
+
+
 int mix_set_input_vol(struct mixer *mixer, int volume)
+
 {
 
 
+
+
+
 	return 0;
+
 }
 
+
+
 int mix_set_output_vol(struct mixer *mixer, int volume)
+
 {
 
 
+
+
+
 	return 0;
+
 }
 
+
+
 int mix_set_output_mute(struct mixer *mixer, bool enable)
+
 {
 
 
+
+
+
 	return 0;
+
 }
 
+
+
 int mix_set_input_mute(struct mixer *mixer, bool enable)
+
 {
 
+
+
 		
+
 	return 0;
+
 }
 
+
+
 int mix_set_outputpath_onoff(struct mixer *mixer, int path ,bool onoff)
+
 {
 
+
+
 	return 0;
+
 }
 
 
+
+
+
 int mix_set_voice_vol(struct mixer *mixer, int volume)
+
 {
 
 
+
+
+
 	return 0;
+
 }
 
+
+
 int mix_set_voice_mute(struct mixer *mixer, bool enable)
+
 {
 
+
+
 	
+
 	return 0;
+
 }
 
+
+
 int mix_set_voice_path(struct mixer *mixer, int path)
+
 {
+
 	int i;
 
 
+
+
+
 	return 0;
+
 }
 
 
+
+
+
 int mix_set_in_call_tone(struct mixer *mixer, int tontype)
+
 {
 
 
+
+
+
 	return 0;
+
 }
 
+
+
 int mix_set_default_param(struct mixer *mixer) 
+
 {
 
+
+
 	return 0;
+
 }
 
+
+
 int mix_get_voice_vol(struct mixer *mixer, int *volume)
+
 {
 
+
+
 	return 0;
+
 }
 
+
+
 int mix_set_tx_voice_vol(struct mixer *mixer, int volume)
+
 {
+
 	return 0;
+
 }
 
+
+
 int mix_get_tx_voice_vol(struct mixer *mixer, int *volume)
+
 {
 
+
+
 	return 0;
 
+
+
 }
 
+
+
 int mix_get_voice_mute(struct mixer *mixer, int *enable)
+
 {
 
+
+
 	return 0;
 
+
+
 }
 
+
+
 //voice downlink mute
 
+
+
 int mix_set_rx_voice_mute(struct mixer *mixer, bool enable)
+
 {
+
 	return 0;
+
 }
+
 int mix_get_rx_voice_mute(struct mixer *mixer, int *enable)
+
 {
 
+
+
 	return 0;
 
+
+
 }
 
+
+
 int mix_get_voice_path(struct mixer *mixer, int *path)
+
 {
 
+
+
 	return 0;
 
+
+
 }
 
+
+
 int set_voice_device_mode(int dev_mode)
+
 {
+
     return 0;
+
 }
 
+
+
 #endif