⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rt5621.h

📁 realtek562x系列驱动源码。wince
💻 H
📖 第 1 页 / 共 2 页
字号:
#define SPK_D_AMP_CTRL_RATIO_100		(0x3<<10)		//1.00 Vdd

//Global Clock Control Register(0x42)
#define SYSCLK_SOUR_SEL_MASK			(0x1<<15)
#define SYSCLK_SOUR_SEL_MCLK			(0x0<<15)		//system Clock source from MCLK
#define SYSCLK_SOUR_SEL_PLL				(0x1<<15)		//system Clock source from PLL
#define PLLCLK_SOUR_SEL_MCLK			(0x0<<14)		//PLL clock source from MCLK
#define PLLCLK_SOUR_SEL_BITCLK			(0x1<<14)		//PLL clock source from BITCLK

#define PLLCLK_DIV_RATIO_MASK			(0x3<<1)		
#define PLLCLK_DIV_RATIO_DIV1			(0x0<<1)		//DIV 1
#define PLLCLK_DIV_RATIO_DIV2			(0x1<<1)		//DIV 2
#define PLLCLK_DIV_RATIO_DIV4			(0x2<<1)		//DIV 4
#define PLLCLK_DIV_RATIO_DIV8			(0x3<<1)		//DIV 8

#define PLLCLK_PRE_DIV1					(0x0)			//DIV 1
#define PLLCLK_PRE_DIV2					(0x1)			//DIV 2

//PLL Control(0x44)

#define PLL_CTRL_M_VAL(m)		((m)&0xf)
#define PLL_CTRL_K_VAL(k)		(((k)&0x7)<<4)
#define PLL_CTRL_N_VAL(n)		(((n)&0xff)<<8)

//GPIO Pin Configuration(0x4C)
#define GPIO_PIN_MASK				(0x1<<1)
#define GPIO_PIN_SET_INPUT			(0x1<<1)
#define GPIO_PIN_SET_OUTPUT			(0x0<<1)

//Pin Sharing(0x56)
#define LINEIN_L_PIN_SHARING		(0x1<<15)
#define LINEIN_L_PIN_AS_LINEIN_L	(0x0<<15)
#define LINEIN_L_PIN_AS_JD1			(0x1<<15)

#define LINEIN_R_PIN_SHARING		(0x1<<14)
#define LINEIN_R_PIN_AS_LINEIN_R	(0x0<<14)
#define LINEIN_R_PIN_AS_JD2			(0x1<<14)

#define GPIO_PIN_SHARING			(0x3)
#define GPIO_PIN_AS_GPIO			(0x0)
#define GPIO_PIN_AS_IRQOUT			(0x1)
#define GPIO_PIN_AS_PLLOUT			(0x3)

//Jack Detect Control Register(0x5A)
#define JACK_DETECT_MASK			(0x3<<14)
#define JACK_DETECT_USE_JD2			(0x3<<14)
#define JACK_DETECT_USE_JD1			(0x2<<14)
#define JACK_DETECT_USE_GPIO		(0x1<<14)
#define JACK_DETECT_OFF				(0x0<<14)

#define	SPK_EN_IN_HI				(0x1<<11)
#define AUX_R_EN_IN_HI				(0x1<<10)
#define AUX_L_EN_IN_HI				(0x1<<9)
#define HP_EN_IN_HI					(0x1<<8)
#define	SPK_EN_IN_LO				(0x1<<7)
#define AUX_R_EN_IN_LO				(0x1<<6)
#define AUX_L_EN_IN_LO				(0x1<<5)
#define HP_EN_IN_LO					(0x1<<4)

////MISC CONTROL(0x5E)
#define DISABLE_FAST_VREG			(0x1<<15)
#define THERMAL_SHUT_DOWN_EN		(0x1<<14)
#define SPK_CLASS_AB_OC_PD			(0x1<<13)
#define HP_DEPOP_MODE3_EN			(0x1<<10)
#define HP_DEPOP_MODE2_EN			(0x1<<9)
#define HP_DEPOP_MODE1_EN			(0x1<<8)
#define AUXOUT_DEPOP_MODE3_EN		(0x1<<6)
#define AUXOUT_DEPOP_MODE2_EN		(0x1<<5)
#define AUXOUT_DEPOP_MODE1_EN		(0x1<<4)
#define M_DAC_L_INPUT				(0x1<<3)
#define M_DAC_R_INPUT				(0x1<<2)
#define IRQOUT_INV_CTRL				(0x1<<0)

//Psedueo Stereo & Spatial Effect Block Control(0x60)
#define SPATIAL_CTRL_EN				(0x1<<15)
#define ALL_PASS_FILTER_EN			(0x1<<14)
#define PSEUDO_STEREO_EN			(0x1<<13)
#define STEREO_EXPENSION_EN			(0x1<<12)

#define GAIN_3D_PARA_L_MASK			(0x7<<9)
#define GAIN_3D_PARA_L_1_00			(0x0<<9)
#define GAIN_3D_PARA_L_1_25			(0x1<<9)
#define GAIN_3D_PARA_L_1_50			(0x2<<9)
#define GAIN_3D_PARA_L_1_75			(0x3<<9)
#define GAIN_3D_PARA_L_2_00			(0x4<<9)

#define GAIN_3D_PARA_R_MASK			(0x7<<6)
#define GAIN_3D_PARA_R_1_00			(0x0<<6)
#define GAIN_3D_PARA_R_1_25			(0x1<<6)
#define GAIN_3D_PARA_R_1_50			(0x2<<6)
#define GAIN_3D_PARA_R_1_75			(0x3<<6)
#define GAIN_3D_PARA_R_2_00			(0x4<<6)

#define RATIO_3D_L_MASK				(0x3<<4)
#define RATIO_3D_L_0_0				(0x0<<4)
#define RATIO_3D_L_0_66				(0x1<<4)
#define RATIO_3D_L_1_0				(0x2<<4)

#define RATIO_3D_R_MASK				(0x3<<2)
#define RATIO_3D_R_0_0				(0x0<<2)
#define RATIO_3D_R_0_66				(0x1<<2)
#define RATIO_3D_R_1_0				(0x2<<2)

#define APF_MASK					(0x3)
#define APF_FOR_48K					(0x3)
#define APF_FOR_44_1K				(0x2)
#define APF_FOR_32K					(0x1)

//EQ CONTROL(0x62)

#define EN_HW_EQ_BLK			(0x1<<15)		//HW EQ block control
#define EN_HW_EQ_HPF_MODE		(0x1<<14)		//High Frequency shelving filter mode
#define EN_HW_EQ_SOUR			(0x1<<11)		//0:DAC PATH,1:ADC PATH
#define EN_HW_EQ_HPF			(0x1<<4)		//EQ High Pass Filter Control
#define EN_HW_EQ_BP3			(0x1<<3)		//EQ Band-3 Control
#define EN_HW_EQ_BP2			(0x1<<2)		//EQ Band-2 Control
#define EN_HW_EQ_BP1			(0x1<<1)		//EQ Band-1 Control
#define EN_HW_EQ_LPF			(0x1<<0)		//EQ Low Pass Filter Control

//EQ Mode Change Enable(0x66)
#define EQ_HPF_CHANGE_EN		(0x1<<4)		//EQ High Pass Filter Mode Change Enable
#define EQ_BP3_CHANGE_EN		(0x1<<3)		//EQ Band-3 Pass Filter Mode Change Enable
#define EQ_BP2_CHANGE_EN		(0x1<<2)		//EQ Band-2 Pass Filter Mode Change Enable
#define EQ_BP1_CHANGE_EN		(0x1<<1)		//EQ Band-1 Pass Filter Mode Change Enable
#define EQ_LPF_CHANGE_EN		(0x1<<0)		//EQ Low Pass Filter Mode Change Enable


//AVC Control(0x68)
#define AVC_ENABLE				(0x1<<15)
#define AVC_TARTGET_SEL_MASK	(0x1<<14)
#define	AVC_TARTGET_SEL_R 		(0x1<<14)
#define	AVC_TARTGET_SEL_L		(0x0<<14)

typedef enum 
{
 BOOST_BYPASS,
 BOOST_20DB,
 BOOST_30DB,
 BOOST_40DB		
}MIC_BOOST_TYPE;
		
typedef struct 
{ 
	BYTE 	CodecIndex;
	unsigned short int wCodecValue;

}CodecRegister;	


typedef enum 
{
	HW_EQ_LP0_A1=0,
	HW_EQ_LP0_H0,
	HW_EQ_BP1_A1,
	HW_EQ_BP1_A2,
	HW_EQ_BP1_H0,
	HW_EQ_BP2_A1,
	HW_EQ_BP2_A2,
	HW_EQ_BP2_H0,
	HW_EQ_BP3_A1,
	HW_EQ_BP3_A2,
	HW_EQ_BP3_H0,
	HW_EQ_BP4_A1,
	HW_EQ_HP4_H0,
	HW_EQ_INPUT_VOL=0x11,
	HW_EQ_OUTPUT_VOL,			
	AVC_CTRL_REG1=0x21,
	AVC_CTRL_REG2,
	AVC_CTRL_REG3,
	AVC_CTRL_REG4,
	AVC_CTRL_REG5,
	DIG_INTER_REG=0x39,			
	CLASS_AB_REG=0x44,
	CLASS_D_REG=0x46,	
}EXT_CODEC_INDEX;


typedef enum 
{
	POWER_STATE_D0=0,
	POWER_STATE_D1,
	POWER_STATE_D1_PLAYBACK,
	POWER_STATE_D1_RECORD,
	POWER_STATE_D2,
	POWER_STATE_D2_PLAYBACK,
	POWER_STATE_D2_RECORD,
	POWER_STATE_D3,
	POWER_STATE_D4

}POWER_STATE;


typedef enum 
{
	DEPOP_MODE1_HP,
	DEPOP_MODE2_HP,
	DEPOP_MODE3_HP

}DEPOP_MODE;

typedef enum
{
	SET_3D_L_GAIN=0,
	SET_3D_R_GAIN,
	SET_3D_L_RATIO,
	SET_3D_R_RATIO,
	SET_3D_ENABLE,
	SET_3D_DISABLE

}SET_3D_PARA_MODE;

typedef enum
{
	RT_WAVOUT_PATH_ALL=0,
	RT_WAVOUT_PATH_HP,
	RT_WAVOUT_PATH_SPK,
	RT_WAVOUT_PATH_AUX,
	RT_WAVOUT_PATH_MONO,
	RT_WAVOUT_PATH_DAC,
}WAVOUT_PATH;


typedef enum
{
	CLUB=0,
	DANCE,
	LIVE,	
	POP,
	ROCK,
}HW_EQ_PRESET_TYPE;

typedef struct  _HW_EQ_PRESET
{
	HW_EQ_PRESET_TYPE 	HwEqType;
	unsigned short int 	EqValue[14];
	unsigned short int  HwEQCtrl;

}HW_EQ_PRESET;


class RT5621_Codec
{	
public:
	HardwareContext *m_pHWContext;
	RT5621_Codec();
	~RT5621_Codec();
	BOOL ShadowReadCodec(BYTE Offset, unsigned short int *Data);
	BOOL ShadowWriteCodec(BYTE Offset, unsigned short int Data);
	BOOL WriteCodecRegMask(BYTE Offset, unsigned short int Data,unsigned short int Mask);	
	BOOL WriteCodecAdvance(EXT_CODEC_INDEX Ext_Index,unsigned short int Data);
	BOOL ReadCodecAdvance(EXT_CODEC_INDEX Index,unsigned short int *Data);
	BOOL WriteCodecAdvanceMask(EXT_CODEC_INDEX Ext_Index,unsigned short int Ext_Data,unsigned short int Ext_Data_Mask);
	BOOL Init(HardwareContext *HwCxt);
    BOOL InitRTCodecReg(void);
	BOOL ConfigMicBias(BYTE Mic,BYTE MicBiasCtrl);	
	BOOL ConfigVmidOutput(BYTE SPK_Type,unsigned short int VMID_RATIO);
	BOOL ConfigMicBoost(BYTE Mic,MIC_BOOST_TYPE BoostType);
	BOOL EnablePLLPath(BOOL bEnablePLL,unsigned short int K,unsigned short int M,unsigned short int N);
	BOOL Enable_ADC_Input_Source(unsigned short int ADC_Input_Sour,BOOL Enable);	
	void DepopForHP(DEPOP_MODE Depop_mode);	
	void SaveCodecRegToShadow();
	void RestoreRegToCodec();
	void SaveCodecExtRegToShadow();
	void ReStoreExtRegToCodec();	
	void DelayMSTime(unsigned int MilliSec);
	BOOL ChangeCodecPowerStatus(POWER_STATE power_state);
	BOOL EnableAVC(BOOL Enable_AVC);
	BOOL Enable_Main_Spatial(BOOL Enable_Main_Spatial);	
	BOOL Set_3D_Func(SET_3D_PARA_MODE S_3d_para,BYTE para);
	BOOL Enable_Pseudo_Stereo(BOOL Enable_Pseudo_Stereo);
	BOOL Enable_All_Pass_Filter(BOOL Enable_APF);
	BOOL EnableHwEq(HW_EQ_PRESET_TYPE Hw_Eq_Type,BOOL HwEqEnable);	
	BOOL AudioOutEnable(WAVOUT_PATH WavOutPath,BOOL Mute);
	DWORD ProcessAudioMessage(UINT uMsg,DWORD dwParam1,DWORD dwParam2);
	BOOL JackDectCtrl(unsigned short int JackDetSel,unsigned short int OutputEnable);
	void EnableVref(BOOL VrefEnable);

private:	
	unsigned short int m_WaveInSampleRate;
	unsigned short int m_WaveOutSampleRate;	
	friend class HardwareContext; 
};


#endif //__RTCODEC5621_H__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -