?? mt8986.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*/
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -