siopreg.h revision 1.3 1 1.3 bouyer /* $NetBSD: siopreg.h,v 1.3 2000/04/27 14:06:58 bouyer Exp $ */
2 1.1 bouyer
3 1.1 bouyer /*
4 1.1 bouyer * Copyright (c) 2000 Manuel Bouyer.
5 1.1 bouyer *
6 1.1 bouyer * Redistribution and use in source and binary forms, with or without
7 1.1 bouyer * modification, are permitted provided that the following conditions
8 1.1 bouyer * are met:
9 1.1 bouyer * 1. Redistributions of source code must retain the above copyright
10 1.1 bouyer * notice, this list of conditions and the following disclaimer.
11 1.1 bouyer * 2. Redistributions in binary form must reproduce the above copyright
12 1.1 bouyer * notice, this list of conditions and the following disclaimer in the
13 1.1 bouyer * documentation and/or other materials provided with the distribution.
14 1.1 bouyer * 3. All advertising materials mentioning features or use of this software
15 1.1 bouyer * must display the following acknowledgement:
16 1.3 bouyer * This product includes software developed by Manuel Bouyer
17 1.3 bouyer * 4. The name of the author may not be used to endorse or promote products
18 1.3 bouyer * derived from this software without specific prior written permission.
19 1.1 bouyer *
20 1.3 bouyer * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
21 1.3 bouyer * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
22 1.3 bouyer * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
23 1.3 bouyer * AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
24 1.3 bouyer * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25 1.3 bouyer * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26 1.3 bouyer * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27 1.3 bouyer * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28 1.3 bouyer * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 1.3 bouyer * POSSIBILITY OF SUCH DAMAGE.
30 1.1 bouyer *
31 1.1 bouyer */
32 1.1 bouyer
33 1.1 bouyer /*
34 1.1 bouyer * Devices definitions for Symbios/NCR M53c8xx PCI-SCSI I/O Processors
35 1.1 bouyer * Docs available from http://www.symbios.com/
36 1.1 bouyer */
37 1.1 bouyer
38 1.1 bouyer #define SIOP_SCNTL0 0x00 /* SCSI control 0, R/W */
39 1.1 bouyer #define SCNTL0_ARB_MASK 0xc0
40 1.1 bouyer #define SCNTL0_SARB 0x00
41 1.1 bouyer #define SCNTL0_FARB 0xc0
42 1.1 bouyer #define SCNTL0_START 0x20
43 1.1 bouyer #define SCNTL0_WATM 0x10
44 1.1 bouyer #define SCNTL0_EPC 0x08
45 1.1 bouyer #define SCNTL0_AAP 0x02
46 1.1 bouyer #define SCNTL0_TRG 0x01
47 1.1 bouyer
48 1.1 bouyer #define SIOP_SCNTL1 0x01 /* SCSI control 1, R/W */
49 1.1 bouyer #define SCNTL1_EXC 0x80
50 1.1 bouyer #define SCNTL1_ADB 0x40
51 1.1 bouyer #define SCNTL1_DHP 0x20
52 1.1 bouyer #define SCNTL1_CON 0x10
53 1.1 bouyer #define SCNTL1_RST 0x08
54 1.1 bouyer #define SCNTL1_AESP 0x04
55 1.1 bouyer #define SCNTL1_IARB 0x02
56 1.1 bouyer #define SCNTL1_SST 0x01
57 1.1 bouyer
58 1.1 bouyer #define SIOP_SCNTL2 0x02 /* SCSI control 2, R/W */
59 1.1 bouyer #define SCNTL2_SDU 0x80
60 1.1 bouyer #define SCNTL2_CHM 0x40 /* 875 only */
61 1.1 bouyer #define SCNTL2_SLPMD 0x20 /* 875 only */
62 1.1 bouyer #define SCNTL2_SLPHBEN 0x10 /* 875 only */
63 1.1 bouyer #define SCNTL2_WSS 0x08 /* 875 only */
64 1.1 bouyer #define SCNTL2_VUE0 0x04 /* 875 only */
65 1.1 bouyer #define SCNTL2_VUE1 0x02 /* 875 only */
66 1.1 bouyer #define SCNTL2_WSR 0x01 /* 875 only */
67 1.1 bouyer
68 1.1 bouyer #define SIOP_SCNTL3 0x03 /* SCSI control 3, R/W */
69 1.1 bouyer #define SCNTL3_ULTRA 0x80 /* 875 only */
70 1.1 bouyer #define SCNTL3_SCF_SHIFT 4
71 1.1 bouyer #define SCNTL3_SCF_MASK 0x70
72 1.1 bouyer #define SCNTL3_EWS 0x04 /* 875 only */
73 1.1 bouyer #define SCNTL3_CCF_SHIFT 0
74 1.1 bouyer #define SCNTL3_MASK 0x07
75 1.1 bouyer
76 1.1 bouyer #define SIOP_SCID 0x04 /* SCSI chip ID R/W */
77 1.1 bouyer #define SCID_RRE 0x40
78 1.1 bouyer #define SCID_SRE 0x20
79 1.1 bouyer #define SCID_ENCID_SHIFT 0
80 1.1 bouyer #define SCID_ENCID_MASK 0x07
81 1.1 bouyer
82 1.1 bouyer #define SIOP_SCXFER 0x05 /* SCSI transfer, R/W */
83 1.1 bouyer #define SCXFER_TP_SHIFT 5
84 1.1 bouyer #define SCXFER_TP_MASK 0xe0
85 1.1 bouyer #define SCXFER_MO_SHIFT 0
86 1.1 bouyer #define SCXFER_MO_MASK 0x0f
87 1.1 bouyer
88 1.1 bouyer #define SIOP_SDID 0x06 /* SCSI destiation ID, R/W */
89 1.1 bouyer #define SDID_ENCID_SHIFT 0
90 1.1 bouyer #define SDID_ENCID_MASK 0x07
91 1.1 bouyer
92 1.1 bouyer #define SIOP_GPREG 0x07 /* General purpose, R/W */
93 1.1 bouyer #define GPREG_GPIO4 0x10 /* 875 only */
94 1.1 bouyer #define GPREG_GPIO3 0x08 /* 875 only */
95 1.1 bouyer #define GPREG_GPIO2 0x04 /* 875 only */
96 1.1 bouyer #define GPREG_GPIO1 0x02
97 1.1 bouyer #define GPREG_GPIO0 0x01
98 1.1 bouyer
99 1.1 bouyer #define SIOP_SFBR 0x08 /* SCSI first byte received, R/W */
100 1.1 bouyer
101 1.1 bouyer #define SIOP_SOCL 0x09 /* SCSI output control latch, RW */
102 1.1 bouyer
103 1.1 bouyer #define SIOP_SSID 0x0A /* SCSI selector ID, RO */
104 1.1 bouyer #define SSID_VAL 0x80
105 1.1 bouyer #define SSID_ENCID_SHIFT 0
106 1.1 bouyer #define SSID_ENCID_MASK 0x0f
107 1.1 bouyer
108 1.1 bouyer #define SIOP_SBCL 0x0B /* SCSI control line, RO */
109 1.1 bouyer
110 1.1 bouyer #define SIOP_DSTAT 0x0C /* DMA status, RO */
111 1.1 bouyer #define DSTAT_DFE 0x80
112 1.1 bouyer #define DSTAT_MDPE 0x40
113 1.1 bouyer #define DSTAT_BF 0x20
114 1.1 bouyer #define DSTAT_ABRT 0x10
115 1.1 bouyer #define DSTAT_SSI 0x08
116 1.1 bouyer #define DSTAT_SIR 0x04
117 1.1 bouyer #define DSTAT_IID 0x01
118 1.1 bouyer
119 1.1 bouyer #define SIOP_SSTAT0 0x0D /* STSI status 0, RO */
120 1.1 bouyer #define SSTAT0_ILF 0x80
121 1.1 bouyer #define SSTAT0_ORF 0x40
122 1.1 bouyer #define SSTAT0_OLF 0x20
123 1.1 bouyer #define SSTAT0_AIP 0x10
124 1.1 bouyer #define SSTAT0_LOA 0x08
125 1.1 bouyer #define SSTAT0_WOA 0x04
126 1.1 bouyer #define SSTAT0_RST 0x02
127 1.1 bouyer #define SSTAT0_SDP 0x01
128 1.1 bouyer
129 1.1 bouyer #define SIOP_SSTAT1 0x0E /* STSI status 1, RO */
130 1.1 bouyer #define SSTAT1_FFO_SHIFT 4
131 1.1 bouyer #define SSTAT1_FFO_MASK 0x80
132 1.1 bouyer #define SSTAT1_SDPL 0x08
133 1.1 bouyer #define SSTAT1_MSG 0x04
134 1.1 bouyer #define SSTAT1_CD 0x02
135 1.1 bouyer #define SSTAT1_IO 0x01
136 1.1 bouyer #define SSTAT1_PHASE_MASK (SSTAT1_IO | SSTAT1_CD | SSTAT1_MSG)
137 1.1 bouyer #define SSTAT1_PHASE_DATAOUT 0
138 1.1 bouyer #define SSTAT1_PHASE_DATAIN SSTAT1_IO
139 1.1 bouyer #define SSTAT1_PHASE_CMD SSTAT1_CD
140 1.1 bouyer #define SSTAT1_PHASE_STATUS (SSTAT1_CD | SSTAT1_IO)
141 1.1 bouyer #define SSTAT1_PHASE_MSGOUT (SSTAT1_MSG | SSTAT1_CD)
142 1.1 bouyer #define SSTAT1_PHASE_MSGIN (SSTAT1_MSG | SSTAT1_CD | SSTAT1_IO)
143 1.1 bouyer
144 1.1 bouyer #define SIOP_SSTAT2 0x0F /* STSI status 2, RO */
145 1.1 bouyer #define SSTAT2_ILF1 0x80 /* 875 only */
146 1.1 bouyer #define SSTAT2_ORF1 0x40 /* 875 only */
147 1.1 bouyer #define SSTAT2_OLF1 0x20 /* 875 only */
148 1.1 bouyer #define SSTAT2_FF4 0x10 /* 875 only */
149 1.1 bouyer #define SSTAT2_SPL1 0x08 /* 875 only */
150 1.1 bouyer #define SSTAT2_DF 0x04 /* 875 only */
151 1.1 bouyer #define SSTAT2_LDSC 0x02
152 1.1 bouyer #define SSTAT2_SDP1 0x01 /* 875 only */
153 1.1 bouyer
154 1.1 bouyer #define SIOP_DSA 0x10 /* data struct addr, R/W */
155 1.1 bouyer
156 1.1 bouyer #define SIOP_ISTAT 0x14 /* IRQ status, R/W */
157 1.1 bouyer #define ISTAT_ABRT 0x80
158 1.1 bouyer #define ISTAT_SRST 0x40
159 1.1 bouyer #define ISTAT_SIGP 0x20
160 1.1 bouyer #define ISTAT_SEM 0x10
161 1.1 bouyer #define ISTAT_CON 0x08
162 1.1 bouyer #define ISTAT_INTF 0x04
163 1.1 bouyer #define ISTAT_SIP 0x02
164 1.1 bouyer #define ISTAT_DIP 0x01
165 1.1 bouyer
166 1.1 bouyer #define SIOP_CTEST0 0x18 /* Chip test 0, R/W */
167 1.1 bouyer
168 1.1 bouyer #define SIOP_CTEST1 0x19 /* Chip test 1, R/W */
169 1.1 bouyer
170 1.1 bouyer #define SIOP_CTEST2 0x1A /* Chip test 2, R/W */
171 1.1 bouyer #define CTEST2_SRTCH 0x04 /* 875 only */
172 1.1 bouyer
173 1.1 bouyer #define SIOP_CTEST3 0x1B /* Chip test 3, R/W */
174 1.1 bouyer #define CTEST3_FLF 0x08
175 1.1 bouyer #define CTEST3_CLF 0x04
176 1.1 bouyer #define CTEST3_FM 0x02
177 1.1 bouyer #define CTEST3_WRIE 0x01
178 1.1 bouyer
179 1.1 bouyer #define SIOP_TEMP 0x1C /* Temp register (used by CALL/RET), R/W */
180 1.1 bouyer
181 1.1 bouyer #define SIOP_DFIFO 0x20 /* DMA FIFO */
182 1.1 bouyer
183 1.1 bouyer #define SIOP_CTEST4 0x21 /* Chip test 4, R/W */
184 1.1 bouyer #define CTEST4_BDIS 0x80
185 1.1 bouyer #define CTEST_ZMOD 0x40
186 1.1 bouyer #define CTEST_ZSD 0x20
187 1.1 bouyer #define CTEST_SRTM 0x10
188 1.1 bouyer #define CTEST_MPEE 0x08
189 1.1 bouyer
190 1.1 bouyer #define SIOP_CTEST5 0x22 /* Chip test 5, R/W */
191 1.1 bouyer #define CTEST5_ADCK 0x80
192 1.1 bouyer #define CTEST5_BBCK 0x40
193 1.1 bouyer #define CTEST5_MASR 0x10
194 1.1 bouyer #define CTEST5_DDIR 0x08
195 1.1 bouyer
196 1.1 bouyer #define SIOP_CTEST6 0x23 /* Chip test 6, R/W */
197 1.1 bouyer
198 1.1 bouyer #define SIOP_DBC 0x24 /* DMA byte counter, R/W */
199 1.1 bouyer
200 1.1 bouyer #define SIOP_DCMD 0x27 /* DMA command, R/W */
201 1.1 bouyer
202 1.1 bouyer #define SIOP_DNAD 0x28 /* DMA next addr, R/W */
203 1.1 bouyer
204 1.1 bouyer #define SIOP_DSP 0x2C /* DMA scripts pointer, R/W */
205 1.1 bouyer
206 1.1 bouyer #define SIOP_DSPS 0x30 /* DMA scripts pointer save, R/W */
207 1.1 bouyer
208 1.1 bouyer #define SIOP_SCRATCHA 0x34 /* scratch register A. R/W */
209 1.1 bouyer
210 1.1 bouyer #define SIOP_DMODE 0x38 /* DMA mode, R/W */
211 1.1 bouyer #define DMODE_BL_SHIFT 6
212 1.1 bouyer #define DMODE_BL_MASK 0xC0
213 1.1 bouyer #define DMODE_SIOM 0x20
214 1.1 bouyer #define DMODE_DIOM 0x10
215 1.1 bouyer #define DMODE_ERL 0x08
216 1.1 bouyer #define DMODE_ERMP 0x04
217 1.1 bouyer #define DMODE_BOF 0x02
218 1.1 bouyer #define DMODE_MAN 0x01
219 1.1 bouyer
220 1.1 bouyer #define SIOP_DIEN 0x39 /* DMA interrupt enable, R/W */
221 1.1 bouyer #define DIEN_MDPE 0x40
222 1.1 bouyer #define DIEN_BF 0x20
223 1.1 bouyer #define DIEN_AVRT 0x10
224 1.1 bouyer #define DIEN_SSI 0x08
225 1.1 bouyer #define DIEN_SIR 0x04
226 1.1 bouyer #define DIEN_IID 0x01
227 1.1 bouyer
228 1.1 bouyer #define SIOP_SBR 0x3A /* scratch byte register, R/W */
229 1.1 bouyer
230 1.1 bouyer #define SIOP_DCNTL 0x3B /* DMA control, R/W */
231 1.1 bouyer #define DCNTL_CLSE 0x80
232 1.1 bouyer #define DCNTL_PFF 0x40
233 1.1 bouyer #define DCNTL_PFEN 0x20
234 1.1 bouyer #define DCNTL_SSM 0x10
235 1.1 bouyer #define DCNTL_IRQM 0x08
236 1.1 bouyer #define DCNTL_STD 0x04
237 1.1 bouyer #define DCNTL_IRQD 0x02
238 1.1 bouyer #define DCNTL_COM 0x01
239 1.1 bouyer
240 1.1 bouyer #define SIOP_ADDER 0x3C /* adder output sum, RO */
241 1.1 bouyer
242 1.1 bouyer #define SIOP_SIEN0 0x40 /* SCSI interrupt enable 0, R/W */
243 1.1 bouyer #define SIEN0_MA 0x80
244 1.1 bouyer #define SIEN0_CMP 0x40
245 1.1 bouyer #define SIEN0_SEL 0x20
246 1.1 bouyer #define SIEN0_RSL 0x10
247 1.1 bouyer #define SIEN0_SGE 0x08
248 1.1 bouyer #define SIEN0_UDC 0x04
249 1.1 bouyer #define SIEN0_SRT 0x02
250 1.1 bouyer #define SIEN0_PAR 0x01
251 1.1 bouyer
252 1.1 bouyer #define SIOP_SIEN1 0x41 /* SCSI interrupt enable 1, R/W */
253 1.1 bouyer #define SIEN1_STO 0x04
254 1.1 bouyer #define SIEN1_GEN 0x02
255 1.1 bouyer #define SIEN1_HTH 0x01
256 1.1 bouyer
257 1.1 bouyer #define SIOP_SIST0 0x42 /* SCSI interrupt status 0, RO */
258 1.1 bouyer #define SIST0_MA 0x80
259 1.1 bouyer #define SIST0_CMP 0x40
260 1.1 bouyer #define SIST0_SEL 0x20
261 1.1 bouyer #define SIST0_RSL 0x10
262 1.1 bouyer #define SIST0_SGE 0x08
263 1.1 bouyer #define SIST0_UDC 0x04
264 1.1 bouyer #define SIST0_RST 0x02
265 1.1 bouyer #define SIST0_PAR 0x01
266 1.1 bouyer
267 1.1 bouyer #define SIOP_SIST1 0x43 /* SCSI interrut status 1, RO */
268 1.1 bouyer #define SIST1_STO 0x04
269 1.1 bouyer #define SIST1_GEN 0x02
270 1.1 bouyer #define SIST1_HTH 0x01
271 1.1 bouyer
272 1.1 bouyer #define SIOP_SLPAR 0x44 /* scsi longitudinal parity, R/W */
273 1.1 bouyer
274 1.1 bouyer #define SIOP_SWIDE 0x45 /* scsi wide residue, RW, 875 only */
275 1.1 bouyer
276 1.1 bouyer #define SIOP_MACNTL 0x46 /* memory access control, R/W */
277 1.1 bouyer
278 1.1 bouyer #define SIOP_GPCNTL 0x47 /* General Purpose Pin control, R/W */
279 1.1 bouyer #define GPCNTL_ME 0x80 /* 875 only */
280 1.1 bouyer #define GPCNTL_FE 0x40 /* 875 only */
281 1.1 bouyer #define GPCNTL_IN4 0x10 /* 875 only */
282 1.1 bouyer #define GPCNTL_IN3 0x08 /* 875 only */
283 1.1 bouyer #define GPCNTL_IN2 0x04 /* 875 only */
284 1.1 bouyer #define GPCNTL_IN1 0x02
285 1.1 bouyer #define GPCNTL_IN0 0x01
286 1.1 bouyer
287 1.1 bouyer #define SIOP_STIME0 0x48 /* SCSI timer 0, R/W */
288 1.1 bouyer #define STIME0_HTH_SHIFT 4
289 1.1 bouyer #define STIME0_HTH_MASK 0xf0
290 1.1 bouyer #define STIME0_SEL_SHIFT 0
291 1.1 bouyer #define STIME0_SEL_MASK 0x0f
292 1.1 bouyer
293 1.1 bouyer #define SIOP_STIME1 0x49 /* SCSI timer 1, R/W */
294 1.1 bouyer #define STIME1_HTHBA 0x40 /* 875 only */
295 1.1 bouyer #define STIME1_GENSF 0x20 /* 875 only */
296 1.1 bouyer #define STIME1_HTHSF 0x10 /* 875 only */
297 1.1 bouyer #define STIME1_GEN_SHIFT 0
298 1.1 bouyer #define STIME1_GEN_MASK 0x0f
299 1.1 bouyer
300 1.1 bouyer #define SIOP_RESPID0 0x4A /* response ID, R/W */
301 1.1 bouyer
302 1.1 bouyer #define SIOP_RESPID1 0x4B /* response ID, R/W, 875-only */
303 1.1 bouyer
304 1.1 bouyer #define SIOP_STEST0 0x4C /* SCSI test 0, RO */
305 1.1 bouyer
306 1.1 bouyer #define SIOP_STEST1 0x4D /* SCSI test 1, RO, RW on 875 */
307 1.1 bouyer #define STEST1_DBLEN 0x08 /* 875-only */
308 1.1 bouyer #define STEST1_DBLSEL 0x04 /* 875-only */
309 1.1 bouyer
310 1.1 bouyer #define SIOP_STEST2 0x4E /* SCSI test 2, RO, R/W on 875 */
311 1.1 bouyer #define STEST2_DIF 0x20 /* 875 only */
312 1.1 bouyer #define STEST2_EXT 0x02
313 1.1 bouyer
314 1.1 bouyer #define SIOP_STEST3 0x4F /* SCSI test 3, RO, RW on 875 */
315 1.1 bouyer #define STEST3_TE 0x80
316 1.1 bouyer
317 1.1 bouyer #define SIOP_SIDL 0x50 /* SCSI input data latch, RO */
318 1.1 bouyer
319 1.1 bouyer #define SIOP_SODL 0x54 /* SCSI output data latch, R/W */
320 1.1 bouyer
321 1.1 bouyer #define SIOP_SBDL 0x58 /* SCSI bus data lines, RO */
322 1.1 bouyer
323 1.1 bouyer #define SIOP_SCRATCHB 0x5C /* Scratch register B, R/W */
324 1.1 bouyer
325 1.1 bouyer #define SIOP_SCRATCHC 0x60 /* Scratch register C, R/W, 875 only */
326 1.1 bouyer
327 1.1 bouyer #define SIOP_SCRATCHD 0x64 /* Scratch register D, R/W, 875-only */
328 1.1 bouyer
329 1.1 bouyer #define SIOP_SCRATCHE 0x68 /* Scratch register E, R/W, 875-only */
330 1.1 bouyer
331 1.1 bouyer #define SIOP_SCRATCHF 0x6c /* Scratch register F, R/W, 875-only */
332 1.1 bouyer
333 1.1 bouyer #define SIOP_SCRATCHG 0x70 /* Scratch register G, R/W, 875-only */
334 1.1 bouyer
335 1.1 bouyer #define SIOP_SCRATCHH 0x74 /* Scratch register H, R/W, 875-only */
336 1.1 bouyer
337 1.1 bouyer #define SIOP_SCRATCHI 0x78 /* Scratch register I, R/W, 875-only */
338 1.1 bouyer
339 1.1 bouyer #define SIOP_SCRATCHJ 0x7c /* Scratch register J, R/W, 875-only */
340