]> git.sur5r.net Git - freertos/blobdiff - FreeRTOS/Demo/CORTEX_R5_UltraScale_MPSoC/RTOSDemo_R5_bsp/psu_cortexr5_0/libsrc/uartps_v3_1/src/xuartps_hw.h
Update some more standard demos for use on 64-bit architectures.
[freertos] / FreeRTOS / Demo / CORTEX_R5_UltraScale_MPSoC / RTOSDemo_R5_bsp / psu_cortexr5_0 / libsrc / uartps_v3_1 / src / xuartps_hw.h
diff --git a/FreeRTOS/Demo/CORTEX_R5_UltraScale_MPSoC/RTOSDemo_R5_bsp/psu_cortexr5_0/libsrc/uartps_v3_1/src/xuartps_hw.h b/FreeRTOS/Demo/CORTEX_R5_UltraScale_MPSoC/RTOSDemo_R5_bsp/psu_cortexr5_0/libsrc/uartps_v3_1/src/xuartps_hw.h
new file mode 100644 (file)
index 0000000..9f5f0b7
--- /dev/null
@@ -0,0 +1,449 @@
+/******************************************************************************
+*
+* Copyright (C) 2010 - 2015 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 xuartps_hw.h
+* @addtogroup uartps_v3_1
+* @{
+*
+* This header file contains the hardware interface of an XUartPs device.
+*
+* <pre>
+* MODIFICATION HISTORY:
+*
+* Ver   Who    Date    Changes
+* ----- ------ -------- ----------------------------------------------
+* 1.00 drg/jz 01/12/10 First Release
+* 1.03a sg     09/04/12 Added defines for XUARTPS_IXR_TOVR,  XUARTPS_IXR_TNFUL
+*                      and XUARTPS_IXR_TTRIG.
+*                      Modified the names of these defines
+*                      XUARTPS_MEDEMSR_DCDX to XUARTPS_MODEMSR_DDCD
+*                      XUARTPS_MEDEMSR_RIX to XUARTPS_MODEMSR_TERI
+*                      XUARTPS_MEDEMSR_DSRX to XUARTPS_MODEMSR_DDSR
+*                      XUARTPS_MEDEMSR_CTSX to XUARTPS_MODEMSR_DCTS
+* 1.05a hk     08/22/13 Added prototype for uart reset and related
+*                      constant definitions.
+* 3.00  kvn    02/13/15 Modified code for MISRA-C:2012 compliance.
+* 3.1  kvn    04/10/15 Modified code for latest RTL changes.
+*
+* </pre>
+*
+******************************************************************************/
+#ifndef XUARTPS_HW_H           /* prevent circular inclusions */
+#define XUARTPS_HW_H           /* by using protection macros */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/***************************** Include Files *********************************/
+
+#include "xil_types.h"
+#include "xil_assert.h"
+#include "xil_io.h"
+
+/************************** Constant Definitions *****************************/
+
+/** @name Register Map
+ *
+ * Register offsets for the UART.
+ * @{
+ */
+#define XUARTPS_CR_OFFSET              0x0000U  /**< Control Register [8:0] */
+#define XUARTPS_MR_OFFSET              0x0004U  /**< Mode Register [9:0] */
+#define XUARTPS_IER_OFFSET             0x0008U  /**< Interrupt Enable [12:0] */
+#define XUARTPS_IDR_OFFSET             0x000CU  /**< Interrupt Disable [12:0] */
+#define XUARTPS_IMR_OFFSET             0x0010U  /**< Interrupt Mask [12:0] */
+#define XUARTPS_ISR_OFFSET             0x0014U  /**< Interrupt Status [12:0]*/
+#define XUARTPS_BAUDGEN_OFFSET 0x0018U  /**< Baud Rate Generator [15:0] */
+#define XUARTPS_RXTOUT_OFFSET  0x001CU  /**< RX Timeout [7:0] */
+#define XUARTPS_RXWM_OFFSET            0x0020U  /**< RX FIFO Trigger Level [5:0] */
+#define XUARTPS_MODEMCR_OFFSET 0x0024U  /**< Modem Control [5:0] */
+#define XUARTPS_MODEMSR_OFFSET 0x0028U  /**< Modem Status [8:0] */
+#define XUARTPS_SR_OFFSET              0x002CU  /**< Channel Status [14:0] */
+#define XUARTPS_FIFO_OFFSET            0x0030U  /**< FIFO [7:0] */
+#define XUARTPS_BAUDDIV_OFFSET 0x0034U  /**< Baud Rate Divider [7:0] */
+#define XUARTPS_FLOWDEL_OFFSET 0x0038U  /**< Flow Delay [5:0] */
+#define XUARTPS_TXWM_OFFSET            0x0044U  /**< TX FIFO Trigger Level [5:0] */
+#define XUARTPS_RXBS_OFFSET            0x0048U  /**< RX FIFO Byte Status [11:0] */
+/* @} */
+
+/** @name Control Register
+ *
+ * The Control register (CR) controls the major functions of the device.
+ *
+ * Control Register Bit Definition
+ */
+
+#define XUARTPS_CR_STOPBRK     0x00000100U  /**< Stop transmission of break */
+#define XUARTPS_CR_STARTBRK    0x00000080U  /**< Set break */
+#define XUARTPS_CR_TORST       0x00000040U  /**< RX timeout counter restart */
+#define XUARTPS_CR_TX_DIS      0x00000020U  /**< TX disabled. */
+#define XUARTPS_CR_TX_EN       0x00000010U  /**< TX enabled */
+#define XUARTPS_CR_RX_DIS      0x00000008U  /**< RX disabled. */
+#define XUARTPS_CR_RX_EN       0x00000004U  /**< RX enabled */
+#define XUARTPS_CR_EN_DIS_MASK 0x0000003CU  /**< Enable/disable Mask */
+#define XUARTPS_CR_TXRST       0x00000002U  /**< TX logic reset */
+#define XUARTPS_CR_RXRST       0x00000001U  /**< RX logic reset */
+/* @}*/
+
+
+/** @name Mode Register
+ *
+ * The mode register (MR) defines the mode of transfer as well as the data
+ * format. If this register is modified during transmission or reception,
+ * data validity cannot be guaranteed.
+ *
+ * Mode Register Bit Definition
+ * @{
+ */
+#define XUARTPS_MR_CCLK                                0x00000400U /**< Input clock selection */
+#define XUARTPS_MR_CHMODE_R_LOOP       0x00000300U /**< Remote loopback mode */
+#define XUARTPS_MR_CHMODE_L_LOOP       0x00000200U /**< Local loopback mode */
+#define XUARTPS_MR_CHMODE_ECHO         0x00000100U /**< Auto echo mode */
+#define XUARTPS_MR_CHMODE_NORM         0x00000000U /**< Normal mode */
+#define XUARTPS_MR_CHMODE_SHIFT                                8U  /**< Mode shift */
+#define XUARTPS_MR_CHMODE_MASK         0x00000300U /**< Mode mask */
+#define XUARTPS_MR_STOPMODE_2_BIT      0x00000080U /**< 2 stop bits */
+#define XUARTPS_MR_STOPMODE_1_5_BIT    0x00000040U /**< 1.5 stop bits */
+#define XUARTPS_MR_STOPMODE_1_BIT      0x00000000U /**< 1 stop bit */
+#define XUARTPS_MR_STOPMODE_SHIFT                      6U  /**< Stop bits shift */
+#define XUARTPS_MR_STOPMODE_MASK       0x000000A0U /**< Stop bits mask */
+#define XUARTPS_MR_PARITY_NONE         0x00000020U /**< No parity mode */
+#define XUARTPS_MR_PARITY_MARK         0x00000018U /**< Mark parity mode */
+#define XUARTPS_MR_PARITY_SPACE                0x00000010U /**< Space parity mode */
+#define XUARTPS_MR_PARITY_ODD          0x00000008U /**< Odd parity mode */
+#define XUARTPS_MR_PARITY_EVEN         0x00000000U /**< Even parity mode */
+#define XUARTPS_MR_PARITY_SHIFT                                3U  /**< Parity setting shift */
+#define XUARTPS_MR_PARITY_MASK         0x00000038U /**< Parity mask */
+#define XUARTPS_MR_CHARLEN_6_BIT       0x00000006U /**< 6 bits data */
+#define XUARTPS_MR_CHARLEN_7_BIT       0x00000004U /**< 7 bits data */
+#define XUARTPS_MR_CHARLEN_8_BIT       0x00000000U /**< 8 bits data */
+#define XUARTPS_MR_CHARLEN_SHIFT                       1U  /**< Data Length shift */
+#define XUARTPS_MR_CHARLEN_MASK                0x00000006U /**< Data length mask */
+#define XUARTPS_MR_CLKSEL                      0x00000001U /**< Input clock selection */
+/* @} */
+
+
+/** @name Interrupt Registers
+ *
+ * Interrupt control logic uses the interrupt enable register (IER) and the
+ * interrupt disable register (IDR) to set the value of the bits in the
+ * interrupt mask register (IMR). The IMR determines whether to pass an
+ * interrupt to the interrupt status register (ISR).
+ * Writing a 1 to IER Enbables an interrupt, writing a 1 to IDR disables an
+ * interrupt. IMR and ISR are read only, and IER and IDR are write only.
+ * Reading either IER or IDR returns 0x00.
+ *
+ * All four registers have the same bit definitions.
+ *
+ * @{
+ */
+#define XUARTPS_IXR_RBRK       0x00002000U /**< Rx FIFO break detect interrupt */
+#define XUARTPS_IXR_TOVR       0x00001000U /**< Tx FIFO Overflow interrupt */
+#define XUARTPS_IXR_TNFUL      0x00000800U /**< Tx FIFO Nearly Full interrupt */
+#define XUARTPS_IXR_TTRIG      0x00000400U /**< Tx Trig interrupt */
+#define XUARTPS_IXR_DMS                0x00000200U /**< Modem status change interrupt */
+#define XUARTPS_IXR_TOUT       0x00000100U /**< Timeout error interrupt */
+#define XUARTPS_IXR_PARITY     0x00000080U /**< Parity error interrupt */
+#define XUARTPS_IXR_FRAMING    0x00000040U /**< Framing error interrupt */
+#define XUARTPS_IXR_OVER       0x00000020U /**< Overrun error interrupt */
+#define XUARTPS_IXR_TXFULL     0x00000010U /**< TX FIFO full interrupt. */
+#define XUARTPS_IXR_TXEMPTY    0x00000008U /**< TX FIFO empty interrupt. */
+#define XUARTPS_IXR_RXFULL     0x00000004U /**< RX FIFO full interrupt. */
+#define XUARTPS_IXR_RXEMPTY    0x00000002U /**< RX FIFO empty interrupt. */
+#define XUARTPS_IXR_RXOVR      0x00000001U /**< RX FIFO trigger interrupt. */
+#define XUARTPS_IXR_MASK       0x00003FFFU /**< Valid bit mask */
+/* @} */
+
+
+/** @name Baud Rate Generator Register
+ *
+ * The baud rate generator control register (BRGR) is a 16 bit register that
+ * controls the receiver bit sample clock and baud rate.
+ * Valid values are 1 - 65535.
+ *
+ * Bit Sample Rate = CCLK / BRGR, where the CCLK is selected by the MR_CCLK bit
+ * in the MR register.
+ * @{
+ */
+#define XUARTPS_BAUDGEN_DISABLE                0x00000000U /**< Disable clock */
+#define XUARTPS_BAUDGEN_MASK           0x0000FFFFU /**< Valid bits mask */
+#define XUARTPS_BAUDGEN_RESET_VAL      0x0000028BU /**< Reset value */
+
+/** @name Baud Divisor Rate register
+ *
+ * The baud rate divider register (BDIV) controls how much the bit sample
+ * rate is divided by. It sets the baud rate.
+ * Valid values are 0x04 to 0xFF. Writing a value less than 4 will be ignored.
+ *
+ * Baud rate = CCLK / ((BAUDDIV + 1) x BRGR), where the CCLK is selected by
+ * the MR_CCLK bit in the MR register.
+ * @{
+ */
+#define XUARTPS_BAUDDIV_MASK        0x000000FFU        /**< 8 bit baud divider mask */
+#define XUARTPS_BAUDDIV_RESET_VAL   0x0000000FU        /**< Reset value */
+/* @} */
+
+
+/** @name Receiver Timeout Register
+ *
+ * Use the receiver timeout register (RTR) to detect an idle condition on
+ * the receiver data line.
+ *
+ * @{
+ */
+#define XUARTPS_RXTOUT_DISABLE         0x00000000U  /**< Disable time out */
+#define XUARTPS_RXTOUT_MASK                    0x000000FFU  /**< Valid bits mask */
+
+/** @name Receiver FIFO Trigger Level Register
+ *
+ * Use the Receiver FIFO Trigger Level Register (RTRIG) to set the value at
+ * which the RX FIFO triggers an interrupt event.
+ * @{
+ */
+
+#define XUARTPS_RXWM_DISABLE   0x00000000U  /**< Disable RX trigger interrupt */
+#define XUARTPS_RXWM_MASK              0x0000003FU  /**< Valid bits mask */
+#define XUARTPS_RXWM_RESET_VAL 0x00000020U  /**< Reset value */
+/* @} */
+
+/** @name Transmit FIFO Trigger Level Register
+ *
+ * Use the Transmit FIFO Trigger Level Register (TTRIG) to set the value at
+ * which the TX FIFO triggers an interrupt event.
+ * @{
+ */
+
+#define XUARTPS_TXWM_MASK              0x0000003FU  /**< Valid bits mask */
+#define XUARTPS_TXWM_RESET_VAL 0x00000020U  /**< Reset value */
+/* @} */
+
+/** @name Modem Control Register
+ *
+ * This register (MODEMCR) controls the interface with the modem or data set,
+ * or a peripheral device emulating a modem.
+ *
+ * @{
+ */
+#define XUARTPS_MODEMCR_FCM    0x00000010U  /**< Flow control mode */
+#define XUARTPS_MODEMCR_RTS    0x00000002U  /**< Request to send */
+#define XUARTPS_MODEMCR_DTR    0x00000001U  /**< Data terminal ready */
+/* @} */
+
+/** @name Modem Status Register
+ *
+ * This register (MODEMSR) indicates the current state of the control lines
+ * from a modem, or another peripheral device, to the CPU. In addition, four
+ * bits of the modem status register provide change information. These bits
+ * are set to a logic 1 whenever a control input from the modem changes state.
+ *
+ * Note: Whenever the DCTS, DDSR, TERI, or DDCD bit is set to logic 1, a modem
+ * status interrupt is generated and this is reflected in the modem status
+ * register.
+ *
+ * @{
+ */
+#define XUARTPS_MODEMSR_FCMS   0x00000100U  /**< Flow control mode (FCMS) */
+#define XUARTPS_MODEMSR_DCD            0x00000080U  /**< Complement of DCD input */
+#define XUARTPS_MODEMSR_RI             0x00000040U  /**< Complement of RI input */
+#define XUARTPS_MODEMSR_DSR            0x00000020U  /**< Complement of DSR input */
+#define XUARTPS_MODEMSR_CTS            0x00000010U  /**< Complement of CTS input */
+#define XUARTPS_MODEMSR_DDCD   0x00000008U  /**< Delta DCD indicator */
+#define XUARTPS_MODEMSR_TERI  0x00000004U  /**< Trailing Edge Ring Indicator */
+#define XUARTPS_MODEMSR_DDSR   0x00000002U  /**< Change of DSR */
+#define XUARTPS_MODEMSR_DCTS   0x00000001U  /**< Change of CTS */
+/* @} */
+
+/** @name Channel Status Register
+ *
+ * The channel status register (CSR) is provided to enable the control logic
+ * to monitor the status of bits in the channel interrupt status register,
+ * even if these are masked out by the interrupt mask register.
+ *
+ * @{
+ */
+#define XUARTPS_SR_TNFUL       0x00004000U /**< TX FIFO Nearly Full Status */
+#define XUARTPS_SR_TTRIG       0x00002000U /**< TX FIFO Trigger Status */
+#define XUARTPS_SR_FLOWDEL     0x00001000U /**< RX FIFO fill over flow delay */
+#define XUARTPS_SR_TACTIVE     0x00000800U /**< TX active */
+#define XUARTPS_SR_RACTIVE     0x00000400U /**< RX active */
+#define XUARTPS_SR_TXFULL      0x00000010U /**< TX FIFO full */
+#define XUARTPS_SR_TXEMPTY     0x00000008U /**< TX FIFO empty */
+#define XUARTPS_SR_RXFULL      0x00000004U /**< RX FIFO full */
+#define XUARTPS_SR_RXEMPTY     0x00000002U /**< RX FIFO empty */
+#define XUARTPS_SR_RXOVR       0x00000001U /**< RX FIFO fill over trigger */
+/* @} */
+
+/** @name Flow Delay Register
+ *
+ * Operation of the flow delay register (FLOWDEL) is very similar to the
+ * receive FIFO trigger register. An internal trigger signal activates when the
+ * FIFO is filled to the level set by this register. This trigger will not
+ * cause an interrupt, although it can be read through the channel status
+ * register. In hardware flow control mode, RTS is deactivated when the trigger
+ * becomes active. RTS only resets when the FIFO level is four less than the
+ * level of the flow delay trigger and the flow delay trigger is not activated.
+ * A value less than 4 disables the flow delay.
+ * @{
+ */
+#define XUARTPS_FLOWDEL_MASK   XUARTPS_RXWM_MASK       /**< Valid bit mask */
+/* @} */
+
+/** @name Receiver FIFO Byte Status Register
+ *
+ * The Receiver FIFO Status register is used to have a continuous
+ * monitoring of the raw unmasked byte status information. The register
+ * contains frame, parity and break status information for the top
+ * four bytes in the RX FIFO.
+ *
+ * Receiver FIFO Byte Status Register Bit Definition
+ * @{
+ */
+#define XUARTPS_RXBS_BYTE3_BRKE                0x00000800U /**< Byte3 Break Error */
+#define XUARTPS_RXBS_BYTE3_FRME                0x00000400U /**< Byte3 Frame Error */
+#define XUARTPS_RXBS_BYTE3_PARE                0x00000200U /**< Byte3 Parity Error */
+#define XUARTPS_RXBS_BYTE2_BRKE                0x00000100U /**< Byte2 Break Error */
+#define XUARTPS_RXBS_BYTE2_FRME                0x00000080U /**< Byte2 Frame Error */
+#define XUARTPS_RXBS_BYTE2_PARE                0x00000040U /**< Byte2 Parity Error */
+#define XUARTPS_RXBS_BYTE1_BRKE                0x00000020U /**< Byte1 Break Error */
+#define XUARTPS_RXBS_BYTE1_FRME                0x00000010U /**< Byte1 Frame Error */
+#define XUARTPS_RXBS_BYTE1_PARE                0x00000008U /**< Byte1 Parity Error */
+#define XUARTPS_RXBS_BYTE0_BRKE                0x00000004U /**< Byte0 Break Error */
+#define XUARTPS_RXBS_BYTE0_FRME                0x00000002U /**< Byte0 Frame Error */
+#define XUARTPS_RXBS_BYTE0_PARE                0x00000001U /**< Byte0 Parity Error */
+#define XUARTPS_RXBS_MASK              0x00000007U /**< 3 bit RX byte status mask */
+/* @} */
+
+
+/*
+ * Defines for backwards compatabilty, will be removed
+ * in the next version of the driver
+ */
+#define XUARTPS_MEDEMSR_DCDX  XUARTPS_MODEMSR_DDCD
+#define XUARTPS_MEDEMSR_RIX   XUARTPS_MODEMSR_TERI
+#define XUARTPS_MEDEMSR_DSRX  XUARTPS_MODEMSR_DDSR
+#define        XUARTPS_MEDEMSR_CTSX  XUARTPS_MODEMSR_DCTS
+
+
+
+/**************************** Type Definitions *******************************/
+
+
+/***************** Macros (Inline Functions) Definitions *********************/
+
+/****************************************************************************/
+/**
+* Read a UART register.
+*
+* @param       BaseAddress contains the base address of the device.
+* @param       RegOffset contains the offset from the base address of the
+*              device.
+*
+* @return      The value read from the register.
+*
+* @note                C-Style signature:
+*              u32 XUartPs_ReadReg(u32 BaseAddress, int RegOffset)
+*
+******************************************************************************/
+#define XUartPs_ReadReg(BaseAddress, RegOffset) \
+       Xil_In32((BaseAddress) + (u32)(RegOffset))
+
+/***************************************************************************/
+/**
+* Write a UART register.
+*
+* @param       BaseAddress contains the base address of the device.
+* @param       RegOffset contains the offset from the base address of the
+*              device.
+* @param       RegisterValue is the value to be written to the register.
+*
+* @return      None.
+*
+* @note                C-Style signature:
+*              void XUartPs_WriteReg(u32 BaseAddress, int RegOffset,
+*                                                 u16 RegisterValue)
+*
+******************************************************************************/
+#define XUartPs_WriteReg(BaseAddress, RegOffset, RegisterValue) \
+       Xil_Out32((BaseAddress) + (u32)(RegOffset), (u32)(RegisterValue))
+
+/****************************************************************************/
+/**
+* Determine if there is receive data in the receiver and/or FIFO.
+*
+* @param       BaseAddress contains the base address of the device.
+*
+* @return      TRUE if there is receive data, FALSE otherwise.
+*
+* @note                C-Style signature:
+*              u32 XUartPs_IsReceiveData(u32 BaseAddress)
+*
+******************************************************************************/
+#define XUartPs_IsReceiveData(BaseAddress)                      \
+       !((Xil_In32((BaseAddress) + XUARTPS_SR_OFFSET) &        \
+       (u32)XUARTPS_SR_RXEMPTY) == (u32)XUARTPS_SR_RXEMPTY)
+
+/****************************************************************************/
+/**
+* Determine if a byte of data can be sent with the transmitter.
+*
+* @param       BaseAddress contains the base address of the device.
+*
+* @return      TRUE if the TX FIFO is full, FALSE if a byte can be put in the
+*              FIFO.
+*
+* @note                C-Style signature:
+*              u32 XUartPs_IsTransmitFull(u32 BaseAddress)
+*
+******************************************************************************/
+#define XUartPs_IsTransmitFull(BaseAddress)                     \
+       ((Xil_In32((BaseAddress) + XUARTPS_SR_OFFSET) &         \
+        (u32)XUARTPS_SR_TXFULL) == (u32)XUARTPS_SR_TXFULL)
+
+/************************** Function Prototypes ******************************/
+
+void XUartPs_SendByte(u32 BaseAddress, u8 Data);
+
+u8 XUartPs_RecvByte(u32 BaseAddress);
+
+void XUartPs_ResetHw(u32 BaseAddress);
+
+/************************** Variable Definitions *****************************/
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* end of protection macro */
+/** @} */