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*/
+