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

📄 rtcodeccomm.h

📁 realtek562x系列驱动源码。wince
💻 H
📖 第 1 页 / 共 2 页
字号:
#define STEREO_SCLK_DIV1_11			(0xA<<12)
#define STEREO_SCLK_DIV1_12			(0xB<<12)
#define STEREO_SCLK_DIV1_13			(0xC<<12)
#define STEREO_SCLK_DIV1_14			(0xD<<12)
#define STEREO_SCLK_DIV1_15			(0xE<<12)
#define STEREO_SCLK_DIV1_16			(0xF<<12)


//Stereo DAC Clock Control 2(0x62)
#define STEREO_AD_64OSR_SEL_MASK	(0x1)
#define STEREO_AD_64OSR_SEL_128X	(0x0)
#define STEREO_AD_64OSR_SEL_64X		(0x1)

#define STEREO_AD_FILTER_DIV2_MASK	(0x7<<1)
#define STEREO_AD_FILTER_DIV2_2		(0x0<<1)
#define STEREO_AD_FILTER_DIV2_4		(0x1<<1)
#define STEREO_AD_FILTER_DIV2_8		(0x2<<1)
#define STEREO_AD_FILTER_DIV2_16	(0x3<<1)
#define STEREO_AD_FILTER_DIV2_32	(0x4<<1)

#define STEREO_AD_FILTER_DIV1_MASK	(0xF<<4)
#define STEREO_AD_FILTER_DIV1_1		(0x0<<4)
#define STEREO_AD_FILTER_DIV1_2		(0x1<<4)
#define STEREO_AD_FILTER_DIV1_3		(0x2<<4)
#define STEREO_AD_FILTER_DIV1_4		(0x3<<4)
#define STEREO_AD_FILTER_DIV1_5		(0x4<<4)
#define STEREO_AD_FILTER_DIV1_6		(0x5<<4)
#define STEREO_AD_FILTER_DIV1_7		(0x6<<4)
#define STEREO_AD_FILTER_DIV1_8		(0x7<<4)
#define STEREO_AD_FILTER_DIV1_9		(0x8<<4)
#define STEREO_AD_FILTER_DIV1_10	(0x9<<4)
#define STEREO_AD_FILTER_DIV1_11	(0xA<<4)
#define STEREO_AD_FILTER_DIV1_12	(0xB<<4)
#define STEREO_AD_FILTER_DIV1_13	(0xC<<4)
#define STEREO_AD_FILTER_DIV1_14	(0xD<<4)
#define STEREO_AD_FILTER_DIV1_15	(0xE<<4)
#define STEREO_AD_FILTER_DIV1_16	(0xF<<4)

#define STEREO_DA_64OSR_SEL_MASK	(1<<8)	
#define STEREO_DA_64OSR_SEL_128X	(0<<8)
#define STEREO_DA_64OSR_SEL_64X		(1<<8)

#define STEREO_DA_FILTER_DIV2_MASK	(0x7<<9)
#define STEREO_DA_FILTER_DIV2_2		(0x0<<9)
#define STEREO_DA_FILTER_DIV2_4		(0x1<<9)
#define STEREO_DA_FILTER_DIV2_8		(0x2<<9)
#define STEREO_DA_FILTER_DIV2_16	(0x3<<9)
#define STEREO_DA_FILTER_DIV2_32	(0x4<<9)

#define STEREO_DA_FILTER_DIV1_MASK	(0xF<<12)
#define STEREO_DA_FILTER_DIV1_1		(0x0<<12)
#define STEREO_DA_FILTER_DIV1_2		(0x1<<12)
#define STEREO_DA_FILTER_DIV1_3		(0x2<<12)
#define STEREO_DA_FILTER_DIV1_4		(0x3<<12)
#define STEREO_DA_FILTER_DIV1_5		(0x4<<12)
#define STEREO_DA_FILTER_DIV1_6		(0x5<<12)
#define STEREO_DA_FILTER_DIV1_7		(0x6<<12)
#define STEREO_DA_FILTER_DIV1_8		(0x7<<12)
#define STEREO_DA_FILTER_DIV1_9		(0x8<<12)
#define STEREO_DA_FILTER_DIV1_10	(0x9<<12)
#define STEREO_DA_FILTER_DIV1_11	(0xA<<12)
#define STEREO_DA_FILTER_DIV1_12	(0xB<<12)
#define STEREO_DA_FILTER_DIV1_13	(0xC<<12)
#define STEREO_DA_FILTER_DIV1_14	(0xD<<12)
#define STEREO_DA_FILTER_DIV1_15	(0xE<<12)
#define STEREO_DA_FILTER_DIV1_16	(0xF<<12)


//Voice DAC PCM Clock Control 1(0x64)
#define VOICE_SCLK_DIV2_MASK		(0x7)
#define VOICE_SCLK_DIV2_2			(0x0)
#define VOICE_SCLK_DIV2_4			(0x1)
#define VOICE_SCLK_DIV2_8			(0x2)
#define VOICE_SCLK_DIV2_16			(0x3)
#define VOICE_SCLK_DIV2_32			(0x4)

#define VOICE_SCLK_DIV1_MASK		(0xF<<4)
#define VOICE_SCLK_DIV1_1			(0x0<<4)
#define VOICE_SCLK_DIV1_2			(0x1<<4)
#define VOICE_SCLK_DIV1_3			(0x2<<4)
#define VOICE_SCLK_DIV1_4			(0x3<<4)
#define VOICE_SCLK_DIV1_5			(0x4<<4)
#define VOICE_SCLK_DIV1_6			(0x5<<4)
#define VOICE_SCLK_DIV1_7			(0x6<<4)
#define VOICE_SCLK_DIV1_8			(0x7<<4)
#define VOICE_SCLK_DIV1_9			(0x8<<4)
#define VOICE_SCLK_DIV1_10			(0x9<<4)
#define VOICE_SCLK_DIV1_11			(0xA<<4)
#define VOICE_SCLK_DIV1_12			(0xB<<4)
#define VOICE_SCLK_DIV1_13			(0xC<<4)
#define VOICE_SCLK_DIV1_14			(0xD<<4)
#define VOICE_SCLK_DIV1_15			(0xE<<4)
#define VOICE_SCLK_DIV1_16			(0xF<<4)

#define VOICE_EXTCLK_OUT_DIV_MASK   (0x7<<8)
#define VOICE_EXTCLK_OUT_DIV_1		(0x0<<8)
#define VOICE_EXTCLK_OUT_DIV_2   	(0x1<<8)
#define VOICE_EXTCLK_OUT_DIV_3   	(0x2<<8)
#define VOICE_EXTCLK_OUT_DIV_4   	(0x3<<8)
#define VOICE_EXTCLK_OUT_DIV_6   	(0x4<<8)
#define VOICE_EXTCLK_OUT_DIV_8   	(0x5<<8)
#define VOICE_EXTCLK_OUT_DIV_12   	(0x6<<8)
#define VOICE_EXTCLK_OUT_DIV_16   	(0x7<<8)

#define VOICE_WCLK_DIV_MASK			(0x1<<13)
#define VOICE_WCLK_DIV_32			(0x0<<13)
#define VOICE_WCLK_DIV_64			(0x1<<13)

#define VOICE_SYSCLK_SEL_MASK		(0x1<<14)
#define VOICE_SYSCLK_SEL_MCLK		(0x0<<14)
#define VOICE_SYSCLK_SEL_EXTCLK		(0x1<<14)

#define VOICE_MCLK_SEL_MASK			(0x1<<15)
#define VOICE_MCLK_SEL_MCLK_INPUT	(0x0<<15)
#define VOICE_MCLK_SEL_PLL_OUTPUT	(0x1<<15)

//Voice DAC PCM Clock Control 2(0x66)

#define VOICE_CLK_FILTER_DIV1_MASK	(0x7)
#define VOICE_CLK_FILTER_DIV1_2		(0x0)
#define VOICE_CLK_FILTER_DIV1_4		(0x1)
#define VOICE_CLK_FILTER_DIV1_8		(0x2)
#define VOICE_CLK_FILTER_DIV1_16	(0x3)
#define VOICE_CLK_FILTER_DIV1_32	(0x4)

#define VOICE_CLK_FILTER_DIV2_MASK	(0xF<<4)
#define VOICE_CLK_FILTER_DIV2_1		(0x0<<4)
#define VOICE_CLK_FILTER_DIV2_2		(0x1<<4)
#define VOICE_CLK_FILTER_DIV2_3		(0x2<<4)
#define VOICE_CLK_FILTER_DIV2_4		(0x3<<4)
#define VOICE_CLK_FILTER_DIV2_5		(0x4<<4)
#define VOICE_CLK_FILTER_DIV2_6		(0x5<<4)
#define VOICE_CLK_FILTER_DIV2_7		(0x6<<4)
#define VOICE_CLK_FILTER_DIV2_8		(0x7<<4)
#define VOICE_CLK_FILTER_DIV2_9		(0x8<<4)
#define VOICE_CLK_FILTER_DIV2_10	(0x9<<4)
#define VOICE_CLK_FILTER_DIV2_11	(0xA<<4)
#define VOICE_CLK_FILTER_DIV2_12	(0xB<<4)
#define VOICE_CLK_FILTER_DIV2_13	(0xC<<4)
#define VOICE_CLK_FILTER_DIV2_14	(0xD<<4)
#define VOICE_CLK_FILTER_DIV2_15	(0xE<<4)
#define VOICE_CLK_FILTER_DIV2_16	(0xF<<4)

#define VOICE_AD_DA_SIG_CLK_DIV_MASK (0x7<<8)
#define VOICE_AD_DA_SIG_CLK_DIV_2 	(0x0<<8)
#define VOICE_AD_DA_SIG_CLK_DIV_4 	(0x1<<8)
#define VOICE_AD_DA_SIG_CLK_DIV_8 	(0x2<<8)
#define VOICE_AD_DA_SIG_CLK_DIV_16 	(0x3<<8)
#define VOICE_AD_DA_SIG_CLK_DIV_32 	(0x4<<8)
#define VOICE_AD_DA_SIG_CLK_DIV_64  (0x5<<8)

#define VOICE_AD_DA_SIG_CLK_F_DA_MASK (0x1<<12)
#define VOICE_AD_DA_SIG_CLK_F_DA_F	(0x0<<12)
#define VOICE_AD_DA_SIG_CLK_F_DA_D	(0x1<<12)

#define VOICE_AD_DA_FILTER_SEL_MASK  (0x1<<13)
#define VOICE_AD_DA_FILTER_SEL_128X	(0x0<<13)
#define VOICE_AD_DA_FILTER_SEL_64X	(0x1<<13)

#define VOICE_FILTER_CLK_F_MASK		(0x1<<14)
#define VOICE_FILTER_CLK_F_MCLK		(0x0<<14)
#define VOICE_FILTER_CLK_F_VBCLK	(0X1<<14)

#define VOICE_CLK_FILTER_SLAVE_DIV_MASK (0x1<<15)
#define VOICE_CLK_FILTER_SLAVE_DIV_1 	(0x0<<15)
#define VOICE_CLK_FILTER_SLAVE_DIV_2	(0x1<<15)	


//Psedueo Stereo & Spatial Effect Block Control(0x68)
#define SPATIAL_GAIN_MASK			(0x3<<6)
#define SPATIAL_GAIN_1_0			(0x0<<6)
#define SPATIAL_GAIN_1_5			(0x1<<6)
#define SPATIAL_GAIN_2_0			(0x2<<6)

#define SPATIAL_RATIO_MASK			(0x3<<4)
#define SPATIAL_RATIO_0_0			(0x0<<4)
#define SPATIAL_RATIO_0_66			(0x1<<4)
#define SPATIAL_RATIO_1_0			(0x2<<4)

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

#define STEREO_EXPENSION_EN			(0x1<<12)		
#define PSEUDO_STEREO_EN			(0x1<<13)
#define ALL_PASS_FILTER_EN			(0x1<<14)
#define SPATIAL_CTRL_EN				(0x1<<15)


typedef enum 
{
 BOOST_BYPASS,
 BOOST_20DB,
 BOOST_30DB,
 BOOST_40DB		
}MIC_BOOST_TYPE;

//Phone Call type define
typedef enum
{
 PHONE_CALL_NORAMAL,
// PHONE_CALL_HANDSFREE,
 PHONE_CALL_HANDSET,
 PHONE_CALL_BT_HEADSET,		
}PHONE_CALL_TYPE;


typedef struct 
{ 
	BYTE 	CodecIndex;
	unsigned short int wCodecValue;

}CodecRegister;	

typedef struct
{
	BOOL bEnable3D;	
	BYTE b3D_Gain;
	BYTE b3D_Ratio;

} S_3D_SPATIAL;

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_CONTROL=0x10,
	HW_EQ_INPUT_VOL,
	HW_EQ_OUTPUT_VOL,
	AVC_CTRL_REG0=0x20,				
	AVC_CTRL_REG1,
	AVC_CTRL_REG2,
	AVC_CTRL_REG3,
	AVC_CTRL_REG4,
	AVC_CTRL_REG5,
	CLASS_AB_REG=0x44,
	CLASS_D_REG=0x46,
	AD_DA_MIXER_IR5=0x54,

}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
{
	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;


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

//advance mixer 0x10
#define ENABLE_HW_EQ_BLOCK		(0x1<<15)
#define ENABLE_HW_EQ_HPF		(0x1<<4)
#define ENABLE_HW_EQ_BP3		(0x1<<3)
#define ENABLE_HW_EQ_BP2		(0x1<<2)
#define ENABLE_HW_EQ_BP1		(0x1<<1)
#define ENABLE_HW_EQ_LPF		(0x1<<0)

typedef enum
{
	R_MONO_MIXER=(0),
	R_RECORD_MIXER=(0x1<<1),
	R_HP_MIXER=(0x1<<2),
	R_PHONE=(0x1<<3),
	R_LINE_IN=(0x1<<4),
	R_MIC2=(0x1<<5),
	R_MIC1=(0x1<<6),
	L_MONO_MIXER=(0x1<<8),
	L_RECORD_MIXER=(0x1<<9),
	L_HP_MIXER=(0x1<<10),
	L_PHONE=(0x1<<11),
	L_LINE_IN=(0x1<<12),
	L_MIC2=(0x1<<13),
	L_MIC1=(0x1<<14),		

}ADC_INPUT_MIXER_CTRL;

typedef enum
{
	MASTER_MODE_A=0,
	MASTER_MODE_B,
	SLAVE_MODE_A,
	SLAVE_MODE_B,

}MODE_SEL;

typedef enum 
{
	DEPOP_MODE1_HP

}DEPOP_MODE;

#define ALL_FIELD				0xffff   

#define  MHZ11_980 11980000
#define  KHZ08_000 8000
#define  KHZ11_025 11025
#define  KHZ12_000 12000
#define  KHZ16_000 16000
#define  KHZ22_050 22050
#define  KHZ24_000 24000
#define  KHZ32_000 32000
#define  KHZ44_100 44100
#define  KHZ48_000 48000


//Class definition

class RT_CodecComm
{	
public:
	HardwareContext *m_pHWContext;
	RT_CodecComm();
	~RT_CodecComm();
	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 ChangeCodecPowerStatus(POWER_STATE power_state);
	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 ConfigPcmVoicePath(BOOL bEnableVoicePath,MODE_SEL mode);
	BOOL ConfigMicBias(BYTE Mic,BYTE MicBiasCtrl);
	BOOL ConfigVmidOutput(BYTE Vmid_CaseType);
	BOOL ConfigMicBoost(BYTE Mic,MIC_BOOST_TYPE BoostType);
	BOOL Enable_Main_Spatial(BOOL Enable_Main_Spatial);	
	BOOL Enable_3D_Spatial(S_3D_SPATIAL s3D_Spatial);
	BOOL Enable_Pseudo_Stereo(BOOL Enable_Pseudo_Stereo);
	BOOL Enable_All_Pass_Filter(BOOL Enable_APF);
	BOOL EnableAVC(BOOL Enable_AVC);
	BOOL EnablePLLPath(BOOL bEnablePLL,unsigned short int K,unsigned short int M,unsigned short int N);
	BOOL Enable_ADC_Input_Source(ADC_INPUT_MIXER_CTRL ADC_Input_Sour,BOOL Enable);
	BOOL EnableHwEq(HW_EQ_PRESET_TYPE Hw_Eq_Type,BOOL HwEqEnable);
	BOOL DepopForHP(DEPOP_MODE Depop_mode);
	BOOL AudioOutEnable(WAVOUT_PATH WavOutPath,BOOL Mute);
	void SaveCodecRegToShadow();
	void RestoreRegToCodec();
	void SaveCodecExtRegToShadow();
	void ReStoreExtRegToCodec();
	DWORD ProcessAudioMessage(UINT uMsg,DWORD dwParam1,DWORD dwParam2);
	void DelayMSTime(unsigned int MilliSec);
	
#if USE_I2S_INTERFACE	

	BOOL I2S_Codec_SR_Ctrl(void);
	
#endif

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


#endif //__RTCODECCOMM_H__

⌨️ 快捷键说明

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