aic79xx.reg revision 1.4 1 1.4 thorpej /* $NetBSD: aic79xx.reg,v 1.4 2003/08/29 00:10:01 thorpej Exp $ */
2 1.4 thorpej
3 1.1 fvdl /*
4 1.1 fvdl * Aic79xx register and scratch ram definitions.
5 1.1 fvdl *
6 1.1 fvdl * Copyright (c) 1994-2001 Justin T. Gibbs.
7 1.1 fvdl * Copyright (c) 2000-2002 Adaptec Inc.
8 1.1 fvdl * All rights reserved.
9 1.1 fvdl *
10 1.1 fvdl * Redistribution and use in source and binary forms, with or without
11 1.1 fvdl * modification, are permitted provided that the following conditions
12 1.1 fvdl * are met:
13 1.1 fvdl * 1. Redistributions of source code must retain the above copyright
14 1.1 fvdl * notice, this list of conditions, and the following disclaimer,
15 1.1 fvdl * without modification.
16 1.1 fvdl * 2. Redistributions in binary form must reproduce at minimum a disclaimer
17 1.1 fvdl * substantially similar to the "NO WARRANTY" disclaimer below
18 1.1 fvdl * ("Disclaimer") and any redistribution must be conditioned upon
19 1.1 fvdl * including a substantially similar Disclaimer requirement for further
20 1.1 fvdl * binary redistribution.
21 1.1 fvdl * 3. Neither the names of the above-listed copyright holders nor the names
22 1.1 fvdl * of any contributors may be used to endorse or promote products derived
23 1.1 fvdl * from this software without specific prior written permission.
24 1.1 fvdl *
25 1.1 fvdl * Alternatively, this software may be distributed under the terms of the
26 1.1 fvdl * GNU General Public License ("GPL") version 2 as published by the Free
27 1.1 fvdl * Software Foundation.
28 1.1 fvdl *
29 1.1 fvdl * NO WARRANTY
30 1.1 fvdl * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
31 1.1 fvdl * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
32 1.1 fvdl * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
33 1.1 fvdl * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
34 1.1 fvdl * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
35 1.1 fvdl * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
36 1.1 fvdl * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
37 1.1 fvdl * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
38 1.1 fvdl * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
39 1.1 fvdl * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
40 1.1 fvdl * POSSIBILITY OF SUCH DAMAGES.
41 1.1 fvdl *
42 1.4 thorpej * $FreeBSD: src/sys/dev/aic7xxx/aic79xx.reg,v 1.11 2003/05/04 00:20:07 gibbs Exp $
43 1.1 fvdl */
44 1.4 thorpej VERSION = "Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#67 $"
45 1.1 fvdl
46 1.1 fvdl /*
47 1.1 fvdl * This file is processed by the aic7xxx_asm utility for use in assembling
48 1.1 fvdl * firmware for the aic79xx family of SCSI host adapters as well as to generate
49 1.1 fvdl * a C header file for use in the kernel portion of the Aic79xx driver.
50 1.1 fvdl */
51 1.1 fvdl
52 1.1 fvdl /* Register window Modes */
53 1.1 fvdl #define M_DFF0 0
54 1.1 fvdl #define M_DFF1 1
55 1.1 fvdl #define M_CCHAN 2
56 1.1 fvdl #define M_SCSI 3
57 1.1 fvdl #define M_CFG 4
58 1.1 fvdl #define M_DST_SHIFT 4
59 1.1 fvdl
60 1.1 fvdl #define MK_MODE(src, dst) ((src) | ((dst) << M_DST_SHIFT))
61 1.1 fvdl #define SET_MODE(src, dst) \
62 1.1 fvdl SET_SRC_MODE src; \
63 1.1 fvdl SET_DST_MODE dst; \
64 1.1 fvdl if ((ahd->bugs & AHD_SET_MODE_BUG) != 0) { \
65 1.1 fvdl mvi MK_MODE(src, dst) call set_mode_work_around; \
66 1.1 fvdl } else { \
67 1.1 fvdl mvi MODE_PTR, MK_MODE(src, dst); \
68 1.1 fvdl }
69 1.1 fvdl
70 1.1 fvdl #define TOGGLE_DFF_MODE \
71 1.1 fvdl if ((ahd->bugs & AHD_SET_MODE_BUG) != 0) { \
72 1.1 fvdl call toggle_dff_mode_work_around; \
73 1.1 fvdl } else { \
74 1.1 fvdl xor MODE_PTR, MK_MODE(M_DFF1, M_DFF1); \
75 1.1 fvdl }
76 1.1 fvdl
77 1.1 fvdl #define RESTORE_MODE(mode) \
78 1.1 fvdl if ((ahd->bugs & AHD_SET_MODE_BUG) != 0) { \
79 1.1 fvdl mov mode call set_mode_work_around; \
80 1.1 fvdl } else { \
81 1.1 fvdl mov MODE_PTR, mode; \
82 1.1 fvdl }
83 1.1 fvdl
84 1.1 fvdl #define SET_SEQINTCODE(code) \
85 1.1 fvdl if ((ahd->bugs & AHD_INTCOLLISION_BUG) != 0) { \
86 1.1 fvdl mvi code call set_seqint_work_around; \
87 1.1 fvdl } else { \
88 1.1 fvdl mvi SEQINTCODE, code; \
89 1.1 fvdl }
90 1.1 fvdl
91 1.1 fvdl /*
92 1.1 fvdl * Mode Pointer
93 1.1 fvdl * Controls which of the 5, 512byte, address spaces should be used
94 1.1 fvdl * as the source and destination of any register accesses in our
95 1.1 fvdl * register window.
96 1.1 fvdl */
97 1.1 fvdl register MODE_PTR {
98 1.1 fvdl address 0x000
99 1.1 fvdl access_mode RW
100 1.1 fvdl field DST_MODE 0x70
101 1.1 fvdl field SRC_MODE 0x07
102 1.1 fvdl mode_pointer
103 1.1 fvdl }
104 1.1 fvdl
105 1.1 fvdl const SRC_MODE_SHIFT 0
106 1.1 fvdl const DST_MODE_SHIFT 4
107 1.1 fvdl
108 1.1 fvdl /*
109 1.1 fvdl * Host Interrupt Status
110 1.1 fvdl */
111 1.1 fvdl register INTSTAT {
112 1.1 fvdl address 0x001
113 1.1 fvdl access_mode RW
114 1.1 fvdl field HWERRINT 0x80
115 1.1 fvdl field BRKADRINT 0x40
116 1.1 fvdl field SWTMINT 0x20
117 1.1 fvdl field PCIINT 0x10
118 1.1 fvdl field SCSIINT 0x08
119 1.1 fvdl field SEQINT 0x04
120 1.1 fvdl field CMDCMPLT 0x02
121 1.1 fvdl field SPLTINT 0x01
122 1.1 fvdl mask INT_PEND 0xFF
123 1.1 fvdl }
124 1.1 fvdl
125 1.1 fvdl /*
126 1.1 fvdl * Sequencer Interrupt Code
127 1.1 fvdl */
128 1.1 fvdl register SEQINTCODE {
129 1.1 fvdl address 0x002
130 1.1 fvdl access_mode RW
131 1.1 fvdl field {
132 1.1 fvdl NO_SEQINT, /* No seqint pending. */
133 1.1 fvdl BAD_PHASE, /* unknown scsi bus phase */
134 1.1 fvdl SEND_REJECT, /* sending a message reject */
135 1.1 fvdl PROTO_VIOLATION, /* Protocol Violation */
136 1.1 fvdl NO_MATCH, /* no cmd match for reconnect */
137 1.1 fvdl IGN_WIDE_RES, /* Complex IGN Wide Res Msg */
138 1.1 fvdl PDATA_REINIT, /*
139 1.1 fvdl * Returned to data phase
140 1.1 fvdl * that requires data
141 1.1 fvdl * transfer pointers to be
142 1.1 fvdl * recalculated from the
143 1.1 fvdl * transfer residual.
144 1.1 fvdl */
145 1.1 fvdl HOST_MSG_LOOP, /*
146 1.1 fvdl * The bus is ready for the
147 1.1 fvdl * host to perform another
148 1.1 fvdl * message transaction. This
149 1.1 fvdl * mechanism is used for things
150 1.1 fvdl * like sync/wide negotiation
151 1.1 fvdl * that require a kernel based
152 1.1 fvdl * message state engine.
153 1.1 fvdl */
154 1.1 fvdl BAD_STATUS, /* Bad status from target */
155 1.1 fvdl DATA_OVERRUN, /*
156 1.1 fvdl * Target attempted to write
157 1.1 fvdl * beyond the bounds of its
158 1.1 fvdl * command.
159 1.1 fvdl */
160 1.1 fvdl MKMSG_FAILED, /*
161 1.1 fvdl * Target completed command
162 1.1 fvdl * without honoring our ATN
163 1.1 fvdl * request to issue a message.
164 1.1 fvdl */
165 1.1 fvdl MISSED_BUSFREE, /*
166 1.1 fvdl * The sequencer never saw
167 1.1 fvdl * the bus go free after
168 1.1 fvdl * either a command complete
169 1.1 fvdl * or disconnect message.
170 1.1 fvdl */
171 1.1 fvdl DUMP_CARD_STATE,
172 1.1 fvdl ILLEGAL_PHASE,
173 1.1 fvdl INVALID_SEQINT,
174 1.1 fvdl CFG4ISTAT_INTR,
175 1.1 fvdl STATUS_OVERRUN,
176 1.1 fvdl CFG4OVERRUN,
177 1.1 fvdl ENTERING_NONPACK,
178 1.1 fvdl TASKMGMT_FUNC_COMPLETE, /*
179 1.1 fvdl * Task management function
180 1.1 fvdl * request completed with
181 1.1 fvdl * an expected busfree.
182 1.1 fvdl */
183 1.1 fvdl TASKMGMT_CMD_CMPLT_OKAY, /*
184 1.1 fvdl * A command with a non-zero
185 1.1 fvdl * task management function
186 1.1 fvdl * has completed via the normal
187 1.1 fvdl * command completion method
188 1.1 fvdl * for commands with a zero
189 1.1 fvdl * task management function.
190 1.1 fvdl * This happens when an attempt
191 1.1 fvdl * to abort a command loses
192 1.1 fvdl * the race for the command to
193 1.1 fvdl * complete normally.
194 1.1 fvdl */
195 1.1 fvdl TRACEPOINT0,
196 1.1 fvdl TRACEPOINT1,
197 1.1 fvdl TRACEPOINT2,
198 1.1 fvdl TRACEPOINT3,
199 1.4 thorpej SAW_HWERR,
200 1.4 thorpej BAD_SCB_STATUS
201 1.1 fvdl }
202 1.1 fvdl }
203 1.1 fvdl
204 1.1 fvdl /*
205 1.1 fvdl * Clear Host Interrupt
206 1.1 fvdl */
207 1.1 fvdl register CLRINT {
208 1.1 fvdl address 0x003
209 1.1 fvdl access_mode WO
210 1.1 fvdl field CLRHWERRINT 0x80 /* Rev B or greater */
211 1.1 fvdl field CLRBRKADRINT 0x40
212 1.1 fvdl field CLRSWTMINT 0x20
213 1.1 fvdl field CLRPCIINT 0x10
214 1.1 fvdl field CLRSCSIINT 0x08
215 1.1 fvdl field CLRSEQINT 0x04
216 1.1 fvdl field CLRCMDINT 0x02
217 1.1 fvdl field CLRSPLTINT 0x01
218 1.1 fvdl }
219 1.1 fvdl
220 1.1 fvdl /*
221 1.1 fvdl * Error Register
222 1.1 fvdl */
223 1.1 fvdl register ERROR {
224 1.1 fvdl address 0x004
225 1.1 fvdl access_mode RO
226 1.1 fvdl field CIOPARERR 0x80
227 1.1 fvdl field CIOACCESFAIL 0x40 /* Rev B or greater */
228 1.1 fvdl field MPARERR 0x20
229 1.1 fvdl field DPARERR 0x10
230 1.1 fvdl field SQPARERR 0x08
231 1.1 fvdl field ILLOPCODE 0x04
232 1.1 fvdl field DSCTMOUT 0x02
233 1.1 fvdl }
234 1.1 fvdl
235 1.1 fvdl /*
236 1.1 fvdl * Clear Error
237 1.1 fvdl */
238 1.1 fvdl register CLRERR {
239 1.1 fvdl address 0x004
240 1.1 fvdl access_mode WO
241 1.1 fvdl field CLRCIOPARERR 0x80
242 1.1 fvdl field CLRCIOACCESFAIL 0x40 /* Rev B or greater */
243 1.1 fvdl field CLRMPARERR 0x20
244 1.1 fvdl field CLRDPARERR 0x10
245 1.1 fvdl field CLRSQPARERR 0x08
246 1.1 fvdl field CLRILLOPCODE 0x04
247 1.1 fvdl field CLRDSCTMOUT 0x02
248 1.1 fvdl }
249 1.1 fvdl
250 1.1 fvdl /*
251 1.1 fvdl * Host Control Register
252 1.1 fvdl * Overall host control of the device.
253 1.1 fvdl */
254 1.1 fvdl register HCNTRL {
255 1.1 fvdl address 0x005
256 1.1 fvdl access_mode RW
257 1.1 fvdl field SEQ_RESET 0x80 /* Rev B or greater */
258 1.1 fvdl field POWRDN 0x40
259 1.1 fvdl field SWINT 0x10
260 1.1 fvdl field SWTIMER_START_B 0x08 /* Rev B or greater */
261 1.1 fvdl field PAUSE 0x04
262 1.1 fvdl field INTEN 0x02
263 1.1 fvdl field CHIPRST 0x01
264 1.1 fvdl field CHIPRSTACK 0x01
265 1.1 fvdl }
266 1.1 fvdl
267 1.1 fvdl /*
268 1.1 fvdl * Host New SCB Queue Offset
269 1.1 fvdl */
270 1.1 fvdl register HNSCB_QOFF {
271 1.1 fvdl address 0x006
272 1.1 fvdl access_mode RW
273 1.1 fvdl size 2
274 1.1 fvdl }
275 1.1 fvdl
276 1.1 fvdl /*
277 1.1 fvdl * Host Empty SCB Queue Offset
278 1.1 fvdl */
279 1.1 fvdl register HESCB_QOFF {
280 1.1 fvdl address 0x008
281 1.1 fvdl access_mode RW
282 1.1 fvdl }
283 1.1 fvdl
284 1.1 fvdl /*
285 1.1 fvdl * Host Mailbox
286 1.1 fvdl */
287 1.1 fvdl register HS_MAILBOX {
288 1.1 fvdl address 0x00B
289 1.1 fvdl access_mode RW
290 1.1 fvdl mask HOST_TQINPOS 0x80 /* Boundary at either 0 or 128 */
291 1.3 wiz mask ENINT_COALESCE 0x40 /* Perform interrupt coalescing */
292 1.1 fvdl }
293 1.1 fvdl
294 1.1 fvdl /*
295 1.1 fvdl * Sequencer Interupt Status
296 1.1 fvdl */
297 1.1 fvdl register SEQINTSTAT {
298 1.1 fvdl address 0x00C
299 1.1 fvdl access_mode RO
300 1.1 fvdl field SEQ_SWTMRTO 0x10
301 1.1 fvdl field SEQ_SEQINT 0x08
302 1.1 fvdl field SEQ_SCSIINT 0x04
303 1.1 fvdl field SEQ_PCIINT 0x02
304 1.1 fvdl field SEQ_SPLTINT 0x01
305 1.1 fvdl }
306 1.1 fvdl
307 1.1 fvdl /*
308 1.1 fvdl * Clear SEQ Interrupt
309 1.1 fvdl */
310 1.1 fvdl register CLRSEQINTSTAT {
311 1.1 fvdl address 0x00C
312 1.1 fvdl access_mode WO
313 1.1 fvdl field CLRSEQ_SWTMRTO 0x10
314 1.1 fvdl field CLRSEQ_SEQINT 0x08
315 1.1 fvdl field CLRSEQ_SCSIINT 0x04
316 1.1 fvdl field CLRSEQ_PCIINT 0x02
317 1.1 fvdl field CLRSEQ_SPLTINT 0x01
318 1.1 fvdl }
319 1.1 fvdl
320 1.1 fvdl /*
321 1.1 fvdl * Software Timer
322 1.1 fvdl */
323 1.1 fvdl register SWTIMER {
324 1.1 fvdl address 0x00E
325 1.1 fvdl access_mode RW
326 1.1 fvdl size 2
327 1.1 fvdl }
328 1.1 fvdl
329 1.1 fvdl /*
330 1.1 fvdl * SEQ New SCB Queue Offset
331 1.1 fvdl */
332 1.1 fvdl register SNSCB_QOFF {
333 1.1 fvdl address 0x010
334 1.1 fvdl access_mode RW
335 1.1 fvdl size 2
336 1.1 fvdl modes M_CCHAN
337 1.1 fvdl }
338 1.1 fvdl
339 1.1 fvdl /*
340 1.1 fvdl * SEQ Empty SCB Queue Offset
341 1.1 fvdl */
342 1.1 fvdl register SESCB_QOFF {
343 1.1 fvdl address 0x012
344 1.1 fvdl access_mode RW
345 1.1 fvdl modes M_CCHAN
346 1.1 fvdl }
347 1.1 fvdl
348 1.1 fvdl /*
349 1.1 fvdl * SEQ Done SCB Queue Offset
350 1.1 fvdl */
351 1.1 fvdl register SDSCB_QOFF {
352 1.1 fvdl address 0x014
353 1.1 fvdl access_mode RW
354 1.1 fvdl modes M_CCHAN
355 1.1 fvdl size 2
356 1.1 fvdl }
357 1.1 fvdl
358 1.1 fvdl /*
359 1.1 fvdl * Queue Offset Control & Status
360 1.1 fvdl */
361 1.1 fvdl register QOFF_CTLSTA {
362 1.1 fvdl address 0x016
363 1.1 fvdl access_mode RW
364 1.1 fvdl modes M_CCHAN
365 1.1 fvdl field EMPTY_SCB_AVAIL 0x80
366 1.1 fvdl field NEW_SCB_AVAIL 0x40
367 1.1 fvdl field SDSCB_ROLLOVR 0x20
368 1.1 fvdl field HS_MAILBOX_ACT 0x10
369 1.1 fvdl field SCB_QSIZE 0x0F {
370 1.1 fvdl SCB_QSIZE_4,
371 1.1 fvdl SCB_QSIZE_8,
372 1.1 fvdl SCB_QSIZE_16,
373 1.1 fvdl SCB_QSIZE_32,
374 1.1 fvdl SCB_QSIZE_64,
375 1.1 fvdl SCB_QSIZE_128,
376 1.1 fvdl SCB_QSIZE_256,
377 1.1 fvdl SCB_QSIZE_512,
378 1.1 fvdl SCB_QSIZE_1024,
379 1.1 fvdl SCB_QSIZE_2048,
380 1.1 fvdl SCB_QSIZE_4096,
381 1.1 fvdl SCB_QSIZE_8192,
382 1.1 fvdl SCB_QSIZE_16384
383 1.1 fvdl }
384 1.1 fvdl }
385 1.1 fvdl
386 1.1 fvdl /*
387 1.1 fvdl * Interrupt Control
388 1.1 fvdl */
389 1.1 fvdl register INTCTL {
390 1.1 fvdl address 0x018
391 1.1 fvdl access_mode RW
392 1.1 fvdl field SWTMINTMASK 0x80
393 1.1 fvdl field SWTMINTEN 0x40
394 1.1 fvdl field SWTIMER_START 0x20
395 1.1 fvdl field AUTOCLRCMDINT 0x10
396 1.1 fvdl field PCIINTEN 0x08
397 1.1 fvdl field SCSIINTEN 0x04
398 1.1 fvdl field SEQINTEN 0x02
399 1.1 fvdl field SPLTINTEN 0x01
400 1.1 fvdl }
401 1.1 fvdl
402 1.1 fvdl /*
403 1.1 fvdl * Data FIFO Control
404 1.1 fvdl */
405 1.1 fvdl register DFCNTRL {
406 1.1 fvdl address 0x019
407 1.1 fvdl access_mode RW
408 1.1 fvdl modes M_DFF0, M_DFF1
409 1.1 fvdl field PRELOADEN 0x80
410 1.1 fvdl field SCSIENWRDIS 0x40 /* Rev B only. */
411 1.1 fvdl field SCSIEN 0x20
412 1.1 fvdl field SCSIENACK 0x20
413 1.1 fvdl field HDMAEN 0x08
414 1.1 fvdl field HDMAENACK 0x08
415 1.1 fvdl field DIRECTION 0x04
416 1.1 fvdl field DIRECTIONACK 0x04
417 1.1 fvdl field FIFOFLUSH 0x02
418 1.1 fvdl field FIFOFLUSHACK 0x02
419 1.1 fvdl field DIRECTIONEN 0x01
420 1.1 fvdl }
421 1.1 fvdl
422 1.1 fvdl /*
423 1.1 fvdl * Device Space Command 0
424 1.1 fvdl */
425 1.1 fvdl register DSCOMMAND0 {
426 1.1 fvdl address 0x019
427 1.1 fvdl access_mode RW
428 1.1 fvdl modes M_CFG
429 1.1 fvdl field CACHETHEN 0x80 /* Cache Threshold enable */
430 1.1 fvdl field DPARCKEN 0x40 /* Data Parity Check Enable */
431 1.1 fvdl field MPARCKEN 0x20 /* Memory Parity Check Enable */
432 1.1 fvdl field EXTREQLCK 0x10 /* External Request Lock */
433 1.1 fvdl field DISABLE_TWATE 0x02 /* Rev B or greater */
434 1.1 fvdl field CIOPARCKEN 0x01 /* Internal bus parity error enable */
435 1.1 fvdl }
436 1.1 fvdl
437 1.1 fvdl /*
438 1.1 fvdl * Data FIFO Status
439 1.1 fvdl */
440 1.1 fvdl register DFSTATUS {
441 1.1 fvdl address 0x01A
442 1.1 fvdl access_mode RO
443 1.1 fvdl modes M_DFF0, M_DFF1
444 1.1 fvdl field PRELOAD_AVAIL 0x80
445 1.1 fvdl field PKT_PRELOAD_AVAIL 0x40
446 1.1 fvdl field MREQPEND 0x10
447 1.1 fvdl field HDONE 0x08
448 1.1 fvdl field DFTHRESH 0x04
449 1.1 fvdl field FIFOFULL 0x02
450 1.1 fvdl field FIFOEMP 0x01
451 1.1 fvdl }
452 1.1 fvdl
453 1.1 fvdl /*
454 1.1 fvdl * S/G Cache Pointer
455 1.1 fvdl */
456 1.1 fvdl register SG_CACHE_PRE {
457 1.1 fvdl address 0x01B
458 1.1 fvdl access_mode WO
459 1.1 fvdl modes M_DFF0, M_DFF1
460 1.1 fvdl field SG_ADDR_MASK 0xf8
461 1.1 fvdl field ODD_SEG 0x04
462 1.1 fvdl field LAST_SEG 0x02
463 1.1 fvdl }
464 1.1 fvdl
465 1.1 fvdl register SG_CACHE_SHADOW {
466 1.1 fvdl address 0x01B
467 1.1 fvdl access_mode RO
468 1.1 fvdl modes M_DFF0, M_DFF1
469 1.1 fvdl field SG_ADDR_MASK 0xf8
470 1.1 fvdl field ODD_SEG 0x04
471 1.1 fvdl field LAST_SEG 0x02
472 1.1 fvdl field LAST_SEG_DONE 0x01
473 1.1 fvdl }
474 1.1 fvdl
475 1.1 fvdl /*
476 1.1 fvdl * Arbiter Control
477 1.1 fvdl */
478 1.1 fvdl register ARBCTL {
479 1.1 fvdl address 0x01B
480 1.1 fvdl access_mode RW
481 1.1 fvdl modes M_CFG
482 1.1 fvdl field RESET_HARB 0x80
483 1.1 fvdl field RETRY_SWEN 0x08
484 1.1 fvdl field USE_TIME 0x07
485 1.1 fvdl }
486 1.1 fvdl
487 1.1 fvdl /*
488 1.1 fvdl * Data Channel Host Address
489 1.1 fvdl */
490 1.1 fvdl register HADDR {
491 1.1 fvdl address 0x070
492 1.1 fvdl access_mode RW
493 1.1 fvdl size 8
494 1.1 fvdl modes M_DFF0, M_DFF1
495 1.1 fvdl }
496 1.1 fvdl
497 1.1 fvdl /*
498 1.1 fvdl * Host Overlay DMA Address
499 1.1 fvdl */
500 1.1 fvdl register HODMAADR {
501 1.1 fvdl address 0x070
502 1.1 fvdl access_mode RW
503 1.1 fvdl size 8
504 1.1 fvdl modes M_SCSI
505 1.1 fvdl }
506 1.1 fvdl
507 1.1 fvdl /*
508 1.1 fvdl * PCI PLL Delay.
509 1.1 fvdl */
510 1.1 fvdl register PLLDELAY {
511 1.1 fvdl address 0x070
512 1.1 fvdl access_mode RW
513 1.1 fvdl size 1
514 1.1 fvdl modes M_CFG
515 1.1 fvdl field SPLIT_DROP_REQ 0x80
516 1.1 fvdl }
517 1.1 fvdl
518 1.1 fvdl /*
519 1.1 fvdl * Data Channel Host Count
520 1.1 fvdl */
521 1.1 fvdl register HCNT {
522 1.1 fvdl address 0x078
523 1.1 fvdl access_mode RW
524 1.1 fvdl size 3
525 1.1 fvdl modes M_DFF0, M_DFF1
526 1.1 fvdl }
527 1.1 fvdl
528 1.1 fvdl /*
529 1.1 fvdl * Host Overlay DMA Count
530 1.1 fvdl */
531 1.1 fvdl register HODMACNT {
532 1.1 fvdl address 0x078
533 1.1 fvdl access_mode RW
534 1.1 fvdl size 2
535 1.1 fvdl modes M_SCSI
536 1.1 fvdl }
537 1.1 fvdl
538 1.1 fvdl /*
539 1.1 fvdl * Host Overlay DMA Enable
540 1.1 fvdl */
541 1.1 fvdl register HODMAEN {
542 1.1 fvdl address 0x07A
543 1.1 fvdl access_mode RW
544 1.1 fvdl modes M_SCSI
545 1.1 fvdl }
546 1.1 fvdl
547 1.1 fvdl /*
548 1.1 fvdl * Scatter/Gather Host Address
549 1.1 fvdl */
550 1.1 fvdl register SGHADDR {
551 1.1 fvdl address 0x07C
552 1.1 fvdl access_mode RW
553 1.1 fvdl size 8
554 1.1 fvdl modes M_DFF0, M_DFF1
555 1.1 fvdl }
556 1.1 fvdl
557 1.1 fvdl /*
558 1.1 fvdl * SCB Host Address
559 1.1 fvdl */
560 1.1 fvdl register SCBHADDR {
561 1.1 fvdl address 0x07C
562 1.1 fvdl access_mode RW
563 1.1 fvdl size 8
564 1.1 fvdl modes M_CCHAN
565 1.1 fvdl }
566 1.1 fvdl
567 1.1 fvdl /*
568 1.1 fvdl * Scatter/Gather Host Count
569 1.1 fvdl */
570 1.1 fvdl register SGHCNT {
571 1.1 fvdl address 0x084
572 1.1 fvdl access_mode RW
573 1.1 fvdl modes M_DFF0, M_DFF1
574 1.1 fvdl }
575 1.1 fvdl
576 1.1 fvdl /*
577 1.1 fvdl * SCB Host Count
578 1.1 fvdl */
579 1.1 fvdl register SCBHCNT {
580 1.1 fvdl address 0x084
581 1.1 fvdl access_mode RW
582 1.1 fvdl modes M_CCHAN
583 1.1 fvdl }
584 1.1 fvdl
585 1.1 fvdl /*
586 1.1 fvdl * Data FIFO Threshold
587 1.1 fvdl */
588 1.1 fvdl register DFF_THRSH {
589 1.1 fvdl address 0x088
590 1.1 fvdl access_mode RW
591 1.1 fvdl modes M_CFG
592 1.1 fvdl field WR_DFTHRSH 0x70 {
593 1.1 fvdl WR_DFTHRSH_MIN,
594 1.1 fvdl WR_DFTHRSH_25,
595 1.1 fvdl WR_DFTHRSH_50,
596 1.1 fvdl WR_DFTHRSH_63,
597 1.1 fvdl WR_DFTHRSH_75,
598 1.1 fvdl WR_DFTHRSH_85,
599 1.1 fvdl WR_DFTHRSH_90,
600 1.1 fvdl WR_DFTHRSH_MAX
601 1.1 fvdl }
602 1.1 fvdl field RD_DFTHRSH 0x07 {
603 1.1 fvdl RD_DFTHRSH_MIN,
604 1.1 fvdl RD_DFTHRSH_25,
605 1.1 fvdl RD_DFTHRSH_50,
606 1.1 fvdl RD_DFTHRSH_63,
607 1.1 fvdl RD_DFTHRSH_75,
608 1.1 fvdl RD_DFTHRSH_85,
609 1.1 fvdl RD_DFTHRSH_90,
610 1.1 fvdl RD_DFTHRSH_MAX
611 1.1 fvdl }
612 1.1 fvdl }
613 1.1 fvdl
614 1.1 fvdl /*
615 1.1 fvdl * ROM Address
616 1.1 fvdl */
617 1.1 fvdl register ROMADDR {
618 1.1 fvdl address 0x08A
619 1.1 fvdl access_mode RW
620 1.1 fvdl size 3
621 1.1 fvdl }
622 1.1 fvdl
623 1.1 fvdl /*
624 1.1 fvdl * ROM Control
625 1.1 fvdl */
626 1.1 fvdl register ROMCNTRL {
627 1.1 fvdl address 0x08D
628 1.1 fvdl access_mode RW
629 1.1 fvdl field ROMOP 0xE0
630 1.1 fvdl field ROMSPD 0x18
631 1.1 fvdl field REPEAT 0x02
632 1.1 fvdl field RDY 0x01
633 1.1 fvdl }
634 1.1 fvdl
635 1.1 fvdl /*
636 1.1 fvdl * ROM Data
637 1.1 fvdl */
638 1.1 fvdl register ROMDATA {
639 1.1 fvdl address 0x08E
640 1.1 fvdl access_mode RW
641 1.1 fvdl }
642 1.1 fvdl
643 1.1 fvdl /*
644 1.1 fvdl * Data Channel Receive Message 0
645 1.1 fvdl */
646 1.1 fvdl register DCHRXMSG0 {
647 1.1 fvdl address 0x090
648 1.1 fvdl access_mode RO
649 1.1 fvdl modes M_DFF0, M_DFF1
650 1.1 fvdl field CDNUM 0xF8
651 1.1 fvdl field CFNUM 0x07
652 1.1 fvdl }
653 1.1 fvdl
654 1.1 fvdl /*
655 1.1 fvdl * CMC Recieve Message 0
656 1.1 fvdl */
657 1.1 fvdl register CMCRXMSG0 {
658 1.1 fvdl address 0x090
659 1.1 fvdl access_mode RO
660 1.1 fvdl modes M_CCHAN
661 1.1 fvdl field CDNUM 0xF8
662 1.1 fvdl field CFNUM 0x07
663 1.1 fvdl }
664 1.1 fvdl
665 1.1 fvdl /*
666 1.1 fvdl * Overlay Recieve Message 0
667 1.1 fvdl */
668 1.1 fvdl register OVLYRXMSG0 {
669 1.1 fvdl address 0x090
670 1.1 fvdl access_mode RO
671 1.1 fvdl modes M_SCSI
672 1.1 fvdl field CDNUM 0xF8
673 1.1 fvdl field CFNUM 0x07
674 1.1 fvdl }
675 1.1 fvdl
676 1.1 fvdl /*
677 1.1 fvdl * Relaxed Order Enable
678 1.1 fvdl */
679 1.1 fvdl register ROENABLE {
680 1.1 fvdl address 0x090
681 1.1 fvdl access_mode RW
682 1.1 fvdl modes M_CFG
683 1.1 fvdl field MSIROEN 0x20
684 1.1 fvdl field OVLYROEN 0x10
685 1.1 fvdl field CMCROEN 0x08
686 1.1 fvdl field SGROEN 0x04
687 1.1 fvdl field DCH1ROEN 0x02
688 1.1 fvdl field DCH0ROEN 0x01
689 1.1 fvdl }
690 1.1 fvdl
691 1.1 fvdl /*
692 1.1 fvdl * Data Channel Receive Message 1
693 1.1 fvdl */
694 1.1 fvdl register DCHRXMSG1 {
695 1.1 fvdl address 0x091
696 1.1 fvdl access_mode RO
697 1.1 fvdl modes M_DFF0, M_DFF1
698 1.1 fvdl field CBNUM 0xFF
699 1.1 fvdl }
700 1.1 fvdl
701 1.1 fvdl /*
702 1.1 fvdl * CMC Recieve Message 1
703 1.1 fvdl */
704 1.1 fvdl register CMCRXMSG1 {
705 1.1 fvdl address 0x091
706 1.1 fvdl access_mode RO
707 1.1 fvdl modes M_CCHAN
708 1.1 fvdl field CBNUM 0xFF
709 1.1 fvdl }
710 1.1 fvdl
711 1.1 fvdl /*
712 1.1 fvdl * Overlay Recieve Message 1
713 1.1 fvdl */
714 1.1 fvdl register OVLYRXMSG1 {
715 1.1 fvdl address 0x091
716 1.1 fvdl access_mode RO
717 1.1 fvdl modes M_SCSI
718 1.1 fvdl field CBNUM 0xFF
719 1.1 fvdl }
720 1.1 fvdl
721 1.1 fvdl /*
722 1.1 fvdl * No Snoop Enable
723 1.1 fvdl */
724 1.1 fvdl register NSENABLE {
725 1.1 fvdl address 0x091
726 1.1 fvdl access_mode RW
727 1.1 fvdl modes M_CFG
728 1.1 fvdl field MSINSEN 0x20
729 1.1 fvdl field OVLYNSEN 0x10
730 1.1 fvdl field CMCNSEN 0x08
731 1.1 fvdl field SGNSEN 0x04
732 1.1 fvdl field DCH1NSEN 0x02
733 1.1 fvdl field DCH0NSEN 0x01
734 1.1 fvdl }
735 1.1 fvdl
736 1.1 fvdl /*
737 1.1 fvdl * Data Channel Receive Message 2
738 1.1 fvdl */
739 1.1 fvdl register DCHRXMSG2 {
740 1.1 fvdl address 0x092
741 1.1 fvdl access_mode RO
742 1.1 fvdl modes M_DFF0, M_DFF1
743 1.1 fvdl field MINDEX 0xFF
744 1.1 fvdl }
745 1.1 fvdl
746 1.1 fvdl /*
747 1.1 fvdl * CMC Recieve Message 2
748 1.1 fvdl */
749 1.1 fvdl register CMCRXMSG2 {
750 1.1 fvdl address 0x092
751 1.1 fvdl access_mode RO
752 1.1 fvdl modes M_CCHAN
753 1.1 fvdl field MINDEX 0xFF
754 1.1 fvdl }
755 1.1 fvdl
756 1.1 fvdl /*
757 1.1 fvdl * Overlay Recieve Message 2
758 1.1 fvdl */
759 1.1 fvdl register OVLYRXMSG2 {
760 1.1 fvdl address 0x092
761 1.1 fvdl access_mode RO
762 1.1 fvdl modes M_SCSI
763 1.1 fvdl field MINDEX 0xFF
764 1.1 fvdl }
765 1.1 fvdl
766 1.1 fvdl /*
767 1.1 fvdl * Outstanding Split Transactions
768 1.1 fvdl */
769 1.1 fvdl register OST {
770 1.1 fvdl address 0x092
771 1.1 fvdl access_mode RW
772 1.1 fvdl modes M_CFG
773 1.1 fvdl }
774 1.1 fvdl
775 1.1 fvdl /*
776 1.1 fvdl * Data Channel Receive Message 3
777 1.1 fvdl */
778 1.1 fvdl register DCHRXMSG3 {
779 1.1 fvdl address 0x093
780 1.1 fvdl access_mode RO
781 1.1 fvdl modes M_DFF0, M_DFF1
782 1.1 fvdl field MCLASS 0x0F
783 1.1 fvdl }
784 1.1 fvdl
785 1.1 fvdl /*
786 1.1 fvdl * CMC Recieve Message 3
787 1.1 fvdl */
788 1.1 fvdl register CMCRXMSG3 {
789 1.1 fvdl address 0x093
790 1.1 fvdl access_mode RO
791 1.1 fvdl modes M_CCHAN
792 1.1 fvdl field MCLASS 0x0F
793 1.1 fvdl }
794 1.1 fvdl
795 1.1 fvdl /*
796 1.1 fvdl * Overlay Recieve Message 3
797 1.1 fvdl */
798 1.1 fvdl register OVLYRXMSG3 {
799 1.1 fvdl address 0x093
800 1.1 fvdl access_mode RO
801 1.1 fvdl modes M_SCSI
802 1.1 fvdl field MCLASS 0x0F
803 1.1 fvdl }
804 1.1 fvdl
805 1.1 fvdl /*
806 1.1 fvdl * PCI-X Control
807 1.1 fvdl */
808 1.1 fvdl register PCIXCTL {
809 1.1 fvdl address 0x093
810 1.1 fvdl access_mode RW
811 1.1 fvdl modes M_CFG
812 1.1 fvdl field SERRPULSE 0x80
813 1.1 fvdl field UNEXPSCIEN 0x20
814 1.1 fvdl field SPLTSMADIS 0x10
815 1.1 fvdl field SPLTSTADIS 0x08
816 1.1 fvdl field SRSPDPEEN 0x04
817 1.1 fvdl field TSCSERREN 0x02
818 1.1 fvdl field CMPABCDIS 0x01
819 1.1 fvdl }
820 1.1 fvdl
821 1.1 fvdl /*
822 1.1 fvdl * CMC Sequencer Byte Count
823 1.1 fvdl */
824 1.1 fvdl register CMCSEQBCNT {
825 1.1 fvdl address 0x094
826 1.1 fvdl access_mode RO
827 1.1 fvdl modes M_CCHAN
828 1.1 fvdl }
829 1.1 fvdl
830 1.1 fvdl /*
831 1.1 fvdl * Overlay Sequencer Byte Count
832 1.1 fvdl */
833 1.1 fvdl register OVLYSEQBCNT {
834 1.1 fvdl address 0x094
835 1.1 fvdl access_mode RO
836 1.1 fvdl modes M_SCSI
837 1.1 fvdl }
838 1.1 fvdl
839 1.1 fvdl /*
840 1.1 fvdl * Data Channel Sequencer Byte Count
841 1.1 fvdl */
842 1.1 fvdl register DCHSEQBCNT {
843 1.1 fvdl address 0x094
844 1.1 fvdl access_mode RO
845 1.1 fvdl size 2
846 1.1 fvdl modes M_DFF0, M_DFF1
847 1.1 fvdl }
848 1.1 fvdl
849 1.1 fvdl /*
850 1.1 fvdl * Data Channel Split Status 0
851 1.1 fvdl */
852 1.1 fvdl register DCHSPLTSTAT0 {
853 1.1 fvdl address 0x096
854 1.1 fvdl access_mode RW
855 1.1 fvdl modes M_DFF0, M_DFF1
856 1.1 fvdl field STAETERM 0x80
857 1.1 fvdl field SCBCERR 0x40
858 1.1 fvdl field SCADERR 0x20
859 1.1 fvdl field SCDATBUCKET 0x10
860 1.1 fvdl field CNTNOTCMPLT 0x08
861 1.1 fvdl field RXOVRUN 0x04
862 1.1 fvdl field RXSCEMSG 0x02
863 1.1 fvdl field RXSPLTRSP 0x01
864 1.1 fvdl }
865 1.1 fvdl
866 1.1 fvdl /*
867 1.1 fvdl * CMC Split Status 0
868 1.1 fvdl */
869 1.1 fvdl register CMCSPLTSTAT0 {
870 1.1 fvdl address 0x096
871 1.1 fvdl access_mode RW
872 1.1 fvdl modes M_CCHAN
873 1.1 fvdl field STAETERM 0x80
874 1.1 fvdl field SCBCERR 0x40
875 1.1 fvdl field SCADERR 0x20
876 1.1 fvdl field SCDATBUCKET 0x10
877 1.1 fvdl field CNTNOTCMPLT 0x08
878 1.1 fvdl field RXOVRUN 0x04
879 1.1 fvdl field RXSCEMSG 0x02
880 1.1 fvdl field RXSPLTRSP 0x01
881 1.1 fvdl }
882 1.1 fvdl
883 1.1 fvdl /*
884 1.1 fvdl * Overlay Split Status 0
885 1.1 fvdl */
886 1.1 fvdl register OVLYSPLTSTAT0 {
887 1.1 fvdl address 0x096
888 1.1 fvdl access_mode RW
889 1.1 fvdl modes M_SCSI
890 1.1 fvdl field STAETERM 0x80
891 1.1 fvdl field SCBCERR 0x40
892 1.1 fvdl field SCADERR 0x20
893 1.1 fvdl field SCDATBUCKET 0x10
894 1.1 fvdl field CNTNOTCMPLT 0x08
895 1.1 fvdl field RXOVRUN 0x04
896 1.1 fvdl field RXSCEMSG 0x02
897 1.1 fvdl field RXSPLTRSP 0x01
898 1.1 fvdl }
899 1.1 fvdl
900 1.1 fvdl /*
901 1.1 fvdl * Data Channel Split Status 1
902 1.1 fvdl */
903 1.1 fvdl register DCHSPLTSTAT1 {
904 1.1 fvdl address 0x097
905 1.1 fvdl access_mode RW
906 1.1 fvdl modes M_DFF0, M_DFF1
907 1.1 fvdl field RXDATABUCKET 0x01
908 1.1 fvdl }
909 1.1 fvdl
910 1.1 fvdl /*
911 1.1 fvdl * CMC Split Status 1
912 1.1 fvdl */
913 1.1 fvdl register CMCSPLTSTAT1 {
914 1.1 fvdl address 0x097
915 1.1 fvdl access_mode RW
916 1.1 fvdl modes M_CCHAN
917 1.1 fvdl field RXDATABUCKET 0x01
918 1.1 fvdl }
919 1.1 fvdl
920 1.1 fvdl /*
921 1.1 fvdl * Overlay Split Status 1
922 1.1 fvdl */
923 1.1 fvdl register OVLYSPLTSTAT1 {
924 1.1 fvdl address 0x097
925 1.1 fvdl access_mode RW
926 1.1 fvdl modes M_SCSI
927 1.1 fvdl field RXDATABUCKET 0x01
928 1.1 fvdl }
929 1.1 fvdl
930 1.1 fvdl /*
931 1.1 fvdl * S/G Receive Message 0
932 1.1 fvdl */
933 1.1 fvdl register SGRXMSG0 {
934 1.1 fvdl address 0x098
935 1.1 fvdl access_mode RO
936 1.1 fvdl modes M_DFF0, M_DFF1
937 1.1 fvdl field CDNUM 0xF8
938 1.1 fvdl field CFNUM 0x07
939 1.1 fvdl }
940 1.1 fvdl
941 1.1 fvdl /*
942 1.1 fvdl * S/G Receive Message 1
943 1.1 fvdl */
944 1.1 fvdl register SGRXMSG1 {
945 1.1 fvdl address 0x099
946 1.1 fvdl access_mode RO
947 1.1 fvdl modes M_DFF0, M_DFF1
948 1.1 fvdl field CBNUM 0xFF
949 1.1 fvdl }
950 1.1 fvdl
951 1.1 fvdl /*
952 1.1 fvdl * S/G Receive Message 2
953 1.1 fvdl */
954 1.1 fvdl register SGRXMSG2 {
955 1.1 fvdl address 0x09A
956 1.1 fvdl access_mode RO
957 1.1 fvdl modes M_DFF0, M_DFF1
958 1.1 fvdl field MINDEX 0xFF
959 1.1 fvdl }
960 1.1 fvdl
961 1.1 fvdl /*
962 1.1 fvdl * S/G Receive Message 3
963 1.1 fvdl */
964 1.1 fvdl register SGRXMSG3 {
965 1.1 fvdl address 0x09B
966 1.1 fvdl access_mode RO
967 1.1 fvdl modes M_DFF0, M_DFF1
968 1.1 fvdl field MCLASS 0x0F
969 1.1 fvdl }
970 1.1 fvdl
971 1.1 fvdl /*
972 1.1 fvdl * Slave Split Out Address 0
973 1.1 fvdl */
974 1.1 fvdl register SLVSPLTOUTADR0 {
975 1.1 fvdl address 0x098
976 1.1 fvdl access_mode RO
977 1.1 fvdl modes M_SCSI
978 1.1 fvdl field LOWER_ADDR 0x7F
979 1.1 fvdl }
980 1.1 fvdl
981 1.1 fvdl /*
982 1.1 fvdl * Slave Split Out Address 1
983 1.1 fvdl */
984 1.1 fvdl register SLVSPLTOUTADR1 {
985 1.1 fvdl address 0x099
986 1.1 fvdl access_mode RO
987 1.1 fvdl modes M_SCSI
988 1.1 fvdl field REQ_DNUM 0xF8
989 1.1 fvdl field REQ_FNUM 0x07
990 1.1 fvdl }
991 1.1 fvdl
992 1.1 fvdl /*
993 1.1 fvdl * Slave Split Out Address 2
994 1.1 fvdl */
995 1.1 fvdl register SLVSPLTOUTADR2 {
996 1.1 fvdl address 0x09A
997 1.1 fvdl access_mode RO
998 1.1 fvdl modes M_SCSI
999 1.1 fvdl field REQ_BNUM 0xFF
1000 1.1 fvdl }
1001 1.1 fvdl
1002 1.1 fvdl /*
1003 1.1 fvdl * Slave Split Out Address 3
1004 1.1 fvdl */
1005 1.1 fvdl register SLVSPLTOUTADR3 {
1006 1.1 fvdl address 0x09B
1007 1.1 fvdl access_mode RO
1008 1.1 fvdl modes M_SCSI
1009 1.1 fvdl field RLXORD 020
1010 1.1 fvdl field TAG_NUM 0x1F
1011 1.1 fvdl }
1012 1.1 fvdl
1013 1.1 fvdl /*
1014 1.1 fvdl * SG Sequencer Byte Count
1015 1.1 fvdl */
1016 1.1 fvdl register SGSEQBCNT {
1017 1.1 fvdl address 0x09C
1018 1.1 fvdl access_mode RO
1019 1.1 fvdl modes M_DFF0, M_DFF1
1020 1.1 fvdl }
1021 1.1 fvdl
1022 1.1 fvdl /*
1023 1.1 fvdl * Slave Split Out Attribute 0
1024 1.1 fvdl */
1025 1.1 fvdl register SLVSPLTOUTATTR0 {
1026 1.1 fvdl address 0x09C
1027 1.1 fvdl access_mode RO
1028 1.1 fvdl modes M_SCSI
1029 1.1 fvdl field LOWER_BCNT 0xFF
1030 1.1 fvdl }
1031 1.1 fvdl
1032 1.1 fvdl /*
1033 1.1 fvdl * Slave Split Out Attribute 1
1034 1.1 fvdl */
1035 1.1 fvdl register SLVSPLTOUTATTR1 {
1036 1.1 fvdl address 0x09D
1037 1.1 fvdl access_mode RO
1038 1.1 fvdl modes M_SCSI
1039 1.1 fvdl field CMPLT_DNUM 0xF8
1040 1.1 fvdl field CMPLT_FNUM 0x07
1041 1.1 fvdl }
1042 1.1 fvdl
1043 1.1 fvdl /*
1044 1.1 fvdl * Slave Split Out Attribute 2
1045 1.1 fvdl */
1046 1.1 fvdl register SLVSPLTOUTATTR2 {
1047 1.1 fvdl address 0x09E
1048 1.1 fvdl access_mode RO
1049 1.1 fvdl size 2
1050 1.1 fvdl modes M_SCSI
1051 1.1 fvdl field CMPLT_BNUM 0xFF
1052 1.1 fvdl }
1053 1.1 fvdl /*
1054 1.1 fvdl * S/G Split Status 0
1055 1.1 fvdl */
1056 1.1 fvdl register SGSPLTSTAT0 {
1057 1.1 fvdl address 0x09E
1058 1.1 fvdl access_mode RW
1059 1.1 fvdl modes M_DFF0, M_DFF1
1060 1.1 fvdl field STAETERM 0x80
1061 1.1 fvdl field SCBCERR 0x40
1062 1.1 fvdl field SCADERR 0x20
1063 1.1 fvdl field SCDATBUCKET 0x10
1064 1.1 fvdl field CNTNOTCMPLT 0x08
1065 1.1 fvdl field RXOVRUN 0x04
1066 1.1 fvdl field RXSCEMSG 0x02
1067 1.1 fvdl field RXSPLTRSP 0x01
1068 1.1 fvdl }
1069 1.1 fvdl
1070 1.1 fvdl /*
1071 1.1 fvdl * S/G Split Status 1
1072 1.1 fvdl */
1073 1.1 fvdl register SGSPLTSTAT1 {
1074 1.1 fvdl address 0x09F
1075 1.1 fvdl access_mode RW
1076 1.1 fvdl modes M_DFF0, M_DFF1
1077 1.1 fvdl field RXDATABUCKET 0x01
1078 1.1 fvdl }
1079 1.1 fvdl
1080 1.1 fvdl /*
1081 1.1 fvdl * Special Function
1082 1.1 fvdl */
1083 1.1 fvdl register SFUNCT {
1084 1.1 fvdl address 0x09f
1085 1.1 fvdl access_mode RW
1086 1.1 fvdl modes M_CFG
1087 1.1 fvdl field TEST_GROUP 0xF0
1088 1.1 fvdl field TEST_NUM 0x0F
1089 1.1 fvdl }
1090 1.1 fvdl
1091 1.1 fvdl /*
1092 1.1 fvdl * Data FIFO 0 PCI Status
1093 1.1 fvdl */
1094 1.1 fvdl register DF0PCISTAT {
1095 1.1 fvdl address 0x0A0
1096 1.1 fvdl access_mode RW
1097 1.1 fvdl modes M_CFG
1098 1.1 fvdl field DPE 0x80
1099 1.1 fvdl field SSE 0x40
1100 1.1 fvdl field RMA 0x20
1101 1.1 fvdl field RTA 0x10
1102 1.1 fvdl field SCAAPERR 0x08
1103 1.1 fvdl field RDPERR 0x04
1104 1.1 fvdl field TWATERR 0x02
1105 1.1 fvdl field DPR 0x01
1106 1.1 fvdl }
1107 1.1 fvdl
1108 1.1 fvdl /*
1109 1.1 fvdl * Data FIFO 1 PCI Status
1110 1.1 fvdl */
1111 1.1 fvdl register DF1PCISTAT {
1112 1.1 fvdl address 0x0A1
1113 1.1 fvdl access_mode RW
1114 1.1 fvdl modes M_CFG
1115 1.1 fvdl field DPE 0x80
1116 1.1 fvdl field SSE 0x40
1117 1.1 fvdl field RMA 0x20
1118 1.1 fvdl field RTA 0x10
1119 1.1 fvdl field SCAAPERR 0x08
1120 1.1 fvdl field RDPERR 0x04
1121 1.1 fvdl field TWATERR 0x02
1122 1.1 fvdl field DPR 0x01
1123 1.1 fvdl }
1124 1.1 fvdl
1125 1.1 fvdl /*
1126 1.1 fvdl * S/G PCI Status
1127 1.1 fvdl */
1128 1.1 fvdl register SGPCISTAT {
1129 1.1 fvdl address 0x0A2
1130 1.1 fvdl access_mode RW
1131 1.1 fvdl modes M_CFG
1132 1.1 fvdl field DPE 0x80
1133 1.1 fvdl field SSE 0x40
1134 1.1 fvdl field RMA 0x20
1135 1.1 fvdl field RTA 0x10
1136 1.1 fvdl field SCAAPERR 0x08
1137 1.1 fvdl field RDPERR 0x04
1138 1.1 fvdl field DPR 0x01
1139 1.1 fvdl }
1140 1.1 fvdl
1141 1.1 fvdl /*
1142 1.1 fvdl * CMC PCI Status
1143 1.1 fvdl */
1144 1.1 fvdl register CMCPCISTAT {
1145 1.1 fvdl address 0x0A3
1146 1.1 fvdl access_mode RW
1147 1.1 fvdl modes M_CFG
1148 1.1 fvdl field DPE 0x80
1149 1.1 fvdl field SSE 0x40
1150 1.1 fvdl field RMA 0x20
1151 1.1 fvdl field RTA 0x10
1152 1.1 fvdl field SCAAPERR 0x08
1153 1.1 fvdl field RDPERR 0x04
1154 1.1 fvdl field TWATERR 0x02
1155 1.1 fvdl field DPR 0x01
1156 1.1 fvdl }
1157 1.1 fvdl
1158 1.1 fvdl /*
1159 1.1 fvdl * Overlay PCI Status
1160 1.1 fvdl */
1161 1.1 fvdl register OVLYPCISTAT {
1162 1.1 fvdl address 0x0A4
1163 1.1 fvdl access_mode RW
1164 1.1 fvdl modes M_CFG
1165 1.1 fvdl field DPE 0x80
1166 1.1 fvdl field SSE 0x40
1167 1.1 fvdl field RMA 0x20
1168 1.1 fvdl field RTA 0x10
1169 1.1 fvdl field SCAAPERR 0x08
1170 1.1 fvdl field RDPERR 0x04
1171 1.1 fvdl field DPR 0x01
1172 1.1 fvdl }
1173 1.1 fvdl
1174 1.1 fvdl /*
1175 1.1 fvdl * PCI Status for MSI Master DMA Transfer
1176 1.1 fvdl */
1177 1.1 fvdl register MSIPCISTAT {
1178 1.1 fvdl address 0x0A6
1179 1.1 fvdl access_mode RW
1180 1.1 fvdl modes M_CFG
1181 1.1 fvdl field SSE 0x40
1182 1.1 fvdl field RMA 0x20
1183 1.1 fvdl field RTA 0x10
1184 1.1 fvdl field CLRPENDMSI 0x08
1185 1.1 fvdl field TWATERR 0x02
1186 1.1 fvdl field DPR 0x01
1187 1.1 fvdl }
1188 1.1 fvdl
1189 1.1 fvdl /*
1190 1.1 fvdl * PCI Status for Target
1191 1.1 fvdl */
1192 1.1 fvdl register TARGPCISTAT {
1193 1.1 fvdl address 0x0A7
1194 1.1 fvdl access_mode RW
1195 1.1 fvdl modes M_CFG
1196 1.1 fvdl field DPE 0x80
1197 1.1 fvdl field SSE 0x40
1198 1.1 fvdl field STA 0x08
1199 1.1 fvdl field TWATERR 0x02
1200 1.1 fvdl }
1201 1.1 fvdl
1202 1.1 fvdl /*
1203 1.1 fvdl * LQ Packet In
1204 1.1 fvdl * The last LQ Packet recieved
1205 1.1 fvdl */
1206 1.1 fvdl register LQIN {
1207 1.1 fvdl address 0x020
1208 1.1 fvdl access_mode RW
1209 1.1 fvdl size 20
1210 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1211 1.1 fvdl }
1212 1.1 fvdl
1213 1.1 fvdl /*
1214 1.1 fvdl * SCB Type Pointer
1215 1.1 fvdl * SCB offset for Target Mode SCB type information
1216 1.1 fvdl */
1217 1.1 fvdl register TYPEPTR {
1218 1.1 fvdl address 0x020
1219 1.1 fvdl access_mode RW
1220 1.1 fvdl modes M_CFG
1221 1.1 fvdl }
1222 1.1 fvdl
1223 1.1 fvdl /*
1224 1.1 fvdl * Queue Tag Pointer
1225 1.1 fvdl * SCB offset to the Two Byte tag identifier used for target mode.
1226 1.1 fvdl */
1227 1.1 fvdl register TAGPTR {
1228 1.1 fvdl address 0x021
1229 1.1 fvdl access_mode RW
1230 1.1 fvdl modes M_CFG
1231 1.1 fvdl }
1232 1.1 fvdl
1233 1.1 fvdl /*
1234 1.1 fvdl * Logical Unit Number Pointer
1235 1.1 fvdl * SCB offset to the LSB (little endian) of the lun field.
1236 1.1 fvdl */
1237 1.1 fvdl register LUNPTR {
1238 1.1 fvdl address 0x022
1239 1.1 fvdl access_mode RW
1240 1.1 fvdl modes M_CFG
1241 1.1 fvdl }
1242 1.1 fvdl
1243 1.1 fvdl /*
1244 1.1 fvdl * Data Length Pointer
1245 1.1 fvdl * SCB offset for the 4 byte data length field in target mode.
1246 1.1 fvdl */
1247 1.1 fvdl register DATALENPTR {
1248 1.1 fvdl address 0x023
1249 1.1 fvdl access_mode RW
1250 1.1 fvdl modes M_CFG
1251 1.1 fvdl }
1252 1.1 fvdl
1253 1.1 fvdl /*
1254 1.1 fvdl * Status Length Pointer
1255 1.1 fvdl * SCB offset to the two byte status field in target SCBs.
1256 1.1 fvdl */
1257 1.1 fvdl register STATLENPTR {
1258 1.1 fvdl address 0x024
1259 1.1 fvdl access_mode RW
1260 1.1 fvdl modes M_CFG
1261 1.1 fvdl }
1262 1.1 fvdl
1263 1.1 fvdl /*
1264 1.1 fvdl * Command Length Pointer
1265 1.1 fvdl * Scb offset for the CDB length field in initiator SCBs.
1266 1.1 fvdl */
1267 1.1 fvdl register CMDLENPTR {
1268 1.1 fvdl address 0x025
1269 1.1 fvdl access_mode RW
1270 1.1 fvdl modes M_CFG
1271 1.1 fvdl }
1272 1.1 fvdl
1273 1.1 fvdl /*
1274 1.1 fvdl * Task Attribute Pointer
1275 1.1 fvdl * Scb offset for the byte field specifying the attribute byte
1276 1.1 fvdl * to be used in command packets.
1277 1.1 fvdl */
1278 1.1 fvdl register ATTRPTR {
1279 1.1 fvdl address 0x026
1280 1.1 fvdl access_mode RW
1281 1.1 fvdl modes M_CFG
1282 1.1 fvdl }
1283 1.1 fvdl
1284 1.1 fvdl /*
1285 1.1 fvdl * Task Management Flags Pointer
1286 1.1 fvdl * Scb offset for the byte field specifying the attribute flags
1287 1.1 fvdl * byte to be used in command packets.
1288 1.1 fvdl */
1289 1.1 fvdl register FLAGPTR {
1290 1.1 fvdl address 0x027
1291 1.1 fvdl access_mode RW
1292 1.1 fvdl modes M_CFG
1293 1.1 fvdl }
1294 1.1 fvdl
1295 1.1 fvdl /*
1296 1.1 fvdl * Command Pointer
1297 1.1 fvdl * Scb offset for the first byte in the CDB for initiator SCBs.
1298 1.1 fvdl */
1299 1.1 fvdl register CMDPTR {
1300 1.1 fvdl address 0x028
1301 1.1 fvdl access_mode RW
1302 1.1 fvdl modes M_CFG
1303 1.1 fvdl }
1304 1.1 fvdl
1305 1.1 fvdl /*
1306 1.1 fvdl * Queue Next Pointer
1307 1.1 fvdl * Scb offset for the 2 byte "next scb link".
1308 1.1 fvdl */
1309 1.1 fvdl register QNEXTPTR {
1310 1.1 fvdl address 0x029
1311 1.1 fvdl access_mode RW
1312 1.1 fvdl modes M_CFG
1313 1.1 fvdl }
1314 1.1 fvdl
1315 1.1 fvdl /*
1316 1.1 fvdl * SCSI ID Pointer
1317 1.1 fvdl * Scb offset to the value to place in the SCSIID register
1318 1.1 fvdl * during target mode connections.
1319 1.1 fvdl */
1320 1.1 fvdl register IDPTR {
1321 1.1 fvdl address 0x02A
1322 1.1 fvdl access_mode RW
1323 1.1 fvdl modes M_CFG
1324 1.1 fvdl }
1325 1.1 fvdl
1326 1.1 fvdl /*
1327 1.1 fvdl * Command Aborted Byte Pointer
1328 1.1 fvdl * Offset to the SCB flags field that includes the
1329 1.1 fvdl * "SCB aborted" status bit.
1330 1.1 fvdl */
1331 1.1 fvdl register ABRTBYTEPTR {
1332 1.1 fvdl address 0x02B
1333 1.1 fvdl access_mode RW
1334 1.1 fvdl modes M_CFG
1335 1.1 fvdl }
1336 1.1 fvdl
1337 1.1 fvdl /*
1338 1.1 fvdl * Command Aborted Bit Pointer
1339 1.1 fvdl * Bit offset in the SCB flags field for "SCB aborted" status.
1340 1.1 fvdl */
1341 1.1 fvdl register ABRTBITPTR {
1342 1.1 fvdl address 0x02C
1343 1.1 fvdl access_mode RW
1344 1.1 fvdl modes M_CFG
1345 1.1 fvdl }
1346 1.1 fvdl
1347 1.1 fvdl /*
1348 1.1 fvdl * Rev B or greater.
1349 1.1 fvdl */
1350 1.1 fvdl register MAXCMDBYTES {
1351 1.1 fvdl address 0x02D
1352 1.1 fvdl access_mode RW
1353 1.1 fvdl modes M_CFG
1354 1.1 fvdl }
1355 1.1 fvdl
1356 1.1 fvdl /*
1357 1.1 fvdl * Rev B or greater.
1358 1.1 fvdl */
1359 1.1 fvdl register MAXCMD2RCV {
1360 1.1 fvdl address 0x02E
1361 1.1 fvdl access_mode RW
1362 1.1 fvdl modes M_CFG
1363 1.1 fvdl }
1364 1.1 fvdl
1365 1.1 fvdl /*
1366 1.1 fvdl * Rev B or greater.
1367 1.1 fvdl */
1368 1.1 fvdl register SHORTTHRESH {
1369 1.1 fvdl address 0x02F
1370 1.1 fvdl access_mode RW
1371 1.1 fvdl modes M_CFG
1372 1.1 fvdl }
1373 1.1 fvdl
1374 1.1 fvdl /*
1375 1.1 fvdl * Logical Unit Number Length
1376 1.1 fvdl * The length, in bytes, of the SCB lun field.
1377 1.1 fvdl */
1378 1.1 fvdl register LUNLEN {
1379 1.1 fvdl address 0x030
1380 1.1 fvdl access_mode RW
1381 1.1 fvdl modes M_CFG
1382 1.1 fvdl }
1383 1.1 fvdl
1384 1.1 fvdl /*
1385 1.1 fvdl * CDB Limit
1386 1.1 fvdl * The size, in bytes, of the embedded CDB field in initator SCBs.
1387 1.1 fvdl */
1388 1.1 fvdl register CDBLIMIT {
1389 1.1 fvdl address 0x031
1390 1.1 fvdl access_mode RW
1391 1.1 fvdl modes M_CFG
1392 1.1 fvdl }
1393 1.1 fvdl
1394 1.1 fvdl /*
1395 1.1 fvdl * Maximum Commands
1396 1.1 fvdl * The maximum number of commands to issue during a
1397 1.1 fvdl * single packetized connection.
1398 1.1 fvdl */
1399 1.1 fvdl register MAXCMD {
1400 1.1 fvdl address 0x032
1401 1.1 fvdl access_mode RW
1402 1.1 fvdl modes M_CFG
1403 1.1 fvdl }
1404 1.1 fvdl
1405 1.1 fvdl /*
1406 1.1 fvdl * Maximum Command Counter
1407 1.1 fvdl * The number of commands already sent during this connection
1408 1.1 fvdl */
1409 1.1 fvdl register MAXCMDCNT {
1410 1.1 fvdl address 0x033
1411 1.1 fvdl access_mode RW
1412 1.1 fvdl modes M_CFG
1413 1.1 fvdl }
1414 1.1 fvdl
1415 1.1 fvdl /*
1416 1.1 fvdl * LQ Packet Reserved Bytes
1417 1.1 fvdl * The bytes to be sent in the currently reserved fileds
1418 1.1 fvdl * of all LQ packets.
1419 1.1 fvdl */
1420 1.1 fvdl register LQRSVD01 {
1421 1.1 fvdl address 0x034
1422 1.1 fvdl access_mode RW
1423 1.1 fvdl modes M_SCSI
1424 1.1 fvdl }
1425 1.1 fvdl register LQRSVD16 {
1426 1.1 fvdl address 0x035
1427 1.1 fvdl access_mode RW
1428 1.1 fvdl modes M_SCSI
1429 1.1 fvdl }
1430 1.1 fvdl register LQRSVD17 {
1431 1.1 fvdl address 0x036
1432 1.1 fvdl access_mode RW
1433 1.1 fvdl modes M_SCSI
1434 1.1 fvdl }
1435 1.1 fvdl
1436 1.1 fvdl /*
1437 1.1 fvdl * Command Reserved 0
1438 1.1 fvdl * The byte to be sent for the reserved byte 0 of
1439 1.1 fvdl * outgoing command packets.
1440 1.1 fvdl */
1441 1.1 fvdl register CMDRSVD0 {
1442 1.1 fvdl address 0x037
1443 1.1 fvdl access_mode RW
1444 1.1 fvdl modes M_CFG
1445 1.1 fvdl }
1446 1.1 fvdl
1447 1.1 fvdl /*
1448 1.1 fvdl * LQ Manager Control 0
1449 1.1 fvdl */
1450 1.1 fvdl register LQCTL0 {
1451 1.1 fvdl address 0x038
1452 1.1 fvdl access_mode RW
1453 1.1 fvdl modes M_CFG
1454 1.1 fvdl field LQITARGCLT 0xC0
1455 1.1 fvdl field LQIINITGCLT 0x30
1456 1.1 fvdl field LQ0TARGCLT 0x0C
1457 1.1 fvdl field LQ0INITGCLT 0x03
1458 1.1 fvdl }
1459 1.1 fvdl
1460 1.1 fvdl /*
1461 1.1 fvdl * LQ Manager Control 1
1462 1.1 fvdl */
1463 1.1 fvdl register LQCTL1 {
1464 1.1 fvdl address 0x038
1465 1.1 fvdl access_mode RW
1466 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1467 1.1 fvdl field PCI2PCI 0x04
1468 1.1 fvdl field SINGLECMD 0x02
1469 1.1 fvdl field ABORTPENDING 0x01
1470 1.1 fvdl }
1471 1.1 fvdl
1472 1.1 fvdl /*
1473 1.1 fvdl * LQ Manager Control 2
1474 1.1 fvdl */
1475 1.1 fvdl register LQCTL2 {
1476 1.1 fvdl address 0x039
1477 1.1 fvdl access_mode RW
1478 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1479 1.1 fvdl field LQIRETRY 0x80
1480 1.1 fvdl field LQICONTINUE 0x40
1481 1.1 fvdl field LQITOIDLE 0x20
1482 1.1 fvdl field LQIPAUSE 0x10
1483 1.1 fvdl field LQORETRY 0x08
1484 1.1 fvdl field LQOCONTINUE 0x04
1485 1.1 fvdl field LQOTOIDLE 0x02
1486 1.1 fvdl field LQOPAUSE 0x01
1487 1.1 fvdl }
1488 1.1 fvdl
1489 1.1 fvdl /*
1490 1.1 fvdl * SCSI RAM BIST0
1491 1.1 fvdl */
1492 1.1 fvdl register SCSBIST0 {
1493 1.1 fvdl address 0x039
1494 1.1 fvdl access_mode RW
1495 1.1 fvdl modes M_CFG
1496 1.1 fvdl field GSBISTERR 0x40
1497 1.1 fvdl field GSBISTDONE 0x20
1498 1.1 fvdl field GSBISTRUN 0x10
1499 1.1 fvdl field OSBISTERR 0x04
1500 1.1 fvdl field OSBISTDONE 0x02
1501 1.1 fvdl field OSBISTRUN 0x01
1502 1.1 fvdl }
1503 1.1 fvdl
1504 1.1 fvdl /*
1505 1.1 fvdl * SCSI Sequence Control0
1506 1.1 fvdl */
1507 1.1 fvdl register SCSISEQ0 {
1508 1.1 fvdl address 0x03A
1509 1.1 fvdl access_mode RW
1510 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1511 1.1 fvdl field TEMODEO 0x80
1512 1.1 fvdl field ENSELO 0x40
1513 1.1 fvdl field ENARBO 0x20
1514 1.1 fvdl field FORCEBUSFREE 0x10
1515 1.1 fvdl field SCSIRSTO 0x01
1516 1.1 fvdl }
1517 1.1 fvdl
1518 1.1 fvdl /*
1519 1.1 fvdl * SCSI RAM BIST 1
1520 1.1 fvdl */
1521 1.1 fvdl register SCSBIST1 {
1522 1.1 fvdl address 0x03A
1523 1.1 fvdl access_mode RW
1524 1.1 fvdl modes M_CFG
1525 1.1 fvdl field NTBISTERR 0x04
1526 1.1 fvdl field NTBISTDONE 0x02
1527 1.1 fvdl field NTBISTRUN 0x01
1528 1.1 fvdl }
1529 1.1 fvdl
1530 1.1 fvdl /*
1531 1.1 fvdl * SCSI Sequence Control 1
1532 1.1 fvdl */
1533 1.1 fvdl register SCSISEQ1 {
1534 1.1 fvdl address 0x03B
1535 1.1 fvdl access_mode RW
1536 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1537 1.1 fvdl field MANUALCTL 0x40
1538 1.1 fvdl field ENSELI 0x20
1539 1.1 fvdl field ENRSELI 0x10
1540 1.1 fvdl field MANUALP 0x0C
1541 1.1 fvdl field ENAUTOATNP 0x02
1542 1.1 fvdl field ALTSTIM 0x01
1543 1.1 fvdl }
1544 1.1 fvdl
1545 1.1 fvdl /*
1546 1.1 fvdl * SCSI Transfer Control 0
1547 1.1 fvdl */
1548 1.1 fvdl register SXFRCTL0 {
1549 1.1 fvdl address 0x03C
1550 1.1 fvdl access_mode RW
1551 1.1 fvdl modes M_SCSI
1552 1.1 fvdl field DFON 0x80
1553 1.1 fvdl field DFPEXP 0x40
1554 1.1 fvdl field BIOSCANCELEN 0x10
1555 1.1 fvdl field SPIOEN 0x08
1556 1.1 fvdl }
1557 1.1 fvdl
1558 1.1 fvdl /*
1559 1.1 fvdl * SCSI Transfer Control 1
1560 1.1 fvdl */
1561 1.1 fvdl register SXFRCTL1 {
1562 1.1 fvdl address 0x03D
1563 1.1 fvdl access_mode RW
1564 1.1 fvdl modes M_SCSI
1565 1.1 fvdl field BITBUCKET 0x80
1566 1.1 fvdl field ENSACHK 0x40
1567 1.1 fvdl field ENSPCHK 0x20
1568 1.1 fvdl field STIMESEL 0x18
1569 1.1 fvdl field ENSTIMER 0x04
1570 1.1 fvdl field ACTNEGEN 0x02
1571 1.1 fvdl field STPWEN 0x01
1572 1.1 fvdl }
1573 1.1 fvdl
1574 1.1 fvdl /*
1575 1.1 fvdl * SCSI Transfer Control 2
1576 1.1 fvdl */
1577 1.1 fvdl register SXFRCTL2 {
1578 1.1 fvdl address 0x03E
1579 1.1 fvdl access_mode RW
1580 1.1 fvdl modes M_SCSI
1581 1.1 fvdl field AUTORSTDIS 0x10
1582 1.1 fvdl field CMDDMAEN 0x08
1583 1.1 fvdl field ASU 0x07
1584 1.1 fvdl }
1585 1.1 fvdl
1586 1.1 fvdl /*
1587 1.1 fvdl * SCSI Bus Initiator IDs
1588 1.1 fvdl * Bitmask of observed initiators on the bus.
1589 1.1 fvdl */
1590 1.1 fvdl register BUSINITID {
1591 1.1 fvdl address 0x03C
1592 1.1 fvdl access_mode RW
1593 1.1 fvdl modes M_CFG
1594 1.1 fvdl size 2
1595 1.1 fvdl }
1596 1.1 fvdl
1597 1.1 fvdl /*
1598 1.1 fvdl * Data Length Counters
1599 1.1 fvdl * Packet byte counter.
1600 1.1 fvdl */
1601 1.1 fvdl register DLCOUNT {
1602 1.1 fvdl address 0x03C
1603 1.1 fvdl access_mode RW
1604 1.1 fvdl modes M_DFF0, M_DFF1
1605 1.1 fvdl size 3
1606 1.1 fvdl }
1607 1.1 fvdl
1608 1.1 fvdl /*
1609 1.1 fvdl * Data FIFO Status
1610 1.1 fvdl */
1611 1.1 fvdl register DFFSTAT {
1612 1.1 fvdl address 0x03F
1613 1.1 fvdl access_mode RW
1614 1.1 fvdl modes M_SCSI
1615 1.1 fvdl field FIFO1FREE 0x20
1616 1.1 fvdl field FIFO0FREE 0x10
1617 1.1 fvdl /*
1618 1.1 fvdl * On the B, this enum only works
1619 1.1 fvdl * in the read direction. For writes,
1620 1.1 fvdl * you must use the B version of the
1621 1.1 fvdl * CURRFIFO_0 definition which is defined
1622 1.1 fvdl * as a constant outside of this register
1623 1.1 fvdl * definition to avoid confusing the
1624 1.1 fvdl * register pretty printing code.
1625 1.1 fvdl */
1626 1.1 fvdl enum CURRFIFO 0x03 {
1627 1.1 fvdl CURRFIFO_0,
1628 1.1 fvdl CURRFIFO_1,
1629 1.1 fvdl CURRFIFO_NONE 0x3
1630 1.1 fvdl }
1631 1.1 fvdl }
1632 1.1 fvdl
1633 1.1 fvdl const B_CURRFIFO_0 0x2
1634 1.1 fvdl
1635 1.1 fvdl /*
1636 1.1 fvdl * SCSI Bus Target IDs
1637 1.1 fvdl * Bitmask of observed targets on the bus.
1638 1.1 fvdl */
1639 1.1 fvdl register BUSTARGID {
1640 1.1 fvdl address 0x03E
1641 1.1 fvdl access_mode RW
1642 1.1 fvdl modes M_CFG
1643 1.1 fvdl size 2
1644 1.1 fvdl }
1645 1.1 fvdl
1646 1.1 fvdl /*
1647 1.1 fvdl * SCSI Control Signal Out
1648 1.1 fvdl */
1649 1.1 fvdl register SCSISIGO {
1650 1.1 fvdl address 0x040
1651 1.1 fvdl access_mode RW
1652 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1653 1.1 fvdl field CDO 0x80
1654 1.1 fvdl field IOO 0x40
1655 1.1 fvdl field MSGO 0x20
1656 1.1 fvdl field ATNO 0x10
1657 1.1 fvdl field SELO 0x08
1658 1.1 fvdl field BSYO 0x04
1659 1.1 fvdl field REQO 0x02
1660 1.1 fvdl field ACKO 0x01
1661 1.1 fvdl /*
1662 1.1 fvdl * Possible phases to write into SCSISIG0
1663 1.1 fvdl */
1664 1.1 fvdl enum PHASE_MASK CDO|IOO|MSGO {
1665 1.1 fvdl P_DATAOUT 0x0,
1666 1.1 fvdl P_DATAIN IOO,
1667 1.1 fvdl P_DATAOUT_DT P_DATAOUT|MSGO,
1668 1.1 fvdl P_DATAIN_DT P_DATAIN|MSGO,
1669 1.1 fvdl P_COMMAND CDO,
1670 1.1 fvdl P_MESGOUT CDO|MSGO,
1671 1.1 fvdl P_STATUS CDO|IOO,
1672 1.1 fvdl P_MESGIN CDO|IOO|MSGO
1673 1.1 fvdl }
1674 1.1 fvdl }
1675 1.1 fvdl
1676 1.1 fvdl register SCSISIGI {
1677 1.1 fvdl address 0x041
1678 1.1 fvdl access_mode RO
1679 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1680 1.1 fvdl field CDI 0x80
1681 1.1 fvdl field IOI 0x40
1682 1.1 fvdl field MSGI 0x20
1683 1.1 fvdl field ATNI 0x10
1684 1.1 fvdl field SELI 0x08
1685 1.1 fvdl field BSYI 0x04
1686 1.1 fvdl field REQI 0x02
1687 1.1 fvdl field ACKI 0x01
1688 1.1 fvdl /*
1689 1.1 fvdl * Possible phases in SCSISIGI
1690 1.1 fvdl */
1691 1.1 fvdl enum PHASE_MASK CDO|IOO|MSGO {
1692 1.1 fvdl P_DATAOUT 0x0,
1693 1.1 fvdl P_DATAIN IOO,
1694 1.1 fvdl P_DATAOUT_DT P_DATAOUT|MSGO,
1695 1.1 fvdl P_DATAIN_DT P_DATAIN|MSGO,
1696 1.1 fvdl P_COMMAND CDO,
1697 1.1 fvdl P_MESGOUT CDO|MSGO,
1698 1.1 fvdl P_STATUS CDO|IOO,
1699 1.1 fvdl P_MESGIN CDO|IOO|MSGO
1700 1.1 fvdl }
1701 1.1 fvdl }
1702 1.1 fvdl
1703 1.1 fvdl /*
1704 1.1 fvdl * Multiple Target IDs
1705 1.1 fvdl * Bitmask of ids to respond as a target.
1706 1.1 fvdl */
1707 1.1 fvdl register MULTARGID {
1708 1.1 fvdl address 0x040
1709 1.1 fvdl access_mode RW
1710 1.1 fvdl modes M_CFG
1711 1.1 fvdl size 2
1712 1.1 fvdl }
1713 1.1 fvdl
1714 1.1 fvdl /*
1715 1.1 fvdl * SCSI Phase
1716 1.1 fvdl */
1717 1.1 fvdl register SCSIPHASE {
1718 1.1 fvdl address 0x042
1719 1.1 fvdl access_mode RO
1720 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1721 1.1 fvdl field STATUS_PHASE 0x20
1722 1.1 fvdl field COMMAND_PHASE 0x10
1723 1.1 fvdl field MSG_IN_PHASE 0x08
1724 1.1 fvdl field MSG_OUT_PHASE 0x04
1725 1.1 fvdl field DATA_PHASE_MASK 0x03 {
1726 1.1 fvdl DATA_OUT_PHASE 0x01,
1727 1.1 fvdl DATA_IN_PHASE 0x02
1728 1.1 fvdl }
1729 1.1 fvdl }
1730 1.1 fvdl
1731 1.1 fvdl /*
1732 1.1 fvdl * SCSI Data 0 Image
1733 1.1 fvdl */
1734 1.1 fvdl register SCSIDAT0_IMG {
1735 1.1 fvdl address 0x043
1736 1.1 fvdl access_mode RW
1737 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1738 1.1 fvdl }
1739 1.1 fvdl
1740 1.1 fvdl /*
1741 1.1 fvdl * SCSI Latched Data
1742 1.1 fvdl */
1743 1.1 fvdl register SCSIDAT {
1744 1.1 fvdl address 0x044
1745 1.1 fvdl access_mode RW
1746 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1747 1.1 fvdl size 2
1748 1.1 fvdl }
1749 1.1 fvdl
1750 1.1 fvdl /*
1751 1.1 fvdl * SCSI Data Bus
1752 1.1 fvdl */
1753 1.1 fvdl register SCSIBUS {
1754 1.1 fvdl address 0x046
1755 1.1 fvdl access_mode RW
1756 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1757 1.1 fvdl size 2
1758 1.1 fvdl }
1759 1.1 fvdl
1760 1.1 fvdl /*
1761 1.1 fvdl * Target ID In
1762 1.1 fvdl */
1763 1.1 fvdl register TARGIDIN {
1764 1.1 fvdl address 0x048
1765 1.1 fvdl access_mode RO
1766 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1767 1.1 fvdl field CLKOUT 0x80
1768 1.1 fvdl field TARGID 0x0F
1769 1.1 fvdl }
1770 1.1 fvdl
1771 1.1 fvdl /*
1772 1.1 fvdl * Selection/Reselection ID
1773 1.1 fvdl * Upper four bits are the device id. The ONEBIT is set when the re/selecting
1774 1.1 fvdl * device did not set its own ID.
1775 1.1 fvdl */
1776 1.1 fvdl register SELID {
1777 1.1 fvdl address 0x049
1778 1.1 fvdl access_mode RW
1779 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1780 1.1 fvdl field SELID_MASK 0xf0
1781 1.1 fvdl field ONEBIT 0x08
1782 1.1 fvdl }
1783 1.1 fvdl
1784 1.1 fvdl /*
1785 1.1 fvdl * SCSI Block Control
1786 1.1 fvdl * Controls Bus type and channel selection. SELWIDE allows for the
1787 1.1 fvdl * coexistence of 8bit and 16bit devices on a wide bus.
1788 1.1 fvdl */
1789 1.1 fvdl register SBLKCTL {
1790 1.1 fvdl address 0x04A
1791 1.1 fvdl access_mode RW
1792 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1793 1.1 fvdl field DIAGLEDEN 0x80
1794 1.1 fvdl field DIAGLEDON 0x40
1795 1.1 fvdl field ENAB40 0x08 /* LVD transceiver active */
1796 1.1 fvdl field ENAB20 0x04 /* SE/HVD transceiver active */
1797 1.1 fvdl field SELWIDE 0x02
1798 1.1 fvdl }
1799 1.1 fvdl
1800 1.1 fvdl /*
1801 1.1 fvdl * Option Mode
1802 1.1 fvdl */
1803 1.1 fvdl register OPTIONMODE {
1804 1.1 fvdl address 0x04A
1805 1.1 fvdl access_mode RW
1806 1.1 fvdl modes M_CFG
1807 1.1 fvdl field BIOSCANCTL 0x80
1808 1.1 fvdl field AUTOACKEN 0x40
1809 1.1 fvdl field BIASCANCTL 0x20
1810 1.1 fvdl field BUSFREEREV 0x10
1811 1.1 fvdl field ENDGFORMCHK 0x04
1812 1.1 fvdl field AUTO_MSGOUT_DE 0x02
1813 1.1 fvdl mask OPTIONMODE_DEFAULTS AUTO_MSGOUT_DE
1814 1.1 fvdl }
1815 1.1 fvdl
1816 1.1 fvdl /*
1817 1.1 fvdl * SCSI Status 0
1818 1.1 fvdl */
1819 1.1 fvdl register SSTAT0 {
1820 1.1 fvdl address 0x04B
1821 1.1 fvdl access_mode RO
1822 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1823 1.1 fvdl field TARGET 0x80 /* Board acting as target */
1824 1.1 fvdl field SELDO 0x40 /* Selection Done */
1825 1.1 fvdl field SELDI 0x20 /* Board has been selected */
1826 1.1 fvdl field SELINGO 0x10 /* Selection In Progress */
1827 1.1 fvdl field IOERR 0x08 /* LVD Tranceiver mode changed */
1828 1.1 fvdl field OVERRUN 0x04 /* SCSI Offset overrun detected */
1829 1.1 fvdl field SPIORDY 0x02 /* SCSI PIO Ready */
1830 1.1 fvdl field ARBDO 0x01 /* Arbitration Done Out */
1831 1.1 fvdl }
1832 1.1 fvdl
1833 1.1 fvdl /*
1834 1.1 fvdl * Clear SCSI Interrupt 0
1835 1.1 fvdl * Writing a 1 to a bit clears the associated SCSI Interrupt in SSTAT0.
1836 1.1 fvdl */
1837 1.1 fvdl register CLRSINT0 {
1838 1.1 fvdl address 0x04B
1839 1.1 fvdl access_mode WO
1840 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1841 1.1 fvdl field CLRSELDO 0x40
1842 1.1 fvdl field CLRSELDI 0x20
1843 1.1 fvdl field CLRSELINGO 0x10
1844 1.1 fvdl field CLRIOERR 0x08
1845 1.1 fvdl field CLROVERRUN 0x04
1846 1.1 fvdl field CLRSPIORDY 0x02
1847 1.1 fvdl field CLRARBDO 0x01
1848 1.1 fvdl }
1849 1.1 fvdl
1850 1.1 fvdl /*
1851 1.1 fvdl * SCSI Interrupt Mode 0
1852 1.1 fvdl * Setting any bit will enable the corresponding function
1853 1.1 fvdl * in SIMODE0 to interrupt via the IRQ pin.
1854 1.1 fvdl */
1855 1.1 fvdl register SIMODE0 {
1856 1.1 fvdl address 0x04B
1857 1.1 fvdl access_mode RW
1858 1.1 fvdl modes M_CFG
1859 1.1 fvdl field ENSELDO 0x40
1860 1.1 fvdl field ENSELDI 0x20
1861 1.1 fvdl field ENSELINGO 0x10
1862 1.1 fvdl field ENIOERR 0x08
1863 1.1 fvdl field ENOVERRUN 0x04
1864 1.1 fvdl field ENSPIORDY 0x02
1865 1.1 fvdl field ENARBDO 0x01
1866 1.1 fvdl }
1867 1.1 fvdl
1868 1.1 fvdl /*
1869 1.1 fvdl * SCSI Status 1
1870 1.1 fvdl */
1871 1.1 fvdl register SSTAT1 {
1872 1.1 fvdl address 0x04C
1873 1.1 fvdl access_mode RO
1874 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1875 1.1 fvdl field SELTO 0x80
1876 1.1 fvdl field ATNTARG 0x40
1877 1.1 fvdl field SCSIRSTI 0x20
1878 1.1 fvdl field PHASEMIS 0x10
1879 1.1 fvdl field BUSFREE 0x08
1880 1.1 fvdl field SCSIPERR 0x04
1881 1.1 fvdl field STRB2FAST 0x02
1882 1.1 fvdl field REQINIT 0x01
1883 1.1 fvdl }
1884 1.1 fvdl
1885 1.1 fvdl /*
1886 1.1 fvdl * Clear SCSI Interrupt 1
1887 1.1 fvdl * Writing a 1 to a bit clears the associated SCSI Interrupt in SSTAT1.
1888 1.1 fvdl */
1889 1.1 fvdl register CLRSINT1 {
1890 1.1 fvdl address 0x04C
1891 1.1 fvdl access_mode WO
1892 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1893 1.1 fvdl field CLRSELTIMEO 0x80
1894 1.1 fvdl field CLRATNO 0x40
1895 1.1 fvdl field CLRSCSIRSTI 0x20
1896 1.1 fvdl field CLRBUSFREE 0x08
1897 1.1 fvdl field CLRSCSIPERR 0x04
1898 1.1 fvdl field CLRSTRB2FAST 0x02
1899 1.1 fvdl field CLRREQINIT 0x01
1900 1.1 fvdl }
1901 1.1 fvdl
1902 1.1 fvdl /*
1903 1.1 fvdl * SCSI Status 2
1904 1.1 fvdl */
1905 1.1 fvdl register SSTAT2 {
1906 1.1 fvdl address 0x04d
1907 1.1 fvdl access_mode RO
1908 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1909 1.1 fvdl field BUSFREETIME 0xc0 {
1910 1.1 fvdl BUSFREE_LQO 0x40,
1911 1.1 fvdl BUSFREE_DFF0 0x80,
1912 1.1 fvdl BUSFREE_DFF1 0xC0
1913 1.1 fvdl }
1914 1.1 fvdl field NONPACKREQ 0x20
1915 1.1 fvdl field EXP_ACTIVE 0x10 /* SCSI Expander Active */
1916 1.1 fvdl field BSYX 0x08 /* Busy Expander */
1917 1.1 fvdl field WIDE_RES 0x04 /* Modes 0 and 1 only */
1918 1.1 fvdl field SDONE 0x02 /* Modes 0 and 1 only */
1919 1.1 fvdl field DMADONE 0x01 /* Modes 0 and 1 only */
1920 1.1 fvdl }
1921 1.1 fvdl
1922 1.1 fvdl /*
1923 1.1 fvdl * Clear SCSI Interrupt 2
1924 1.1 fvdl */
1925 1.1 fvdl register CLRSINT2 {
1926 1.1 fvdl address 0x04D
1927 1.1 fvdl access_mode WO
1928 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1929 1.1 fvdl field CLRNONPACKREQ 0x20
1930 1.1 fvdl field CLRWIDE_RES 0x04 /* Modes 0 and 1 only */
1931 1.1 fvdl field CLRSDONE 0x02 /* Modes 0 and 1 only */
1932 1.1 fvdl field CLRDMADONE 0x01 /* Modes 0 and 1 only */
1933 1.1 fvdl }
1934 1.1 fvdl
1935 1.1 fvdl /*
1936 1.1 fvdl * SCSI Interrupt Mode 2
1937 1.1 fvdl */
1938 1.1 fvdl register SIMODE2 {
1939 1.1 fvdl address 0x04D
1940 1.1 fvdl access_mode RW
1941 1.1 fvdl modes M_CFG
1942 1.1 fvdl field ENWIDE_RES 0x04
1943 1.1 fvdl field ENSDONE 0x02
1944 1.1 fvdl field ENDMADONE 0x01
1945 1.1 fvdl }
1946 1.1 fvdl
1947 1.1 fvdl /*
1948 1.1 fvdl * Physical Error Diagnosis
1949 1.1 fvdl */
1950 1.1 fvdl register PERRDIAG {
1951 1.1 fvdl address 0x04E
1952 1.1 fvdl access_mode RO
1953 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1954 1.1 fvdl field HIZERO 0x80
1955 1.1 fvdl field HIPERR 0x40
1956 1.1 fvdl field PREVPHASE 0x20
1957 1.1 fvdl field PARITYERR 0x10
1958 1.1 fvdl field AIPERR 0x08
1959 1.1 fvdl field CRCERR 0x04
1960 1.1 fvdl field DGFORMERR 0x02
1961 1.1 fvdl field DTERR 0x01
1962 1.1 fvdl }
1963 1.1 fvdl
1964 1.1 fvdl /*
1965 1.1 fvdl * LQI Manager Current State
1966 1.1 fvdl */
1967 1.1 fvdl register LQISTATE {
1968 1.1 fvdl address 0x04E
1969 1.1 fvdl access_mode RO
1970 1.1 fvdl modes M_CFG
1971 1.1 fvdl }
1972 1.1 fvdl
1973 1.1 fvdl /*
1974 1.1 fvdl * SCSI Offset Count
1975 1.1 fvdl */
1976 1.1 fvdl register SOFFCNT {
1977 1.1 fvdl address 0x04F
1978 1.1 fvdl access_mode RO
1979 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1980 1.1 fvdl }
1981 1.1 fvdl
1982 1.1 fvdl /*
1983 1.1 fvdl * LQO Manager Current State
1984 1.1 fvdl */
1985 1.1 fvdl register LQOSTATE {
1986 1.1 fvdl address 0x04F
1987 1.1 fvdl access_mode RO
1988 1.1 fvdl modes M_CFG
1989 1.1 fvdl }
1990 1.1 fvdl
1991 1.1 fvdl /*
1992 1.1 fvdl * LQI Manager Status
1993 1.1 fvdl */
1994 1.1 fvdl register LQISTAT0 {
1995 1.1 fvdl address 0x050
1996 1.1 fvdl access_mode RO
1997 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1998 1.1 fvdl field LQIATNQAS 0x20
1999 1.1 fvdl field LQICRCT1 0x10
2000 1.1 fvdl field LQICRCT2 0x08
2001 1.1 fvdl field LQIBADLQT 0x04
2002 1.1 fvdl field LQIATNLQ 0x02
2003 1.1 fvdl field LQIATNCMD 0x01
2004 1.1 fvdl }
2005 1.1 fvdl
2006 1.1 fvdl /*
2007 1.1 fvdl * Clear LQI Interrupts 0
2008 1.1 fvdl */
2009 1.1 fvdl register CLRLQIINT0 {
2010 1.1 fvdl address 0x050
2011 1.1 fvdl access_mode WO
2012 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
2013 1.1 fvdl field CLRLQIATNQAS 0x20
2014 1.1 fvdl field CLRLQICRCT1 0x10
2015 1.1 fvdl field CLRLQICRCT2 0x08
2016 1.1 fvdl field CLRLQIBADLQT 0x04
2017 1.1 fvdl field CLRLQIATNLQ 0x02
2018 1.1 fvdl field CLRLQIATNCMD 0x01
2019 1.1 fvdl }
2020 1.1 fvdl
2021 1.1 fvdl /*
2022 1.1 fvdl * LQI Manager Interrupt Mode 0
2023 1.1 fvdl */
2024 1.1 fvdl register LQIMODE0 {
2025 1.1 fvdl address 0x050
2026 1.1 fvdl access_mode RW
2027 1.1 fvdl modes M_CFG
2028 1.1 fvdl field ENLQIATNQASK 0x20
2029 1.1 fvdl field ENLQICRCT1 0x10
2030 1.1 fvdl field ENLQICRCT2 0x08
2031 1.1 fvdl field ENLQIBADLQT 0x04
2032 1.1 fvdl field ENLQIATNLQ 0x02
2033 1.1 fvdl field ENLQIATNCMD 0x01
2034 1.1 fvdl }
2035 1.1 fvdl
2036 1.1 fvdl /*
2037 1.1 fvdl * LQI Manager Status 1
2038 1.1 fvdl */
2039 1.1 fvdl register LQISTAT1 {
2040 1.1 fvdl address 0x051
2041 1.1 fvdl access_mode RO
2042 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
2043 1.1 fvdl field LQIPHASE_LQ 0x80
2044 1.1 fvdl field LQIPHASE_NLQ 0x40
2045 1.1 fvdl field LQIABORT 0x20
2046 1.1 fvdl field LQICRCI_LQ 0x10
2047 1.1 fvdl field LQICRCI_NLQ 0x08
2048 1.1 fvdl field LQIBADLQI 0x04
2049 1.1 fvdl field LQIOVERI_LQ 0x02
2050 1.1 fvdl field LQIOVERI_NLQ 0x01
2051 1.1 fvdl }
2052 1.1 fvdl
2053 1.1 fvdl /*
2054 1.1 fvdl * Clear LQI Manager Interrupts1
2055 1.1 fvdl */
2056 1.1 fvdl register CLRLQIINT1 {
2057 1.1 fvdl address 0x051
2058 1.1 fvdl access_mode WO
2059 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
2060 1.1 fvdl field CLRLQIPHASE_LQ 0x80
2061 1.1 fvdl field CLRLQIPHASE_NLQ 0x40
2062 1.1 fvdl field CLRLIQABORT 0x20
2063 1.1 fvdl field CLRLQICRCI_LQ 0x10
2064 1.1 fvdl field CLRLQICRCI_NLQ 0x08
2065 1.1 fvdl field CLRLQIBADLQI 0x04
2066 1.1 fvdl field CLRLQIOVERI_LQ 0x02
2067 1.1 fvdl field CLRLQIOVERI_NLQ 0x01
2068 1.1 fvdl }
2069 1.1 fvdl
2070 1.1 fvdl /*
2071 1.1 fvdl * LQI Manager Interrupt Mode 1
2072 1.1 fvdl */
2073 1.1 fvdl register LQIMODE1 {
2074 1.1 fvdl address 0x051
2075 1.1 fvdl access_mode RW
2076 1.1 fvdl modes M_CFG
2077 1.1 fvdl field ENLQIPHASE_LQ 0x80 /* LQIPHASE1 */
2078 1.1 fvdl field ENLQIPHASE_NLQ 0x40 /* LQIPHASE2 */
2079 1.1 fvdl field ENLIQABORT 0x20
2080 1.1 fvdl field ENLQICRCI_LQ 0x10 /* LQICRCI1 */
2081 1.1 fvdl field ENLQICRCI_NLQ 0x08 /* LQICRCI2 */
2082 1.1 fvdl field ENLQIBADLQI 0x04
2083 1.1 fvdl field ENLQIOVERI_LQ 0x02 /* LQIOVERI1 */
2084 1.1 fvdl field ENLQIOVERI_NLQ 0x01 /* LQIOVERI2 */
2085 1.1 fvdl }
2086 1.1 fvdl
2087 1.1 fvdl /*
2088 1.1 fvdl * LQI Manager Status 2
2089 1.1 fvdl */
2090 1.1 fvdl register LQISTAT2 {
2091 1.1 fvdl address 0x052
2092 1.1 fvdl access_mode RO
2093 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
2094 1.1 fvdl field PACKETIZED 0x80
2095 1.1 fvdl field LQIPHASE_OUTPKT 0x40
2096 1.1 fvdl field LQIWORKONLQ 0x20
2097 1.1 fvdl field LQIWAITFIFO 0x10
2098 1.1 fvdl field LQISTOPPKT 0x08
2099 1.1 fvdl field LQISTOPLQ 0x04
2100 1.1 fvdl field LQISTOPCMD 0x02
2101 1.1 fvdl field LQIGSAVAIL 0x01
2102 1.1 fvdl }
2103 1.1 fvdl
2104 1.1 fvdl /*
2105 1.1 fvdl * SCSI Status 3
2106 1.1 fvdl */
2107 1.1 fvdl register SSTAT3 {
2108 1.1 fvdl address 0x053
2109 1.1 fvdl access_mode RO
2110 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
2111 1.1 fvdl field NTRAMPERR 0x02
2112 1.1 fvdl field OSRAMPERR 0x01
2113 1.1 fvdl }
2114 1.1 fvdl
2115 1.1 fvdl /*
2116 1.1 fvdl * Clear SCSI Status 3
2117 1.1 fvdl */
2118 1.1 fvdl register CLRSINT3 {
2119 1.1 fvdl address 0x053
2120 1.1 fvdl access_mode WO
2121 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
2122 1.1 fvdl field CLRNTRAMPERR 0x02
2123 1.1 fvdl field CLROSRAMPERR 0x01
2124 1.1 fvdl }
2125 1.1 fvdl
2126 1.1 fvdl /*
2127 1.1 fvdl * SCSI Interrupt Mode 3
2128 1.1 fvdl */
2129 1.1 fvdl register SIMODE3 {
2130 1.1 fvdl address 0x053
2131 1.1 fvdl access_mode RW
2132 1.1 fvdl modes M_CFG
2133 1.1 fvdl field ENNTRAMPERR 0x02
2134 1.1 fvdl field ENOSRAMPERR 0x01
2135 1.1 fvdl }
2136 1.1 fvdl
2137 1.1 fvdl /*
2138 1.1 fvdl * LQO Manager Status 0
2139 1.1 fvdl */
2140 1.1 fvdl register LQOSTAT0 {
2141 1.1 fvdl address 0x054
2142 1.1 fvdl access_mode RO
2143 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
2144 1.1 fvdl field LQOTARGSCBPERR 0x10
2145 1.1 fvdl field LQOSTOPT2 0x08
2146 1.1 fvdl field LQOATNLQ 0x04
2147 1.1 fvdl field LQOATNPKT 0x02
2148 1.1 fvdl field LQOTCRC 0x01
2149 1.1 fvdl }
2150 1.1 fvdl
2151 1.1 fvdl /*
2152 1.1 fvdl * Clear LQO Manager interrupt 0
2153 1.1 fvdl */
2154 1.1 fvdl register CLRLQOINT0 {
2155 1.1 fvdl address 0x054
2156 1.1 fvdl access_mode WO
2157 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
2158 1.1 fvdl field CLRLQOTARGSCBPERR 0x10
2159 1.1 fvdl field CLRLQOSTOPT2 0x08
2160 1.1 fvdl field CLRLQOATNLQ 0x04
2161 1.1 fvdl field CLRLQOATNPKT 0x02
2162 1.1 fvdl field CLRLQOTCRC 0x01
2163 1.1 fvdl }
2164 1.1 fvdl
2165 1.1 fvdl /*
2166 1.1 fvdl * LQO Manager Interrupt Mode 0
2167 1.1 fvdl */
2168 1.1 fvdl register LQOMODE0 {
2169 1.1 fvdl address 0x054
2170 1.1 fvdl access_mode RW
2171 1.1 fvdl modes M_CFG
2172 1.1 fvdl field ENLQOTARGSCBPERR 0x10
2173 1.1 fvdl field ENLQOSTOPT2 0x08
2174 1.1 fvdl field ENLQOATNLQ 0x04
2175 1.1 fvdl field ENLQOATNPKT 0x02
2176 1.1 fvdl field ENLQOTCRC 0x01
2177 1.1 fvdl }
2178 1.1 fvdl
2179 1.1 fvdl /*
2180 1.1 fvdl * LQO Manager Status 1
2181 1.1 fvdl */
2182 1.1 fvdl register LQOSTAT1 {
2183 1.1 fvdl address 0x055
2184 1.1 fvdl access_mode RO
2185 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
2186 1.1 fvdl field LQOINITSCBPERR 0x10
2187 1.1 fvdl field LQOSTOPI2 0x08
2188 1.1 fvdl field LQOBADQAS 0x04
2189 1.1 fvdl field LQOBUSFREE 0x02
2190 1.1 fvdl field LQOPHACHGINPKT 0x01
2191 1.1 fvdl }
2192 1.1 fvdl
2193 1.1 fvdl /*
2194 1.1 fvdl * Clear LOQ Interrupt 1
2195 1.1 fvdl */
2196 1.1 fvdl register CLRLQOINT1 {
2197 1.1 fvdl address 0x055
2198 1.1 fvdl access_mode WO
2199 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
2200 1.1 fvdl field CLRLQOINITSCBPERR 0x10
2201 1.1 fvdl field CLRLQOSTOPI2 0x08
2202 1.1 fvdl field CLRLQOBADQAS 0x04
2203 1.1 fvdl field CLRLQOBUSFREE 0x02
2204 1.1 fvdl field CLRLQOPHACHGINPKT 0x01
2205 1.1 fvdl }
2206 1.1 fvdl
2207 1.1 fvdl /*
2208 1.1 fvdl * LQO Manager Interrupt Mode 1
2209 1.1 fvdl */
2210 1.1 fvdl register LQOMODE1 {
2211 1.1 fvdl address 0x055
2212 1.1 fvdl access_mode RW
2213 1.1 fvdl modes M_CFG
2214 1.1 fvdl field ENLQOINITSCBPERR 0x10
2215 1.1 fvdl field ENLQOSTOPI2 0x08
2216 1.1 fvdl field ENLQOBADQAS 0x04
2217 1.1 fvdl field ENLQOBUSFREE 0x02
2218 1.1 fvdl field ENLQOPHACHGINPKT 0x01
2219 1.1 fvdl }
2220 1.1 fvdl
2221 1.1 fvdl /*
2222 1.1 fvdl * LQO Manager Status 2
2223 1.1 fvdl */
2224 1.1 fvdl register LQOSTAT2 {
2225 1.1 fvdl address 0x056
2226 1.1 fvdl access_mode RO
2227 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
2228 1.1 fvdl field LQOPKT 0xE0
2229 1.1 fvdl field LQOWAITFIFO 0x10
2230 1.1 fvdl field LQOPHACHGOUTPKT 0x02 /* outside of packet boundaries. */
2231 1.1 fvdl field LQOSTOP0 0x01 /* Stopped after sending all packets */
2232 1.1 fvdl }
2233 1.1 fvdl
2234 1.1 fvdl /*
2235 1.1 fvdl * Output Synchronizer Space Count
2236 1.1 fvdl */
2237 1.1 fvdl register OS_SPACE_CNT {
2238 1.1 fvdl address 0x056
2239 1.1 fvdl access_mode RO
2240 1.1 fvdl modes M_CFG
2241 1.1 fvdl }
2242 1.1 fvdl
2243 1.1 fvdl /*
2244 1.1 fvdl * SCSI Interrupt Mode 1
2245 1.1 fvdl * Setting any bit will enable the corresponding function
2246 1.1 fvdl * in SIMODE1 to interrupt via the IRQ pin.
2247 1.1 fvdl */
2248 1.1 fvdl register SIMODE1 {
2249 1.1 fvdl address 0x057
2250 1.1 fvdl access_mode RW
2251 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
2252 1.1 fvdl field ENSELTIMO 0x80
2253 1.1 fvdl field ENATNTARG 0x40
2254 1.1 fvdl field ENSCSIRST 0x20
2255 1.1 fvdl field ENPHASEMIS 0x10
2256 1.1 fvdl field ENBUSFREE 0x08
2257 1.1 fvdl field ENSCSIPERR 0x04
2258 1.1 fvdl field ENSTRB2FAST 0x02
2259 1.1 fvdl field ENREQINIT 0x01
2260 1.1 fvdl }
2261 1.1 fvdl
2262 1.1 fvdl /*
2263 1.1 fvdl * Good Status FIFO
2264 1.1 fvdl */
2265 1.1 fvdl register GSFIFO {
2266 1.1 fvdl address 0x058
2267 1.1 fvdl access_mode RO
2268 1.1 fvdl size 2
2269 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
2270 1.1 fvdl }
2271 1.1 fvdl
2272 1.1 fvdl /*
2273 1.1 fvdl * Data FIFO SCSI Transfer Control
2274 1.1 fvdl */
2275 1.1 fvdl register DFFSXFRCTL {
2276 1.1 fvdl address 0x05A
2277 1.1 fvdl access_mode RW
2278 1.1 fvdl modes M_DFF0, M_DFF1
2279 1.1 fvdl field DFFBITBUCKET 0x08
2280 1.1 fvdl field CLRSHCNT 0x04
2281 1.1 fvdl field CLRCHN 0x02
2282 1.1 fvdl field RSTCHN 0x01
2283 1.1 fvdl }
2284 1.1 fvdl
2285 1.1 fvdl /*
2286 1.1 fvdl * Next SCSI Control Block
2287 1.1 fvdl */
2288 1.1 fvdl register NEXTSCB {
2289 1.1 fvdl address 0x05A
2290 1.1 fvdl access_mode RW
2291 1.1 fvdl size 2
2292 1.1 fvdl modes M_SCSI
2293 1.1 fvdl }
2294 1.1 fvdl
2295 1.1 fvdl /* Rev B only. */
2296 1.1 fvdl register LQOSCSCTL {
2297 1.1 fvdl address 0x05A
2298 1.1 fvdl access_mode RW
2299 1.1 fvdl size 1
2300 1.1 fvdl modes M_CFG
2301 1.1 fvdl field LQOH2A_VERSION 0x80
2302 1.1 fvdl field LQONOCHKOVER 0x01
2303 1.1 fvdl }
2304 1.1 fvdl
2305 1.1 fvdl /*
2306 1.1 fvdl * SEQ Interrupts
2307 1.1 fvdl */
2308 1.1 fvdl register SEQINTSRC {
2309 1.1 fvdl address 0x05B
2310 1.1 fvdl access_mode RO
2311 1.1 fvdl modes M_DFF0, M_DFF1
2312 1.1 fvdl field CTXTDONE 0x40
2313 1.1 fvdl field SAVEPTRS 0x20
2314 1.1 fvdl field CFG4DATA 0x10
2315 1.1 fvdl field CFG4ISTAT 0x08
2316 1.1 fvdl field CFG4TSTAT 0x04
2317 1.1 fvdl field CFG4ICMD 0x02
2318 1.1 fvdl field CFG4TCMD 0x01
2319 1.1 fvdl }
2320 1.1 fvdl
2321 1.1 fvdl /*
2322 1.1 fvdl * Clear Arp Interrupts
2323 1.1 fvdl */
2324 1.1 fvdl register CLRSEQINTSRC {
2325 1.1 fvdl address 0x05B
2326 1.1 fvdl access_mode WO
2327 1.1 fvdl modes M_DFF0, M_DFF1
2328 1.1 fvdl field CLRCTXTDONE 0x40
2329 1.1 fvdl field CLRSAVEPTRS 0x20
2330 1.1 fvdl field CLRCFG4DATA 0x10
2331 1.1 fvdl field CLRCFG4ISTAT 0x08
2332 1.1 fvdl field CLRCFG4TSTAT 0x04
2333 1.1 fvdl field CLRCFG4ICMD 0x02
2334 1.1 fvdl field CLRCFG4TCMD 0x01
2335 1.1 fvdl }
2336 1.1 fvdl
2337 1.1 fvdl /*
2338 1.1 fvdl * SEQ Interrupt Enabled (Shared)
2339 1.1 fvdl */
2340 1.1 fvdl register SEQIMODE {
2341 1.1 fvdl address 0x05C
2342 1.1 fvdl access_mode RW
2343 1.1 fvdl modes M_DFF0, M_DFF1
2344 1.1 fvdl field ENCTXTDONE 0x40
2345 1.1 fvdl field ENSAVEPTRS 0x20
2346 1.1 fvdl field ENCFG4DATA 0x10
2347 1.1 fvdl field ENCFG4ISTAT 0x08
2348 1.1 fvdl field ENCFG4TSTAT 0x04
2349 1.1 fvdl field ENCFG4ICMD 0x02
2350 1.1 fvdl field ENCFG4TCMD 0x01
2351 1.1 fvdl }
2352 1.1 fvdl
2353 1.1 fvdl /*
2354 1.1 fvdl * Current SCSI Control Block
2355 1.1 fvdl */
2356 1.1 fvdl register CURRSCB {
2357 1.1 fvdl address 0x05C
2358 1.1 fvdl access_mode RW
2359 1.1 fvdl size 2
2360 1.1 fvdl modes M_SCSI
2361 1.1 fvdl }
2362 1.1 fvdl
2363 1.1 fvdl /*
2364 1.1 fvdl * Data FIFO Status
2365 1.1 fvdl */
2366 1.1 fvdl register MDFFSTAT {
2367 1.1 fvdl address 0x05D
2368 1.1 fvdl access_mode RO
2369 1.1 fvdl modes M_DFF0, M_DFF1
2370 1.1 fvdl field SHCNTNEGATIVE 0x40 /* Rev B or higher */
2371 1.1 fvdl field SHCNTMINUS1 0x20 /* Rev B or higher */
2372 1.1 fvdl field LASTSDONE 0x10
2373 1.1 fvdl field SHVALID 0x08
2374 1.1 fvdl field DLZERO 0x04 /* FIFO data ends on packet boundary. */
2375 1.1 fvdl field DATAINFIFO 0x02
2376 1.1 fvdl field FIFOFREE 0x01
2377 1.1 fvdl }
2378 1.1 fvdl
2379 1.1 fvdl /*
2380 1.1 fvdl * CRC Control
2381 1.1 fvdl */
2382 1.1 fvdl register CRCCONTROL {
2383 1.1 fvdl address 0x05d
2384 1.1 fvdl access_mode RW
2385 1.1 fvdl modes M_CFG
2386 1.1 fvdl field CRCVALCHKEN 0x40
2387 1.1 fvdl }
2388 1.1 fvdl
2389 1.1 fvdl /*
2390 1.1 fvdl * SCSI Test Control
2391 1.1 fvdl */
2392 1.1 fvdl register SCSITEST {
2393 1.1 fvdl address 0x05E
2394 1.1 fvdl access_mode RW
2395 1.1 fvdl modes M_CFG
2396 1.1 fvdl field CNTRTEST 0x08
2397 1.1 fvdl field SEL_TXPLL_DEBUG 0x04
2398 1.1 fvdl }
2399 1.1 fvdl
2400 1.1 fvdl /*
2401 1.1 fvdl * Data FIFO Queue Tag
2402 1.1 fvdl */
2403 1.1 fvdl register DFFTAG {
2404 1.1 fvdl address 0x05E
2405 1.1 fvdl access_mode RW
2406 1.1 fvdl size 2
2407 1.1 fvdl modes M_DFF0, M_DFF1
2408 1.1 fvdl }
2409 1.1 fvdl
2410 1.1 fvdl /*
2411 1.1 fvdl * Last SCSI Control Block
2412 1.1 fvdl */
2413 1.1 fvdl register LASTSCB {
2414 1.1 fvdl address 0x05E
2415 1.1 fvdl access_mode RW
2416 1.1 fvdl size 2
2417 1.1 fvdl modes M_SCSI
2418 1.1 fvdl }
2419 1.1 fvdl
2420 1.1 fvdl /*
2421 1.1 fvdl * SCSI I/O Cell Power-down Control
2422 1.1 fvdl */
2423 1.1 fvdl register IOPDNCTL {
2424 1.1 fvdl address 0x05F
2425 1.1 fvdl access_mode RW
2426 1.1 fvdl modes M_CFG
2427 1.1 fvdl field DISABLE_OE 0x80
2428 1.1 fvdl field PDN_IDIST 0x04
2429 1.1 fvdl field PDN_DIFFSENSE 0x01
2430 1.1 fvdl }
2431 1.1 fvdl
2432 1.1 fvdl /*
2433 1.1 fvdl * Shaddow Host Address.
2434 1.1 fvdl */
2435 1.1 fvdl register SHADDR {
2436 1.1 fvdl address 0x060
2437 1.1 fvdl access_mode RO
2438 1.1 fvdl size 8
2439 1.1 fvdl modes M_DFF0, M_DFF1
2440 1.1 fvdl }
2441 1.1 fvdl
2442 1.1 fvdl /*
2443 1.1 fvdl * Data Group CRC Interval.
2444 1.1 fvdl */
2445 1.1 fvdl register DGRPCRCI {
2446 1.1 fvdl address 0x060
2447 1.1 fvdl access_mode RW
2448 1.1 fvdl size 2
2449 1.1 fvdl modes M_CFG
2450 1.1 fvdl }
2451 1.1 fvdl
2452 1.1 fvdl /*
2453 1.1 fvdl * Data Transfer Negotiation Address
2454 1.1 fvdl */
2455 1.1 fvdl register NEGOADDR {
2456 1.1 fvdl address 0x060
2457 1.1 fvdl access_mode RW
2458 1.1 fvdl modes M_SCSI
2459 1.1 fvdl }
2460 1.1 fvdl
2461 1.1 fvdl /*
2462 1.1 fvdl * Data Transfer Negotiation Data - Period Byte
2463 1.1 fvdl */
2464 1.1 fvdl register NEGPERIOD {
2465 1.1 fvdl address 0x061
2466 1.1 fvdl access_mode RW
2467 1.1 fvdl modes M_SCSI
2468 1.1 fvdl }
2469 1.1 fvdl
2470 1.1 fvdl /*
2471 1.1 fvdl * Packetized CRC Interval
2472 1.1 fvdl */
2473 1.1 fvdl register PACKCRCI {
2474 1.1 fvdl address 0x062
2475 1.1 fvdl access_mode RW
2476 1.1 fvdl size 2
2477 1.1 fvdl modes M_CFG
2478 1.1 fvdl }
2479 1.1 fvdl
2480 1.1 fvdl /*
2481 1.1 fvdl * Data Transfer Negotiation Data - Offset Byte
2482 1.1 fvdl */
2483 1.1 fvdl register NEGOFFSET {
2484 1.1 fvdl address 0x062
2485 1.1 fvdl access_mode RW
2486 1.1 fvdl modes M_SCSI
2487 1.1 fvdl }
2488 1.1 fvdl
2489 1.1 fvdl /*
2490 1.1 fvdl * Data Transfer Negotiation Data - PPR Options
2491 1.1 fvdl */
2492 1.1 fvdl register NEGPPROPTS {
2493 1.1 fvdl address 0x063
2494 1.1 fvdl access_mode RW
2495 1.1 fvdl modes M_SCSI
2496 1.1 fvdl field PPROPT_PACE 0x08
2497 1.1 fvdl field PPROPT_QAS 0x04
2498 1.1 fvdl field PPROPT_DT 0x02
2499 1.1 fvdl field PPROPT_IUT 0x01
2500 1.1 fvdl }
2501 1.1 fvdl
2502 1.1 fvdl /*
2503 1.1 fvdl * Data Transfer Negotiation Data - Connection Options
2504 1.1 fvdl */
2505 1.1 fvdl register NEGCONOPTS {
2506 1.1 fvdl address 0x064
2507 1.1 fvdl access_mode RW
2508 1.1 fvdl modes M_SCSI
2509 1.1 fvdl field ENSNAPSHOT 0x40
2510 1.1 fvdl field RTI_WRTDIS 0x20
2511 1.1 fvdl field RTI_OVRDTRN 0x10
2512 1.1 fvdl field ENSLOWCRC 0x08
2513 1.1 fvdl field ENAUTOATNI 0x04
2514 1.1 fvdl field ENAUTOATNO 0x02
2515 1.1 fvdl field WIDEXFER 0x01
2516 1.1 fvdl }
2517 1.1 fvdl
2518 1.1 fvdl /*
2519 1.1 fvdl * Negotiation Table Annex Column Index.
2520 1.1 fvdl */
2521 1.1 fvdl register ANNEXCOL {
2522 1.1 fvdl address 0x065
2523 1.1 fvdl access_mode RW
2524 1.1 fvdl modes M_SCSI
2525 1.1 fvdl }
2526 1.1 fvdl
2527 1.1 fvdl register SCSCHKN {
2528 1.1 fvdl address 0x066
2529 1.1 fvdl access_mode RW
2530 1.1 fvdl modes M_CFG
2531 1.1 fvdl field STSELSKIDDIS 0x40
2532 1.1 fvdl field CURRFIFODEF 0x20
2533 1.1 fvdl field WIDERESEN 0x10
2534 1.1 fvdl field SDONEMSKDIS 0x08
2535 1.1 fvdl field DFFACTCLR 0x04
2536 1.1 fvdl field SHVALIDSTDIS 0x02
2537 1.1 fvdl field LSTSGCLRDIS 0x01
2538 1.1 fvdl }
2539 1.1 fvdl
2540 1.1 fvdl const AHD_ANNEXCOL_PER_DEV0 4
2541 1.1 fvdl const AHD_NUM_PER_DEV_ANNEXCOLS 4
2542 1.1 fvdl const AHD_ANNEXCOL_PRECOMP_SLEW 4
2543 1.1 fvdl const AHD_PRECOMP_MASK 0x07
2544 1.1 fvdl const AHD_PRECOMP_SHIFT 0
2545 1.1 fvdl const AHD_PRECOMP_CUTBACK_17 0x04
2546 1.1 fvdl const AHD_PRECOMP_CUTBACK_29 0x06
2547 1.1 fvdl const AHD_PRECOMP_CUTBACK_37 0x07
2548 1.1 fvdl const AHD_SLEWRATE_MASK 0x78
2549 1.1 fvdl const AHD_SLEWRATE_SHIFT 3
2550 1.1 fvdl /*
2551 1.2 fvdl * Rev A has only a single bit (high bit of field) of slew adjustment.
2552 1.2 fvdl * Rev B has 4 bits. The current default happens to be the same for both.
2553 1.1 fvdl */
2554 1.2 fvdl const AHD_SLEWRATE_DEF_REVA 0x08
2555 1.1 fvdl const AHD_SLEWRATE_DEF_REVB 0x08
2556 1.1 fvdl
2557 1.1 fvdl /* Rev A does not have any amplitude setting. */
2558 1.1 fvdl const AHD_ANNEXCOL_AMPLITUDE 6
2559 1.1 fvdl const AHD_AMPLITUDE_MASK 0x7
2560 1.1 fvdl const AHD_AMPLITUDE_SHIFT 0
2561 1.1 fvdl const AHD_AMPLITUDE_DEF 0x7
2562 1.1 fvdl
2563 1.1 fvdl /*
2564 1.1 fvdl * Negotiation Table Annex Data Port.
2565 1.1 fvdl */
2566 1.1 fvdl register ANNEXDAT {
2567 1.1 fvdl address 0x066
2568 1.1 fvdl access_mode RW
2569 1.1 fvdl modes M_SCSI
2570 1.1 fvdl }
2571 1.1 fvdl
2572 1.1 fvdl /*
2573 1.1 fvdl * Initiator's Own Id.
2574 1.1 fvdl * The SCSI ID to use for Selection Out and seen during a reselection..
2575 1.1 fvdl */
2576 1.1 fvdl register IOWNID {
2577 1.1 fvdl address 0x067
2578 1.1 fvdl access_mode RW
2579 1.1 fvdl modes M_SCSI
2580 1.1 fvdl }
2581 1.1 fvdl
2582 1.1 fvdl /*
2583 1.1 fvdl * 960MHz Phase-Locked Loop Control 0
2584 1.1 fvdl */
2585 1.1 fvdl register PLL960CTL0 {
2586 1.1 fvdl address 0x068
2587 1.1 fvdl access_mode RW
2588 1.1 fvdl modes M_CFG
2589 1.1 fvdl field PLL_VCOSEL 0x80
2590 1.1 fvdl field PLL_PWDN 0x40
2591 1.1 fvdl field PLL_NS 0x30
2592 1.1 fvdl field PLL_ENLUD 0x08
2593 1.1 fvdl field PLL_ENLPF 0x04
2594 1.1 fvdl field PLL_DLPF 0x02
2595 1.1 fvdl field PLL_ENFBM 0x01
2596 1.1 fvdl }
2597 1.1 fvdl
2598 1.1 fvdl /*
2599 1.1 fvdl * Target Own Id
2600 1.1 fvdl */
2601 1.1 fvdl register TOWNID {
2602 1.1 fvdl address 0x069
2603 1.1 fvdl access_mode RW
2604 1.1 fvdl modes M_SCSI
2605 1.1 fvdl }
2606 1.1 fvdl
2607 1.1 fvdl /*
2608 1.1 fvdl * 960MHz Phase-Locked Loop Control 1
2609 1.1 fvdl */
2610 1.1 fvdl register PLL960CTL1 {
2611 1.1 fvdl address 0x069
2612 1.1 fvdl access_mode RW
2613 1.1 fvdl modes M_CFG
2614 1.1 fvdl field PLL_CNTEN 0x80
2615 1.1 fvdl field PLL_CNTCLR 0x40
2616 1.1 fvdl field PLL_RST 0x01
2617 1.1 fvdl }
2618 1.1 fvdl
2619 1.1 fvdl /*
2620 1.1 fvdl * Expander Signature
2621 1.1 fvdl */
2622 1.1 fvdl register XSIG {
2623 1.1 fvdl address 0x06A
2624 1.1 fvdl access_mode RW
2625 1.1 fvdl modes M_SCSI
2626 1.1 fvdl }
2627 1.1 fvdl
2628 1.1 fvdl /*
2629 1.1 fvdl * Shadow Byte Count
2630 1.1 fvdl */
2631 1.1 fvdl register SHCNT {
2632 1.1 fvdl address 0x068
2633 1.1 fvdl access_mode RW
2634 1.1 fvdl size 3
2635 1.1 fvdl modes M_DFF0, M_DFF1
2636 1.1 fvdl }
2637 1.1 fvdl
2638 1.1 fvdl /*
2639 1.1 fvdl * Selection Out ID
2640 1.1 fvdl */
2641 1.1 fvdl register SELOID {
2642 1.1 fvdl address 0x06B
2643 1.1 fvdl access_mode RW
2644 1.1 fvdl modes M_SCSI
2645 1.1 fvdl }
2646 1.1 fvdl
2647 1.1 fvdl /*
2648 1.1 fvdl * 960-MHz Phase-Locked Loop Test Count
2649 1.1 fvdl */
2650 1.1 fvdl register PLL960CNT0 {
2651 1.1 fvdl address 0x06A
2652 1.1 fvdl access_mode RO
2653 1.1 fvdl size 2
2654 1.1 fvdl modes M_CFG
2655 1.1 fvdl }
2656 1.1 fvdl
2657 1.1 fvdl /*
2658 1.1 fvdl * 400-MHz Phase-Locked Loop Control 0
2659 1.1 fvdl */
2660 1.1 fvdl register PLL400CTL0 {
2661 1.1 fvdl address 0x06C
2662 1.1 fvdl access_mode RW
2663 1.1 fvdl modes M_CFG
2664 1.1 fvdl field PLL_VCOSEL 0x80
2665 1.1 fvdl field PLL_PWDN 0x40
2666 1.1 fvdl field PLL_NS 0x30
2667 1.1 fvdl field PLL_ENLUD 0x08
2668 1.1 fvdl field PLL_ENLPF 0x04
2669 1.1 fvdl field PLL_DLPF 0x02
2670 1.1 fvdl field PLL_ENFBM 0x01
2671 1.1 fvdl }
2672 1.1 fvdl
2673 1.1 fvdl /*
2674 1.1 fvdl * Arbitration Fairness
2675 1.1 fvdl */
2676 1.1 fvdl register FAIRNESS {
2677 1.1 fvdl address 0x06C
2678 1.1 fvdl access_mode RW
2679 1.1 fvdl size 2
2680 1.1 fvdl modes M_SCSI
2681 1.1 fvdl }
2682 1.1 fvdl
2683 1.1 fvdl /*
2684 1.1 fvdl * 400-MHz Phase-Locked Loop Control 1
2685 1.1 fvdl */
2686 1.1 fvdl register PLL400CTL1 {
2687 1.1 fvdl address 0x06D
2688 1.1 fvdl access_mode RW
2689 1.1 fvdl modes M_CFG
2690 1.1 fvdl field PLL_CNTEN 0x80
2691 1.1 fvdl field PLL_CNTCLR 0x40
2692 1.1 fvdl field PLL_RST 0x01
2693 1.1 fvdl }
2694 1.1 fvdl
2695 1.1 fvdl /*
2696 1.1 fvdl * Arbitration Unfairness
2697 1.1 fvdl */
2698 1.1 fvdl register UNFAIRNESS {
2699 1.1 fvdl address 0x06E
2700 1.1 fvdl access_mode RW
2701 1.1 fvdl size 2
2702 1.1 fvdl modes M_SCSI
2703 1.1 fvdl }
2704 1.1 fvdl
2705 1.1 fvdl /*
2706 1.1 fvdl * 400-MHz Phase-Locked Loop Test Count
2707 1.1 fvdl */
2708 1.1 fvdl register PLL400CNT0 {
2709 1.1 fvdl address 0x06E
2710 1.1 fvdl access_mode RO
2711 1.1 fvdl size 2
2712 1.1 fvdl modes M_CFG
2713 1.1 fvdl }
2714 1.1 fvdl
2715 1.1 fvdl /*
2716 1.1 fvdl * SCB Page Pointer
2717 1.1 fvdl */
2718 1.1 fvdl register SCBPTR {
2719 1.1 fvdl address 0x0A8
2720 1.1 fvdl access_mode RW
2721 1.1 fvdl size 2
2722 1.1 fvdl modes M_DFF0, M_DFF1, M_CCHAN, M_SCSI
2723 1.1 fvdl }
2724 1.1 fvdl
2725 1.1 fvdl /*
2726 1.1 fvdl * CMC SCB Array Count
2727 1.1 fvdl * Number of bytes to transfer between CMC SCB memory and SCBRAM.
2728 1.1 fvdl * Transfers must be 8byte aligned and sized.
2729 1.1 fvdl */
2730 1.1 fvdl register CCSCBACNT {
2731 1.1 fvdl address 0x0AB
2732 1.1 fvdl access_mode RW
2733 1.1 fvdl modes M_CCHAN
2734 1.1 fvdl }
2735 1.1 fvdl
2736 1.1 fvdl /*
2737 1.1 fvdl * SCB Autopointer
2738 1.1 fvdl * SCB-Next Address Snooping logic. When an SCB is transferred to
2739 1.1 fvdl * the card, the next SCB address to be used by the CMC array can
2740 1.1 fvdl * be autoloaded from that transfer.
2741 1.1 fvdl */
2742 1.1 fvdl register SCBAUTOPTR {
2743 1.1 fvdl address 0x0AB
2744 1.1 fvdl access_mode RW
2745 1.1 fvdl modes M_CFG
2746 1.1 fvdl field AUSCBPTR_EN 0x80
2747 1.1 fvdl field SCBPTR_ADDR 0x38
2748 1.1 fvdl field SCBPTR_OFF 0x07
2749 1.1 fvdl }
2750 1.1 fvdl
2751 1.1 fvdl /*
2752 1.1 fvdl * CMC SG Ram Address Pointer
2753 1.1 fvdl */
2754 1.1 fvdl register CCSGADDR {
2755 1.1 fvdl address 0x0AC
2756 1.1 fvdl access_mode RW
2757 1.1 fvdl modes M_DFF0, M_DFF1
2758 1.1 fvdl }
2759 1.1 fvdl
2760 1.1 fvdl /*
2761 1.1 fvdl * CMC SCB RAM Address Pointer
2762 1.1 fvdl */
2763 1.1 fvdl register CCSCBADDR {
2764 1.1 fvdl address 0x0AC
2765 1.1 fvdl access_mode RW
2766 1.1 fvdl modes M_CCHAN
2767 1.1 fvdl }
2768 1.1 fvdl
2769 1.1 fvdl /*
2770 1.1 fvdl * CMC SCB Ram Back-up Address Pointer
2771 1.1 fvdl * Indicates the true stop location of transfers halted prior
2772 1.1 fvdl * to SCBHCNT going to 0.
2773 1.1 fvdl */
2774 1.1 fvdl register CCSCBADR_BK {
2775 1.1 fvdl address 0x0AC
2776 1.1 fvdl access_mode RO
2777 1.1 fvdl modes M_CFG
2778 1.1 fvdl }
2779 1.1 fvdl
2780 1.1 fvdl /*
2781 1.1 fvdl * CMC SG Control
2782 1.1 fvdl */
2783 1.1 fvdl register CCSGCTL {
2784 1.1 fvdl address 0x0AD
2785 1.1 fvdl access_mode RW
2786 1.1 fvdl modes M_DFF0, M_DFF1
2787 1.1 fvdl field CCSGDONE 0x80
2788 1.1 fvdl field SG_CACHE_AVAIL 0x10
2789 1.1 fvdl field CCSGENACK 0x08
2790 1.1 fvdl mask CCSGEN 0x0C
2791 1.1 fvdl field SG_FETCH_REQ 0x02
2792 1.1 fvdl field CCSGRESET 0x01
2793 1.1 fvdl }
2794 1.1 fvdl
2795 1.1 fvdl /*
2796 1.1 fvdl * CMD SCB Control
2797 1.1 fvdl */
2798 1.1 fvdl register CCSCBCTL {
2799 1.1 fvdl address 0x0AD
2800 1.1 fvdl access_mode RW
2801 1.1 fvdl modes M_CCHAN
2802 1.1 fvdl field CCSCBDONE 0x80
2803 1.1 fvdl field ARRDONE 0x40
2804 1.1 fvdl field CCARREN 0x10
2805 1.1 fvdl field CCSCBEN 0x08
2806 1.1 fvdl field CCSCBDIR 0x04
2807 1.1 fvdl field CCSCBRESET 0x01
2808 1.1 fvdl }
2809 1.1 fvdl
2810 1.1 fvdl /*
2811 1.1 fvdl * CMC Ram BIST
2812 1.1 fvdl */
2813 1.1 fvdl register CMC_RAMBIST {
2814 1.1 fvdl address 0x0AD
2815 1.1 fvdl access_mode RW
2816 1.1 fvdl modes M_CFG
2817 1.1 fvdl field SG_ELEMENT_SIZE 0x80
2818 1.1 fvdl field SCBRAMBIST_FAIL 0x40
2819 1.1 fvdl field SG_BIST_FAIL 0x20
2820 1.1 fvdl field SG_BIST_EN 0x10
2821 1.1 fvdl field CMC_BUFFER_BIST_FAIL 0x02
2822 1.1 fvdl field CMC_BUFFER_BIST_EN 0x01
2823 1.1 fvdl }
2824 1.1 fvdl
2825 1.1 fvdl /*
2826 1.1 fvdl * CMC SG RAM Data Port
2827 1.1 fvdl */
2828 1.1 fvdl register CCSGRAM {
2829 1.1 fvdl address 0x0B0
2830 1.1 fvdl access_mode RW
2831 1.1 fvdl modes M_DFF0, M_DFF1
2832 1.1 fvdl }
2833 1.1 fvdl
2834 1.1 fvdl /*
2835 1.1 fvdl * CMC SCB RAM Data Port
2836 1.1 fvdl */
2837 1.1 fvdl register CCSCBRAM {
2838 1.1 fvdl address 0x0B0
2839 1.1 fvdl access_mode RW
2840 1.1 fvdl modes M_CCHAN
2841 1.1 fvdl }
2842 1.1 fvdl
2843 1.1 fvdl /*
2844 1.1 fvdl * Flex DMA Address.
2845 1.1 fvdl */
2846 1.1 fvdl register FLEXADR {
2847 1.1 fvdl address 0x0B0
2848 1.1 fvdl access_mode RW
2849 1.1 fvdl size 3
2850 1.1 fvdl modes M_SCSI
2851 1.1 fvdl }
2852 1.1 fvdl
2853 1.1 fvdl /*
2854 1.1 fvdl * Flex DMA Byte Count
2855 1.1 fvdl */
2856 1.1 fvdl register FLEXCNT {
2857 1.1 fvdl address 0x0B3
2858 1.1 fvdl access_mode RW
2859 1.1 fvdl size 2
2860 1.1 fvdl modes M_SCSI
2861 1.1 fvdl }
2862 1.1 fvdl
2863 1.1 fvdl /*
2864 1.1 fvdl * Flex DMA Status
2865 1.1 fvdl */
2866 1.1 fvdl register FLEXDMASTAT {
2867 1.1 fvdl address 0x0B5
2868 1.1 fvdl access_mode RW
2869 1.1 fvdl modes M_SCSI
2870 1.1 fvdl field FLEXDMAERR 0x02
2871 1.1 fvdl field FLEXDMADONE 0x01
2872 1.1 fvdl }
2873 1.1 fvdl
2874 1.1 fvdl /*
2875 1.1 fvdl * Flex DMA Data Port
2876 1.1 fvdl */
2877 1.1 fvdl register FLEXDATA {
2878 1.1 fvdl address 0x0B6
2879 1.1 fvdl access_mode RW
2880 1.1 fvdl modes M_SCSI
2881 1.1 fvdl }
2882 1.1 fvdl
2883 1.1 fvdl /*
2884 1.1 fvdl * Board Data
2885 1.1 fvdl */
2886 1.1 fvdl register BRDDAT {
2887 1.1 fvdl address 0x0B8
2888 1.1 fvdl access_mode RW
2889 1.1 fvdl modes M_SCSI
2890 1.1 fvdl }
2891 1.1 fvdl
2892 1.1 fvdl /*
2893 1.1 fvdl * Board Control
2894 1.1 fvdl */
2895 1.1 fvdl register BRDCTL {
2896 1.1 fvdl address 0x0B9
2897 1.1 fvdl access_mode RW
2898 1.1 fvdl modes M_SCSI
2899 1.1 fvdl field FLXARBACK 0x80
2900 1.1 fvdl field FLXARBREQ 0x40
2901 1.1 fvdl field BRDADDR 0x38
2902 1.1 fvdl field BRDEN 0x04
2903 1.1 fvdl field BRDRW 0x02
2904 1.1 fvdl field BRDSTB 0x01
2905 1.1 fvdl }
2906 1.1 fvdl
2907 1.1 fvdl /*
2908 1.1 fvdl * Serial EEPROM Address
2909 1.1 fvdl */
2910 1.1 fvdl register SEEADR {
2911 1.1 fvdl address 0x0BA
2912 1.1 fvdl access_mode RW
2913 1.1 fvdl modes M_SCSI
2914 1.1 fvdl }
2915 1.1 fvdl
2916 1.1 fvdl /*
2917 1.1 fvdl * Serial EEPROM Data
2918 1.1 fvdl */
2919 1.1 fvdl register SEEDAT {
2920 1.1 fvdl address 0x0BC
2921 1.1 fvdl access_mode RW
2922 1.1 fvdl size 2
2923 1.1 fvdl modes M_SCSI
2924 1.1 fvdl }
2925 1.1 fvdl
2926 1.1 fvdl /*
2927 1.1 fvdl * Serial EEPROM Status
2928 1.1 fvdl */
2929 1.1 fvdl register SEESTAT {
2930 1.1 fvdl address 0x0BE
2931 1.1 fvdl access_mode RO
2932 1.1 fvdl modes M_SCSI
2933 1.1 fvdl field INIT_DONE 0x80
2934 1.1 fvdl field SEEOPCODE 0x70
2935 1.1 fvdl field LDALTID_L 0x08
2936 1.1 fvdl field SEEARBACK 0x04
2937 1.1 fvdl field SEEBUSY 0x02
2938 1.1 fvdl field SEESTART 0x01
2939 1.1 fvdl }
2940 1.1 fvdl
2941 1.1 fvdl /*
2942 1.1 fvdl * Serial EEPROM Control
2943 1.1 fvdl */
2944 1.1 fvdl register SEECTL {
2945 1.1 fvdl address 0x0BE
2946 1.1 fvdl access_mode RW
2947 1.1 fvdl modes M_SCSI
2948 1.1 fvdl field SEEOPCODE 0x70 {
2949 1.1 fvdl SEEOP_ERASE 0x70,
2950 1.1 fvdl SEEOP_READ 0x60,
2951 1.1 fvdl SEEOP_WRITE 0x50,
2952 1.1 fvdl /*
2953 1.1 fvdl * The following four commands use special
2954 1.1 fvdl * addresses for differentiation.
2955 1.1 fvdl */
2956 1.1 fvdl SEEOP_ERAL 0x40
2957 1.1 fvdl }
2958 1.1 fvdl mask SEEOP_EWEN 0x40
2959 1.1 fvdl mask SEEOP_WALL 0x40
2960 1.1 fvdl mask SEEOP_EWDS 0x40
2961 1.1 fvdl field SEERST 0x02
2962 1.1 fvdl field SEESTART 0x01
2963 1.1 fvdl }
2964 1.1 fvdl
2965 1.1 fvdl const SEEOP_ERAL_ADDR 0x80
2966 1.1 fvdl const SEEOP_EWEN_ADDR 0xC0
2967 1.1 fvdl const SEEOP_WRAL_ADDR 0x40
2968 1.1 fvdl const SEEOP_EWDS_ADDR 0x00
2969 1.1 fvdl
2970 1.1 fvdl /*
2971 1.1 fvdl * SCB Counter
2972 1.1 fvdl */
2973 1.1 fvdl register SCBCNT {
2974 1.1 fvdl address 0x0BF
2975 1.1 fvdl access_mode RW
2976 1.1 fvdl modes M_SCSI
2977 1.1 fvdl }
2978 1.1 fvdl
2979 1.1 fvdl /*
2980 1.1 fvdl * Data FIFO Write Address
2981 1.1 fvdl * Pointer to the next QWD location to be written to the data FIFO.
2982 1.1 fvdl */
2983 1.1 fvdl register DFWADDR {
2984 1.1 fvdl address 0x0C0
2985 1.1 fvdl access_mode RW
2986 1.1 fvdl size 2
2987 1.1 fvdl modes M_DFF0, M_DFF1
2988 1.1 fvdl }
2989 1.1 fvdl
2990 1.1 fvdl /*
2991 1.1 fvdl * DSP Filter Control
2992 1.1 fvdl */
2993 1.1 fvdl register DSPFLTRCTL {
2994 1.1 fvdl address 0x0C0
2995 1.1 fvdl access_mode RW
2996 1.1 fvdl modes M_CFG
2997 1.1 fvdl field FLTRDISABLE 0x20
2998 1.1 fvdl field EDGESENSE 0x10
2999 1.1 fvdl field DSPFCNTSEL 0x0F
3000 1.1 fvdl }
3001 1.1 fvdl
3002 1.1 fvdl /*
3003 1.1 fvdl * DSP Data Channel Control
3004 1.1 fvdl */
3005 1.1 fvdl register DSPDATACTL {
3006 1.1 fvdl address 0x0C1
3007 1.1 fvdl access_mode RW
3008 1.1 fvdl modes M_CFG
3009 1.1 fvdl field BYPASSENAB 0x80
3010 1.1 fvdl field DESQDIS 0x10
3011 1.1 fvdl field RCVROFFSTDIS 0x04
3012 1.1 fvdl field XMITOFFSTDIS 0x02
3013 1.1 fvdl }
3014 1.1 fvdl
3015 1.1 fvdl /*
3016 1.1 fvdl * Data FIFO Read Address
3017 1.1 fvdl * Pointer to the next QWD location to be read from the data FIFO.
3018 1.1 fvdl */
3019 1.1 fvdl register DFRADDR {
3020 1.1 fvdl address 0x0C2
3021 1.1 fvdl access_mode RW
3022 1.1 fvdl size 2
3023 1.1 fvdl modes M_DFF0, M_DFF1
3024 1.1 fvdl }
3025 1.1 fvdl
3026 1.1 fvdl /*
3027 1.1 fvdl * DSP REQ Control
3028 1.1 fvdl */
3029 1.1 fvdl register DSPREQCTL {
3030 1.1 fvdl address 0x0C2
3031 1.1 fvdl access_mode RW
3032 1.1 fvdl modes M_CFG
3033 1.1 fvdl field MANREQCTL 0xC0
3034 1.1 fvdl field MANREQDLY 0x3F
3035 1.1 fvdl }
3036 1.1 fvdl
3037 1.1 fvdl /*
3038 1.1 fvdl * DSP ACK Control
3039 1.1 fvdl */
3040 1.1 fvdl register DSPACKCTL {
3041 1.1 fvdl address 0x0C3
3042 1.1 fvdl access_mode RW
3043 1.1 fvdl modes M_CFG
3044 1.1 fvdl field MANACKCTL 0xC0
3045 1.1 fvdl field MANACKDLY 0x3F
3046 1.1 fvdl }
3047 1.1 fvdl
3048 1.1 fvdl /*
3049 1.1 fvdl * Data FIFO Data
3050 1.1 fvdl * Read/Write byte port into the data FIFO. The read and write
3051 1.1 fvdl * FIFO pointers increment with each read and write respectively
3052 1.1 fvdl * to this port.
3053 1.1 fvdl */
3054 1.1 fvdl register DFDAT {
3055 1.1 fvdl address 0x0C4
3056 1.1 fvdl access_mode RW
3057 1.1 fvdl modes M_DFF0, M_DFF1
3058 1.1 fvdl }
3059 1.1 fvdl
3060 1.1 fvdl /*
3061 1.1 fvdl * DSP Channel Select
3062 1.1 fvdl */
3063 1.1 fvdl register DSPSELECT {
3064 1.1 fvdl address 0x0C4
3065 1.1 fvdl access_mode RW
3066 1.1 fvdl modes M_CFG
3067 1.1 fvdl field AUTOINCEN 0x80
3068 1.1 fvdl field DSPSEL 0x1F
3069 1.1 fvdl }
3070 1.1 fvdl
3071 1.1 fvdl const NUMDSPS 0x14
3072 1.1 fvdl
3073 1.1 fvdl /*
3074 1.1 fvdl * Write Bias Control
3075 1.1 fvdl */
3076 1.1 fvdl register WRTBIASCTL {
3077 1.1 fvdl address 0x0C5
3078 1.1 fvdl access_mode WO
3079 1.1 fvdl modes M_CFG
3080 1.1 fvdl field AUTOXBCDIS 0x80
3081 1.1 fvdl field XMITMANVAL 0x3F
3082 1.1 fvdl }
3083 1.1 fvdl
3084 1.1 fvdl /*
3085 1.1 fvdl * Currently the WRTBIASCTL is the same as the default.
3086 1.1 fvdl */
3087 1.1 fvdl const WRTBIASCTL_HP_DEFAULT 0x0
3088 1.1 fvdl
3089 1.1 fvdl /*
3090 1.1 fvdl * Receiver Bias Control
3091 1.1 fvdl */
3092 1.1 fvdl register RCVRBIOSCTL {
3093 1.1 fvdl address 0x0C6
3094 1.1 fvdl access_mode WO
3095 1.1 fvdl modes M_CFG
3096 1.1 fvdl field AUTORBCDIS 0x80
3097 1.1 fvdl field RCVRMANVAL 0x3F
3098 1.1 fvdl }
3099 1.1 fvdl
3100 1.1 fvdl /*
3101 1.1 fvdl * Write Bias Calculator
3102 1.1 fvdl */
3103 1.1 fvdl register WRTBIASCALC {
3104 1.1 fvdl address 0x0C7
3105 1.1 fvdl access_mode RO
3106 1.1 fvdl modes M_CFG
3107 1.1 fvdl }
3108 1.1 fvdl
3109 1.1 fvdl /*
3110 1.1 fvdl * Data FIFO Pointers
3111 1.1 fvdl * Contains the byte offset from DFWADDR and DWRADDR to the current
3112 1.1 fvdl * FIFO write/read locations.
3113 1.1 fvdl */
3114 1.1 fvdl register DFPTRS {
3115 1.1 fvdl address 0x0C8
3116 1.1 fvdl access_mode RW
3117 1.1 fvdl modes M_DFF0, M_DFF1
3118 1.1 fvdl }
3119 1.1 fvdl
3120 1.1 fvdl /*
3121 1.1 fvdl * Receiver Bias Calculator
3122 1.1 fvdl */
3123 1.1 fvdl register RCVRBIASCALC {
3124 1.1 fvdl address 0x0C8
3125 1.1 fvdl access_mode RO
3126 1.1 fvdl modes M_CFG
3127 1.1 fvdl }
3128 1.1 fvdl
3129 1.1 fvdl /*
3130 1.1 fvdl * Data FIFO Backup Read Pointer
3131 1.1 fvdl * Contains the data FIFO address to be restored if the last
3132 1.1 fvdl * data accessed from the data FIFO was not transferred successfully.
3133 1.1 fvdl */
3134 1.1 fvdl register DFBKPTR {
3135 1.1 fvdl address 0x0C9
3136 1.1 fvdl access_mode RW
3137 1.1 fvdl size 2
3138 1.1 fvdl modes M_DFF0, M_DFF1
3139 1.1 fvdl }
3140 1.1 fvdl
3141 1.1 fvdl /*
3142 1.1 fvdl * Skew Calculator
3143 1.1 fvdl */
3144 1.1 fvdl register SKEWCALC {
3145 1.1 fvdl address 0x0C9
3146 1.1 fvdl access_mode RO
3147 1.1 fvdl modes M_CFG
3148 1.1 fvdl }
3149 1.1 fvdl
3150 1.1 fvdl /*
3151 1.1 fvdl * Data FIFO Debug Control
3152 1.1 fvdl */
3153 1.1 fvdl register DFDBCTL {
3154 1.1 fvdl address 0x0CB
3155 1.1 fvdl access_mode RW
3156 1.1 fvdl modes M_DFF0, M_DFF1
3157 1.1 fvdl field DFF_CIO_WR_RDY 0x20
3158 1.1 fvdl field DFF_CIO_RD_RDY 0x10
3159 1.1 fvdl field DFF_DIR_ERR 0x08
3160 1.1 fvdl field DFF_RAMBIST_FAIL 0x04
3161 1.1 fvdl field DFF_RAMBIST_DONE 0x02
3162 1.1 fvdl field DFF_RAMBIST_EN 0x01
3163 1.1 fvdl }
3164 1.1 fvdl
3165 1.1 fvdl /*
3166 1.1 fvdl * Data FIFO Space Count
3167 1.1 fvdl * Number of FIFO locations that are free.
3168 1.1 fvdl */
3169 1.1 fvdl register DFSCNT {
3170 1.1 fvdl address 0x0CC
3171 1.1 fvdl access_mode RO
3172 1.1 fvdl size 2
3173 1.1 fvdl modes M_DFF0, M_DFF1
3174 1.1 fvdl }
3175 1.1 fvdl
3176 1.1 fvdl /*
3177 1.1 fvdl * Data FIFO Byte Count
3178 1.1 fvdl * Number of filled FIFO locations.
3179 1.1 fvdl */
3180 1.1 fvdl register DFBCNT {
3181 1.1 fvdl address 0x0CE
3182 1.1 fvdl access_mode RO
3183 1.1 fvdl size 2
3184 1.1 fvdl modes M_DFF0, M_DFF1
3185 1.1 fvdl }
3186 1.1 fvdl
3187 1.1 fvdl /*
3188 1.1 fvdl * Sequencer Program Overlay Address.
3189 1.1 fvdl * Low address must be written prior to high address.
3190 1.1 fvdl */
3191 1.1 fvdl register OVLYADDR {
3192 1.1 fvdl address 0x0D4
3193 1.1 fvdl modes M_SCSI
3194 1.1 fvdl size 2
3195 1.1 fvdl access_mode RW
3196 1.1 fvdl }
3197 1.1 fvdl
3198 1.1 fvdl /*
3199 1.1 fvdl * Sequencer Control 0
3200 1.1 fvdl * Error detection mode, speed configuration,
3201 1.1 fvdl * single step, breakpoints and program load.
3202 1.1 fvdl */
3203 1.1 fvdl register SEQCTL0 {
3204 1.1 fvdl address 0x0D6
3205 1.1 fvdl access_mode RW
3206 1.1 fvdl field PERRORDIS 0x80
3207 1.1 fvdl field PAUSEDIS 0x40
3208 1.1 fvdl field FAILDIS 0x20
3209 1.1 fvdl field FASTMODE 0x10
3210 1.1 fvdl field BRKADRINTEN 0x08
3211 1.1 fvdl field STEP 0x04
3212 1.1 fvdl field SEQRESET 0x02
3213 1.1 fvdl field LOADRAM 0x01
3214 1.1 fvdl }
3215 1.1 fvdl
3216 1.1 fvdl /*
3217 1.1 fvdl * Sequencer Control 1
3218 1.1 fvdl * Instruction RAM Diagnostics
3219 1.1 fvdl */
3220 1.1 fvdl register SEQCTL1 {
3221 1.1 fvdl address 0x0D7
3222 1.1 fvdl access_mode RW
3223 1.1 fvdl field OVRLAY_DATA_CHK 0x08
3224 1.1 fvdl field RAMBIST_DONE 0x04
3225 1.1 fvdl field RAMBIST_FAIL 0x02
3226 1.1 fvdl field RAMBIST_EN 0x01
3227 1.1 fvdl }
3228 1.1 fvdl
3229 1.1 fvdl /*
3230 1.1 fvdl * Sequencer Flags
3231 1.1 fvdl * Zero and Carry state of the ALU.
3232 1.1 fvdl */
3233 1.1 fvdl register FLAGS {
3234 1.1 fvdl address 0x0D8
3235 1.1 fvdl access_mode RO
3236 1.1 fvdl field ZERO 0x02
3237 1.1 fvdl field CARRY 0x01
3238 1.1 fvdl }
3239 1.1 fvdl
3240 1.1 fvdl /*
3241 1.1 fvdl * Sequencer Interrupt Control
3242 1.1 fvdl */
3243 1.1 fvdl register SEQINTCTL {
3244 1.1 fvdl address 0x0D9
3245 1.1 fvdl access_mode RW
3246 1.1 fvdl field INTVEC1DSL 0x80
3247 1.1 fvdl field INT1_CONTEXT 0x20
3248 1.1 fvdl field SCS_SEQ_INT1M1 0x10
3249 1.1 fvdl field SCS_SEQ_INT1M0 0x08
3250 1.1 fvdl field INTMASK2 0x04
3251 1.1 fvdl field INTMASK1 0x02
3252 1.1 fvdl field IRET 0x01
3253 1.1 fvdl }
3254 1.1 fvdl
3255 1.1 fvdl /*
3256 1.1 fvdl * Sequencer RAM Data Port
3257 1.1 fvdl * Single byte window into the Sequencer Instruction Ram area starting
3258 1.1 fvdl * at the address specified by OVLYADDR. To write a full instruction word,
3259 1.1 fvdl * simply write four bytes in succession. OVLYADDR will increment after the
3260 1.1 fvdl * most significant instrution byte (the byte with the parity bit) is written.
3261 1.1 fvdl */
3262 1.1 fvdl register SEQRAM {
3263 1.1 fvdl address 0x0DA
3264 1.1 fvdl access_mode RW
3265 1.1 fvdl }
3266 1.1 fvdl
3267 1.1 fvdl /*
3268 1.1 fvdl * Sequencer Program Counter
3269 1.1 fvdl * Low byte must be written prior to high byte.
3270 1.1 fvdl */
3271 1.1 fvdl register PRGMCNT {
3272 1.1 fvdl address 0x0DE
3273 1.1 fvdl access_mode RW
3274 1.1 fvdl size 2
3275 1.1 fvdl }
3276 1.1 fvdl
3277 1.1 fvdl /*
3278 1.1 fvdl * Accumulator
3279 1.1 fvdl */
3280 1.1 fvdl register ACCUM {
3281 1.1 fvdl address 0x0E0
3282 1.1 fvdl access_mode RW
3283 1.1 fvdl accumulator
3284 1.1 fvdl }
3285 1.1 fvdl
3286 1.1 fvdl /*
3287 1.1 fvdl * Source Index Register
3288 1.1 fvdl * Incrementing index for reads of SINDIR and the destination (low byte only)
3289 1.1 fvdl * for any immediate operands passed in jmp, jc, jnc, call instructions.
3290 1.1 fvdl * Example:
3291 1.1 fvdl * mvi 0xFF call some_routine;
3292 1.1 fvdl *
3293 1.1 fvdl * Will set SINDEX[0] to 0xFF and call the routine "some_routine.
3294 1.1 fvdl */
3295 1.1 fvdl register SINDEX {
3296 1.1 fvdl address 0x0E2
3297 1.1 fvdl access_mode RW
3298 1.1 fvdl size 2
3299 1.1 fvdl sindex
3300 1.1 fvdl }
3301 1.1 fvdl
3302 1.1 fvdl /*
3303 1.1 fvdl * Destination Index Register
3304 1.1 fvdl * Incrementing index for writes to DINDIR. Can be used as a scratch register.
3305 1.1 fvdl */
3306 1.1 fvdl register DINDEX {
3307 1.1 fvdl address 0x0E4
3308 1.1 fvdl access_mode RW
3309 1.1 fvdl size 2
3310 1.1 fvdl }
3311 1.1 fvdl
3312 1.1 fvdl /*
3313 1.1 fvdl * Break Address
3314 1.1 fvdl * Sequencer instruction breakpoint address address.
3315 1.1 fvdl */
3316 1.1 fvdl register BRKADDR0 {
3317 1.1 fvdl address 0x0E6
3318 1.1 fvdl access_mode RW
3319 1.1 fvdl }
3320 1.1 fvdl
3321 1.1 fvdl register BRKADDR1 {
3322 1.1 fvdl address 0x0E6
3323 1.1 fvdl access_mode RW
3324 1.1 fvdl field BRKDIS 0x80 /* Disable Breakpoint */
3325 1.1 fvdl }
3326 1.1 fvdl
3327 1.1 fvdl /*
3328 1.1 fvdl * All Ones
3329 1.1 fvdl * All reads to this register return the value 0xFF.
3330 1.1 fvdl */
3331 1.1 fvdl register ALLONES {
3332 1.1 fvdl address 0x0E8
3333 1.1 fvdl access_mode RO
3334 1.1 fvdl allones
3335 1.1 fvdl }
3336 1.1 fvdl
3337 1.1 fvdl /*
3338 1.1 fvdl * All Zeros
3339 1.1 fvdl * All reads to this register return the value 0.
3340 1.1 fvdl */
3341 1.1 fvdl register ALLZEROS {
3342 1.1 fvdl address 0x0EA
3343 1.1 fvdl access_mode RO
3344 1.1 fvdl allzeros
3345 1.1 fvdl }
3346 1.1 fvdl
3347 1.1 fvdl /*
3348 1.1 fvdl * No Destination
3349 1.1 fvdl * Writes to this register have no effect.
3350 1.1 fvdl */
3351 1.1 fvdl register NONE {
3352 1.1 fvdl address 0x0EA
3353 1.1 fvdl access_mode WO
3354 1.1 fvdl none
3355 1.1 fvdl }
3356 1.1 fvdl
3357 1.1 fvdl /*
3358 1.1 fvdl * Source Index Indirect
3359 1.1 fvdl * Reading this register is equivalent to reading (register_base + SINDEX) and
3360 1.1 fvdl * incrementing SINDEX by 1.
3361 1.1 fvdl */
3362 1.1 fvdl register SINDIR {
3363 1.1 fvdl address 0x0EC
3364 1.1 fvdl access_mode RO
3365 1.1 fvdl }
3366 1.1 fvdl
3367 1.1 fvdl /*
3368 1.1 fvdl * Destination Index Indirect
3369 1.1 fvdl * Writing this register is equivalent to writing to (register_base + DINDEX)
3370 1.1 fvdl * and incrementing DINDEX by 1.
3371 1.1 fvdl */
3372 1.1 fvdl register DINDIR {
3373 1.1 fvdl address 0x0ED
3374 1.1 fvdl access_mode WO
3375 1.1 fvdl }
3376 1.1 fvdl
3377 1.1 fvdl /*
3378 1.1 fvdl * Function One
3379 1.1 fvdl * 2's complement to bit value conversion. Write the 2's complement value
3380 1.1 fvdl * (0-7 only) to the top nibble and retrieve the bit indexed by that value
3381 1.1 fvdl * on the next read of this register.
3382 1.1 fvdl * Example:
3383 1.1 fvdl * Write 0x60
3384 1.1 fvdl * Read 0x40
3385 1.1 fvdl */
3386 1.1 fvdl register FUNCTION1 {
3387 1.1 fvdl address 0x0F0
3388 1.1 fvdl access_mode RW
3389 1.1 fvdl }
3390 1.1 fvdl
3391 1.1 fvdl /*
3392 1.1 fvdl * Stack
3393 1.1 fvdl * Window into the stack. Each stack location is 10 bits wide reported
3394 1.1 fvdl * low byte followed by high byte. There are 8 stack locations.
3395 1.1 fvdl */
3396 1.1 fvdl register STACK {
3397 1.1 fvdl address 0x0F2
3398 1.1 fvdl access_mode RW
3399 1.1 fvdl }
3400 1.1 fvdl
3401 1.1 fvdl /*
3402 1.1 fvdl * Interrupt Vector 1 Address
3403 1.1 fvdl * Interrupt branch address for SCS SEQ_INT1 mode 0 and 1 interrupts.
3404 1.1 fvdl */
3405 1.1 fvdl register INTVEC1_ADDR {
3406 1.1 fvdl address 0x0F4
3407 1.1 fvdl access_mode RW
3408 1.1 fvdl size 2
3409 1.1 fvdl modes M_CFG
3410 1.1 fvdl }
3411 1.1 fvdl
3412 1.1 fvdl /*
3413 1.1 fvdl * Current Address
3414 1.1 fvdl * Address of the SEQRAM instruction currently executing instruction.
3415 1.1 fvdl */
3416 1.1 fvdl register CURADDR {
3417 1.1 fvdl address 0x0F4
3418 1.1 fvdl access_mode RW
3419 1.1 fvdl size 2
3420 1.1 fvdl modes M_SCSI
3421 1.1 fvdl }
3422 1.1 fvdl
3423 1.1 fvdl /*
3424 1.1 fvdl * Interrupt Vector 2 Address
3425 1.1 fvdl * Interrupt branch address for HST_SEQ_INT2 interrupts.
3426 1.1 fvdl */
3427 1.1 fvdl register INTVEC2_ADDR {
3428 1.1 fvdl address 0x0F6
3429 1.1 fvdl access_mode RW
3430 1.1 fvdl size 2
3431 1.1 fvdl modes M_CFG
3432 1.1 fvdl }
3433 1.1 fvdl
3434 1.1 fvdl /*
3435 1.1 fvdl * Last Address
3436 1.1 fvdl * Address of the SEQRAM instruction executed prior to the current instruction.
3437 1.1 fvdl */
3438 1.1 fvdl register LASTADDR {
3439 1.1 fvdl address 0x0F6
3440 1.1 fvdl access_mode RW
3441 1.1 fvdl size 2
3442 1.1 fvdl modes M_SCSI
3443 1.1 fvdl }
3444 1.1 fvdl
3445 1.1 fvdl register AHD_PCI_CONFIG_BASE {
3446 1.1 fvdl address 0x100
3447 1.1 fvdl access_mode RW
3448 1.1 fvdl size 256
3449 1.1 fvdl modes M_CFG
3450 1.1 fvdl }
3451 1.1 fvdl
3452 1.1 fvdl /* ---------------------- Scratch RAM Offsets ------------------------- */
3453 1.1 fvdl scratch_ram {
3454 1.1 fvdl /* Mode Specific */
3455 1.1 fvdl address 0x0A0
3456 1.1 fvdl size 8
3457 1.1 fvdl modes 0, 1, 2, 3
3458 1.1 fvdl REG0 {
3459 1.1 fvdl size 2
3460 1.1 fvdl }
3461 1.1 fvdl REG1 {
3462 1.1 fvdl size 2
3463 1.1 fvdl }
3464 1.1 fvdl REG_ISR {
3465 1.1 fvdl size 2
3466 1.1 fvdl }
3467 1.1 fvdl SG_STATE {
3468 1.1 fvdl size 1
3469 1.1 fvdl field SEGS_AVAIL 0x01
3470 1.1 fvdl field LOADING_NEEDED 0x02
3471 1.1 fvdl field FETCH_INPROG 0x04
3472 1.1 fvdl }
3473 1.1 fvdl /*
3474 1.1 fvdl * Track whether the transfer byte count for
3475 1.1 fvdl * the current data phase is odd.
3476 1.1 fvdl */
3477 1.1 fvdl DATA_COUNT_ODD {
3478 1.1 fvdl size 1
3479 1.1 fvdl }
3480 1.1 fvdl }
3481 1.1 fvdl
3482 1.1 fvdl scratch_ram {
3483 1.1 fvdl /* Mode Specific */
3484 1.1 fvdl address 0x0F8
3485 1.1 fvdl size 8
3486 1.1 fvdl modes 0, 1, 2, 3
3487 1.1 fvdl LONGJMP_ADDR {
3488 1.1 fvdl size 2
3489 1.1 fvdl }
3490 1.1 fvdl ACCUM_SAVE {
3491 1.1 fvdl size 1
3492 1.1 fvdl }
3493 1.1 fvdl }
3494 1.1 fvdl
3495 1.1 fvdl
3496 1.1 fvdl scratch_ram {
3497 1.1 fvdl address 0x100
3498 1.1 fvdl size 128
3499 1.1 fvdl modes 0, 1, 2, 3
3500 1.1 fvdl /*
3501 1.1 fvdl * Per "other-id" execution queues. We use an array of
3502 1.1 fvdl * tail pointers into lists of SCBs sorted by "other-id".
3503 1.1 fvdl * The execution head pointer threads the head SCBs for
3504 1.1 fvdl * each list.
3505 1.1 fvdl */
3506 1.1 fvdl WAITING_SCB_TAILS {
3507 1.1 fvdl size 32
3508 1.1 fvdl }
3509 1.1 fvdl WAITING_TID_HEAD {
3510 1.1 fvdl size 2
3511 1.1 fvdl }
3512 1.1 fvdl WAITING_TID_TAIL {
3513 1.1 fvdl size 2
3514 1.1 fvdl }
3515 1.1 fvdl /*
3516 1.1 fvdl * SCBID of the next SCB in the new SCB queue.
3517 1.1 fvdl */
3518 1.1 fvdl NEXT_QUEUED_SCB_ADDR {
3519 1.1 fvdl size 4
3520 1.1 fvdl }
3521 1.1 fvdl /*
3522 1.1 fvdl * head of list of SCBs that have
3523 1.1 fvdl * completed but have not been
3524 1.1 fvdl * put into the qoutfifo.
3525 1.1 fvdl */
3526 1.1 fvdl COMPLETE_SCB_HEAD {
3527 1.1 fvdl size 2
3528 1.1 fvdl }
3529 1.1 fvdl /*
3530 1.1 fvdl * The list of completed SCBs in
3531 1.1 fvdl * the active DMA.
3532 1.1 fvdl */
3533 1.1 fvdl COMPLETE_SCB_DMAINPROG_HEAD {
3534 1.1 fvdl size 2
3535 1.1 fvdl }
3536 1.1 fvdl /*
3537 1.1 fvdl * head of list of SCBs that have
3538 1.1 fvdl * completed but need to be uploaded
3539 1.1 fvdl * to the host prior to being completed.
3540 1.1 fvdl */
3541 1.1 fvdl COMPLETE_DMA_SCB_HEAD {
3542 1.1 fvdl size 2
3543 1.1 fvdl }
3544 1.1 fvdl /* Counting semaphore to prevent new select-outs */
3545 1.1 fvdl QFREEZE_COUNT {
3546 1.1 fvdl size 2
3547 1.1 fvdl }
3548 1.1 fvdl /*
3549 1.1 fvdl * Mode to restore on legacy idle loop exit.
3550 1.1 fvdl */
3551 1.1 fvdl SAVED_MODE {
3552 1.1 fvdl size 1
3553 1.1 fvdl }
3554 1.1 fvdl /*
3555 1.1 fvdl * Single byte buffer used to designate the type or message
3556 1.1 fvdl * to send to a target.
3557 1.1 fvdl */
3558 1.1 fvdl MSG_OUT {
3559 1.1 fvdl size 1
3560 1.1 fvdl }
3561 1.1 fvdl /* Parameters for DMA Logic */
3562 1.1 fvdl DMAPARAMS {
3563 1.1 fvdl size 1
3564 1.1 fvdl field PRELOADEN 0x80
3565 1.1 fvdl field WIDEODD 0x40
3566 1.1 fvdl field SCSIEN 0x20
3567 1.1 fvdl field SDMAEN 0x10
3568 1.1 fvdl field SDMAENACK 0x10
3569 1.1 fvdl field HDMAEN 0x08
3570 1.1 fvdl field HDMAENACK 0x08
3571 1.1 fvdl field DIRECTION 0x04 /* Set indicates PCI->SCSI */
3572 1.1 fvdl field FIFOFLUSH 0x02
3573 1.1 fvdl field FIFORESET 0x01
3574 1.1 fvdl }
3575 1.1 fvdl SEQ_FLAGS {
3576 1.1 fvdl size 1
3577 1.1 fvdl field NOT_IDENTIFIED 0x80
3578 1.1 fvdl field NO_CDB_SENT 0x40
3579 1.1 fvdl field TARGET_CMD_IS_TAGGED 0x40
3580 1.1 fvdl field DPHASE 0x20
3581 1.1 fvdl /* Target flags */
3582 1.1 fvdl field TARG_CMD_PENDING 0x10
3583 1.1 fvdl field CMDPHASE_PENDING 0x08
3584 1.1 fvdl field DPHASE_PENDING 0x04
3585 1.1 fvdl field SPHASE_PENDING 0x02
3586 1.1 fvdl field NO_DISCONNECT 0x01
3587 1.1 fvdl }
3588 1.1 fvdl /*
3589 1.1 fvdl * Temporary storage for the
3590 1.1 fvdl * target/channel/lun of a
3591 1.1 fvdl * reconnecting target
3592 1.1 fvdl */
3593 1.1 fvdl SAVED_SCSIID {
3594 1.1 fvdl size 1
3595 1.1 fvdl }
3596 1.1 fvdl SAVED_LUN {
3597 1.1 fvdl size 1
3598 1.1 fvdl }
3599 1.1 fvdl /*
3600 1.1 fvdl * The last bus phase as seen by the sequencer.
3601 1.1 fvdl */
3602 1.1 fvdl LASTPHASE {
3603 1.1 fvdl size 1
3604 1.1 fvdl field CDI 0x80
3605 1.1 fvdl field IOI 0x40
3606 1.1 fvdl field MSGI 0x20
3607 1.1 fvdl field P_BUSFREE 0x01
3608 1.1 fvdl enum PHASE_MASK CDO|IOO|MSGO {
3609 1.1 fvdl P_DATAOUT 0x0,
3610 1.1 fvdl P_DATAIN IOO,
3611 1.1 fvdl P_DATAOUT_DT P_DATAOUT|MSGO,
3612 1.1 fvdl P_DATAIN_DT P_DATAIN|MSGO,
3613 1.1 fvdl P_COMMAND CDO,
3614 1.1 fvdl P_MESGOUT CDO|MSGO,
3615 1.1 fvdl P_STATUS CDO|IOO,
3616 1.1 fvdl P_MESGIN CDO|IOO|MSGO
3617 1.1 fvdl }
3618 1.1 fvdl }
3619 1.1 fvdl /*
3620 1.1 fvdl * Value to "or" into the SCBPTR[1] value to
3621 1.1 fvdl * indicate that an entry in the QINFIFO is valid.
3622 1.1 fvdl */
3623 1.1 fvdl QOUTFIFO_ENTRY_VALID_TAG {
3624 1.1 fvdl size 1
3625 1.1 fvdl }
3626 1.1 fvdl /*
3627 1.1 fvdl * Base address of our shared data with the kernel driver in host
3628 1.1 fvdl * memory. This includes the qoutfifo and target mode
3629 1.1 fvdl * incoming command queue.
3630 1.1 fvdl */
3631 1.1 fvdl SHARED_DATA_ADDR {
3632 1.1 fvdl size 4
3633 1.1 fvdl }
3634 1.1 fvdl /*
3635 1.1 fvdl * Pointer to location in host memory for next
3636 1.1 fvdl * position in the qoutfifo.
3637 1.1 fvdl */
3638 1.1 fvdl QOUTFIFO_NEXT_ADDR {
3639 1.1 fvdl size 4
3640 1.1 fvdl }
3641 1.1 fvdl /*
3642 1.1 fvdl * Kernel and sequencer offsets into the queue of
3643 1.1 fvdl * incoming target mode command descriptors. The
3644 1.1 fvdl * queue is full when the KERNEL_TQINPOS == TQINPOS.
3645 1.1 fvdl */
3646 1.1 fvdl KERNEL_TQINPOS {
3647 1.1 fvdl size 1
3648 1.1 fvdl }
3649 1.1 fvdl TQINPOS {
3650 1.1 fvdl size 1
3651 1.1 fvdl }
3652 1.1 fvdl ARG_1 {
3653 1.1 fvdl size 1
3654 1.1 fvdl mask SEND_MSG 0x80
3655 1.1 fvdl mask SEND_SENSE 0x40
3656 1.1 fvdl mask SEND_REJ 0x20
3657 1.1 fvdl mask MSGOUT_PHASEMIS 0x10
3658 1.1 fvdl mask EXIT_MSG_LOOP 0x08
3659 1.1 fvdl mask CONT_MSG_LOOP_WRITE 0x04
3660 1.1 fvdl mask CONT_MSG_LOOP_READ 0x03
3661 1.1 fvdl mask CONT_MSG_LOOP_TARG 0x02
3662 1.1 fvdl alias RETURN_1
3663 1.1 fvdl }
3664 1.1 fvdl ARG_2 {
3665 1.1 fvdl size 1
3666 1.1 fvdl alias RETURN_2
3667 1.1 fvdl }
3668 1.1 fvdl
3669 1.1 fvdl /*
3670 1.1 fvdl * Snapshot of MSG_OUT taken after each message is sent.
3671 1.1 fvdl */
3672 1.1 fvdl LAST_MSG {
3673 1.1 fvdl size 1
3674 1.1 fvdl }
3675 1.1 fvdl
3676 1.1 fvdl /*
3677 1.1 fvdl * Sequences the kernel driver has okayed for us. This allows
3678 1.1 fvdl * the driver to do things like prevent initiator or target
3679 1.1 fvdl * operations.
3680 1.1 fvdl */
3681 1.1 fvdl SCSISEQ_TEMPLATE {
3682 1.1 fvdl size 1
3683 1.1 fvdl field MANUALCTL 0x40
3684 1.1 fvdl field ENSELI 0x20
3685 1.1 fvdl field ENRSELI 0x10
3686 1.1 fvdl field MANUALP 0x0C
3687 1.1 fvdl field ENAUTOATNP 0x02
3688 1.1 fvdl field ALTSTIM 0x01
3689 1.1 fvdl }
3690 1.1 fvdl
3691 1.1 fvdl /*
3692 1.1 fvdl * The initiator specified tag for this target mode transaction.
3693 1.1 fvdl */
3694 1.1 fvdl INITIATOR_TAG {
3695 1.1 fvdl size 1
3696 1.1 fvdl }
3697 1.1 fvdl
3698 1.1 fvdl SEQ_FLAGS2 {
3699 1.1 fvdl size 1
3700 1.1 fvdl field TARGET_MSG_PENDING 0x02
3701 1.1 fvdl field SELECTOUT_QFROZEN 0x04
3702 1.1 fvdl }
3703 1.1 fvdl
3704 1.1 fvdl ALLOCFIFO_SCBPTR {
3705 1.1 fvdl size 2
3706 1.1 fvdl }
3707 1.1 fvdl
3708 1.1 fvdl /*
3709 1.3 wiz * The maximum amount of time to wait, when interrupt coalescing
3710 1.1 fvdl * is enabled, before issueing a CMDCMPLT interrupt for a completed
3711 1.1 fvdl * command.
3712 1.1 fvdl */
3713 1.3 wiz INT_COALESCING_TIMER {
3714 1.1 fvdl size 2
3715 1.1 fvdl }
3716 1.1 fvdl
3717 1.1 fvdl /*
3718 1.3 wiz * The maximum number of commands to coalesce into a single interrupt.
3719 1.1 fvdl * Actually the 2's complement of that value to simplify sequencer
3720 1.1 fvdl * code.
3721 1.1 fvdl */
3722 1.3 wiz INT_COALESCING_MAXCMDS {
3723 1.1 fvdl size 1
3724 1.1 fvdl }
3725 1.1 fvdl
3726 1.1 fvdl /*
3727 1.1 fvdl * The minimum number of commands still outstanding required
3728 1.3 wiz * to continue coalescing (2's complement of value).
3729 1.1 fvdl */
3730 1.3 wiz INT_COALESCING_MINCMDS {
3731 1.1 fvdl size 1
3732 1.1 fvdl }
3733 1.1 fvdl
3734 1.1 fvdl /*
3735 1.1 fvdl * Number of commands "in-flight".
3736 1.1 fvdl */
3737 1.1 fvdl CMDS_PENDING {
3738 1.1 fvdl size 2
3739 1.1 fvdl }
3740 1.1 fvdl
3741 1.1 fvdl /*
3742 1.3 wiz * The count of commands that have been coalesced.
3743 1.1 fvdl */
3744 1.3 wiz INT_COALESCING_CMDCOUNT {
3745 1.1 fvdl size 1
3746 1.1 fvdl }
3747 1.1 fvdl
3748 1.1 fvdl /*
3749 1.1 fvdl * Since the HS_MAIBOX is self clearing, copy its contents to
3750 1.1 fvdl * this position in scratch ram every time it changes.
3751 1.1 fvdl */
3752 1.1 fvdl LOCAL_HS_MAILBOX {
3753 1.1 fvdl size 1
3754 1.1 fvdl }
3755 1.1 fvdl /*
3756 1.1 fvdl * Target-mode CDB type to CDB length table used
3757 1.1 fvdl * in non-packetized operation.
3758 1.1 fvdl */
3759 1.1 fvdl CMDSIZE_TABLE {
3760 1.1 fvdl size 8
3761 1.1 fvdl }
3762 1.1 fvdl }
3763 1.1 fvdl
3764 1.1 fvdl /************************* Hardware SCB Definition ****************************/
3765 1.1 fvdl scb {
3766 1.1 fvdl address 0x180
3767 1.1 fvdl size 64
3768 1.1 fvdl modes 0, 1, 2, 3
3769 1.1 fvdl SCB_RESIDUAL_DATACNT {
3770 1.1 fvdl size 4
3771 1.1 fvdl alias SCB_CDB_STORE
3772 1.1 fvdl alias SCB_HOST_CDB_PTR
3773 1.1 fvdl }
3774 1.1 fvdl SCB_RESIDUAL_SGPTR {
3775 1.1 fvdl size 4
3776 1.1 fvdl field SG_ADDR_MASK 0xf8 /* In the last byte */
3777 1.1 fvdl field SG_OVERRUN_RESID 0x02 /* In the first byte */
3778 1.1 fvdl field SG_LIST_NULL 0x01 /* In the first byte */
3779 1.1 fvdl }
3780 1.1 fvdl SCB_SCSI_STATUS {
3781 1.1 fvdl size 1
3782 1.1 fvdl alias SCB_HOST_CDB_LEN
3783 1.1 fvdl }
3784 1.1 fvdl SCB_TARGET_PHASES {
3785 1.1 fvdl size 1
3786 1.1 fvdl }
3787 1.1 fvdl SCB_TARGET_DATA_DIR {
3788 1.1 fvdl size 1
3789 1.1 fvdl }
3790 1.1 fvdl SCB_TARGET_ITAG {
3791 1.1 fvdl size 1
3792 1.1 fvdl }
3793 1.1 fvdl SCB_SENSE_BUSADDR {
3794 1.1 fvdl /*
3795 1.1 fvdl * Only valid if CDB length is less than 13 bytes or
3796 1.1 fvdl * we are using a CDB pointer. Otherwise contains
3797 1.1 fvdl * the last 4 bytes of embedded cdb information.
3798 1.1 fvdl */
3799 1.1 fvdl size 4
3800 1.1 fvdl alias SCB_NEXT_COMPLETE
3801 1.1 fvdl }
3802 1.1 fvdl SCB_DATAPTR {
3803 1.1 fvdl size 8
3804 1.1 fvdl }
3805 1.1 fvdl SCB_DATACNT {
3806 1.1 fvdl /*
3807 1.1 fvdl * The last byte is really the high address bits for
3808 1.1 fvdl * the data address.
3809 1.1 fvdl */
3810 1.1 fvdl size 4
3811 1.1 fvdl field SG_LAST_SEG 0x80 /* In the fourth byte */
3812 1.1 fvdl field SG_HIGH_ADDR_BITS 0x7F /* In the fourth byte */
3813 1.1 fvdl }
3814 1.1 fvdl SCB_SGPTR {
3815 1.1 fvdl size 4
3816 1.1 fvdl field SG_STATUS_VALID 0x04 /* In the first byte */
3817 1.1 fvdl field SG_FULL_RESID 0x02 /* In the first byte */
3818 1.1 fvdl field SG_LIST_NULL 0x01 /* In the first byte */
3819 1.1 fvdl }
3820 1.4 thorpej SCB_BUSADDR {
3821 1.4 thorpej size 4
3822 1.4 thorpej }
3823 1.4 thorpej SCB_NEXT {
3824 1.4 thorpej alias SCB_NEXT_SCB_BUSADDR
3825 1.4 thorpej size 2
3826 1.4 thorpej }
3827 1.4 thorpej SCB_NEXT2 {
3828 1.4 thorpej size 2
3829 1.4 thorpej }
3830 1.1 fvdl SCB_CONTROL {
3831 1.1 fvdl size 1
3832 1.1 fvdl field TARGET_SCB 0x80
3833 1.1 fvdl field DISCENB 0x40
3834 1.1 fvdl field TAG_ENB 0x20
3835 1.1 fvdl field MK_MESSAGE 0x10
3836 1.1 fvdl field STATUS_RCVD 0x08
3837 1.1 fvdl field DISCONNECTED 0x04
3838 1.1 fvdl field SCB_TAG_TYPE 0x03
3839 1.1 fvdl }
3840 1.1 fvdl SCB_SCSIID {
3841 1.1 fvdl size 1
3842 1.1 fvdl field TID 0xF0
3843 1.1 fvdl field OID 0x0F
3844 1.1 fvdl }
3845 1.1 fvdl SCB_LUN {
3846 1.1 fvdl size 1
3847 1.1 fvdl field LID 0xff
3848 1.1 fvdl }
3849 1.1 fvdl SCB_TASK_ATTRIBUTE {
3850 1.1 fvdl size 1
3851 1.1 fvdl }
3852 1.4 thorpej SCB_CDB_LEN {
3853 1.4 thorpej size 1
3854 1.4 thorpej field SCB_CDB_LEN_PTR 0x80 /* CDB in host memory */
3855 1.4 thorpej }
3856 1.4 thorpej SCB_TASK_MANAGEMENT {
3857 1.4 thorpej size 1
3858 1.4 thorpej }
3859 1.4 thorpej SCB_TAG {
3860 1.4 thorpej alias SCB_FIFO_USE_COUNT
3861 1.4 thorpej size 2
3862 1.1 fvdl }
3863 1.1 fvdl SCB_SPARE {
3864 1.1 fvdl size 8
3865 1.1 fvdl alias SCB_PKT_LUN
3866 1.1 fvdl }
3867 1.1 fvdl SCB_DISCONNECTED_LISTS {
3868 1.1 fvdl size 8
3869 1.1 fvdl }
3870 1.1 fvdl }
3871 1.1 fvdl
3872 1.1 fvdl /*********************************** Constants ********************************/
3873 1.1 fvdl const MK_MESSAGE_BIT_OFFSET 4
3874 1.1 fvdl const TID_SHIFT 4
3875 1.1 fvdl const TARGET_CMD_CMPLT 0xfe
3876 1.1 fvdl const INVALID_ADDR 0x80
3877 1.1 fvdl #define SCB_LIST_NULL 0xff
3878 1.1 fvdl #define QOUTFIFO_ENTRY_VALID_TOGGLE 0x80
3879 1.1 fvdl
3880 1.1 fvdl const CCSGADDR_MAX 0x80
3881 1.1 fvdl const CCSCBADDR_MAX 0x80
3882 1.1 fvdl const CCSGRAM_MAXSEGS 16
3883 1.1 fvdl
3884 1.1 fvdl /* Selection Timeout Timer Constants */
3885 1.1 fvdl const STIMESEL_SHIFT 3
3886 1.1 fvdl const STIMESEL_MIN 0x18
3887 1.1 fvdl const STIMESEL_BUG_ADJ 0x8
3888 1.1 fvdl
3889 1.1 fvdl /* WDTR Message values */
3890 1.1 fvdl const BUS_8_BIT 0x00
3891 1.1 fvdl const BUS_16_BIT 0x01
3892 1.1 fvdl const BUS_32_BIT 0x02
3893 1.1 fvdl
3894 1.1 fvdl /* Offset maximums */
3895 1.1 fvdl const MAX_OFFSET 0xfe
3896 1.1 fvdl const MAX_OFFSET_PACED 0xfe
3897 1.1 fvdl const MAX_OFFSET_PACED_BUG 0x7f
3898 1.1 fvdl /*
3899 1.1 fvdl * Some 160 devices incorrectly accept 0xfe as a
3900 1.1 fvdl * sync offset, but will overrun this value. Limit
3901 1.1 fvdl * to 0x7f for speed lower than U320 which will
3902 1.1 fvdl * avoid the persistent sync offset overruns.
3903 1.1 fvdl */
3904 1.1 fvdl const MAX_OFFSET_NON_PACED 0x7f
3905 1.1 fvdl const HOST_MSG 0xff
3906 1.1 fvdl
3907 1.1 fvdl /*
3908 1.1 fvdl * The size of our sense buffers.
3909 1.1 fvdl * Sense buffer mapping can be handled in either of two ways.
3910 1.1 fvdl * The first is to allocate a dmamap for each transaction.
3911 1.1 fvdl * Depending on the architecture, dmamaps can be costly. The
3912 1.1 fvdl * alternative is to statically map the buffers in much the same
3913 1.1 fvdl * way we handle our scatter gather lists. The driver implements
3914 1.1 fvdl * the later.
3915 1.1 fvdl */
3916 1.1 fvdl const AHD_SENSE_BUFSIZE 256
3917 1.1 fvdl
3918 1.1 fvdl /* Target mode command processing constants */
3919 1.1 fvdl const CMD_GROUP_CODE_SHIFT 0x05
3920 1.1 fvdl
3921 1.1 fvdl const STATUS_BUSY 0x08
3922 1.1 fvdl const STATUS_QUEUE_FULL 0x28
3923 1.1 fvdl const STATUS_PKT_SENSE 0xFF
3924 1.1 fvdl const TARGET_DATA_IN 1
3925 1.1 fvdl
3926 1.1 fvdl const SCB_TRANSFER_SIZE_FULL_LUN 56
3927 1.1 fvdl const SCB_TRANSFER_SIZE_1BYTE_LUN 48
3928 1.1 fvdl /* PKT_OVERRUN_BUFSIZE must be a multiple of 256 less than 64K */
3929 1.1 fvdl const PKT_OVERRUN_BUFSIZE 512
3930 1.1 fvdl
3931 1.1 fvdl /*
3932 1.1 fvdl * Timer parameters.
3933 1.1 fvdl */
3934 1.1 fvdl const AHD_TIMER_US_PER_TICK 25
3935 1.1 fvdl const AHD_TIMER_MAX_TICKS 0xFFFF
3936 1.1 fvdl const AHD_TIMER_MAX_US (AHD_TIMER_MAX_TICKS * AHD_TIMER_US_PER_TICK)
3937 1.1 fvdl
3938 1.1 fvdl /*
3939 1.1 fvdl * Downloaded (kernel inserted) constants
3940 1.1 fvdl */
3941 1.1 fvdl const SG_PREFETCH_CNT download
3942 1.1 fvdl const SG_PREFETCH_CNT_LIMIT download
3943 1.1 fvdl const SG_PREFETCH_ALIGN_MASK download
3944 1.1 fvdl const SG_PREFETCH_ADDR_MASK download
3945 1.1 fvdl const SG_SIZEOF download
3946 1.1 fvdl const PKT_OVERRUN_BUFOFFSET download
3947 1.1 fvdl const SCB_TRANSFER_SIZE download
3948 1.1 fvdl
3949 1.1 fvdl /*
3950 1.1 fvdl * BIOS SCB offsets
3951 1.1 fvdl */
3952 1.1 fvdl const NVRAM_SCB_OFFSET 0x2C
3953