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

📄 rif.c

📁 OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI的双核处理器
💻 C
字号:
//=====================================================================  
//       TEXAS INSTRUMENTS INCORPORATED PROPRIETARY INFORMATION             
// Property of Texas Instruments -- For Unrestricted Internal Use Only   
// Unauthorized reproduction and/or distribution is strictly prohibited  
// This product is protected under copyright law and trade secret law as 
// an unpublished work.Created 2001,(C) Copyright 2001 Texas Instruments.
// All rights reserved.                                                  
//=====================================================================  

#include "global_types.h"
#include "rif.h"


/*********************************************************************

  RIF_InitSpcx : Initialize SPCX rif register

*********************************************************************/
void RIF_InitSpcx(int Mcm, int Xrst, int Clk_auto, int Txm, int Nclk_en, int Nclk13_en, int Threshold, int Ptv)
{
   MAP_RIF_SPCX_REG_DSP = ( Mcm << RIF_SPCX_MCM_POS
                          | Xrst << RIF_SPCX_XRST_POS
                          | Clk_auto << RIF_SPCX_CLKX_AUTO_POS
                          | Txm << RIF_SPCX_TXM_POS
                          | Nclk_en << RIF_SPCX_NCLK_EN_POS
                          | Nclk13_en << RIF_SPCX_NCK13_EN_POS
                          | Threshold << RIF_SPCX_THRESHOLD_POS
                          | Ptv << RIF_SPCX_DIV_CLK_POS); 
}


/*********************************************************************

  RIF_InitSpcr : Initialize SPCR rif register

*********************************************************************/
void RIF_InitSpcr(int Dlb, int Rrst, int Threshold, int Xint, int Rint, int Xdma, int Rdma, int Clklb)
{
   MAP_RIF_SPCR_REG_DSP = ( Dlb << RIF_SPCR_DLB_POS
                          | Rrst << RIF_SPCR_RRST_POS
                          | Threshold << RIF_SPCR_THRESHOLD_POS
                          | Xint << RIF_SPCR_XINT_MASK_POS
                          | Rint << RIF_SPCR_RINT_MASK_POS
                          | Xdma << RIF_SPCR_XDMA_MASK_POS
                          | Rdma << RIF_SPCR_RDMA_MASK_POS
                          | Clklb << RIF_SPCR_CLKLB_POS); 
}

/*------------------------------------------------------------------------------- 

 NAME : RIF_BclkInternalLoopback

 SYNOPSIS : void RIF_BclkInternalLoopback(int clk_loop)

               Active at one

 PARAMETERS : value of 

 RETURN VALUE : no

 LIMITATIONS : 

-----------------------------------------------------------------------------*/ 
void RIF_BclkInternalLoopback(int Clk_loop)
{
  MAP_RIF_SPCR_REG_DSP |= (Clk_loop << 14 ); 
}


/*********************************************************************

  RIF_Reset : Soft reset for the  rif 

*********************************************************************/
void RIF_Reset(void )
{
  int port;
  port = MAP_RIF_SPCX_REG_DSP;
  port &= ~RIF_CTRL_XRST;
  MAP_RIF_SPCX_REG_DSP = port; 
  port = MAP_RIF_SPCX_REG_DSP;
  port |= RIF_CTRL_XRST;
  MAP_RIF_SPCX_REG_DSP = port;
 
  port = MAP_RIF_SPCR_REG_DSP ; 
  port &= ~RIF_CTRL_RRST ;
  MAP_RIF_SPCR_REG_DSP = port; 
  port = MAP_RIF_SPCR_REG_DSP ; 
  port |= RIF_CTRL_RRST;
  MAP_RIF_SPCR_REG_DSP = port; 
}


/*********************************************************************
 
  RIF_GetMcm : Return MCM bit SPCX register 
 
*********************************************************************/
 
int RIF_GetMcm(void)
{
int port;
     port = MAP_RIF_SPCX_REG_DSP & RIF_CTRL_MCM ;
    return  port; 
}
/*********************************************************************
 
  RIF_GetMcm : Return XRST bit SPCX register
 
*********************************************************************/
 
int RIF_GetXrst(void)
{
int port;
    port = ((MAP_RIF_SPCX_REG_DSP) & RIF_CTRL_XRST) >> 1;
    return  port; 
}
/*********************************************************************
 
  RIF_GetClkauto : Return CLKX_AUTO bit SPCX register
 
*********************************************************************/
 
int RIF_GetClkauto(void)
{
int port;
    port =  ((MAP_RIF_SPCX_REG_DSP) & RIF_CTRL_CLKX_AUTO) >> 3 ;
    return  port ; 
}
/*********************************************************************
 
  RIF_GetTxm : Return TXM bit SPCX register
 
*********************************************************************/
 
int RIF_GetTxm(void)
{
int port;
    port = ((MAP_RIF_SPCX_REG_DSP) & RIF_CTRL_TXM) >> 4 ;
    return  port ; 
}
/*********************************************************************
 
  RIF_GetNclken : Return Nclk_EN bit SPCX register
 
*********************************************************************/
 
int RIF_GetNclken(void)
{
int port;
     port = ((MAP_RIF_SPCX_REG_DSP) & RIF_CTRL_NCLK_EN) >> 5 ;
    return  port ; 
}
/*********************************************************************
 
  RIF_GetNclk13 : Return NCLK13bit SPCX register
 
*********************************************************************/
 
int RIF_GetNclk13(void)
{
int port;
    port = ((MAP_RIF_SPCX_REG_DSP) & RIF_CTRL_NCLK13_EN) >> 6 ; 
    return  port ; 
}
/*********************************************************************
 
  RIF_GetThresholdx : Return THRESHOLD bit SPCX register
 
*********************************************************************/
 
int RIF_GetThresholdx(void)
{
int port;
     port = ((MAP_RIF_SPCX_REG_DSP) & RIF_CTRL_THRET) >> 10 ;
    return  port; 
}
/*********************************************************************
 
  RIF_GetPtv : Return PTV bit SPCX register
 
*********************************************************************/
 
int RIF_GetPtv(void)
{
int port;
     port = ((MAP_RIF_SPCX_REG_DSP) & RIF_CTRL_PTV) >> 12 ;
    return  port; 
}

/*********************************************************************
 
  RIF_GetAlem : Return ALMOST_EMPTY bit SPCX register
 
*********************************************************************/
 
int RIF_GetAlem(void)
{
int port;
     port = ( (MAP_RIF_SPCX_REG_DSP) & RIF_CTRL_AL_EM) >> 7 ;
    return  port ; 
}

/*********************************************************************
 
  RIF_GetFifoet : Return FIFO_EMPTY bit SPCX register
 
*********************************************************************/
 
int RIF_GetFifoet(void)
{
int port;
     port = ((MAP_RIF_SPCX_REG_DSP) & RIF_CTRL_FIFOET) >> 8 ; 
    return  port ; 
}

/*********************************************************************
 
  RIF_GetFifoft : Return FIFO_FULL bit SPCX register
 
*********************************************************************/
 
int RIF_GetFifoft(void)
{
int port;
     port = ( (MAP_RIF_SPCX_REG_DSP) & RIF_CTRL_FIFOFT) >> 9 ;
    return  port ; 
}




/*********************************************************************

  RIF_GetSpcx : Get SPCX rif register

*********************************************************************/
void RIF_GetSpcx(int *Mcm, int *Xrst,
		      int *Clk_auto, int *Txm,
		      int *Nclk_en,int *Nclk13_en,
		      int *Threshold,int *Ptv )
{
int intreg;


 intreg = MAP_RIF_SPCX_REG_DSP;
 *Mcm = intreg & RIF_CTRL_MCM;
 *Xrst = (intreg & RIF_CTRL_XRST) >> 1;
 *Clk_auto = (intreg & RIF_CTRL_CLKX_AUTO) >> 3 ;
 *Txm = (intreg & RIF_CTRL_TXM) >> 4;
 *Nclk_en = (intreg & RIF_CTRL_NCLK_EN ) >> 5 ;
 *Nclk13_en = (intreg & RIF_CTRL_NCLK13_EN ) >> 6;
 *Threshold = (intreg & RIF_CTRL_THRET) >> 10;
 *Ptv = (intreg & RIF_CTRL_PTV ) >> 12 ;

}


/*********************************************************************
 
  RIF_GetDlb : Return DLB bit SPCR register
 
*********************************************************************/
 
int RIF_GetDlb(void)
{
int port;
     port = ((MAP_RIF_SPCR_REG_DSP ) & RIF_CTRL_DLB) ; 
    return  port; 
}

/*********************************************************************
 
  RIF_GetRrst : Return RRST bit SPCR register
 
*********************************************************************/
 
int RIF_GetRrst(void)
{
int port;
    port = ((MAP_RIF_SPCR_REG_DSP) & RIF_CTRL_RRST) >> 1 ;
    return  port ; 
}

/*********************************************************************
 
  RIF_GetThresholdr : Return THRESHOLD bit SPCR register
 
*********************************************************************/
 
int RIF_GetThresholdr(void)
{
int port;
     port = ((MAP_RIF_SPCR_REG_DSP) & RIF_CTRL_THRER) >> 7 ;
    return  port;
}
/*********************************************************************

  RIF_GetSpcr : Get SPCR rif register

*********************************************************************/
void RIF_GetSpcr(int *Dlb, int *Rrst,
		      int *Threshold )
{
int intreg;


 intreg = MAP_RIF_SPCR_REG_DSP;
 *Dlb = intreg & RIF_CTRL_DLB;
 *Rrst = (intreg & RIF_CTRL_RRST) >> 1;
 *Threshold = (intreg & RIF_CTRL_THRER) >> 7 ;


}

/*********************************************************************
 
  RIF_GetFifoafr : Return FIFO_ALMOSTFULL bit SPCR register
 
*********************************************************************/
 
int RIF_GetFifoafr(void)
{
int port;
     port = ( (MAP_RIF_SPCR_REG_DSP) & RIF_CTRL_AL_FU) >> 4 ;
    return  port ; 
}

/******************************************************************************

	NAME 		: RIF_GetFifoer

	SYNOPSIS	: int RIF_GetFifoer(void)

	DESCRIPTION	: return FIFO_EMPTY bit SPCR register 

	RETURN VALUE	: if FIFO receive empty return 1
	                     FIFO receive not empty return 0
	
	PARAMETERS	: No

	LIMITATIONS	: 

******************************************************************************/ 

int RIF_GetFifoer(void)
{
int port;
int dec;
     port =(MAP_RIF_SPCR_REG_DSP) ;
     dec = port >> 5;
     port = dec & RIF_CTRL_FIRST;
    return  port ; 
}

/******************************************************************************

	NAME 		: RIF_TestRifReg

	SYNOPSIS	: int RIF_TestRifReg()

	DESCRIPTION	: Check read/write registers access 

	RETURN VALUE	: Return the result of the test OK or BAD
	
	PARAMETERS	: 

	LIMITATIONS	: 

******************************************************************************/
int RIF_TestRifReg()
{
  int i,res=0;
  int dataIoport;
/*---------------------------------------------------------------------
Check that the value of the control and status 
registers after H/W reset is correct   
--------------------------------------------------------------------*/ 

   dataIoport = MAP_RIF_SPCX_REG_DSP; 
   if ((dataIoport & 0x7fff) != 0x059e) { 
     res = 2; 
   } 

   dataIoport =MAP_RIF_SPCR_REG_DSP ; 
   if ((dataIoport & 0x3fff) != 0x3ca2) { 
     res = 3; 
   } 

   MAP_RIF_SPCX_REG_DSP = 0x05fe;
   dataIoport = MAP_RIF_SPCX_REG_DSP; 
   if ((dataIoport & 0x7fff) != 0x05fe) { 
     res = 4; 
   } 

   MAP_RIF_SPCR_REG_DSP = 0x3da2;
   dataIoport = MAP_RIF_SPCR_REG_DSP; 
   if ((dataIoport & 0x3fff) != 0x3da2) { 
     res = 5; 
   }


  
  if (res)
    return res;
  
  return 1; /* Return OK */
}

/*********************************************************************

  RIF_EnableInternalClock : Enable the transmitter clock

*********************************************************************/
void RIF_EnableInternalClock(void) {
  MAP_RIF_SPCX_REG_DSP = MAP_RIF_SPCX_REG_DSP | (1 << RIF_SPCX_NCLK_EN_POS);
}

⌨️ 快捷键说明

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