]> git.sur5r.net Git - freertos/blobdiff - FreeRTOS/Demo/CORTEX_R5_UltraScale_MPSoC/RTOSDemo_R5_bsp/psu_cortexr5_0/libsrc/zdma_v1_5/src/xzdma_hw.h
Update Zynq, MPSoc Cortex-A53 and MPSoc Cortex-R5 demo projects to build with the...
[freertos] / FreeRTOS / Demo / CORTEX_R5_UltraScale_MPSoC / RTOSDemo_R5_bsp / psu_cortexr5_0 / libsrc / zdma_v1_5 / src / xzdma_hw.h
diff --git a/FreeRTOS/Demo/CORTEX_R5_UltraScale_MPSoC/RTOSDemo_R5_bsp/psu_cortexr5_0/libsrc/zdma_v1_5/src/xzdma_hw.h b/FreeRTOS/Demo/CORTEX_R5_UltraScale_MPSoC/RTOSDemo_R5_bsp/psu_cortexr5_0/libsrc/zdma_v1_5/src/xzdma_hw.h
new file mode 100644 (file)
index 0000000..046921c
--- /dev/null
@@ -0,0 +1,384 @@
+/******************************************************************************
+*
+* Copyright (C) 2014 Xilinx, Inc.  All rights reserved.
+*
+* Permission is hereby granted, free of charge, to any person obtaining a copy
+* of this software and associated documentation files (the "Software"), to deal
+* in the Software without restriction, including without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* Use of the Software is limited solely to applications:
+* (a) running on a Xilinx device, or
+* (b) that interact with a Xilinx device through a bus or interconnect.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+* XILINX  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*
+* Except as contained in this notice, the name of the Xilinx shall not be used
+* in advertising or otherwise to promote the sale, use or other dealings in
+* this Software without prior written authorization from Xilinx.
+*
+******************************************************************************/
+/*****************************************************************************/
+/**
+*
+* @file xzdma_hw.h
+* @addtogroup zdma_v1_5
+* @{
+*
+* This header file contains identifiers and register-level driver functions (or
+* macros) that can be used to access the Xilinx ZDMA core.
+*
+* <pre>
+* MODIFICATION HISTORY:
+*
+* Ver   Who     Date     Changes
+* ----- ------  -------- ------------------------------------------------------
+* 1.0   vns     2/27/15  First release
+* </pre>
+*
+******************************************************************************/
+#ifndef XZDMA_HW_H_
+#define XZDMA_HW_H_            /**< Prevent circular inclusions
+                                 *  by using protection macros */
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/***************************** Include Files *********************************/
+
+#include "xil_io.h"
+
+/************************** Constant Definitions *****************************/
+
+/** @name Registers offsets
+ * @{
+ */
+#define XZDMA_ERR_CTRL                         (0x000U)
+#define XZDMA_CH_ECO                           (0x004U)
+#define XZDMA_CH_ISR_OFFSET                    (0x100U)
+#define XZDMA_CH_IMR_OFFSET                    (0x104U)
+#define XZDMA_CH_IEN_OFFSET                    (0x108U)
+#define XZDMA_CH_IDS_OFFSET                    (0x10CU)
+#define XZDMA_CH_CTRL0_OFFSET                  (0x110U)
+#define XZDMA_CH_CTRL1_OFFSET                  (0x114U)
+#define XZDMA_CH_PERIF_OFFSET                  (0x118U)
+#define XZDMA_CH_STS_OFFSET                    (0x11CU)
+#define XZDMA_CH_DATA_ATTR_OFFSET              (0x120U)
+#define XZDMA_CH_DSCR_ATTR_OFFSET              (0x124U)
+#define XZDMA_CH_SRC_DSCR_WORD0_OFFSET         (0x128U)
+#define XZDMA_CH_SRC_DSCR_WORD1_OFFSET         (0x12CU)
+#define XZDMA_CH_SRC_DSCR_WORD2_OFFSET         (0x130U)
+#define XZDMA_CH_SRC_DSCR_WORD3_OFFSET         (0x134U)
+#define XZDMA_CH_DST_DSCR_WORD0_OFFSET         (0x138U)
+#define XZDMA_CH_DST_DSCR_WORD1_OFFSET         (0x13CU)
+#define XZDMA_CH_DST_DSCR_WORD2_OFFSET         (0x140U)
+#define XZDMA_CH_DST_DSCR_WORD3_OFFSET         (0x144U)
+#define XZDMA_CH_WR_ONLY_WORD0_OFFSET          (0x148U)
+#define XZDMA_CH_WR_ONLY_WORD1_OFFSET          (0x14CU)
+#define XZDMA_CH_WR_ONLY_WORD2_OFFSET          (0x150U)
+#define XZDMA_CH_WR_ONLY_WORD3_OFFSET          (0x154U)
+#define XZDMA_CH_SRC_START_LSB_OFFSET          (0x158U)
+#define XZDMA_CH_SRC_START_MSB_OFFSET          (0x15CU)
+#define XZDMA_CH_DST_START_LSB_OFFSET          (0x160U)
+#define XZDMA_CH_DST_START_MSB_OFFSET          (0x164U)
+#define XZDMA_CH_SRC_CUR_PYLD_LSB_OFFSET       (0x168U)
+#define XZDMA_CH_SRC_CUR_PYLD_MSB_OFFSET       (0x16CU)
+#define XZDMA_CH_DST_CUR_PYLD_LSB_OFFSET       (0x170U)
+#define XZDMA_CH_DST_CUR_PYLD_MSB_OFFSET       (0x174U)
+#define XZDMA_CH_SRC_CUR_DSCR_LSB_OFFSET       (0x178U)
+#define XZDMA_CH_SRC_CUR_DSCR_MSB_OFFSET       (0x17CU)
+#define XZDMA_CH_DST_CUR_DSCR_LSB_OFFSET       (0x180U)
+#define XZDMA_CH_DST_CUR_DSCR_MSB_OFFSET       (0x184U)
+#define XZDMA_CH_TOTAL_BYTE_OFFSET             (0x188U)
+#define XZDMA_CH_RATE_CNTL_OFFSET              (0x18CU)
+#define XZDMA_CH_IRQ_SRC_ACCT_OFFSET           (0x190U)
+#define XZDMA_CH_IRQ_DST_ACCT_OFFSET           (0x194U)
+#define XZDMA_CH_CTRL2_OFFSET                  (0x200U)
+/*@}*/
+
+#define XZDMA_SLCR_SECURE_OFFSET               (0xff4b0024)
+/** @name Interrupt Enable/Disable/Mask/Status registers bit masks and shifts
+ * @{
+ */
+#define XZDMA_IXR_DMA_PAUSE_MASK       (0x00000800U) /**< IXR pause mask */
+#define XZDMA_IXR_DMA_DONE_MASK                (0x00000400U) /**< IXR done mask */
+#define XZDMA_IXR_AXI_WR_DATA_MASK     (0x00000200U) /**< IXR AXI write data
+                                                       *  error mask */
+#define XZDMA_IXR_AXI_RD_DATA_MASK     (0x00000100U) /**< IXR AXI read data
+                                                       *  error mask */
+#define XZDMA_IXR_AXI_RD_DST_DSCR_MASK (0x00000080U) /**< IXR AXI read
+                                                       *  descriptor error
+                                                       *  mask */
+#define XZDMA_IXR_AXI_RD_SRC_DSCR_MASK (0x00000040U) /**< IXR AXI write
+                                                       *  descriptor error
+                                                       *  mask */
+#define XZDMA_IXR_DST_ACCT_ERR_MASK    (0x00000020U) /**< IXR DST interrupt
+                                                       *  count overflow
+                                                       *  mask */
+#define XZDMA_IXR_SRC_ACCT_ERR_MASK    (0x00000010U) /**< IXR SRC interrupt
+                                                       *  count overflow
+                                                       *  mask */
+#define XZDMA_IXR_BYTE_CNT_OVRFL_MASK  (0x00000008U) /**< IXR byte count over
+                                                       * flow mask */
+#define XZDMA_IXR_DST_DSCR_DONE_MASK   (0x00000004U) /**< IXR destination
+                                                       *  descriptor done
+                                                       *  mask */
+#define XZDMA_IXR_SRC_DSCR_DONE_MASK   (0x00000002U) /**< IXR source
+                                                       *  descriptor done
+                                                       *  mask */
+#define XZDMA_IXR_INV_APB_MASK         (0x00000001U) /**< IXR invalid APB
+                                                       *  access mask */
+#define XZDMA_IXR_ALL_INTR_MASK                (0x00000FFFU) /**< IXR OR of all the
+                                                       *  interrupts mask */
+#define XZDMA_IXR_DONE_MASK            (0x00000400U) /**< IXR All done mask */
+
+#define XZDMA_IXR_ERR_MASK             (0x00000BF9U) /**< IXR all Error mask*/
+                                       /**< Or of XZDMA_IXR_AXI_WR_DATA_MASK,
+                                         * XZDMA_IXR_AXI_RD_DATA_MASK,
+                                         * XZDMA_IXR_AXI_RD_DST_DSCR_MASK,
+                                         * XZDMA_IXR_AXI_RD_SRC_DSCR_MASK,
+                                         * XZDMA_IXR_INV_APB_MASK,
+                                         * XZDMA_IXR_DMA_PAUSE_MASK,
+                                         * XZDMA_IXR_BYTE_CNT_OVRFL_MASK,
+                                         * XZDMA_IXR_SRC_ACCT_ERR_MASK,
+                                         *  XZDMA_IXR_DST_ACCT_ERR_MASK */
+/*@}*/
+
+/** @name Channel Control0 register bit masks and shifts
+ * @{
+ */
+#define XZDMA_CTRL0_OVR_FETCH_MASK     (0x00000080U) /**< Over fetch mask */
+#define XZDMA_CTRL0_POINT_TYPE_MASK    (0x00000040U) /**< Pointer type mask */
+#define XZDMA_CTRL0_MODE_MASK          (0x00000030U) /**< Mode mask */
+#define XZDMA_CTRL0_WRONLY_MASK                (0x00000010U) /**< Write only mask */
+#define XZDMA_CTRL0_RDONLY_MASK                (0x00000020U) /**< Read only mask */
+#define XZDMA_CTRL0_RATE_CNTL_MASK     (0x00000008U) /**< Rate control mask */
+#define XZDMA_CTRL0_CONT_ADDR_MASK     (0x00000004U) /**< Continue address
+                                                       *  specified mask */
+#define XZDMA_CTRL0_CONT_MASK          (0x00000002U) /**< Continue mask */
+
+#define XZDMA_CTRL0_OVR_FETCH_SHIFT    (7U)    /**< Over fetch shift */
+#define XZDMA_CTRL0_POINT_TYPE_SHIFT   (6U)    /**< Pointer type shift */
+#define XZDMA_CTRL0_MODE_SHIFT         (4U)    /**< Mode type shift */
+#define XZDMA_CTRL0_RESET_VALUE                (0x00000080U) /**< CTRL0 reset value */
+
+/*@}*/
+
+/** @name Channel Control1 register bit masks and shifts
+ * @{
+ */
+#define XZDMA_CTRL1_SRC_ISSUE_MASK     (0x0000001FU) /**< Source issue mask */
+#define XZDMA_CTRL1_RESET_VALUE                (0x000003FFU) /**< CTRL1 reset value */
+/*@}*/
+
+/** @name Channel Peripheral register bit masks and shifts
+ * @{
+ */
+#define XZDMA_PERIF_PROG_CELL_CNT_MASK (0x0000003EU) /**< Peripheral program
+                                                       *  cell count */
+#define XZDMA_PERIF_SIDE_MASK          (0x00000002U) /**< Interface attached
+                                                       * the side mask */
+#define XZDMA_PERIF_EN_MASK            (0x00000001U) /**< Peripheral flow
+                                                       * control mask */
+/*@}*/
+
+/** @name Channel Status register bit masks and shifts
+ * @{
+ */
+#define XZDMA_STS_DONE_ERR_MASK        (0x00000003U) /**< Done with errors mask */
+#define XZDMA_STS_BUSY_MASK    (0x00000002U) /**< ZDMA is busy in transfer
+                                               *  mask */
+#define XZDMA_STS_PAUSE_MASK   (0x00000001U) /**< ZDMA is in Pause state
+                                               *  mask */
+#define XZDMA_STS_DONE_MASK    (0x00000000U) /**< ZDMA done mask */
+#define XZDMA_STS_ALL_MASK     (0x00000003U) /**< ZDMA status mask */
+
+/*@}*/
+
+/** @name Channel Data Attribute register bit masks and shifts
+ * @{
+ */
+#define XZDMA_DATA_ATTR_ARBURST_MASK   (0x0C000000U) /**< Data ArBurst mask */
+#define XZDMA_DATA_ATTR_ARCACHE_MASK   (0x03C00000U) /**< Data ArCache mask */
+#define XZDMA_DATA_ATTR_ARQOS_MASK     (0x003C0000U) /**< Data ARQos masks */
+#define XZDMA_DATA_ATTR_ARLEN_MASK     (0x0003C000U) /**< Data Arlen mask */
+#define XZDMA_DATA_ATTR_AWBURST_MASK   (0x00003000U) /**< Data Awburst mask */
+#define XZDMA_DATA_ATTR_AWCACHE_MASK   (0x00000F00U) /**< Data AwCache mask */
+#define XZDMA_DATA_ATTR_AWQOS_MASK     (0x000000F0U) /**< Data AwQos mask */
+#define XZDMA_DATA_ATTR_AWLEN_MASK     (0x0000000FU) /**< Data Awlen mask */
+
+#define XZDMA_DATA_ATTR_ARBURST_SHIFT  (26U) /**< Data Arburst shift */
+#define XZDMA_DATA_ATTR_ARCACHE_SHIFT  (22U) /**< Data ArCache shift */
+#define XZDMA_DATA_ATTR_ARQOS_SHIFT    (18U) /**< Data ARQos shift */
+#define XZDMA_DATA_ATTR_ARLEN_SHIFT    (14U) /**< Data Arlen shift */
+#define XZDMA_DATA_ATTR_AWBURST_SHIFT  (12U) /**< Data Awburst shift  */
+#define XZDMA_DATA_ATTR_AWCACHE_SHIFT  (8U)  /**< Data Awcache shift */
+#define XZDMA_DATA_ATTR_AWQOS_SHIFT    (4U)  /**< Data Awqos shift */
+#define XZDMA_DATA_ATTR_RESET_VALUE    (0x0483D20FU) /**< Data Attributes
+                                                       *  reset value */
+
+/*@}*/
+
+/** @name Channel DSCR Attribute register bit masks and shifts
+ * @{
+ */
+#define XZDMA_DSCR_ATTR_AXCOHRNT_MASK  (0x00000100U) /**< Descriptor coherent
+                                                       *  mask */
+#define XZDMA_DSCR_ATTR_AXCACHE_MASK   (0x000000F0U) /**< Descriptor cache
+                                                       * mask */
+#define XZDMA_DSCR_ATTR_AXQOS_MASK     (0x0000000FU) /**< Descriptor AxQos
+                                                       *  mask */
+
+#define XZDMA_DSCR_ATTR_AXCOHRNT_SHIFT (8U) /**< Descriptor coherent shift */
+#define XZDMA_DSCR_ATTR_AXCACHE_SHIFT  (4U) /**< Descriptor cache shift */
+#define XZDMA_DSCR_ATTR_RESET_VALUE    (0x00000000U) /**< Dscr Attributes
+                                                       *  reset value */
+
+/*@}*/
+
+/** @name Channel Source/Destination Word0 register bit mask
+ * @{
+ */
+#define XZDMA_WORD0_LSB_MASK   (0xFFFFFFFFU)   /**< LSB Address mask */
+/*@}*/
+
+/** @name Channel Source/Destination Word1 register bit mask
+ * @{
+ */
+#define XZDMA_WORD1_MSB_MASK   (0x0001FFFFU)   /**< MSB Address mask */
+#define XZDMA_WORD1_MSB_SHIFT  (32U)           /**< MSB Address shift */
+/*@}*/
+
+/** @name Channel Source/Destination Word2 register bit mask
+ * @{
+ */
+#define XZDMA_WORD2_SIZE_MASK  (0x3FFFFFFFU) /**< Size mask */
+/*@}*/
+
+/** @name Channel Source/Destination Word3 register bit masks and shifts
+ * @{
+ */
+#define XZDMA_WORD3_CMD_MASK           (0x00000018U)   /**< Cmd mask */
+#define XZDMA_WORD3_CMD_SHIFT          (3U)            /**< Cmd shift */
+#define XZDMA_WORD3_CMD_NXTVALID_MASK  (0x00000000U)   /**< Next Dscr is valid
+                                                         *  mask */
+#define XZDMA_WORD3_CMD_PAUSE_MASK     (0x00000008U)   /**< Pause after this
+                                                         * dscr mask */
+#define XZDMA_WORD3_CMD_STOP_MASK      (0x00000010U)   /**< Stop after this
+                                                       ..*  dscr mask */
+#define XZDMA_WORD3_INTR_MASK          (0x00000004U)   /**< Interrupt
+                                                         *  enable or disable
+                                                         *  mask */
+#define XZDMA_WORD3_INTR_SHIFT         (2U)            /**< Interrupt enable
+                                                         *  disable
+                                                         *  shift */
+#define XZDMA_WORD3_TYPE_MASK          (0x00000002U)   /**< Type of Descriptor
+                                                         *  mask */
+#define XZDMA_WORD3_TYPE_SHIFT         (1U)            /**< Type of Descriptor
+                                                         *  Shift */
+#define XZDMA_WORD3_COHRNT_MASK                (0x00000001U)   /**< Coherence mask */
+/*@}*/
+
+/** @name Channel Source/Destination start address or current payload
+ *  MSB register bit mask
+ * @{
+ */
+#define XZDMA_START_MSB_ADDR_MASK      (0x0001FFFFU)   /**< Start msb address
+                                                         *  mask */
+/*@}*/
+
+/** @name Channel Rate control count register bit mask
+ * @{
+ */
+#define XZDMA_CH_RATE_CNTL_MASK                (0x00000FFFU) /**< Channel rate control
+                                                       *  mask */
+/*@}*/
+
+/** @name Channel Source/Destination Interrupt account count register bit mask
+ * @{
+ */
+#define XZDMA_CH_IRQ_ACCT_MASK         (0x000000FFU) /**< Interrupt count
+                                                       *  mask */
+/*@}*/
+
+/** @name Channel debug register 0/1 bit mask
+ * @{
+ */
+#define XZDMA_CH_DBG_CMN_BUF_MASK      (0x000001FFU) /**< Common buffer count
+                                                       * mask */
+/*@}*/
+
+/** @name Channel control2 register bit mask
+ * @{
+ */
+#define XZDMA_CH_CTRL2_EN_MASK         (0x00000001U) /**< Channel enable
+                                                       *  mask */
+#define XZDMA_CH_CTRL2_DIS_MASK                (0x00000000U) /**< Channel disable
+                                                       *  mask */
+/*@}*/
+
+/** @name Channel control2 register bit mask
+ * @{
+ */
+ #define XZDMA_WRITE_TO_CLEAR_MASK     (0x00000000U) /**< Write to clear
+                                                       *  mask */
+ /*@}*/
+
+/***************** Macros (Inline Functions) Definitions *********************/
+
+#define XZDma_In32             Xil_In32        /**< Input operation */
+#define XZDma_Out32            Xil_Out32       /**< Output operation */
+
+/*****************************************************************************/
+/**
+*
+* This macro reads the given register.
+*
+* @param       BaseAddress is the Xilinx base address of the ZDMA core.
+* @param       RegOffset is the register offset of the register.
+*
+* @return      The 32-bit value of the register.
+*
+* @note                C-style signature:
+*              u32 XZDma_ReadReg(u32 BaseAddress, u32 RegOffset)
+*
+******************************************************************************/
+#define XZDma_ReadReg(BaseAddress, RegOffset) \
+               XZDma_In32((BaseAddress) + (u32)(RegOffset))
+
+/*****************************************************************************/
+/**
+*
+* This macro writes the value into the given register.
+*
+* @param       BaseAddress is the Xilinx base address of the ZDMA core.
+* @param       RegOffset is the register offset of the register.
+* @param       Data is the 32-bit value to write to the register.
+*
+* @return      None.
+*
+* @note                C-style signature:
+*              void XZDma_WriteReg(u32 BaseAddress, u32 RegOffset, u32 Data)
+*
+******************************************************************************/
+#define XZDma_WriteReg(BaseAddress, RegOffset, Data) \
+               XZDma_Out32(((BaseAddress) + (u32)(RegOffset)), (u32)(Data))
+
+#ifdef __cplusplus
+}
+
+#endif
+
+#endif /* XZDMA_HW_H_ */
+/** @} */