ixp12x0reg.h revision 1.8 1 1.8 andvar /* $NetBSD: ixp12x0reg.h,v 1.8 2021/08/02 12:56:22 andvar Exp $ */
2 1.1 ichiro
3 1.1 ichiro /*
4 1.3 ichiro * Copyright (c) 2002, 2003
5 1.1 ichiro * Ichiro FUKUHARA <ichiro (at) ichiro.org>.
6 1.1 ichiro * All rights reserved.
7 1.1 ichiro *
8 1.1 ichiro * Redistribution and use in source and binary forms, with or without
9 1.1 ichiro * modification, are permitted provided that the following conditions
10 1.1 ichiro * are met:
11 1.1 ichiro * 1. Redistributions of source code must retain the above copyright
12 1.1 ichiro * notice, this list of conditions and the following disclaimer.
13 1.1 ichiro * 2. Redistributions in binary form must reproduce the above copyright
14 1.1 ichiro * notice, this list of conditions and the following disclaimer in the
15 1.1 ichiro * documentation and/or other materials provided with the distribution.
16 1.1 ichiro *
17 1.1 ichiro * THIS SOFTWARE IS PROVIDED BY ICHIRO FUKUHARA ``AS IS'' AND ANY EXPRESS OR
18 1.1 ichiro * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 1.1 ichiro * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 1.1 ichiro * IN NO EVENT SHALL ICHIRO FUKUHARA OR THE VOICES IN HIS HEAD BE LIABLE FOR
21 1.1 ichiro * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22 1.1 ichiro * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23 1.1 ichiro * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24 1.1 ichiro * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 1.1 ichiro * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26 1.1 ichiro * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 1.1 ichiro * SUCH DAMAGE.
28 1.1 ichiro */
29 1.1 ichiro
30 1.1 ichiro #ifndef _IXP12X0REG_H_
31 1.1 ichiro #define _IXP12X0REG_H_
32 1.1 ichiro
33 1.1 ichiro /*
34 1.1 ichiro * Physical memory map for the Intel IXP12X0
35 1.1 ichiro */
36 1.1 ichiro
37 1.1 ichiro /*
38 1.1 ichiro * FFFF FFFF ---------------------------
39 1.1 ichiro * Device 6
40 1.1 ichiro * SDRAM
41 1.1 ichiro * FF00 0000 - FF00 0014
42 1.1 ichiro * SDRAM Control Register
43 1.1 ichiro * D000 0000 - DFFF FFFF
44 1.1 ichiro * Prefetch 256MB
45 1.1 ichiro * C000 0000 - CFFF FFFF
46 1.1 ichiro * non-Prefetch 256MB
47 1.1 ichiro * C000 0000 ---------------------------
48 1.1 ichiro * Device 5
49 1.1 ichiro * AMBA Translation (ATU)
50 1.1 ichiro * B000 0000 ---------------------------
51 1.1 ichiro * Device 4
52 1.1 ichiro * Reserved
53 1.1 ichiro * A000 0000 ---------------------------
54 1.1 ichiro * Device 3
55 1.1 ichiro * StrongARM Core System
56 1.1 ichiro * 9000 0000 ---------------------------
57 1.1 ichiro * Device 2
58 1.1 ichiro * Reserved
59 1.1 ichiro * 8000 0000 ---------------------------
60 1.1 ichiro * Device 1
61 1.1 ichiro * PCI UNIT
62 1.1 ichiro * 6000 0000 - 7FFF FFFF
63 1.1 ichiro * PCI Memory Cycle Access
64 1.1 ichiro * 5400 0000 - 5400 FFFF
65 1.1 ichiro * PCI I/O Cycle Access
66 1.3 ichiro * 5300 0000 - 53BF FFFF
67 1.1 ichiro * PCI Type0 Configuration Cycle Access
68 1.1 ichiro * 5200 0000 - 52FF FFFF
69 1.1 ichiro * PCI Type1 Configuration Cycle Access
70 1.1 ichiro * 4200 0000 - 4200 03FF
71 1.1 ichiro * Local PCI Configuration Space
72 1.1 ichiro * 4000 0000 ---------------------------
73 1.1 ichiro * Device 0
74 1.1 ichiro * SRAM UNIT
75 1.1 ichiro * 0000 0000 ---------------------------
76 1.1 ichiro */
77 1.1 ichiro
78 1.1 ichiro
79 1.1 ichiro /*
80 1.1 ichiro * Virtual memory map for the Intel IXP12X0 integrated devices
81 1.3 ichiro *
82 1.3 ichiro * IXP12x0 processors have many device registers at very lower addresses.
83 1.3 ichiro * To make user process space wider, we map the registers at lower address
84 1.5 wiz * to upper address using address translation of virtual memory system.
85 1.3 ichiro *
86 1.3 ichiro * Some device registers are staticaly mapped on upper address region.
87 1.3 ichiro * because we have to access them before bus_space is initialized.
88 1.3 ichiro * Most device is dinamicaly mapped by bus_space_map(). In this case,
89 1.3 ichiro * the actual mapped (virtual) address are not cared by device drivers.
90 1.1 ichiro */
91 1.1 ichiro
92 1.1 ichiro /*
93 1.1 ichiro * FFFF FFFF ---------------------------
94 1.1 ichiro *
95 1.3 ichiro * F400 0000 ---------------------------
96 1.3 ichiro * PCI Type 0 Configuration Cycle Access
97 1.3 ichiro * VA F300 0000 == PA 5300 0000 (16Mbyte)
98 1.3 ichiro * F300 0000 ---------------------------
99 1.3 ichiro * PCI Type 1 Configuration Cycle Access
100 1.3 ichiro * VA F200 0000 == PA 5200 0000 (16Mbyte)
101 1.3 ichiro * F200 0000 ---------------------------
102 1.3 ichiro * not used
103 1.4 igy * F020 0000 ---------------------------
104 1.4 igy * PCI Registers Accessible Through I/O
105 1.4 igy * VA F010 0000 == PA 5400 0000 (1Mbyte)
106 1.4 igy * F010 0000 ---------------------------
107 1.4 igy * not used
108 1.1 ichiro * F001 1000 ---------------------------
109 1.1 ichiro * PCI Registers Accessible Through StrongARM Core
110 1.1 ichiro * VA F001 0000 == PA 4200 0000 (4kbyte)
111 1.1 ichiro * F001 0300 - F001 036F TIMER
112 1.3 ichiro * F001 0200 - F001 0293 PCI_FIQ
113 1.3 ichiro * F001 0180 - F001 0193 PCI_IRQ
114 1.1 ichiro * F001 0000 ---------------------------
115 1.1 ichiro * StrongARM System and Peripheral Registers
116 1.4 igy * VA F000 0000 == PA 9000 0000 (64kbyte)
117 1.1 ichiro * F000 3400 - F000 3C03 UART
118 1.1 ichiro * F000 3400 - F000 3C03 UART
119 1.1 ichiro * F000 2000 - F000 3003 RTC
120 1.1 ichiro * F000 1C00 - F000 1C03 GPIO_DATA
121 1.1 ichiro * F000 1800 - F000 1C03 GPIO
122 1.1 ichiro * F000 1400 - F000 1403 IRQ
123 1.1 ichiro * F000 1000 - F000 1003 FIQ
124 1.8 andvar * F000 0C00 - F000 0C03 PLL_CFG (not used at this address)
125 1.1 ichiro * F000 0000 ---------------------------
126 1.1 ichiro * Kernel text and data
127 1.1 ichiro * C000 0000 ---------------------------
128 1.1 ichiro * L2 tables for user process (XXX should be fixed)
129 1.3 ichiro * 8000 0000 ---------------------------
130 1.3 ichiro * PCI Registers Accessible Through Memory
131 1.3 ichiro * VA 6000 0000 == PA 6000 0000 (512Mbyte)
132 1.1 ichiro * 6000 0000 ---------------------------
133 1.1 ichiro * 5400 0000 ---------------------------
134 1.1 ichiro * 0000 0000 ---------------------------
135 1.1 ichiro *
136 1.1 ichiro */
137 1.1 ichiro
138 1.1 ichiro /* Virtual address for I/O space */
139 1.2 ichiro #define IXP12X0_IO_VBASE 0xf0000000UL
140 1.1 ichiro
141 1.1 ichiro /* StrongARM System and Peripheral Registers */
142 1.4 igy #define IXP12X0_SYS_VBASE 0xf0000000UL
143 1.2 ichiro #define IXP12X0_SYS_HWBASE 0x90000000UL
144 1.2 ichiro #define IXP12X0_SYS_SIZE 0x00010000UL /* 64Kbyte */
145 1.1 ichiro
146 1.1 ichiro #define IXP12X0_PLL_CFG (IXP12X0_IO_VBASE + 0x0c00)
147 1.1 ichiro #define IXP12X0_PLL_CFG_CCF 0x1f
148 1.1 ichiro
149 1.1 ichiro /* PCI Registers Accessible Through StrongARM Core */
150 1.4 igy #define IXP12X0_PCI_VBASE 0xf0010000UL
151 1.2 ichiro #define IXP12X0_PCI_HWBASE 0x42000000UL
152 1.2 ichiro #define IXP12X0_PCI_SIZE 0x00001000UL /* 4Kbyte */
153 1.1 ichiro
154 1.2 ichiro /* PCI I/O Space */
155 1.4 igy #define IXP12X0_PCI_IO_VBASE 0xf0100000UL
156 1.4 igy #define IXP12X0_PCI_IO_HWBASE 0x54000000UL
157 1.3 ichiro #define IXP12X0_PCI_IO_SIZE 0x00100000UL /* 1Mbyte */
158 1.1 ichiro
159 1.2 ichiro /* PCI Memory Space */
160 1.2 ichiro #define IXP12X0_PCI_MEM_HWBASE 0x60000000UL /* VA == PA */
161 1.2 ichiro #define IXP12X0_PCI_MEM_VBASE IXP12X0_PCI_MEM_HWBASE
162 1.2 ichiro #define IXP12X0_PCI_MEM_SIZE 0x20000000UL
163 1.1 ichiro
164 1.1 ichiro /* PCI Type0/1 Configuration address */
165 1.3 ichiro #define IXP12X0_PCI_TYPE0_HWBASE 0x53000000UL
166 1.3 ichiro #define IXP12X0_PCI_TYPE0_VBASE 0xf3000000UL
167 1.3 ichiro #define IXP12X0_PCI_TYPE0_SIZE 0x01000000UL /* 16MB */
168 1.3 ichiro
169 1.3 ichiro #define IXP12X0_PCI_TYPE1_HWBASE 0x52000000UL
170 1.3 ichiro #define IXP12X0_PCI_TYPE1_VBASE 0xf2000000UL
171 1.3 ichiro #define IXP12X0_PCI_TYPE1_SIZE 0x01000000UL /* 16MB */
172 1.1 ichiro
173 1.1 ichiro /*
174 1.1 ichiro * SlowPort I/O Register
175 1.1 ichiro */
176 1.1 ichiro /* see. arch/evbarm/ixm1200/ixm1200reg.h */
177 1.1 ichiro
178 1.1 ichiro /* Physical register base addresses */
179 1.1 ichiro /* #define IXP12X0_GPIO_VBASE */
180 1.2 ichiro #define IXP12X0_GPIO_HWBASE 0x90001800UL
181 1.2 ichiro #define IXP12X0_GPIO_SIZE 0x00000800UL
182 1.1 ichiro
183 1.1 ichiro /* Interrupts */
184 1.1 ichiro #define IXP12X0_FIQ_VBASE (IXP12X0_IO_VBASE + 0x1000)
185 1.2 ichiro #define IXP12X0_FIQ_HWBASE 0x90001000UL
186 1.2 ichiro #define IXP12X0_FIQ_SIZE 0x00000004UL
187 1.1 ichiro #define IXP12X0_IRQ_VBASE (IXP12X0_IO_VBASE + 0x1400)
188 1.2 ichiro #define IXP12X0_IRQ_HWBASE 0x90001400UL
189 1.2 ichiro #define IXP12X0_IRQ_SIZE 0x00000004UL
190 1.1 ichiro
191 1.1 ichiro /*
192 1.1 ichiro * Interrupt index assignment
193 1.1 ichiro *
194 1.1 ichiro *
195 1.1 ichiro * FIQ/IRQ bitmap in "StrongARM System and Peripheral Registers"
196 1.1 ichiro *
197 1.1 ichiro * 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
198 1.1 ichiro * bit 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
199 1.1 ichiro * +-+-------------------------------------------+-+-+-+-+-+-+-+---+
200 1.1 ichiro * |M| |U|S|R|S|U|C|P| |
201 1.1 ichiro * |B| |A|D|T|R|E|I|C| |
202 1.1 ichiro * |Z| RES |R|R|C|A|N|N|I|RES|
203 1.1 ichiro * | | |T|A| |M|G|T| | |
204 1.1 ichiro * | | | |M| | | | | | |
205 1.1 ichiro * +-+-------------------------------------------+-+-+-+-+-+-+-+---+
206 1.1 ichiro * 3
207 1.1 ichiro * index 1 8 7 6 5 4 3 2
208 1.1 ichiro *
209 1.1 ichiro *
210 1.1 ichiro * We Map a software interrupt queue index to the unused bits in the
211 1.1 ichiro * IRQ/FIQ registers. (in "StrongARM System and Peripheral Registers")
212 1.1 ichiro *
213 1.1 ichiro * XXX will need to revisit this if those bits are ever used in future
214 1.1 ichiro * steppings).
215 1.1 ichiro *
216 1.1 ichiro * 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
217 1.1 ichiro * bit 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
218 1.1 ichiro * +-+-+-+-+-+-----------------------------------+-+-+-+-+-+-+-+---+
219 1.1 ichiro * |M|S|C|N|S| |U|S|R|S|U|C|P| |
220 1.1 ichiro * |B|O|L|E|E| |A|D|T|R|E|I|C| |
221 1.1 ichiro * |Z|F|O|T|R| RES |R|R|C|A|N|N|I|RES|
222 1.1 ichiro * | |T|C| |I| |T|A| |M|G|T| | |
223 1.1 ichiro * | | |K| |A| | |M| | | | | | |
224 1.1 ichiro * | | | | |L| | | | | | | | | |
225 1.1 ichiro * +-+-+-+-+-+-----------------------------------+-+-+-+-+-+-+-+---+
226 1.1 ichiro * 3 3 2 2 2
227 1.1 ichiro * index 1 0 9 8 7 8 7 6 5 4 3 2
228 1.1 ichiro *
229 1.1 ichiro */
230 1.1 ichiro
231 1.1 ichiro #define NIRQ 64
232 1.1 ichiro #define SYS_NIRQ 32
233 1.1 ichiro
234 1.1 ichiro #define IXP12X0_INTR_MBZ 31
235 1.1 ichiro #define IXP12X0_INTR_bit30 30
236 1.1 ichiro #define IXP12X0_INTR_bit29 29
237 1.1 ichiro #define IXP12X0_INTR_bit28 28
238 1.1 ichiro #define IXP12X0_INTR_bit27 27
239 1.1 ichiro #define IXP12X0_INTR_bit26 26
240 1.1 ichiro #define IXP12X0_INTR_bit25 25
241 1.1 ichiro #define IXP12X0_INTR_bit24 24
242 1.1 ichiro #define IXP12X0_INTR_bit23 23
243 1.1 ichiro #define IXP12X0_INTR_bit22 22
244 1.1 ichiro #define IXP12X0_INTR_bit21 21
245 1.1 ichiro #define IXP12X0_INTR_bit20 20
246 1.1 ichiro #define IXP12X0_INTR_bit19 19
247 1.1 ichiro #define IXP12X0_INTR_bit18 18
248 1.1 ichiro #define IXP12X0_INTR_bit17 17
249 1.1 ichiro #define IXP12X0_INTR_bit16 16
250 1.1 ichiro #define IXP12X0_INTR_bit15 15
251 1.1 ichiro #define IXP12X0_INTR_bit14 14
252 1.1 ichiro #define IXP12X0_INTR_bit13 13
253 1.1 ichiro #define IXP12X0_INTR_bit12 12
254 1.1 ichiro #define IXP12X0_INTR_bit11 11
255 1.1 ichiro #define IXP12X0_INTR_bit10 10
256 1.1 ichiro #define IXP12X0_INTR_bit9 9
257 1.1 ichiro #define IXP12X0_INTR_UART 8
258 1.1 ichiro #define IXP12X0_INTR_SDRAM 7
259 1.1 ichiro #define IXP12X0_INTR_RTC 6
260 1.1 ichiro #define IXP12X0_INTR_SRAM 5
261 1.1 ichiro #define IXP12X0_INTR_UENG 4
262 1.1 ichiro #define IXP12X0_INTR_CINT 3
263 1.1 ichiro #define IXP12X0_INTR_PCI 2
264 1.1 ichiro #define IXP12X0_INTR_bit1 1
265 1.1 ichiro #define IXP12X0_INTR_bit0 0
266 1.1 ichiro
267 1.1 ichiro #define IXP12X0_INTR_MASK \
268 1.1 ichiro ((1U << IXP12X0_INTR_MBZ) \
269 1.1 ichiro | (1U << IXP12X0_INTR_UART) \
270 1.1 ichiro | (1U << IXP12X0_INTR_SDRAM) \
271 1.1 ichiro | (1U << IXP12X0_INTR_RTC) \
272 1.1 ichiro | (1U << IXP12X0_INTR_SRAM) \
273 1.1 ichiro | (1U << IXP12X0_INTR_UENG) \
274 1.1 ichiro | (1U << IXP12X0_INTR_CINT))
275 1.1 ichiro
276 1.1 ichiro #endif /* _IXP12X0REG_H_ */
277