bireg.h revision 1.6 1 1.6 ragge /* $NetBSD: bireg.h,v 1.6 1999/08/04 19:12:22 ragge Exp $ */
2 1.1 ragge /*
3 1.1 ragge * Copyright (c) 1988 Regents of the University of California.
4 1.1 ragge * All rights reserved.
5 1.1 ragge *
6 1.1 ragge * This code is derived from software contributed to Berkeley by
7 1.1 ragge * Chris Torek.
8 1.1 ragge *
9 1.1 ragge * Redistribution and use in source and binary forms, with or without
10 1.1 ragge * modification, are permitted provided that the following conditions
11 1.1 ragge * are met:
12 1.1 ragge * 1. Redistributions of source code must retain the above copyright
13 1.1 ragge * notice, this list of conditions and the following disclaimer.
14 1.1 ragge * 2. Redistributions in binary form must reproduce the above copyright
15 1.1 ragge * notice, this list of conditions and the following disclaimer in the
16 1.1 ragge * documentation and/or other materials provided with the distribution.
17 1.1 ragge * 3. All advertising materials mentioning features or use of this software
18 1.1 ragge * must display the following acknowledgement:
19 1.1 ragge * This product includes software developed by the University of
20 1.1 ragge * California, Berkeley and its contributors.
21 1.1 ragge * 4. Neither the name of the University nor the names of its contributors
22 1.1 ragge * may be used to endorse or promote products derived from this software
23 1.1 ragge * without specific prior written permission.
24 1.1 ragge *
25 1.1 ragge * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
26 1.1 ragge * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27 1.1 ragge * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
28 1.1 ragge * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
29 1.1 ragge * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
30 1.1 ragge * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
31 1.1 ragge * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
32 1.1 ragge * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33 1.1 ragge * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
34 1.1 ragge * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
35 1.1 ragge * SUCH DAMAGE.
36 1.1 ragge *
37 1.1 ragge * @(#)bireg.h 7.3 (Berkeley) 6/28/90
38 1.1 ragge */
39 1.1 ragge
40 1.1 ragge /*
41 1.1 ragge * VAXBI node definitions.
42 1.1 ragge */
43 1.1 ragge
44 1.1 ragge /*
45 1.1 ragge * BI node addresses
46 1.1 ragge */
47 1.6 ragge #define NODESIZE 0x2000 /* Size of one BI node */
48 1.6 ragge #define BI_NODE(node) (NODESIZE * (node))
49 1.4 ragge #define BI_BASE(bi,nod) ((0x20000000 + (bi) * 0x2000000) + BI_NODE(nod))
50 1.1 ragge #define MAXNBI 16 /* Spec says there can be 16 anyway */
51 1.1 ragge #define NNODEBI 16 /* 16 nodes per BI */
52 1.1 ragge
53 1.1 ragge #define BI_PROBE 0x80000 /* CPU on 8200, NBIA on 8800 */
54 1.1 ragge /*
55 1.1 ragge * BI nodes all start with BI interface registers (those on the BIIC chip).
56 1.1 ragge * These are followed with interface-specific registers.
57 1.1 ragge *
58 1.1 ragge * NB: This structure does NOT include the four GPRs (not anymore!)
59 1.6 ragge *
60 1.6 ragge * 990712: The structs not used anymore due to conversion to bus.h.
61 1.1 ragge */
62 1.6 ragge #ifdef notdef
63 1.1 ragge struct biiregs {
64 1.1 ragge u_short bi_dtype; /* device type */
65 1.1 ragge u_short bi_revs; /* revisions */
66 1.1 ragge u_long bi_csr; /* control and status register */
67 1.1 ragge u_long bi_ber; /* bus error register */
68 1.1 ragge u_long bi_eintrcsr; /* error interrupt control register */
69 1.1 ragge u_long bi_intrdes; /* interrupt destination register */
70 1.1 ragge /* the rest are not required for all nodes */
71 1.1 ragge u_long bi_ipintrmsk; /* IP interrupt mask register */
72 1.1 ragge u_long bi_fipsdes; /* Force-Bit IPINTR/STOP destination reg */
73 1.1 ragge u_long bi_ipintrsrc; /* IPINTR source register */
74 1.1 ragge u_long bi_sadr; /* starting address register */
75 1.1 ragge u_long bi_eadr; /* ending address register */
76 1.1 ragge u_long bi_bcicsr; /* BCI control and status register */
77 1.1 ragge u_long bi_wstat; /* write status register */
78 1.1 ragge u_long bi_fipscmd; /* Force-Bit IPINTR/STOP command reg */
79 1.1 ragge u_long bi_xxx1[3]; /* unused */
80 1.1 ragge u_long bi_uintrcsr; /* user interface interrupt control reg */
81 1.1 ragge u_long bi_xxx2[43]; /* unused */
82 1.1 ragge /* although these are on the BIIC, their interpretation varies */
83 1.1 ragge /* u_long bi_gpr[4]; */ /* general purpose registers */
84 1.1 ragge };
85 1.1 ragge
86 1.1 ragge /*
87 1.1 ragge * A generic BI node.
88 1.1 ragge */
89 1.1 ragge struct bi_node {
90 1.1 ragge struct biiregs biic; /* interface */
91 1.1 ragge u_long bi_xxx[1988]; /* pad to 8K */
92 1.1 ragge };
93 1.1 ragge
94 1.1 ragge /*
95 1.1 ragge * A cpu node.
96 1.1 ragge */
97 1.1 ragge struct bi_cpu {
98 1.1 ragge struct biiregs biic; /* interface chip */
99 1.1 ragge u_long bi_gpr[4]; /* gprs (unused) */
100 1.1 ragge u_long bi_sosr; /* slave only status register */
101 1.1 ragge u_long bi_xxx[63]; /* pad */
102 1.1 ragge u_long bi_rxcd; /* receive console data register */
103 1.1 ragge };
104 1.6 ragge #endif
105 1.6 ragge
106 1.6 ragge #define BIREG_DTYPE 0x00
107 1.6 ragge #define BIREG_VAXBICSR 0x04
108 1.6 ragge #define BIREG_BER 0x08
109 1.6 ragge #define BIREG_EINTRCSR 0x0c
110 1.6 ragge #define BIREG_INTRDES 0x10
111 1.6 ragge #define BIREG_IPINTRMSK 0x14
112 1.6 ragge #define BIREG_FIPSDES 0x18
113 1.6 ragge #define BIREG_IPINTRSRC 0x1c
114 1.6 ragge #define BIREG_SADR 0x20
115 1.6 ragge #define BIREG_EADR 0x24
116 1.6 ragge #define BIREG_BCICSR 0x28
117 1.6 ragge #define BIREG_WSTAT 0x2c
118 1.6 ragge #define BIREG_FIPSCMD 0x30
119 1.6 ragge #define BIREG_UINTRCSR 0x40
120 1.1 ragge
121 1.1 ragge /* device types */
122 1.1 ragge #define BIDT_MS820 0x0001 /* MS820 memory board */
123 1.3 ragge #define BIDT_DRB32 0x0101 /* DRB32 (MFA) Supercomputer gateway */
124 1.1 ragge #define BIDT_DWBUA 0x0102 /* DWBUA Unibus adapter */
125 1.3 ragge #define BIDT_KLESI 0x0103 /* KLESI-B (DWBLA) adapter */
126 1.3 ragge #define BIDT_HSB70 0x4104 /* HSB70 */
127 1.1 ragge #define BIDT_KA820 0x0105 /* KA820 cpu */
128 1.3 ragge #define BIDT_DB88 0x0106 /* DB88 (NBI) adapter */
129 1.3 ragge #define BIDT_DWMBA 0x2107 /* XMI-BI (XBI) adapter */
130 1.3 ragge #define BIDT_DWMBB 0x0107 /* XMI-BI (XBI) adapter */
131 1.1 ragge #define BIDT_CIBCA 0x0108 /* Computer Interconnect adapter */
132 1.3 ragge #define BIDT_DMB32 0x0109 /* DMB32 (COMB) adapter */
133 1.3 ragge #define BIDT_BAA 0x010a /* BAA */
134 1.1 ragge #define BIDT_CIBCI 0x010b /* Computer Interconnect adapter (old) */
135 1.3 ragge #define BIDT_DEBNT 0x410b /* (AIE_TK70) Ethernet+TK50/TBK70 */
136 1.3 ragge #define BIDT_KA800 0x010c /* KA800 (ACP) slave processor */
137 1.1 ragge #define BIDT_KFBTA 0x410d /* RD/RX disk controller */
138 1.3 ragge #define BIDT_KDB50 0x010e /* KDB50 (BDA) disk controller */
139 1.3 ragge #define BIDT_DEBNK 0x410e /* (AIE_TK) BI Ethernet (Lance) + TK50 */
140 1.3 ragge #define BIDT_DEBNA 0x410f /* (AIE) BI Ethernet (Lance) adapter */
141 1.3 ragge #define BIDT_DEBNI 0x0118 /* (XNA) BI Ethernet adapter */
142 1.3 ragge
143 1.1 ragge
144 1.1 ragge /* bits in bi_csr */
145 1.1 ragge #define BICSR_IREV(x) ((u_char)((x) >> 24)) /* VAXBI interface rev */
146 1.1 ragge #define BICSR_TYPE(x) ((u_char)((x) >> 16)) /* BIIC type */
147 1.1 ragge #define BICSR_HES 0x8000 /* hard error summary */
148 1.1 ragge #define BICSR_SES 0x4000 /* soft error summary */
149 1.1 ragge #define BICSR_INIT 0x2000 /* initialise node */
150 1.1 ragge #define BICSR_BROKE 0x1000 /* broke */
151 1.1 ragge #define BICSR_STS 0x0800 /* self test status */
152 1.1 ragge #define BICSR_NRST 0x0400 /* node reset */
153 1.1 ragge #define BICSR_UWP 0x0100 /* unlock write pending */
154 1.1 ragge #define BICSR_HEIE 0x0080 /* hard error interrupt enable */
155 1.1 ragge #define BICSR_SEIE 0x0040 /* soft error interrupt enable */
156 1.1 ragge #define BICSR_ARB_MASK 0x0030 /* mask to get arbitration codes */
157 1.1 ragge #define BICSR_ARB_NONE 0x0030 /* no arbitration */
158 1.1 ragge #define BICSR_ARB_LOG 0x0020 /* low priority */
159 1.1 ragge #define BICSR_ARB_HIGH 0x0010 /* high priority */
160 1.1 ragge #define BICSR_ARB_RR 0x0000 /* round robin */
161 1.1 ragge #define BICSR_NODEMASK 0x000f /* node ID */
162 1.1 ragge
163 1.1 ragge #define BICSR_BITS \
164 1.1 ragge "\20\20HES\17SES\16INIT\15BROKE\14STS\13NRST\11UWP\10HEIE\7SEIE"
165 1.1 ragge
166 1.1 ragge /* bits in bi_ber */
167 1.1 ragge #define BIBER_MBZ 0x8000fff0
168 1.1 ragge #define BIBER_NMR 0x40000000 /* no ack to multi-responder command */
169 1.1 ragge #define BIBER_MTCE 0x20000000 /* master transmit check error */
170 1.1 ragge #define BIBER_CTE 0x10000000 /* control transmit error */
171 1.1 ragge #define BIBER_MPE 0x08000000 /* master parity error */
172 1.1 ragge #define BIBER_ISE 0x04000000 /* interlock sequence error */
173 1.1 ragge #define BIBER_TDF 0x02000000 /* transmitter during fault */
174 1.1 ragge #define BIBER_IVE 0x01000000 /* ident vector error */
175 1.1 ragge #define BIBER_CPE 0x00800000 /* command parity error */
176 1.1 ragge #define BIBER_SPE 0x00400000 /* slave parity error */
177 1.1 ragge #define BIBER_RDS 0x00200000 /* read data substitute */
178 1.1 ragge #define BIBER_RTO 0x00100000 /* retry timeout */
179 1.1 ragge #define BIBER_STO 0x00080000 /* stall timeout */
180 1.1 ragge #define BIBER_BTO 0x00040000 /* bus timeout */
181 1.1 ragge #define BIBER_NEX 0x00020000 /* nonexistent address */
182 1.1 ragge #define BIBER_ICE 0x00010000 /* illegal confirmation error */
183 1.1 ragge #define BIBER_UPEN 0x00000008 /* user parity enable */
184 1.1 ragge #define BIBER_IPE 0x00000004 /* ID parity error */
185 1.1 ragge #define BIBER_CRD 0x00000002 /* corrected read data */
186 1.1 ragge #define BIBER_NPE 0x00000001 /* null bus parity error */
187 1.1 ragge #define BIBER_HARD 0x4fff0000
188 1.1 ragge
189 1.1 ragge #define BIBER_BITS \
190 1.1 ragge "\20\37NMR\36MTCE\35CTE\34MPE\33ISE\32TDF\31IVE\30CPE\
191 1.1 ragge \27SPE\26RDS\25RTO\24STO\23BTO\22NEX\21ICE\4UPEN\3IPE\2CRD\1NPE"
192 1.1 ragge
193 1.1 ragge /* bits in bi_eintrcsr */
194 1.1 ragge #define BIEIC_INTRAB 0x01000000 /* interrupt abort */
195 1.1 ragge #define BIEIC_INTRC 0x00800000 /* interrupt complete */
196 1.1 ragge #define BIEIC_INTRSENT 0x00200000 /* interrupt command sent */
197 1.1 ragge #define BIEIC_INTRFORCE 0x00100000 /* interrupt force */
198 1.1 ragge #define BIEIC_LEVELMASK 0x000f0000 /* mask for interrupt levels */
199 1.1 ragge #define BIEIC_IPL17 0x00080000 /* ipl 0x17 */
200 1.1 ragge #define BIEIC_IPL16 0x00040000 /* ipl 0x16 */
201 1.1 ragge #define BIEIC_IPL15 0x00020000 /* ipl 0x15 */
202 1.1 ragge #define BIEIC_IPL14 0x00010000 /* ipl 0x14 */
203 1.1 ragge #define BIEIC_VECMASK 0x00003ffc /* vector mask for error intr */
204 1.1 ragge
205 1.1 ragge /* bits in bi_intrdes */
206 1.1 ragge #define BIDEST_MASK 0x0000ffff /* one bit per node to be intr'ed */
207 1.1 ragge
208 1.1 ragge /* bits in bi_ipintrmsk */
209 1.1 ragge #define BIIPINTR_MASK 0xffff0000 /* one per node to allow to ipintr */
210 1.1 ragge
211 1.1 ragge /* bits in bi_fipsdes */
212 1.1 ragge #define BIFIPSD_MASK 0x0000ffff
213 1.1 ragge
214 1.1 ragge /* bits in bi_ipintrsrc */
215 1.1 ragge #define BIIPSRC_MASK 0xffff0000
216 1.1 ragge
217 1.1 ragge /* sadr and eadr are simple addresses */
218 1.1 ragge
219 1.1 ragge /* bits in bi_bcicsr */
220 1.1 ragge #define BCI_BURSTEN 0x00020000 /* burst mode enable */
221 1.1 ragge #define BCI_IPSTOP_FRC 0x00010000 /* ipintr/stop force */
222 1.1 ragge #define BCI_MCASTEN 0x00008000 /* multicast space enable */
223 1.1 ragge #define BCI_BCASTEN 0x00004000 /* broadcast enable */
224 1.1 ragge #define BCI_STOPEN 0x00002000 /* stop enable */
225 1.1 ragge #define BCI_RSRVDEN 0x00001000 /* reserved enable */
226 1.1 ragge #define BCI_IDENTEN 0x00000800 /* ident enable */
227 1.1 ragge #define BCI_INVALEN 0x00000400 /* inval enable */
228 1.1 ragge #define BCI_WINVEN 0x00000200 /* write invalidate enable */
229 1.1 ragge #define BCI_UINTEN 0x00000100 /* user interface csr space enable */
230 1.1 ragge #define BCI_BIICEN 0x00000080 /* BIIC csr space enable */
231 1.1 ragge #define BCI_INTEN 0x00000040 /* interrupt enable */
232 1.1 ragge #define BCI_IPINTEN 0x00000020 /* ipintr enable */
233 1.1 ragge #define BCI_PIPEEN 0x00000010 /* pipeline NXT enable */
234 1.1 ragge #define BCI_RTOEVEN 0x00000008 /* read timeout EV enable */
235 1.1 ragge
236 1.1 ragge #define BCI_BITS \
237 1.1 ragge "\20\22BURSTEN\21IPSTOP_FRC\20MCASTEN\
238 1.1 ragge \17BCASTEN\16STOPEN\15RSRVDEN\14IDENTEN\13INVALEN\12WINVEN\11UINTEN\
239 1.1 ragge \10BIICEN\7INTEN\6IPINTEN\5PIPEEN\4RTOEVEN"
240 1.1 ragge
241 1.1 ragge /* bits in bi_wstat */
242 1.1 ragge #define BIW_GPR3 0x80000000 /* gpr 3 was written */
243 1.1 ragge #define BIW_GPR2 0x40000000 /* gpr 2 was written */
244 1.1 ragge #define BIW_GPR1 0x20000000 /* gpr 1 was written */
245 1.1 ragge #define BIW_GPR0 0x10000000 /* gpr 0 was written */
246 1.1 ragge
247 1.2 ragge /* bits in force-bit ipintr/stop command register */
248 1.1 ragge #define BIFIPSC_CMDMASK 0x0000f000 /* command */
249 1.1 ragge #define BIFIPSC_MIDEN 0x00000800 /* master ID enable */
250 1.1 ragge
251 1.1 ragge /* bits in bi_uintcsr */
252 1.1 ragge #define BIUI_INTAB 0xf0000000 /* interrupt abort level */
253 1.1 ragge #define BIUI_INTC 0x0f000000 /* interrupt complete bits */
254 1.1 ragge #define BIUI_SENT 0x00f00000 /* interrupt sent bits */
255 1.1 ragge #define BIUI_FORCE 0x000f0000 /* force interrupt level */
256 1.1 ragge #define BIUI_EVECEN 0x00008000 /* external vector enable */
257 1.1 ragge #define BIUI_VEC 0x00003ffc /* interrupt vector */
258 1.1 ragge
259 1.1 ragge /* tell if a bi device is a slave (hence has SOSR) */
260 1.1 ragge #define BIDT_ISSLAVE(x) (((x) & 0x7f00) == 0)
261 1.1 ragge
262 1.1 ragge /* bits in bi_sosr */
263 1.1 ragge #define BISOSR_MEMSIZE 0x1ffc0000 /* memory size */
264 1.1 ragge #define BISOSR_BROKE 0x00001000 /* broke */
265 1.1 ragge
266 1.1 ragge /* bits in bi_rxcd */
267 1.1 ragge #define BIRXCD_BUSY2 0x80000000 /* busy 2 */
268 1.1 ragge #define BIRXCD_NODE2 0x0f000000 /* node id 2 */
269 1.1 ragge #define BIRXCD_CHAR2 0x00ff0000 /* character 2 */
270 1.1 ragge #define BIRXCD_BUSY1 0x00008000 /* busy 1 */
271 1.1 ragge #define BIRXCD_NODE1 0x00000f00 /* node id 1 */
272 1.1 ragge #define BIRXCD_CHAR1 0x000000ff /* character 1 */
273