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

📄 xmpmc.h

📁 XINLINX公司开发板的嵌入式源代码
💻 H
字号:
/* $Id: xmpmc.h,v 1.2.2.1 2008/02/11 08:38:39 svemula Exp $ *//********************************************************************************       XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS"*       AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND*       SOLUTIONS FOR XILINX DEVICES.  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 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.**       (c) Copyright 2007-2008 Xilinx Inc.*       All rights reserved.*******************************************************************************//*****************************************************************************//**** @file xmpmc.h** The Xilinx XMpmc driver supports the following functionality in the Xilinx* Multi-Port Memory Controller (MPMC), a soft IP core designed for Xilinx FPGAs:* 		- Error Correction Code (ECC) capability*		- Performance Monitoring*		- Static PHY** The device driver is not necessary for the MPMC device unless one of the* three functionalities is enabled in the MPMC device.** This header file contains the interfaces for the MPMC device driver.** ECC is a mode that detects and corrects single memory errors and detects the* double memory errors. The XMpmc device driver provides the following abilities* for ECC:*  - Enable and Disable ECC mode in Read logic/Write logic or both.*  - Enable and Disable interrupts for specific ECC errors.*  - Error injection for testing of ECC mode.*  - Statistics for specific ECC errors detected.*  - Information about address where the last error was detected.** The XMpmc device driver provides the following abilities for Performance* Monitoring:*  - Enable and Disable Performance Monitoring.*  - Clear the Performance Monitoring Data Bins.*  - Get and Clear the the Performance Monitoring Data Bins Clear Status.*  - Get the Global Cycle Count, Dead Cycle Count and Peformance Monitoring Data* 	for the Data Bins.** The XMpmc device driver provides the following abilities for Static Phy:*  - Read and Write to the Static PHY register.***<b> Initialization and Configuration </b>** The device driver enables higher layer software (for example, an application)* to communicate with the MPMC device.** XMpmc_CfgInitialize() API is used to initialize the XMpmc device instance.* The user needs to first call the XMpmc_LookupConfig() API which returns the* Configuration structure pointer which is passed as a parameter to the* XMpmc_CfgInitialize() API.**<b> Interrupts</b>** The MPMC device has one physical interrupt which must be connected to* the interrupt controller in the system. The driver does not provide any* interrupt handler for handling the interrupt. The users of this driver* must connect their own interrupt handler with the interrupt system.** <b> Asserts </b>** Asserts are used within all Xilinx drivers to enforce constraints on argument* values. Asserts can be turned off on a system-wide basis by defining, at* compile time, the NDEBUG identifier. By default, asserts are turned on and it* is recommended that users leave asserts on during development.*** <b> Threads </b>** This driver is not thread safe. Any needs for threads or thread mutual* exclusion must be satisfied by the layer above this driver.**<b> Hardware Parameters Needed</b>** To use this driver with the MPMC device one of the following functionalities* must be enabled:* 		- ECC capability*		- Performance Monitoring*		- Static PHY** The interrupt capability for the device must be enabled in the hardware* if interrupts are to be used with the driver. The interrupt functions of* the device driver will assert when called if interrupt support is not* present in the hardware.** The ability to force errors is a test mode and it must be enabled* in the hardware if the control register is to be used to force ECC errors.** <pre>* MODIFICATION HISTORY:** Ver   Who  Date     Changes* ----- ---- -------- -----------------------------------------------* 1.00a mta  02/24/07 First release* 2.00a mta  10/24/07 Added support for Performance Monitoring and Static PHY* </pre>*******************************************************************************/#ifndef XMPMC_H			/* prevent circular inclusions */#define XMPMC_H			/* by using protection macros */#ifdef __cplusplusextern "C" {#endif/***************************** Include Files *********************************/#include "xmpmc_hw.h"#include "xstatus.h"/************************** Constant Definitions *****************************//** * @name Indexes for the different ports in MPMC. * @{ */#define XMPMC_PM_PORT0		0  /**< Port 0 */#define XMPMC_PM_PORT1		1  /**< Port 1 */#define XMPMC_PM_PORT2		2  /**< Port 2 */#define XMPMC_PM_PORT3		3  /**< Port 3 */#define XMPMC_PM_PORT4		4  /**< Port 4 */#define XMPMC_PM_PORT5		5  /**< Port 5 */#define XMPMC_PM_PORT6		6  /**< Port 6 */#define XMPMC_PM_PORT7		7  /**< Port 7 *//*@}*//**************************** Type Definitions *******************************//** * This typedef contains configuration information for the device. */typedef struct {	u16 DeviceId;          /**< Device Id */	u32 BaseAddress;       /**< Register Base Address */	int EccSupportPresent; /**< TRUE if ECC Support is enabled else FALSE */	int StaticPhyPresent;  /**< TRUE if Static Phy Support is enabled else					FALSE */	int PerfMonitorEnable; /**< TRUE if Peformance Monitor is enabled else					FALSE */} XMpmc_Config;/** * The XMpmc driver stats data. A pointer to a variable of this type is * passed to the driver API functions. */typedef struct {	u16 SingleErrorCount; /**< Single Error Count */	u16 DoubleErrorCount; /**< Double Error Count */	u16 ParityErrorCount; /**< Parity Error Count */	u32 LastErrorAddress; /**< Address of memory where error occurred */	u8 EccErrorSyndrome;  /**< Indicates the ECC error syndrome value */	u8 EccErrorTransSize; /**< Size of transaction where error occured */	u8 ErrorReadWrite;    /**< Indicates if error occurred in read/write */} XMpmc_Stats;/** * The XMpmc driver instance data. The user is required to allocate a * variable of this type for every MPMC device in the system. A pointer * to a variable of this type is then passed to the driver API functions. */typedef struct {	XMpmc_Config ConfigPtr; /**< Instance of the configuration structure */	u32 IsReady;		/**< Device is initialized and ready */} XMpmc;/***************** Macros (Inline Functions) Definitions *********************//************************** Function Prototypes ******************************//************************** Variable Definitions *****************************//* * API Basic functions implemented in xmpmc.c. */int XMpmc_CfgInitialize(XMpmc * InstancePtr, XMpmc_Config * ConfigPtr,			u32 EffectiveAddr);void XMpmc_EnableEcc(XMpmc * InstancePtr);void XMpmc_DisableEcc(XMpmc * InstancePtr);void XMpmc_SetControlEcc(XMpmc * InstancePtr, u32 Control);u32 XMpmc_GetControlEcc(XMpmc * InstancePtr);u32 XMpmc_GetStatusEcc(XMpmc * InstancePtr);void XMpmc_ClearStatusEcc(XMpmc * InstancePtr);void XMpmc_EnablePm(XMpmc *InstancePtr, u32 Mask);void XMpmc_DisablePm(XMpmc *InstancePtr, u32 Mask);void XMpmc_ClearDataBinPm(XMpmc * InstancePtr, u32 Mask);u32 XMpmc_GetStatusPm(XMpmc * InstancePtr);void XMpmc_ClearStatusPm(XMpmc * InstancePtr, u32 Mask);Xuint64 XMpmc_GetGlobalCycleCountPm(XMpmc * InstancePtr);Xuint64 XMpmc_GetDeadCycleCountPm(XMpmc * InstancePtr, u8 PortNum);Xuint64 XMpmc_GetDataBinCountPm(XMpmc * InstancePtr, u8 PortNum , u8 Qualifier,				u8 AccessType, u8 BinNumber);void XMpmc_SetStaticPhyReg(XMpmc * InstancePtr, u32 Data);u32 XMpmc_GetStaticPhyReg(XMpmc * InstancePtr);XMpmc_Config *XMpmc_LookupConfig(u16 DeviceId);/* * API Functions implemented in xmpmc_stats.c. */void XMpmc_GetStatsEcc(XMpmc * InstancePtr, XMpmc_Stats * StatsPtr);void XMpmc_ClearStatsEcc(XMpmc * InstancePtr);/* * API Functions implemented in xmpmc_selftest.c. */int XMpmc_SelfTest(XMpmc * InstancePtr);/* * API Functions implemented in xmpmc_intr.c. */void XMpmc_IntrGlobalEnable(XMpmc * InstancePtr);void XMpmc_IntrGlobalDisable(XMpmc * InstancePtr);void XMpmc_IntrEnable(XMpmc * InstancePtr, u32 Mask);void XMpmc_IntrDisable(XMpmc * InstancePtr, u32 Mask);void XMpmc_IntrClear(XMpmc * InstancePtr, u32 Mask);u32 XMpmc_IntrGetEnabled(XMpmc * InstancePtr);u32 XMpmc_IntrGetStatus(XMpmc * InstancePtr);#ifdef __cplusplus}#endif#endif /* end of protection macro */

⌨️ 快捷键说明

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