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

📄 csl_clkrstaux.h

📁 dsp在音频处理中的运用
💻 H
📖 第 1 页 / 共 2 页
字号:
/* Updated by Ravindra Upadhyaya on 02-02-2005 */ #ifndef _CSL_CLKRSTAUX_H_#define _CSL_CLKRSTAUX_H_#include <csl_clkrst.h>#ifdef __cplusplusextern "C" {#endifstatic inline void CSL_clkrstClkIdleEntry(		CSL_ClkrstHandle        hClkrst,		Uint16                  ckIdleEntry		){	Uint32 i=0;	Uint32 _arm_idlect1 = hClkrst->regs->ARM_IDLECT1 &			          ~( CSL_FMKT(CLKRST_ARM_IDLECT1_IDLCLKOUT_ARM, IDLE_STOP) |			             CSL_FMKT(CLKRST_ARM_IDLECT1_IDLTIM_ARM, IDLE_STOP) |				         CSL_FMKT(CLKRST_ARM_IDLECT1_IDLAPI_ARM, IDLE_STOP) |				         CSL_FMKT(CLKRST_ARM_IDLECT1_IDLDPLL_ARM, IDLE_STOP) |				         CSL_FMKT(CLKRST_ARM_IDLECT1_IDLIF_ARM, IDLE_STOP) |				         CSL_FMKT(CLKRST_ARM_IDLECT1_IDLLCD_ARM, IDLE_STOP) |				         CSL_FMKT(CLKRST_ARM_IDLECT1_IDLPER_ARM, IDLE_STOP) |				         CSL_FMKT(CLKRST_ARM_IDLECT1_IDLXORP_ARM, IDLE_STOP) |				         CSL_FMKT(CLKRST_ARM_IDLECT1_IDLWDT_ARM, IDLE_STOP));	Uint32 _arm_idlect2 = hClkrst->regs->ARM_IDLECT2 &                      ~( CSL_FMKT(CLKRST_ARM_IDLECT2_EN_CKOUT_ARM, ACTIVE)|				         CSL_FMKT(CLKRST_ARM_IDLECT2_EN_GPIOCK, ACTIVE)|				         CSL_FMKT(CLKRST_ARM_IDLECT2_DMACK_REQ, ACTIVE_ONREQ)|				         CSL_FMKT(CLKRST_ARM_IDLECT2_EN_TIMCK, ACTIVE)|				         CSL_FMKT(CLKRST_ARM_IDLECT2_EN_APICK, ACTIVE)|				         CSL_FMKT(CLKRST_ARM_IDLECT2_EN_LCDCK, ACTIVE)|				         CSL_FMKT(CLKRST_ARM_IDLECT2_EN_PERCK, ACTIVE)|				         CSL_FMKT(CLKRST_ARM_IDLECT2_EN_XORPCK, ACTIVE)|				         CSL_FMKT(CLKRST_ARM_IDLECT2_EN_WDTCK, ACTIVE));	Uint32 _arm_idlect3 = hClkrst->regs->ARM_IDLECT3 &			          ~( CSL_FMKT(CLKRST_ARM_IDLECT3_IDLOCPI_ARM, IDLE_STOP) |                         CSL_FMKT(CLKRST_ARM_IDLECT3_EN_OCPI_CK, ACTIVE) |				         CSL_FMKT(CLKRST_ARM_IDLECT3_IDLTC1_ARM, IDLE_STOP) |                         CSL_FMKT(CLKRST_ARM_IDLECT3_EN_TC1_CK, ACTIVE) |				         CSL_FMKT(CLKRST_ARM_IDLECT3_IDLTC2_ARM, IDLE_STOP) |                         CSL_FMKT(CLKRST_ARM_IDLECT3_EN_TC2_CK, ACTIVE));    /* To Idle the Clock Supplied to External Clock */	if (ckIdleEntry & (1 << i++)) {		_arm_idlect1 |= CSL_FMKT(CLKRST_ARM_IDLECT1_IDLCLKOUT_ARM, IDLE_STOP);		_arm_idlect2 |= CSL_FMKT(CLKRST_ARM_IDLECT2_EN_CKOUT_ARM, ACTIVE);		}   /* To Skip the DMA Bit in the ckIdleEntry Variable */    i++;    /* To Idle the MPU Timer Clock */	if (ckIdleEntry & (1 << i++)) {		_arm_idlect1 |= CSL_FMKT(CLKRST_ARM_IDLECT1_IDLTIM_ARM, IDLE_STOP);		_arm_idlect2 |= CSL_FMKT(CLKRST_ARM_IDLECT2_EN_TIMCK, ACTIVE);		}    /* To Idle the MPUI Clock */	if (ckIdleEntry & (1 << i++)) {		_arm_idlect1 |= CSL_FMKT(CLKRST_ARM_IDLECT1_IDLAPI_ARM, IDLE_STOP);		_arm_idlect2 |= CSL_FMKT(CLKRST_ARM_IDLECT2_EN_APICK, ACTIVE);		}    /* To Idle the DPLL */	if (ckIdleEntry & (1 << i++)) {		_arm_idlect1 |= CSL_FMKT(CLKRST_ARM_IDLECT1_IDLDPLL_ARM, IDLE_STOP);		}    /* To Idle the Clocks supplied to TIPB Bridge, DMA controller and TC */	if (ckIdleEntry & (1 << i++)) {		_arm_idlect1 |= CSL_FMKT(CLKRST_ARM_IDLECT1_IDLIF_ARM, IDLE_STOP);		_arm_idlect2 |= CSL_FMKT(CLKRST_ARM_IDLECT2_DMACK_REQ, ACTIVE_ONREQ);		}    /* To Idle the Clocks supplied to LCD controller */	if (ckIdleEntry & (1 << i++)) {		_arm_idlect1 |= CSL_FMKT(CLKRST_ARM_IDLECT1_IDLLCD_ARM, IDLE_STOP);		_arm_idlect2 |= CSL_FMKT(CLKRST_ARM_IDLECT2_EN_LCDCK, ACTIVE);		}    /* To Idle the Arm External Peripheral Clock */	if (ckIdleEntry & (1 << i++)) {		_arm_idlect1 |= CSL_FMKT(CLKRST_ARM_IDLECT1_IDLPER_ARM, IDLE_STOP);		_arm_idlect2 |= CSL_FMKT(CLKRST_ARM_IDLECT2_EN_PERCK, ACTIVE);		}    /* To Idle the OS Timer and External Reference Perepheral Clock */	if (ckIdleEntry & (1 << i++)) {		_arm_idlect1 |= CSL_FMKT(CLKRST_ARM_IDLECT1_IDLXORP_ARM, IDLE_STOP);		_arm_idlect2 |= CSL_FMKT(CLKRST_ARM_IDLECT2_EN_XORPCK, ACTIVE);		}    /* To Idle the WDT Clock */	if (ckIdleEntry & (1 << i++)) {		_arm_idlect1 |= CSL_FMKT(CLKRST_ARM_IDLECT1_IDLWDT_ARM, IDLE_STOP);		_arm_idlect2 |= CSL_FMKT(CLKRST_ARM_IDLECT2_EN_APICK, ACTIVE);		}    /* To Idle the OCPI Clock */	if (ckIdleEntry & (1 << i++)) {		_arm_idlect3 |= CSL_FMKT(CLKRST_ARM_IDLECT3_IDLOCPI_ARM, IDLE_STOP);		_arm_idlect3 |= CSL_FMKT(CLKRST_ARM_IDLECT3_EN_OCPI_CK, ACTIVE);		}    /* To Idle the TC1 Clock */	if (ckIdleEntry & (1 << i++)) {		_arm_idlect3 |= CSL_FMKT(CLKRST_ARM_IDLECT3_IDLTC1_ARM, IDLE_STOP);		_arm_idlect3 |= CSL_FMKT(CLKRST_ARM_IDLECT3_EN_TC1_CK, ACTIVE);		}    /* To Idle the TC2 Clock */	if (ckIdleEntry & (1 << i++)) {		_arm_idlect3 |= CSL_FMKT(CLKRST_ARM_IDLECT3_IDLTC2_ARM, IDLE_STOP);		_arm_idlect3 |= CSL_FMKT(CLKRST_ARM_IDLECT3_EN_TC2_CK, ACTIVE);		}   /* Skip the DSP Bit in the ckIdleEntry Variable */     i++;    /* To Enable the GPIO Clock and thereby its IDLE Configuration */	if (ckIdleEntry & (1 << i++)) {		_arm_idlect2 |= CSL_FMKT(CLKRST_ARM_IDLECT2_EN_GPIOCK, ACTIVE);		}	hClkrst->regs->ARM_IDLECT1 = _arm_idlect1;	hClkrst->regs->ARM_IDLECT2 = _arm_idlect2;	hClkrst->regs->ARM_IDLECT3 = _arm_idlect3;}static inline void CSL_clkrstMpuInthCkSource(		CSL_ClkrstHandle        hClkrst,		CSL_ClkrstMpuInthCk     mpuInthCkSrc		){	CSL_FINS(hClkrst->regs->ARM_CKCTL, CLKRST_ARM_CKCTL_ARM_INTHCK_SEL, mpuInthCkSrc);}static inline void CSL_clkrstClkSource(		CSL_ClkrstHandle        hClkrst,		CSL_ClkrstClkSrc        clkSource		){	CSL_FINS(hClkrst->regs->ARM_CKCTL, CLKRST_ARM_CKCTL_ARM_TIMXO, CSL_FEXT(clkSource, CLKRST_ARM_CKCTL_ARM_TIMXO));}static inline void CSL_clkrstClkScheme(		CSL_ClkrstHandle               hClkrst,		CSL_ClkrstHwSetupClkClkScheme  *clkPtr		){	Uint32 _arm_ckctl;	hClkrst->regs->ARM_SYSST = CSL_FMK(CLKRST_ARM_SYSST_CLOCK_SELECT, clkPtr->clkScheme);	_arm_ckctl = hClkrst->regs->ARM_CKCTL;	CSL_FINS(_arm_ckctl, CLKRST_ARM_CKCTL_DSPDIV, clkPtr->clkDiv.dspDiv);	CSL_FINS(_arm_ckctl, CLKRST_ARM_CKCTL_ARMDIV, clkPtr->clkDiv.mpuDiv);	CSL_FINS(_arm_ckctl, CLKRST_ARM_CKCTL_PERDIV, clkPtr->clkDiv.perDiv);	CSL_FINS(_arm_ckctl, CLKRST_ARM_CKCTL_LCDDIV, clkPtr->clkDiv.lcdDiv);	CSL_FINS(_arm_ckctl, CLKRST_ARM_CKCTL_TCDIV, clkPtr->clkDiv.tcDiv);	CSL_FINS(_arm_ckctl, CLKRST_ARM_CKCTL_DSPMMUDIV, clkPtr->clkDiv.dspmmuDiv);	hClkrst->regs->ARM_CKCTL = _arm_ckctl;}static inline void CSL_clkrstCkout(		CSL_ClkrstHandle               hClkrst,		CSL_ClkrstHwSetupClkCkout      *ckoutPtr		){	Uint32 _arm_ckout1;	_arm_ckout1 = hClkrst->regs->ARM_CKOUT1;	CSL_FINS(_arm_ckout1, CLKRST_ARM_CKOUT1_ACLKOUT, ckoutPtr->mpuDomain);	CSL_FINS(_arm_ckout1, CLKRST_ARM_CKOUT1_DCLKOUT, ckoutPtr->dspDomain);	CSL_FINS(_arm_ckout1, CLKRST_ARM_CKOUT1_TCLKOUT, ckoutPtr->tcDomain);	hClkrst->regs->ARM_CKOUT1 = _arm_ckout1;}static inline void CSL_clkrstPwrctl(		CSL_ClkrstHandle               hClkrst,		CSL_ClkrstHwSetupPwrctl        *pwrctlPtr		){	Uint32 _arm_ewupct;	_arm_ewupct = hClkrst->regs->ARM_EWUPCT;	CSL_FINS(_arm_ewupct, CLKRST_ARM_EWUPCT_REPWR_EN, pwrctlPtr->resPwr);	CSL_FINS(_arm_ewupct, CLKRST_ARM_EWUPCT_EXTPW, pwrctlPtr->delayRespwrActiveToClkStart);	hClkrst->regs->ARM_EWUPCT = _arm_ewupct;}static inline void CSL_clkrstWkupMode(		CSL_ClkrstHandle               hClkrst,		CSL_ClkrstWkupChipNwkup        wkupMode		){	CSL_FINS(hClkrst->regs->ARM_IDLECT1, CLKRST_ARM_IDLECT1_WKUP_MODE, wkupMode);}static inline void CSL_clkrstGetCkEn(		CSL_ClkrstHandle        hClkrst,		Uint16                  *ckEnable		){	Uint32 i=0;	Uint32 _arm_idlect2 = 0;	Uint32 _arm_idlect3 = 0;	_arm_idlect2 = hClkrst->regs->ARM_IDLECT2;	_arm_idlect3 = hClkrst->regs->ARM_IDLECT3;	*ckEnable = 0;     /* To get the status of the Clock Generated from DPLL1 Clock Output */		if (_arm_idlect2 & CSL_FMKT(CLKRST_ARM_IDLECT2_EN_CKOUT_ARM, ACTIVE))         {			*ckEnable |= (1 << i);		}     /* To get the status of the Clock Supplied to System DMA Controller */      i++;		if (_arm_idlect2 & CSL_FMKT(CLKRST_ARM_IDLECT2_DMACK_REQ, ACTIVE_ONREQ))        {			*ckEnable |= (1 << i);		}     /* To get the status of the Clock Supplied to MPU Timer */      i++;		if (_arm_idlect2 & CSL_FMKT(CLKRST_ARM_IDLECT2_EN_TIMCK, ACTIVE)) {			*ckEnable |= (1 << i);		}     /* To get the status of the Clock Supplied to MPUI */      i++;		if (_arm_idlect2 & CSL_FMKT(CLKRST_ARM_IDLECT2_EN_APICK, ACTIVE)) {			*ckEnable |= (1 << i);		}     /* To Skip the DPLL Bit in the ckEnable Variable */      i++;     /* To Skip the IF Bit in the ckEnable Variable */      i++;     /* To get the status of the Clock Supplied to LCD Controller */      i++;		if (_arm_idlect2 & CSL_FMKT(CLKRST_ARM_IDLECT2_EN_LCDCK, ACTIVE)) {			*ckEnable |= (1 << i);		}     /* To get the status of the Clock Supplied to External Peripherals */      i++;		if (_arm_idlect2 & CSL_FMKT(CLKRST_ARM_IDLECT2_EN_PERCK, ACTIVE)) {			*ckEnable |= (1 << i);		}     /* To get the status of the Clock Supplied to OS Timer */      i++;		if (_arm_idlect2 & CSL_FMKT(CLKRST_ARM_IDLECT2_EN_XORPCK, ACTIVE)) {			*ckEnable |= (1 << i);		}     /* To get the status of the Clock Supplied to Watch Dog Timer */      i++;		if (_arm_idlect2 & CSL_FMKT(CLKRST_ARM_IDLECT2_EN_WDTCK, ACTIVE)) {			*ckEnable |= (1 << i);		}     /* To get the status of the Clock Supplied to OCPI */      i++;		if (_arm_idlect3 & CSL_FMKT(CLKRST_ARM_IDLECT3_EN_OCPI_CK, ACTIVE)) {			*ckEnable |= (1 << i);		}     /* To get the status of the Clock Supplied to TC1 */      i++;		if (_arm_idlect3 & CSL_FMKT(CLKRST_ARM_IDLECT3_EN_TC1_CK, ACTIVE)) {			*ckEnable |= (1 << i);		}     /* To get the status of the Clock Supplied to TC2 */      i++;		if (_arm_idlect3 & CSL_FMKT(CLKRST_ARM_IDLECT3_EN_TC2_CK, ACTIVE)) {			*ckEnable |= (1 << i);		}     /* To get the status of the Clock Supplied to DSP */      i++;		if (hClkrst->regs->ARM_CKCTL & CSL_FMKT(CLKRST_ARM_CKCTL_EN_DSPCK, ACTIVE)) {			*ckEnable |= (1 << i);		}     /* To get the status of the Clock Supplied to GPIO */      i++;		if (_arm_idlect2 & CSL_FMKT(CLKRST_ARM_IDLECT2_EN_GPIOCK, ACTIVE)) {			*ckEnable |= (1 << i);		}}static inline void CSL_clkrstGetResetStatus(		CSL_ClkrstHandle        hClkrst,		CSL_ClkrstStatus        *status		){	Uint32 _arm_sysst;	_arm_sysst = hClkrst->regs->ARM_SYSST;	hClkrst->regs->ARM_SYSST = (_arm_sysst & CSL_CLKRST_ARM_SYSST_CLOCK_SELECT_MASK);	status->status    = _arm_sysst & 0x3F;	status->dspStatus = (CSL_ClkrstDspStatus)CSL_FEXT(_arm_sysst, CLKRST_ARM_SYSST_IDLE_DSP);}static inline void CSL_clkrstCkEn(		CSL_ClkrstHandle        hClkrst,		CSL_ClkrstHwControlCmd  cmd,		Uint16                  ckEnable		){	Uint32 i=0;	Uint32 _arm_idlect2 = 0;	Uint32 _arm_idlect3 = 0;	Uint32 _arm_ckctl = 0;     /* To Enable/Disable Clock Generated from DPLL1 Clock Output */		if (ckEnable & (1 << i++))         {			_arm_idlect2 |= CSL_FMKT(CLKRST_ARM_IDLECT2_EN_CKOUT_ARM, ACTIVE);		}     /* To Enable/Disable the Clock Supplied to System DMA Controller */		if (ckEnable & (1 << i++))         {

⌨️ 快捷键说明

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