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

📄 xbuf_descriptor.h

📁 uboot在arm处理器s3c2410的移植代码
💻 H
字号:
/********************************************************************************     Author: Xilinx, Inc.***     This program is free software; you can redistribute it and/or modify it*     under the terms of the GNU General Public License as published by the*     Free Software Foundation; either version 2 of the License, or (at your*     option) any later version.***     XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" AS A*     COURTESY TO YOU. BY PROVIDING THIS DESIGN, CODE, OR INFORMATION AS*     ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION OR STANDARD,*     XILINX IS MAKING NO REPRESENTATION THAT THIS IMPLEMENTATION IS FREE*     FROM ANY CLAIMS OF INFRINGEMENT, AND YOU ARE RESPONSIBLE FOR OBTAINING*     ANY THIRD PARTY RIGHTS YOU MAY REQUIRE FOR YOUR IMPLEMENTATION.*     XILINX EXPRESSLY DISCLAIMS ANY WARRANTY WHATSOEVER WITH RESPECT TO*     THE ADEQUACY OF THE IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY*     WARRANTIES OR REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM*     CLAIMS OF INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND*     FITNESS FOR A PARTICULAR PURPOSE.***     Xilinx hardware products are not intended for use in life support*     appliances, devices, or systems. Use in such applications is*     expressly prohibited.***     (c) Copyright 2002-2004 Xilinx Inc.*     All rights reserved.***     You should have received a copy of the GNU General Public License along*     with this program; if not, write to the Free Software Foundation, Inc.,*     675 Mass Ave, Cambridge, MA 02139, USA.** FILENAME:** xbuf_descriptor.h** DESCRIPTION:** This file contains the interface for the XBufDescriptor component.* The XBufDescriptor component is a passive component that only maps over* a buffer descriptor data structure shared by the scatter gather DMA hardware* and software. The component's primary purpose is to provide encapsulation of* the buffer descriptor processing.  See the source file xbuf_descriptor.c for* details.** NOTES:** Most of the functions of this component are implemented as macros in order* to optimize the processing.  The names are not all uppercase such that they* can be switched between macros and functions easily.*******************************************************************************/#ifndef XBUF_DESCRIPTOR_H	/* prevent circular inclusions */#define XBUF_DESCRIPTOR_H	/* by using protection macros *//***************************** Include Files *********************************/#include "xbasic_types.h"#include "xdma_channel_i.h"/************************** Constant Definitions *****************************//* The following constants allow access to all fields of a buffer descriptor * and are necessary at this level of visibility to allow macros to access * and modify the fields of a buffer descriptor.  It is not expected that the * user of a buffer descriptor would need to use these constants. */#define XBD_DEVICE_STATUS_OFFSET    0#define XBD_CONTROL_OFFSET	    1#define XBD_SOURCE_OFFSET	    2#define XBD_DESTINATION_OFFSET	    3#define XBD_LENGTH_OFFSET	    4#define XBD_STATUS_OFFSET	    5#define XBD_NEXT_PTR_OFFSET	    6#define XBD_ID_OFFSET		    7#define XBD_FLAGS_OFFSET	    8#define XBD_RQSTED_LENGTH_OFFSET    9#define XBD_SIZE_IN_WORDS	    10/* * The following constants define the bits of the flags field of a buffer * descriptor */#define XBD_FLAGS_LOCKED_MASK	    1UL/**************************** Type Definitions *******************************/typedef u32 XBufDescriptor[XBD_SIZE_IN_WORDS];/***************** Macros (Inline Functions) Definitions *********************//* each of the following macros are named the same as functions rather than all * upper case in order to allow either the macros or the functions to be * used, see the source file xbuf_descriptor.c for documentation */#define XBufDescriptor_Initialize(InstancePtr)			\{								\    (*((u32 *)InstancePtr + XBD_CONTROL_OFFSET) = 0);	    \    (*((u32 *)InstancePtr + XBD_SOURCE_OFFSET) = 0);	    \    (*((u32 *)InstancePtr + XBD_DESTINATION_OFFSET) = 0);   \    (*((u32 *)InstancePtr + XBD_LENGTH_OFFSET) = 0);	    \    (*((u32 *)InstancePtr + XBD_STATUS_OFFSET) = 0);	    \    (*((u32 *)InstancePtr + XBD_DEVICE_STATUS_OFFSET) = 0); \    (*((u32 *)InstancePtr + XBD_NEXT_PTR_OFFSET) = 0);	    \    (*((u32 *)InstancePtr + XBD_ID_OFFSET) = 0);	    \    (*((u32 *)InstancePtr + XBD_FLAGS_OFFSET) = 0);	    \    (*((u32 *)InstancePtr + XBD_RQSTED_LENGTH_OFFSET) = 0); \}#define XBufDescriptor_GetControl(InstancePtr)	 \    (u32)(*((u32 *)InstancePtr + XBD_CONTROL_OFFSET))#define XBufDescriptor_SetControl(InstancePtr, Control)	 \    (*((u32 *)InstancePtr + XBD_CONTROL_OFFSET) = (u32)Control)#define XBufDescriptor_IsLastControl(InstancePtr) \    (u32)(*((u32 *)InstancePtr + XBD_CONTROL_OFFSET) & \	       XDC_CONTROL_LAST_BD_MASK)#define XBufDescriptor_SetLast(InstancePtr) \    (*((u32 *)InstancePtr + XBD_CONTROL_OFFSET) |= XDC_CONTROL_LAST_BD_MASK)#define XBufDescriptor_GetSrcAddress(InstancePtr) \    ((u32 *)(*((u32 *)InstancePtr + XBD_SOURCE_OFFSET)))#define XBufDescriptor_SetSrcAddress(InstancePtr, Source) \    (*((u32 *)InstancePtr + XBD_SOURCE_OFFSET) = (u32)Source)#define XBufDescriptor_GetDestAddress(InstancePtr) \    ((u32 *)(*((u32 *)InstancePtr + XBD_DESTINATION_OFFSET)))#define XBufDescriptor_SetDestAddress(InstancePtr, Destination) \    (*((u32 *)InstancePtr + XBD_DESTINATION_OFFSET) = (u32)Destination)#define XBufDescriptor_GetLength(InstancePtr)				\    (u32)(*((u32 *)InstancePtr + XBD_RQSTED_LENGTH_OFFSET) -	\	      *((u32 *)InstancePtr + XBD_LENGTH_OFFSET))#define XBufDescriptor_SetLength(InstancePtr, Length)			    \{									    \    (*((u32 *)InstancePtr + XBD_LENGTH_OFFSET) = (u32)(Length));    \    (*((u32 *)InstancePtr + XBD_RQSTED_LENGTH_OFFSET) = (u32)(Length));\}#define XBufDescriptor_GetStatus(InstancePtr)	 \    (u32)(*((u32 *)InstancePtr + XBD_STATUS_OFFSET))#define XBufDescriptor_SetStatus(InstancePtr, Status)	 \    (*((u32 *)InstancePtr + XBD_STATUS_OFFSET) = (u32)Status)#define XBufDescriptor_IsLastStatus(InstancePtr) \    (u32)(*((u32 *)InstancePtr + XBD_STATUS_OFFSET) & \	       XDC_STATUS_LAST_BD_MASK)#define XBufDescriptor_GetDeviceStatus(InstancePtr) \    ((u32)(*((u32 *)InstancePtr + XBD_DEVICE_STATUS_OFFSET)))#define XBufDescriptor_SetDeviceStatus(InstancePtr, Status) \    (*((u32 *)InstancePtr + XBD_DEVICE_STATUS_OFFSET) = (u32)Status)#define XBufDescriptor_GetNextPtr(InstancePtr) \    (XBufDescriptor *)(*((u32 *)InstancePtr + XBD_NEXT_PTR_OFFSET))#define XBufDescriptor_SetNextPtr(InstancePtr, NextPtr) \    (*((u32 *)InstancePtr + XBD_NEXT_PTR_OFFSET) = (u32)NextPtr)#define XBufDescriptor_GetId(InstancePtr) \    (u32)(*((u32 *)InstancePtr + XBD_ID_OFFSET))#define XBufDescriptor_SetId(InstancePtr, Id) \    (*((u32 *)InstancePtr + XBD_ID_OFFSET) = (u32)Id)#define XBufDescriptor_GetFlags(InstancePtr) \    (u32)(*((u32 *)InstancePtr + XBD_FLAGS_OFFSET))#define XBufDescriptor_SetFlags(InstancePtr, Flags) \    (*((u32 *)InstancePtr + XBD_FLAGS_OFFSET) = (u32)Flags)#define XBufDescriptor_Lock(InstancePtr) \    (*((u32 *)InstancePtr + XBD_FLAGS_OFFSET) |= XBD_FLAGS_LOCKED_MASK)#define XBufDescriptor_Unlock(InstancePtr) \    (*((u32 *)InstancePtr + XBD_FLAGS_OFFSET) &= ~XBD_FLAGS_LOCKED_MASK)#define XBufDescriptor_IsLocked(InstancePtr) \    (*((u32 *)InstancePtr + XBD_FLAGS_OFFSET) & XBD_FLAGS_LOCKED_MASK)/************************** Function Prototypes ******************************//* The following prototypes are provided to allow each of the functions to * be implemented as a function rather than a macro, and to provide the * syntax to allow users to understand how to call the macros, they are * commented out to prevent linker errors *u32 XBufDescriptor_Initialize(XBufDescriptor* InstancePtr);u32 XBufDescriptor_GetControl(XBufDescriptor* InstancePtr);void XBufDescriptor_SetControl(XBufDescriptor* InstancePtr, u32 Control);u32 XBufDescriptor_IsLastControl(XBufDescriptor* InstancePtr);void XBufDescriptor_SetLast(XBufDescriptor* InstancePtr);u32 XBufDescriptor_GetLength(XBufDescriptor* InstancePtr);void XBufDescriptor_SetLength(XBufDescriptor* InstancePtr, u32 Length);u32 XBufDescriptor_GetStatus(XBufDescriptor* InstancePtr);void XBufDescriptor_SetStatus(XBufDescriptor* InstancePtr, u32 Status);u32 XBufDescriptor_IsLastStatus(XBufDescriptor* InstancePtr);u32 XBufDescriptor_GetDeviceStatus(XBufDescriptor* InstancePtr);void XBufDescriptor_SetDeviceStatus(XBufDescriptor* InstancePtr,				    u32 Status);u32 XBufDescriptor_GetSrcAddress(XBufDescriptor* InstancePtr);void XBufDescriptor_SetSrcAddress(XBufDescriptor* InstancePtr,				  u32 SourceAddress);u32 XBufDescriptor_GetDestAddress(XBufDescriptor* InstancePtr);void XBufDescriptor_SetDestAddress(XBufDescriptor* InstancePtr,				   u32 DestinationAddress);XBufDescriptor* XBufDescriptor_GetNextPtr(XBufDescriptor* InstancePtr);void XBufDescriptor_SetNextPtr(XBufDescriptor* InstancePtr,			       XBufDescriptor* NextPtr);u32 XBufDescriptor_GetId(XBufDescriptor* InstancePtr);void XBufDescriptor_SetId(XBufDescriptor* InstancePtr, u32 Id);u32 XBufDescriptor_GetFlags(XBufDescriptor* InstancePtr);void XBufDescriptor_SetFlags(XBufDescriptor* InstancePtr, u32 Flags);void XBufDescriptor_Lock(XBufDescriptor* InstancePtr);void XBufDescriptor_Unlock(XBufDescriptor* InstancePtr);u32 XBufDescriptor_IsLocked(XBufDescriptor* InstancePtr);void XBufDescriptor_Copy(XBufDescriptor* InstancePtr,			 XBufDescriptor* DestinationPtr);*/#endif				/* end of protection macro */

⌨️ 快捷键说明

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