1 /* 2 * Copyright (c) 2015, Freescale Semiconductor, Inc. 3 * Copyright 2016-2020 NXP 4 * All rights reserved. 5 * 6 * SPDX-License-Identifier: BSD-3-Clause 7 */ 8 9 #ifndef _FSL_SDRAM_H_ 10 #define _FSL_SDRAM_H_ 11 12 #include "fsl_sdramc.h" 13 14 /*! 15 * @addtogroup sdram_mt48lc4m16 16 * @{ 17 */ 18 19 /******************************************************************************* 20 * Definitions 21 ******************************************************************************/ 22 23 /*! @brief SDRAM driver version. */ 24 #define FSL_SDRAM_DRIVER_VERSION (MAKE_VERSION(2, 0, 1)) /*!< Version 2.0.1. */ 25 /*! @brief Define the access value of the SDRAM location. */ 26 #define SDRAM_COMMAND_ACCESSVALUE 0xaaU 27 28 /*! @brief Define the right address line for the mrs register setting. */ 29 #define ADDR9 9U 30 #define ADDR10 10U 31 #define ADDR11 11U 32 #define ADDR12 12U 33 #define ADDR13 13U 34 #define ADDR14 14U 35 #define ADDR15 15U 36 #define ADDR16 16U 37 #define ADDR17 17U 38 #define ADDR18 18U 39 #define ADDR19 19U 40 #define ADDR20 20U 41 #define ADDR21 21U 42 #define ADDR22 22U 43 #define ADDR23 23U 44 45 /*! @brief Define the physical connection--16bit port 8 column. */ 46 #define SDRAM_A0 ADDR16 47 #define SDRAM_A1 ADDR15 48 #define SDRAM_A2 ADDR14 49 #define SDRAM_A3 ADDR13 50 #define SDRAM_A4 ADDR12 51 #define SDRAM_A5 ADDR11 52 #define SDRAM_A6 ADDR10 53 #define SDRAM_A7 ADDR9 54 #define SDRAM_A8 ADDR17 55 #define SDRAM_A9 ADDR18 56 #define SDRAM_A10 ADDR19 57 #define SDRAM_A11 ADDR20 58 #define SDRAM_A12 ADDR21 59 #define SDRAM_A13 ADDR22 60 #define SDRAM_A14 ADDR23 61 62 #define BURSTLENGTH 0U 63 #define BURSTTYPE 0U 64 #define CASLATENCY 2U 65 #define OPMODE 0U 66 #define WRITEBURSTMODE 0U 67 68 /*! @brief SDRAM Mode register write burst mode setting. */ 69 typedef enum _sdram_write_burst_mode 70 { 71 kSDRAM_MrsWriteBurst = 0x0U, /*!< Write burst mode. */ 72 kSDRAM_MrsWriteSingle /*!< Write single location mode. */ 73 } sdram_write_burst_mode_t; 74 75 /*! @brief SDRAM Mode register operation mode setting. */ 76 typedef enum _sdram_operation_mode 77 { 78 kSDRAM_MrsStandOperation = 0x0U, /*!< Standard operation mode. */ 79 kSDRAM_MrsAllOtherReserve /*!< All other states reserved. */ 80 } sdram_operation_mode_t; 81 82 /*! @brief SDRAM Mode register CAS latency setting. */ 83 typedef enum _sdram_cas_latency 84 { 85 kSDRAM_MrsLatencyOne = 0x1U, /*!< Latency one. */ 86 kSDRAM_MrsLatencyTwo, /*!< Latency two. */ 87 kSDRAM_MrsLatencyThree /*!< Latency three. */ 88 } sdram_cas_latency_t; 89 90 /*! @brief SDRAM Mode register burst type setting. */ 91 typedef enum _sdram_burst_type 92 { 93 kSDRAM_MrsSequential = 0x0U, /*!< Sequential. */ 94 kSDRAM_MrsInterleaved, /*!< Interleaved. */ 95 } sdram_burst_type_t; 96 97 /*! @brief SDRAM Mode register burst length setting. */ 98 typedef enum _sdram_burst_len 99 { 100 kSDRAM_MrsBurstLenOne = 0x0U, /*!< 1. */ 101 kSDRAM_MrsBurstLenTwo = 0x1U, /*!< 2. */ 102 kSDRAM_MrsBurstLenFour = 0x2U, /*!< 4. */ 103 kSDRAM_MrsBurstLenEight = 0x3U, /*!< 8. */ 104 kSDRAM_MrsBurstLenAllPage = 0x7U /*!< Full page only for sequential burst type. */ 105 } sdram_burst_len_t; 106 /******************************************************************************* 107 * API 108 ******************************************************************************/ 109 110 #if defined(__cplusplus) 111 extern "C" { 112 #endif 113 114 /*! 115 * @brief Initializes the SDRAM device. 116 * The function is used to initialize the MT48LC4M16A2 SDRAM external memory. 117 * @param base SDRAM controller peripheral base address. 118 * @param address The address of the sdram. 119 * @param busClock_Hz The bus clock frequency for SDRAM controller. 120 * @return the execution result. 121 * 122 */ 123 status_t SDRAM_Init(SDRAM_Type *base, uint32_t address, uint32_t busClock_Hz); 124 125 #if defined(__cplusplus) 126 } 127 #endif 128 129 /*! @} */ 130 131 #endif /*_FSL_SDRAM_H_*/ 132