at91sam9260reg.h revision 1.2 1 1.2 andvar /* $NetBSD: at91sam9260reg.h,v 1.2 2021/09/17 08:13:06 andvar Exp $ */
2 1.1 aymeric
3 1.1 aymeric /*
4 1.1 aymeric * Copyright (c) 2007 Embedtronics Oy
5 1.1 aymeric * All rights reserved.
6 1.1 aymeric *
7 1.1 aymeric * Redistribution and use in source and binary forms, with or without
8 1.1 aymeric * modification, are permitted provided that the following conditions
9 1.1 aymeric * are met:
10 1.1 aymeric * 1. Redistributions of source code must retain the above copyright
11 1.1 aymeric * notice, this list of conditions and the following disclaimer.
12 1.1 aymeric * 2. Redistributions in binary form must reproduce the above copyright
13 1.1 aymeric * notice, this list of conditions and the following disclaimer in the
14 1.1 aymeric * documentation and/or other materials provided with the distribution.
15 1.1 aymeric *
16 1.1 aymeric * THIS SOFTWARE IS PROVIDED BY ICHIRO FUKUHARA ``AS IS'' AND ANY EXPRESS OR
17 1.1 aymeric * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18 1.1 aymeric * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19 1.1 aymeric * IN NO EVENT SHALL ICHIRO FUKUHARA OR THE VOICES IN HIS HEAD BE LIABLE FOR
20 1.1 aymeric * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 1.1 aymeric * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22 1.1 aymeric * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23 1.1 aymeric * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24 1.1 aymeric * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 1.1 aymeric * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26 1.1 aymeric * SUCH DAMAGE.
27 1.1 aymeric */
28 1.1 aymeric /* Adaptation to AT91SAM9260 by Aymeric Vincent is in the public domain */
29 1.1 aymeric
30 1.1 aymeric #ifndef _AT91SAM9260REG_H_
31 1.1 aymeric #define _AT91SAM9260REG_H_
32 1.1 aymeric
33 1.1 aymeric #include <arm/at91/at91reg.h>
34 1.1 aymeric
35 1.1 aymeric /*
36 1.1 aymeric * Physical memory map for the AT91SAM9260
37 1.1 aymeric */
38 1.1 aymeric
39 1.1 aymeric /*
40 1.1 aymeric * ffff ffff ---------------------------
41 1.1 aymeric * System Controller
42 1.1 aymeric * ffff c000 ---------------------------
43 1.1 aymeric * Peripherals
44 1.1 aymeric * fffa 0000 ---------------------------
45 1.1 aymeric * (not used)
46 1.1 aymeric * 9000 0000 ---------------------------
47 1.1 aymeric * EBI Chip Select 7
48 1.1 aymeric * 8000 0000 ---------------------------
49 1.1 aymeric * EBI Chip Select 6 / CF logic
50 1.1 aymeric * 7000 0000 ---------------------------
51 1.1 aymeric * EBI Chip Select 5 / CF logic
52 1.1 aymeric * 6000 0000 ---------------------------
53 1.1 aymeric * EBI Chip Select 4 / CF logic
54 1.1 aymeric * 5000 0000 ---------------------------
55 1.1 aymeric * EBI Chip Select 3 / NANDFlash
56 1.1 aymeric * 4000 0000 ---------------------------
57 1.1 aymeric * EBI Chip Select 2
58 1.1 aymeric * 3000 0000 ---------------------------
59 1.1 aymeric * EBI Chip Select 1 / SDRAM
60 1.1 aymeric * 2000 0000 ---------------------------
61 1.1 aymeric * EBI Chip Select 0 / BFC
62 1.1 aymeric * 1000 0000 ---------------------------
63 1.1 aymeric * Reserved
64 1.1 aymeric * 0070 0000 ---------------------------
65 1.1 aymeric * LCD User Interface
66 1.1 aymeric * 0060 0000 ---------------------------
67 1.1 aymeric * UHP User Interface
68 1.1 aymeric * 0050 0000 ---------------------------
69 1.1 aymeric * Reserved
70 1.1 aymeric * 0040 0000 ---------------------------
71 1.1 aymeric * SRAM
72 1.1 aymeric * 0030 0000 ---------------------------
73 1.1 aymeric * DTCM
74 1.1 aymeric * 0020 0000 ---------------------------
75 1.1 aymeric * ITCM
76 1.1 aymeric * 0010 0000 ---------------------------
77 1.1 aymeric * Boot memory
78 1.1 aymeric * 0000 0000 ---------------------------
79 1.1 aymeric */
80 1.1 aymeric
81 1.1 aymeric
82 1.1 aymeric /*
83 1.1 aymeric * Virtual memory map for the AT91SAM9260 integrated devices
84 1.1 aymeric *
85 1.1 aymeric * Some device registers are statically mapped on upper address region.
86 1.1 aymeric * because we have to access them before bus_space is initialized.
87 1.2 andvar * Most devices are dynamically mapped by bus_space_map(). In this case,
88 1.1 aymeric * the actual mapped (virtual) address are not cared by device drivers.
89 1.1 aymeric */
90 1.1 aymeric
91 1.1 aymeric /*
92 1.1 aymeric * FFFF FFFF ---------------------------
93 1.1 aymeric * APB bus (1 MB)
94 1.1 aymeric * FFF0 0000 ---------------------------
95 1.1 aymeric * (not used)
96 1.1 aymeric * E000 0000 ---------------------------
97 1.1 aymeric * Kernel text and data
98 1.1 aymeric * C000 0000 ---------------------------
99 1.1 aymeric * (not used)
100 1.1 aymeric * 0000 0000 ---------------------------
101 1.1 aymeric *
102 1.1 aymeric */
103 1.1 aymeric
104 1.1 aymeric #define AT91SAM9260_BOOTMEM_BASE 0x00000000U
105 1.1 aymeric #define AT91SAM9260_BOOTMEM_SIZE 0x00100000U
106 1.1 aymeric
107 1.1 aymeric #define AT91SAM9260_ROM_BASE 0x00100000U
108 1.1 aymeric #define AT91SAM9260_ROM_SIZE 0x00008000U
109 1.1 aymeric
110 1.1 aymeric #define AT91SAM9260_SRAM0_BASE 0x00200000U
111 1.1 aymeric #define AT91SAM9260_SRAM0_SIZE 0x00001000U
112 1.1 aymeric
113 1.1 aymeric #define AT91SAM9260_SRAM1_BASE 0x00300000U
114 1.1 aymeric #define AT91SAM9260_SRAM1_SIZE 0x00001000U
115 1.1 aymeric
116 1.1 aymeric #define AT91SAM9260_UHP_BASE 0x00500000U
117 1.1 aymeric #define AT91SAM9260_UHP_SIZE 0x00004000U
118 1.1 aymeric
119 1.1 aymeric #define AT91SAM9260_CS0_BASE 0x10000000U
120 1.1 aymeric #define AT91SAM9260_CS0_SIZE 0x10000000U
121 1.1 aymeric
122 1.1 aymeric #define AT91SAM9260_CS1_BASE 0x20000000U
123 1.1 aymeric #define AT91SAM9260_CS1_SIZE 0x10000000U
124 1.1 aymeric
125 1.1 aymeric #define AT91SAM9260_SDRAM_BASE AT91SAM9260_CS1_BASE
126 1.1 aymeric
127 1.1 aymeric #define AT91SAM9260_CS2_BASE 0x30000000U
128 1.1 aymeric #define AT91SAM9260_CS2_SIZE 0x10000000U
129 1.1 aymeric
130 1.1 aymeric #define AT91SAM9260_CS3_BASE 0x40000000U
131 1.1 aymeric #define AT91SAM9260_CS3_SIZE 0x10000000U
132 1.1 aymeric
133 1.1 aymeric #define AT91SAM9260_CS4_BASE 0x50000000U
134 1.1 aymeric #define AT91SAM9260_CS4_SIZE 0x10000000U
135 1.1 aymeric
136 1.1 aymeric #define AT91SAM9260_CS5_BASE 0x60000000U
137 1.1 aymeric #define AT91SAM9260_CS5_SIZE 0x10000000U
138 1.1 aymeric
139 1.1 aymeric #define AT91SAM9260_CS6_BASE 0x70000000U
140 1.1 aymeric #define AT91SAM9260_CS6_SIZE 0x10000000U
141 1.1 aymeric
142 1.1 aymeric #define AT91SAM9260_CS7_BASE 0x80000000U
143 1.1 aymeric #define AT91SAM9260_CS7_SIZE 0x10000000U
144 1.1 aymeric
145 1.1 aymeric /* Virtual address for I/O space */
146 1.1 aymeric #define AT91SAM9260_APB_VBASE 0xfff00000U
147 1.1 aymeric #define AT91SAM9260_APB_HWBASE 0xfff00000U
148 1.1 aymeric #define AT91SAM9260_APB_SIZE 0x00100000U
149 1.1 aymeric
150 1.1 aymeric /* Peripherals: */
151 1.1 aymeric #include <arm/at91/at91pdcreg.h>
152 1.1 aymeric
153 1.1 aymeric #define AT91SAM9260_TC0_BASE 0xFFFA0000U
154 1.1 aymeric #define AT91SAM9260_TC1_BASE 0xFFFA0040U
155 1.1 aymeric #define AT91SAM9260_TC2_BASE 0xFFFA0080U
156 1.1 aymeric #define AT91SAM9260_TCB012_BASE 0xFFFA00C0U
157 1.1 aymeric #define AT91SAM9260_TC_SIZE 0x4000U
158 1.1 aymeric //#include <arm/at91/at91tcreg.h>
159 1.1 aymeric
160 1.1 aymeric #define AT91SAM9260_UDP_BASE 0xFFFA4000U
161 1.1 aymeric #define AT91SAM9260_UDP_SIZE 0x4000U
162 1.1 aymeric //#include <arm/at91/at91udpreg.h>
163 1.1 aymeric
164 1.1 aymeric #define AT91SAM9260_MCI_BASE 0xFFFA8000U
165 1.1 aymeric
166 1.1 aymeric #define AT91SAM9260_TWI_BASE 0xFFFAC000U
167 1.1 aymeric #include <arm/at91/at91twireg.h>
168 1.1 aymeric
169 1.1 aymeric #define AT91SAM9260_USART0_BASE 0xFFFB0000U
170 1.1 aymeric #define AT91SAM9260_USART1_BASE 0xFFFB4000U
171 1.1 aymeric #define AT91SAM9260_USART2_BASE 0xFFFB8000U
172 1.1 aymeric #define AT91SAM9260_USART_SIZE 0x4000U
173 1.1 aymeric #include <arm/at91/at91usartreg.h>
174 1.1 aymeric
175 1.1 aymeric #define AT91SAM9260_SSC_BASE 0xFFFBC000U
176 1.1 aymeric #define AT91SAM9260_SSC_SIZE 0x4000U
177 1.1 aymeric //#include <arm/at91/at91sscreg.h>
178 1.1 aymeric
179 1.1 aymeric #define AT91SAM9260_EMAC_BASE 0xFFFC4000U
180 1.1 aymeric #define AT91SAM9260_EMAC_SIZE 0x4000U
181 1.1 aymeric #include <arm/at91/at91emacreg.h>
182 1.1 aymeric
183 1.1 aymeric #define AT91SAM9260_SPI0_BASE 0xFFFC8000U
184 1.1 aymeric #define AT91SAM9260_SPI1_BASE 0xFFFCC000U
185 1.1 aymeric #define AT91SAM9260_SPI_SIZE 0x4000U
186 1.1 aymeric #include <arm/at91/at91spireg.h>
187 1.1 aymeric
188 1.1 aymeric /* system controller: */
189 1.1 aymeric #define AT91SAM9260_SDRAMC_BASE 0xFFFFEA00U
190 1.1 aymeric #define AT91SAM9260_SDRAMC_SIZE 0x200U
191 1.1 aymeric
192 1.1 aymeric #define AT91SAM9260_SMC_BASE 0xFFFFEC00U
193 1.1 aymeric #define AT91SAM9260_SMC_SIZE 0x200U
194 1.1 aymeric
195 1.1 aymeric #define AT91SAM9260_MATRIX_BASE 0xFFFFEE00U
196 1.1 aymeric #define AT91SAM9216_MATRIX_SIZE 0x200U
197 1.1 aymeric
198 1.1 aymeric #define AT91SAM9260_AIC_BASE 0xFFFFF000U
199 1.1 aymeric #define AT91SAM9260_AIC_SIZE 0x200U
200 1.1 aymeric #include <arm/at91/at91aicreg.h>
201 1.1 aymeric
202 1.1 aymeric #define AT91SAM9260_DBGU_BASE 0xFFFFF200U
203 1.1 aymeric #define AT91SAM9260_DBGU_SIZE 0x200U
204 1.1 aymeric #include <arm/at91/at91dbgureg.h>
205 1.1 aymeric
206 1.1 aymeric #define AT91SAM9260_PIOA_BASE 0xFFFFF400U
207 1.1 aymeric #define AT91SAM9260_PIOB_BASE 0xFFFFF600U
208 1.1 aymeric #define AT91SAM9260_PIOC_BASE 0xFFFFF800U
209 1.1 aymeric #define AT91SAM9260_PIO_SIZE 0x200U
210 1.1 aymeric #define AT91_PIO_SIZE AT91SAM9260_PIO_SIZE // for generic AT91 code
211 1.1 aymeric #include <arm/at91/at91pioreg.h>
212 1.1 aymeric
213 1.1 aymeric #define PIOA_READ(_reg) *((volatile uint32_t *)(AT91SAM9260_PIOA_BASE + (_reg)))
214 1.1 aymeric #define PIOA_WRITE(_reg, _val) do {*((volatile uint32_t *)(AT91SAM9260_PIOA_BASE + (_reg))) = (_val);} while (0)
215 1.1 aymeric #define PIOB_READ(_reg) *((volatile uint32_t *)(AT91SAM9260_PIOB_BASE + (_reg)))
216 1.1 aymeric #define PIOB_WRITE(_reg, _val) do {*((volatile uint32_t *)(AT91SAM9260_PIOB_BASE + (_reg))) = (_val);} while (0)
217 1.1 aymeric #define PIOC_READ(_reg) *((volatile uint32_t *)(AT91SAM9260_PIOC_BASE + (_reg)))
218 1.1 aymeric #define PIOC_WRITE(_reg, _val) do {*((volatile uint32_t *)(AT91SAM9260_PIOC_BASE + (_reg))) = (_val);} while (0)
219 1.1 aymeric
220 1.1 aymeric #define AT91SAM9260_PMC_BASE 0xFFFFFC00U
221 1.1 aymeric #define AT91SAM9260_PMC_SIZE 0x100U
222 1.1 aymeric #include <arm/at91/at91pmcreg.h>
223 1.1 aymeric
224 1.1 aymeric #define AT91SAM9260_RSTC_BASE 0xFFFFFD00U
225 1.1 aymeric #define AT91SAM9260_RSTC_SIZE 0x10U
226 1.1 aymeric
227 1.1 aymeric #define AT91SAM9260_SHDWC_BASE 0xFFFFFD10U
228 1.1 aymeric #define AT91SAM9260_SHDWC_SIZE 0x10U
229 1.1 aymeric
230 1.1 aymeric #define AT91SAM9260_RTT_BASE 0xFFFFFD20U
231 1.1 aymeric #define AT91SAM9260_RTT_SIZE 0x10U
232 1.1 aymeric
233 1.1 aymeric #define AT91SAM9260_PIT_BASE 0xFFFFFD30U
234 1.1 aymeric #define AT91SAM9260_PIT_SIZE 0x10U
235 1.1 aymeric
236 1.1 aymeric #define AT91SAM9260_WDT_BASE 0xFFFFFD40U
237 1.1 aymeric #define AT91SAM9260_WDT_SIZE 0x10U
238 1.1 aymeric
239 1.1 aymeric #define AT91SAM9260_GPBR_BASE 0xFFFFFD50U
240 1.1 aymeric #define AT91SAM9260_GPBR_SIZE 0x10U
241 1.1 aymeric
242 1.1 aymeric
243 1.1 aymeric // peripheral identifiers:
244 1.1 aymeric /* peripheral identifiers: */
245 1.1 aymeric enum {
246 1.1 aymeric PID_FIQ = 0, /* 0 */
247 1.1 aymeric PID_SYSIRQ, /* 1 */
248 1.1 aymeric PID_PIOA, /* 2 */
249 1.1 aymeric PID_PIOB, /* 3 */
250 1.1 aymeric PID_PIOC, /* 4 */
251 1.1 aymeric PID_ADC, /* 5 */
252 1.1 aymeric PID_US0, /* 6 */
253 1.1 aymeric PID_US1, /* 7 */
254 1.1 aymeric PID_US2, /* 8 */
255 1.1 aymeric PID_MCI, /* 9 */
256 1.1 aymeric PID_UDP, /* 10 */
257 1.1 aymeric PID_TWI, /* 11 */
258 1.1 aymeric PID_SPI0, /* 12 */
259 1.1 aymeric PID_SPI1, /* 13 */
260 1.1 aymeric PID_SSC, /* 14 */
261 1.1 aymeric
262 1.1 aymeric
263 1.1 aymeric PID_TC0 = 17, /* 17 */
264 1.1 aymeric PID_TC1, /* 18 */
265 1.1 aymeric PID_TC2, /* 19 */
266 1.1 aymeric PID_UHP, /* 20 */
267 1.1 aymeric PID_EMAC, /* 21 */
268 1.1 aymeric PID_ISI, /* 22 */
269 1.1 aymeric PID_US3, /* 23 */
270 1.1 aymeric PID_US4, /* 24 */
271 1.1 aymeric PID_US5, /* 25 */
272 1.1 aymeric PID_TC3, /* 26 */
273 1.1 aymeric PID_TC4, /* 27 */
274 1.1 aymeric PID_TC5, /* 28 */
275 1.1 aymeric PID_IRQ0, /* 29 */
276 1.1 aymeric PID_IRQ1, /* 30 */
277 1.1 aymeric PID_IRQ2, /* 31 */
278 1.1 aymeric };
279 1.1 aymeric
280 1.1 aymeric #endif /* _AT91SAM9260REG_H_ */
281