xref: /netbsd-src/sys/arch/arm/ep93xx/ep93xxreg.h (revision 27fd3f6531803adac12382d7643a9a492b576601)
1 /*	$NetBSD: ep93xxreg.h,v 1.6 2006/02/13 12:13:20 hamajima Exp $ */
2 
3 /*
4  * Copyright (c) 2004 Jesse Off
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  * 1. Redistributions of source code must retain the above copyright
11  *    notice, this list of conditions and the following disclaimer.
12  * 2. Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  * 3. All advertising materials mentioning features or use of this software
16  *    must display the following acknowledgement:
17  *	This product includes software developed by Ichiro FUKUHARA.
18  * 4. The name of the company nor the name of the author may be used to
19  *    endorse or promote products derived from this software without specific
20  *    prior written permission.
21  *
22  * THIS SOFTWARE IS PROVIDED BY ICHIRO FUKUHARA ``AS IS'' AND ANY EXPRESS OR
23  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
24  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
25  * IN NO EVENT SHALL ICHIRO FUKUHARA OR THE VOICES IN HIS HEAD BE LIABLE FOR
26  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32  * SUCH DAMAGE.
33  */
34 
35 #ifndef _EP93XXREG_H_
36 #define _EP93XXREG_H_
37 
38 /*
39  * Physical memory map for the Cirrus Logic EP93XX
40  */
41 
42 /*
43  * FFFF FFFF ---------------------------
44  *            Device 12
45  *            External SMC CS#0 ROM/SRAM
46  * F000 0000 ---------------------------
47  *            Device 11
48  *            SDRAM CS#2
49  * E000 0000 ---------------------------
50  *            Device 10
51  *            SDRAM CS#1
52  * D000 0000 ---------------------------
53  *            Device 9
54  *            SDRAM CS#0
55  * C000 0000 ---------------------------
56  *            Device 8
57  *            Not used
58  * 9000 0000 ---------------------------
59  *            Device 7
60  *            EP93XX System Registers
61  *              8080 0000 - 8094 FFFF
62  *                  APB Mapped Registers
63  *              8010 0000 - 807F FFFF
64  *                  Reserved
65  *              8000 0000 - 800F FFFF
66  *                  AHB Mapped Registers
67  * 8000 0000 ---------------------------
68  *            Device 6
69  *            External SMC CS#7 ROM/SRAM
70  * 7000 0000 ---------------------------
71  *            Device 5
72  *            External SMC CS#6 ROM/SRAM
73  * 6000 0000 ---------------------------
74  *            Device 4
75  *            PCMCIA/CompactFlash
76  *              5000 0000 - 5fff ffff
77  *                  Reserved
78  *              4c00 0000 - 4fff ffff
79  *                  Slot0 Memory space
80  *              4800 0000 - 4bff ffff
81  *                  Slot0 Attribute space
82  *              4400 0000 - 47ff ffff
83  *                  Reserved
84  *              4000 0000 - 43ff ffff
85  *                  Slot0 I/O space
86  * 4000 0000 ---------------------------
87  *            Device 3
88  *            External SMC CS#3 ROM/SRAM
89  * 3000 0000 ---------------------------
90  *            Device 2
91  *            External SMC CS#2 ROM/SRAM
92  * 2000 0000 ---------------------------
93  *            Device 1
94  *            External SMC CS#1 ROM/SRAM
95  * 1000 0000 ---------------------------
96  *            Device 0
97  *            SDRAM CS#3
98  * 0000 0000 ---------------------------
99  */
100 
101 
102 /*
103  * Virtual memory map for the Cirrus Logic EP93XX integrated devices
104  *
105  * Some device registers are staticaly mapped on upper address region.
106  * because we have to access them before bus_space is initialized.
107  * Most device is dynamicaly mapped by bus_space_map().  In this case,
108  * the actual mapped (virtual) address are not cared by device drivers.
109  */
110 
111 /*
112  * FFFF FFFF ---------------------------
113  *            not used
114  * F030 0000 ---------------------------
115  *            APB bus (2Mbyte)
116  * F010 0000 ---------------------------
117  *            AHB bus (1Mbyte)
118  * F000 0000 ---------------------------
119  *            PCMCIA slot0 space
120  * E000 0000 ---------------------------
121  *            Kernel text and data
122  * C000 0000 ---------------------------
123  * 0000 0000 ---------------------------
124  *
125  */
126 
127 /* Virtual address for I/O space */
128 #define	EP93XX_IO_VBASE		0xf0000000UL
129 
130 /* EP93xx System and Peripheral Registers */
131 #define	EP93XX_AHB_VBASE	0xf0000000UL
132 #define	EP93XX_AHB_HWBASE	0x80000000UL
133 #define	EP93XX_AHB_SIZE		0x00100000UL	/* 1Mbyte */
134 #define  EP93XX_AHB_VIC1	0x000b0000UL
135 #define  EP93XX_AHB_VIC2	0x000c0000UL
136 #define   EP93XX_VIC_IRQStatus	0x00000000UL
137 #define   EP93XX_VIC_FIQStatus	0x00000004UL
138 #define   EP93XX_VIC_RawIntr	0x00000008UL
139 #define   EP93XX_VIC_IntSelect	0x0000000cUL
140 #define   EP93XX_VIC_IntEnable	0x00000010UL
141 #define   EP93XX_VIC_IntEnClear	0x00000014UL
142 #define   EP93XX_VIC_SoftInt	0x00000018UL
143 #define   EP93XX_VIC_SoftIntClear	0x0000001cUL
144 #define   EP93XX_VIC_Protection	0x00000020UL
145 #define   EP93XX_VIC_VectAddr	0x00000030UL
146 #define   EP93XX_VIC_DefVectAddr	0x00000034UL
147 #define   EP93XX_VIC_VectAddr0	0x00000100UL
148 #define   EP93XX_VIC_VectCntl0	0x00000200UL
149 #define   EP93XX_VIC_PeriphID0	0x00000fe0UL
150 #define  EP93XX_AHB_SMC		0x00080000UL
151 
152 #define	EP93XX_APB_VBASE	0xf0100000UL
153 #define	EP93XX_APB_HWBASE	0x80800000UL
154 #define	EP93XX_APB_SIZE		0x00200000UL	/* 2Mbyte */
155 #define  EP93XX_APB_GPIO	0x00040000UL
156 #define  EP93XX_APB_GPIO_SIZE	0x000000d0UL
157 #define  EP93XX_APB_SSP		0x000a0000UL
158 #define  EP93XX_APB_SSP_SIZE	0x00000018UL
159 #define   EP93XX_SSP_SSPCR0	0x00000000UL
160 #define   EP93XX_SSP_SSPCR1	0x00000004UL
161 #define   EP93XX_SSP_SSPDR	0x00000008UL
162 #define   EP93XX_SSP_SSPSR	0x0000000cUL
163 #define   EP93XX_SSP_SSPCPSR	0x00000010UL
164 #define   EP93XX_SSP_SSPIIR	0x00000014UL
165 #define   EP93XX_SSP_SSPICR	0x00000014UL
166 #define  EP93XX_APB_SYSCON	0x00130000UL
167 #define  EP93XX_APB_SYSCON_SIZE	0x000000c0UL
168 #define   EP93XX_SYSCON_PwrSts	0x00000000UL
169 #define   EP93XX_SYSCON_PwrCnt	0x00000004UL
170 #define    PwrCnt_UARTBAUD	0x20000000UL
171 #define   EP93XX_SYSCON_TEOI	0x00000018UL
172 #define   EP93XX_SYSCON_ClkSet1	0x00000020UL
173 #define   EP93XX_SYSCON_ClkSet2	0x00000024UL
174 #define   EP93XX_SYSCON_DeviceCfg	0x00000080UL
175 #define   EP93XX_SYSCON_ChipID	0x00000094UL
176 #define  EP93XX_APB_TIMERS	0x00010000UL
177 #define  EP93XX_APB_UART1	0x000c0000UL
178 #define  EP93XX_APB_UART2	0x000d0000UL
179 #define  EP93XX_APB_UART_SIZE	0x00000220UL
180 #define   EP93XX_UART_Flag	0x00000018UL
181 #define   EP93XX_UART_Data	0x00000000UL
182 #define  EP93XX_APB_RTC		0x00120000UL
183 #define  EP93XX_APB_RTC_SIZE	0x00000112UL
184 #define  EP93XX_APB_WDOG	0x00140000UL
185 #define  EP93XX_APB_WDOG_SIZE	0x00000008UL
186 
187 /* EP93xx PCMCIA space */
188 #define	EP93XX_PCMCIA0_VBASE	0xe0000000UL
189 #define	EP93XX_PCMCIA0_HWBASE	0x40000000UL
190 #define	EP93XX_PCMCIA_SIZE	0x10000000UL
191 #define  EP93XX_PCMCIA_IO	0x00000000UL
192 #define  EP93XX_PCMCIA_IO_SIZE	0x04000000UL
193 #define  EP93XX_PCMCIA_ATTRIBUTE	0x08000000UL
194 #define  EP93XX_PCMCIA_ATTRIBUTE_SIZE	0x04000000UL
195 #define  EP93XX_PCMCIA_COMMON	0x0c000000UL
196 #define  EP93XX_PCMCIA_COMMON_SIZE	0x04000000UL
197 
198 #define NIRQ			64
199 #define VIC_NIRQ		32
200 
201 #define	EP93XX_INTR_bit31	31
202 #define	EP93XX_INTR_bit30	30
203 #define	EP93XX_INTR_bit29	29
204 #define	EP93XX_INTR_bit28	28
205 #define	EP93XX_INTR_bit27	27
206 #define	EP93XX_INTR_bit26	26
207 #define	EP93XX_INTR_bit25	25
208 #define	EP93XX_INTR_bit24	24
209 #define	EP93XX_INTR_bit23	23
210 #define	EP93XX_INTR_bit22	22
211 #define	EP93XX_INTR_bit21	21
212 #define	EP93XX_INTR_bit20	20
213 #define	EP93XX_INTR_bit19	19
214 #define	EP93XX_INTR_bit18	18
215 #define	EP93XX_INTR_bit17	17
216 #define	EP93XX_INTR_bit16	16
217 #define	EP93XX_INTR_bit15	15
218 #define	EP93XX_INTR_bit14	14
219 #define	EP93XX_INTR_bit13	13
220 #define	EP93XX_INTR_bit12	12
221 #define	EP93XX_INTR_bit11	11
222 #define	EP93XX_INTR_bit10	10
223 #define	EP93XX_INTR_bit9	9
224 #define	EP93XX_INTR_bit8	8
225 #define	EP93XX_INTR_bit7	7
226 #define	EP93XX_INTR_bit6	6
227 #define	EP93XX_INTR_bit5	5
228 #define	EP93XX_INTR_bit4	4
229 #define	EP93XX_INTR_bit3	3
230 #define	EP93XX_INTR_bit2	2
231 #define	EP93XX_INTR_bit1	1
232 #define	EP93XX_INTR_bit0	0
233 
234 #endif /* _EP93XXREG_H_ */
235