//########################################################################### // // FILE: hw_emif.h // // TITLE: Definitions for the C28x EMIF registers. // //########################################################################### // $TI Release: F2837xD Support Library v3.05.00.00 $ // $Release Date: Tue Jun 26 03:15:23 CDT 2018 $ // $Copyright: // Copyright (C) 2013-2018 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_EMIF_H__ #define __HW_EMIF_H__ //***************************************************************************** // // The following are defines for the EMIF register offsets // //***************************************************************************** #define EMIF_O_RCSR 0x0 // Revision Code and Status // Register #define EMIF_O_ASYNC_WCCR 0x2 // Async Wait Cycle Config // Register #define EMIF_O_SDRAM_CR 0x4 // SDRAM // (pad_cs_o_n[0]/pad_cs_o_n[1]) // Config Register #define EMIF_O_SDRAM_RCR 0x6 // SDRAM Refresh Control Register #define EMIF_O_ASYNC_CS2_CR 0x8 // Async 1 (pad_cs_o_n[2]) Config // Register #define EMIF_O_ASYNC_CS3_CR 0xA // Async 2 (pad_cs_o_n[3]) Config // Register #define EMIF_O_ASYNC_CS4_CR 0xC // Async 3 (pad_cs_o_n[4]) Config // Register #define EMIF_O_ASYNC_CS5_CR 0xE // Async 4 (pad_cs_o_n[5]) Config // Register #define EMIF_O_SDRAM_TR 0x10 // SDRAM Timing Register #define EMIF_O_TOTAL_SDRAM_AR 0x18 // Total SDRAM Accesses Register #define EMIF_O_TOTAL_SDRAM_ACTR 0x1A // Total SDRAM Activate Register #define EMIF_O_SDR_EXT_TMNG 0x1E // SDRAM SR/PD Exit Timing // Register #define EMIF_O_INT_RAW 0x20 // Interrupt Raw Register #define EMIF_O_INT_MSK 0x22 // Interrupt Masked Register #define EMIF_O_INT_MSK_SET 0x24 // Interrupt Mask Set Register #define EMIF_O_INT_MSK_CLR 0x26 // Interrupt Mask Clear Register #define EMIF_O_IO_CTRL 0x28 // IO Control Register #define EMIF_O_IO_STAT 0x2A // IO Status Register #define EMIF_O_MODEL_REL_NUM 0x56 // Module Release Number Register //***************************************************************************** // // The following are defines for the bit fields in the RCSR register // //***************************************************************************** #define EMIF_RCSR_MINOR_REVISION_S 0 #define EMIF_RCSR_MINOR_REVISION_M 0xFF // Minor Revision. #define EMIF_RCSR_MAJOR_REVISION_S 8 #define EMIF_RCSR_MAJOR_REVISION_M 0xFF00 // Major Revision. #define EMIF_RCSR_MODULE_ID_S 16 #define EMIF_RCSR_MODULE_ID_M 0x3FFF0000 // EMIF module ID. #define EMIF_RCSR_FR 0x40000000 // EMIF is running in full rate or // half rate. #define EMIF_RCSR_BE 0x80000000 // EMIF endian mode. //***************************************************************************** // // The following are defines for the bit fields in the ASYNC_WCCR register // //***************************************************************************** #define EMIF_ASYNC_WCCR_MAX_EXT_WAIT_S 0 #define EMIF_ASYNC_WCCR_MAX_EXT_WAIT_M 0xFF // Maximum Extended Wait cycles. #define EMIF_ASYNC_WCCR_CS2_WAIT_S 16 #define EMIF_ASYNC_WCCR_CS2_WAIT_M 0x30000 // Maps the wait signal for chip // select 2. #define EMIF_ASYNC_WCCR_CS3_WAIT_S 18 #define EMIF_ASYNC_WCCR_CS3_WAIT_M 0xC0000 // Maps the wait signal for chip // select 3. #define EMIF_ASYNC_WCCR_CS4_WAIT_S 20 #define EMIF_ASYNC_WCCR_CS4_WAIT_M 0x300000 // Maps the wait signal for chip // select 4. #define EMIF_ASYNC_WCCR_CS5_WAIT_S 22 #define EMIF_ASYNC_WCCR_CS5_WAIT_M 0xC00000 // Maps the wait signal for chip // select 5. #define EMIF_ASYNC_WCCR_WP0 0x10000000 // Wait Polarity for // pad_wait_i[0]. #define EMIF_ASYNC_WCCR_WP1 0x20000000 // Wait Polarity for // pad_wait_i[1]. #define EMIF_ASYNC_WCCR_WP2 0x40000000 // Wait Polarity for // pad_wait_i[2]. #define EMIF_ASYNC_WCCR_WP3 0x80000000 // Wait Polarity for // pad_wait_i[3]. //***************************************************************************** // // The following are defines for the bit fields in the SDRAM_CR register // //***************************************************************************** #define EMIF_SDRAM_CR_PAGESIGE_S 0 #define EMIF_SDRAM_CR_PAGESIGE_M 0x7 // Page Size. #define EMIF_SDRAM_CR_EBANK 0x8 // External chip select setup. #define EMIF_SDRAM_CR_IBANK_S 4 #define EMIF_SDRAM_CR_IBANK_M 0x70 // Internal Bank setup of SDRAM // devices. #define EMIF_SDRAM_CR_BIT_11_9_LOCK 0x100 // Bits 11 to 9 are writable only // if this bit is set. #define EMIF_SDRAM_CR_CL_S 9 #define EMIF_SDRAM_CR_CL_M 0xE00 // CAS Latency. #define EMIF_SDRAM_CR_BIT_13_LOCK 0x1000 // Bits 13 is writable only if // this bit is set. #define EMIF_SDRAM_CR_NM 0x4000 // Narrow Mode. #define EMIF_SDRAM_CR_BIT_25_17_LOCK 0x10000 // Bits 25 to 17 are writable only // if this bit is set #define EMIF_SDRAM_CR_IBANK_POS 0x80000 // Internal bank position. #define EMIF_SDRAM_CR_ROWSIZE_S 20 #define EMIF_SDRAM_CR_ROWSIZE_M 0x700000 // Row Size. #define EMIF_SDRAM_CR_PASR_S 23 #define EMIF_SDRAM_CR_PASR_M 0x3800000 // Partial Array Self Refresh. #define EMIF_SDRAM_CR_PDWR 0x20000000 // Perform refreshes during Power // Down. #define EMIF_SDRAM_CR_PD 0x40000000 // Power Down. #define EMIF_SDRAM_CR_SR 0x80000000 // Self Refresh. //***************************************************************************** // // The following are defines for the bit fields in the SDRAM_RCR register // //***************************************************************************** #define EMIF_SDRAM_RCR_REFRESH_RATE_S 0 #define EMIF_SDRAM_RCR_REFRESH_RATE_M 0x1FFF // Refresh Rate. //***************************************************************************** // // The following are defines for the bit fields in the ASYNC_CS2_CR register // //***************************************************************************** #define EMIF_ASYNC_CS2_CR_ASIZE_S 0 #define EMIF_ASYNC_CS2_CR_ASIZE_M 0x3 // Asynchronous Memory Size. #define EMIF_ASYNC_CS2_CR_TA_S 2 #define EMIF_ASYNC_CS2_CR_TA_M 0xC // Turn Around cycles. #define EMIF_ASYNC_CS2_CR_R_HOLD_S 4 #define EMIF_ASYNC_CS2_CR_R_HOLD_M 0x70 // Read Strobe Hold cycles. #define EMIF_ASYNC_CS2_CR_R_STROBE_S 7 #define EMIF_ASYNC_CS2_CR_R_STROBE_M 0x1F80 // Read Strobe Duration cycles. #define EMIF_ASYNC_CS2_CR_R_SETUP_S 13 #define EMIF_ASYNC_CS2_CR_R_SETUP_M 0x1E000 // Read Strobe Setup cycles. #define EMIF_ASYNC_CS2_CR_W_HOLD_S 17 #define EMIF_ASYNC_CS2_CR_W_HOLD_M 0xE0000 // Write Strobe Hold cycles. #define EMIF_ASYNC_CS2_CR_W_STROBE_S 20 #define EMIF_ASYNC_CS2_CR_W_STROBE_M 0x3F00000 // Write Strobe Duration cycles. #define EMIF_ASYNC_CS2_CR_W_SETUP_S 26 #define EMIF_ASYNC_CS2_CR_W_SETUP_M 0x3C000000 // Write Strobe Setup cycles. #define EMIF_ASYNC_CS2_CR_EW 0x40000000 // Extend Wait mode. #define EMIF_ASYNC_CS2_CR_SS 0x80000000 // Select Strobe mode. //***************************************************************************** // // The following are defines for the bit fields in the ASYNC_CS3_CR register // //***************************************************************************** #define EMIF_ASYNC_CS3_CR_ASIZE_S 0 #define EMIF_ASYNC_CS3_CR_ASIZE_M 0x3 // Asynchronous Memory Size. #define EMIF_ASYNC_CS3_CR_TA_S 2 #define EMIF_ASYNC_CS3_CR_TA_M 0xC // Turn Around cycles. #define EMIF_ASYNC_CS3_CR_R_HOLD_S 4 #define EMIF_ASYNC_CS3_CR_R_HOLD_M 0x70 // Read Strobe Hold cycles. #define EMIF_ASYNC_CS3_CR_R_STROBE_S 7 #define EMIF_ASYNC_CS3_CR_R_STROBE_M 0x1F80 // Read Strobe Duration cycles. #define EMIF_ASYNC_CS3_CR_R_SETUP_S 13 #define EMIF_ASYNC_CS3_CR_R_SETUP_M 0x1E000 // Read Strobe Setup cycles. #define EMIF_ASYNC_CS3_CR_W_HOLD_S 17 #define EMIF_ASYNC_CS3_CR_W_HOLD_M 0xE0000 // Write Strobe Hold cycles. #define EMIF_ASYNC_CS3_CR_W_STROBE_S 20 #define EMIF_ASYNC_CS3_CR_W_STROBE_M 0x3F00000 // Write Strobe Duration cycles. #define EMIF_ASYNC_CS3_CR_W_SETUP_S 26 #define EMIF_ASYNC_CS3_CR_W_SETUP_M 0x3C000000 // Write Strobe Setup cycles. #define EMIF_ASYNC_CS3_CR_EW 0x40000000 // Extend Wait mode. #define EMIF_ASYNC_CS3_CR_SS 0x80000000 // Select Strobe mode. //***************************************************************************** // // The following are defines for the bit fields in the ASYNC_CS4_CR register // //***************************************************************************** #define EMIF_ASYNC_CS4_CR_ASIZE_S 0 #define EMIF_ASYNC_CS4_CR_ASIZE_M 0x3 // Asynchronous Memory Size. #define EMIF_ASYNC_CS4_CR_TA_S 2 #define EMIF_ASYNC_CS4_CR_TA_M 0xC // Turn Around cycles. #define EMIF_ASYNC_CS4_CR_R_HOLD_S 4 #define EMIF_ASYNC_CS4_CR_R_HOLD_M 0x70 // Read Strobe Hold cycles. #define EMIF_ASYNC_CS4_CR_R_STROBE_S 7 #define EMIF_ASYNC_CS4_CR_R_STROBE_M 0x1F80 // Read Strobe Duration cycles. #define EMIF_ASYNC_CS4_CR_R_SETUP_S 13 #define EMIF_ASYNC_CS4_CR_R_SETUP_M 0x1E000 // Read Strobe Setup cycles. #define EMIF_ASYNC_CS4_CR_W_HOLD_S 17 #define EMIF_ASYNC_CS4_CR_W_HOLD_M 0xE0000 // Write Strobe Hold cycles. #define EMIF_ASYNC_CS4_CR_W_STROBE_S 20 #define EMIF_ASYNC_CS4_CR_W_STROBE_M 0x3F00000 // Write Strobe Duration cycles. #define EMIF_ASYNC_CS4_CR_W_SETUP_S 26 #define EMIF_ASYNC_CS4_CR_W_SETUP_M 0x3C000000 // Write Strobe Setup cycles. #define EMIF_ASYNC_CS4_CR_EW 0x40000000 // Extend Wait mode. #define EMIF_ASYNC_CS4_CR_SS 0x80000000 // Select Strobe mode. //***************************************************************************** // // The following are defines for the bit fields in the ASYNC_CS5_CR register // //***************************************************************************** #define EMIF_ASYNC_CS5_CR_ASIZE_S 0 #define EMIF_ASYNC_CS5_CR_ASIZE_M 0x3 // Asynchronous Memory Size. #define EMIF_ASYNC_CS5_CR_TA_S 2 #define EMIF_ASYNC_CS5_CR_TA_M 0xC // Turn Around cycles. #define EMIF_ASYNC_CS5_CR_R_HOLD_S 4 #define EMIF_ASYNC_CS5_CR_R_HOLD_M 0x70 // Read Strobe Hold cycles. #define EMIF_ASYNC_CS5_CR_R_STROBE_S 7 #define EMIF_ASYNC_CS5_CR_R_STROBE_M 0x1F80 // Read Strobe Duration cycles. #define EMIF_ASYNC_CS5_CR_R_SETUP_S 13 #define EMIF_ASYNC_CS5_CR_R_SETUP_M 0x1E000 // Read Strobe Setup cycles. #define EMIF_ASYNC_CS5_CR_W_HOLD_S 17 #define EMIF_ASYNC_CS5_CR_W_HOLD_M 0xE0000 // Write Strobe Hold cycles. #define EMIF_ASYNC_CS5_CR_W_STROBE_S 20 #define EMIF_ASYNC_CS5_CR_W_STROBE_M 0x3F00000 // Write Strobe Duration cycles. #define EMIF_ASYNC_CS5_CR_W_SETUP_S 26 #define EMIF_ASYNC_CS5_CR_W_SETUP_M 0x3C000000 // Write Strobe Setup cycles. #define EMIF_ASYNC_CS5_CR_EW 0x40000000 // Extend Wait mode. #define EMIF_ASYNC_CS5_CR_SS 0x80000000 // Select Strobe mode. //***************************************************************************** // // The following are defines for the bit fields in the SDRAM_TR register // //***************************************************************************** #define EMIF_SDRAM_TR_T_RRD_S 4 #define EMIF_SDRAM_TR_T_RRD_M 0x70 // Activate to Activate timing for // different bank. #define EMIF_SDRAM_TR_T_RC_S 8 #define EMIF_SDRAM_TR_T_RC_M 0xF00 // Activate to Activate timing . #define EMIF_SDRAM_TR_T_RAS_S 12 #define EMIF_SDRAM_TR_T_RAS_M 0xF000 // Activate to Precharge timing. #define EMIF_SDRAM_TR_T_WR_S 16 #define EMIF_SDRAM_TR_T_WR_M 0x70000 // Last Write to Precharge timing. #define EMIF_SDRAM_TR_T_RCD_S 20 #define EMIF_SDRAM_TR_T_RCD_M 0x700000 // Activate to Read/Write timing. #define EMIF_SDRAM_TR_T_RP_S 24 #define EMIF_SDRAM_TR_T_RP_M 0x7000000 // Precharge to Activate/Refresh // timing. #define EMIF_SDRAM_TR_T_RFC_S 27 #define EMIF_SDRAM_TR_T_RFC_M 0xF8000000 // Refresh/Load Mode to // Refresh/Activate timing //***************************************************************************** // // The following are defines for the bit fields in the TOTAL_SDRAM_AR register // //***************************************************************************** #define EMIF_TOTAL_SDRAM_AR_TOTAL_SDRAM_AR_S 0 #define EMIF_TOTAL_SDRAM_AR_TOTAL_SDRAM_AR_M 0xFFFFFFFF // Total number of VBUSP accesses // to SDRAM. //***************************************************************************** // // The following are defines for the bit fields in the TOTAL_SDRAM_ACTR register // //***************************************************************************** #define EMIF_TOTAL_SDRAM_ACTR_TOTAL_SDRAM_ACTR_S 0 #define EMIF_TOTAL_SDRAM_ACTR_TOTAL_SDRAM_ACTR_M 0xFFFFFFFF // Number of SDRAM accesses which // required an activate command. //***************************************************************************** // // The following are defines for the bit fields in the SDR_EXT_TMNG register // //***************************************************************************** #define EMIF_SDR_EXT_TMNG_T_XS_S 0 #define EMIF_SDR_EXT_TMNG_T_XS_M 0x1F // Self Refresh exit to new // command timing. //***************************************************************************** // // The following are defines for the bit fields in the INT_RAW register // //***************************************************************************** #define EMIF_INT_RAW_AT 0x1 // Asynchronous Timeout. #define EMIF_INT_RAW_LT 0x2 // Line Trap. #define EMIF_INT_RAW_WR_S 2 #define EMIF_INT_RAW_WR_M 0x3C // Wait Rise. //***************************************************************************** // // The following are defines for the bit fields in the INT_MSK register // //***************************************************************************** #define EMIF_INT_MSK_AT_MASKED 0x1 // Asynchronous Timeout. #define EMIF_INT_MSK_LT_MASKED 0x2 // Line Trap. #define EMIF_INT_MSK_WR_MASKED_S 2 #define EMIF_INT_MSK_WR_MASKED_M 0x3C // Wait Rise. //***************************************************************************** // // The following are defines for the bit fields in the INT_MSK_SET register // //***************************************************************************** #define EMIF_INT_MSK_SET_AT_MASK_SET 0x1 // Asynchronous Timeout. #define EMIF_INT_MSK_SET_LT_MASK_SET 0x2 // Line Trap. #define EMIF_INT_MSK_SET_WR_MASK_SET_S 2 #define EMIF_INT_MSK_SET_WR_MASK_SET_M 0x3C // Wait Rise. //***************************************************************************** // // The following are defines for the bit fields in the INT_MSK_CLR register // //***************************************************************************** #define EMIF_INT_MSK_CLR_AT_MASK_CLR 0x1 // Asynchronous Timeout. #define EMIF_INT_MSK_CLR_LT_MASK_CLR 0x2 // Line Trap. #define EMIF_INT_MSK_CLR_WR_MASK_CLR_S 2 #define EMIF_INT_MSK_CLR_WR_MASK_CLR_M 0x3C // Wait Rise. //***************************************************************************** // // The following are defines for the bit fields in the IO_CTRL register // //***************************************************************************** #define EMIF_IO_CTRL_IO_CTRL_S 0 #define EMIF_IO_CTRL_IO_CTRL_M 0xFFFF // VTP calibration control for the // IOs //***************************************************************************** // // The following are defines for the bit fields in the IO_STAT register // //***************************************************************************** #define EMIF_IO_STAT_IO_STAT_S 0 #define EMIF_IO_STAT_IO_STAT_M 0xFFFF // VTP calibration status of the // IOs //***************************************************************************** // // The following are defines for the bit fields in the MODEL_REL_NUM register // //***************************************************************************** #define EMIF_MODEL_REL_NUM_RELEASE_NUM_S 0 #define EMIF_MODEL_REL_NUM_RELEASE_NUM_M 0xFF // Release Number. #endif