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

📄 xemac.h

📁 uboot在arm处理器s3c2410的移植代码
💻 H
📖 第 1 页 / 共 2 页
字号:
 * the scatter-gather engine. */#define XEM_SGDMA_NODELAY     0 /* start SG DMA immediately */#define XEM_SGDMA_DELAY	      1 /* do not start SG DMA *//* * Constants to determine the configuration of the hardware device. They are * used to allow the driver to verify it can operate with the hardware. */#define XEM_CFG_NO_IPIF		    0	/* Not supported by the driver */#define XEM_CFG_NO_DMA		    1	/* No DMA */#define XEM_CFG_SIMPLE_DMA	    2	/* Simple DMA */#define XEM_CFG_DMA_SG		    3	/* DMA scatter gather *//* * The next few constants help upper layers determine the size of memory * pools used for Ethernet buffers and descriptor lists. */#define XEM_MAC_ADDR_SIZE   6	/* six-byte MAC address */#define XEM_MTU		    1500	/* max size of Ethernet frame */#define XEM_HDR_SIZE	    14	/* size of Ethernet header */#define XEM_HDR_VLAN_SIZE   18	/* size of Ethernet header with VLAN */#define XEM_TRL_SIZE	    4	/* size of Ethernet trailer (FCS) */#define XEM_MAX_FRAME_SIZE  (XEM_MTU + XEM_HDR_SIZE + XEM_TRL_SIZE)#define XEM_MAX_VLAN_FRAME_SIZE	 (XEM_MTU + XEM_HDR_VLAN_SIZE + XEM_TRL_SIZE)/* * Define a default number of send and receive buffers */#define XEM_MIN_RECV_BUFS   32	/* minimum # of recv buffers */#define XEM_DFT_RECV_BUFS   64	/* default # of recv buffers */#define XEM_MIN_SEND_BUFS   16	/* minimum # of send buffers */#define XEM_DFT_SEND_BUFS   32	/* default # of send buffers */#define XEM_MIN_BUFFERS	    (XEM_MIN_RECV_BUFS + XEM_MIN_SEND_BUFS)#define XEM_DFT_BUFFERS	    (XEM_DFT_RECV_BUFS + XEM_DFT_SEND_BUFS)/* * Define the number of send and receive buffer descriptors, used for * scatter-gather DMA */#define XEM_MIN_RECV_DESC   16	/* minimum # of recv descriptors */#define XEM_DFT_RECV_DESC   32	/* default # of recv descriptors */#define XEM_MIN_SEND_DESC   8	/* minimum # of send descriptors */#define XEM_DFT_SEND_DESC   16	/* default # of send descriptors *//**************************** Type Definitions *******************************//** * Ethernet statistics (see XEmac_GetStats() and XEmac_ClearStats()) */typedef struct {	u32 XmitFrames;		 /**< Number of frames transmitted */	u32 XmitBytes;		 /**< Number of bytes transmitted */	u32 XmitLateCollisionErrors;				 /**< Number of transmission failures					  due to late collisions */	u32 XmitExcessDeferral;	 /**< Number of transmission failures					  due o excess collision deferrals */	u32 XmitOverrunErrors;	 /**< Number of transmit overrun errors */	u32 XmitUnderrunErrors;	 /**< Number of transmit underrun errors */	u32 RecvFrames;		 /**< Number of frames received */	u32 RecvBytes;		 /**< Number of bytes received */	u32 RecvFcsErrors;	 /**< Number of frames discarded due					  to FCS errors */	u32 RecvAlignmentErrors; /**< Number of frames received with					  alignment errors */	u32 RecvOverrunErrors;	 /**< Number of frames discarded due					  to overrun errors */	u32 RecvUnderrunErrors;	 /**< Number of recv underrun errors */	u32 RecvMissedFrameErrors;				 /**< Number of frames missed by MAC */	u32 RecvCollisionErrors; /**< Number of frames discarded due					  to collisions */	u32 RecvLengthFieldErrors;				 /**< Number of frames discarded with					  invalid length field */	u32 RecvShortErrors;	 /**< Number of short frames discarded */	u32 RecvLongErrors;	 /**< Number of long frames discarded */	u32 DmaErrors;		 /**< Number of DMA errors since init */	u32 FifoErrors;		 /**< Number of FIFO errors since init */	u32 RecvInterrupts;	 /**< Number of receive interrupts */	u32 XmitInterrupts;	 /**< Number of transmit interrupts */	u32 EmacInterrupts;	 /**< Number of MAC (device) interrupts */	u32 TotalIntrs;		 /**< Total interrupts */} XEmac_Stats;/** * This typedef contains configuration information for a device. */typedef struct {	u16 DeviceId;	    /**< Unique ID  of device */	u32 BaseAddress;    /**< Register base address */	u32 HasCounters;   /**< Does device have counters? */	u8 IpIfDmaConfig;   /**< IPIF/DMA hardware configuration */	u32 HasMii;	   /**< Does device support MII? */} XEmac_Config;/** @name Typedefs for callbacks * Callback functions. * @{ *//** * Callback when data is sent or received with scatter-gather DMA. * * @param CallBackRef is a callback reference passed in by the upper layer *	  when setting the callback functions, and passed back to the upper *	  layer when the callback is invoked. * @param BdPtr is a pointer to the first buffer descriptor in a list of *	  buffer descriptors. * @param NumBds is the number of buffer descriptors in the list pointed *	  to by BdPtr. */typedef void (*XEmac_SgHandler) (void *CallBackRef, XBufDescriptor * BdPtr,				 u32 NumBds);/** * Callback when data is sent or received with direct FIFO communication or * simple DMA. The user typically defines two callacks, one for send and one * for receive. * * @param CallBackRef is a callback reference passed in by the upper layer *	  when setting the callback functions, and passed back to the upper *	  layer when the callback is invoked. */typedef void (*XEmac_FifoHandler) (void *CallBackRef);/** * Callback when an asynchronous error occurs. * * @param CallBackRef is a callback reference passed in by the upper layer *	  when setting the callback functions, and passed back to the upper *	  layer when the callback is invoked. * @param ErrorCode is a Xilinx error code defined in xstatus.h.  Also see *	  XEmac_SetErrorHandler() for a description of possible errors. */typedef void (*XEmac_ErrorHandler) (void *CallBackRef, XStatus ErrorCode);/*@}*//** * The XEmac driver instance data. The user is required to allocate a * variable of this type for every EMAC device in the system. A pointer * to a variable of this type is then passed to the driver API functions. */typedef struct {	u32 BaseAddress;	/* Base address (of IPIF) */	u32 IsStarted;		/* Device is currently started */	u32 IsReady;		/* Device is initialized and ready */	u32 IsPolled;		/* Device is in polled mode */	u8 IpIfDmaConfig;	/* IPIF/DMA hardware configuration */	u32 HasMii;		/* Does device support MII? */	u32 HasMulticastHash;	/* Does device support multicast hash table? */	XEmac_Stats Stats;	XPacketFifoV100b RecvFifo;	/* FIFO used to receive frames */	XPacketFifoV100b SendFifo;	/* FIFO used to send frames */	/*	 * Callbacks	 */	XEmac_FifoHandler FifoRecvHandler;	/* for non-DMA/simple DMA interrupts */	void *FifoRecvRef;	XEmac_FifoHandler FifoSendHandler;	/* for non-DMA/simple DMA interrupts */	void *FifoSendRef;	XEmac_ErrorHandler ErrorHandler;	/* for asynchronous errors */	void *ErrorRef;	XDmaChannel RecvChannel;	/* DMA receive channel driver */	XDmaChannel SendChannel;	/* DMA send channel driver */	XEmac_SgHandler SgRecvHandler;	/* callback for scatter-gather DMA */	void *SgRecvRef;	XEmac_SgHandler SgSendHandler;	/* callback for scatter-gather DMA */	void *SgSendRef;} XEmac;/***************** Macros (Inline Functions) Definitions *********************//*****************************************************************************//**** This macro determines if the device is currently configured for* scatter-gather DMA.** @param InstancePtr is a pointer to the XEmac instance to be worked on.** @return** Boolean TRUE if the device is configured for scatter-gather DMA, or FALSE* if it is not.** @note** Signature: u32 XEmac_mIsSgDma(XEmac *InstancePtr)*******************************************************************************/#define XEmac_mIsSgDma(InstancePtr) \	    ((InstancePtr)->IpIfDmaConfig == XEM_CFG_DMA_SG)/*****************************************************************************//**** This macro determines if the device is currently configured for simple DMA.** @param InstancePtr is a pointer to the XEmac instance to be worked on.** @return** Boolean TRUE if the device is configured for simple DMA, or FALSE otherwise** @note** Signature: u32 XEmac_mIsSimpleDma(XEmac *InstancePtr)*******************************************************************************/#define XEmac_mIsSimpleDma(InstancePtr) \	    ((InstancePtr)->IpIfDmaConfig == XEM_CFG_SIMPLE_DMA)/*****************************************************************************//**** This macro determines if the device is currently configured with DMA (either* simple DMA or scatter-gather DMA)** @param InstancePtr is a pointer to the XEmac instance to be worked on.** @return** Boolean TRUE if the device is configured with DMA, or FALSE otherwise** @note** Signature: u32 XEmac_mIsDma(XEmac *InstancePtr)*******************************************************************************/#define XEmac_mIsDma(InstancePtr) \	    (XEmac_mIsSimpleDma(InstancePtr) || XEmac_mIsSgDma(InstancePtr))/************************** Function Prototypes ******************************//* * Initialization functions in xemac.c */XStatus XEmac_Initialize(XEmac * InstancePtr, u16 DeviceId);XStatus XEmac_Start(XEmac * InstancePtr);XStatus XEmac_Stop(XEmac * InstancePtr);void XEmac_Reset(XEmac * InstancePtr);XEmac_Config *XEmac_LookupConfig(u16 DeviceId);/* * Diagnostic functions in xemac_selftest.c */XStatus XEmac_SelfTest(XEmac * InstancePtr);/* * Polled functions in xemac_polled.c */XStatus XEmac_PollSend(XEmac * InstancePtr, u8 * BufPtr, u32 ByteCount);XStatus XEmac_PollRecv(XEmac * InstancePtr, u8 * BufPtr, u32 * ByteCountPtr);/* * Interrupts with scatter-gather DMA functions in xemac_intr_dma.c */XStatus XEmac_SgSend(XEmac * InstancePtr, XBufDescriptor * BdPtr, int Delay);XStatus XEmac_SgRecv(XEmac * InstancePtr, XBufDescriptor * BdPtr);XStatus XEmac_SetPktThreshold(XEmac * InstancePtr, u32 Direction, u8 Threshold);XStatus XEmac_GetPktThreshold(XEmac * InstancePtr, u32 Direction,			      u8 * ThreshPtr);XStatus XEmac_SetPktWaitBound(XEmac * InstancePtr, u32 Direction,			      u32 TimerValue);XStatus XEmac_GetPktWaitBound(XEmac * InstancePtr, u32 Direction,			      u32 * WaitPtr);XStatus XEmac_SetSgRecvSpace(XEmac * InstancePtr, u32 * MemoryPtr,			     u32 ByteCount);XStatus XEmac_SetSgSendSpace(XEmac * InstancePtr, u32 * MemoryPtr,			     u32 ByteCount);void XEmac_SetSgRecvHandler(XEmac * InstancePtr, void *CallBackRef,			    XEmac_SgHandler FuncPtr);void XEmac_SetSgSendHandler(XEmac * InstancePtr, void *CallBackRef,			    XEmac_SgHandler FuncPtr);void XEmac_IntrHandlerDma(void *InstancePtr);	/* interrupt handler *//* * Interrupts with direct FIFO functions in xemac_intr_fifo.c. Also used * for simple DMA. */XStatus XEmac_FifoSend(XEmac * InstancePtr, u8 * BufPtr, u32 ByteCount);XStatus XEmac_FifoRecv(XEmac * InstancePtr, u8 * BufPtr, u32 * ByteCountPtr);void XEmac_SetFifoRecvHandler(XEmac * InstancePtr, void *CallBackRef,			      XEmac_FifoHandler FuncPtr);void XEmac_SetFifoSendHandler(XEmac * InstancePtr, void *CallBackRef,			      XEmac_FifoHandler FuncPtr);void XEmac_IntrHandlerFifo(void *InstancePtr);	/* interrupt handler *//* * General interrupt-related functions in xemac_intr.c */void XEmac_SetErrorHandler(XEmac * InstancePtr, void *CallBackRef,			   XEmac_ErrorHandler FuncPtr);/* * MAC configuration in xemac_options.c */XStatus XEmac_SetOptions(XEmac * InstancePtr, u32 OptionFlag);u32 XEmac_GetOptions(XEmac * InstancePtr);XStatus XEmac_SetMacAddress(XEmac * InstancePtr, u8 * AddressPtr);void XEmac_GetMacAddress(XEmac * InstancePtr, u8 * BufferPtr);XStatus XEmac_SetInterframeGap(XEmac * InstancePtr, u8 Part1, u8 Part2);void XEmac_GetInterframeGap(XEmac * InstancePtr, u8 * Part1Ptr, u8 * Part2Ptr);/* * Multicast functions in xemac_multicast.c (not supported by EMAC yet) */XStatus XEmac_MulticastAdd(XEmac * InstancePtr, u8 * AddressPtr);XStatus XEmac_MulticastClear(XEmac * InstancePtr);/* * PHY configuration in xemac_phy.c */XStatus XEmac_PhyRead(XEmac * InstancePtr, u32 PhyAddress,		      u32 RegisterNum, u16 * PhyDataPtr);XStatus XEmac_PhyWrite(XEmac * InstancePtr, u32 PhyAddress,		       u32 RegisterNum, u16 PhyData);/* * Statistics in xemac_stats.c */void XEmac_GetStats(XEmac * InstancePtr, XEmac_Stats * StatsPtr);void XEmac_ClearStats(XEmac * InstancePtr);#endif				/* end of protection macro */

⌨️ 快捷键说明

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