File indexing completed on 2025-05-11 08:22:48
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028 #include <bspopts.h>
0029 #include <chip.h>
0030 #include <include/board_memories.h>
0031
0032 #if defined ATSAM_SDRAM_IS42S16100E_7BLI
0033
0034 #if ATSAM_MCK != 123000000
0035 #error Please check SDRAM settings for this clock frequency.
0036 #endif
0037
0038 const struct BOARD_Sdram_Config BOARD_Sdram_Config = {
0039
0040 .sdramc_tr = 1562,
0041 .sdramc_cr =
0042 SDRAMC_CR_NC_COL8
0043 | SDRAMC_CR_NR_ROW11
0044 | SDRAMC_CR_CAS_LATENCY3
0045 | SDRAMC_CR_NB_BANK2
0046 | SDRAMC_CR_DBW
0047 | SDRAMC_CR_TWR(5)
0048 | SDRAMC_CR_TRC_TRFC(13)
0049 | SDRAMC_CR_TRP(5)
0050 | SDRAMC_CR_TRCD(5)
0051 | SDRAMC_CR_TRAS(9)
0052 | SDRAMC_CR_TXSR(15U),
0053 .sdramc_mdr = SDRAMC_MDR_MD_SDRAM,
0054 .sdramc_cfr1 = SDRAMC_CFR1_UNAL_SUPPORTED | SDRAMC_CFR1_TMRD(2),
0055 .sdramc_lpr = 0
0056 };
0057
0058 #elif defined ATSAM_SDRAM_IS42S16320F_7BL
0059
0060 #if ATSAM_MCK != 123000000
0061 #error Please check SDRAM settings for this clock frequency.
0062 #endif
0063
0064 #define CLOCK_CYCLES_FROM_NS_MAX(ns) \
0065 (((ns) * (ATSAM_MCK / 1000ul / 1000ul)) / 1000ul)
0066 #define CLOCK_CYCLES_FROM_NS_MIN(ns) (CLOCK_CYCLES_FROM_NS_MAX(ns) + 1)
0067
0068 const struct BOARD_Sdram_Config BOARD_Sdram_Config = {
0069
0070 .sdramc_tr = CLOCK_CYCLES_FROM_NS_MAX(7812ul),
0071 .sdramc_cr =
0072 SDRAMC_CR_NC_COL10
0073 | SDRAMC_CR_NR_ROW13
0074 | SDRAMC_CR_CAS_LATENCY3
0075 | SDRAMC_CR_NB_BANK4
0076 | SDRAMC_CR_DBW
0077
0078
0079
0080 | SDRAMC_CR_TWR(CLOCK_CYCLES_FROM_NS_MIN(40))
0081 | SDRAMC_CR_TRC_TRFC(CLOCK_CYCLES_FROM_NS_MIN(60))
0082 | SDRAMC_CR_TRP(CLOCK_CYCLES_FROM_NS_MIN(15))
0083 | SDRAMC_CR_TRCD(CLOCK_CYCLES_FROM_NS_MIN(15))
0084 | SDRAMC_CR_TRAS(CLOCK_CYCLES_FROM_NS_MIN(37))
0085 | SDRAMC_CR_TXSR(CLOCK_CYCLES_FROM_NS_MIN(67)),
0086 .sdramc_mdr = SDRAMC_MDR_MD_SDRAM,
0087 .sdramc_cfr1 = SDRAMC_CFR1_UNAL_SUPPORTED |
0088 SDRAMC_CFR1_TMRD(CLOCK_CYCLES_FROM_NS_MIN(14)),
0089 .sdramc_lpr = 0
0090 };
0091
0092 #elif defined ATSAM_SDRAM_MT48LC16M16A2P_6A
0093
0094
0095
0096
0097
0098
0099
0100
0101
0102
0103
0104
0105 #if ATSAM_MCK == 60000000
0106 const struct BOARD_Sdram_Config BOARD_Sdram_Config = {
0107 .sdramc_tr = 0x1D4,
0108 .sdramc_cr =
0109 SDRAMC_CR_NC_COL9
0110 | SDRAMC_CR_NR_ROW13
0111 | SDRAMC_CR_NB_BANK4
0112 | SDRAMC_CR_CAS_LATENCY3
0113 | SDRAMC_CR_DBW
0114 | SDRAMC_CR_TWR(3)
0115 | SDRAMC_CR_TRC_TRFC(8)
0116 | SDRAMC_CR_TRP(3)
0117 | SDRAMC_CR_TRCD(3)
0118 | SDRAMC_CR_TRAS(5)
0119 | SDRAMC_CR_TXSR(9),
0120 .sdramc_mdr = SDRAMC_MDR_MD_SDRAM,
0121 .sdramc_cfr1 = SDRAMC_CFR1_UNAL_SUPPORTED |
0122 SDRAMC_CFR1_TMRD(2),
0123 .sdramc_lpr = 0
0124 };
0125
0126 #elif ATSAM_MCK == 123000000
0127 const struct BOARD_Sdram_Config BOARD_Sdram_Config = {
0128 .sdramc_tr = 960,
0129 .sdramc_cr =
0130 SDRAMC_CR_NC_COL9
0131 | SDRAMC_CR_NR_ROW13
0132 | SDRAMC_CR_NB_BANK4
0133 | SDRAMC_CR_CAS_LATENCY3
0134 | SDRAMC_CR_DBW
0135 | SDRAMC_CR_TWR(2)
0136 | SDRAMC_CR_TRC_TRFC(8)
0137 | SDRAMC_CR_TRP(2)
0138 | SDRAMC_CR_TRCD(3)
0139 | SDRAMC_CR_TRAS(6)
0140 | SDRAMC_CR_TXSR(9),
0141 .sdramc_mdr = SDRAMC_MDR_MD_SDRAM,
0142 .sdramc_cfr1 = SDRAMC_CFR1_UNAL_SUPPORTED |
0143 SDRAMC_CFR1_TMRD(2),
0144 .sdramc_lpr = 0
0145 };
0146
0147 #else
0148 #error Please check SDRAM settings for this frequency.
0149 #endif
0150
0151 #elif defined ATSAM_SDRAM_CUSTOM
0152
0153
0154
0155
0156
0157 const struct BOARD_Sdram_Config BOARD_Sdram_Config = {};
0158 #else
0159 #error SDRAM not supported.
0160 #endif