zte's code,first commit

Change-Id: I9a04da59e459a9bc0d67f101f700d9d7dc8d681b
diff --git a/cp/ps/driver/inc/misc/drvs_codec.h b/cp/ps/driver/inc/misc/drvs_codec.h
new file mode 100644
index 0000000..b93e577
--- /dev/null
+++ b/cp/ps/driver/inc/misc/drvs_codec.h
@@ -0,0 +1,581 @@
+/**

+ * @file drvs_codec.h 

+ * @brief Public APIs of Codec drivers

+ *

+ * Copyright (C) 2017 Sanechips Technology Co., Ltd.

+ * @author Xinqiang Xu <xu.xinqiang@sanechips.com.cn>

+ * @ingroup si_cp_drv_id

+ * 

+ * This program is free software; you can redistribute it and/or modify

+ * it under the terms of the GNU General Public License version 2 as

+ * published by the Free Software Foundation. 

+ *

+ */

+

+#ifndef _DRV_CODEC_TLV3100_H

+#define _DRV_CODEC_TLV3100_H

+

+

+/****************************************************************************

+* 	                        Include files

+****************************************************************************/

+#include "drvs_i2s.h"

+#include "drvs_voiceprocess.h"

+

+/*******************************************************************************

+ *                             Macro definitions                               *

+ ******************************************************************************/

+ 

+/*******************************************************************************

+ *                             Type definitions                                *

+ ******************************************************************************/

+typedef unsigned long  T_ZDrvCodec_Handle;

+

+typedef enum {

+	VOICE_SOURCE,

+    AUDIO_SOURCE,

+    EXTERN_AUDIO,

+    

+    SOURCE_MAX

+} T_ZDrvCodec_SourceType;

+

+typedef enum {

+    AUDIO_I2S_NONE,

+    AUDIO_I2S0,

+    AUDIO_I2S1,

+    

+    AUDIO_I2S_MAX

+} T_ZDrvCodec_AudioI2SChannel;

+

+typedef enum {

+    I2S_MASTER_MODE,

+    I2S_SLAVE_MODE,

+    

+    I2S_MODE_MAX

+} T_ZDrvCodec_AudioI2SMode;

+

+typedef enum {

+    AUDIO_SAMPLE_8K,

+    AUDIO_SAMPLE_11_025_KHZ,          /* Use 11.025 kHz sampling rate. */

+    AUDIO_SAMPLE_12_KHZ,              /* Use 12 kHz sampling rate. */

+    AUDIO_SAMPLE_16K,

+    AUDIO_SAMPLE_22_050_KHZ,          /* Use 22.050 kHz sampling rate. */

+    AUDIO_SAMPLE_24_KHZ,              /* Use 24 kHz sampling rate. */

+    AUDIO_SAMPLE_32K,

+    AUDIO_SAMPLE_44_1K,

+    AUDIO_SAMPLE_48K,

+    AUDIO_SAMPLE_64_KHZ,              /* Use 64 kHz sampling rate */

+    AUDIO_SAMPLE_96_KHZ,              /* Use 96 kHz sampling rate. */

+    

+    AUDIO_SAMPLE_MAX

+} T_ZDrvCodec_AudioSample;

+

+typedef enum {

+    AUDIO_INPUT_HANDSET,

+    AUDIO_INPUT_SPEAKER,

+    AUDIO_INPUT_HEADSET,

+    AUDIO_INPUT_BLUETOOTH,

+    AUDIO_INPUT_FM_ANATODIG,

+    AUDIO_INPUT_FM_ANATOANA,

+    

+    AUDIO_INPUT_MAX

+} T_ZDrvCodec_InDevice;

+

+typedef enum {

+    AUDIO_OUTPUT_RECEIVER,

+    AUDIO_OUTPUT_SPEAKER,

+    AUDIO_OUTPUT_HEADSET,

+    AUDIO_OUTPUT_BLUETOOTH,

+    AUDIO_OUTPUT_HEADSET_SPEAKER,

+    AUDIO_OUTPUT_FM_ANATODIG_HEADSET,

+    AUDIO_OUTPUT_FM_ANATODIG_SPEAKER,

+    AUDIO_OUTPUT_FM_ANATOANA_HEADSET,

+    AUDIO_OUTPUT_FM_ANATOANA_SPEAKER,

+    

+    AUDIO_OUTPUT_MAX

+} T_ZDrvCodec_OutDevice;

+

+typedef enum {

+    CLSD_GAIN_PLUS_6DB,

+    CLSD_GAIN_PLUS_12DB,

+    CLSD_GAIN_PLUS_18DB,

+    CLSD_GAIN_PLUS_24DB,

+    

+    CLSD_GAIN_MAX

+} T_ZDrvCodec_ClsD_Vol;

+

+typedef enum {

+    CLSAB_GAIN_PLUS_0DB,

+    CLSAB_GAIN_PLUS_1DB,

+    CLSAB_GAIN_PLUS_2DB,

+    CLSAB_GAIN_PLUS_3DB,

+    CLSAB_GAIN_PLUS_4DB,

+    CLSAB_GAIN_PLUS_5DB,

+    CLSAB_GAIN_PLUS_6DB,

+    CLSAB_GAIN_PLUS_7DB,

+    CLSAB_GAIN_PLUS_8DB,

+    CLSAB_GAIN_PLUS_9DB,

+    

+    CLSAB_GAIN_MAX

+} T_ZDrvCodec_ClsAB_Vol;

+

+typedef enum {

+    CODEC_INPATH_DIG_GAIN_MINUS_12DB = 0,

+    CODEC_INPATH_DIG_GAIN_MINUS_11DB,

+    CODEC_INPATH_DIG_GAIN_MINUS_10DB,

+    CODEC_INPATH_DIG_GAIN_MINUS_9DB,

+    CODEC_INPATH_DIG_GAIN_MINUS_8DB,

+    CODEC_INPATH_DIG_GAIN_MINUS_7DB,

+    CODEC_INPATH_DIG_GAIN_MINUS_6DB,

+    CODEC_INPATH_DIG_GAIN_MINUS_5DB,

+    CODEC_INPATH_DIG_GAIN_MINUS_4DB,

+    CODEC_INPATH_DIG_GAIN_MINUS_3DB,

+    CODEC_INPATH_DIG_GAIN_MINUS_2DB,

+    CODEC_INPATH_DIG_GAIN_MINUS_1DB,

+    CODEC_INPATH_DIG_GAIN_0DB,

+    CODEC_INPATH_DIG_GAIN_PLUS_1DB,

+    CODEC_INPATH_DIG_GAIN_PLUS_2DB,

+    CODEC_INPATH_DIG_GAIN_PLUS_3DB,

+    CODEC_INPATH_DIG_GAIN_PLUS_4DB,

+    CODEC_INPATH_DIG_GAIN_PLUS_5DB,

+    CODEC_INPATH_DIG_GAIN_PLUS_6DB,

+    CODEC_INPATH_DIG_GAIN_PLUS_7DB,

+    CODEC_INPATH_DIG_GAIN_PLUS_8DB,

+    CODEC_INPATH_DIG_GAIN_PLUS_9DB,

+    CODEC_INPATH_DIG_GAIN_PLUS_10DB,

+    CODEC_INPATH_DIG_GAIN_PLUS_11DB,

+    CODEC_INPATH_DIG_GAIN_PLUS_12DB,

+    CODEC_INPATH_DIG_GAIN_PLUS_13DB,

+    CODEC_INPATH_DIG_GAIN_PLUS_14DB,

+    CODEC_INPATH_DIG_GAIN_PLUS_15DB,

+    CODEC_INPATH_DIG_GAIN_PLUS_16DB,

+    CODEC_INPATH_DIG_GAIN_PLUS_17DB,

+    CODEC_INPATH_DIG_GAIN_PLUS_18DB,

+    CODEC_INPATH_DIG_GAIN_PLUS_19DB,

+    CODEC_INPATH_DIG_GAIN_PLUS_20DB,

+    

+    CODEC_INPATH_DIG_GAIN_MAX

+} T_ZDrvCodec_InPath_Digital_Gain;

+

+typedef enum {

+    CODEC_OUTPATH_DIG_GAIN_PLUS_24DB = 0,

+    CODEC_OUTPATH_DIG_GAIN_PLUS_23DB,

+    CODEC_OUTPATH_DIG_GAIN_PLUS_22DB,

+    CODEC_OUTPATH_DIG_GAIN_PLUS_21DB,

+    CODEC_OUTPATH_DIG_GAIN_PLUS_20DB,

+    CODEC_OUTPATH_DIG_GAIN_PLUS_19DB,

+    CODEC_OUTPATH_DIG_GAIN_PLUS_18DB,

+    CODEC_OUTPATH_DIG_GAIN_PLUS_17DB,

+    CODEC_OUTPATH_DIG_GAIN_PLUS_16DB,

+    CODEC_OUTPATH_DIG_GAIN_PLUS_15DB,

+    CODEC_OUTPATH_DIG_GAIN_PLUS_14DB,

+    CODEC_OUTPATH_DIG_GAIN_PLUS_13DB,

+    CODEC_OUTPATH_DIG_GAIN_PLUS_12DB,

+    CODEC_OUTPATH_DIG_GAIN_PLUS_11DB,

+    CODEC_OUTPATH_DIG_GAIN_PLUS_10DB,

+    CODEC_OUTPATH_DIG_GAIN_PLUS_9DB,

+    CODEC_OUTPATH_DIG_GAIN_PLUS_8DB,

+    CODEC_OUTPATH_DIG_GAIN_PLUS_7DB,

+    CODEC_OUTPATH_DIG_GAIN_PLUS_6DB,

+    CODEC_OUTPATH_DIG_GAIN_PLUS_5DB,

+    CODEC_OUTPATH_DIG_GAIN_PLUS_4DB,

+    CODEC_OUTPATH_DIG_GAIN_PLUS_3DB,

+    CODEC_OUTPATH_DIG_GAIN_PLUS_2DB,

+    CODEC_OUTPATH_DIG_GAIN_PLUS_1DB,

+    CODEC_OUTPATH_DIG_GAIN_0DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_1DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_2DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_3DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_4DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_5DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_6DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_7DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_8DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_9DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_10DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_11DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_12DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_13DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_14DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_15DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_16DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_17DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_18DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_19DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_20DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_21DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_22DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_23DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_24DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_25DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_26DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_27DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_28DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_29DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_30DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_31DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_32DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_33DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_34DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_35DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_36DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_37DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_38DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_39DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_40DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_41DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_42DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_43DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_44DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_45DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_46DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_47DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_48DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_49DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_50DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_51DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_52DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_53DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_54DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_55DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_56DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_57DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_58DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_59DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_60DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_61DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_62DB,

+    CODEC_OUTPATH_DIG_GAIN_MINUS_63DB,

+    

+    CODEC_OUTPATH_DIG_GAIN_MAX

+} T_ZDrvCodec_OutPath_Digital_Gain;

+

+typedef enum {

+    MICBIAS_OUT_POWERDOWN = 0,

+    MICBIAS_OUT_2V,

+    MICBIAS_OUT_2_5V,

+    MICBIAS_OUT_AVDD,

+    

+    MICBIAS_OUT_MAX

+} T_ZDrvMicBias_Ctrl;

+

+/**

+ * @brief describe the codec agc Parameter 

+ * @param onOff				agc function enable

+ * @param targetLevel		the Level of target

+ * @param attackTime 		attack Time	 	

+ * @param decayTime 		decay Time

+ * @param noiseDebounce		noise Debounce	 	 

+ * @param signalDebounce	signal Debounce	

+ * @param noiseThreshold	the Threshold of the noise	

+ * @param maxgain	 		the max gain 	

+ */

+typedef struct _T_AudCodec_AGC_Parameter {

+	SINT8 onOff;

+	SINT8 targetLevel;

+	SINT8 attackTime;

+	SINT8 decayTime;

+	SINT8 noiseDebounce;

+	SINT8 signalDebounce;

+	SINT8 noiseThreshold;

+	

+	SINT8 maxgain;

+} T_ZDrvAudCodec_AGC_Parameter;

+

+/**

+ * @brief describe the codec drc Parameter 

+ * @param onOff			drc function enable

+ * @param threshold		threshold value 

+ * @param hysteresis 	hysteresis value	 	

+ * @param holdTime 		hold Time

+ * @param attackRate	attack Rate	 	 

+ * @param decayRate	 	decay Rate	 	

+ */

+typedef struct _T_AudCodec_DRC_Parameter {

+	SINT8 onOff;

+	SINT8 threshold;

+	SINT8 hysteresis;

+	SINT8 holdTime;

+	SINT8 attackRate;

+	SINT8 decayRate;

+} T_ZDrvAudCodec_DRC_Parameter;

+

+typedef enum {

+    CODEC_DATA_LEGTH_8BIT = 0,

+    CODEC_DATA_LEGTH_16BIT,

+    CODEC_DATA_LEGTH_20BIT,

+    CODEC_DATA_LEGTH_24BIT,

+    CODEC_DATA_LEGTH_32BIT,

+    

+    CODEC_DATA_LEGTH_MAX

+} T_ZDrvCodec_DataLength;

+

+typedef enum {

+    CODEC_DATA_TRACK_DOUBLE = 0,

+    CODEC_DATA_TRACK_LEFT,

+    CODEC_DATA_TRACK_RIGHT,

+    

+    CODEC_DATA_TRACK_MAX

+} T_ZDrvCodec_DataTrack;

+

+typedef enum {

+    CODEC_BUS_I2S,

+    CODEC_BUS_RJF,   /* Right-Justified Mode */

+    CODEC_BUS_LJF,   /* Left-Justified Mode */

+    CODEC_BUS_DSP,

+    CODEC_BUS_TDM,

+    CODEC_BUS_MAX

+} T_AudCodec_BusMode;

+

+#define T_ZDrvCodec_BusMode  T_AudCodec_BusMode

+

+/**

+ * @brief describe the i2s transfer protocol 

+ * @param audI2SChannel		Audio I2S Channel

+ * @param masterSlave		Audio I2S Mode;		 

+ * @param busMode 			bus mode		 	

+ * @param dataLength 		Codec Data Length

+ * @param dataTrack	 		codec data type	 	

+ */

+typedef struct _T_Codec_UseProtocol {

+	T_ZDrvCodec_AudioI2SChannel audI2SChannel;

+	T_ZDrvCodec_AudioI2SMode masterSlave;

+	T_ZDrvCodec_BusMode busMode;

+	T_ZDrvCodec_DataLength dataLength;

+	T_ZDrvCodec_DataTrack dataTrack;

+} T_ZDrvCodec_UseProtocol;

+

+/*******************************************************************************

+ *                       Global variable declarations                          *

+ ******************************************************************************/

+ 

+

+/*******************************************************************************

+ *                       Global function declarations                          *

+ ******************************************************************************/

+/**

+ * @brief Open codec,set parameters.

+ *

+ * @param handle	Pointer to T_ZDrvCodec_Handle.

+ * @param srcType 	Pointer to T_ZDrvCodec_SourceType

+ *

+ * @return	 0-DRV_SUCCESS, other-error

+ */

+SINT32 zDrvCodec_Open(T_ZDrvCodec_Handle *handle, T_ZDrvCodec_SourceType srcType);

+

+/**

+* @brief	close codec, power off.

+*

+* @param	handle    T_ZDrvCodec_Handle

+*

+* @return	0-DRV_SUCCESS, other-error

+*/

+SINT32 zDrvCodec_Close(T_ZDrvCodec_Handle *handle);

+

+/**

+* @brief	Set i2s protocol.

+*

+* @param	handle	 T_ZDrvCodec_Handle

+* @param	channel   T_ZDrvCodec_AudioI2SChannel

+* @param	masterSlave	T_ZDrvCodec_AudioI2SMode

+*

+* @return	0-DRV_SUCCESS, other-error

+*/

+SINT32 zDrvCodec_SetProtocal(T_ZDrvCodec_Handle handle, T_ZDrvCodec_AudioI2SChannel channel, T_ZDrvCodec_AudioI2SMode masterSlave);

+

+/**

+* @brief	Set i2s clock.

+*

+* @param	handle	 T_ZDrvCodec_Handle

+* @param	sample   T_ZDrvCodec_AudioSample

+*

+* @return	0-DRV_SUCCESS, other-error

+*/

+SINT32 zDrvCodec_SetClock(T_ZDrvCodec_Handle handle, T_ZDrvCodec_AudioSample sample);

+

+/**

+* @brief	reset codec.

+*

+* @param	handle	 T_ZDrvCodec_Handle

+* @return	0-DRV_SUCCESS, other-error

+*/

+SINT32 zDrvCodec_Reset(T_ZDrvCodec_Handle handle);

+

+/**

+* @brief	Set the input path of the codec.

+*

+* @param	handle	 T_ZDrvCodec_Handle

+* @param	dev   T_ZDrvCodec_InDevice

+* @param	onoff   BOOL

+*

+* @return	0-DRV_SUCCESS, other-error

+*/

+SINT32 zDrvCodec_SetInPath(T_ZDrvCodec_Handle handle, T_ZDrvCodec_InDevice dev, BOOL onoff);

+

+/**

+* @brief	Set the output path of the codec.

+*

+* @param	handle	 T_ZDrvCodec_Handle

+* @param	dev   T_ZDrvCodec_InDevice

+* @param	onoff   BOOL

+*

+* @return	0-DRV_SUCCESS, other-error

+*/

+SINT32 zDrvCodec_SetOutPath(T_ZDrvCodec_Handle handle, T_ZDrvCodec_OutDevice dev, BOOL onoff);

+

+/**

+* @brief	Enable the audio path.

+*

+* @param	handle	 T_ZDrvCodec_Handle

+* @return	0-DRV_SUCCESS, other-error

+*/

+SINT32 zDrvCodec_AudioEnable(T_ZDrvCodec_Handle handle);

+

+/**

+* @brief	Disable the audio path.

+*

+* @param	handle	 T_ZDrvCodec_Handle

+*

+* @return	0-DRV_SUCCESS, other-error

+*/

+SINT32 zDrvCodec_AudioDisable(T_ZDrvCodec_Handle handle);

+

+/**

+* @brief	Set the ClsD volume.

+*

+* @param	handle	 T_ZDrvCodec_Handle

+* @param	vol	 T_ZDrvCodec_ClsD_Vol

+* @return	0-DRV_SUCCESS, other-error

+*/

+SINT32 zDrvCodec_Set_ClsD_Vol(T_ZDrvCodec_Handle handle, T_ZDrvCodec_ClsD_Vol vol);

+

+/**

+* @brief	Set the ClsAB volume.

+*

+* @param	handle	 T_ZDrvCodec_Handle

+* @param	vol  UINT8

+*

+* @return	0-DRV_SUCCESS, other-error

+*/

+SINT32 zDrvCodec_Set_ClsAB_Vol(T_ZDrvCodec_Handle handle, UINT8 vol);

+

+/**

+* @brief	Set the  output Analog volume of the Output path.

+*

+* @param	handle	 T_ZDrvCodec_Handle

+* @param	vol  SINT8

+*

+* @return	0-DRV_SUCCESS, other-error

+*/

+SINT32 zDrvCodec_Set_Outpath_Ana_Vol(T_ZDrvCodec_Handle handle, SINT8 vol);

+

+/**

+* @brief	Set the  Analog volume of the Input path.

+*

+* @param	handle	 T_ZDrvCodec_Handle

+* @param	vol  SINT8

+* @return	0-DRV_SUCCESS, other-error

+*/

+SINT32 zDrvCodec_Set_Inpath_Ana_Vol(T_ZDrvCodec_Handle handle, SINT8 vol);

+

+/**

+* @brief	Set the  Digital volume of the Input path.

+*

+* @param	handle	 T_ZDrvCodec_Handle

+* @param	invol    T_ZDrvCodec_InPath_Digital_Gain

+*

+* @return	0-DRV_SUCCESS, other-error

+*/

+SINT32 zDrvCodec_Set_Inpath_Dig_Vol(T_ZDrvCodec_Handle handle, T_ZDrv_VpVol vol);

+

+/**

+* @brief	Set the  Digital volume of the Output path.

+*

+* @param	handle	 T_ZDrvCodec_Handle

+* @param	invol    T_ZDrv_VpVol

+* @return	0-DRV_SUCCESS, other-error

+*/

+SINT32 zDrvCodec_Set_Outpath_Dig_Vol(T_ZDrvCodec_Handle handle, T_ZDrv_VpVol vol);

+

+/**

+* @brief	Set the Side Tone.

+*

+* @param	handle	 T_ZDrvCodec_Handle

+* @param	onoff    BOOL

+*

+* @return	0-DRV_SUCCESS, other-error

+*/

+SINT32 zDrvCodec_SetSideTone(T_ZDrvCodec_Handle handle, BOOL onoff);

+

+/**

+* @brief	Set the Mic Bias.

+*

+* @param	handle	 T_ZDrvCodec_Handle

+* @param	micBiasCtrl    T_ZDrvMicBias_Ctrl

+*

+* @return	0-DRV_SUCCESS, other-error

+*/

+SINT32 zDrvCodec_SetMicBias(T_ZDrvCodec_Handle handle, T_ZDrvMicBias_Ctrl micBiasCtrl);

+

+/**

+* @brief	Set the Input Agc.

+*

+* @param	handle	 T_ZDrvCodec_Handle

+* @param	AGCPara    Poiter to T_ZDrvAudCodec_AGC_Parameter

+*

+* @return	0-DRV_SUCCESS, other-error

+*/

+SINT32 zDrvCodec_SetInputAgc(T_ZDrvCodec_Handle handle, T_ZDrvAudCodec_AGC_Parameter *AGCPara);

+

+/**

+* @brief	Set the Output Agc.

+*

+* @param	handle	 T_ZDrvCodec_Handle

+* @param	DRCPara    Poiter to T_ZDrvAudCodec_DRC_Parameter

+* @return	0-DRV_SUCCESS, other-error

+*/

+SINT32 zDrvCodec_SetOutputDrc(T_ZDrvCodec_Handle handle, T_ZDrvAudCodec_DRC_Parameter *DRCPara);

+

+/**

+* @brief	Set the Loop Back.

+*

+* @param	handle	 T_ZDrvCodec_Handle

+* @param	onoff    BOOL

+*

+* @return	0-DRV_SUCCESS, other-error

+*/

+SINT32 zDrvCodec_SetLoopBack(T_ZDrvCodec_Handle handle, BOOL onoff);

+

+/**

+* @brief	Set the mute function in the input path.

+*

+* @param	handle	 T_ZDrvCodec_Handle

+* @param	onoff	 BOOL

+*

+* @return	0-DRV_SUCCESS, other-error

+*/

+SINT32 zDrvCodec_SetInpathMute(T_ZDrvCodec_Handle handle, BOOL onoff);

+

+/**

+* @brief	Set the mute function in the output path.

+*

+* @param	handle	 T_ZDrvCodec_Handle

+* @param	onoff	 BOOL

+*

+* @return	0-DRV_SUCCESS, other-error

+*/

+SINT32 zDrvCodec_SetOutpathMute(T_ZDrvCodec_Handle handle, BOOL onoff);

+

+/**

+* @brief	read data to codec

+*

+* @param	regPage     the page number of the register

+* @param	regAddress  register address

+* @param	regValue    register value

+*

+* @return	0-DRV_SUCCESS, other-error

+*/

+//SINT32 codec_I2CRead(UINT8 regPage, UINT8 regAddress, UINT8 *regValue);

+

+#endif/*#ifndef _DRV_CODEC_TLV3100_H*/

+