hw_codec.h 2.67 KB
/*
 * hw_codec.h
 *
 * Created on: 2019-6-4
 * Author: Windowns
 * Maintiners: LGD and LeeLin
 */

#ifndef HW_CODEC
#define HW_CODEC


//#define AUDIO_ADC_24BIT
#define AUDIO_24_BIT_OUTPUT

enum
{
	enAUX_CHANNEL,
	enMIC_P_CHANL,
	enMIC_P_CH_WITH_BIAS,        //only for bias of micphone .
	enADC_POWER_OFF
};

enum
{
	enMIC_BOOST_0dB,   //0dB
	enMIC_BOOST_6dB,   //6dB
	enMIC_BOOST12dB,   //12dB
	enMIC_BOOST20dB    //20dB
};

enum
{
	enSINGLE_ENDED,
	enDIFFERENTIAL
};

enum 
{
    enDAC_POWER_OFF,
    enDAC_POWER_ON
};

enum
{
    enVREF_PIN_HAVE_NO,
    enVREF_PIN_HAVE,
};
enum
{
    enALC_SEL_INVALID,
    enALC_SEL_ACTIVE     /*only left channel, havn't right channel.*/
};

enum
{  
    enALC_NORMAL_MOD,
    enALC_LIMITER_MOD
};

enum
{   

    enALC_MAX_M12dB,
    enALC_MAX_M6dB, 
    enALC_MAX_0dB, 
    enALC_MAX_6dB,
    enALC_MAX_12dB,
    enALC_MAX_18dB,
    enALC_MAX_24dB,
    enALC_MAX_35dB,
};   

enum
{   

    enALC_MIN_M12dB,
    enALC_MIN_M6dB, 
    enALC_MIN_0dB, 
    enALC_MIN_6dB,
    enALC_MIN_12dB,
}; 

enum  //for getting  noise threshold value
{
    enNOISE_THD_M36FS,
    enNOISE_THD_M42FS,
    enNOISE_THD_M48FS,
    enNOISE_THD_M54FS,
    enNOISE_THD_M60FS,
    enNOISE_THD_M66FS,
    enNOISE_THD_M72FS,
    enNOISE_THD_M78FS,
};
/**********Mic Analog aduio_in as similar with aux_in*****/
/**********precision is 0.75dB/step, range from -12dB to +32.5dB ************/
//#define  OTK5286_B_D  // removed to "oem.h"
#define  HW_CODEC_ADC_PGA_UNIT_dB(X)   ( X > 0 ? ((X*100/75)+ 0x10) : ( 0x10 + X*100/75))
/**********precision is 0.75dB/step, range of -32.5 to +12dB ****************/
#define  HW_CODEC_DAC_PGA_UNIT_dB(X)   ( X > 0 ? ((X*100/75)+ 0x2F) : ( 0x2F + X*100/75))
/**********ALC Target Peak Level, 1.5dBFS per step: range of -1.5dBFS to -24dBFS ******************/
#define  HW_CODEC_ADC_ALC_LEVEL_dBFS(X)((X+1.5 > 0 ) ? 0x0F :(0X10+ X*10/15))

/**************************************************************************************************/
void audio_code_init(void);
void hw_codec_adc_channel_with_gain(U8 channel,U8 mic_boost, U8 gain_dB, U8 diff);
void hw_codec_adc_ALC_Peak_Limiter(U8 alc_sel,U8 alc_mod,U8 maxgain,U8 mingain,U8 noise_threshold,U8 alc_lvl);
void hw_codec_dac_output_with_gain(U8 enable,U8 gain_dB, U8 sidetone );
void audio_code_ultra_consumpation(void);

#define HW_CODEC_ADC_CHANNEL_WITH_GAIN(channel,mic_boost,gain_dB,diff)  hw_codec_adc_channel_with_gain(channel,mic_boost,gain_dB,diff)
#define HW_CODEC_DAC_OUTPUT_WITH_GAIN(enable,gain_dB,sidetone)  hw_codec_dac_output_with_gain(enable,gain_dB,sidetone);
#define AUDIO_CODE_ULTRA_COMSUMPATON  audio_code_ultra_consumpation();
#define HW_CODEC_ADC_INIT             hw_codec_adc_init();

#endif /*  */