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

📄 mt8986.h

📁 Zalink50114----TDMoIP芯片驱动源码
💻 H
字号:
/* mt8986Lib.c - MT89L86 timeslot switcher header file
*
* Copyright     2004-2007 ZTE, Inc.
* author:       ZhengQishan
* date:         2004.02
*
* modification history
*------------------------------
*
*/
#ifndef _MT_89L86_H 
#define _MT_89L86_H
#ifdef __cplusplus
extern "C" {
#endif



#include "vxworks.h"
#include "le1veLib.h"

#define  MT89L86_RD_WR_LOOP_TIME        5
#define  MT89L86_CTRL_REG               0x00    /*Control Register*/
#define  MT89L86_IMSR_REG               0x04    /*Interface Mode Select Register*/
#define  MT89L86_SPSR_REG               0x08    /*Stream Pair Select Register*/
#define  MT89L86_FIOR_REG               0x0C    /*Frame Input Offset Register*/
#define  MT89L86_CHAN_REG_BASE          0x20


#define  REG_8986_STATUS                0x70
#define  REG_8986_DATA                  0x74
typedef struct
{
	volatile unsigned long ctr;
	volatile unsigned long imsr;
	volatile unsigned long spsr;
	volatile unsigned long fior;
	volatile unsigned long chan[128];
}MT_89L86_REG_STRUCT;

#if 0 /**/
#define LE1VE_MT89L86_REG_WRITE(slotNo,regNo,value)  \
do{   \
      int temp; \
      UINT32 status; \
	  for(temp = 0; temp <= MT89L86_RD_WR_LOOP_TIME; temp++)  \
	  {     \
	      status = *((volatile UINT32 *)(LE1VE_CPLD_REG_BASE(slotNo)+REG_8986_STATUS)); \
		  status = Drv_Swap32(status); \
			if ((status & 0xff) == 0x00) \
			{   \
                *((volatile UINT32 *)(LE1VE_MT8986_REG_BASE(slotNo)+regNo)) = Drv_Swap32( value );\
				break;   \
			}   \
		}   \
		if(temp == MT89L86_RD_WR_LOOP_TIME)   \
		{  \
		logMsg("lfxs board 8986 write error for bus busy 5 times\n",1,2,3,4,5,6);  \
		return ERROR;   \
		}   \
}while(0)

#define LE1VE_MT89L86_REG_READ(slotNo,regNo,value)  \
do{   \
      int temp;   \
      UINT32 status; \
	  for(temp = 0; temp <= MT89L86_RD_WR_LOOP_TIME; temp++)  \
	  {     \
	      status = *((volatile UINT32 *)(LE1VE_CPLD_REG_BASE(slotNo)+REG_8986_STATUS)); \
		  status = Drv_Swap32(status); \
			if ((status & 0xff) == 0x00) \
			{   \
      value = *((volatile UINT32 *)(LE1VE_MT8986_REG_BASE(slotNo)+regNo)); \
				break;   \
			}   \
		}   \
		if(temp == MT89L86_RD_WR_LOOP_TIME)   \
		{  \
		logMsg("lfxs board 8986 read error for bus busy 5 times\n",1,2,3,4,5,6);  \
		return ERROR;   \
		}   \
	  for(temp = 0; temp <= MT89L86_RD_WR_LOOP_TIME; temp++)  \
	  {     \
	      status = *((volatile UINT32 *)(LE1VE_CPLD_REG_BASE(slotNo) + REG_8986_STATUS)); \
		  status = Drv_Swap32(status); \
			if ((status & 0xff) == 0x00) \
			{   \
                value = *((volatile UINT32 *)(LE1VE_CPLD_REG_BASE(slotNo) + REG_8986_DATA)); \
                value = Drv_Swap32( value ); \
				break;   \
			}   \
		}   \
		if( temp == MT89L86_RD_WR_LOOP_TIME)   \
		{  \
		    logMsg("lfxs board 8986 read error for bus busy 5 times\n",1,2,3,4,5,6);  \
		    return ERROR;   \
		}   \
}while(0)
#else
#define LE1VE_MT89L86_REG_WRITE(slotNo,regNo,value)  \
    do{\
      *((volatile UINT32 *)(LE1VE_MT8986_REG_BASE(slotNo)+regNo)) = Drv_Swap32( value );\
    }while(0)

#define LE1VE_MT89L86_REG_READ(slotNo,regNo,value)  \
    do{\
      value = *((volatile UINT32 *)(LE1VE_MT8986_REG_BASE(slotNo)+regNo)); \
      value = Drv_Swap32( value ); \
    }while(0)

#endif


#ifdef __cplusplus
}
#endif

#endif /*_MT_89L86_H*/


⌨️ 快捷键说明

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