vme_tworeg.h revision 1.1 1 1.1 scw /* $NetBSD: vme_tworeg.h,v 1.1 2002/02/12 20:38:51 scw Exp $ */
2 1.1 scw
3 1.1 scw /*-
4 1.1 scw * Copyright (c) 1999, 2002 The NetBSD Foundation, Inc.
5 1.1 scw * All rights reserved.
6 1.1 scw *
7 1.1 scw * This code is derived from software contributed to The NetBSD Foundation
8 1.1 scw * by Steve C. Woodford.
9 1.1 scw *
10 1.1 scw * Redistribution and use in source and binary forms, with or without
11 1.1 scw * modification, are permitted provided that the following conditions
12 1.1 scw * are met:
13 1.1 scw * 1. Redistributions of source code must retain the above copyright
14 1.1 scw * notice, this list of conditions and the following disclaimer.
15 1.1 scw * 2. Redistributions in binary form must reproduce the above copyright
16 1.1 scw * notice, this list of conditions and the following disclaimer in the
17 1.1 scw * documentation and/or other materials provided with the distribution.
18 1.1 scw * 3. All advertising materials mentioning features or use of this software
19 1.1 scw * must display the following acknowledgement:
20 1.1 scw * This product includes software developed by the NetBSD
21 1.1 scw * Foundation, Inc. and its contributors.
22 1.1 scw * 4. Neither the name of The NetBSD Foundation nor the names of its
23 1.1 scw * contributors may be used to endorse or promote products derived
24 1.1 scw * from this software without specific prior written permission.
25 1.1 scw *
26 1.1 scw * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
27 1.1 scw * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
28 1.1 scw * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29 1.1 scw * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
30 1.1 scw * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
31 1.1 scw * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
32 1.1 scw * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
33 1.1 scw * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
34 1.1 scw * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
35 1.1 scw * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
36 1.1 scw * POSSIBILITY OF SUCH DAMAGE.
37 1.1 scw */
38 1.1 scw
39 1.1 scw #ifndef _MVME_VME_TWOREG_H
40 1.1 scw #define _MVME_VME_TWOREG_H
41 1.1 scw
42 1.1 scw /*
43 1.1 scw * Where the VMEchip2's registers live relative to the start
44 1.1 scw * of the VMEChip2's register space.
45 1.1 scw */
46 1.1 scw #define VME2REG_LCSR_OFFSET 0x0000
47 1.1 scw #define VME2REG_GCSR_OFFSET 0x0100
48 1.1 scw
49 1.1 scw
50 1.1 scw /*
51 1.1 scw * Register map of the Type 2 VMEchip found on many MVME boards.
52 1.1 scw * Note: Only responds to D32 accesses.
53 1.1 scw */
54 1.1 scw
55 1.1 scw /*
56 1.1 scw * Slave window configuration registers
57 1.1 scw */
58 1.1 scw #define VME2_SLAVE_WINDOWS 2
59 1.1 scw #define VME2LCSR_SLAVE_ADDRESS(x) (0x00 + ((x) * 4))
60 1.1 scw #define VME2_SLAVE_ADDRESS_START_SHIFT 16
61 1.1 scw #define VME2_SLAVE_ADDRESS_START_MASK (0x0000ffffu)
62 1.1 scw #define VME2_SLAVE_ADDRESS_END_SHIFT 0
63 1.1 scw #define VME2_SLAVE_ADDRESS_END_MASK (0xffff0000u)
64 1.1 scw
65 1.1 scw #define VME2LCSR_SLAVE_TRANS(x) (0x08 + ((x) * 4))
66 1.1 scw #define VME2_SLAVE_TRANS_SELECT_SHIFT 16
67 1.1 scw #define VME2_SLAVE_TRANS_SELECT_MASK (0x0000ffffu)
68 1.1 scw #define VME2_SLAVE_TRANS_ADDRESS_SHIFT 0
69 1.1 scw #define VME2_SLAVE_TRANS_ADDRESS_MASK (0xffff0000u)
70 1.1 scw
71 1.1 scw #define VME2LCSR_SLAVE_CTRL 0x10
72 1.1 scw #define VME2_SLAVE_AMSEL_DAT(x) (1u << (0 + ((x) * 16)))
73 1.1 scw #define VME2_SLAVE_AMSEL_PGM(x) (1u << (1 + ((x) * 16)))
74 1.1 scw #define VME2_SLAVE_AMSEL_BLK(x) (1u << (2 + ((x) * 16)))
75 1.1 scw #define VME2_SLAVE_AMSEL_BLKD64(x) (1u << (3 + ((x) * 16)))
76 1.1 scw #define VME2_SLAVE_AMSEL_A24(x) (1u << (4 + ((x) * 16)))
77 1.1 scw #define VME2_SLAVE_AMSEL_A32(x) (1u << (5 + ((x) * 16)))
78 1.1 scw #define VME2_SLAVE_AMSEL_USR(x) (1u << (6 + ((x) * 16)))
79 1.1 scw #define VME2_SLAVE_AMSEL_SUP(x) (1u << (7 + ((x) * 16)))
80 1.1 scw #define VME2_SLAVE_CTRL_WP(x) (1u << (8 + ((x) * 16)))
81 1.1 scw #define VME2_SLAVE_CTRL_SNOOP_INHIBIT(x) (0u << (9 + ((x) * 16)))
82 1.1 scw #define VME2_SLAVE_CTRL_SNOOP_WRSINK(x) (1u << (9 + ((x) * 16)))
83 1.1 scw #define VME2_SLAVE_CTRL_SNOOP_WRINVAL(x) (2u << (9 + ((x) * 16)))
84 1.1 scw #define VME2_SLAVE_CTRL_ADDER(x) (1u << (11 + ((x) * 16)))
85 1.1 scw
86 1.1 scw /*
87 1.1 scw * Master window address control registers
88 1.1 scw */
89 1.1 scw #define VME2_MASTER_WINDOWS 4
90 1.1 scw #define VME2LCSR_MASTER_ADDRESS(x) (0x14 + ((x) * 4))
91 1.1 scw #define VME2_MAST_ADDRESS_START_SHIFT 16
92 1.1 scw #define VME2_MAST_ADDRESS_START_MASK (0x0000ffffu)
93 1.1 scw #define VME2_MAST_ADDRESS_END_SHIFT 0
94 1.1 scw #define VME2_MAST_ADDRESS_END_MASK (0xffff0000u)
95 1.1 scw
96 1.1 scw #define VME2LCSR_MAST4_TRANS 0x24
97 1.1 scw #define VME2_MAST4_TRANS_SELECT_SHIFT 16
98 1.1 scw #define VME2_MAST4_TRANS_SELECT_MASK (0x0000ffffu)
99 1.1 scw #define VME2_MAST4_TRANS_ADDRESS_SHIFT 0
100 1.1 scw #define VME2_MAST4_TRANS_ADDRESS_MASK (0xffff0000u)
101 1.1 scw
102 1.1 scw /*
103 1.1 scw * VMEbus master attribute control register
104 1.1 scw */
105 1.1 scw #define VME2LCSR_MASTER_ATTR 0x28
106 1.1 scw #define VME2_MASTER_ATTR_AM_SHIFT(x) ((x) * 8)
107 1.1 scw #define VME2_MASTER_ATTR_AM_MASK (0x0000003fu)
108 1.1 scw #define VME2_MASTER_ATTR_WP (1u << 6)
109 1.1 scw #define VME2_MASTER_ATTR_D16 (1u << 7)
110 1.1 scw
111 1.1 scw /*
112 1.1 scw * GCSR Group/Board addresses, and
113 1.1 scw * VMEbus Master Enable Control register, and
114 1.1 scw * Local to VMEbus I/O Control register, and
115 1.1 scw * ROM Control register (unused).
116 1.1 scw */
117 1.1 scw #define VME2LCSR_GCSR_ADDRESS 0x2c
118 1.1 scw #define VME2_GCSR_ADDRESS_SHIFT 16
119 1.1 scw #define VME2_GCSR_ADDRESS_MASK (0xfff00000u)
120 1.1 scw
121 1.1 scw #define VME2LCSR_MASTER_ENABLE 0x2c
122 1.1 scw #define VME2_MASTER_ENABLE_MASK (0x000f0000u)
123 1.1 scw #define VME2_MASTER_ENABLE(x) (1u << ((x) + 16))
124 1.1 scw
125 1.1 scw #define VME2LCSR_IO_CONTROL 0x2c
126 1.1 scw #define VME2_IO_CONTROL_SHIFT 8
127 1.1 scw #define VME2_IO_CONTROL_MASK (0x0000ff00u)
128 1.1 scw #define VME2_IO_CONTROL_I1SU (1u << 8)
129 1.1 scw #define VME2_IO_CONTROL_I1WP (1u << 9)
130 1.1 scw #define VME2_IO_CONTROL_I1D16 (1u << 10)
131 1.1 scw #define VME2_IO_CONTROL_I1EN (1u << 11)
132 1.1 scw #define VME2_IO_CONTROL_I2PD (1u << 12)
133 1.1 scw #define VME2_IO_CONTROL_I2SU (1u << 13)
134 1.1 scw #define VME2_IO_CONTROL_I2WP (1u << 14)
135 1.1 scw #define VME2_IO_CONTROL_I2EN (1u << 15)
136 1.1 scw
137 1.1 scw /*
138 1.1 scw * VMEChip2 PROM Decoder, SRAM and DMA Control register
139 1.1 scw */
140 1.1 scw #define VME2LCSR_PROM_SRAM_DMA_CTRL 0x30
141 1.1 scw #define VME2_PSD_SRAMS_MASK (0x00ff0000u)
142 1.1 scw #define VME2_PSD_SRAMS_CLKS6 (0u << 16)
143 1.1 scw #define VME2_PSD_SRAMS_CLKS5 (1u << 16)
144 1.1 scw #define VME2_PSD_SRAMS_CLKS4 (2u << 16)
145 1.1 scw #define VME2_PSD_SRAMS_CLKS3 (3u << 16)
146 1.1 scw #define VME2_PSD_TBLSC_INHIB (0u << 18)
147 1.1 scw #define VME2_PSD_TBLSC_WRSINK (1u << 18)
148 1.1 scw #define VME2_PSD_TBLSC_WRINV (2u << 18)
149 1.1 scw #define VME2_PSD_ROM0 (1u << 20)
150 1.1 scw #define VME2_PSD_WAITRMW (1u << 21)
151 1.1 scw
152 1.1 scw /*
153 1.1 scw * VMEbus requester control register
154 1.1 scw */
155 1.1 scw #define VME2LCSR_VME_REQUESTER_CONTROL 0x30
156 1.1 scw #define VME2_VMEREQ_CTRL_MASK (0x0000ff00u)
157 1.1 scw #define VME2_VMEREQ_CTRL_LVREQL_MASK (0x00000300u)
158 1.1 scw #define VME2_VMEREQ_CTRL_LVREQL(x) ((u_int)(x) << 8)
159 1.1 scw #define VME2_VMEREQ_CTRL_LVRWD (1u << 10)
160 1.1 scw #define VME2_VMEREQ_CTRL_LVFAIR (1u << 11)
161 1.1 scw #define VME2_VMEREQ_CTRL_DWB (1u << 13)
162 1.1 scw #define VME2_VMEREQ_CTRL_DHB (1u << 14)
163 1.1 scw #define VME2_VMEREQ_CTRL_ROBN (1u << 15)
164 1.1 scw
165 1.1 scw /*
166 1.1 scw * DMAC control register
167 1.1 scw */
168 1.1 scw #define VME2LCSR_DMAC_CONTROL1 0x30
169 1.1 scw #define VME2_DMAC_CTRL1_MASK (0x000000ffu)
170 1.1 scw #define VME2_DMAC_CTRL1_DREQL_MASK (0x00000003u)
171 1.1 scw #define VME2_DMAC_CTRL1_DREQL(x) ((u_int)(x) << 0)
172 1.1 scw #define VME2_DMAC_CTRL1_DRELM_MASK (0x0000000cu)
173 1.1 scw #define VME2_DMAC_CTRL1_DRELM(x) ((u_int)(x) << 2)
174 1.1 scw #define VME2_DMAC_CTRL1_DFAIR (1u << 4)
175 1.1 scw #define VME2_DMAC_CTRL1_DTBL (1u << 5)
176 1.1 scw #define VME2_DMAC_CTRL1_DEN (1u << 6)
177 1.1 scw #define VME2_DMAC_CTRL1_DHALT (1u << 7)
178 1.1 scw
179 1.1 scw /*
180 1.1 scw * DMA Control register #2
181 1.1 scw */
182 1.1 scw #define VME2LCSR_DMAC_CONTROL2 0x34
183 1.1 scw #define VME2_DMAC_CTRL2_MASK (0x0000ffffu)
184 1.1 scw #define VME2_DMAC_CTRL2_SHIFT 0
185 1.1 scw #define VME2_DMAC_CTRL2_AM_MASK (0x0000003fu)
186 1.1 scw #define VME2_DMAC_CTRL2_BLK_D32 (1u << 6)
187 1.1 scw #define VME2_DMAC_CTRL2_BLK_D64 (3u << 6)
188 1.1 scw #define VME2_DMAC_CTRL2_D16 (1u << 8)
189 1.1 scw #define VME2_DMAC_CTRL2_TVME (1u << 9)
190 1.1 scw #define VME2_DMAC_CTRL2_LINC (1u << 10)
191 1.1 scw #define VME2_DMAC_CTRL2_VINC (1u << 11)
192 1.1 scw #define VME2_DMAC_CTRL2_SNOOP_INHIB (0u << 13)
193 1.1 scw #define VME2_DMAC_CTRL2_SNOOP_WRSNK (1u << 13)
194 1.1 scw #define VME2_DMAC_CTRL2_SNOOP_WRINV (2u << 13)
195 1.1 scw #define VME2_DMAC_CTRL2_INTE (1u << 15)
196 1.1 scw
197 1.1 scw /*
198 1.1 scw * DMA Controller Local Bus and VMEbus Addresses, Byte
199 1.1 scw * Counter and Table Address Counter registers
200 1.1 scw */
201 1.1 scw #define VME2LCSR_DMAC_LOCAL_ADDRESS 0x38
202 1.1 scw #define VME2LCSR_DMAC_VME_ADDRESS 0x3c
203 1.1 scw #define VME2LCSR_DMAC_BYTE_COUNTER 0x40
204 1.1 scw #define VME2LCSR_DMAC_TABLE_ADDRESS 0x44
205 1.1 scw
206 1.1 scw /*
207 1.1 scw * VMEbus Interrupter Control register
208 1.1 scw */
209 1.1 scw #define VME2LCSR_INTERRUPT_CONTROL 0x48
210 1.1 scw #define VME2_INT_CTRL_MASK (0xff000000u)
211 1.1 scw #define VME2_INT_CTRL_SHIFT 24
212 1.1 scw #define VME2_INT_CTRL_IRQL_MASK (0x07000000u)
213 1.1 scw #define VME2_INT_CTRL_IRQS (1u << 27)
214 1.1 scw #define VME2_INT_CTRL_IRQC (1u << 28)
215 1.1 scw #define VME2_INT_CTRL_IRQ1S_INT (0u << 29)
216 1.1 scw #define VME2_INT_CTRL_IRQ1S_TICK1 (1u << 29)
217 1.1 scw #define VME2_INT_CTRL_IRQ1S_TICK2 (3u << 29)
218 1.1 scw
219 1.1 scw /*
220 1.1 scw * VMEbus Interrupt Vector register
221 1.1 scw */
222 1.1 scw #define VME2LCSR_INTERRUPT_VECTOR 0x48
223 1.1 scw #define VME2_INTERRUPT_VECTOR_MASK (0x00ff0000u)
224 1.1 scw #define VME2_INTERRUPT_VECTOR_SHIFT 16
225 1.1 scw
226 1.1 scw /*
227 1.1 scw * MPU Status register
228 1.1 scw */
229 1.1 scw #define VME2LCSR_MPU_STATUS 0x48
230 1.1 scw #define VME2_MPU_STATUS_MLOB (1u << 0)
231 1.1 scw #define VME2_MPU_STATUS_MLPE (1u << 1)
232 1.1 scw #define VME2_MPU_STATUS_MLBE (1u << 2)
233 1.1 scw #define VME2_MPU_STATUS_MCLR (1u << 3)
234 1.1 scw
235 1.1 scw /*
236 1.1 scw * DMA Interrupt Count register
237 1.1 scw */
238 1.1 scw #define VME2LCSR_DMAC_INTERRUPT_CONTROL 0x48
239 1.1 scw #define VME2_DMAC_INT_COUNT_MASK (0x0000f000u)
240 1.1 scw #define VME2_DMAC_INT_COUNT_SHIFT 12
241 1.1 scw
242 1.1 scw /*
243 1.1 scw * DMA Controller Status register
244 1.1 scw */
245 1.1 scw #define VME2LCSR_DMAC_STATUS 0x48
246 1.1 scw #define VME2_DMAC_STATUS_DONE (1u << 0)
247 1.1 scw #define VME2_DMAC_STATUS_VME (1u << 1)
248 1.1 scw #define VME2_DMAC_STATUS_TBL (1u << 2)
249 1.1 scw #define VME2_DMAC_STATUS_DLTO (1u << 3)
250 1.1 scw #define VME2_DMAC_STATUS_DLOB (1u << 4)
251 1.1 scw #define VME2_DMAC_STATUS_DLPE (1u << 5)
252 1.1 scw #define VME2_DMAC_STATUS_DLBE (1u << 6)
253 1.1 scw #define VME2_DMAC_STATUS_MLTO (1u << 7)
254 1.1 scw
255 1.1 scw
256 1.1 scw /*
257 1.1 scw * VMEbus Arbiter Time-out register
258 1.1 scw */
259 1.1 scw #define VME2LCSR_VME_ARB_TIMEOUT 0x4c
260 1.1 scw #define VME2_VME_ARB_TIMEOUT_ENAB (1u << 24)
261 1.1 scw
262 1.1 scw /*
263 1.1 scw * DMA Controller Timers and VMEbus Global Time-out Control registers
264 1.1 scw */
265 1.1 scw #define VME2LCSR_DMAC_TIME_ONOFF 0x4c
266 1.1 scw #define VME2_DMAC_TIME_ON_MASK (0x001c0000u)
267 1.1 scw #define VME2_DMAC_TIME_ON_16US (0u << 18)
268 1.1 scw #define VME2_DMAC_TIME_ON_32US (1u << 18)
269 1.1 scw #define VME2_DMAC_TIME_ON_64US (2u << 18)
270 1.1 scw #define VME2_DMAC_TIME_ON_128US (3u << 18)
271 1.1 scw #define VME2_DMAC_TIME_ON_256US (4u << 18)
272 1.1 scw #define VME2_DMAC_TIME_ON_512US (5u << 18)
273 1.1 scw #define VME2_DMAC_TIME_ON_1024US (6u << 18)
274 1.1 scw #define VME2_DMAC_TIME_ON_DONE (7u << 18)
275 1.1 scw #define VME2_DMAC_TIME_OFF_MASK (0x00e00000u)
276 1.1 scw #define VME2_DMAC_TIME_OFF_0US (0u << 21)
277 1.1 scw #define VME2_DMAC_TIME_OFF_16US (1u << 21)
278 1.1 scw #define VME2_DMAC_TIME_OFF_32US (2u << 21)
279 1.1 scw #define VME2_DMAC_TIME_OFF_64US (3u << 21)
280 1.1 scw #define VME2_DMAC_TIME_OFF_128US (4u << 21)
281 1.1 scw #define VME2_DMAC_TIME_OFF_256US (5u << 21)
282 1.1 scw #define VME2_DMAC_TIME_OFF_512US (6u << 21)
283 1.1 scw #define VME2_DMAC_TIME_OFF_1024US (7u << 21)
284 1.1 scw #define VME2_VME_GLOBAL_TO_MASK (0x00030000u)
285 1.1 scw #define VME2_VME_GLOBAL_TO_8US (0u << 16)
286 1.1 scw #define VME2_VME_GLOBAL_TO_16US (1u << 16)
287 1.1 scw #define VME2_VME_GLOBAL_TO_256US (2u << 16)
288 1.1 scw #define VME2_VME_GLOBAL_TO_DISABLE (3u << 16)
289 1.1 scw
290 1.1 scw /*
291 1.1 scw * VME Access, Local Bus and Watchdog Time-out Control register
292 1.1 scw */
293 1.1 scw #define VME2LCSR_VME_ACCESS_TIMEOUT 0x4c
294 1.1 scw #define VME2_VME_ACCESS_TIMEOUT_MASK (0x0000c000u)
295 1.1 scw #define VME2_VME_ACCESS_TIMEOUT_64US (0u << 14)
296 1.1 scw #define VME2_VME_ACCESS_TIMEOUT_1MS (1u << 14)
297 1.1 scw #define VME2_VME_ACCESS_TIMEOUT_32MS (2u << 14)
298 1.1 scw #define VME2_VME_ACCESS_TIMEOUT_DISABLE (3u << 14)
299 1.1 scw
300 1.1 scw #define VME2LCSR_LOCAL_BUS_TIMEOUT 0x4c
301 1.1 scw #define VME2_LOCAL_BUS_TIMEOUT_MASK (0x00003000u)
302 1.1 scw #define VME2_LOCAL_BUS_TIMEOUT_64US (0u << 12)
303 1.1 scw #define VME2_LOCAL_BUS_TIMEOUT_1MS (1u << 12)
304 1.1 scw #define VME2_LOCAL_BUS_TIMEOUT_32MS (2u << 12)
305 1.1 scw #define VME2_LOCAL_BUS_TIMEOUT_DISABLE (3u << 12)
306 1.1 scw
307 1.1 scw #define VME2LCSR_WATCHDOG_TIMEOUT 0x4c
308 1.1 scw #define VME2_WATCHDOG_TIMEOUT_MASK (0x00000f00u)
309 1.1 scw #define VME2_WATCHDOG_TIMEOUT_512US (0u << 8)
310 1.1 scw #define VME2_WATCHDOG_TIMEOUT_1MS (1u << 8)
311 1.1 scw #define VME2_WATCHDOG_TIMEOUT_2MS (2u << 8)
312 1.1 scw #define VME2_WATCHDOG_TIMEOUT_4MS (3u << 8)
313 1.1 scw #define VME2_WATCHDOG_TIMEOUT_8MS (4u << 8)
314 1.1 scw #define VME2_WATCHDOG_TIMEOUT_16MS (5u << 8)
315 1.1 scw #define VME2_WATCHDOG_TIMEOUT_32MS (6u << 8)
316 1.1 scw #define VME2_WATCHDOG_TIMEOUT_64MS (7u << 8)
317 1.1 scw #define VME2_WATCHDOG_TIMEOUT_128MS (8u << 8)
318 1.1 scw #define VME2_WATCHDOG_TIMEOUT_256MS (9u << 8)
319 1.1 scw #define VME2_WATCHDOG_TIMEOUT_512MS (10u << 8)
320 1.1 scw #define VME2_WATCHDOG_TIMEOUT_1S (11u << 8)
321 1.1 scw #define VME2_WATCHDOG_TIMEOUT_4S (12u << 8)
322 1.1 scw #define VME2_WATCHDOG_TIMEOUT_16S (13u << 8)
323 1.1 scw #define VME2_WATCHDOG_TIMEOUT_32S (14u << 8)
324 1.1 scw #define VME2_WATCHDOG_TIMEOUT_64S (15u << 8)
325 1.1 scw
326 1.1 scw /*
327 1.1 scw * Prescaler Control register
328 1.1 scw */
329 1.1 scw #define VME2LCSR_PRESCALER_CONTROL 0x4c
330 1.1 scw #define VME2_PRESCALER_MASK (0x000000ffu)
331 1.1 scw #define VME2_PRESCALER_SHIFT 0
332 1.1 scw #define VME2_PRESCALER_CTRL(c) (256 - (c))
333 1.1 scw
334 1.1 scw /*
335 1.1 scw * Tick Timer registers
336 1.1 scw */
337 1.1 scw #define VME2LCSR_TIMER_COMPARE(x) (0x50 + ((x) * 8))
338 1.1 scw #define VME2LCSR_TIMER_COUNTER(x) (0x54 + ((x) * 8))
339 1.1 scw
340 1.1 scw
341 1.1 scw /*
342 1.1 scw * Board Control register
343 1.1 scw */
344 1.1 scw #define VME2LCSR_BOARD_CONTROL 0x60
345 1.1 scw #define VME2_BOARD_CONTROL_RSWE (1u << 24)
346 1.1 scw #define VME2_BOARD_CONTROL_BDFLO (1u << 25)
347 1.1 scw #define VME2_BOARD_CONTROL_CPURS (1u << 26)
348 1.1 scw #define VME2_BOARD_CONTROL_PURS (1u << 27)
349 1.1 scw #define VME2_BOARD_CONTROL_BRFLI (1u << 28)
350 1.1 scw #define VME2_BOARD_CONTROL_SFFL (1u << 29)
351 1.1 scw #define VME2_BOARD_CONTROL_SCON (1u << 30)
352 1.1 scw
353 1.1 scw /*
354 1.1 scw * Watchdog Timer Control register
355 1.1 scw */
356 1.1 scw #define VME2LCSR_WATCHDOG_TIMER_CONTROL 0x60
357 1.1 scw #define VME2_WATCHDOG_TCONTROL_WDEN (1u << 16)
358 1.1 scw #define VME2_WATCHDOG_TCONTTRL_WDRSE (1u << 17)
359 1.1 scw #define VME2_WATCHDOG_TCONTTRL_WDSL (1u << 18)
360 1.1 scw #define VME2_WATCHDOG_TCONTTRL_WDBFE (1u << 19)
361 1.1 scw #define VME2_WATCHDOG_TCONTTRL_WDTO (1u << 20)
362 1.1 scw #define VME2_WATCHDOG_TCONTTRL_WDCC (1u << 21)
363 1.1 scw #define VME2_WATCHDOG_TCONTTRL_WDCS (1u << 22)
364 1.1 scw #define VME2_WATCHDOG_TCONTTRL_SRST (1u << 23)
365 1.1 scw
366 1.1 scw /*
367 1.1 scw * Tick Timer Control registers
368 1.1 scw */
369 1.1 scw #define VME2LCSR_TIMER_CONTROL 0x60
370 1.1 scw #define VME2_TIMER_CONTROL_EN(x) (1u << (0 + ((x) * 8)))
371 1.1 scw #define VME2_TIMER_CONTROL_COC(x) (1u << (1 + ((x) * 8)))
372 1.1 scw #define VME2_TIMER_CONTROL_COF(x) (1u << (2 + ((x) * 8)))
373 1.1 scw #define VME2_TIMER_CONTROL_OVF_SHIFT(x) (4 + ((x) * 8))
374 1.1 scw #define VME2_TIMER_CONTROL_OVF_MASK(x) (0x000000f0u << (4 + ((x) * 8)))
375 1.1 scw
376 1.1 scw /*
377 1.1 scw * Prescaler Counter register
378 1.1 scw */
379 1.1 scw #define VME2LCSR_PRESCALER_COUNTER 0x64
380 1.1 scw
381 1.1 scw /*
382 1.1 scw * Local Bus Interrupter Status/Enable/Clear registers
383 1.1 scw */
384 1.1 scw #define VME2LCSR_LOCAL_INTERRUPT_STATUS 0x68
385 1.1 scw #define VME2LCSR_LOCAL_INTERRUPT_ENABLE 0x6c
386 1.1 scw #define VME2LCSR_LOCAL_INTERRUPT_CLEAR 0x74
387 1.1 scw #define VME2_LOCAL_INTERRUPT(x) (1u << (x))
388 1.1 scw #define VME2_LOCAL_INTERRUPT_VME(x) (1u << ((x) - 1))
389 1.1 scw #define VME2_LOCAL_INTERRUPT_SWINT(x) (1u << ((x) + 8))
390 1.1 scw #define VME2_LOCAL_INTERRUPT_LM(x) (1u << ((x) + 16))
391 1.1 scw #define VME2_LOCAL_INTERRUPT_SIG(x) (1u << ((x) + 18))
392 1.1 scw #define VME2_LOCAL_INTERRUPT_DMAC (1u << 22)
393 1.1 scw #define VME2_LOCAL_INTERRUPT_VIA (1u << 23)
394 1.1 scw #define VME2_LOCAL_INTERRUPT_TIC(x) (1u << ((x) + 24))
395 1.1 scw #define VME2_LOCAL_INTERRUPT_VI1E (1u << 26)
396 1.1 scw #define VME2_LOCAL_INTERRUPT_PE (1u << 27)
397 1.1 scw #define VME2_LOCAL_INTERRUPT_MWP (1u << 28)
398 1.1 scw #define VME2_LOCAL_INTERRUPT_SYSF (1u << 29)
399 1.1 scw #define VME2_LOCAL_INTERRUPT_ABORT (1u << 30)
400 1.1 scw #define VME2_LOCAL_INTERRUPT_ACFAIL (1u << 31)
401 1.1 scw #define VME2_LOCAL_INTERRUPT_CLEAR_ALL (0xffffff00u)
402 1.1 scw
403 1.1 scw /*
404 1.1 scw * Software Interrupt Set register
405 1.1 scw */
406 1.1 scw #define VME2LCSR_SOFTINT_SET 0x70
407 1.1 scw #define VME2_SOFTINT_SET(x) (1u << ((x) + 8))
408 1.1 scw
409 1.1 scw /*
410 1.1 scw * Interrupt Level registers
411 1.1 scw */
412 1.1 scw #define VME2LCSR_INTERRUPT_LEVEL_BASE 0x78
413 1.1 scw #define VME2_NUM_IL_REGS 4
414 1.1 scw #define VME2_ILOFFSET_FROM_VECTOR(v) (((((VME2_NUM_IL_REGS*8)-1)-(v))/8)<<2)
415 1.1 scw #define VME2_ILSHIFT_FROM_VECTOR(v) (((v) & 7) * 4)
416 1.1 scw #define VME2_INTERRUPT_LEVEL_MASK (0x0fu)
417 1.1 scw
418 1.1 scw /*
419 1.1 scw * Vector Base register
420 1.1 scw */
421 1.1 scw #define VME2LCSR_VECTOR_BASE 0x88
422 1.1 scw #define VME2_VECTOR_BASE_MASK (0xff000000u)
423 1.1 scw #define VME2_VECTOR_BASE_REG_VALUE (0x76000000u)
424 1.1 scw #define VME2_VECTOR_BASE (0x60u)
425 1.1 scw #define VME2_VECTOR_LOCAL_OFFSET (0x08u)
426 1.1 scw #define VME2_VECTOR_LOCAL_MIN (VME2_VECTOR_BASE + 0x08u)
427 1.1 scw #define VME2_VECTOR_LOCAL_MAX (VME2_VECTOR_BASE + 0x1fu)
428 1.1 scw #define VME2_VEC_SOFT0 (VME2_VECTOR_BASE + 0x08u)
429 1.1 scw #define VME2_VEC_SOFT1 (VME2_VECTOR_BASE + 0x09u)
430 1.1 scw #define VME2_VEC_SOFT2 (VME2_VECTOR_BASE + 0x0au)
431 1.1 scw #define VME2_VEC_SOFT3 (VME2_VECTOR_BASE + 0x0bu)
432 1.1 scw #define VME2_VEC_SOFT4 (VME2_VECTOR_BASE + 0x0cu)
433 1.1 scw #define VME2_VEC_SOFT5 (VME2_VECTOR_BASE + 0x0du)
434 1.1 scw #define VME2_VEC_SOFT6 (VME2_VECTOR_BASE + 0x0eu)
435 1.1 scw #define VME2_VEC_SOFT7 (VME2_VECTOR_BASE + 0x0fu)
436 1.1 scw #define VME2_VEC_GCSRLM0 (VME2_VECTOR_BASE + 0x10u)
437 1.1 scw #define VME2_VEC_GCSRLM1 (VME2_VECTOR_BASE + 0x11u)
438 1.1 scw #define VME2_VEC_GCSRSIG0 (VME2_VECTOR_BASE + 0x12u)
439 1.1 scw #define VME2_VEC_GCSRSIG1 (VME2_VECTOR_BASE + 0x13u)
440 1.1 scw #define VME2_VEC_GCSRSIG2 (VME2_VECTOR_BASE + 0x14u)
441 1.1 scw #define VME2_VEC_GCSRSIG3 (VME2_VECTOR_BASE + 0x15u)
442 1.1 scw #define VME2_VEC_DMAC (VME2_VECTOR_BASE + 0x16u)
443 1.1 scw #define VME2_VEC_VIA (VME2_VECTOR_BASE + 0x17u)
444 1.1 scw #define VME2_VEC_TT1 (VME2_VECTOR_BASE + 0x18u)
445 1.1 scw #define VME2_VEC_TT2 (VME2_VECTOR_BASE + 0x19u)
446 1.1 scw #define VME2_VEC_IRQ1 (VME2_VECTOR_BASE + 0x1au)
447 1.1 scw #define VME2_VEC_PARITY_ERROR (VME2_VECTOR_BASE + 0x1bu)
448 1.1 scw #define VME2_VEC_MWP_ERROR (VME2_VECTOR_BASE + 0x1cu)
449 1.1 scw #define VME2_VEC_SYSFAIL (VME2_VECTOR_BASE + 0x1du)
450 1.1 scw #define VME2_VEC_ABORT (VME2_VECTOR_BASE + 0x1eu)
451 1.1 scw #define VME2_VEC_ACFAIL (VME2_VECTOR_BASE + 0x1fu)
452 1.1 scw
453 1.1 scw /*
454 1.1 scw * I/O Control register #1
455 1.1 scw */
456 1.1 scw #define VME2LCSR_GPIO_DIRECTION 0x88
457 1.1 scw #define VME2_GPIO_DIRECTION_OUT(x) (1u << ((x) + 16))
458 1.1 scw
459 1.1 scw /*
460 1.1 scw * Misc. Status register
461 1.1 scw */
462 1.1 scw #define VME2LCSR_MISC_STATUS 0x88
463 1.1 scw #define VME2_MISC_STATUS_ABRTL (1u << 20)
464 1.1 scw #define VME2_MISC_STATUS_ACFL (1u << 21)
465 1.1 scw #define VME2_MISC_STATUS_SYSFL (1u << 22)
466 1.1 scw #define VME2_MISC_STATUS_MIEN (1u << 23)
467 1.1 scw
468 1.1 scw /*
469 1.1 scw * GPIO Status register
470 1.1 scw */
471 1.1 scw #define VME2LCSR_GPIO_STATUS 0x88
472 1.1 scw #define VME2_GPIO_STATUS(x) (1u << ((x) + 8))
473 1.1 scw
474 1.1 scw /*
475 1.1 scw * GPIO Control register #2
476 1.1 scw */
477 1.1 scw #define VME2LCSR_GPIO_CONTROL 0x88
478 1.1 scw #define VME2_GPIO_CONTROL_SET(x) (1u << ((x) + 12))
479 1.1 scw
480 1.1 scw /*
481 1.1 scw * General purpose input registers
482 1.1 scw */
483 1.1 scw #define VME2LCSR_GP_INPUTS 0x88
484 1.1 scw #define VME2_GP_INPUT(x) (1u << (x))
485 1.1 scw
486 1.1 scw /*
487 1.1 scw * Miscellaneous Control register
488 1.1 scw */
489 1.1 scw #define VME2LCSR_MISC_CONTROL 0x8c
490 1.1 scw #define VME2_MISC_CONTROL_DISBGN (1u << 0)
491 1.1 scw #define VME2_MISC_CONTROL_ENINT (1u << 1)
492 1.1 scw #define VME2_MISC_CONTROL_DISBSYT (1u << 2)
493 1.1 scw #define VME2_MISC_CONTROL_NOELBBSY (1u << 3)
494 1.1 scw #define VME2_MISC_CONTROL_DISMST (1u << 4)
495 1.1 scw #define VME2_MISC_CONTROL_DISSRAM (1u << 5)
496 1.1 scw #define VME2_MISC_CONTROL_REVEROM (1u << 6)
497 1.1 scw #define VME2_MISC_CONTROL_MPIRQEN (1u << 7)
498 1.1 scw
499 1.1 scw #define VME2LCSR_SIZE 0x90
500 1.1 scw
501 1.1 scw
502 1.1 scw #define vme2_lcsr_read(s,r) \
503 1.1 scw bus_space_read_4((s)->sc_mvmebus.sc_bust, (s)->sc_lcrh, (r))
504 1.1 scw #define vme2_lcsr_write(s,r,v) \
505 1.1 scw bus_space_write_4((s)->sc_mvmebus.sc_bust, (s)->sc_lcrh, (r), (v))
506 1.1 scw
507 1.1 scw
508 1.1 scw /*
509 1.1 scw * Locations of the three fixed VMEbus I/O ranges
510 1.1 scw */
511 1.1 scw #define VME2_IO0_LOCAL_START (0xffff0000u)
512 1.1 scw #define VME2_IO0_MASK (0x0000ffffu)
513 1.1 scw #define VME2_IO0_VME_START (0x00000000u)
514 1.1 scw #define VME2_IO0_VME_END (0x0000ffffu)
515 1.1 scw
516 1.1 scw #define VME2_IO1_LOCAL_START (0xf0000000u)
517 1.1 scw #define VME2_IO1_MASK (0x00ffffffu)
518 1.1 scw #define VME2_IO1_VME_START (0x00000000u)
519 1.1 scw #define VME2_IO1_VME_END (0x00ffffffu)
520 1.1 scw
521 1.1 scw #define VME2_IO2_LOCAL_START (0x00000000u)
522 1.1 scw #define VME2_IO2_MASK (0xffffffffu)
523 1.1 scw #define VME2_IO2_VME_START (0xf1000000u) /* Maybe starts@ 0x0? */
524 1.1 scw #define VME2_IO2_VME_END (0xff7fffffu)
525 1.1 scw
526 1.1 scw #endif /* _MVME_VME_TWOREG_H */
527