blob: f66efc9466bab5cd21107039d4288b218350bb10 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
|
/* $OpenBSD: ciareg.h,v 1.7 1998/06/28 03:00:25 angelos Exp $ */
/* $NetBSD: ciareg.h,v 1.7 1996/11/23 06:42:55 cgd Exp $ */
/*
* Copyright (c) 1995, 1996 Carnegie-Mellon University.
* All rights reserved.
*
* Author: Chris G. Demetriou
*
* Permission to use, copy, modify and distribute this software and
* its documentation is hereby granted, provided that both the copyright
* notice and this permission notice appear in all copies of the
* software, derivative works or modified versions, and any portions
* thereof, and that both notices appear in supporting documentation.
*
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
* FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
*
* Carnegie Mellon requests users of this software to return to
*
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
* School of Computer Science
* Carnegie Mellon University
* Pittsburgh PA 15213-3890
*
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*/
/*
* 21171 Chipset registers and constants.
*
* Taken from XXX
*/
#define REGVAL(r) (*(int32_t *)ALPHA_PHYS_TO_K0SEG(r))
/*
* Base addresses
*/
#define CIA_PCI_SMEM1 0x8000000000UL
#define CIA_PCI_SMEM2 0x8400000000UL
#define CIA_PCI_SMEM3 0x8500000000UL
#define CIA_PCI_SIO1 0x8580000000UL
#define CIA_PCI_SIO2 0x85c0000000UL
#define CIA_PCI_DENSE 0x8600000000UL
#define CIA_PCI_CONF 0x8700000000UL
#define CIA_PCI_IACK 0x8720000000UL
#define CIA_CSRS 0x8740000000UL
#define CIA_PCI_MC_CSRS 0x8750000000UL
#define CIA_PCI_ATRANS 0x8760000000UL
#define CIA_PCI_TBIA 0x8760000100UL
#define CIA_EV56_BWMEM 0x8800000000UL
#define CIA_EV56_BWIO 0x8900000000UL
#define CIA_EV56_BWCONF0 0x8a00000000UL
#define CIA_EV56_BWCONF1 0x8b00000000UL
#define CIA_PCI_W0BASE 0x8760000400UL
#define CIA_PCI_W0MASK 0x8760000440UL
#define CIA_PCI_T0BASE 0x8760000480UL
#define CIA_PCI_W1BASE 0x8760000500UL
#define CIA_PCI_W1MASK 0x8760000540UL
#define CIA_PCI_T1BASE 0x8760000580UL
#define CIA_PCI_W2BASE 0x8760000600UL
#define CIA_PCI_W2MASK 0x8760000640UL
#define CIA_PCI_T2BASE 0x8760000680UL
#define CIA_PCI_W3BASE 0x8760000700UL
#define CIA_PCI_W3MASK 0x8760000740UL
#define CIA_PCI_T3BASE 0x8760000780UL
#define PYXIS_INT_REQ 0x87a0000000UL
#define PYXIS_INT_MASK 0x87a0000040UL
#define PYXIS_GPO 0x87a0000180UL
/*
* Values for CIA_PCI_TBIA
*/
#define CIA_PCI_TBIA_NOOP 0 /* no operation */
#define CIA_PCI_TBIA_LOCKED 1 /* invalidate and unlock locked tags */
#define CIA_PCI_TBIA_UNLOCKED 2 /* invalidate unlocked tags */
#define CIA_PCI_TBIA_ALL 3 /* invalidate and unlock all tags */
#define CIA_TLB_NTAGS 8 /* number of TLB entries */
/*
* Values for CIA_PCI_WnBASE
*/
#define CIA_PCI_WnBASE_W_BASE 0xfff00000
#define CIA_PCI_WnBASE_DAC_EN 0x00000008 /* W3BASE only */
#define CIA_PCI_WnBASE_MEMCS_EN 0x00000004 /* W0BASE only */
#define CIA_PCI_WnBASE_SG_EN 0x00000002
#define CIA_PCI_WnBASE_W_EN 0x00000001
/*
* Values for CIA_PCI_WnMASK
*/
#define CIA_PCI_WnMASK_W_MASK 0xfff00000
#define CIA_PCI_WnMASK_1M 0x00000000
#define CIA_PCI_WnMASK_2M 0x00100000
#define CIA_PCI_WnMASK_4M 0x00300000
#define CIA_PCI_WnMASK_8M 0x00700000
#define CIA_PCI_WnMASK_16M 0x00f00000
#define CIA_PCI_WnMASK_32M 0x01f00000
#define CIA_PCI_WnMASK_64M 0x03f00000
#define CIA_PCI_WnMASK_128M 0x07f00000
#define CIA_PCI_WnMASK_256M 0x0ff00000
#define CIA_PCI_WnMASK_512M 0x1ff00000
#define CIA_PCI_WnMASK_1G 0x3ff00000
#define CIA_PCI_WnMASK_2G 0x7ff00000
#define CIA_PCI_WnMASK_4G 0xfff00000
/*
* Values for CIA_PCI_TnBASE
*/
#define CIA_PCI_TnBASE_MASK 0xfffffff0
#define CIA_PCI_TnBASE_SHIFT 2
/*
* General CSRs
*/
#define CIA_CSR_REV (CIA_CSRS + 0x80)
#define REV_MASK 0x000000ff
#define REV_ALT_MEM 0x00000100 /* not on Pyxis */
#define REV_PYXIS_ID_MASK 0x0000ff00
#define REV_PYXIS_ID_21174 0x00000100
#define CIA_CSR_CTRL (CIA_CSRS + 0x100)
#define CTRL_RCI_EN 0x00000001
#define CTRL_PCI_LOCK_EN 0x00000002
#define CTRL_PCI_LOOP_EN 0x00000004
#define CTRL_FST_BB_EN 0x00000008
#define CTRL_PCI_MST_EN 0x00000010
#define CTRL_PCI_MEM_EN 0x00000020
#define CTRL_PCI_REQ64_EN 0x00000040
#define CTRL_PCI_ACK64_EN 0x00000080
#define CTRL_ADDR_PE_EN 0x00000100
#define CTRL_PERR_EN 0x00000200
#define CTRL_FILL_ERR_EN 0x00000400
#define CTRL_ECC_CHK_EN 0x00001000
#define CTRL_CACK_EN_PE 0x00002000
#define CTRL_CON_IDLE_BC 0x00004000
#define CTRL_CSR_IOA_BYPASS 0x00008000
#define CTRL_IO_FLUSHREQ_EN 0x00010000
#define CTRL_CPU_CLUSHREQ_EN 0x00020000
#define CTRL_ARB_EV5_EN 0x00040000
#define CTRL_EN_ARB_LINK 0x00080000
#define CTRL_RD_TYPE 0x00300000
#define CTRL_RL_TYPE 0x03000000
#define CTRL_RM_TYPE 0x30000000
/* a.k.a. CIA_CSR_PYXIS_CTRL1 */
#define CIA_CSR_CNFG (CIA_CSRS + 0x140)
#define CNFG_BWEN 0x00000001
#define CNFG_MWEN 0x00000010
#define CNFG_DWEN 0x00000020
#define CNFG_WLEN 0x00000100
#define CIA_CSR_CNFG_BITS "\20\11WLEN\6DWEN\5MWEN\1BWEN"
#define CIA_CSR_HAE_MEM (CIA_CSRS + 0x400)
#define HAE_MEM_REG1_START(x) (((u_int32_t)(x) & 0xe0000000UL) << 0)
#define HAE_MEM_REG1_MASK 0x1fffffffUL
#define HAE_MEM_REG2_START(x) (((u_int32_t)(x) & 0x0000f800UL) << 16)
#define HAE_MEM_REG2_MASK 0x07ffffffUL
#define HAE_MEM_REG3_START(x) (((u_int32_t)(x) & 0x000000fcUL) << 24)
#define HAE_MEM_REG3_MASK 0x03ffffffUL
#define CIA_CSR_HAE_IO (CIA_CSRS + 0x440)
#define HAE_IO_REG1_START(x) 0UL
#define HAE_IO_REG1_MASK 0x01ffffffUL
#define HAE_IO_REG2_START(x) (((u_int32_t)(x) & 0xfe000000UL) << 0)
#define HAE_IO_REG2_MASK 0x01ffffffUL
#define CIA_CSR_CFG (CIA_CSRS + 0x480)
#define CFG_CFG_MASK 0x00000003UL
#define CIA_CSR_CIA_ERR (CIA_CSRS + 0x8200)
#define CIA_ERR_COR_ERR 0x00000001
#define CIA_ERR_UN_COR_ERR 0x00000002
#define CIA_ERR_CPU_PE 0x00000004
#define CIA_ERR_MEM_NEM 0x00000008
#define CIA_ERR_PCI_SERR 0x00000010
#define CIA_ERR_PERR 0x00000020
#define CIA_ERR_PCI_ADDR_PE 0x00000040
#define CIA_ERR_RCVD_MAS_ABT 0x00000080
#define CIA_ERR_RCVD_TAR_ABT 0x00000100
#define CIA_ERR_PA_PTE_INV 0x00000200
#define CIA_ERR_FROM_WRT_ERR 0x00000400
#define CIA_ERR_IOA_TIMEOUT 0x00000800
#define CIA_ERR_LOST_COR_ERR 0x00010000
#define CIA_ERR_LOST_UN_COR_ERR 0x00020000
#define CIA_ERR_LOST_CPU_PE 0x00040000
#define CIA_ERR_LOST_MEM_NEM 0x00080000
#define CIA_ERR_LOST_PERR 0x00200000
#define CIA_ERR_LOST_PCI_ADDR_PE 0x00400000
#define CIA_ERR_LOST_RCVD_MAS_ABT 0x00800000
#define CIA_ERR_LOST_RCVD_TAR_ABT 0x01000000
#define CIA_ERR_LOST_PA_PTE_INV 0x02000000
#define CIA_ERR_LOST_FROM_WRT_ERR 0x04000000
#define CIA_ERR_LOST_IOA_TIMEOUT 0x08000000
#define CIA_ERR_VALID 0x80000000
|