1 | /** |
---|
2 | * @file |
---|
3 | * |
---|
4 | * @ingroup lpc32xx_reg |
---|
5 | * |
---|
6 | * @brief Register base addresses. |
---|
7 | */ |
---|
8 | |
---|
9 | /* |
---|
10 | * Copyright (c) 2009 |
---|
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: |
---|
20 | */ |
---|
21 | |
---|
22 | #ifndef LIBBSP_ARM_LPC32XX_LPC32XX_H |
---|
23 | #define LIBBSP_ARM_LPC32XX_LPC32XX_H |
---|
24 | |
---|
25 | #include <stdint.h> |
---|
26 | |
---|
27 | #include <bsp/utility.h> |
---|
28 | |
---|
29 | /** |
---|
30 | * @defgroup lpc32xx_reg Register Definitions |
---|
31 | * |
---|
32 | * @ingroup lpc32xx |
---|
33 | * |
---|
34 | * @brief Register definitions. |
---|
35 | * |
---|
36 | * @{ |
---|
37 | */ |
---|
38 | |
---|
39 | /** |
---|
40 | * @name Register Base Addresses |
---|
41 | * |
---|
42 | * @{ |
---|
43 | */ |
---|
44 | |
---|
45 | #define LPC32XX_BASE_ADC 0x40048000 |
---|
46 | #define LPC32XX_BASE_SYSCON 0x40004000 |
---|
47 | #define LPC32XX_BASE_DEBUG_CTRL 0x40040000 |
---|
48 | #define LPC32XX_BASE_DMA 0x31000000 |
---|
49 | #define LPC32XX_BASE_EMC 0x31080000 |
---|
50 | #define LPC32XX_BASE_EMC_CS_0 0xe0000000 |
---|
51 | #define LPC32XX_BASE_EMC_CS_1 0xe1000000 |
---|
52 | #define LPC32XX_BASE_EMC_CS_2 0xe2000000 |
---|
53 | #define LPC32XX_BASE_EMC_CS_3 0xe3000000 |
---|
54 | #define LPC32XX_BASE_EMC_DYCS_0 0x80000000 |
---|
55 | #define LPC32XX_BASE_EMC_DYCS_1 0xa0000000 |
---|
56 | #define LPC32XX_BASE_ETB_CFG 0x310c0000 |
---|
57 | #define LPC32XX_BASE_ETB_DATA 0x310e0000 |
---|
58 | #define LPC32XX_BASE_ETHERNET 0x31060000 |
---|
59 | #define LPC32XX_BASE_GPIO 0x40028000 |
---|
60 | #define LPC32XX_BASE_I2C_1 0x400a0000 |
---|
61 | #define LPC32XX_BASE_I2C_2 0x400a8000 |
---|
62 | #define LPC32XX_BASE_I2S_0 0x20094000 |
---|
63 | #define LPC32XX_BASE_I2S_1 0x2009c000 |
---|
64 | #define LPC32XX_BASE_IRAM 0x08000000 |
---|
65 | #define LPC32XX_BASE_IROM 0x0c000000 |
---|
66 | #define LPC32XX_BASE_KEYSCAN 0x40050000 |
---|
67 | #define LPC32XX_BASE_LCD 0x31040000 |
---|
68 | #define LPC32XX_BASE_MCPWM 0x400e8000 |
---|
69 | #define LPC32XX_BASE_MIC 0x40008000 |
---|
70 | #define LPC32XX_BASE_NAND_MLC 0x200a8000 |
---|
71 | #define LPC32XX_BASE_NAND_SLC 0x20020000 |
---|
72 | #define LPC32XX_BASE_PWM_1 0x4005c000 |
---|
73 | #define LPC32XX_BASE_PWM_2 0x4005c004 |
---|
74 | #define LPC32XX_BASE_PWM_3 0x4002c000 |
---|
75 | #define LPC32XX_BASE_PWM_4 0x40030000 |
---|
76 | #define LPC32XX_BASE_RTC 0x40024000 |
---|
77 | #define LPC32XX_BASE_RTC_RAM 0x40024080 |
---|
78 | #define LPC32XX_BASE_SDCARD 0x20098000 |
---|
79 | #define LPC32XX_BASE_SIC_1 0x4000c000 |
---|
80 | #define LPC32XX_BASE_SIC_2 0x40010000 |
---|
81 | #define LPC32XX_BASE_SPI_1 0x20088000 |
---|
82 | #define LPC32XX_BASE_SPI_2 0x20090000 |
---|
83 | #define LPC32XX_BASE_SSP_0 0x20084000 |
---|
84 | #define LPC32XX_BASE_SSP_1 0x2008c000 |
---|
85 | #define LPC32XX_BASE_TIMER_0 0x40044000 |
---|
86 | #define LPC32XX_BASE_TIMER_1 0x4004c000 |
---|
87 | #define LPC32XX_BASE_TIMER_2 0x40058000 |
---|
88 | #define LPC32XX_BASE_TIMER_3 0x40060000 |
---|
89 | #define LPC32XX_BASE_TIMER_5 0x4002c000 |
---|
90 | #define LPC32XX_BASE_TIMER_6 0x40030000 |
---|
91 | #define LPC32XX_BASE_TIMER_HS 0x40038000 |
---|
92 | #define LPC32XX_BASE_TIMER_MS 0x40034000 |
---|
93 | #define LPC32XX_BASE_UART_1 0x40014000 |
---|
94 | #define LPC32XX_BASE_UART_2 0x40018000 |
---|
95 | #define LPC32XX_BASE_UART_3 0x40080000 |
---|
96 | #define LPC32XX_BASE_UART_4 0x40088000 |
---|
97 | #define LPC32XX_BASE_UART_5 0x40090000 |
---|
98 | #define LPC32XX_BASE_UART_6 0x40098000 |
---|
99 | #define LPC32XX_BASE_UART_7 0x4001c000 |
---|
100 | #define LPC32XX_BASE_USB 0x31020000 |
---|
101 | #define LPC32XX_BASE_USB_OTG_I2C 0x31020300 |
---|
102 | #define LPC32XX_BASE_WDT 0x4003c000 |
---|
103 | |
---|
104 | /** @} */ |
---|
105 | |
---|
106 | /** |
---|
107 | * @name Miscanellanous Registers |
---|
108 | * |
---|
109 | * @{ |
---|
110 | */ |
---|
111 | |
---|
112 | #define LPC32XX_U3CLK (*(volatile uint32_t *) 0x400040d0) |
---|
113 | #define LPC32XX_U4CLK (*(volatile uint32_t *) 0x400040d4) |
---|
114 | #define LPC32XX_U5CLK (*(volatile uint32_t *) 0x400040d8) |
---|
115 | #define LPC32XX_U6CLK (*(volatile uint32_t *) 0x400040dc) |
---|
116 | #define LPC32XX_IRDACLK (*(volatile uint32_t *) 0x400040e0) |
---|
117 | #define LPC32XX_UART_CTRL (*(volatile uint32_t *) 0x40054000) |
---|
118 | #define LPC32XX_UART_CLKMODE (*(volatile uint32_t *) 0x40054004) |
---|
119 | #define LPC32XX_UART_LOOP (*(volatile uint32_t *) 0x40054008) |
---|
120 | #define LPC32XX_SW_INT (*(volatile uint32_t *) 0x400040a8) |
---|
121 | #define LPC32XX_MAC_CLK_CTRL (*(volatile uint32_t *) 0x40004090) |
---|
122 | #define LPC32XX_USB_DIV (*(volatile uint32_t *) 0x4000401c) |
---|
123 | #define LPC32XX_OTG_CLK_CTRL (*(volatile uint32_t *) 0x31020ff4) |
---|
124 | #define LPC32XX_OTG_CLK_STAT (*(volatile uint32_t *) 0x31020ff8) |
---|
125 | #define LPC32XX_OTG_STAT_CTRL (*(volatile uint32_t *) 0x31020110) |
---|
126 | #define LPC32XX_I2C_RX (*(volatile uint32_t *) 0x31020300) |
---|
127 | #define LPC32XX_I2C_TX (*(volatile uint32_t *) 0x31020300) |
---|
128 | #define LPC32XX_I2C_STS (*(volatile uint32_t *) 0x31020304) |
---|
129 | #define LPC32XX_I2C_CTL (*(volatile uint32_t *) 0x31020308) |
---|
130 | #define LPC32XX_I2C_CLKHI (*(volatile uint32_t *) 0x3102030c) |
---|
131 | #define LPC32XX_I2C_CLKLO (*(volatile uint32_t *) 0x31020310) |
---|
132 | #define LPC32XX_PWR_CTRL (*(volatile uint32_t *) 0x40004044) |
---|
133 | #define LPC32XX_OSC_CTRL (*(volatile uint32_t *) 0x4000404c) |
---|
134 | #define LPC32XX_SYSCLK_CTRL (*(volatile uint32_t *) 0x40004050) |
---|
135 | #define LPC32XX_PLL397_CTRL (*(volatile uint32_t *) 0x40004048) |
---|
136 | #define LPC32XX_HCLKPLL_CTRL (*(volatile uint32_t *) 0x40004058) |
---|
137 | #define LPC32XX_HCLKDIV_CTRL (*(volatile uint32_t *) 0x40004040) |
---|
138 | #define LPC32XX_TEST_CLK (*(volatile uint32_t *) 0x400040a4) |
---|
139 | #define LPC32XX_AUTOCLK_CTRL (*(volatile uint32_t *) 0x400040ec) |
---|
140 | #define LPC32XX_START_ER_PIN (*(volatile uint32_t *) 0x40004030) |
---|
141 | #define LPC32XX_START_ER_INT (*(volatile uint32_t *) 0x40004020) |
---|
142 | #define LPC32XX_P0_INTR_ER (*(volatile uint32_t *) 0x40004018) |
---|
143 | #define LPC32XX_START_SR_PIN (*(volatile uint32_t *) 0x40004038) |
---|
144 | #define LPC32XX_START_SR_INT (*(volatile uint32_t *) 0x40004028) |
---|
145 | #define LPC32XX_START_RSR_PIN (*(volatile uint32_t *) 0x40004034) |
---|
146 | #define LPC32XX_START_RSR_INT (*(volatile uint32_t *) 0x40004024) |
---|
147 | #define LPC32XX_START_APR_PIN (*(volatile uint32_t *) 0x4000403c) |
---|
148 | #define LPC32XX_START_APR_INT (*(volatile uint32_t *) 0x4000402c) |
---|
149 | #define LPC32XX_USB_CTRL (*(volatile uint32_t *) 0x40004064) |
---|
150 | #define LPC32XX_USBDIV_CTRL (*(volatile uint32_t *) 0x4000401c) |
---|
151 | #define LPC32XX_MS_CTRL (*(volatile uint32_t *) 0x40004080) |
---|
152 | #define LPC32XX_DMACLK_CTRL (*(volatile uint32_t *) 0x400040e8) |
---|
153 | #define LPC32XX_FLASHCLK_CTRL (*(volatile uint32_t *) 0x400040c8) |
---|
154 | #define LPC32XX_MACCLK_CTRL (*(volatile uint32_t *) 0x40004090) |
---|
155 | #define LPC32XX_LCDCLK_CTRL (*(volatile uint32_t *) 0x40004054) |
---|
156 | #define LPC32XX_I2S_CTRL (*(volatile uint32_t *) 0x4000407c) |
---|
157 | #define LPC32XX_SSP_CTRL (*(volatile uint32_t *) 0x40004078) |
---|
158 | #define LPC32XX_SPI_CTRL (*(volatile uint32_t *) 0x400040c4) |
---|
159 | #define LPC32XX_I2CCLK_CTRL (*(volatile uint32_t *) 0x400040ac) |
---|
160 | #define LPC32XX_TIMCLK_CTRL1 (*(volatile uint32_t *) 0x400040c0) |
---|
161 | #define LPC32XX_TIMCLK_CTRL (*(volatile uint32_t *) 0x400040bc) |
---|
162 | #define LPC32XX_ADCLK_CTRL (*(volatile uint32_t *) 0x400040b4) |
---|
163 | #define LPC32XX_ADCLK_CTRL1 (*(volatile uint32_t *) 0x40004060) |
---|
164 | #define LPC32XX_KEYCLK_CTRL (*(volatile uint32_t *) 0x400040b0) |
---|
165 | #define LPC32XX_PWMCLK_CTRL (*(volatile uint32_t *) 0x400040b8) |
---|
166 | #define LPC32XX_UARTCLK_CTRL (*(volatile uint32_t *) 0x400040e4) |
---|
167 | #define LPC32XX_POS0_IRAM_CTRl (*(volatile uint32_t *) 0x40004110) |
---|
168 | #define LPC32XX_POS1_IRAM_CTRl (*(volatile uint32_t *) 0x40004114) |
---|
169 | |
---|
170 | /** @} */ |
---|
171 | |
---|
172 | /** |
---|
173 | * @name GPIO Registers |
---|
174 | * |
---|
175 | * @{ |
---|
176 | */ |
---|
177 | |
---|
178 | #define LPC32XX_P0_INP_STATE (*(volatile uint32_t *) 0x40028040) |
---|
179 | #define LPC32XX_P0_OUTP_SET (*(volatile uint32_t *) 0x40028044) |
---|
180 | #define LPC32XX_P0_OUTP_CLR (*(volatile uint32_t *) 0x40028048) |
---|
181 | #define LPC32XX_P0_DIR_SET (*(volatile uint32_t *) 0x40028050) |
---|
182 | #define LPC32XX_P0_DIR_CLR (*(volatile uint32_t *) 0x40028054) |
---|
183 | #define LPC32XX_P0_DIR_STATE (*(volatile uint32_t *) 0x40028058) |
---|
184 | #define LPC32XX_P0_OUTP_STATE (*(volatile uint32_t *) 0x4002804c) |
---|
185 | #define LPC32XX_P1_INP_STATE (*(volatile uint32_t *) 0x40028060) |
---|
186 | #define LPC32XX_P1_OUTP_SET (*(volatile uint32_t *) 0x40028064) |
---|
187 | #define LPC32XX_P1_OUTP_CLR (*(volatile uint32_t *) 0x40028068) |
---|
188 | #define LPC32XX_P1_DIR_SET (*(volatile uint32_t *) 0x40028070) |
---|
189 | #define LPC32XX_P1_DIR_CLR (*(volatile uint32_t *) 0x40028074) |
---|
190 | #define LPC32XX_P1_DIR_STATE (*(volatile uint32_t *) 0x40028078) |
---|
191 | #define LPC32XX_P1_OUTP_STATE (*(volatile uint32_t *) 0x4002806c) |
---|
192 | #define LPC32XX_P2_INP_STATE (*(volatile uint32_t *) 0x4002801c) |
---|
193 | #define LPC32XX_P2_OUTP_SET (*(volatile uint32_t *) 0x40028020) |
---|
194 | #define LPC32XX_P2_OUTP_CLR (*(volatile uint32_t *) 0x40028024) |
---|
195 | #define LPC32XX_P2_DIR_SET (*(volatile uint32_t *) 0x40028010) |
---|
196 | #define LPC32XX_P2_DIR_CLR (*(volatile uint32_t *) 0x40028014) |
---|
197 | #define LPC32XX_P2_DIR_STATE (*(volatile uint32_t *) 0x40028018) |
---|
198 | #define LPC32XX_P3_INP_STATE (*(volatile uint32_t *) 0x40028000) |
---|
199 | #define LPC32XX_P3_OUTP_SET (*(volatile uint32_t *) 0x40028004) |
---|
200 | #define LPC32XX_P3_OUTP_CLR (*(volatile uint32_t *) 0x40028008) |
---|
201 | #define LPC32XX_P3_OUTP_STATE (*(volatile uint32_t *) 0x4002800c) |
---|
202 | |
---|
203 | /** @} */ |
---|
204 | |
---|
205 | /** |
---|
206 | * @name Power Control Register (PWR_CTRL) |
---|
207 | * |
---|
208 | * @{ |
---|
209 | */ |
---|
210 | |
---|
211 | #define PWR_STOP BIT32(0) |
---|
212 | #define PWR_HIGHCORE_ALWAYS BIT32(1) |
---|
213 | #define PWR_NORMAL_RUN_MODE BIT32(2) |
---|
214 | #define PWR_SYSCLKEN_ALWAYS BIT32(3) |
---|
215 | #define PWR_SYSCLKEN_HIGH BIT32(4) |
---|
216 | #define PWR_HIGHCORE_HIGH BIT32(5) |
---|
217 | #define PWR_SDRAM_AUTO_REFRESH BIT32(7) |
---|
218 | #define PWR_UPDATE_EMCSREFREQ BIT32(8) |
---|
219 | #define PWR_EMCSREFREQ BIT32(9) |
---|
220 | #define PWR_HCLK_USES_PERIPH_CLK BIT32(10) |
---|
221 | |
---|
222 | /** @} */ |
---|
223 | |
---|
224 | /** |
---|
225 | * @name HCLK PLL Control Register (HCLKPLL_CTRL) |
---|
226 | * |
---|
227 | * @{ |
---|
228 | */ |
---|
229 | |
---|
230 | #define HCLK_PLL_LOCK BIT32(0) |
---|
231 | #define HCLK_PLL_M(val) FIELD32(val, 1, 8) |
---|
232 | #define HCLK_PLL_N(val) FIELD32(val, 9, 2) |
---|
233 | #define HCLK_PLL_P(val) FIELD32(val, 11, 2) |
---|
234 | #define HCLK_PLL_FBD_FCLKOUT BIT32(13) |
---|
235 | #define HCLK_PLL_DIRECT BIT32(14) |
---|
236 | #define HCLK_PLL_BYPASS BIT32(15) |
---|
237 | #define HCLK_PLL_POWER BIT32(16) |
---|
238 | |
---|
239 | /** @} */ |
---|
240 | |
---|
241 | /** |
---|
242 | * @name HCLK Divider Control Register (HCLKDIV_CTRL) |
---|
243 | * |
---|
244 | * @{ |
---|
245 | */ |
---|
246 | |
---|
247 | #define HCLK_DIV_HCLK(val) FIELD32(val, 0, 2) |
---|
248 | #define HCLK_DIV_PERIPH_CLK(val) FIELD32(val, 2, 5) |
---|
249 | #define HCLK_DIV_DDRAM_CLK(val) FIELD32(val, 7, 2) |
---|
250 | |
---|
251 | /** @} */ |
---|
252 | |
---|
253 | /** @} */ |
---|
254 | |
---|
255 | #endif /* LIBBSP_ARM_LPC32XX_LPC32XX_H */ |
---|