Annotation of sys/arch/alpha/pci/apecsreg.h, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: apecsreg.h,v 1.6 2001/02/16 08:23:39 jason Exp $ */
2: /* $NetBSD: apecsreg.h,v 1.5.2.2 1997/06/06 20:26:53 thorpej Exp $ */
3:
4: /*
5: * Copyright (c) 1995 Carnegie-Mellon University.
6: * All rights reserved.
7: *
8: * Author: Chris G. Demetriou
9: *
10: * Permission to use, copy, modify and distribute this software and
11: * its documentation is hereby granted, provided that both the copyright
12: * notice and this permission notice appear in all copies of the
13: * software, derivative works or modified versions, and any portions
14: * thereof, and that both notices appear in supporting documentation.
15: *
16: * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
17: * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
18: * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
19: *
20: * Carnegie Mellon requests users of this software to return to
21: *
22: * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
23: * School of Computer Science
24: * Carnegie Mellon University
25: * Pittsburgh PA 15213-3890
26: *
27: * any improvements or extensions that they make and grant Carnegie the
28: * rights to redistribute these changes.
29: */
30:
31: /*
32: * APECS Chipset registers and constants.
33: *
34: * Taken from ``DECchip 21071 and DECchip 21072 Core Logic Chipsets Data
35: * Sheet'' (DEC order number EC-QAEMA-TE), pages 4-1 - 4-27, 10-21 - 10-38.
36: */
37:
38: #define REGVAL(r) (*(volatile int32_t *)ALPHA_PHYS_TO_K0SEG(r))
39:
40: /*
41: * Base addresses
42: */
43: #define COMANCHE_BASE 0x180000000L /* 21071-CA Regs */
44: #define EPIC_BASE 0x1a0000000L /* 21071-DA Regs */
45: #define APECS_PCI_IACK 0x1b0000000L /* PCI Int. Ack. */
46: #define APECS_PCI_SIO 0x1c0000000L /* PCI Sp. I/O Space */
47: #define APECS_PCI_CONF 0x1e0000000L /* PCI Conf. Space */
48: #define APECS_PCI_SPARSE 0x200000000L /* PCI Sparse Space */
49: #define APECS_PCI_DENSE 0x300000000L /* PCI Dense Space */
50:
51:
52: /*
53: * 21071-CA Registers
54: */
55:
56: /*
57: * 21071-CA General Registers
58: */
59: #define COMANCHE_GCR (COMANCHE_BASE + 0x0000) /* General Control */
60: #define COMANCHE_GCR_RSVD 0xc009
61: #define COMANCHE_GCR_SYSARB 0x0006
62: #define COMANCHE_GCR_WIDEMEM 0x0010
63: #define COMANCHE_GCR_BC_EN 0x0020
64: #define COMANCHE_GCR_BC_NOALLOC 0x0040
65: #define COMANCHE_GCR_BC_LONGWR 0x0080
66: #define COMANCHE_GCR_BC_IGNTAG 0x0100
67: #define COMANCHE_GCR_BC_FRCTAG 0x0200
68: #define COMANCHE_GCR_BC_FRCD 0x0400
69: #define COMANCHE_GCR_BC_FRCV 0x0800
70: #define COMANCHE_GCR_BC_FRCP 0x1000
71: #define COMANCHE_GCR_BC_BADAP 0x2000
72:
73: #define COMANCHE_RSVD (COMANCHE_BASE + 0x0020) /* Reserved */
74:
75: #define COMANCHE_ED (COMANCHE_BASE + 0x0040) /* Err & Diag Status */
76: #define COMANCHE_ED_LOSTERR 0x0001
77: #define COMANCHE_ED_BC_TAPERR 0x0002
78: #define COMANCHE_ED_BC_TCPERR 0x0004
79: #define COMANCHE_ED_NXMERR 0x0008
80: #define COMANCHE_ED_DMACAUSE 0x0010
81: #define COMANCHE_ED_VICCAUSE 0x0020
82: #define COMANCHE_ED_CREQCAUSE 0x01c0
83: #define COMANCHE_ED_RSVD 0x1e00
84: #define COMANCHE_ED_PASS2 0x2000
85: #define COMANCHE_ED_IDXLLOCK 0x4000
86: #define COMANCHE_ED_WRPEND 0x8000
87:
88: #define COMANCHE_TAGENB (COMANCHE_BASE + 0x0060) /* Tag Enable */
89: #define COMANCHE_TAGENB_RSVD 0x0001
90:
91: #define COMANCHE_TAGENB_C_4G 0x0000
92: #define COMANCHE_TAGENB_C_2G 0x8000
93: #define COMANCHE_TAGENB_C_1G 0xc000
94: #define COMANCHE_TAGENB_C_512M 0xe000
95: #define COMANCHE_TAGENB_C_256M 0xf000
96: #define COMANCHE_TAGENB_C_128M 0xf800
97: #define COMANCHE_TAGENB_C_64M 0xfc00
98: #define COMANCHE_TAGENB_C_32M 0xfe00
99: #define COMANCHE_TAGENB_C_16M 0xff00
100: #define COMANCHE_TAGENB_C_8M 0xff80
101: #define COMANCHE_TAGENB_C_4M 0xffc0
102: #define COMANCHE_TAGENB_C_2M 0xffe0
103: #define COMANCHE_TAGENB_C_1M 0xfff0
104: #define COMANCHE_TAGENB_C_512K 0xfff8
105: #define COMANCHE_TAGENB_C_256K 0xfffc
106: #define COMANCHE_TAGENB_C_128K 0xfffe
107:
108: #define COMANCHE_TAGENB_M_4G 0xffff
109: #define COMANCHE_TAGENB_M_2G 0x7fff
110: #define COMANCHE_TAGENB_M_1G 0x3fff
111: #define COMANCHE_TAGENB_M_512M 0x1fff
112: #define COMANCHE_TAGENB_M_256M 0x0fff
113: #define COMANCHE_TAGENB_M_128M 0x07ff
114: #define COMANCHE_TAGENB_M_64M 0x03ff
115: #define COMANCHE_TAGENB_M_32M 0x01ff
116: #define COMANCHE_TAGENB_M_16M 0x00ff
117: #define COMANCHE_TAGENB_M_8M 0x007f
118: #define COMANCHE_TAGENB_M_4M 0x003f
119: #define COMANCHE_TAGENB_M_2M 0x001f
120: #define COMANCHE_TAGENB_M_1M 0x000e
121: #define COMANCHE_TAGENB_M_512K 0x0006
122: #define COMANCHE_TAGENB_M_256K 0x0002
123: #define COMANCHE_TAGENB_M_128K 0x0000
124:
125: #define COMANCHE_ERR_LO (COMANCHE_BASE + 0x0080) /* Error Low Address */
126:
127: #define COMANCHE_ERR_HI (COMANCHE_BASE + 0x00a0) /* Error High Address */
128: #define COMANCHE_ERR_HI_RSVD 0xe000
129:
130: #define COMANCHE_LCK_LO (COMANCHE_BASE + 0x00c0) /* LDx_L Low Address */
131:
132: #define COMANCHE_LCK_HI (COMANCHE_BASE + 0x00e0) /* LDx_L High Address */
133: #define COMANCHE_LOCK_HI_RSVD 0xe000
134:
135: /*
136: * 21071-CA Memory Registers
137: */
138: #define COMANCHE_GTIM (COMANCHE_BASE + 0x0200) /* Global Timing */
139: #define COMANCHE_LOCK_HI_RSVD 0xe000
140:
141: #define COMANCHE_RTIM (COMANCHE_BASE + 0x0220) /* Refresh Timing */
142:
143: #define COMANCHE_VFP (COMANCHE_BASE + 0x0240) /* Video Frame Ptr. */
144: #define COMANCHE_VFP_COL 0x001f
145: #define COMANCHE_VFP_ROW 0x3fe0
146: #define COMANCHE_VFP_SUBBANK 0x4000
147: #define COMANCHE_VFP_RSVD 0x8000
148:
149: #define COMANCHE_PD_LO (COMANCHE_BASE + 0x0260) /* Pres Detect Low */
150:
151: #define COMANCHE_PD_HI (COMANCHE_BASE + 0x0280) /* Pres Detect High */
152:
153: /*
154: * 21071-CA Memory banks' Base Address Register format
155: */
156: #define COMANCHE_B0_BAR (COMANCHE_BASE + 0x0800) /* Bank 0 BA */
157: #define COMANCHE_B1_BAR (COMANCHE_BASE + 0x0820) /* Bank 1 BA */
158: #define COMANCHE_B2_BAR (COMANCHE_BASE + 0x0840) /* Bank 2 BA */
159: #define COMANCHE_B3_BAR (COMANCHE_BASE + 0x0860) /* Bank 3 BA */
160: #define COMANCHE_B4_BAR (COMANCHE_BASE + 0x0880) /* Bank 4 BA */
161: #define COMANCHE_B5_BAR (COMANCHE_BASE + 0x08a0) /* Bank 5 BA */
162: #define COMANCHE_B6_BAR (COMANCHE_BASE + 0x08c0) /* Bank 6 BA */
163: #define COMANCHE_B7_BAR (COMANCHE_BASE + 0x08e0) /* Bank 7 BA */
164: #define COMANCHE_B8_BAR (COMANCHE_BASE + 0x0900) /* Bank 8 BA */
165: #define COMANCHE_BAR_RSVD 0x001f
166:
167: /*
168: * 21071-CA Memory banks' Configuration Register format
169: */
170: #define COMANCHE_B0_CR (COMANCHE_BASE + 0x0a00) /* Bank 0 Config */
171: #define COMANCHE_B1_CR (COMANCHE_BASE + 0x0a20) /* Bank 1 Config */
172: #define COMANCHE_B2_CR (COMANCHE_BASE + 0x0a40) /* Bank 2 Config */
173: #define COMANCHE_B3_CR (COMANCHE_BASE + 0x0a60) /* Bank 3 Config */
174: #define COMANCHE_B4_CR (COMANCHE_BASE + 0x0a80) /* Bank 4 Config */
175: #define COMANCHE_B5_CR (COMANCHE_BASE + 0x0aa0) /* Bank 5 Config */
176: #define COMANCHE_B6_CR (COMANCHE_BASE + 0x0ac0) /* Bank 6 Config */
177: #define COMANCHE_B7_CR (COMANCHE_BASE + 0x0ae0) /* Bank 7 Config */
178: #define COMANCHE_B8_CR (COMANCHE_BASE + 0x0b00) /* Bank 8 Config */
179: #define COMANCHE_CR_VALID 0x0001
180: #define COMANCHE_CR_SIZE 0x001e
181: #define COMANCHE_CR_SUBENA 0x0020
182: #define COMANCHE_CR_COLSEL 0x01c0
183: #define COMANCHE_CR_S0_RSVD 0xfe00
184: #define COMANCHE_CR_S8_CHECK 0x0200
185: #define COMANCHE_CR_S8_RSVD 0xfc00
186:
187: /*
188: * 21071-CA Memory banks' Timing Register A format
189: */
190: #define COMANCHE_B0_TRA (COMANCHE_BASE + 0x0c00) /* Bank 0 Timing A */
191: #define COMANCHE_B1_TRA (COMANCHE_BASE + 0x0c20) /* Bank 1 Timing A */
192: #define COMANCHE_B2_TRA (COMANCHE_BASE + 0x0c40) /* Bank 2 Timing A */
193: #define COMANCHE_B3_TRA (COMANCHE_BASE + 0x0c60) /* Bank 3 Timing A */
194: #define COMANCHE_B4_TRA (COMANCHE_BASE + 0x0c80) /* Bank 4 Timing A */
195: #define COMANCHE_B5_TRA (COMANCHE_BASE + 0x0ca0) /* Bank 5 Timing A */
196: #define COMANCHE_B6_TRA (COMANCHE_BASE + 0x0cc0) /* Bank 6 Timing A */
197: #define COMANCHE_B7_TRA (COMANCHE_BASE + 0x0ce0) /* Bank 7 Timing A */
198: #define COMANCHE_B8_TRA (COMANCHE_BASE + 0x0d00) /* Bank 8 Timing A */
199: #define COMANCHE_TRA_ROWSETUP 0x0003
200: #define COMANCHE_TRA_ROWHOLD 0x000c
201: #define COMANCHE_TRA_COLSETUP 0x0070
202: #define COMANCHE_TRA_COLHOLD 0x0180
203: #define COMANCHE_TRA_RDLYROW 0x0e00
204: #define COMANCHE_TRA_RDLYCOL 0x7000
205: #define COMANCHE_TRA_RSVD 0x8000
206:
207: /*
208: * 21071-CA Memory banks' Timing Register B format
209: */
210: #define COMANCHE_B0_TRB (COMANCHE_BASE + 0x0e00) /* Bank 0 Timing B */
211: #define COMANCHE_B1_TRB (COMANCHE_BASE + 0x0e20) /* Bank 1 Timing B */
212: #define COMANCHE_B2_TRB (COMANCHE_BASE + 0x0e40) /* Bank 2 Timing B */
213: #define COMANCHE_B3_TRB (COMANCHE_BASE + 0x0e60) /* Bank 3 Timing B */
214: #define COMANCHE_B4_TRB (COMANCHE_BASE + 0x0e80) /* Bank 4 Timing B */
215: #define COMANCHE_B5_TRB (COMANCHE_BASE + 0x0ea0) /* Bank 5 Timing B */
216: #define COMANCHE_B6_TRB (COMANCHE_BASE + 0x0ec0) /* Bank 6 Timing B */
217: #define COMANCHE_B7_TRB (COMANCHE_BASE + 0x0ee0) /* Bank 7 Timing B */
218: #define COMANCHE_B8_TRB (COMANCHE_BASE + 0x0f00) /* Bank 8 Timing B */
219: #define COMANCHE_TRB_RTCAS 0x0007
220: #define COMANCHE_TRB_WTCAS 0x0038
221: #define COMANCHE_TRB_TCP 0x00c0
222: #define COMANCHE_TRB_WHOLD0ROW 0x0700
223: #define COMANCHE_TRB_WHOLD0COL 0x3800
224: #define COMANCHE_TRB_RSVD 0xc000
225:
226:
227: /*
228: * 21071-DA Registers
229: */
230: #define EPIC_DCSR (EPIC_BASE + 0x0000) /* Diagnostic CSR */
231: #define EPIC_DCSR_TENB 0x00000001
232: #define EPIC_DCSR_RSVD 0x7fc00082
233: #define EPIC_DCSR_PENB 0x00000004
234: #define EPIC_DCSR_DCEI 0x00000008
235: #define EPIC_DCSR_DPEC 0x00000010
236: #define EPIC_DCSR_IORT 0x00000020
237: #define EPIC_DCSR_LOST 0x00000040
238: #define EPIC_DCSR_DDPE 0x00000100
239: #define EPIC_DCSR_IOPE 0x00000200
240: #define EPIC_DCSR_TABT 0x00000400
241: #define EPIC_DCSR_NDEV 0x00000800
242: #define EPIC_DCSR_CMRD 0x00001000
243: #define EPIC_DCSR_UMRD 0x00002000
244: #define EPIC_DCSR_IPTL 0x00004000
245: #define EPIC_DCSR_MERR 0x00008000
246: #define EPIC_DCSR_DBYP 0x00030000
247: #define EPIC_DCSR_PCMD 0x003c0000
248: #define EPIC_DCSR_PASS2 0x80000000
249:
250: #define EPIC_PEAR (EPIC_BASE + 0x0020) /* PCI Err Addr. */
251:
252: #define EPIC_SEAR (EPIC_BASE + 0x0040) /* sysBus Err Addr. */
253: #define EPIC_SEAR_RSVD 0x0000000f
254: #define EPIC_SEAR_SYS_ERR 0xfffffff0
255:
256: #define EPIC_DUMMY_1 (EPIC_BASE + 0x0060) /* Dummy 1 */
257: #define EPIC_DUMMY_2 (EPIC_BASE + 0x0080) /* Dummy 2 */
258: #define EPIC_DUMMY_3 (EPIC_BASE + 0x00a0) /* Dummy 3 */
259:
260: #define EPIC_TBASE_1 (EPIC_BASE + 0x00c0) /* Trans. Base 1 */
261: #define EPIC_TBASE_2 (EPIC_BASE + 0x00e0) /* Trans. Base 2 */
262: #define EPIC_TBASE_RSVD 0x000001ff
263: #define EPIC_TBASE_T_BASE 0xfffffe00
264: #define EPIC_TBASE_SHIFT 1
265:
266: #define EPIC_PCI_BASE_1 (EPIC_BASE + 0x0100) /* PCI Base 1 */
267: #define EPIC_PCI_BASE_2 (EPIC_BASE + 0x0120) /* PCI Base 2 */
268: #define EPIC_PCI_BASE_RSVD 0x0003ffff
269: #define EPIC_PCI_BASE_SGEN 0x00040000
270: #define EPIC_PCI_BASE_WENB 0x00080000
271: #define EPIC_PCI_BASE_PCI_BASE 0xfff00000
272:
273: #define EPIC_PCI_MASK_1 (EPIC_BASE + 0x0140) /* PCI Mask 1 */
274: #define EPIC_PCI_MASK_2 (EPIC_BASE + 0x0160) /* PCI Mask 2 */
275: #define EPIC_PCI_MASK_RSVD 0x000fffff
276: #define EPIC_PCI_MASK_PCI_MASK 0xfff00000
277: #define EPIC_PCI_MASK_1M 0x00000000
278: #define EPIC_PCI_MASK_2M 0x00100000
279: #define EPIC_PCI_MASK_4M 0x00300000
280: #define EPIC_PCI_MASK_8M 0x00700000
281: #define EPIC_PCI_MASK_16M 0x00f00000
282: #define EPIC_PCI_MASK_32M 0x01f00000
283: #define EPIC_PCI_MASK_64M 0x03f00000
284: #define EPIC_PCI_MASK_128M 0x07f00000
285: #define EPIC_PCI_MASK_256M 0x0ff00000
286: #define EPIC_PCI_MASK_512M 0x1ff00000
287: #define EPIC_PCI_MASK_1G 0x3ff00000
288: #define EPIC_PCI_MASK_2G 0x7ff00000
289: #define EPIC_PCI_MASK_4G 0xfff00000
290:
291: #define EPIC_HAXR0 (EPIC_BASE + 0x0180) /* Host Addr Extn 0 */
292:
293: #define EPIC_HAXR1 (EPIC_BASE + 0x01a0) /* Host Addr Extn 1 */
294: #define EPIC_HAXR1_RSVD 0x07ffffff
295: #define EPIC_HAXR1_EADDR 0xf8000000
296:
297: #define EPIC_HAXR2 (EPIC_BASE + 0x01c0) /* Host Addr Extn 2 */
298: #define EPIC_HAXR2_CONF_TYPE 0x00000003
299: #define EPIC_HAXR2_CONF_TYPO0 0x00000000
300: #define EPIC_HAXR2_CONF_TYPE1 0x00000001
301: #define EPIC_HAXR2_RSVD 0x00fffffc
302: #define EPIC_HAXR2_EADDR 0xff000000
303:
304: #define EPIC_PMLT (EPIC_BASE + 0x01e0) /* PCI Mstr Lat Tmr */
305: #define EPIC_PMLT_PMLC 0x000000ff
306: #define EPIC_PMLT_RSVD 0xffffff00
307:
308: #define EPIC_TLB_TAG_0 (EPIC_BASE + 0x0200) /* TLB Tag 0 */
309: #define EPIC_TLB_TAG_1 (EPIC_BASE + 0x0220) /* TLB Tag 1 */
310: #define EPIC_TLB_TAG_2 (EPIC_BASE + 0x0240) /* TLB Tag 2 */
311: #define EPIC_TLB_TAG_3 (EPIC_BASE + 0x0260) /* TLB Tag 3 */
312: #define EPIC_TLB_TAG_4 (EPIC_BASE + 0x0280) /* TLB Tag 4 */
313: #define EPIC_TLB_TAG_5 (EPIC_BASE + 0x02a0) /* TLB Tag 5 */
314: #define EPIC_TLB_TAG_6 (EPIC_BASE + 0x02c0) /* TLB Tag 6 */
315: #define EPIC_TLB_TAG_7 (EPIC_BASE + 0x02e0) /* TLB Tag 7 */
316: #define EPIC_TLB_TAG_RSVD 0x00000fff
317: #define EPIC_TLB_TAG_EVAL 0x00001000
318: #define EPIC_TLB_TAG_PCI_PAGE 0xffffe000
319:
320: #define EPIC_TLB_DATA_0 (EPIC_BASE + 0x0300) /* TLB Data 0 */
321: #define EPIC_TLB_DATA_1 (EPIC_BASE + 0x0320) /* TLB Data 1 */
322: #define EPIC_TLB_DATA_2 (EPIC_BASE + 0x0340) /* TLB Data 2 */
323: #define EPIC_TLB_DATA_3 (EPIC_BASE + 0x0360) /* TLB Data 3 */
324: #define EPIC_TLB_DATA_4 (EPIC_BASE + 0x0380) /* TLB Data 4 */
325: #define EPIC_TLB_DATA_5 (EPIC_BASE + 0x03a0) /* TLB Data 5 */
326: #define EPIC_TLB_DATA_6 (EPIC_BASE + 0x03c0) /* TLB Data 6 */
327: #define EPIC_TLB_DATA_7 (EPIC_BASE + 0x03e0) /* TLB Data 7 */
328: #define EPIC_TLB_DATA_RSVD 0xffe00001
329: #define EPIC_TLB_DATA_CPU_PAGE 0x001ffffe
330:
331: #define EPIC_TBIA (EPIC_BASE + 0x0400) /* TLB Invl All */
332:
333: /*
334: * EPIC Scatter-Gather Map Entries
335: */
336:
337: struct sgmapent {
338: u_int64_t val;
339: };
340: #define SGMAPENT_EVAL 0x0000000000000001L
341: #define SGMAPENT_PFN 0x00000000001ffffeL
342: #define SGMAPENT_RSVD 0xffffffffffe00000L
343:
344: #define SGMAP_MAKEENTRY(pfn) (SGMAPENT_EVAL | ((pfn) << 1))
CVSweb