blob: 2f7c8e81273aab3992ea33aeaf9cae40538d0d0b [file] [log] [blame]
/******************************************************************************
* @file pga.h
*
* @brief for TLSR chips
*
* @author public@telink-semi.com;
* @date Sep. 30, 2010
*
* @attention
*
* Copyright (C) 2019-2020 Telink Semiconductor (Shanghai) Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*****************************************************************************/
#ifndef pga_H
#define pga_H
#include "bsp.h"
enum{
PGA_AIN_C0,
PGA_AIN_C1,
PGA_AIN_C2,
PGA_AIN_C3,
};
//this config for PGA value.
enum{
PGA_GAIN_VOL_45_2DB = 0x00,//45.2dB
PGA_GAIN_VOL_43_5DB = 0x01,
PGA_GAIN_VOL_42_1DB = 0x02,
PGA_GAIN_VOL_40_5DB = 0x03,
PGA_GAIN_VOL_39_1DB = 0x04,
PGA_GAIN_VOL_37_4DB = 0x05,
PGA_GAIN_VOL_36_0DB = 0x06,
PGA_GAIN_VOL_34_6DB = 0x07,
PGA_GAIN_VOL_33_0DB = 0x08,//33.0dB
PGA_GAIN_VOL_30_1DB = 0x09,
PGA_GAIN_VOL_27_0DB = 0x0a,
PGA_GAIN_VOL_24_0DB = 0x0b,
PGA_GAIN_VOL_21_0DB = 0x0c,
PGA_GAIN_VOL_15_0DB = 0x0d,
PGA_GAIN_VOL_9_0DB = 0x0e,
PGA_GAIN_VOL_0_0DB = 0x0f,
};
#define SET_PGA_CHN_ON(v) do{\
unsigned char val=analog_read(0x80+124);\
val &= (~(v));\
analog_write(0x80+124,val);\
}while(0)
#define SET_PGA_LEFT_P_AIN(v) do{\
unsigned char val=ReadAnalogReg(0x80+125);\
val &= 0xfc;\
val |= (((unsigned char)(v))&0x03);\
WriteAnalogReg(0x80+125,val);\
}while(0)
#define SET_PGA_LEFT_N_AIN(v) do{\
unsigned char val=ReadAnalogReg(0x80+125);\
val &= 0xf3;\
val |= (((unsigned char)(v)<<2)&0x0c);\
WriteAnalogReg(0x80+125,val);\
}while(0)
#define SET_PGA_RIGHT_P_AIN(v) do{\
unsigned char val=ReadAnalogReg(0x80+125);\
val &= 0xcf;\
val |= (((unsigned char)(v)<<4)&0x30);\
WriteAnalogReg(0x80+125,val);\
}while(0)
#define SET_PGA_RIGHT_N_AIN(v) do{\
unsigned char val=ReadAnalogReg(0x80+125);\
val &= 0x3f;\
val |= (((unsigned char)(v)<<6)&0xc0);\
WriteAnalogReg(0x80+125,val);\
}while(0)
#define SET_PGA_GAIN_FIX_VALUE(v) do{\
unsigned char val=0;\
val |= (((unsigned char)(v))&0x7f);\
write_reg8(0xb63,val|0x80);\
}while(0)
/**
* @brief This function servers to set pga input volume.The configuration of the PGA_GAIN_VOL_15_0DB is the optimal configuration under the UEI standard
* @param[in] none.
* @return none.
*/
void set_pga_input_vol(void)
{
analog_write(codec_ana_cfg2,analog_read(codec_ana_cfg2) | 0x0a);
analog_write(codec_ana_cfg3,analog_read(codec_ana_cfg3) & 0x00);
analog_write(codec_ana_cfg4,(analog_read(codec_ana_cfg4) & 0x00) | PGA_GAIN_VOL_15_0DB);//For user config for input the PGAVOL.
}
#endif