//########################################################################### // // FILE: hw_upp.h // // TITLE: Definitions for the UPP registers. // //########################################################################### // $Copyright: // Copyright (C) 2022 Texas Instruments Incorporated - http://www.ti.com // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the // distribution. // // Neither the name of Texas Instruments Incorporated nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // $ //########################################################################### #ifndef HW_UPP_H #define HW_UPP_H //************************************************************************************************* // // The following are defines for the UPP register offsets // //************************************************************************************************* #define UPP_O_PID 0x0U // Peripheral ID Register #define UPP_O_PERCTL 0x2U // Peripheral Control Register #define UPP_O_CHCTL 0x8U // General Control Register #define UPP_O_IFCFG 0xAU // Interface Configuration Register #define UPP_O_IFIVAL 0xCU // Interface Idle Value Register #define UPP_O_THCFG 0xEU // Threshold Configuration Register #define UPP_O_RAWINTST 0x10U // Raw Interrupt Status Register #define UPP_O_ENINTST 0x12U // Enable Interrupt Status Register #define UPP_O_INTENSET 0x14U // Interrupt Enable Set Register #define UPP_O_INTENCLR 0x16U // Interrupt Enable Clear Register #define UPP_O_CHIDESC0 0x20U // DMA Channel I Descriptor 0 Register #define UPP_O_CHIDESC1 0x22U // DMA Channel I Descriptor 1 Register #define UPP_O_CHIDESC2 0x24U // DMA Channel I Descriptor 2 Register #define UPP_O_CHIST0 0x28U // DMA Channel I Status 0 Register #define UPP_O_CHIST1 0x2AU // DMA Channel I Status 1 Register #define UPP_O_CHIST2 0x2CU // DMA Channel I Status 2 Register #define UPP_O_CHQDESC0 0x30U // DMA Channel Q Descriptor 0 Register #define UPP_O_CHQDESC1 0x32U // DMA Channel Q Descriptor 1 Register #define UPP_O_CHQDESC2 0x34U // DMA Channel Q Descriptor 2 Register #define UPP_O_CHQST0 0x38U // DMA Channel Q Status 0 Register #define UPP_O_CHQST1 0x3AU // DMA Channel Q Status 1 Register #define UPP_O_CHQST2 0x3CU // DMA Channel Q Status 2 Register #define UPP_O_GINTEN 0x40U // Global Peripheral Interrupt Enable Register #define UPP_O_GINTFLG 0x42U // Global Peripheral Interrupt Flag Register #define UPP_O_GINTCLR 0x44U // Global Peripheral Interrupt Clear Register #define UPP_O_DLYCTL 0x46U // IO clock data skew control Register //************************************************************************************************* // // The following are defines for the bit fields in the PERCTL register // //************************************************************************************************* #define UPP_PERCTL_FREE 0x1U // Emulation control. #define UPP_PERCTL_SOFT 0x2U // Emulation control. #define UPP_PERCTL_RTEMU 0x4U // Realtime emulation control. #define UPP_PERCTL_PEREN 0x8U // Peripheral Enable #define UPP_PERCTL_SOFTRST 0x10U // Software Reset #define UPP_PERCTL_DMAST 0x80U // DMA Burst transaction status //************************************************************************************************* // // The following are defines for the bit fields in the CHCTL register // //************************************************************************************************* #define UPP_CHCTL_MODE_S 0U #define UPP_CHCTL_MODE_M 0x3U // Operating mode #define UPP_CHCTL_SDRTXILA 0x8U // SDR TX Interleve mode #define UPP_CHCTL_DEMUXA 0x10U // DDR de-multiplexing mode #define UPP_CHCTL_DRA 0x10000U // Data rate //************************************************************************************************* // // The following are defines for the bit fields in the IFCFG register // //************************************************************************************************* #define UPP_IFCFG_STARTPOLA 0x1U // Polarity of START(SELECT) signal #define UPP_IFCFG_ENAPOLA 0x2U // Polarity of ENABLE(WRITE) signal #define UPP_IFCFG_WAITPOLA 0x4U // Polarity of WAIT signal. #define UPP_IFCFG_STARTA 0x8U // Enable Usage of START (SELECT) signal #define UPP_IFCFG_ENAA 0x10U // Enable Usage of ENABLE (WRITE) signal #define UPP_IFCFG_WAITA 0x20U // Enable Usage of WAIT signal #define UPP_IFCFG_CLKDIVA_S 8U #define UPP_IFCFG_CLKDIVA_M 0xF00U // Clock divider for tx mode #define UPP_IFCFG_CLKINVA 0x1000U // Clock inversion #define UPP_IFCFG_TRISENA 0x2000U // Pin Tri-state Control //************************************************************************************************* // // The following are defines for the bit fields in the IFIVAL register // //************************************************************************************************* #define UPP_IFIVAL_VALA_S 0U #define UPP_IFIVAL_VALA_M 0x1FFU // Idle Value //************************************************************************************************* // // The following are defines for the bit fields in the THCFG register // //************************************************************************************************* #define UPP_THCFG_RDSIZEI_S 0U #define UPP_THCFG_RDSIZEI_M 0x3U // DMA Read Threshold for DMA Channel I #define UPP_THCFG_RDSIZEQ_S 8U #define UPP_THCFG_RDSIZEQ_M 0x300U // DMA Read Threshold for DMA Channel Q #define UPP_THCFG_TXSIZEA_S 16U #define UPP_THCFG_TXSIZEA_M 0x30000U // I/O Transmit Threshold Value //************************************************************************************************* // // The following are defines for the bit fields in the RAWINTST register // //************************************************************************************************* #define UPP_RAWINTST_DPEI 0x1U // Interrupt raw status for DMA programming error #define UPP_RAWINTST_UOEI 0x2U // Interrupt raw status for DMA under-run or over-run #define UPP_RAWINTST_EOWI 0x8U // Interrupt raw status for end-of window condition #define UPP_RAWINTST_EOLI 0x10U // Interrupt raw status for end-of-line condition #define UPP_RAWINTST_DPEQ 0x100U // Interrupt raw status for DMA programming error #define UPP_RAWINTST_UOEQ 0x200U // Interrupt raw status for DMA under-run or over-run #define UPP_RAWINTST_EOWQ 0x800U // Interrupt raw status for end-of window condition #define UPP_RAWINTST_EOLQ 0x1000U // Interrupt raw status for end-of-line condition //************************************************************************************************* // // The following are defines for the bit fields in the ENINTST register // //************************************************************************************************* #define UPP_ENINTST_DPEI 0x1U // Interrupt enable status for DMA programming error #define UPP_ENINTST_UOEI 0x2U // Interrupt enable status for DMA under-run or over-run #define UPP_ENINTST_EOWI 0x8U // Interrupt enable status for end-of window condition #define UPP_ENINTST_EOLI 0x10U // Interrupt enable status for end-of-line condition #define UPP_ENINTST_DPEQ 0x100U // Interrupt enable status for DMA programming error #define UPP_ENINTST_UOEQ 0x200U // Interrupt enable status for DMA under-run or over-run #define UPP_ENINTST_EOWQ 0x800U // Interrupt enable status for end-of window condition #define UPP_ENINTST_EOLQ 0x1000U // Interrupt enable status for end-of-line condition //************************************************************************************************* // // The following are defines for the bit fields in the INTENSET register // //************************************************************************************************* #define UPP_INTENSET_DPEI 0x1U // Interrupt enable for DMA programming error #define UPP_INTENSET_UOEI 0x2U // Interrupt enable for DMA under-run or over-run #define UPP_INTENSET_EOWI 0x8U // Interrupt enable for end-of window condition #define UPP_INTENSET_EOLI 0x10U // Interrupt enable for end-of-line condition #define UPP_INTENSET_DPEQ 0x100U // Interrupt enable for DMA programming error #define UPP_INTENSET_UOEQ 0x200U // Interrupt enable for DMA under-run or over-run #define UPP_INTENSET_EOWQ 0x800U // Interrupt enable for end-of window condition #define UPP_INTENSET_EOLQ 0x1000U // Interrupt enable for end-of-line condition //************************************************************************************************* // // The following are defines for the bit fields in the INTENCLR register // //************************************************************************************************* #define UPP_INTENCLR_DPEI 0x1U // Interrupt clear for DMA programming error #define UPP_INTENCLR_UOEI 0x2U // Interrupt clear for DMA under-run or over-run #define UPP_INTENCLR_EOWI 0x8U // Interrupt clear for end-of window condition #define UPP_INTENCLR_EOLI 0x10U // Interrupt clear for end-of-line condition #define UPP_INTENCLR_DPEQ 0x100U // Interrupt clear for DMA programming error #define UPP_INTENCLR_UOEQ 0x200U // Interrupt clear for DMA under-run or over-run #define UPP_INTENCLR_EOWQ 0x800U // Interrupt clear for end-of window condition #define UPP_INTENCLR_EOLQ 0x1000U // Interrupt clear for end-of-line condition //************************************************************************************************* // // The following are defines for the bit fields in the CHIDESC1 register // //************************************************************************************************* #define UPP_CHIDESC1_BCNT_S 0U #define UPP_CHIDESC1_BCNT_M 0xFFFFU // Number of bytes in a line for DMA Channel I // transfer. #define UPP_CHIDESC1_LCNT_S 16U #define UPP_CHIDESC1_LCNT_M 0xFFFF0000U // Number of lines in a window for DMA Channel I // transfer. //************************************************************************************************* // // The following are defines for the bit fields in the CHIDESC2 register // //************************************************************************************************* #define UPP_CHIDESC2_LOFFSET_S 0U #define UPP_CHIDESC2_LOFFSET_M 0xFFFFU // Current start address to next start address offset. //************************************************************************************************* // // The following are defines for the bit fields in the CHIST1 register // //************************************************************************************************* #define UPP_CHIST1_BCNT_S 0U #define UPP_CHIST1_BCNT_M 0xFFFFU // Current byte number. #define UPP_CHIST1_LCNT_S 16U #define UPP_CHIST1_LCNT_M 0xFFFF0000U // Current line number. //************************************************************************************************* // // The following are defines for the bit fields in the CHIST2 register // //************************************************************************************************* #define UPP_CHIST2_ACT 0x1U // Status of DMA descriptor. #define UPP_CHIST2_PEND 0x2U // Status of DMA. #define UPP_CHIST2_WM_S 4U #define UPP_CHIST2_WM_M 0xF0U // Watermark for FIFO block count for DMA Channel I tranfer. //************************************************************************************************* // // The following are defines for the bit fields in the CHQDESC1 register // //************************************************************************************************* #define UPP_CHQDESC1_BCNT_S 0U #define UPP_CHQDESC1_BCNT_M 0xFFFFU // Number of bytes in a line for DMA Channel Q // transfer. #define UPP_CHQDESC1_LCNT_S 16U #define UPP_CHQDESC1_LCNT_M 0xFFFF0000U // Number of lines in a window for DMA Channel Q // transfer. //************************************************************************************************* // // The following are defines for the bit fields in the CHQDESC2 register // //************************************************************************************************* #define UPP_CHQDESC2_LOFFSET_S 0U #define UPP_CHQDESC2_LOFFSET_M 0xFFFFU // Current start address to next start address offset. //************************************************************************************************* // // The following are defines for the bit fields in the CHQST1 register // //************************************************************************************************* #define UPP_CHQST1_BCNT_S 0U #define UPP_CHQST1_BCNT_M 0xFFFFU // Current byte number. #define UPP_CHQST1_LCNT_S 16U #define UPP_CHQST1_LCNT_M 0xFFFF0000U // Current line number. //************************************************************************************************* // // The following are defines for the bit fields in the CHQST2 register // //************************************************************************************************* #define UPP_CHQST2_ACT 0x1U // Status of DMA descriptor. #define UPP_CHQST2_PEND 0x2U // Status of DMA. #define UPP_CHQST2_WM_S 4U #define UPP_CHQST2_WM_M 0xF0U // Watermark for FIFO block count for DMA Channel Q tranfer. //************************************************************************************************* // // The following are defines for the bit fields in the GINTEN register // //************************************************************************************************* #define UPP_GINTEN_GINTEN 0x1U // Global Interrupt Enable //************************************************************************************************* // // The following are defines for the bit fields in the GINTFLG register // //************************************************************************************************* #define UPP_GINTFLG_GINTFLG 0x1U // Global Interrupt Flag //************************************************************************************************* // // The following are defines for the bit fields in the GINTCLR register // //************************************************************************************************* #define UPP_GINTCLR_GINTCLR 0x1U // Global Interrupt Clear //************************************************************************************************* // // The following are defines for the bit fields in the DLYCTL register // //************************************************************************************************* #define UPP_DLYCTL_DLYDIS 0x1U // IO dealy control disable. #define UPP_DLYCTL_DLYCTL_S 1U #define UPP_DLYCTL_DLYCTL_M 0x6U // IO delay control. #endif