source: rtems/c/src/lib/libbsp/arm/lpc32xx/include/emc.h @ 4a14d7b1

4.115
Last change on this file since 4a14d7b1 was 4a14d7b1, checked in by Sebastian Huber <sebastian.huber@…>, on 10/14/10 at 09:37:18

2010-10-14 Sebastian Huber <sebastian.huber@…>

  • include/emc.h, include/i2c.h, include/lpc32xx.h, include/nand-mlc.h: Update for <bsp/utility.h> changes.
  • Property mode set to 100644
File size: 5.2 KB
Line 
1/**
2 * @file
3 *
4 * @ingroup lpc32xx_emc
5 *
6 * @brief EMC support API.
7 */
8
9/*
10 * Copyright (c) 2010
11 * embedded brains GmbH
12 * Obere Lagerstr. 30
13 * D-82178 Puchheim
14 * Germany
15 * <rtems@embedded-brains.de>
16 *
17 * The license and distribution terms for this file may be
18 * found in the file LICENSE in this distribution or at
19 * http://www.rtems.com/license/LICENSE.
20 */
21
22#ifndef LIBBSP_ARM_LPC32XX_EMC_H
23#define LIBBSP_ARM_LPC32XX_EMC_H
24
25#include <rtems.h>
26
27#include <bsp/lpc32xx.h>
28
29#ifdef __cplusplus
30extern "C" {
31#endif /* __cplusplus */
32
33/**
34 * @defgroup lpc32xx_emc EMC Support
35 *
36 * @ingroup lpc32xx
37 *
38 * @brief EMC Support
39 *
40 * @{
41 */
42
43
44/**
45 * @name SDRAM Clock Control Register (SDRAMCLK_CTRL)
46 *
47 * @{
48 */
49
50#define SDRAMCLK_CLOCKS_DIS BSP_BIT32(0)
51#define SDRAMCLK_DDR_MODE BSP_BIT32(1)
52#define SDRAMCLK_DDR_DQSIN_DELAY(val) BSP_FLD32(val, 2, 6)
53#define SDRAMCLK_RTC_TICK_EN BSP_BIT32(7)
54#define SDRAMCLK_SW_DDR_CAL BSP_BIT32(8)
55#define SDRAMCLK_CAL_DELAY BSP_BIT32(9)
56#define SDRAMCLK_SENSITIVITY_FACTOR(val) BSP_FLD32(val, 10, 12)
57#define SDRAMCLK_DCA_STATUS BSP_BIT32(13)
58#define SDRAMCLK_COMMAND_DELAY(val) BSP_FLD32(val, 14, 18)
59#define SDRAMCLK_SW_DDR_RESET BSP_BIT32(19)
60#define SDRAMCLK_PIN_1_FAST BSP_BIT32(20)
61#define SDRAMCLK_PIN_2_FAST BSP_BIT32(21)
62#define SDRAMCLK_PIN_3_FAST BSP_BIT32(22)
63
64/** @} */
65
66/**
67 * @name EMC Control Register (EMCControl)
68 *
69 * @{
70 */
71
72#define EMC_CTRL_EN BSP_BIT32(0)
73#define EMC_CTRL_LOW_POWER BSP_BIT32(2)
74
75/** @} */
76
77/**
78 * @name EMC Dynamic Memory Control Register (EMCDynamicControl)
79 *
80 * @{
81 */
82
83#define EMC_DYN_CTRL_CE BSP_BIT32(0)
84#define EMC_DYN_CTRL_CS BSP_BIT32(1)
85#define EMC_DYN_CTRL_SR BSP_BIT32(2)
86#define EMC_DYN_CTRL_SRMCC BSP_BIT32(3)
87#define EMC_DYN_CTRL_IMCC BSP_BIT32(4)
88#define EMC_DYN_CTRL_MCC BSP_BIT32(5)
89#define EMC_DYN_CTRL_I_MASK BSP_MSK32(7, 8)
90#define EMC_DYN_CTRL_I_NORMAL BSP_FLD32(0x0, 7, 8)
91#define EMC_DYN_CTRL_I_MODE BSP_FLD32(0x1, 7, 8)
92#define EMC_DYN_CTRL_I_PALL BSP_FLD32(0x2, 7, 8)
93#define EMC_DYN_CTRL_I_NOP BSP_FLD32(0x3, 7, 8)
94#define EMC_DYN_CTRL_DP BSP_BIT32(9)
95
96/** @} */
97
98/**
99 * @name EMC Dynamic Memory Read Configuration Register (EMCDynamicReadConfig)
100 *
101 * @{
102 */
103
104#define EMC_DYN_READ_CONFIG_SDR_STRAT(val) BSP_FLD32(val, 0, 1)
105#define EMC_DYN_READ_CONFIG_SDR_POL_POS BSP_BIT32(4)
106#define EMC_DYN_READ_CONFIG_DDR_STRAT(val) BSP_FLD32(val, 8, 9)
107#define EMC_DYN_READ_CONFIG_DDR_POL_POS BSP_BIT32(12)
108
109/** @} */
110
111/**
112 * @name EMC Dynamic Memory Configuration N Register (EMCDynamicConfigN)
113 *
114 * @{
115 */
116
117#define EMC_DYN_CFG_MD(val) BSP_FLD32(val, 0, 2)
118#define EMC_DYN_CFG_AM(val) BSP_FLD32(val, 7, 14)
119#define EMC_DYN_CFG_P(val) BSP_BIT32(20)
120
121/** @} */
122
123/**
124 * @name EMC Dynamic Memory RAS and CAS Delay N Register (EMCDynamicRasCasN)
125 *
126 * @{
127 */
128
129#define EMC_DYN_RAS(val) BSP_FLD32(val, 0, 3)
130#define EMC_DYN_CAS(val) BSP_FLD32(val, 7, 10)
131
132/** @} */
133
134/**
135 * @name EMC AHB Control Register (EMCAHBControl)
136 *
137 * @{
138 */
139
140#define EMC_AHB_PORT_BUFF_EN BSP_BIT32(0)
141
142/** @} */
143
144/**
145 * @name EMC AHB Timeout Register (EMCAHBTimeOut)
146 *
147 * @{
148 */
149
150#define EMC_AHB_TIMEOUT(val) BSP_FLD32(val, 0, 9)
151
152/** @} */
153
154/**
155 * @name SDRAM Mode and Extended Mode Registers
156 *
157 * @{
158 */
159
160#define SDRAM_ADDR_ROW_16MB(val) ((uint32_t) (val) << 10)
161#define SDRAM_ADDR_ROW_32MB(val) ((uint32_t) (val) << 11)
162#define SDRAM_ADDR_ROW_64MB(val) ((uint32_t) (val) << 11)
163
164#define SDRAM_ADDR_BANK_16MB(ba1, ba0) \
165  (((uint32_t) (ba1) << 23) | ((uint32_t) (ba0) << 22))
166#define SDRAM_ADDR_BANK_32MB(ba1, ba0) \
167  (((uint32_t) (ba1) << 23) | ((uint32_t) (ba0) << 24))
168#define SDRAM_ADDR_BANK_64MB(ba1, ba0) \
169  (((uint32_t) (ba1) << 25) | ((uint32_t) (ba0) << 24))
170
171#define SDRAM_MODE_16MB(mode) \
172  (SDRAM_ADDR_BANK_16MB(0, 0) | SDRAM_ADDR_ROW_16MB(mode))
173#define SDRAM_MODE_32MB(mode) \
174  (SDRAM_ADDR_BANK_32MB(0, 0) | SDRAM_ADDR_ROW_32MB(mode))
175#define SDRAM_MODE_64MB(mode) \
176  (SDRAM_ADDR_BANK_64MB(0, 0) | SDRAM_ADDR_ROW_64MB(mode))
177
178#define SDRAM_EXTMODE_16MB(mode) \
179  (SDRAM_ADDR_BANK_16MB(1, 0) | SDRAM_ADDR_ROW_16MB(mode))
180#define SDRAM_EXTMODE_32MB(mode) \
181  (SDRAM_ADDR_BANK_32MB(1, 0) | SDRAM_ADDR_ROW_32MB(mode))
182#define SDRAM_EXTMODE_64MB(mode) \
183  (SDRAM_ADDR_BANK_64MB(1, 0) | SDRAM_ADDR_ROW_64MB(mode))
184
185#define SDRAM_MODE_BURST_LENGTH(val) BSP_FLD32(val, 0, 2)
186#define SDRAM_MODE_BURST_INTERLEAVE BSP_BIT32(3)
187#define SDRAM_MODE_CAS(val) BSP_FLD32(val, 4, 6)
188#define SDRAM_MODE_TEST_MODE(val) BSP_FLD32(val, 7, 8)
189#define SDRAM_MODE_WRITE_BURST_SINGLE_BIT BSP_BIT32(9)
190
191#define SDRAM_EXTMODE_PASR(val) BSP_FLD32(val, 0, 2)
192#define SDRAM_EXTMODE_DRIVER_STRENGTH(val) BSP_FLD32(val, 5, 6)
193
194/** @} */
195
196typedef struct {
197  uint32_t size;
198  uint32_t config;
199  uint32_t rascas;
200  uint32_t mode;
201  uint32_t extmode;
202} lpc32xx_emc_dynamic_chip_config;
203
204typedef struct {
205  uint32_t sdramclk_ctrl;
206  uint32_t nop_time_in_us;
207  uint32_t control;
208  uint32_t refresh;
209  uint32_t readconfig;
210  uint32_t trp;
211  uint32_t tras;
212  uint32_t tsrex;
213  uint32_t twr;
214  uint32_t trc;
215  uint32_t trfc;
216  uint32_t txsr;
217  uint32_t trrd;
218  uint32_t tmrd;
219  uint32_t tcdlr;
220  lpc32xx_emc_dynamic_chip_config chip [EMC_DYN_CHIP_COUNT];
221} lpc32xx_emc_dynamic_config;
222
223void lpc32xx_emc_init(const lpc32xx_emc_dynamic_config *dyn_cfg);
224
225/** @} */
226
227#ifdef __cplusplus
228}
229#endif /* __cplusplus */
230
231#endif /* LIBBSP_ARM_LPC32XX_EMC_H */
Note: See TracBrowser for help on using the repository browser.