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

📄 motfcc2end.h

📁 MPC8560 for vxwork BSP
💻 H
📖 第 1 页 / 共 2 页
字号:
/* MotFcc2End.h - Second Generation Motorola FCC Ethernet network interface.*//* * Copyright (c) 2003-2005 Wind River Systems, Inc. * * The right to copy, distribute, modify or otherwise make use * of this software may be licensed only pursuant to the terms * of an applicable Wind River license agreement. *//*modification history--------------------01j,19mar05,dlk  Enhancements. Combine buffer descriptor status and length                 fields.01j,19aug04,mdo  Clean up unused variables.01h,23jul04,mdo  Base 6 Enhancements01g,15jun04,mdo  Fix compiler warning with gnu compiler.01f,04jun04,mil  Changed cacheArchXXX funcs to cacheXXX funcs.01e,30mar04,mdo  SPR's 81336, 93209, 94561, 94562 and general cleanup.01d,12jan04,dat  lint removal01c,05dec03,rcs  fixed warnings for base601b,13aug03,gjc  Fixed SPRs #89689,#89649,#87812,#87749,90135,#8643401a,16jan03,gjc  SPR#85164 :Second Generation Motorola FCC END header.*/#ifndef __INCmotFcc2Endh#define __INCmotFcc2Endh/* includes */#ifdef __cplusplusextern "C" {#endif#include "etherLib.h"#include "miiLib.h"/* defines *//* * 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)                \    (* ((UINT32 *) 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)                  \    do  {								\	IMPORT STATUS intConnect (VOIDFUNCPTR *, VOIDFUNCPTR, int);     \	pDrvCtrl->intrConnect = TRUE;					\	ret = (intConnect) ((VOIDFUNCPTR*) MOT_FCC_IVEC (pDrvCtrl),     \			    (pFunc), (int) (arg));			\	} while (FALSE)#endif /* SYS_FCC_INT_CONNECT */#ifndef SYS_FCC_INT_DISCONNECT#define SYS_FCC_INT_DISCONNECT(pDrvCtrl, pFunc, arg, ret)		\    do  {								\	ret = OK;							\	if (MOT_FCC_IVEC (pDrvCtrl) && (pDrvCtrl->intDiscFunc != NULL))	\	    {								\	    pDrvCtrl->intrConnect = FALSE;				\	    ret = (*pDrvCtrl->intDiscFunc)				\			((VOIDFUNCPTR*) MOT_FCC_IVEC (pDrvCtrl),	\			 (pFunc));					\	    }								\	} while (FALSE)#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;                                \    INT8 bitVal = 0;                              \                                                  \    while (i--)                                   \    {                                             \    (data) <<= 1;                                 \    SYS_FCC_MII_BIT_RD (&bitVal);                 \    (data) |= bitVal & 0x1;                       \    }                                             \    }/* driver flags */#define MOT_FCC_OWN_BUF_MEM 0x01    /* internally provided memory for data*/#define MOT_FCC_INV_TBD_NUM 0x02    /* invalid tbdNum provided */#define MOT_FCC_INV_RBD_NUM 0x04    /* invalid rbdNum provided */#define MOT_FCC_POLLING     0x08    /* polling mode */#define MOT_FCC_PROM        0x20    /* promiscuous mode */#define MOT_FCC_MCAST       0x40    /* multicast addressing mode */#define MOT_FCC_FD          0x80    /* full duplex mode */#define MOT_FCC_OWN_BD_MEM  0x10    /* internally provided memory for BDs */#define MOT_FCC_LOOP_NS 10#define MOT_FCC_DEV_NAME        "motfcc"#define MOT_FCC_DEV_NAME_LEN    7#define MOT_FCC_MAX_DEVS        2#define MOT_FCC_TBD_DEF_NUM     64          /* default number of TBDs */#define MOT_FCC_RBD_DEF_NUM     32          /* default number of RBDs */#define MOT_FCC_TX_CL_NUM       128         /* number of tx clusters */#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 RBDs */#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_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        1524        /* recommended value used to be 1520*/#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            0x20    /* 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_BD_STAT_OFF     0       /* offset of the status word */#define MOT_FCC_BD_LEN_OFF      2       /* offset of the data length=word */#define MOT_FCC_BD_ADDR_OFF     4       /* offset of the data pointer=word */#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_MON     0x00000040  /* use PHY Monitor */#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 the local bus */#define MOT_FCC_USR_BD_LBUS     0x00002000  /* BDs are on the 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 DPRAM auto allocation *//* allow snooping of memory operations */#define MOT_FCC_USR_SNOOP_ENABLE 0x00010000  /* Enable snooping from FCC */#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 has errors *//* Driver State Variable */#define MOT_FCC_STATE_INIT          0x00#define MOT_FCC_STATE_NOT_LOADED    0x00#define MOT_FCC_STATE_LOADED        0x01#define MOT_FCC_STATE_NOT_RUNNING   0x00#define MOT_FCC_STATE_RUNNING       0x02/* frame descriptors definitions (DEPRECATED) */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              numInts;    UINT32              numZcopySends;    UINT32              numNonZcopySends;    UINT32              numTXBInts;    UINT32              numBSYInts;    UINT32              numRXFInts;    UINT32              numRXBInts;    UINT32              numRXCInts;    UINT32              numTXCInts;    UINT32              numTXEInts;    UINT32              numOTHERInts;    UINT32              numRXFHandlerEntries;    UINT32              numRXFHandlerErrQuits;    UINT32              numRXFHandlerFramesProcessed;    UINT32              numRXFHandlerFramesRejected;

⌨️ 快捷键说明

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