source: rtems/c/src/lib/libbsp/arm/lpc32xx/include/lpc32xx.h @ bc74b337

4.104.115
Last change on this file since bc74b337 was bc74b337, checked in by Sebastian Huber <sebastian.huber@…>, on 05/20/10 at 14:52:32

2010-05-20 Sebastian Huber <sebastian.huber@…>

  • configure.ac: Fixed BSP option.
  • include/lpc32xx.h, startup/bspstarthooks.c: Added PLL setup.
  • Property mode set to 100644
File size: 9.1 KB
Line 
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 */
Note: See TracBrowser for help on using the repository browser.