File indexing completed on 2025-05-11 08:23:04
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
0029
0030
0031
0032
0033
0034
0035
0036 #ifndef LIBBSP_ARM_LPC32XX_EMC_H
0037 #define LIBBSP_ARM_LPC32XX_EMC_H
0038
0039 #include <rtems.h>
0040
0041 #include <bsp/lpc-emc.h>
0042
0043 #ifdef __cplusplus
0044 extern "C" {
0045 #endif
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061 #define SDRAMCLK_CLOCKS_DIS BSP_BIT32(0)
0062 #define SDRAMCLK_DDR_MODE BSP_BIT32(1)
0063 #define SDRAMCLK_DDR_DQSIN_DELAY(val) BSP_FLD32(val, 2, 6)
0064 #define SDRAMCLK_RTC_TICK_EN BSP_BIT32(7)
0065 #define SDRAMCLK_SW_DDR_CAL BSP_BIT32(8)
0066 #define SDRAMCLK_CAL_DELAY BSP_BIT32(9)
0067 #define SDRAMCLK_SENSITIVITY_FACTOR(val) BSP_FLD32(val, 10, 12)
0068 #define SDRAMCLK_DCA_STATUS BSP_BIT32(13)
0069 #define SDRAMCLK_COMMAND_DELAY(val) BSP_FLD32(val, 14, 18)
0070 #define SDRAMCLK_SW_DDR_RESET BSP_BIT32(19)
0071 #define SDRAMCLK_PIN_1_FAST BSP_BIT32(20)
0072 #define SDRAMCLK_PIN_2_FAST BSP_BIT32(21)
0073 #define SDRAMCLK_PIN_3_FAST BSP_BIT32(22)
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083 #define EMC_AHB_PORT_BUFF_EN BSP_BIT32(0)
0084
0085
0086
0087
0088
0089
0090
0091
0092
0093 #define EMC_AHB_TIMEOUT(val) BSP_FLD32(val, 0, 9)
0094
0095
0096
0097
0098
0099
0100
0101
0102
0103 #define SDRAM_ADDR_ROW_16MB(val) ((uint32_t) (val) << 10)
0104 #define SDRAM_ADDR_ROW_32MB(val) ((uint32_t) (val) << 11)
0105 #define SDRAM_ADDR_ROW_64MB(val) ((uint32_t) (val) << 11)
0106
0107 #define SDRAM_ADDR_BANK_16MB(ba1, ba0) \
0108 (((uint32_t) (ba1) << 23) | ((uint32_t) (ba0) << 22))
0109 #define SDRAM_ADDR_BANK_32MB(ba1, ba0) \
0110 (((uint32_t) (ba1) << 23) | ((uint32_t) (ba0) << 24))
0111 #define SDRAM_ADDR_BANK_64MB(ba1, ba0) \
0112 (((uint32_t) (ba1) << 25) | ((uint32_t) (ba0) << 24))
0113
0114 #define SDRAM_MODE_16MB(mode) \
0115 (SDRAM_ADDR_BANK_16MB(0, 0) | SDRAM_ADDR_ROW_16MB(mode))
0116 #define SDRAM_MODE_32MB(mode) \
0117 (SDRAM_ADDR_BANK_32MB(0, 0) | SDRAM_ADDR_ROW_32MB(mode))
0118 #define SDRAM_MODE_64MB(mode) \
0119 (SDRAM_ADDR_BANK_64MB(0, 0) | SDRAM_ADDR_ROW_64MB(mode))
0120
0121 #define SDRAM_EXTMODE_16MB(mode) \
0122 (SDRAM_ADDR_BANK_16MB(1, 0) | SDRAM_ADDR_ROW_16MB(mode))
0123 #define SDRAM_EXTMODE_32MB(mode) \
0124 (SDRAM_ADDR_BANK_32MB(1, 0) | SDRAM_ADDR_ROW_32MB(mode))
0125 #define SDRAM_EXTMODE_64MB(mode) \
0126 (SDRAM_ADDR_BANK_64MB(1, 0) | SDRAM_ADDR_ROW_64MB(mode))
0127
0128 #define SDRAM_MODE_BURST_LENGTH(val) BSP_FLD32(val, 0, 2)
0129 #define SDRAM_MODE_BURST_INTERLEAVE BSP_BIT32(3)
0130 #define SDRAM_MODE_CAS(val) BSP_FLD32(val, 4, 6)
0131 #define SDRAM_MODE_TEST_MODE(val) BSP_FLD32(val, 7, 8)
0132 #define SDRAM_MODE_WRITE_BURST_SINGLE_BIT BSP_BIT32(9)
0133
0134 #define SDRAM_EXTMODE_PASR(val) BSP_FLD32(val, 0, 2)
0135 #define SDRAM_EXTMODE_DRIVER_STRENGTH(val) BSP_FLD32(val, 5, 6)
0136
0137
0138
0139 typedef struct {
0140 uint32_t size;
0141 uint32_t config;
0142 uint32_t rascas;
0143 uint32_t mode;
0144 uint32_t extmode;
0145 } lpc32xx_emc_dynamic_chip_config;
0146
0147 typedef struct {
0148 uint32_t sdramclk_ctrl;
0149 uint32_t nop_time_in_us;
0150 uint32_t control;
0151 uint32_t refresh;
0152 uint32_t readconfig;
0153 uint32_t trp;
0154 uint32_t tras;
0155 uint32_t tsrex;
0156 uint32_t twr;
0157 uint32_t trc;
0158 uint32_t trfc;
0159 uint32_t txsr;
0160 uint32_t trrd;
0161 uint32_t tmrd;
0162 uint32_t tcdlr;
0163 lpc32xx_emc_dynamic_chip_config chip [EMC_DYN_CHIP_COUNT];
0164 } lpc32xx_emc_dynamic_config;
0165
0166 void lpc32xx_emc_init(const lpc32xx_emc_dynamic_config *dyn_cfg);
0167
0168
0169
0170 #ifdef __cplusplus
0171 }
0172 #endif
0173
0174 #endif