empty_project_28377D/device/driverlib/inc/hw_upp.h

305 lines
16 KiB
C

//###########################################################################
//
// 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