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

📄 motfccend.h

📁 IXP425的BSP代码
💻 H
📖 第 1 页 / 共 2 页
字号:
/* motFccEnd.h - Motorola FCC Ethernet network interface header *//* Copyright 1990-2002 Wind River Systems, Inc. *//*modification history--------------------01f,14dec01,rcs  extended DRV_CTRL and added TODO_NODE and TX_JOB_NODE                  for motFccJobQueue() support.01e,26nov01,rcs  converted to motFccEnd.h01d,17sep01,g_h  fix SPR 7025401c,15jul99,ms_  make compliant with our coding standards01b,17apr99,ms_  get m8260Cpm.h locally01a,09apr99,cn	 written from motFecEnd.h, 01c.*/#ifndef __INCsbcMotFccEndh#define __INCsbcMotFccEndh/* includes */#ifdef __cplusplusextern "C" {#endif #include "etherLib.h"#include "miiLib.h"#include "m8260Fcc.h"#include "lstLib.h"#include "msgQLib.h"/* defines */#ifndef M8260ABBREVIATIONS#define M8260ABBREVIATIONS#ifdef  _ASMLANGUAGE#define CAST(x)#else /* _ASMLANGUAGE */typedef volatile UCHAR VCHAR;    /* shorthand for volatile UCHAR */typedef volatile INT32 VINT32;   /* volatile unsigned word */typedef volatile INT16 VINT16;   /* volatile unsigned halfword */typedef volatile INT8 VINT8;     /* volatile unsigned byte */typedef volatile UINT32 VUINT32; /* volatile unsigned word */typedef volatile UINT16 VUINT16; /* volatile unsigned halfword */typedef volatile UINT8 VUINT8;   /* volatile unsigned byte */#define CAST(x) (x)#endif  /* _ASMLANGUAGE */#endif /* M8260ABBREVIATIONS *//* * redefine the macro below in the bsp if you need to access the device * registers/descriptors in a more suitable way. */#ifndef MOT_FCC_LONG_WR#define MOT_FCC_LONG_WR(addr, value)                                        \    (* (addr) = ((UINT32) (value)))#endif /* MOT_FCC_LONG_WR */ #ifndef MOT_FCC_WORD_WR#define MOT_FCC_WORD_WR(addr, value)                                        \    (* (addr) = ((UINT16) (value)))#endif /* MOT_FCC_WORD_WR */ #ifndef MOT_FCC_BYTE_WR#define MOT_FCC_BYTE_WR(addr, value)                                        \    (* (addr) = ((UINT8) (value)))#endif /* MOT_FCC_BYTE_WR */ #ifndef MOT_FCC_LONG_RD#define MOT_FCC_LONG_RD(addr, value)                                        \    ((value) = (* (UINT32 *) (addr)))#endif /* MOT_FCC_LONG_RD */ #ifndef MOT_FCC_WORD_RD#define MOT_FCC_WORD_RD(addr, value)                                        \    ((value) = (* (UINT16 *) (addr)))#endif /* MOT_FCC_WORD_RD */ #ifndef MOT_FCC_BYTE_RD#define MOT_FCC_BYTE_RD(addr, value)                                        \    ((value) = (* (UINT8 *) (addr)))#endif /* MOT_FCC_BYTE_RD */ /* * Default macro definitions for BSP interface. * These macros can be redefined in a wrapper file, to generate * a new module with an optimized interface. */ #define MOT_FCC_INUM(pDrvCtrl)						\    ((int) INUM_FCC1 + ((pDrvCtrl)->fccNum - 1))#define MOT_FCC_IVEC(pDrvCtrl)						\    INUM_TO_IVEC (MOT_FCC_INUM (pDrvCtrl))#ifndef SYS_FCC_INT_CONNECT#define SYS_FCC_INT_CONNECT(pDrvCtrl, pFunc, arg, ret)                  \{                                                                       \IMPORT STATUS intConnect (VOIDFUNCPTR *, VOIDFUNCPTR, int);		\ret = OK;                                                               \                                                                        \    pDrvCtrl->intrConnect = TRUE;                                   	\    ret = (intConnect) ((VOIDFUNCPTR*) MOT_FCC_IVEC (pDrvCtrl),		\			(pFunc), (int) (arg));                      	\}#endif /* SYS_FCC_INT_CONNECT */ #ifndef SYS_FCC_INT_DISCONNECT#define SYS_FCC_INT_DISCONNECT(pDrvCtrl, pFunc, arg, ret)                   \{                                                                           \ret = OK;                                                                   \                                                                            \if (MOT_FCC_IVEC (pDrvCtrl) && (_func_motFccIntDisc != NULL))               \    {                                                                       \    pDrvCtrl->intrConnect = FALSE;                                          \    ret = (*_func_motFccIntDisc) ((VOIDFUNCPTR*) MOT_FCC_IVEC (pDrvCtrl),   \			    (pFunc));                                       \    }                                                                       \}#endif /* SYS_FCC_INT_DISCONNECT */ #ifndef SYS_FCC_INT_ENABLE#define SYS_FCC_INT_ENABLE(pDrvCtrl, ret)				\{                                                                       \IMPORT int intEnable (int);						\ret = OK;                                                               \                                                                        \if (MOT_FCC_INUM (pDrvCtrl))                                            \    ret = intEnable ((int) (MOT_FCC_INUM (pDrvCtrl)));                  \}#endif /* SYS_FCC_INT_ENABLE */ #ifndef SYS_FCC_INT_DISABLE#define SYS_FCC_INT_DISABLE(pDrvCtrl, ret)				\{                                                                       \IMPORT int intDisable (int);						\ret = OK;                                                               \                                                                        \if (MOT_FCC_INUM (pDrvCtrl))                                            \    ret = intDisable ((int) (MOT_FCC_INUM (pDrvCtrl)));                  \}#endif /* SYS_FCC_INT_DISABLE */ #ifndef SYS_FCC_INT_ACK#define SYS_FCC_INT_ACK(pDrvCtrl, ret)					\{                                                                       \ret = OK;                                                               \}#endif /* SYS_FCC_INT_ACK */#define SYS_FCC_ENET_ADDR_GET(address)                                  	\if (sysFccEnetAddrGet != NULL)                                          \    if (sysFccEnetAddrGet (pDrvCtrl->unit, (address)) == ERROR)		\	{								\	errnoSet (S_iosLib_INVALID_ETHERNET_ADDRESS);			\	return (NULL);							\	}#define SYS_FCC_ENET_ENABLE                                             \if (sysFccEnetEnable != NULL)                                           \    if (sysFccEnetEnable (pDrvCtrl->immrVal, pDrvCtrl->fccNum) 		\	== ERROR)               					\        return (ERROR); #define SYS_FCC_ENET_DISABLE                                            \if (sysFccEnetDisable != NULL)                                          \    if (sysFccEnetDisable (pDrvCtrl->immrVal, pDrvCtrl->fccNum) 	\	== ERROR)              						\        return (ERROR); #define SYS_FCC_MII_BIT_RD(bit)						\if (sysFccMiiBitRd != NULL)						\    if (sysFccMiiBitRd (pDrvCtrl->immrVal, pDrvCtrl->fccNum, (bit))	\	== ERROR)              						\        return (ERROR);#define SYS_FCC_MII_BIT_WR(bit)						\if (sysFccMiiBitWr != NULL)						\    if (sysFccMiiBitWr (pDrvCtrl->immrVal, pDrvCtrl->fccNum, (bit))	\	== ERROR)              						\        return (ERROR);#define MOT_FCC_MII_WR(data, len)					\    {									\    UINT8 i = len;							\									\    while (i--)								\	SYS_FCC_MII_BIT_WR (((data) >> i) & 0x1);			\    }#define MOT_FCC_MII_RD(data, len)					\    {									\    UINT8 i = len;							\    UINT8 bitVal = 0;							\									\    while (i--)								\	{								\	(data) <<= 1;							\	SYS_FCC_MII_BIT_RD (&bitVal);					\	(data) |= bitVal & 0x1;						\	}								\    }#define MOT_FCC_LOOP_NS	10#define MOT_FCC_DEV_NAME       	"motfcc"#define MOT_FCC_DEV_NAME_LEN   	7#define MOT_FCC_TBD_DEF_NUM    	32		/* default number of TBDs */#define MOT_FCC_RBD_DEF_NUM    	32		/* default number of RBDs */#define MOT_FCC_TX_CL_NUM    	64		/* number of tx clusters */#define MOT_FCC_BD_LOAN_NUM    	32		/* loaned BDs */#define MOT_FCC_TX_POLL_NUM      1       	/* one TBD for poll operation */#define MOT_FCC_TBD_MAX         128     	/* max number of TBDs */#define MOT_FCC_RBD_MAX         128     	/* max number of TBDs */#define MOT_FCC_WAIT_MAX	0xf0000000	/* max delay after sending */#define MOT_FCC_MIN_TX_PKT_SZ	100		/* the smallest packet we send */#define MOT_FCC_ADDR_LEN        6               /* ethernet address length */#define MOT_FCC_RIPTR_VAL       0xb800          /* rx FIFO pointer value */#define MOT_FCC_TIPTR_VAL       0xba00          /* tx FIFO pointer value */#define MOT_FCC_RES_VAL       	0x0000          /* reserved field value */#define MOT_FCC_FCR_DEF_VAL     M8260_FCR_BO_BE	/* def value for the FCR */#define MOT_FCC_C_MASK_VAL     	0xdebb20e3      /* recommended value */#define MOT_FCC_C_PRES_VAL     	0xffffffff      /* recommended value */#define MOT_FCC_CLEAR_VAL      	0x00000000      /* clear this field */#define MOT_FCC_RET_LIM_VAL     0xf      	/* recommended value */#define MOT_FCC_MINFLR_VAL     	0x40      	/* recommended value */#define MOT_FCC_PAD_VAL       	MOT_FCC_TIPTR_VAL	/* padding value */#define MOT_FCC_MAXD_VAL     	1520      	/* recommended value */#define MOT_FCC_DSR_VAL       	0xD555          /* recommended value */#define MOT_FCC_FCCE_VAL       	0xffff          /* clear all events *//* rx/tx buffer descriptors definitions */ #define MOT_FCC_RBD_SZ          8       /* RBD size in byte */#define MOT_FCC_TBD_SZ          8       /* TBD size in byte */#define MOT_FCC_TBD_MIN        16       /* min number of TBDs */#define MOT_FCC_RBD_MIN        16       /* min number of RBDs */#define CL_OVERHEAD             4       /* prepended cluster overhead */#define CL_ALIGNMENT            4       /* cluster required alignment */#define MBLK_ALIGNMENT          4       /* mBlks required alignment */#define MOT_FCC_BD_ALIGN        0x8    	/* required alignment for BDs */#define MOT_FCC_BUF_ALIGN      	0x20   	/* required alignment for data buffer */#define MOT_FCC_RBD_ERR         (M8260_FETH_RBD_LG  |                      \                                 M8260_FETH_RBD_NO  |                      \                                 M8260_FETH_RBD_SH  |                      \                                 M8260_FETH_RBD_CR  |                      \                                 M8260_FETH_RBD_CL  |                      \                                 M8260_FETH_RBD_OV) /* allowed PHY's speeds */#define MOT_FCC_100MBS		100000000       /* bits per sec */#define MOT_FCC_10MBS		10000000        /* bits per sec *//* * user flags: full duplex mode, loopback mode, serial interface etc. * the user may configure some of this options according to his needs  * by setting the related bits in the <userFlags> field of the load string. */ #define MOT_FCC_USR_PHY_NO_AN	0x00000001	/* do not auto-negotiate */#define MOT_FCC_USR_PHY_TBL     0x00000002	/* use negotiation table */#define MOT_FCC_USR_PHY_NO_FD	0x00000004	/* do not use full duplex */#define MOT_FCC_USR_PHY_NO_100	0x00000008	/* do not use 100Mbit speed */#define MOT_FCC_USR_PHY_NO_HD	0x00000010	/* do not use half duplex */#define MOT_FCC_USR_PHY_NO_10	0x00000020	/* do not use 10Mbit speed */#define MOT_FCC_USR_PHY_ISO     0x00000100	/* isolate a PHY */#define MOT_FCC_USR_RMON        0x00000200	/* enable RMON support */#define MOT_FCC_USR_LOOP        0x00000400	/* external loopback mode */ 			                        /* only use it for testing */#define MOT_FCC_USR_HBC		0x00000800	/* perform heartbeat control */#define MOT_FCC_USR_BUF_LBUS	0x00001000	/* buffers are on local bus */#define MOT_FCC_USR_BD_LBUS	0x00002000	/* BDs are on local bus */#define MOT_FCC_USR_NO_ZCOPY	0x00004000	/* inhibit zcopy mode */                                                 /* required if bufs are on */                                                /* local bus, optional */                                                /* otherwise */#define MOT_FCC_USR_DPRAM_ALOC  0x00008000      /* Using DPAM auto allocation */#define MOT_FCC_TBD_OK		0x1		/* the TBD is a good one */#define MOT_FCC_TBD_BUSY	0x2		/* the TBD has not been used */#define MOT_FCC_TBD_ERROR	0x4		/* the TBD is errored *//* frame descriptors definitions */ typedef char *			MOT_FCC_BD_ID; typedef MOT_FCC_BD_ID	  	MOT_FCC_TBD_ID;typedef MOT_FCC_BD_ID	  	MOT_FCC_RBD_ID;/* * this table may be customized by the user in configNet.h */ IMPORT INT16 motFccPhyAnOrderTbl [];typedef struct {    UINT32		numIsrEntries;    UINT32		numIsrExits;    UINT32		numZcopySends;    UINT32		numNonZcopySends;    UINT32		numTXBInts;    UINT32		numrecoveryeasy;    UINT32		numRXFInts;    UINT32		numRXFHandlerEntries;    UINT32		numRXFHandlerExits;

⌨️ 快捷键说明

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