aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-ia64/sn/shub_mmr.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/asm-ia64/sn/shub_mmr.h')
-rw-r--r--include/asm-ia64/sn/shub_mmr.h441
1 files changed, 441 insertions, 0 deletions
diff --git a/include/asm-ia64/sn/shub_mmr.h b/include/asm-ia64/sn/shub_mmr.h
new file mode 100644
index 000000000000..5c2fcf13d5ce
--- /dev/null
+++ b/include/asm-ia64/sn/shub_mmr.h
@@ -0,0 +1,441 @@
1/*
2 *
3 * This file is subject to the terms and conditions of the GNU General Public
4 * License. See the file "COPYING" in the main directory of this archive
5 * for more details.
6 *
7 * Copyright (c) 2001-2004 Silicon Graphics, Inc. All rights reserved.
8 */
9
10#ifndef _ASM_IA64_SN_SHUB_MMR_H
11#define _ASM_IA64_SN_SHUB_MMR_H
12
13/* ==================================================================== */
14/* Register "SH_IPI_INT" */
15/* SHub Inter-Processor Interrupt Registers */
16/* ==================================================================== */
17#define SH1_IPI_INT 0x0000000110000380
18#define SH2_IPI_INT 0x0000000010000380
19
20/* SH_IPI_INT_TYPE */
21/* Description: Type of Interrupt: 0=INT, 2=PMI, 4=NMI, 5=INIT */
22#define SH_IPI_INT_TYPE_SHFT 0
23#define SH_IPI_INT_TYPE_MASK 0x0000000000000007
24
25/* SH_IPI_INT_AGT */
26/* Description: Agent, must be 0 for SHub */
27#define SH_IPI_INT_AGT_SHFT 3
28#define SH_IPI_INT_AGT_MASK 0x0000000000000008
29
30/* SH_IPI_INT_PID */
31/* Description: Processor ID, same setting as on targeted McKinley */
32#define SH_IPI_INT_PID_SHFT 4
33#define SH_IPI_INT_PID_MASK 0x00000000000ffff0
34
35/* SH_IPI_INT_BASE */
36/* Description: Optional interrupt vector area, 2MB aligned */
37#define SH_IPI_INT_BASE_SHFT 21
38#define SH_IPI_INT_BASE_MASK 0x0003ffffffe00000
39
40/* SH_IPI_INT_IDX */
41/* Description: Targeted McKinley interrupt vector */
42#define SH_IPI_INT_IDX_SHFT 52
43#define SH_IPI_INT_IDX_MASK 0x0ff0000000000000
44
45/* SH_IPI_INT_SEND */
46/* Description: Send Interrupt Message to PI, This generates a puls */
47#define SH_IPI_INT_SEND_SHFT 63
48#define SH_IPI_INT_SEND_MASK 0x8000000000000000
49
50/* ==================================================================== */
51/* Register "SH_EVENT_OCCURRED" */
52/* SHub Interrupt Event Occurred */
53/* ==================================================================== */
54#define SH1_EVENT_OCCURRED 0x0000000110010000
55#define SH1_EVENT_OCCURRED_ALIAS 0x0000000110010008
56#define SH2_EVENT_OCCURRED 0x0000000010010000
57#define SH2_EVENT_OCCURRED_ALIAS 0x0000000010010008
58
59/* ==================================================================== */
60/* Register "SH_PI_CAM_CONTROL" */
61/* CRB CAM MMR Access Control */
62/* ==================================================================== */
63#define SH1_PI_CAM_CONTROL 0x0000000120050300
64
65/* ==================================================================== */
66/* Register "SH_SHUB_ID" */
67/* SHub ID Number */
68/* ==================================================================== */
69#define SH1_SHUB_ID 0x0000000110060580
70#define SH1_SHUB_ID_REVISION_SHFT 28
71#define SH1_SHUB_ID_REVISION_MASK 0x00000000f0000000
72
73/* ==================================================================== */
74/* Register "SH_RTC" */
75/* Real-time Clock */
76/* ==================================================================== */
77#define SH1_RTC 0x00000001101c0000
78#define SH2_RTC 0x00000002101c0000
79#define SH_RTC_MASK 0x007fffffffffffff
80
81/* ==================================================================== */
82/* Register "SH_PIO_WRITE_STATUS_0|1" */
83/* PIO Write Status for CPU 0 & 1 */
84/* ==================================================================== */
85#define SH1_PIO_WRITE_STATUS_0 0x0000000120070200
86#define SH1_PIO_WRITE_STATUS_1 0x0000000120070280
87#define SH2_PIO_WRITE_STATUS_0 0x0000000020070200
88#define SH2_PIO_WRITE_STATUS_1 0x0000000020070280
89#define SH2_PIO_WRITE_STATUS_2 0x0000000020070300
90#define SH2_PIO_WRITE_STATUS_3 0x0000000020070380
91
92/* SH_PIO_WRITE_STATUS_0_WRITE_DEADLOCK */
93/* Description: Deadlock response detected */
94#define SH_PIO_WRITE_STATUS_WRITE_DEADLOCK_SHFT 1
95#define SH_PIO_WRITE_STATUS_WRITE_DEADLOCK_MASK 0x0000000000000002
96
97/* SH_PIO_WRITE_STATUS_0_PENDING_WRITE_COUNT */
98/* Description: Count of currently pending PIO writes */
99#define SH_PIO_WRITE_STATUS_PENDING_WRITE_COUNT_SHFT 56
100#define SH_PIO_WRITE_STATUS_PENDING_WRITE_COUNT_MASK 0x3f00000000000000
101
102/* ==================================================================== */
103/* Register "SH_PIO_WRITE_STATUS_0_ALIAS" */
104/* ==================================================================== */
105#define SH1_PIO_WRITE_STATUS_0_ALIAS 0x0000000120070208
106#define SH2_PIO_WRITE_STATUS_0_ALIAS 0x0000000020070208
107
108/* ==================================================================== */
109/* Register "SH_EVENT_OCCURRED" */
110/* SHub Interrupt Event Occurred */
111/* ==================================================================== */
112/* SH_EVENT_OCCURRED_UART_INT */
113/* Description: Pending Junk Bus UART Interrupt */
114#define SH_EVENT_OCCURRED_UART_INT_SHFT 20
115#define SH_EVENT_OCCURRED_UART_INT_MASK 0x0000000000100000
116
117/* SH_EVENT_OCCURRED_IPI_INT */
118/* Description: Pending IPI Interrupt */
119#define SH_EVENT_OCCURRED_IPI_INT_SHFT 28
120#define SH_EVENT_OCCURRED_IPI_INT_MASK 0x0000000010000000
121
122/* SH_EVENT_OCCURRED_II_INT0 */
123/* Description: Pending II 0 Interrupt */
124#define SH_EVENT_OCCURRED_II_INT0_SHFT 29
125#define SH_EVENT_OCCURRED_II_INT0_MASK 0x0000000020000000
126
127/* SH_EVENT_OCCURRED_II_INT1 */
128/* Description: Pending II 1 Interrupt */
129#define SH_EVENT_OCCURRED_II_INT1_SHFT 30
130#define SH_EVENT_OCCURRED_II_INT1_MASK 0x0000000040000000
131
132/* ==================================================================== */
133/* LEDS */
134/* ==================================================================== */
135#define SH1_REAL_JUNK_BUS_LED0 0x7fed00000UL
136#define SH1_REAL_JUNK_BUS_LED1 0x7fed10000UL
137#define SH1_REAL_JUNK_BUS_LED2 0x7fed20000UL
138#define SH1_REAL_JUNK_BUS_LED3 0x7fed30000UL
139
140#define SH2_REAL_JUNK_BUS_LED0 0xf0000000UL
141#define SH2_REAL_JUNK_BUS_LED1 0xf0010000UL
142#define SH2_REAL_JUNK_BUS_LED2 0xf0020000UL
143#define SH2_REAL_JUNK_BUS_LED3 0xf0030000UL
144
145/* ==================================================================== */
146/* Register "SH1_PTC_0" */
147/* Puge Translation Cache Message Configuration Information */
148/* ==================================================================== */
149#define SH1_PTC_0 0x00000001101a0000
150
151/* SH1_PTC_0_A */
152/* Description: Type */
153#define SH1_PTC_0_A_SHFT 0
154
155/* SH1_PTC_0_PS */
156/* Description: Page Size */
157#define SH1_PTC_0_PS_SHFT 2
158
159/* SH1_PTC_0_RID */
160/* Description: Region ID */
161#define SH1_PTC_0_RID_SHFT 8
162
163/* SH1_PTC_0_START */
164/* Description: Start */
165#define SH1_PTC_0_START_SHFT 63
166
167/* ==================================================================== */
168/* Register "SH1_PTC_1" */
169/* Puge Translation Cache Message Configuration Information */
170/* ==================================================================== */
171#define SH1_PTC_1 0x00000001101a0080
172
173/* SH1_PTC_1_START */
174/* Description: PTC_1 Start */
175#define SH1_PTC_1_START_SHFT 63
176
177
178/* ==================================================================== */
179/* Register "SH2_PTC" */
180/* Puge Translation Cache Message Configuration Information */
181/* ==================================================================== */
182#define SH2_PTC 0x0000000170000000
183
184/* SH2_PTC_A */
185/* Description: Type */
186#define SH2_PTC_A_SHFT 0
187
188/* SH2_PTC_PS */
189/* Description: Page Size */
190#define SH2_PTC_PS_SHFT 2
191
192/* SH2_PTC_RID */
193/* Description: Region ID */
194#define SH2_PTC_RID_SHFT 4
195
196/* SH2_PTC_START */
197/* Description: Start */
198#define SH2_PTC_START_SHFT 63
199
200/* SH2_PTC_ADDR_RID */
201/* Description: Region ID */
202#define SH2_PTC_ADDR_SHFT 4
203#define SH2_PTC_ADDR_MASK 0x1ffffffffffff000
204
205/* ==================================================================== */
206/* Register "SH_RTC1_INT_CONFIG" */
207/* SHub RTC 1 Interrupt Config Registers */
208/* ==================================================================== */
209
210#define SH1_RTC1_INT_CONFIG 0x0000000110001480
211#define SH2_RTC1_INT_CONFIG 0x0000000010001480
212#define SH_RTC1_INT_CONFIG_MASK 0x0ff3ffffffefffff
213#define SH_RTC1_INT_CONFIG_INIT 0x0000000000000000
214
215/* SH_RTC1_INT_CONFIG_TYPE */
216/* Description: Type of Interrupt: 0=INT, 2=PMI, 4=NMI, 5=INIT */
217#define SH_RTC1_INT_CONFIG_TYPE_SHFT 0
218#define SH_RTC1_INT_CONFIG_TYPE_MASK 0x0000000000000007
219
220/* SH_RTC1_INT_CONFIG_AGT */
221/* Description: Agent, must be 0 for SHub */
222#define SH_RTC1_INT_CONFIG_AGT_SHFT 3
223#define SH_RTC1_INT_CONFIG_AGT_MASK 0x0000000000000008
224
225/* SH_RTC1_INT_CONFIG_PID */
226/* Description: Processor ID, same setting as on targeted McKinley */
227#define SH_RTC1_INT_CONFIG_PID_SHFT 4
228#define SH_RTC1_INT_CONFIG_PID_MASK 0x00000000000ffff0
229
230/* SH_RTC1_INT_CONFIG_BASE */
231/* Description: Optional interrupt vector area, 2MB aligned */
232#define SH_RTC1_INT_CONFIG_BASE_SHFT 21
233#define SH_RTC1_INT_CONFIG_BASE_MASK 0x0003ffffffe00000
234
235/* SH_RTC1_INT_CONFIG_IDX */
236/* Description: Targeted McKinley interrupt vector */
237#define SH_RTC1_INT_CONFIG_IDX_SHFT 52
238#define SH_RTC1_INT_CONFIG_IDX_MASK 0x0ff0000000000000
239
240/* ==================================================================== */
241/* Register "SH_RTC1_INT_ENABLE" */
242/* SHub RTC 1 Interrupt Enable Registers */
243/* ==================================================================== */
244
245#define SH1_RTC1_INT_ENABLE 0x0000000110001500
246#define SH2_RTC1_INT_ENABLE 0x0000000010001500
247#define SH_RTC1_INT_ENABLE_MASK 0x0000000000000001
248#define SH_RTC1_INT_ENABLE_INIT 0x0000000000000000
249
250/* SH_RTC1_INT_ENABLE_RTC1_ENABLE */
251/* Description: Enable RTC 1 Interrupt */
252#define SH_RTC1_INT_ENABLE_RTC1_ENABLE_SHFT 0
253#define SH_RTC1_INT_ENABLE_RTC1_ENABLE_MASK 0x0000000000000001
254
255/* ==================================================================== */
256/* Register "SH_RTC2_INT_CONFIG" */
257/* SHub RTC 2 Interrupt Config Registers */
258/* ==================================================================== */
259
260#define SH1_RTC2_INT_CONFIG 0x0000000110001580
261#define SH2_RTC2_INT_CONFIG 0x0000000010001580
262#define SH_RTC2_INT_CONFIG_MASK 0x0ff3ffffffefffff
263#define SH_RTC2_INT_CONFIG_INIT 0x0000000000000000
264
265/* SH_RTC2_INT_CONFIG_TYPE */
266/* Description: Type of Interrupt: 0=INT, 2=PMI, 4=NMI, 5=INIT */
267#define SH_RTC2_INT_CONFIG_TYPE_SHFT 0
268#define SH_RTC2_INT_CONFIG_TYPE_MASK 0x0000000000000007
269
270/* SH_RTC2_INT_CONFIG_AGT */
271/* Description: Agent, must be 0 for SHub */
272#define SH_RTC2_INT_CONFIG_AGT_SHFT 3
273#define SH_RTC2_INT_CONFIG_AGT_MASK 0x0000000000000008
274
275/* SH_RTC2_INT_CONFIG_PID */
276/* Description: Processor ID, same setting as on targeted McKinley */
277#define SH_RTC2_INT_CONFIG_PID_SHFT 4
278#define SH_RTC2_INT_CONFIG_PID_MASK 0x00000000000ffff0
279
280/* SH_RTC2_INT_CONFIG_BASE */
281/* Description: Optional interrupt vector area, 2MB aligned */
282#define SH_RTC2_INT_CONFIG_BASE_SHFT 21
283#define SH_RTC2_INT_CONFIG_BASE_MASK 0x0003ffffffe00000
284
285/* SH_RTC2_INT_CONFIG_IDX */
286/* Description: Targeted McKinley interrupt vector */
287#define SH_RTC2_INT_CONFIG_IDX_SHFT 52
288#define SH_RTC2_INT_CONFIG_IDX_MASK 0x0ff0000000000000
289
290/* ==================================================================== */
291/* Register "SH_RTC2_INT_ENABLE" */
292/* SHub RTC 2 Interrupt Enable Registers */
293/* ==================================================================== */
294
295#define SH1_RTC2_INT_ENABLE 0x0000000110001600
296#define SH2_RTC2_INT_ENABLE 0x0000000010001600
297#define SH_RTC2_INT_ENABLE_MASK 0x0000000000000001
298#define SH_RTC2_INT_ENABLE_INIT 0x0000000000000000
299
300/* SH_RTC2_INT_ENABLE_RTC2_ENABLE */
301/* Description: Enable RTC 2 Interrupt */
302#define SH_RTC2_INT_ENABLE_RTC2_ENABLE_SHFT 0
303#define SH_RTC2_INT_ENABLE_RTC2_ENABLE_MASK 0x0000000000000001
304
305/* ==================================================================== */
306/* Register "SH_RTC3_INT_CONFIG" */
307/* SHub RTC 3 Interrupt Config Registers */
308/* ==================================================================== */
309
310#define SH1_RTC3_INT_CONFIG 0x0000000110001680
311#define SH2_RTC3_INT_CONFIG 0x0000000010001680
312#define SH_RTC3_INT_CONFIG_MASK 0x0ff3ffffffefffff
313#define SH_RTC3_INT_CONFIG_INIT 0x0000000000000000
314
315/* SH_RTC3_INT_CONFIG_TYPE */
316/* Description: Type of Interrupt: 0=INT, 2=PMI, 4=NMI, 5=INIT */
317#define SH_RTC3_INT_CONFIG_TYPE_SHFT 0
318#define SH_RTC3_INT_CONFIG_TYPE_MASK 0x0000000000000007
319
320/* SH_RTC3_INT_CONFIG_AGT */
321/* Description: Agent, must be 0 for SHub */
322#define SH_RTC3_INT_CONFIG_AGT_SHFT 3
323#define SH_RTC3_INT_CONFIG_AGT_MASK 0x0000000000000008
324
325/* SH_RTC3_INT_CONFIG_PID */
326/* Description: Processor ID, same setting as on targeted McKinley */
327#define SH_RTC3_INT_CONFIG_PID_SHFT 4
328#define SH_RTC3_INT_CONFIG_PID_MASK 0x00000000000ffff0
329
330/* SH_RTC3_INT_CONFIG_BASE */
331/* Description: Optional interrupt vector area, 2MB aligned */
332#define SH_RTC3_INT_CONFIG_BASE_SHFT 21
333#define SH_RTC3_INT_CONFIG_BASE_MASK 0x0003ffffffe00000
334
335/* SH_RTC3_INT_CONFIG_IDX */
336/* Description: Targeted McKinley interrupt vector */
337#define SH_RTC3_INT_CONFIG_IDX_SHFT 52
338#define SH_RTC3_INT_CONFIG_IDX_MASK 0x0ff0000000000000
339
340/* ==================================================================== */
341/* Register "SH_RTC3_INT_ENABLE" */
342/* SHub RTC 3 Interrupt Enable Registers */
343/* ==================================================================== */
344
345#define SH1_RTC3_INT_ENABLE 0x0000000110001700
346#define SH2_RTC3_INT_ENABLE 0x0000000010001700
347#define SH_RTC3_INT_ENABLE_MASK 0x0000000000000001
348#define SH_RTC3_INT_ENABLE_INIT 0x0000000000000000
349
350/* SH_RTC3_INT_ENABLE_RTC3_ENABLE */
351/* Description: Enable RTC 3 Interrupt */
352#define SH_RTC3_INT_ENABLE_RTC3_ENABLE_SHFT 0
353#define SH_RTC3_INT_ENABLE_RTC3_ENABLE_MASK 0x0000000000000001
354
355/* SH_EVENT_OCCURRED_RTC1_INT */
356/* Description: Pending RTC 1 Interrupt */
357#define SH_EVENT_OCCURRED_RTC1_INT_SHFT 24
358#define SH_EVENT_OCCURRED_RTC1_INT_MASK 0x0000000001000000
359
360/* SH_EVENT_OCCURRED_RTC2_INT */
361/* Description: Pending RTC 2 Interrupt */
362#define SH_EVENT_OCCURRED_RTC2_INT_SHFT 25
363#define SH_EVENT_OCCURRED_RTC2_INT_MASK 0x0000000002000000
364
365/* SH_EVENT_OCCURRED_RTC3_INT */
366/* Description: Pending RTC 3 Interrupt */
367#define SH_EVENT_OCCURRED_RTC3_INT_SHFT 26
368#define SH_EVENT_OCCURRED_RTC3_INT_MASK 0x0000000004000000
369
370/* ==================================================================== */
371/* Register "SH_INT_CMPB" */
372/* RTC Compare Value for Processor B */
373/* ==================================================================== */
374
375#define SH1_INT_CMPB 0x00000001101b0080
376#define SH2_INT_CMPB 0x00000000101b0080
377#define SH_INT_CMPB_MASK 0x007fffffffffffff
378#define SH_INT_CMPB_INIT 0x0000000000000000
379
380/* SH_INT_CMPB_REAL_TIME_CMPB */
381/* Description: Real Time Clock Compare */
382#define SH_INT_CMPB_REAL_TIME_CMPB_SHFT 0
383#define SH_INT_CMPB_REAL_TIME_CMPB_MASK 0x007fffffffffffff
384
385/* ==================================================================== */
386/* Register "SH_INT_CMPC" */
387/* RTC Compare Value for Processor C */
388/* ==================================================================== */
389
390#define SH1_INT_CMPC 0x00000001101b0100
391#define SH2_INT_CMPC 0x00000000101b0100
392#define SH_INT_CMPC_MASK 0x007fffffffffffff
393#define SH_INT_CMPC_INIT 0x0000000000000000
394
395/* SH_INT_CMPC_REAL_TIME_CMPC */
396/* Description: Real Time Clock Compare */
397#define SH_INT_CMPC_REAL_TIME_CMPC_SHFT 0
398#define SH_INT_CMPC_REAL_TIME_CMPC_MASK 0x007fffffffffffff
399
400/* ==================================================================== */
401/* Register "SH_INT_CMPD" */
402/* RTC Compare Value for Processor D */
403/* ==================================================================== */
404
405#define SH1_INT_CMPD 0x00000001101b0180
406#define SH2_INT_CMPD 0x00000000101b0180
407#define SH_INT_CMPD_MASK 0x007fffffffffffff
408#define SH_INT_CMPD_INIT 0x0000000000000000
409
410/* SH_INT_CMPD_REAL_TIME_CMPD */
411/* Description: Real Time Clock Compare */
412#define SH_INT_CMPD_REAL_TIME_CMPD_SHFT 0
413#define SH_INT_CMPD_REAL_TIME_CMPD_MASK 0x007fffffffffffff
414
415
416/* ==================================================================== */
417/* Some MMRs are functionally identical (or close enough) on both SHUB1 */
418/* and SHUB2 that it makes sense to define a geberic name for the MMR. */
419/* It is acceptible to use (for example) SH_IPI_INT to reference the */
420/* the IPI MMR. The value of SH_IPI_INT is determined at runtime based */
421/* on the type of the SHUB. Do not use these #defines in performance */
422/* critical code or loops - there is a small performance penalty. */
423/* ==================================================================== */
424#define shubmmr(a,b) (is_shub2() ? a##2_##b : a##1_##b)
425
426#define SH_REAL_JUNK_BUS_LED0 shubmmr(SH, REAL_JUNK_BUS_LED0)
427#define SH_IPI_INT shubmmr(SH, IPI_INT)
428#define SH_EVENT_OCCURRED shubmmr(SH, EVENT_OCCURRED)
429#define SH_EVENT_OCCURRED_ALIAS shubmmr(SH, EVENT_OCCURRED_ALIAS)
430#define SH_RTC shubmmr(SH, RTC)
431#define SH_RTC1_INT_CONFIG shubmmr(SH, RTC1_INT_CONFIG)
432#define SH_RTC1_INT_ENABLE shubmmr(SH, RTC1_INT_ENABLE)
433#define SH_RTC2_INT_CONFIG shubmmr(SH, RTC2_INT_CONFIG)
434#define SH_RTC2_INT_ENABLE shubmmr(SH, RTC2_INT_ENABLE)
435#define SH_RTC3_INT_CONFIG shubmmr(SH, RTC3_INT_CONFIG)
436#define SH_RTC3_INT_ENABLE shubmmr(SH, RTC3_INT_ENABLE)
437#define SH_INT_CMPB shubmmr(SH, INT_CMPB)
438#define SH_INT_CMPC shubmmr(SH, INT_CMPC)
439#define SH_INT_CMPD shubmmr(SH, INT_CMPD)
440
441#endif /* _ASM_IA64_SN_SHUB_MMR_H */