aic79xx.reg revision 1.6 1 1.6 thorpej /* $NetBSD: aic79xx.reg,v 1.6 2003/08/29 01:52:16 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.5 thorpej * $FreeBSD: src/sys/dev/aic7xxx/aic79xx.reg,v 1.13 2003/05/26 21:26:51 gibbs Exp $
43 1.1 fvdl */
44 1.5 thorpej VERSION = "Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#69 $"
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.6 thorpej mask ILUNLEN 0x0F
1383 1.6 thorpej mask TLUNLEN 0xF0
1384 1.1 fvdl }
1385 1.6 thorpej const LUNLEN_SINGLE_LEVEL_LUN 0xF
1386 1.1 fvdl
1387 1.1 fvdl /*
1388 1.1 fvdl * CDB Limit
1389 1.1 fvdl * The size, in bytes, of the embedded CDB field in initator SCBs.
1390 1.1 fvdl */
1391 1.1 fvdl register CDBLIMIT {
1392 1.1 fvdl address 0x031
1393 1.1 fvdl access_mode RW
1394 1.1 fvdl modes M_CFG
1395 1.1 fvdl }
1396 1.1 fvdl
1397 1.1 fvdl /*
1398 1.1 fvdl * Maximum Commands
1399 1.1 fvdl * The maximum number of commands to issue during a
1400 1.1 fvdl * single packetized connection.
1401 1.1 fvdl */
1402 1.1 fvdl register MAXCMD {
1403 1.1 fvdl address 0x032
1404 1.1 fvdl access_mode RW
1405 1.1 fvdl modes M_CFG
1406 1.1 fvdl }
1407 1.1 fvdl
1408 1.1 fvdl /*
1409 1.1 fvdl * Maximum Command Counter
1410 1.1 fvdl * The number of commands already sent during this connection
1411 1.1 fvdl */
1412 1.1 fvdl register MAXCMDCNT {
1413 1.1 fvdl address 0x033
1414 1.1 fvdl access_mode RW
1415 1.1 fvdl modes M_CFG
1416 1.1 fvdl }
1417 1.1 fvdl
1418 1.1 fvdl /*
1419 1.1 fvdl * LQ Packet Reserved Bytes
1420 1.1 fvdl * The bytes to be sent in the currently reserved fileds
1421 1.1 fvdl * of all LQ packets.
1422 1.1 fvdl */
1423 1.1 fvdl register LQRSVD01 {
1424 1.1 fvdl address 0x034
1425 1.1 fvdl access_mode RW
1426 1.1 fvdl modes M_SCSI
1427 1.1 fvdl }
1428 1.1 fvdl register LQRSVD16 {
1429 1.1 fvdl address 0x035
1430 1.1 fvdl access_mode RW
1431 1.1 fvdl modes M_SCSI
1432 1.1 fvdl }
1433 1.1 fvdl register LQRSVD17 {
1434 1.1 fvdl address 0x036
1435 1.1 fvdl access_mode RW
1436 1.1 fvdl modes M_SCSI
1437 1.1 fvdl }
1438 1.1 fvdl
1439 1.1 fvdl /*
1440 1.1 fvdl * Command Reserved 0
1441 1.1 fvdl * The byte to be sent for the reserved byte 0 of
1442 1.1 fvdl * outgoing command packets.
1443 1.1 fvdl */
1444 1.1 fvdl register CMDRSVD0 {
1445 1.1 fvdl address 0x037
1446 1.1 fvdl access_mode RW
1447 1.1 fvdl modes M_CFG
1448 1.1 fvdl }
1449 1.1 fvdl
1450 1.1 fvdl /*
1451 1.1 fvdl * LQ Manager Control 0
1452 1.1 fvdl */
1453 1.1 fvdl register LQCTL0 {
1454 1.1 fvdl address 0x038
1455 1.1 fvdl access_mode RW
1456 1.1 fvdl modes M_CFG
1457 1.1 fvdl field LQITARGCLT 0xC0
1458 1.1 fvdl field LQIINITGCLT 0x30
1459 1.1 fvdl field LQ0TARGCLT 0x0C
1460 1.1 fvdl field LQ0INITGCLT 0x03
1461 1.1 fvdl }
1462 1.1 fvdl
1463 1.1 fvdl /*
1464 1.1 fvdl * LQ Manager Control 1
1465 1.1 fvdl */
1466 1.1 fvdl register LQCTL1 {
1467 1.1 fvdl address 0x038
1468 1.1 fvdl access_mode RW
1469 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1470 1.1 fvdl field PCI2PCI 0x04
1471 1.1 fvdl field SINGLECMD 0x02
1472 1.1 fvdl field ABORTPENDING 0x01
1473 1.1 fvdl }
1474 1.1 fvdl
1475 1.1 fvdl /*
1476 1.1 fvdl * LQ Manager Control 2
1477 1.1 fvdl */
1478 1.1 fvdl register LQCTL2 {
1479 1.1 fvdl address 0x039
1480 1.1 fvdl access_mode RW
1481 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1482 1.1 fvdl field LQIRETRY 0x80
1483 1.1 fvdl field LQICONTINUE 0x40
1484 1.1 fvdl field LQITOIDLE 0x20
1485 1.1 fvdl field LQIPAUSE 0x10
1486 1.1 fvdl field LQORETRY 0x08
1487 1.1 fvdl field LQOCONTINUE 0x04
1488 1.1 fvdl field LQOTOIDLE 0x02
1489 1.1 fvdl field LQOPAUSE 0x01
1490 1.1 fvdl }
1491 1.1 fvdl
1492 1.1 fvdl /*
1493 1.1 fvdl * SCSI RAM BIST0
1494 1.1 fvdl */
1495 1.1 fvdl register SCSBIST0 {
1496 1.1 fvdl address 0x039
1497 1.1 fvdl access_mode RW
1498 1.1 fvdl modes M_CFG
1499 1.1 fvdl field GSBISTERR 0x40
1500 1.1 fvdl field GSBISTDONE 0x20
1501 1.1 fvdl field GSBISTRUN 0x10
1502 1.1 fvdl field OSBISTERR 0x04
1503 1.1 fvdl field OSBISTDONE 0x02
1504 1.1 fvdl field OSBISTRUN 0x01
1505 1.1 fvdl }
1506 1.1 fvdl
1507 1.1 fvdl /*
1508 1.1 fvdl * SCSI Sequence Control0
1509 1.1 fvdl */
1510 1.1 fvdl register SCSISEQ0 {
1511 1.1 fvdl address 0x03A
1512 1.1 fvdl access_mode RW
1513 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1514 1.1 fvdl field TEMODEO 0x80
1515 1.1 fvdl field ENSELO 0x40
1516 1.1 fvdl field ENARBO 0x20
1517 1.1 fvdl field FORCEBUSFREE 0x10
1518 1.1 fvdl field SCSIRSTO 0x01
1519 1.1 fvdl }
1520 1.1 fvdl
1521 1.1 fvdl /*
1522 1.1 fvdl * SCSI RAM BIST 1
1523 1.1 fvdl */
1524 1.1 fvdl register SCSBIST1 {
1525 1.1 fvdl address 0x03A
1526 1.1 fvdl access_mode RW
1527 1.1 fvdl modes M_CFG
1528 1.1 fvdl field NTBISTERR 0x04
1529 1.1 fvdl field NTBISTDONE 0x02
1530 1.1 fvdl field NTBISTRUN 0x01
1531 1.1 fvdl }
1532 1.1 fvdl
1533 1.1 fvdl /*
1534 1.1 fvdl * SCSI Sequence Control 1
1535 1.1 fvdl */
1536 1.1 fvdl register SCSISEQ1 {
1537 1.1 fvdl address 0x03B
1538 1.1 fvdl access_mode RW
1539 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1540 1.1 fvdl field MANUALCTL 0x40
1541 1.1 fvdl field ENSELI 0x20
1542 1.1 fvdl field ENRSELI 0x10
1543 1.1 fvdl field MANUALP 0x0C
1544 1.1 fvdl field ENAUTOATNP 0x02
1545 1.1 fvdl field ALTSTIM 0x01
1546 1.1 fvdl }
1547 1.1 fvdl
1548 1.1 fvdl /*
1549 1.1 fvdl * SCSI Transfer Control 0
1550 1.1 fvdl */
1551 1.1 fvdl register SXFRCTL0 {
1552 1.1 fvdl address 0x03C
1553 1.1 fvdl access_mode RW
1554 1.1 fvdl modes M_SCSI
1555 1.1 fvdl field DFON 0x80
1556 1.1 fvdl field DFPEXP 0x40
1557 1.1 fvdl field BIOSCANCELEN 0x10
1558 1.1 fvdl field SPIOEN 0x08
1559 1.1 fvdl }
1560 1.1 fvdl
1561 1.1 fvdl /*
1562 1.1 fvdl * SCSI Transfer Control 1
1563 1.1 fvdl */
1564 1.1 fvdl register SXFRCTL1 {
1565 1.1 fvdl address 0x03D
1566 1.1 fvdl access_mode RW
1567 1.1 fvdl modes M_SCSI
1568 1.1 fvdl field BITBUCKET 0x80
1569 1.1 fvdl field ENSACHK 0x40
1570 1.1 fvdl field ENSPCHK 0x20
1571 1.1 fvdl field STIMESEL 0x18
1572 1.1 fvdl field ENSTIMER 0x04
1573 1.1 fvdl field ACTNEGEN 0x02
1574 1.1 fvdl field STPWEN 0x01
1575 1.1 fvdl }
1576 1.1 fvdl
1577 1.1 fvdl /*
1578 1.1 fvdl * SCSI Transfer Control 2
1579 1.1 fvdl */
1580 1.1 fvdl register SXFRCTL2 {
1581 1.1 fvdl address 0x03E
1582 1.1 fvdl access_mode RW
1583 1.1 fvdl modes M_SCSI
1584 1.1 fvdl field AUTORSTDIS 0x10
1585 1.1 fvdl field CMDDMAEN 0x08
1586 1.1 fvdl field ASU 0x07
1587 1.1 fvdl }
1588 1.1 fvdl
1589 1.1 fvdl /*
1590 1.1 fvdl * SCSI Bus Initiator IDs
1591 1.1 fvdl * Bitmask of observed initiators on the bus.
1592 1.1 fvdl */
1593 1.1 fvdl register BUSINITID {
1594 1.1 fvdl address 0x03C
1595 1.1 fvdl access_mode RW
1596 1.1 fvdl modes M_CFG
1597 1.1 fvdl size 2
1598 1.1 fvdl }
1599 1.1 fvdl
1600 1.1 fvdl /*
1601 1.1 fvdl * Data Length Counters
1602 1.1 fvdl * Packet byte counter.
1603 1.1 fvdl */
1604 1.1 fvdl register DLCOUNT {
1605 1.1 fvdl address 0x03C
1606 1.1 fvdl access_mode RW
1607 1.1 fvdl modes M_DFF0, M_DFF1
1608 1.1 fvdl size 3
1609 1.1 fvdl }
1610 1.1 fvdl
1611 1.1 fvdl /*
1612 1.1 fvdl * Data FIFO Status
1613 1.1 fvdl */
1614 1.1 fvdl register DFFSTAT {
1615 1.1 fvdl address 0x03F
1616 1.1 fvdl access_mode RW
1617 1.1 fvdl modes M_SCSI
1618 1.1 fvdl field FIFO1FREE 0x20
1619 1.1 fvdl field FIFO0FREE 0x10
1620 1.1 fvdl /*
1621 1.1 fvdl * On the B, this enum only works
1622 1.1 fvdl * in the read direction. For writes,
1623 1.1 fvdl * you must use the B version of the
1624 1.1 fvdl * CURRFIFO_0 definition which is defined
1625 1.1 fvdl * as a constant outside of this register
1626 1.1 fvdl * definition to avoid confusing the
1627 1.1 fvdl * register pretty printing code.
1628 1.1 fvdl */
1629 1.1 fvdl enum CURRFIFO 0x03 {
1630 1.1 fvdl CURRFIFO_0,
1631 1.1 fvdl CURRFIFO_1,
1632 1.1 fvdl CURRFIFO_NONE 0x3
1633 1.1 fvdl }
1634 1.1 fvdl }
1635 1.1 fvdl
1636 1.1 fvdl const B_CURRFIFO_0 0x2
1637 1.1 fvdl
1638 1.1 fvdl /*
1639 1.1 fvdl * SCSI Bus Target IDs
1640 1.1 fvdl * Bitmask of observed targets on the bus.
1641 1.1 fvdl */
1642 1.1 fvdl register BUSTARGID {
1643 1.1 fvdl address 0x03E
1644 1.1 fvdl access_mode RW
1645 1.1 fvdl modes M_CFG
1646 1.1 fvdl size 2
1647 1.1 fvdl }
1648 1.1 fvdl
1649 1.1 fvdl /*
1650 1.1 fvdl * SCSI Control Signal Out
1651 1.1 fvdl */
1652 1.1 fvdl register SCSISIGO {
1653 1.1 fvdl address 0x040
1654 1.1 fvdl access_mode RW
1655 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1656 1.1 fvdl field CDO 0x80
1657 1.1 fvdl field IOO 0x40
1658 1.1 fvdl field MSGO 0x20
1659 1.1 fvdl field ATNO 0x10
1660 1.1 fvdl field SELO 0x08
1661 1.1 fvdl field BSYO 0x04
1662 1.1 fvdl field REQO 0x02
1663 1.1 fvdl field ACKO 0x01
1664 1.1 fvdl /*
1665 1.1 fvdl * Possible phases to write into SCSISIG0
1666 1.1 fvdl */
1667 1.1 fvdl enum PHASE_MASK CDO|IOO|MSGO {
1668 1.1 fvdl P_DATAOUT 0x0,
1669 1.1 fvdl P_DATAIN IOO,
1670 1.1 fvdl P_DATAOUT_DT P_DATAOUT|MSGO,
1671 1.1 fvdl P_DATAIN_DT P_DATAIN|MSGO,
1672 1.1 fvdl P_COMMAND CDO,
1673 1.1 fvdl P_MESGOUT CDO|MSGO,
1674 1.1 fvdl P_STATUS CDO|IOO,
1675 1.1 fvdl P_MESGIN CDO|IOO|MSGO
1676 1.1 fvdl }
1677 1.1 fvdl }
1678 1.1 fvdl
1679 1.1 fvdl register SCSISIGI {
1680 1.1 fvdl address 0x041
1681 1.1 fvdl access_mode RO
1682 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1683 1.1 fvdl field CDI 0x80
1684 1.1 fvdl field IOI 0x40
1685 1.1 fvdl field MSGI 0x20
1686 1.1 fvdl field ATNI 0x10
1687 1.1 fvdl field SELI 0x08
1688 1.1 fvdl field BSYI 0x04
1689 1.1 fvdl field REQI 0x02
1690 1.1 fvdl field ACKI 0x01
1691 1.1 fvdl /*
1692 1.1 fvdl * Possible phases in SCSISIGI
1693 1.1 fvdl */
1694 1.1 fvdl enum PHASE_MASK CDO|IOO|MSGO {
1695 1.1 fvdl P_DATAOUT 0x0,
1696 1.1 fvdl P_DATAIN IOO,
1697 1.1 fvdl P_DATAOUT_DT P_DATAOUT|MSGO,
1698 1.1 fvdl P_DATAIN_DT P_DATAIN|MSGO,
1699 1.1 fvdl P_COMMAND CDO,
1700 1.1 fvdl P_MESGOUT CDO|MSGO,
1701 1.1 fvdl P_STATUS CDO|IOO,
1702 1.1 fvdl P_MESGIN CDO|IOO|MSGO
1703 1.1 fvdl }
1704 1.1 fvdl }
1705 1.1 fvdl
1706 1.1 fvdl /*
1707 1.1 fvdl * Multiple Target IDs
1708 1.1 fvdl * Bitmask of ids to respond as a target.
1709 1.1 fvdl */
1710 1.1 fvdl register MULTARGID {
1711 1.1 fvdl address 0x040
1712 1.1 fvdl access_mode RW
1713 1.1 fvdl modes M_CFG
1714 1.1 fvdl size 2
1715 1.1 fvdl }
1716 1.1 fvdl
1717 1.1 fvdl /*
1718 1.1 fvdl * SCSI Phase
1719 1.1 fvdl */
1720 1.1 fvdl register SCSIPHASE {
1721 1.1 fvdl address 0x042
1722 1.1 fvdl access_mode RO
1723 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1724 1.1 fvdl field STATUS_PHASE 0x20
1725 1.1 fvdl field COMMAND_PHASE 0x10
1726 1.1 fvdl field MSG_IN_PHASE 0x08
1727 1.1 fvdl field MSG_OUT_PHASE 0x04
1728 1.1 fvdl field DATA_PHASE_MASK 0x03 {
1729 1.1 fvdl DATA_OUT_PHASE 0x01,
1730 1.1 fvdl DATA_IN_PHASE 0x02
1731 1.1 fvdl }
1732 1.1 fvdl }
1733 1.1 fvdl
1734 1.1 fvdl /*
1735 1.1 fvdl * SCSI Data 0 Image
1736 1.1 fvdl */
1737 1.1 fvdl register SCSIDAT0_IMG {
1738 1.1 fvdl address 0x043
1739 1.1 fvdl access_mode RW
1740 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1741 1.1 fvdl }
1742 1.1 fvdl
1743 1.1 fvdl /*
1744 1.1 fvdl * SCSI Latched Data
1745 1.1 fvdl */
1746 1.1 fvdl register SCSIDAT {
1747 1.1 fvdl address 0x044
1748 1.1 fvdl access_mode RW
1749 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1750 1.1 fvdl size 2
1751 1.1 fvdl }
1752 1.1 fvdl
1753 1.1 fvdl /*
1754 1.1 fvdl * SCSI Data Bus
1755 1.1 fvdl */
1756 1.1 fvdl register SCSIBUS {
1757 1.1 fvdl address 0x046
1758 1.1 fvdl access_mode RW
1759 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1760 1.1 fvdl size 2
1761 1.1 fvdl }
1762 1.1 fvdl
1763 1.1 fvdl /*
1764 1.1 fvdl * Target ID In
1765 1.1 fvdl */
1766 1.1 fvdl register TARGIDIN {
1767 1.1 fvdl address 0x048
1768 1.1 fvdl access_mode RO
1769 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1770 1.1 fvdl field CLKOUT 0x80
1771 1.1 fvdl field TARGID 0x0F
1772 1.1 fvdl }
1773 1.1 fvdl
1774 1.1 fvdl /*
1775 1.1 fvdl * Selection/Reselection ID
1776 1.1 fvdl * Upper four bits are the device id. The ONEBIT is set when the re/selecting
1777 1.1 fvdl * device did not set its own ID.
1778 1.1 fvdl */
1779 1.1 fvdl register SELID {
1780 1.1 fvdl address 0x049
1781 1.1 fvdl access_mode RW
1782 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1783 1.1 fvdl field SELID_MASK 0xf0
1784 1.1 fvdl field ONEBIT 0x08
1785 1.1 fvdl }
1786 1.1 fvdl
1787 1.1 fvdl /*
1788 1.1 fvdl * SCSI Block Control
1789 1.1 fvdl * Controls Bus type and channel selection. SELWIDE allows for the
1790 1.1 fvdl * coexistence of 8bit and 16bit devices on a wide bus.
1791 1.1 fvdl */
1792 1.1 fvdl register SBLKCTL {
1793 1.1 fvdl address 0x04A
1794 1.1 fvdl access_mode RW
1795 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1796 1.1 fvdl field DIAGLEDEN 0x80
1797 1.1 fvdl field DIAGLEDON 0x40
1798 1.1 fvdl field ENAB40 0x08 /* LVD transceiver active */
1799 1.1 fvdl field ENAB20 0x04 /* SE/HVD transceiver active */
1800 1.1 fvdl field SELWIDE 0x02
1801 1.1 fvdl }
1802 1.1 fvdl
1803 1.1 fvdl /*
1804 1.1 fvdl * Option Mode
1805 1.1 fvdl */
1806 1.1 fvdl register OPTIONMODE {
1807 1.1 fvdl address 0x04A
1808 1.1 fvdl access_mode RW
1809 1.1 fvdl modes M_CFG
1810 1.1 fvdl field BIOSCANCTL 0x80
1811 1.1 fvdl field AUTOACKEN 0x40
1812 1.1 fvdl field BIASCANCTL 0x20
1813 1.1 fvdl field BUSFREEREV 0x10
1814 1.1 fvdl field ENDGFORMCHK 0x04
1815 1.1 fvdl field AUTO_MSGOUT_DE 0x02
1816 1.1 fvdl mask OPTIONMODE_DEFAULTS AUTO_MSGOUT_DE
1817 1.1 fvdl }
1818 1.1 fvdl
1819 1.1 fvdl /*
1820 1.1 fvdl * SCSI Status 0
1821 1.1 fvdl */
1822 1.1 fvdl register SSTAT0 {
1823 1.1 fvdl address 0x04B
1824 1.1 fvdl access_mode RO
1825 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1826 1.1 fvdl field TARGET 0x80 /* Board acting as target */
1827 1.1 fvdl field SELDO 0x40 /* Selection Done */
1828 1.1 fvdl field SELDI 0x20 /* Board has been selected */
1829 1.1 fvdl field SELINGO 0x10 /* Selection In Progress */
1830 1.1 fvdl field IOERR 0x08 /* LVD Tranceiver mode changed */
1831 1.1 fvdl field OVERRUN 0x04 /* SCSI Offset overrun detected */
1832 1.1 fvdl field SPIORDY 0x02 /* SCSI PIO Ready */
1833 1.1 fvdl field ARBDO 0x01 /* Arbitration Done Out */
1834 1.1 fvdl }
1835 1.1 fvdl
1836 1.1 fvdl /*
1837 1.1 fvdl * Clear SCSI Interrupt 0
1838 1.1 fvdl * Writing a 1 to a bit clears the associated SCSI Interrupt in SSTAT0.
1839 1.1 fvdl */
1840 1.1 fvdl register CLRSINT0 {
1841 1.1 fvdl address 0x04B
1842 1.1 fvdl access_mode WO
1843 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1844 1.1 fvdl field CLRSELDO 0x40
1845 1.1 fvdl field CLRSELDI 0x20
1846 1.1 fvdl field CLRSELINGO 0x10
1847 1.1 fvdl field CLRIOERR 0x08
1848 1.1 fvdl field CLROVERRUN 0x04
1849 1.1 fvdl field CLRSPIORDY 0x02
1850 1.1 fvdl field CLRARBDO 0x01
1851 1.1 fvdl }
1852 1.1 fvdl
1853 1.1 fvdl /*
1854 1.1 fvdl * SCSI Interrupt Mode 0
1855 1.1 fvdl * Setting any bit will enable the corresponding function
1856 1.1 fvdl * in SIMODE0 to interrupt via the IRQ pin.
1857 1.1 fvdl */
1858 1.1 fvdl register SIMODE0 {
1859 1.1 fvdl address 0x04B
1860 1.1 fvdl access_mode RW
1861 1.1 fvdl modes M_CFG
1862 1.1 fvdl field ENSELDO 0x40
1863 1.1 fvdl field ENSELDI 0x20
1864 1.1 fvdl field ENSELINGO 0x10
1865 1.1 fvdl field ENIOERR 0x08
1866 1.1 fvdl field ENOVERRUN 0x04
1867 1.1 fvdl field ENSPIORDY 0x02
1868 1.1 fvdl field ENARBDO 0x01
1869 1.1 fvdl }
1870 1.1 fvdl
1871 1.1 fvdl /*
1872 1.1 fvdl * SCSI Status 1
1873 1.1 fvdl */
1874 1.1 fvdl register SSTAT1 {
1875 1.1 fvdl address 0x04C
1876 1.1 fvdl access_mode RO
1877 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1878 1.1 fvdl field SELTO 0x80
1879 1.1 fvdl field ATNTARG 0x40
1880 1.1 fvdl field SCSIRSTI 0x20
1881 1.1 fvdl field PHASEMIS 0x10
1882 1.1 fvdl field BUSFREE 0x08
1883 1.1 fvdl field SCSIPERR 0x04
1884 1.1 fvdl field STRB2FAST 0x02
1885 1.1 fvdl field REQINIT 0x01
1886 1.1 fvdl }
1887 1.1 fvdl
1888 1.1 fvdl /*
1889 1.1 fvdl * Clear SCSI Interrupt 1
1890 1.1 fvdl * Writing a 1 to a bit clears the associated SCSI Interrupt in SSTAT1.
1891 1.1 fvdl */
1892 1.1 fvdl register CLRSINT1 {
1893 1.1 fvdl address 0x04C
1894 1.1 fvdl access_mode WO
1895 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1896 1.1 fvdl field CLRSELTIMEO 0x80
1897 1.1 fvdl field CLRATNO 0x40
1898 1.1 fvdl field CLRSCSIRSTI 0x20
1899 1.1 fvdl field CLRBUSFREE 0x08
1900 1.1 fvdl field CLRSCSIPERR 0x04
1901 1.1 fvdl field CLRSTRB2FAST 0x02
1902 1.1 fvdl field CLRREQINIT 0x01
1903 1.1 fvdl }
1904 1.1 fvdl
1905 1.1 fvdl /*
1906 1.1 fvdl * SCSI Status 2
1907 1.1 fvdl */
1908 1.1 fvdl register SSTAT2 {
1909 1.1 fvdl address 0x04d
1910 1.1 fvdl access_mode RO
1911 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1912 1.1 fvdl field BUSFREETIME 0xc0 {
1913 1.1 fvdl BUSFREE_LQO 0x40,
1914 1.1 fvdl BUSFREE_DFF0 0x80,
1915 1.1 fvdl BUSFREE_DFF1 0xC0
1916 1.1 fvdl }
1917 1.1 fvdl field NONPACKREQ 0x20
1918 1.1 fvdl field EXP_ACTIVE 0x10 /* SCSI Expander Active */
1919 1.1 fvdl field BSYX 0x08 /* Busy Expander */
1920 1.1 fvdl field WIDE_RES 0x04 /* Modes 0 and 1 only */
1921 1.1 fvdl field SDONE 0x02 /* Modes 0 and 1 only */
1922 1.1 fvdl field DMADONE 0x01 /* Modes 0 and 1 only */
1923 1.1 fvdl }
1924 1.1 fvdl
1925 1.1 fvdl /*
1926 1.1 fvdl * Clear SCSI Interrupt 2
1927 1.1 fvdl */
1928 1.1 fvdl register CLRSINT2 {
1929 1.1 fvdl address 0x04D
1930 1.1 fvdl access_mode WO
1931 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1932 1.1 fvdl field CLRNONPACKREQ 0x20
1933 1.1 fvdl field CLRWIDE_RES 0x04 /* Modes 0 and 1 only */
1934 1.1 fvdl field CLRSDONE 0x02 /* Modes 0 and 1 only */
1935 1.1 fvdl field CLRDMADONE 0x01 /* Modes 0 and 1 only */
1936 1.1 fvdl }
1937 1.1 fvdl
1938 1.1 fvdl /*
1939 1.1 fvdl * SCSI Interrupt Mode 2
1940 1.1 fvdl */
1941 1.1 fvdl register SIMODE2 {
1942 1.1 fvdl address 0x04D
1943 1.1 fvdl access_mode RW
1944 1.1 fvdl modes M_CFG
1945 1.1 fvdl field ENWIDE_RES 0x04
1946 1.1 fvdl field ENSDONE 0x02
1947 1.1 fvdl field ENDMADONE 0x01
1948 1.1 fvdl }
1949 1.1 fvdl
1950 1.1 fvdl /*
1951 1.1 fvdl * Physical Error Diagnosis
1952 1.1 fvdl */
1953 1.1 fvdl register PERRDIAG {
1954 1.1 fvdl address 0x04E
1955 1.1 fvdl access_mode RO
1956 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1957 1.1 fvdl field HIZERO 0x80
1958 1.1 fvdl field HIPERR 0x40
1959 1.1 fvdl field PREVPHASE 0x20
1960 1.1 fvdl field PARITYERR 0x10
1961 1.1 fvdl field AIPERR 0x08
1962 1.1 fvdl field CRCERR 0x04
1963 1.1 fvdl field DGFORMERR 0x02
1964 1.1 fvdl field DTERR 0x01
1965 1.1 fvdl }
1966 1.1 fvdl
1967 1.1 fvdl /*
1968 1.1 fvdl * LQI Manager Current State
1969 1.1 fvdl */
1970 1.1 fvdl register LQISTATE {
1971 1.1 fvdl address 0x04E
1972 1.1 fvdl access_mode RO
1973 1.1 fvdl modes M_CFG
1974 1.1 fvdl }
1975 1.1 fvdl
1976 1.1 fvdl /*
1977 1.1 fvdl * SCSI Offset Count
1978 1.1 fvdl */
1979 1.1 fvdl register SOFFCNT {
1980 1.1 fvdl address 0x04F
1981 1.1 fvdl access_mode RO
1982 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
1983 1.1 fvdl }
1984 1.1 fvdl
1985 1.1 fvdl /*
1986 1.1 fvdl * LQO Manager Current State
1987 1.1 fvdl */
1988 1.1 fvdl register LQOSTATE {
1989 1.1 fvdl address 0x04F
1990 1.1 fvdl access_mode RO
1991 1.1 fvdl modes M_CFG
1992 1.1 fvdl }
1993 1.1 fvdl
1994 1.1 fvdl /*
1995 1.1 fvdl * LQI Manager Status
1996 1.1 fvdl */
1997 1.1 fvdl register LQISTAT0 {
1998 1.1 fvdl address 0x050
1999 1.1 fvdl access_mode RO
2000 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
2001 1.1 fvdl field LQIATNQAS 0x20
2002 1.1 fvdl field LQICRCT1 0x10
2003 1.1 fvdl field LQICRCT2 0x08
2004 1.1 fvdl field LQIBADLQT 0x04
2005 1.1 fvdl field LQIATNLQ 0x02
2006 1.1 fvdl field LQIATNCMD 0x01
2007 1.1 fvdl }
2008 1.1 fvdl
2009 1.1 fvdl /*
2010 1.1 fvdl * Clear LQI Interrupts 0
2011 1.1 fvdl */
2012 1.1 fvdl register CLRLQIINT0 {
2013 1.1 fvdl address 0x050
2014 1.1 fvdl access_mode WO
2015 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
2016 1.1 fvdl field CLRLQIATNQAS 0x20
2017 1.1 fvdl field CLRLQICRCT1 0x10
2018 1.1 fvdl field CLRLQICRCT2 0x08
2019 1.1 fvdl field CLRLQIBADLQT 0x04
2020 1.1 fvdl field CLRLQIATNLQ 0x02
2021 1.1 fvdl field CLRLQIATNCMD 0x01
2022 1.1 fvdl }
2023 1.1 fvdl
2024 1.1 fvdl /*
2025 1.1 fvdl * LQI Manager Interrupt Mode 0
2026 1.1 fvdl */
2027 1.1 fvdl register LQIMODE0 {
2028 1.1 fvdl address 0x050
2029 1.1 fvdl access_mode RW
2030 1.1 fvdl modes M_CFG
2031 1.1 fvdl field ENLQIATNQASK 0x20
2032 1.1 fvdl field ENLQICRCT1 0x10
2033 1.1 fvdl field ENLQICRCT2 0x08
2034 1.1 fvdl field ENLQIBADLQT 0x04
2035 1.1 fvdl field ENLQIATNLQ 0x02
2036 1.1 fvdl field ENLQIATNCMD 0x01
2037 1.1 fvdl }
2038 1.1 fvdl
2039 1.1 fvdl /*
2040 1.1 fvdl * LQI Manager Status 1
2041 1.1 fvdl */
2042 1.1 fvdl register LQISTAT1 {
2043 1.1 fvdl address 0x051
2044 1.1 fvdl access_mode RO
2045 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
2046 1.1 fvdl field LQIPHASE_LQ 0x80
2047 1.1 fvdl field LQIPHASE_NLQ 0x40
2048 1.1 fvdl field LQIABORT 0x20
2049 1.1 fvdl field LQICRCI_LQ 0x10
2050 1.1 fvdl field LQICRCI_NLQ 0x08
2051 1.1 fvdl field LQIBADLQI 0x04
2052 1.1 fvdl field LQIOVERI_LQ 0x02
2053 1.1 fvdl field LQIOVERI_NLQ 0x01
2054 1.1 fvdl }
2055 1.1 fvdl
2056 1.1 fvdl /*
2057 1.1 fvdl * Clear LQI Manager Interrupts1
2058 1.1 fvdl */
2059 1.1 fvdl register CLRLQIINT1 {
2060 1.1 fvdl address 0x051
2061 1.1 fvdl access_mode WO
2062 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
2063 1.1 fvdl field CLRLQIPHASE_LQ 0x80
2064 1.1 fvdl field CLRLQIPHASE_NLQ 0x40
2065 1.1 fvdl field CLRLIQABORT 0x20
2066 1.1 fvdl field CLRLQICRCI_LQ 0x10
2067 1.1 fvdl field CLRLQICRCI_NLQ 0x08
2068 1.1 fvdl field CLRLQIBADLQI 0x04
2069 1.1 fvdl field CLRLQIOVERI_LQ 0x02
2070 1.1 fvdl field CLRLQIOVERI_NLQ 0x01
2071 1.1 fvdl }
2072 1.1 fvdl
2073 1.1 fvdl /*
2074 1.1 fvdl * LQI Manager Interrupt Mode 1
2075 1.1 fvdl */
2076 1.1 fvdl register LQIMODE1 {
2077 1.1 fvdl address 0x051
2078 1.1 fvdl access_mode RW
2079 1.1 fvdl modes M_CFG
2080 1.1 fvdl field ENLQIPHASE_LQ 0x80 /* LQIPHASE1 */
2081 1.1 fvdl field ENLQIPHASE_NLQ 0x40 /* LQIPHASE2 */
2082 1.1 fvdl field ENLIQABORT 0x20
2083 1.1 fvdl field ENLQICRCI_LQ 0x10 /* LQICRCI1 */
2084 1.1 fvdl field ENLQICRCI_NLQ 0x08 /* LQICRCI2 */
2085 1.1 fvdl field ENLQIBADLQI 0x04
2086 1.1 fvdl field ENLQIOVERI_LQ 0x02 /* LQIOVERI1 */
2087 1.1 fvdl field ENLQIOVERI_NLQ 0x01 /* LQIOVERI2 */
2088 1.1 fvdl }
2089 1.1 fvdl
2090 1.1 fvdl /*
2091 1.1 fvdl * LQI Manager Status 2
2092 1.1 fvdl */
2093 1.1 fvdl register LQISTAT2 {
2094 1.1 fvdl address 0x052
2095 1.1 fvdl access_mode RO
2096 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
2097 1.1 fvdl field PACKETIZED 0x80
2098 1.1 fvdl field LQIPHASE_OUTPKT 0x40
2099 1.1 fvdl field LQIWORKONLQ 0x20
2100 1.1 fvdl field LQIWAITFIFO 0x10
2101 1.1 fvdl field LQISTOPPKT 0x08
2102 1.1 fvdl field LQISTOPLQ 0x04
2103 1.1 fvdl field LQISTOPCMD 0x02
2104 1.1 fvdl field LQIGSAVAIL 0x01
2105 1.1 fvdl }
2106 1.1 fvdl
2107 1.1 fvdl /*
2108 1.1 fvdl * SCSI Status 3
2109 1.1 fvdl */
2110 1.1 fvdl register SSTAT3 {
2111 1.1 fvdl address 0x053
2112 1.1 fvdl access_mode RO
2113 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
2114 1.1 fvdl field NTRAMPERR 0x02
2115 1.1 fvdl field OSRAMPERR 0x01
2116 1.1 fvdl }
2117 1.1 fvdl
2118 1.1 fvdl /*
2119 1.1 fvdl * Clear SCSI Status 3
2120 1.1 fvdl */
2121 1.1 fvdl register CLRSINT3 {
2122 1.1 fvdl address 0x053
2123 1.1 fvdl access_mode WO
2124 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
2125 1.1 fvdl field CLRNTRAMPERR 0x02
2126 1.1 fvdl field CLROSRAMPERR 0x01
2127 1.1 fvdl }
2128 1.1 fvdl
2129 1.1 fvdl /*
2130 1.1 fvdl * SCSI Interrupt Mode 3
2131 1.1 fvdl */
2132 1.1 fvdl register SIMODE3 {
2133 1.1 fvdl address 0x053
2134 1.1 fvdl access_mode RW
2135 1.1 fvdl modes M_CFG
2136 1.1 fvdl field ENNTRAMPERR 0x02
2137 1.1 fvdl field ENOSRAMPERR 0x01
2138 1.1 fvdl }
2139 1.1 fvdl
2140 1.1 fvdl /*
2141 1.1 fvdl * LQO Manager Status 0
2142 1.1 fvdl */
2143 1.1 fvdl register LQOSTAT0 {
2144 1.1 fvdl address 0x054
2145 1.1 fvdl access_mode RO
2146 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
2147 1.1 fvdl field LQOTARGSCBPERR 0x10
2148 1.1 fvdl field LQOSTOPT2 0x08
2149 1.1 fvdl field LQOATNLQ 0x04
2150 1.1 fvdl field LQOATNPKT 0x02
2151 1.1 fvdl field LQOTCRC 0x01
2152 1.1 fvdl }
2153 1.1 fvdl
2154 1.1 fvdl /*
2155 1.1 fvdl * Clear LQO Manager interrupt 0
2156 1.1 fvdl */
2157 1.1 fvdl register CLRLQOINT0 {
2158 1.1 fvdl address 0x054
2159 1.1 fvdl access_mode WO
2160 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
2161 1.1 fvdl field CLRLQOTARGSCBPERR 0x10
2162 1.1 fvdl field CLRLQOSTOPT2 0x08
2163 1.1 fvdl field CLRLQOATNLQ 0x04
2164 1.1 fvdl field CLRLQOATNPKT 0x02
2165 1.1 fvdl field CLRLQOTCRC 0x01
2166 1.1 fvdl }
2167 1.1 fvdl
2168 1.1 fvdl /*
2169 1.1 fvdl * LQO Manager Interrupt Mode 0
2170 1.1 fvdl */
2171 1.1 fvdl register LQOMODE0 {
2172 1.1 fvdl address 0x054
2173 1.1 fvdl access_mode RW
2174 1.1 fvdl modes M_CFG
2175 1.1 fvdl field ENLQOTARGSCBPERR 0x10
2176 1.1 fvdl field ENLQOSTOPT2 0x08
2177 1.1 fvdl field ENLQOATNLQ 0x04
2178 1.1 fvdl field ENLQOATNPKT 0x02
2179 1.1 fvdl field ENLQOTCRC 0x01
2180 1.1 fvdl }
2181 1.1 fvdl
2182 1.1 fvdl /*
2183 1.1 fvdl * LQO Manager Status 1
2184 1.1 fvdl */
2185 1.1 fvdl register LQOSTAT1 {
2186 1.1 fvdl address 0x055
2187 1.1 fvdl access_mode RO
2188 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
2189 1.1 fvdl field LQOINITSCBPERR 0x10
2190 1.1 fvdl field LQOSTOPI2 0x08
2191 1.1 fvdl field LQOBADQAS 0x04
2192 1.1 fvdl field LQOBUSFREE 0x02
2193 1.1 fvdl field LQOPHACHGINPKT 0x01
2194 1.1 fvdl }
2195 1.1 fvdl
2196 1.1 fvdl /*
2197 1.1 fvdl * Clear LOQ Interrupt 1
2198 1.1 fvdl */
2199 1.1 fvdl register CLRLQOINT1 {
2200 1.1 fvdl address 0x055
2201 1.1 fvdl access_mode WO
2202 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
2203 1.1 fvdl field CLRLQOINITSCBPERR 0x10
2204 1.1 fvdl field CLRLQOSTOPI2 0x08
2205 1.1 fvdl field CLRLQOBADQAS 0x04
2206 1.1 fvdl field CLRLQOBUSFREE 0x02
2207 1.1 fvdl field CLRLQOPHACHGINPKT 0x01
2208 1.1 fvdl }
2209 1.1 fvdl
2210 1.1 fvdl /*
2211 1.1 fvdl * LQO Manager Interrupt Mode 1
2212 1.1 fvdl */
2213 1.1 fvdl register LQOMODE1 {
2214 1.1 fvdl address 0x055
2215 1.1 fvdl access_mode RW
2216 1.1 fvdl modes M_CFG
2217 1.1 fvdl field ENLQOINITSCBPERR 0x10
2218 1.1 fvdl field ENLQOSTOPI2 0x08
2219 1.1 fvdl field ENLQOBADQAS 0x04
2220 1.1 fvdl field ENLQOBUSFREE 0x02
2221 1.1 fvdl field ENLQOPHACHGINPKT 0x01
2222 1.1 fvdl }
2223 1.1 fvdl
2224 1.1 fvdl /*
2225 1.1 fvdl * LQO Manager Status 2
2226 1.1 fvdl */
2227 1.1 fvdl register LQOSTAT2 {
2228 1.1 fvdl address 0x056
2229 1.1 fvdl access_mode RO
2230 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
2231 1.1 fvdl field LQOPKT 0xE0
2232 1.1 fvdl field LQOWAITFIFO 0x10
2233 1.1 fvdl field LQOPHACHGOUTPKT 0x02 /* outside of packet boundaries. */
2234 1.1 fvdl field LQOSTOP0 0x01 /* Stopped after sending all packets */
2235 1.1 fvdl }
2236 1.1 fvdl
2237 1.1 fvdl /*
2238 1.1 fvdl * Output Synchronizer Space Count
2239 1.1 fvdl */
2240 1.1 fvdl register OS_SPACE_CNT {
2241 1.1 fvdl address 0x056
2242 1.1 fvdl access_mode RO
2243 1.1 fvdl modes M_CFG
2244 1.1 fvdl }
2245 1.1 fvdl
2246 1.1 fvdl /*
2247 1.1 fvdl * SCSI Interrupt Mode 1
2248 1.1 fvdl * Setting any bit will enable the corresponding function
2249 1.1 fvdl * in SIMODE1 to interrupt via the IRQ pin.
2250 1.1 fvdl */
2251 1.1 fvdl register SIMODE1 {
2252 1.1 fvdl address 0x057
2253 1.1 fvdl access_mode RW
2254 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
2255 1.1 fvdl field ENSELTIMO 0x80
2256 1.1 fvdl field ENATNTARG 0x40
2257 1.1 fvdl field ENSCSIRST 0x20
2258 1.1 fvdl field ENPHASEMIS 0x10
2259 1.1 fvdl field ENBUSFREE 0x08
2260 1.1 fvdl field ENSCSIPERR 0x04
2261 1.1 fvdl field ENSTRB2FAST 0x02
2262 1.1 fvdl field ENREQINIT 0x01
2263 1.1 fvdl }
2264 1.1 fvdl
2265 1.1 fvdl /*
2266 1.1 fvdl * Good Status FIFO
2267 1.1 fvdl */
2268 1.1 fvdl register GSFIFO {
2269 1.1 fvdl address 0x058
2270 1.1 fvdl access_mode RO
2271 1.1 fvdl size 2
2272 1.1 fvdl modes M_DFF0, M_DFF1, M_SCSI
2273 1.1 fvdl }
2274 1.1 fvdl
2275 1.1 fvdl /*
2276 1.1 fvdl * Data FIFO SCSI Transfer Control
2277 1.1 fvdl */
2278 1.1 fvdl register DFFSXFRCTL {
2279 1.1 fvdl address 0x05A
2280 1.1 fvdl access_mode RW
2281 1.1 fvdl modes M_DFF0, M_DFF1
2282 1.1 fvdl field DFFBITBUCKET 0x08
2283 1.1 fvdl field CLRSHCNT 0x04
2284 1.1 fvdl field CLRCHN 0x02
2285 1.1 fvdl field RSTCHN 0x01
2286 1.1 fvdl }
2287 1.1 fvdl
2288 1.1 fvdl /*
2289 1.1 fvdl * Next SCSI Control Block
2290 1.1 fvdl */
2291 1.1 fvdl register NEXTSCB {
2292 1.1 fvdl address 0x05A
2293 1.1 fvdl access_mode RW
2294 1.1 fvdl size 2
2295 1.1 fvdl modes M_SCSI
2296 1.1 fvdl }
2297 1.1 fvdl
2298 1.1 fvdl /* Rev B only. */
2299 1.1 fvdl register LQOSCSCTL {
2300 1.1 fvdl address 0x05A
2301 1.1 fvdl access_mode RW
2302 1.1 fvdl size 1
2303 1.1 fvdl modes M_CFG
2304 1.1 fvdl field LQOH2A_VERSION 0x80
2305 1.1 fvdl field LQONOCHKOVER 0x01
2306 1.1 fvdl }
2307 1.1 fvdl
2308 1.1 fvdl /*
2309 1.1 fvdl * SEQ Interrupts
2310 1.1 fvdl */
2311 1.1 fvdl register SEQINTSRC {
2312 1.1 fvdl address 0x05B
2313 1.1 fvdl access_mode RO
2314 1.1 fvdl modes M_DFF0, M_DFF1
2315 1.1 fvdl field CTXTDONE 0x40
2316 1.1 fvdl field SAVEPTRS 0x20
2317 1.1 fvdl field CFG4DATA 0x10
2318 1.1 fvdl field CFG4ISTAT 0x08
2319 1.1 fvdl field CFG4TSTAT 0x04
2320 1.1 fvdl field CFG4ICMD 0x02
2321 1.1 fvdl field CFG4TCMD 0x01
2322 1.1 fvdl }
2323 1.1 fvdl
2324 1.1 fvdl /*
2325 1.1 fvdl * Clear Arp Interrupts
2326 1.1 fvdl */
2327 1.1 fvdl register CLRSEQINTSRC {
2328 1.1 fvdl address 0x05B
2329 1.1 fvdl access_mode WO
2330 1.1 fvdl modes M_DFF0, M_DFF1
2331 1.1 fvdl field CLRCTXTDONE 0x40
2332 1.1 fvdl field CLRSAVEPTRS 0x20
2333 1.1 fvdl field CLRCFG4DATA 0x10
2334 1.1 fvdl field CLRCFG4ISTAT 0x08
2335 1.1 fvdl field CLRCFG4TSTAT 0x04
2336 1.1 fvdl field CLRCFG4ICMD 0x02
2337 1.1 fvdl field CLRCFG4TCMD 0x01
2338 1.1 fvdl }
2339 1.1 fvdl
2340 1.1 fvdl /*
2341 1.1 fvdl * SEQ Interrupt Enabled (Shared)
2342 1.1 fvdl */
2343 1.1 fvdl register SEQIMODE {
2344 1.1 fvdl address 0x05C
2345 1.1 fvdl access_mode RW
2346 1.1 fvdl modes M_DFF0, M_DFF1
2347 1.1 fvdl field ENCTXTDONE 0x40
2348 1.1 fvdl field ENSAVEPTRS 0x20
2349 1.1 fvdl field ENCFG4DATA 0x10
2350 1.1 fvdl field ENCFG4ISTAT 0x08
2351 1.1 fvdl field ENCFG4TSTAT 0x04
2352 1.1 fvdl field ENCFG4ICMD 0x02
2353 1.1 fvdl field ENCFG4TCMD 0x01
2354 1.1 fvdl }
2355 1.1 fvdl
2356 1.1 fvdl /*
2357 1.1 fvdl * Current SCSI Control Block
2358 1.1 fvdl */
2359 1.1 fvdl register CURRSCB {
2360 1.1 fvdl address 0x05C
2361 1.1 fvdl access_mode RW
2362 1.1 fvdl size 2
2363 1.1 fvdl modes M_SCSI
2364 1.1 fvdl }
2365 1.1 fvdl
2366 1.1 fvdl /*
2367 1.1 fvdl * Data FIFO Status
2368 1.1 fvdl */
2369 1.1 fvdl register MDFFSTAT {
2370 1.1 fvdl address 0x05D
2371 1.1 fvdl access_mode RO
2372 1.1 fvdl modes M_DFF0, M_DFF1
2373 1.1 fvdl field SHCNTNEGATIVE 0x40 /* Rev B or higher */
2374 1.1 fvdl field SHCNTMINUS1 0x20 /* Rev B or higher */
2375 1.1 fvdl field LASTSDONE 0x10
2376 1.1 fvdl field SHVALID 0x08
2377 1.1 fvdl field DLZERO 0x04 /* FIFO data ends on packet boundary. */
2378 1.1 fvdl field DATAINFIFO 0x02
2379 1.1 fvdl field FIFOFREE 0x01
2380 1.1 fvdl }
2381 1.1 fvdl
2382 1.1 fvdl /*
2383 1.1 fvdl * CRC Control
2384 1.1 fvdl */
2385 1.1 fvdl register CRCCONTROL {
2386 1.1 fvdl address 0x05d
2387 1.1 fvdl access_mode RW
2388 1.1 fvdl modes M_CFG
2389 1.1 fvdl field CRCVALCHKEN 0x40
2390 1.1 fvdl }
2391 1.1 fvdl
2392 1.1 fvdl /*
2393 1.1 fvdl * SCSI Test Control
2394 1.1 fvdl */
2395 1.1 fvdl register SCSITEST {
2396 1.1 fvdl address 0x05E
2397 1.1 fvdl access_mode RW
2398 1.1 fvdl modes M_CFG
2399 1.1 fvdl field CNTRTEST 0x08
2400 1.1 fvdl field SEL_TXPLL_DEBUG 0x04
2401 1.1 fvdl }
2402 1.1 fvdl
2403 1.1 fvdl /*
2404 1.1 fvdl * Data FIFO Queue Tag
2405 1.1 fvdl */
2406 1.1 fvdl register DFFTAG {
2407 1.1 fvdl address 0x05E
2408 1.1 fvdl access_mode RW
2409 1.1 fvdl size 2
2410 1.1 fvdl modes M_DFF0, M_DFF1
2411 1.1 fvdl }
2412 1.1 fvdl
2413 1.1 fvdl /*
2414 1.1 fvdl * Last SCSI Control Block
2415 1.1 fvdl */
2416 1.1 fvdl register LASTSCB {
2417 1.1 fvdl address 0x05E
2418 1.1 fvdl access_mode RW
2419 1.1 fvdl size 2
2420 1.1 fvdl modes M_SCSI
2421 1.1 fvdl }
2422 1.1 fvdl
2423 1.1 fvdl /*
2424 1.1 fvdl * SCSI I/O Cell Power-down Control
2425 1.1 fvdl */
2426 1.1 fvdl register IOPDNCTL {
2427 1.1 fvdl address 0x05F
2428 1.1 fvdl access_mode RW
2429 1.1 fvdl modes M_CFG
2430 1.1 fvdl field DISABLE_OE 0x80
2431 1.1 fvdl field PDN_IDIST 0x04
2432 1.1 fvdl field PDN_DIFFSENSE 0x01
2433 1.1 fvdl }
2434 1.1 fvdl
2435 1.1 fvdl /*
2436 1.1 fvdl * Shaddow Host Address.
2437 1.1 fvdl */
2438 1.1 fvdl register SHADDR {
2439 1.1 fvdl address 0x060
2440 1.1 fvdl access_mode RO
2441 1.1 fvdl size 8
2442 1.1 fvdl modes M_DFF0, M_DFF1
2443 1.1 fvdl }
2444 1.1 fvdl
2445 1.1 fvdl /*
2446 1.1 fvdl * Data Group CRC Interval.
2447 1.1 fvdl */
2448 1.1 fvdl register DGRPCRCI {
2449 1.1 fvdl address 0x060
2450 1.1 fvdl access_mode RW
2451 1.1 fvdl size 2
2452 1.1 fvdl modes M_CFG
2453 1.1 fvdl }
2454 1.1 fvdl
2455 1.1 fvdl /*
2456 1.1 fvdl * Data Transfer Negotiation Address
2457 1.1 fvdl */
2458 1.1 fvdl register NEGOADDR {
2459 1.1 fvdl address 0x060
2460 1.1 fvdl access_mode RW
2461 1.1 fvdl modes M_SCSI
2462 1.1 fvdl }
2463 1.1 fvdl
2464 1.1 fvdl /*
2465 1.1 fvdl * Data Transfer Negotiation Data - Period Byte
2466 1.1 fvdl */
2467 1.1 fvdl register NEGPERIOD {
2468 1.1 fvdl address 0x061
2469 1.1 fvdl access_mode RW
2470 1.1 fvdl modes M_SCSI
2471 1.1 fvdl }
2472 1.1 fvdl
2473 1.1 fvdl /*
2474 1.1 fvdl * Packetized CRC Interval
2475 1.1 fvdl */
2476 1.1 fvdl register PACKCRCI {
2477 1.1 fvdl address 0x062
2478 1.1 fvdl access_mode RW
2479 1.1 fvdl size 2
2480 1.1 fvdl modes M_CFG
2481 1.1 fvdl }
2482 1.1 fvdl
2483 1.1 fvdl /*
2484 1.1 fvdl * Data Transfer Negotiation Data - Offset Byte
2485 1.1 fvdl */
2486 1.1 fvdl register NEGOFFSET {
2487 1.1 fvdl address 0x062
2488 1.1 fvdl access_mode RW
2489 1.1 fvdl modes M_SCSI
2490 1.1 fvdl }
2491 1.1 fvdl
2492 1.1 fvdl /*
2493 1.1 fvdl * Data Transfer Negotiation Data - PPR Options
2494 1.1 fvdl */
2495 1.1 fvdl register NEGPPROPTS {
2496 1.1 fvdl address 0x063
2497 1.1 fvdl access_mode RW
2498 1.1 fvdl modes M_SCSI
2499 1.1 fvdl field PPROPT_PACE 0x08
2500 1.1 fvdl field PPROPT_QAS 0x04
2501 1.1 fvdl field PPROPT_DT 0x02
2502 1.1 fvdl field PPROPT_IUT 0x01
2503 1.1 fvdl }
2504 1.1 fvdl
2505 1.1 fvdl /*
2506 1.1 fvdl * Data Transfer Negotiation Data - Connection Options
2507 1.1 fvdl */
2508 1.1 fvdl register NEGCONOPTS {
2509 1.1 fvdl address 0x064
2510 1.1 fvdl access_mode RW
2511 1.1 fvdl modes M_SCSI
2512 1.1 fvdl field ENSNAPSHOT 0x40
2513 1.1 fvdl field RTI_WRTDIS 0x20
2514 1.1 fvdl field RTI_OVRDTRN 0x10
2515 1.1 fvdl field ENSLOWCRC 0x08
2516 1.1 fvdl field ENAUTOATNI 0x04
2517 1.1 fvdl field ENAUTOATNO 0x02
2518 1.1 fvdl field WIDEXFER 0x01
2519 1.1 fvdl }
2520 1.1 fvdl
2521 1.1 fvdl /*
2522 1.1 fvdl * Negotiation Table Annex Column Index.
2523 1.1 fvdl */
2524 1.1 fvdl register ANNEXCOL {
2525 1.1 fvdl address 0x065
2526 1.1 fvdl access_mode RW
2527 1.1 fvdl modes M_SCSI
2528 1.1 fvdl }
2529 1.1 fvdl
2530 1.1 fvdl register SCSCHKN {
2531 1.1 fvdl address 0x066
2532 1.1 fvdl access_mode RW
2533 1.1 fvdl modes M_CFG
2534 1.1 fvdl field STSELSKIDDIS 0x40
2535 1.1 fvdl field CURRFIFODEF 0x20
2536 1.1 fvdl field WIDERESEN 0x10
2537 1.1 fvdl field SDONEMSKDIS 0x08
2538 1.1 fvdl field DFFACTCLR 0x04
2539 1.1 fvdl field SHVALIDSTDIS 0x02
2540 1.1 fvdl field LSTSGCLRDIS 0x01
2541 1.1 fvdl }
2542 1.1 fvdl
2543 1.1 fvdl const AHD_ANNEXCOL_PER_DEV0 4
2544 1.1 fvdl const AHD_NUM_PER_DEV_ANNEXCOLS 4
2545 1.1 fvdl const AHD_ANNEXCOL_PRECOMP_SLEW 4
2546 1.1 fvdl const AHD_PRECOMP_MASK 0x07
2547 1.1 fvdl const AHD_PRECOMP_SHIFT 0
2548 1.1 fvdl const AHD_PRECOMP_CUTBACK_17 0x04
2549 1.1 fvdl const AHD_PRECOMP_CUTBACK_29 0x06
2550 1.1 fvdl const AHD_PRECOMP_CUTBACK_37 0x07
2551 1.1 fvdl const AHD_SLEWRATE_MASK 0x78
2552 1.1 fvdl const AHD_SLEWRATE_SHIFT 3
2553 1.1 fvdl /*
2554 1.2 fvdl * Rev A has only a single bit (high bit of field) of slew adjustment.
2555 1.2 fvdl * Rev B has 4 bits. The current default happens to be the same for both.
2556 1.1 fvdl */
2557 1.2 fvdl const AHD_SLEWRATE_DEF_REVA 0x08
2558 1.1 fvdl const AHD_SLEWRATE_DEF_REVB 0x08
2559 1.1 fvdl
2560 1.1 fvdl /* Rev A does not have any amplitude setting. */
2561 1.1 fvdl const AHD_ANNEXCOL_AMPLITUDE 6
2562 1.1 fvdl const AHD_AMPLITUDE_MASK 0x7
2563 1.1 fvdl const AHD_AMPLITUDE_SHIFT 0
2564 1.1 fvdl const AHD_AMPLITUDE_DEF 0x7
2565 1.1 fvdl
2566 1.1 fvdl /*
2567 1.1 fvdl * Negotiation Table Annex Data Port.
2568 1.1 fvdl */
2569 1.1 fvdl register ANNEXDAT {
2570 1.1 fvdl address 0x066
2571 1.1 fvdl access_mode RW
2572 1.1 fvdl modes M_SCSI
2573 1.1 fvdl }
2574 1.1 fvdl
2575 1.1 fvdl /*
2576 1.1 fvdl * Initiator's Own Id.
2577 1.1 fvdl * The SCSI ID to use for Selection Out and seen during a reselection..
2578 1.1 fvdl */
2579 1.1 fvdl register IOWNID {
2580 1.1 fvdl address 0x067
2581 1.1 fvdl access_mode RW
2582 1.1 fvdl modes M_SCSI
2583 1.1 fvdl }
2584 1.1 fvdl
2585 1.1 fvdl /*
2586 1.1 fvdl * 960MHz Phase-Locked Loop Control 0
2587 1.1 fvdl */
2588 1.1 fvdl register PLL960CTL0 {
2589 1.1 fvdl address 0x068
2590 1.1 fvdl access_mode RW
2591 1.1 fvdl modes M_CFG
2592 1.1 fvdl field PLL_VCOSEL 0x80
2593 1.1 fvdl field PLL_PWDN 0x40
2594 1.1 fvdl field PLL_NS 0x30
2595 1.1 fvdl field PLL_ENLUD 0x08
2596 1.1 fvdl field PLL_ENLPF 0x04
2597 1.1 fvdl field PLL_DLPF 0x02
2598 1.1 fvdl field PLL_ENFBM 0x01
2599 1.1 fvdl }
2600 1.1 fvdl
2601 1.1 fvdl /*
2602 1.1 fvdl * Target Own Id
2603 1.1 fvdl */
2604 1.1 fvdl register TOWNID {
2605 1.1 fvdl address 0x069
2606 1.1 fvdl access_mode RW
2607 1.1 fvdl modes M_SCSI
2608 1.1 fvdl }
2609 1.1 fvdl
2610 1.1 fvdl /*
2611 1.1 fvdl * 960MHz Phase-Locked Loop Control 1
2612 1.1 fvdl */
2613 1.1 fvdl register PLL960CTL1 {
2614 1.1 fvdl address 0x069
2615 1.1 fvdl access_mode RW
2616 1.1 fvdl modes M_CFG
2617 1.1 fvdl field PLL_CNTEN 0x80
2618 1.1 fvdl field PLL_CNTCLR 0x40
2619 1.1 fvdl field PLL_RST 0x01
2620 1.1 fvdl }
2621 1.1 fvdl
2622 1.1 fvdl /*
2623 1.1 fvdl * Expander Signature
2624 1.1 fvdl */
2625 1.1 fvdl register XSIG {
2626 1.1 fvdl address 0x06A
2627 1.1 fvdl access_mode RW
2628 1.1 fvdl modes M_SCSI
2629 1.1 fvdl }
2630 1.1 fvdl
2631 1.1 fvdl /*
2632 1.1 fvdl * Shadow Byte Count
2633 1.1 fvdl */
2634 1.1 fvdl register SHCNT {
2635 1.1 fvdl address 0x068
2636 1.1 fvdl access_mode RW
2637 1.1 fvdl size 3
2638 1.1 fvdl modes M_DFF0, M_DFF1
2639 1.1 fvdl }
2640 1.1 fvdl
2641 1.1 fvdl /*
2642 1.1 fvdl * Selection Out ID
2643 1.1 fvdl */
2644 1.1 fvdl register SELOID {
2645 1.1 fvdl address 0x06B
2646 1.1 fvdl access_mode RW
2647 1.1 fvdl modes M_SCSI
2648 1.1 fvdl }
2649 1.1 fvdl
2650 1.1 fvdl /*
2651 1.1 fvdl * 960-MHz Phase-Locked Loop Test Count
2652 1.1 fvdl */
2653 1.1 fvdl register PLL960CNT0 {
2654 1.1 fvdl address 0x06A
2655 1.1 fvdl access_mode RO
2656 1.1 fvdl size 2
2657 1.1 fvdl modes M_CFG
2658 1.1 fvdl }
2659 1.1 fvdl
2660 1.1 fvdl /*
2661 1.1 fvdl * 400-MHz Phase-Locked Loop Control 0
2662 1.1 fvdl */
2663 1.1 fvdl register PLL400CTL0 {
2664 1.1 fvdl address 0x06C
2665 1.1 fvdl access_mode RW
2666 1.1 fvdl modes M_CFG
2667 1.1 fvdl field PLL_VCOSEL 0x80
2668 1.1 fvdl field PLL_PWDN 0x40
2669 1.1 fvdl field PLL_NS 0x30
2670 1.1 fvdl field PLL_ENLUD 0x08
2671 1.1 fvdl field PLL_ENLPF 0x04
2672 1.1 fvdl field PLL_DLPF 0x02
2673 1.1 fvdl field PLL_ENFBM 0x01
2674 1.1 fvdl }
2675 1.1 fvdl
2676 1.1 fvdl /*
2677 1.1 fvdl * Arbitration Fairness
2678 1.1 fvdl */
2679 1.1 fvdl register FAIRNESS {
2680 1.1 fvdl address 0x06C
2681 1.1 fvdl access_mode RW
2682 1.1 fvdl size 2
2683 1.1 fvdl modes M_SCSI
2684 1.1 fvdl }
2685 1.1 fvdl
2686 1.1 fvdl /*
2687 1.1 fvdl * 400-MHz Phase-Locked Loop Control 1
2688 1.1 fvdl */
2689 1.1 fvdl register PLL400CTL1 {
2690 1.1 fvdl address 0x06D
2691 1.1 fvdl access_mode RW
2692 1.1 fvdl modes M_CFG
2693 1.1 fvdl field PLL_CNTEN 0x80
2694 1.1 fvdl field PLL_CNTCLR 0x40
2695 1.1 fvdl field PLL_RST 0x01
2696 1.1 fvdl }
2697 1.1 fvdl
2698 1.1 fvdl /*
2699 1.1 fvdl * Arbitration Unfairness
2700 1.1 fvdl */
2701 1.1 fvdl register UNFAIRNESS {
2702 1.1 fvdl address 0x06E
2703 1.1 fvdl access_mode RW
2704 1.1 fvdl size 2
2705 1.1 fvdl modes M_SCSI
2706 1.1 fvdl }
2707 1.1 fvdl
2708 1.1 fvdl /*
2709 1.1 fvdl * 400-MHz Phase-Locked Loop Test Count
2710 1.1 fvdl */
2711 1.1 fvdl register PLL400CNT0 {
2712 1.1 fvdl address 0x06E
2713 1.1 fvdl access_mode RO
2714 1.1 fvdl size 2
2715 1.1 fvdl modes M_CFG
2716 1.1 fvdl }
2717 1.1 fvdl
2718 1.1 fvdl /*
2719 1.1 fvdl * SCB Page Pointer
2720 1.1 fvdl */
2721 1.1 fvdl register SCBPTR {
2722 1.1 fvdl address 0x0A8
2723 1.1 fvdl access_mode RW
2724 1.1 fvdl size 2
2725 1.1 fvdl modes M_DFF0, M_DFF1, M_CCHAN, M_SCSI
2726 1.1 fvdl }
2727 1.1 fvdl
2728 1.1 fvdl /*
2729 1.1 fvdl * CMC SCB Array Count
2730 1.1 fvdl * Number of bytes to transfer between CMC SCB memory and SCBRAM.
2731 1.1 fvdl * Transfers must be 8byte aligned and sized.
2732 1.1 fvdl */
2733 1.1 fvdl register CCSCBACNT {
2734 1.1 fvdl address 0x0AB
2735 1.1 fvdl access_mode RW
2736 1.1 fvdl modes M_CCHAN
2737 1.1 fvdl }
2738 1.1 fvdl
2739 1.1 fvdl /*
2740 1.1 fvdl * SCB Autopointer
2741 1.1 fvdl * SCB-Next Address Snooping logic. When an SCB is transferred to
2742 1.1 fvdl * the card, the next SCB address to be used by the CMC array can
2743 1.1 fvdl * be autoloaded from that transfer.
2744 1.1 fvdl */
2745 1.1 fvdl register SCBAUTOPTR {
2746 1.1 fvdl address 0x0AB
2747 1.1 fvdl access_mode RW
2748 1.1 fvdl modes M_CFG
2749 1.1 fvdl field AUSCBPTR_EN 0x80
2750 1.1 fvdl field SCBPTR_ADDR 0x38
2751 1.1 fvdl field SCBPTR_OFF 0x07
2752 1.1 fvdl }
2753 1.1 fvdl
2754 1.1 fvdl /*
2755 1.1 fvdl * CMC SG Ram Address Pointer
2756 1.1 fvdl */
2757 1.1 fvdl register CCSGADDR {
2758 1.1 fvdl address 0x0AC
2759 1.1 fvdl access_mode RW
2760 1.1 fvdl modes M_DFF0, M_DFF1
2761 1.1 fvdl }
2762 1.1 fvdl
2763 1.1 fvdl /*
2764 1.1 fvdl * CMC SCB RAM Address Pointer
2765 1.1 fvdl */
2766 1.1 fvdl register CCSCBADDR {
2767 1.1 fvdl address 0x0AC
2768 1.1 fvdl access_mode RW
2769 1.1 fvdl modes M_CCHAN
2770 1.1 fvdl }
2771 1.1 fvdl
2772 1.1 fvdl /*
2773 1.1 fvdl * CMC SCB Ram Back-up Address Pointer
2774 1.1 fvdl * Indicates the true stop location of transfers halted prior
2775 1.1 fvdl * to SCBHCNT going to 0.
2776 1.1 fvdl */
2777 1.1 fvdl register CCSCBADR_BK {
2778 1.1 fvdl address 0x0AC
2779 1.1 fvdl access_mode RO
2780 1.1 fvdl modes M_CFG
2781 1.1 fvdl }
2782 1.1 fvdl
2783 1.1 fvdl /*
2784 1.1 fvdl * CMC SG Control
2785 1.1 fvdl */
2786 1.1 fvdl register CCSGCTL {
2787 1.1 fvdl address 0x0AD
2788 1.1 fvdl access_mode RW
2789 1.1 fvdl modes M_DFF0, M_DFF1
2790 1.1 fvdl field CCSGDONE 0x80
2791 1.1 fvdl field SG_CACHE_AVAIL 0x10
2792 1.1 fvdl field CCSGENACK 0x08
2793 1.1 fvdl mask CCSGEN 0x0C
2794 1.1 fvdl field SG_FETCH_REQ 0x02
2795 1.1 fvdl field CCSGRESET 0x01
2796 1.1 fvdl }
2797 1.1 fvdl
2798 1.1 fvdl /*
2799 1.1 fvdl * CMD SCB Control
2800 1.1 fvdl */
2801 1.1 fvdl register CCSCBCTL {
2802 1.1 fvdl address 0x0AD
2803 1.1 fvdl access_mode RW
2804 1.1 fvdl modes M_CCHAN
2805 1.1 fvdl field CCSCBDONE 0x80
2806 1.1 fvdl field ARRDONE 0x40
2807 1.1 fvdl field CCARREN 0x10
2808 1.1 fvdl field CCSCBEN 0x08
2809 1.1 fvdl field CCSCBDIR 0x04
2810 1.1 fvdl field CCSCBRESET 0x01
2811 1.1 fvdl }
2812 1.1 fvdl
2813 1.1 fvdl /*
2814 1.1 fvdl * CMC Ram BIST
2815 1.1 fvdl */
2816 1.1 fvdl register CMC_RAMBIST {
2817 1.1 fvdl address 0x0AD
2818 1.1 fvdl access_mode RW
2819 1.1 fvdl modes M_CFG
2820 1.1 fvdl field SG_ELEMENT_SIZE 0x80
2821 1.1 fvdl field SCBRAMBIST_FAIL 0x40
2822 1.1 fvdl field SG_BIST_FAIL 0x20
2823 1.1 fvdl field SG_BIST_EN 0x10
2824 1.1 fvdl field CMC_BUFFER_BIST_FAIL 0x02
2825 1.1 fvdl field CMC_BUFFER_BIST_EN 0x01
2826 1.1 fvdl }
2827 1.1 fvdl
2828 1.1 fvdl /*
2829 1.1 fvdl * CMC SG RAM Data Port
2830 1.1 fvdl */
2831 1.1 fvdl register CCSGRAM {
2832 1.1 fvdl address 0x0B0
2833 1.1 fvdl access_mode RW
2834 1.1 fvdl modes M_DFF0, M_DFF1
2835 1.1 fvdl }
2836 1.1 fvdl
2837 1.1 fvdl /*
2838 1.1 fvdl * CMC SCB RAM Data Port
2839 1.1 fvdl */
2840 1.1 fvdl register CCSCBRAM {
2841 1.1 fvdl address 0x0B0
2842 1.1 fvdl access_mode RW
2843 1.1 fvdl modes M_CCHAN
2844 1.1 fvdl }
2845 1.1 fvdl
2846 1.1 fvdl /*
2847 1.1 fvdl * Flex DMA Address.
2848 1.1 fvdl */
2849 1.1 fvdl register FLEXADR {
2850 1.1 fvdl address 0x0B0
2851 1.1 fvdl access_mode RW
2852 1.1 fvdl size 3
2853 1.1 fvdl modes M_SCSI
2854 1.1 fvdl }
2855 1.1 fvdl
2856 1.1 fvdl /*
2857 1.1 fvdl * Flex DMA Byte Count
2858 1.1 fvdl */
2859 1.1 fvdl register FLEXCNT {
2860 1.1 fvdl address 0x0B3
2861 1.1 fvdl access_mode RW
2862 1.1 fvdl size 2
2863 1.1 fvdl modes M_SCSI
2864 1.1 fvdl }
2865 1.1 fvdl
2866 1.1 fvdl /*
2867 1.1 fvdl * Flex DMA Status
2868 1.1 fvdl */
2869 1.1 fvdl register FLEXDMASTAT {
2870 1.1 fvdl address 0x0B5
2871 1.1 fvdl access_mode RW
2872 1.1 fvdl modes M_SCSI
2873 1.1 fvdl field FLEXDMAERR 0x02
2874 1.1 fvdl field FLEXDMADONE 0x01
2875 1.1 fvdl }
2876 1.1 fvdl
2877 1.1 fvdl /*
2878 1.1 fvdl * Flex DMA Data Port
2879 1.1 fvdl */
2880 1.1 fvdl register FLEXDATA {
2881 1.1 fvdl address 0x0B6
2882 1.1 fvdl access_mode RW
2883 1.1 fvdl modes M_SCSI
2884 1.1 fvdl }
2885 1.1 fvdl
2886 1.1 fvdl /*
2887 1.1 fvdl * Board Data
2888 1.1 fvdl */
2889 1.1 fvdl register BRDDAT {
2890 1.1 fvdl address 0x0B8
2891 1.1 fvdl access_mode RW
2892 1.1 fvdl modes M_SCSI
2893 1.1 fvdl }
2894 1.1 fvdl
2895 1.1 fvdl /*
2896 1.1 fvdl * Board Control
2897 1.1 fvdl */
2898 1.1 fvdl register BRDCTL {
2899 1.1 fvdl address 0x0B9
2900 1.1 fvdl access_mode RW
2901 1.1 fvdl modes M_SCSI
2902 1.1 fvdl field FLXARBACK 0x80
2903 1.1 fvdl field FLXARBREQ 0x40
2904 1.1 fvdl field BRDADDR 0x38
2905 1.1 fvdl field BRDEN 0x04
2906 1.1 fvdl field BRDRW 0x02
2907 1.1 fvdl field BRDSTB 0x01
2908 1.1 fvdl }
2909 1.1 fvdl
2910 1.1 fvdl /*
2911 1.1 fvdl * Serial EEPROM Address
2912 1.1 fvdl */
2913 1.1 fvdl register SEEADR {
2914 1.1 fvdl address 0x0BA
2915 1.1 fvdl access_mode RW
2916 1.1 fvdl modes M_SCSI
2917 1.1 fvdl }
2918 1.1 fvdl
2919 1.1 fvdl /*
2920 1.1 fvdl * Serial EEPROM Data
2921 1.1 fvdl */
2922 1.1 fvdl register SEEDAT {
2923 1.1 fvdl address 0x0BC
2924 1.1 fvdl access_mode RW
2925 1.1 fvdl size 2
2926 1.1 fvdl modes M_SCSI
2927 1.1 fvdl }
2928 1.1 fvdl
2929 1.1 fvdl /*
2930 1.1 fvdl * Serial EEPROM Status
2931 1.1 fvdl */
2932 1.1 fvdl register SEESTAT {
2933 1.1 fvdl address 0x0BE
2934 1.1 fvdl access_mode RO
2935 1.1 fvdl modes M_SCSI
2936 1.1 fvdl field INIT_DONE 0x80
2937 1.1 fvdl field SEEOPCODE 0x70
2938 1.1 fvdl field LDALTID_L 0x08
2939 1.1 fvdl field SEEARBACK 0x04
2940 1.1 fvdl field SEEBUSY 0x02
2941 1.1 fvdl field SEESTART 0x01
2942 1.1 fvdl }
2943 1.1 fvdl
2944 1.1 fvdl /*
2945 1.1 fvdl * Serial EEPROM Control
2946 1.1 fvdl */
2947 1.1 fvdl register SEECTL {
2948 1.1 fvdl address 0x0BE
2949 1.1 fvdl access_mode RW
2950 1.1 fvdl modes M_SCSI
2951 1.1 fvdl field SEEOPCODE 0x70 {
2952 1.1 fvdl SEEOP_ERASE 0x70,
2953 1.1 fvdl SEEOP_READ 0x60,
2954 1.1 fvdl SEEOP_WRITE 0x50,
2955 1.1 fvdl /*
2956 1.1 fvdl * The following four commands use special
2957 1.1 fvdl * addresses for differentiation.
2958 1.1 fvdl */
2959 1.1 fvdl SEEOP_ERAL 0x40
2960 1.1 fvdl }
2961 1.1 fvdl mask SEEOP_EWEN 0x40
2962 1.1 fvdl mask SEEOP_WALL 0x40
2963 1.1 fvdl mask SEEOP_EWDS 0x40
2964 1.1 fvdl field SEERST 0x02
2965 1.1 fvdl field SEESTART 0x01
2966 1.1 fvdl }
2967 1.1 fvdl
2968 1.1 fvdl const SEEOP_ERAL_ADDR 0x80
2969 1.1 fvdl const SEEOP_EWEN_ADDR 0xC0
2970 1.1 fvdl const SEEOP_WRAL_ADDR 0x40
2971 1.1 fvdl const SEEOP_EWDS_ADDR 0x00
2972 1.1 fvdl
2973 1.1 fvdl /*
2974 1.1 fvdl * SCB Counter
2975 1.1 fvdl */
2976 1.1 fvdl register SCBCNT {
2977 1.1 fvdl address 0x0BF
2978 1.1 fvdl access_mode RW
2979 1.1 fvdl modes M_SCSI
2980 1.1 fvdl }
2981 1.1 fvdl
2982 1.1 fvdl /*
2983 1.1 fvdl * Data FIFO Write Address
2984 1.1 fvdl * Pointer to the next QWD location to be written to the data FIFO.
2985 1.1 fvdl */
2986 1.1 fvdl register DFWADDR {
2987 1.1 fvdl address 0x0C0
2988 1.1 fvdl access_mode RW
2989 1.1 fvdl size 2
2990 1.1 fvdl modes M_DFF0, M_DFF1
2991 1.1 fvdl }
2992 1.1 fvdl
2993 1.1 fvdl /*
2994 1.1 fvdl * DSP Filter Control
2995 1.1 fvdl */
2996 1.1 fvdl register DSPFLTRCTL {
2997 1.1 fvdl address 0x0C0
2998 1.1 fvdl access_mode RW
2999 1.1 fvdl modes M_CFG
3000 1.1 fvdl field FLTRDISABLE 0x20
3001 1.1 fvdl field EDGESENSE 0x10
3002 1.1 fvdl field DSPFCNTSEL 0x0F
3003 1.1 fvdl }
3004 1.1 fvdl
3005 1.1 fvdl /*
3006 1.1 fvdl * DSP Data Channel Control
3007 1.1 fvdl */
3008 1.1 fvdl register DSPDATACTL {
3009 1.1 fvdl address 0x0C1
3010 1.1 fvdl access_mode RW
3011 1.1 fvdl modes M_CFG
3012 1.1 fvdl field BYPASSENAB 0x80
3013 1.1 fvdl field DESQDIS 0x10
3014 1.1 fvdl field RCVROFFSTDIS 0x04
3015 1.1 fvdl field XMITOFFSTDIS 0x02
3016 1.1 fvdl }
3017 1.1 fvdl
3018 1.1 fvdl /*
3019 1.1 fvdl * Data FIFO Read Address
3020 1.1 fvdl * Pointer to the next QWD location to be read from the data FIFO.
3021 1.1 fvdl */
3022 1.1 fvdl register DFRADDR {
3023 1.1 fvdl address 0x0C2
3024 1.1 fvdl access_mode RW
3025 1.1 fvdl size 2
3026 1.1 fvdl modes M_DFF0, M_DFF1
3027 1.1 fvdl }
3028 1.1 fvdl
3029 1.1 fvdl /*
3030 1.1 fvdl * DSP REQ Control
3031 1.1 fvdl */
3032 1.1 fvdl register DSPREQCTL {
3033 1.1 fvdl address 0x0C2
3034 1.1 fvdl access_mode RW
3035 1.1 fvdl modes M_CFG
3036 1.1 fvdl field MANREQCTL 0xC0
3037 1.1 fvdl field MANREQDLY 0x3F
3038 1.1 fvdl }
3039 1.1 fvdl
3040 1.1 fvdl /*
3041 1.1 fvdl * DSP ACK Control
3042 1.1 fvdl */
3043 1.1 fvdl register DSPACKCTL {
3044 1.1 fvdl address 0x0C3
3045 1.1 fvdl access_mode RW
3046 1.1 fvdl modes M_CFG
3047 1.1 fvdl field MANACKCTL 0xC0
3048 1.1 fvdl field MANACKDLY 0x3F
3049 1.1 fvdl }
3050 1.1 fvdl
3051 1.1 fvdl /*
3052 1.1 fvdl * Data FIFO Data
3053 1.1 fvdl * Read/Write byte port into the data FIFO. The read and write
3054 1.1 fvdl * FIFO pointers increment with each read and write respectively
3055 1.1 fvdl * to this port.
3056 1.1 fvdl */
3057 1.1 fvdl register DFDAT {
3058 1.1 fvdl address 0x0C4
3059 1.1 fvdl access_mode RW
3060 1.1 fvdl modes M_DFF0, M_DFF1
3061 1.1 fvdl }
3062 1.1 fvdl
3063 1.1 fvdl /*
3064 1.1 fvdl * DSP Channel Select
3065 1.1 fvdl */
3066 1.1 fvdl register DSPSELECT {
3067 1.1 fvdl address 0x0C4
3068 1.1 fvdl access_mode RW
3069 1.1 fvdl modes M_CFG
3070 1.1 fvdl field AUTOINCEN 0x80
3071 1.1 fvdl field DSPSEL 0x1F
3072 1.1 fvdl }
3073 1.1 fvdl
3074 1.1 fvdl const NUMDSPS 0x14
3075 1.1 fvdl
3076 1.1 fvdl /*
3077 1.1 fvdl * Write Bias Control
3078 1.1 fvdl */
3079 1.1 fvdl register WRTBIASCTL {
3080 1.1 fvdl address 0x0C5
3081 1.1 fvdl access_mode WO
3082 1.1 fvdl modes M_CFG
3083 1.1 fvdl field AUTOXBCDIS 0x80
3084 1.1 fvdl field XMITMANVAL 0x3F
3085 1.1 fvdl }
3086 1.1 fvdl
3087 1.1 fvdl /*
3088 1.1 fvdl * Currently the WRTBIASCTL is the same as the default.
3089 1.1 fvdl */
3090 1.1 fvdl const WRTBIASCTL_HP_DEFAULT 0x0
3091 1.1 fvdl
3092 1.1 fvdl /*
3093 1.1 fvdl * Receiver Bias Control
3094 1.1 fvdl */
3095 1.1 fvdl register RCVRBIOSCTL {
3096 1.1 fvdl address 0x0C6
3097 1.1 fvdl access_mode WO
3098 1.1 fvdl modes M_CFG
3099 1.1 fvdl field AUTORBCDIS 0x80
3100 1.1 fvdl field RCVRMANVAL 0x3F
3101 1.1 fvdl }
3102 1.1 fvdl
3103 1.1 fvdl /*
3104 1.1 fvdl * Write Bias Calculator
3105 1.1 fvdl */
3106 1.1 fvdl register WRTBIASCALC {
3107 1.1 fvdl address 0x0C7
3108 1.1 fvdl access_mode RO
3109 1.1 fvdl modes M_CFG
3110 1.1 fvdl }
3111 1.1 fvdl
3112 1.1 fvdl /*
3113 1.1 fvdl * Data FIFO Pointers
3114 1.1 fvdl * Contains the byte offset from DFWADDR and DWRADDR to the current
3115 1.1 fvdl * FIFO write/read locations.
3116 1.1 fvdl */
3117 1.1 fvdl register DFPTRS {
3118 1.1 fvdl address 0x0C8
3119 1.1 fvdl access_mode RW
3120 1.1 fvdl modes M_DFF0, M_DFF1
3121 1.1 fvdl }
3122 1.1 fvdl
3123 1.1 fvdl /*
3124 1.1 fvdl * Receiver Bias Calculator
3125 1.1 fvdl */
3126 1.1 fvdl register RCVRBIASCALC {
3127 1.1 fvdl address 0x0C8
3128 1.1 fvdl access_mode RO
3129 1.1 fvdl modes M_CFG
3130 1.1 fvdl }
3131 1.1 fvdl
3132 1.1 fvdl /*
3133 1.1 fvdl * Data FIFO Backup Read Pointer
3134 1.1 fvdl * Contains the data FIFO address to be restored if the last
3135 1.1 fvdl * data accessed from the data FIFO was not transferred successfully.
3136 1.1 fvdl */
3137 1.1 fvdl register DFBKPTR {
3138 1.1 fvdl address 0x0C9
3139 1.1 fvdl access_mode RW
3140 1.1 fvdl size 2
3141 1.1 fvdl modes M_DFF0, M_DFF1
3142 1.1 fvdl }
3143 1.1 fvdl
3144 1.1 fvdl /*
3145 1.1 fvdl * Skew Calculator
3146 1.1 fvdl */
3147 1.1 fvdl register SKEWCALC {
3148 1.1 fvdl address 0x0C9
3149 1.1 fvdl access_mode RO
3150 1.1 fvdl modes M_CFG
3151 1.1 fvdl }
3152 1.1 fvdl
3153 1.1 fvdl /*
3154 1.1 fvdl * Data FIFO Debug Control
3155 1.1 fvdl */
3156 1.1 fvdl register DFDBCTL {
3157 1.1 fvdl address 0x0CB
3158 1.1 fvdl access_mode RW
3159 1.1 fvdl modes M_DFF0, M_DFF1
3160 1.1 fvdl field DFF_CIO_WR_RDY 0x20
3161 1.1 fvdl field DFF_CIO_RD_RDY 0x10
3162 1.1 fvdl field DFF_DIR_ERR 0x08
3163 1.1 fvdl field DFF_RAMBIST_FAIL 0x04
3164 1.1 fvdl field DFF_RAMBIST_DONE 0x02
3165 1.1 fvdl field DFF_RAMBIST_EN 0x01
3166 1.1 fvdl }
3167 1.1 fvdl
3168 1.1 fvdl /*
3169 1.1 fvdl * Data FIFO Space Count
3170 1.1 fvdl * Number of FIFO locations that are free.
3171 1.1 fvdl */
3172 1.1 fvdl register DFSCNT {
3173 1.1 fvdl address 0x0CC
3174 1.1 fvdl access_mode RO
3175 1.1 fvdl size 2
3176 1.1 fvdl modes M_DFF0, M_DFF1
3177 1.1 fvdl }
3178 1.1 fvdl
3179 1.1 fvdl /*
3180 1.1 fvdl * Data FIFO Byte Count
3181 1.1 fvdl * Number of filled FIFO locations.
3182 1.1 fvdl */
3183 1.1 fvdl register DFBCNT {
3184 1.1 fvdl address 0x0CE
3185 1.1 fvdl access_mode RO
3186 1.1 fvdl size 2
3187 1.1 fvdl modes M_DFF0, M_DFF1
3188 1.1 fvdl }
3189 1.1 fvdl
3190 1.1 fvdl /*
3191 1.1 fvdl * Sequencer Program Overlay Address.
3192 1.1 fvdl * Low address must be written prior to high address.
3193 1.1 fvdl */
3194 1.1 fvdl register OVLYADDR {
3195 1.1 fvdl address 0x0D4
3196 1.1 fvdl modes M_SCSI
3197 1.1 fvdl size 2
3198 1.1 fvdl access_mode RW
3199 1.1 fvdl }
3200 1.1 fvdl
3201 1.1 fvdl /*
3202 1.1 fvdl * Sequencer Control 0
3203 1.1 fvdl * Error detection mode, speed configuration,
3204 1.1 fvdl * single step, breakpoints and program load.
3205 1.1 fvdl */
3206 1.1 fvdl register SEQCTL0 {
3207 1.1 fvdl address 0x0D6
3208 1.1 fvdl access_mode RW
3209 1.1 fvdl field PERRORDIS 0x80
3210 1.1 fvdl field PAUSEDIS 0x40
3211 1.1 fvdl field FAILDIS 0x20
3212 1.1 fvdl field FASTMODE 0x10
3213 1.1 fvdl field BRKADRINTEN 0x08
3214 1.1 fvdl field STEP 0x04
3215 1.1 fvdl field SEQRESET 0x02
3216 1.1 fvdl field LOADRAM 0x01
3217 1.1 fvdl }
3218 1.1 fvdl
3219 1.1 fvdl /*
3220 1.1 fvdl * Sequencer Control 1
3221 1.1 fvdl * Instruction RAM Diagnostics
3222 1.1 fvdl */
3223 1.1 fvdl register SEQCTL1 {
3224 1.1 fvdl address 0x0D7
3225 1.1 fvdl access_mode RW
3226 1.1 fvdl field OVRLAY_DATA_CHK 0x08
3227 1.1 fvdl field RAMBIST_DONE 0x04
3228 1.1 fvdl field RAMBIST_FAIL 0x02
3229 1.1 fvdl field RAMBIST_EN 0x01
3230 1.1 fvdl }
3231 1.1 fvdl
3232 1.1 fvdl /*
3233 1.1 fvdl * Sequencer Flags
3234 1.1 fvdl * Zero and Carry state of the ALU.
3235 1.1 fvdl */
3236 1.1 fvdl register FLAGS {
3237 1.1 fvdl address 0x0D8
3238 1.1 fvdl access_mode RO
3239 1.1 fvdl field ZERO 0x02
3240 1.1 fvdl field CARRY 0x01
3241 1.1 fvdl }
3242 1.1 fvdl
3243 1.1 fvdl /*
3244 1.1 fvdl * Sequencer Interrupt Control
3245 1.1 fvdl */
3246 1.1 fvdl register SEQINTCTL {
3247 1.1 fvdl address 0x0D9
3248 1.1 fvdl access_mode RW
3249 1.1 fvdl field INTVEC1DSL 0x80
3250 1.1 fvdl field INT1_CONTEXT 0x20
3251 1.1 fvdl field SCS_SEQ_INT1M1 0x10
3252 1.1 fvdl field SCS_SEQ_INT1M0 0x08
3253 1.1 fvdl field INTMASK2 0x04
3254 1.1 fvdl field INTMASK1 0x02
3255 1.1 fvdl field IRET 0x01
3256 1.1 fvdl }
3257 1.1 fvdl
3258 1.1 fvdl /*
3259 1.1 fvdl * Sequencer RAM Data Port
3260 1.1 fvdl * Single byte window into the Sequencer Instruction Ram area starting
3261 1.1 fvdl * at the address specified by OVLYADDR. To write a full instruction word,
3262 1.1 fvdl * simply write four bytes in succession. OVLYADDR will increment after the
3263 1.1 fvdl * most significant instrution byte (the byte with the parity bit) is written.
3264 1.1 fvdl */
3265 1.1 fvdl register SEQRAM {
3266 1.1 fvdl address 0x0DA
3267 1.1 fvdl access_mode RW
3268 1.1 fvdl }
3269 1.1 fvdl
3270 1.1 fvdl /*
3271 1.1 fvdl * Sequencer Program Counter
3272 1.1 fvdl * Low byte must be written prior to high byte.
3273 1.1 fvdl */
3274 1.1 fvdl register PRGMCNT {
3275 1.1 fvdl address 0x0DE
3276 1.1 fvdl access_mode RW
3277 1.1 fvdl size 2
3278 1.1 fvdl }
3279 1.1 fvdl
3280 1.1 fvdl /*
3281 1.1 fvdl * Accumulator
3282 1.1 fvdl */
3283 1.1 fvdl register ACCUM {
3284 1.1 fvdl address 0x0E0
3285 1.1 fvdl access_mode RW
3286 1.1 fvdl accumulator
3287 1.1 fvdl }
3288 1.1 fvdl
3289 1.1 fvdl /*
3290 1.1 fvdl * Source Index Register
3291 1.1 fvdl * Incrementing index for reads of SINDIR and the destination (low byte only)
3292 1.1 fvdl * for any immediate operands passed in jmp, jc, jnc, call instructions.
3293 1.1 fvdl * Example:
3294 1.1 fvdl * mvi 0xFF call some_routine;
3295 1.1 fvdl *
3296 1.1 fvdl * Will set SINDEX[0] to 0xFF and call the routine "some_routine.
3297 1.1 fvdl */
3298 1.1 fvdl register SINDEX {
3299 1.1 fvdl address 0x0E2
3300 1.1 fvdl access_mode RW
3301 1.1 fvdl size 2
3302 1.1 fvdl sindex
3303 1.1 fvdl }
3304 1.1 fvdl
3305 1.1 fvdl /*
3306 1.1 fvdl * Destination Index Register
3307 1.1 fvdl * Incrementing index for writes to DINDIR. Can be used as a scratch register.
3308 1.1 fvdl */
3309 1.1 fvdl register DINDEX {
3310 1.1 fvdl address 0x0E4
3311 1.1 fvdl access_mode RW
3312 1.1 fvdl size 2
3313 1.1 fvdl }
3314 1.1 fvdl
3315 1.1 fvdl /*
3316 1.1 fvdl * Break Address
3317 1.1 fvdl * Sequencer instruction breakpoint address address.
3318 1.1 fvdl */
3319 1.1 fvdl register BRKADDR0 {
3320 1.1 fvdl address 0x0E6
3321 1.1 fvdl access_mode RW
3322 1.1 fvdl }
3323 1.1 fvdl
3324 1.1 fvdl register BRKADDR1 {
3325 1.1 fvdl address 0x0E6
3326 1.1 fvdl access_mode RW
3327 1.1 fvdl field BRKDIS 0x80 /* Disable Breakpoint */
3328 1.1 fvdl }
3329 1.1 fvdl
3330 1.1 fvdl /*
3331 1.1 fvdl * All Ones
3332 1.1 fvdl * All reads to this register return the value 0xFF.
3333 1.1 fvdl */
3334 1.1 fvdl register ALLONES {
3335 1.1 fvdl address 0x0E8
3336 1.1 fvdl access_mode RO
3337 1.1 fvdl allones
3338 1.1 fvdl }
3339 1.1 fvdl
3340 1.1 fvdl /*
3341 1.1 fvdl * All Zeros
3342 1.1 fvdl * All reads to this register return the value 0.
3343 1.1 fvdl */
3344 1.1 fvdl register ALLZEROS {
3345 1.1 fvdl address 0x0EA
3346 1.1 fvdl access_mode RO
3347 1.1 fvdl allzeros
3348 1.1 fvdl }
3349 1.1 fvdl
3350 1.1 fvdl /*
3351 1.1 fvdl * No Destination
3352 1.1 fvdl * Writes to this register have no effect.
3353 1.1 fvdl */
3354 1.1 fvdl register NONE {
3355 1.1 fvdl address 0x0EA
3356 1.1 fvdl access_mode WO
3357 1.1 fvdl none
3358 1.1 fvdl }
3359 1.1 fvdl
3360 1.1 fvdl /*
3361 1.1 fvdl * Source Index Indirect
3362 1.1 fvdl * Reading this register is equivalent to reading (register_base + SINDEX) and
3363 1.1 fvdl * incrementing SINDEX by 1.
3364 1.1 fvdl */
3365 1.1 fvdl register SINDIR {
3366 1.1 fvdl address 0x0EC
3367 1.1 fvdl access_mode RO
3368 1.1 fvdl }
3369 1.1 fvdl
3370 1.1 fvdl /*
3371 1.1 fvdl * Destination Index Indirect
3372 1.1 fvdl * Writing this register is equivalent to writing to (register_base + DINDEX)
3373 1.1 fvdl * and incrementing DINDEX by 1.
3374 1.1 fvdl */
3375 1.1 fvdl register DINDIR {
3376 1.1 fvdl address 0x0ED
3377 1.1 fvdl access_mode WO
3378 1.1 fvdl }
3379 1.1 fvdl
3380 1.1 fvdl /*
3381 1.1 fvdl * Function One
3382 1.1 fvdl * 2's complement to bit value conversion. Write the 2's complement value
3383 1.1 fvdl * (0-7 only) to the top nibble and retrieve the bit indexed by that value
3384 1.1 fvdl * on the next read of this register.
3385 1.1 fvdl * Example:
3386 1.1 fvdl * Write 0x60
3387 1.1 fvdl * Read 0x40
3388 1.1 fvdl */
3389 1.1 fvdl register FUNCTION1 {
3390 1.1 fvdl address 0x0F0
3391 1.1 fvdl access_mode RW
3392 1.1 fvdl }
3393 1.1 fvdl
3394 1.1 fvdl /*
3395 1.1 fvdl * Stack
3396 1.1 fvdl * Window into the stack. Each stack location is 10 bits wide reported
3397 1.1 fvdl * low byte followed by high byte. There are 8 stack locations.
3398 1.1 fvdl */
3399 1.1 fvdl register STACK {
3400 1.1 fvdl address 0x0F2
3401 1.1 fvdl access_mode RW
3402 1.1 fvdl }
3403 1.1 fvdl
3404 1.1 fvdl /*
3405 1.1 fvdl * Interrupt Vector 1 Address
3406 1.1 fvdl * Interrupt branch address for SCS SEQ_INT1 mode 0 and 1 interrupts.
3407 1.1 fvdl */
3408 1.1 fvdl register INTVEC1_ADDR {
3409 1.1 fvdl address 0x0F4
3410 1.1 fvdl access_mode RW
3411 1.1 fvdl size 2
3412 1.1 fvdl modes M_CFG
3413 1.1 fvdl }
3414 1.1 fvdl
3415 1.1 fvdl /*
3416 1.1 fvdl * Current Address
3417 1.1 fvdl * Address of the SEQRAM instruction currently executing instruction.
3418 1.1 fvdl */
3419 1.1 fvdl register CURADDR {
3420 1.1 fvdl address 0x0F4
3421 1.1 fvdl access_mode RW
3422 1.1 fvdl size 2
3423 1.1 fvdl modes M_SCSI
3424 1.1 fvdl }
3425 1.1 fvdl
3426 1.1 fvdl /*
3427 1.1 fvdl * Interrupt Vector 2 Address
3428 1.1 fvdl * Interrupt branch address for HST_SEQ_INT2 interrupts.
3429 1.1 fvdl */
3430 1.1 fvdl register INTVEC2_ADDR {
3431 1.1 fvdl address 0x0F6
3432 1.1 fvdl access_mode RW
3433 1.1 fvdl size 2
3434 1.1 fvdl modes M_CFG
3435 1.1 fvdl }
3436 1.1 fvdl
3437 1.1 fvdl /*
3438 1.1 fvdl * Last Address
3439 1.1 fvdl * Address of the SEQRAM instruction executed prior to the current instruction.
3440 1.1 fvdl */
3441 1.1 fvdl register LASTADDR {
3442 1.1 fvdl address 0x0F6
3443 1.1 fvdl access_mode RW
3444 1.1 fvdl size 2
3445 1.1 fvdl modes M_SCSI
3446 1.1 fvdl }
3447 1.1 fvdl
3448 1.1 fvdl register AHD_PCI_CONFIG_BASE {
3449 1.1 fvdl address 0x100
3450 1.1 fvdl access_mode RW
3451 1.1 fvdl size 256
3452 1.1 fvdl modes M_CFG
3453 1.1 fvdl }
3454 1.1 fvdl
3455 1.1 fvdl /* ---------------------- Scratch RAM Offsets ------------------------- */
3456 1.1 fvdl scratch_ram {
3457 1.1 fvdl /* Mode Specific */
3458 1.1 fvdl address 0x0A0
3459 1.1 fvdl size 8
3460 1.1 fvdl modes 0, 1, 2, 3
3461 1.1 fvdl REG0 {
3462 1.1 fvdl size 2
3463 1.1 fvdl }
3464 1.1 fvdl REG1 {
3465 1.1 fvdl size 2
3466 1.1 fvdl }
3467 1.1 fvdl REG_ISR {
3468 1.1 fvdl size 2
3469 1.1 fvdl }
3470 1.1 fvdl SG_STATE {
3471 1.1 fvdl size 1
3472 1.1 fvdl field SEGS_AVAIL 0x01
3473 1.1 fvdl field LOADING_NEEDED 0x02
3474 1.1 fvdl field FETCH_INPROG 0x04
3475 1.1 fvdl }
3476 1.1 fvdl /*
3477 1.1 fvdl * Track whether the transfer byte count for
3478 1.1 fvdl * the current data phase is odd.
3479 1.1 fvdl */
3480 1.1 fvdl DATA_COUNT_ODD {
3481 1.1 fvdl size 1
3482 1.1 fvdl }
3483 1.1 fvdl }
3484 1.1 fvdl
3485 1.1 fvdl scratch_ram {
3486 1.1 fvdl /* Mode Specific */
3487 1.1 fvdl address 0x0F8
3488 1.1 fvdl size 8
3489 1.1 fvdl modes 0, 1, 2, 3
3490 1.1 fvdl LONGJMP_ADDR {
3491 1.1 fvdl size 2
3492 1.1 fvdl }
3493 1.1 fvdl ACCUM_SAVE {
3494 1.1 fvdl size 1
3495 1.1 fvdl }
3496 1.1 fvdl }
3497 1.1 fvdl
3498 1.1 fvdl
3499 1.1 fvdl scratch_ram {
3500 1.1 fvdl address 0x100
3501 1.1 fvdl size 128
3502 1.1 fvdl modes 0, 1, 2, 3
3503 1.1 fvdl /*
3504 1.1 fvdl * Per "other-id" execution queues. We use an array of
3505 1.1 fvdl * tail pointers into lists of SCBs sorted by "other-id".
3506 1.1 fvdl * The execution head pointer threads the head SCBs for
3507 1.1 fvdl * each list.
3508 1.1 fvdl */
3509 1.1 fvdl WAITING_SCB_TAILS {
3510 1.1 fvdl size 32
3511 1.1 fvdl }
3512 1.1 fvdl WAITING_TID_HEAD {
3513 1.1 fvdl size 2
3514 1.1 fvdl }
3515 1.1 fvdl WAITING_TID_TAIL {
3516 1.1 fvdl size 2
3517 1.1 fvdl }
3518 1.1 fvdl /*
3519 1.1 fvdl * SCBID of the next SCB in the new SCB queue.
3520 1.1 fvdl */
3521 1.1 fvdl NEXT_QUEUED_SCB_ADDR {
3522 1.1 fvdl size 4
3523 1.1 fvdl }
3524 1.1 fvdl /*
3525 1.1 fvdl * head of list of SCBs that have
3526 1.1 fvdl * completed but have not been
3527 1.1 fvdl * put into the qoutfifo.
3528 1.1 fvdl */
3529 1.1 fvdl COMPLETE_SCB_HEAD {
3530 1.1 fvdl size 2
3531 1.1 fvdl }
3532 1.1 fvdl /*
3533 1.1 fvdl * The list of completed SCBs in
3534 1.1 fvdl * the active DMA.
3535 1.1 fvdl */
3536 1.1 fvdl COMPLETE_SCB_DMAINPROG_HEAD {
3537 1.1 fvdl size 2
3538 1.1 fvdl }
3539 1.1 fvdl /*
3540 1.1 fvdl * head of list of SCBs that have
3541 1.1 fvdl * completed but need to be uploaded
3542 1.1 fvdl * to the host prior to being completed.
3543 1.1 fvdl */
3544 1.1 fvdl COMPLETE_DMA_SCB_HEAD {
3545 1.1 fvdl size 2
3546 1.1 fvdl }
3547 1.1 fvdl /* Counting semaphore to prevent new select-outs */
3548 1.1 fvdl QFREEZE_COUNT {
3549 1.1 fvdl size 2
3550 1.1 fvdl }
3551 1.1 fvdl /*
3552 1.1 fvdl * Mode to restore on legacy idle loop exit.
3553 1.1 fvdl */
3554 1.1 fvdl SAVED_MODE {
3555 1.1 fvdl size 1
3556 1.1 fvdl }
3557 1.1 fvdl /*
3558 1.1 fvdl * Single byte buffer used to designate the type or message
3559 1.1 fvdl * to send to a target.
3560 1.1 fvdl */
3561 1.1 fvdl MSG_OUT {
3562 1.1 fvdl size 1
3563 1.1 fvdl }
3564 1.1 fvdl /* Parameters for DMA Logic */
3565 1.1 fvdl DMAPARAMS {
3566 1.1 fvdl size 1
3567 1.1 fvdl field PRELOADEN 0x80
3568 1.1 fvdl field WIDEODD 0x40
3569 1.1 fvdl field SCSIEN 0x20
3570 1.1 fvdl field SDMAEN 0x10
3571 1.1 fvdl field SDMAENACK 0x10
3572 1.1 fvdl field HDMAEN 0x08
3573 1.1 fvdl field HDMAENACK 0x08
3574 1.1 fvdl field DIRECTION 0x04 /* Set indicates PCI->SCSI */
3575 1.1 fvdl field FIFOFLUSH 0x02
3576 1.1 fvdl field FIFORESET 0x01
3577 1.1 fvdl }
3578 1.1 fvdl SEQ_FLAGS {
3579 1.1 fvdl size 1
3580 1.1 fvdl field NOT_IDENTIFIED 0x80
3581 1.1 fvdl field NO_CDB_SENT 0x40
3582 1.1 fvdl field TARGET_CMD_IS_TAGGED 0x40
3583 1.1 fvdl field DPHASE 0x20
3584 1.1 fvdl /* Target flags */
3585 1.1 fvdl field TARG_CMD_PENDING 0x10
3586 1.1 fvdl field CMDPHASE_PENDING 0x08
3587 1.1 fvdl field DPHASE_PENDING 0x04
3588 1.1 fvdl field SPHASE_PENDING 0x02
3589 1.1 fvdl field NO_DISCONNECT 0x01
3590 1.1 fvdl }
3591 1.1 fvdl /*
3592 1.1 fvdl * Temporary storage for the
3593 1.1 fvdl * target/channel/lun of a
3594 1.1 fvdl * reconnecting target
3595 1.1 fvdl */
3596 1.1 fvdl SAVED_SCSIID {
3597 1.1 fvdl size 1
3598 1.1 fvdl }
3599 1.1 fvdl SAVED_LUN {
3600 1.1 fvdl size 1
3601 1.1 fvdl }
3602 1.1 fvdl /*
3603 1.1 fvdl * The last bus phase as seen by the sequencer.
3604 1.1 fvdl */
3605 1.1 fvdl LASTPHASE {
3606 1.1 fvdl size 1
3607 1.1 fvdl field CDI 0x80
3608 1.1 fvdl field IOI 0x40
3609 1.1 fvdl field MSGI 0x20
3610 1.1 fvdl field P_BUSFREE 0x01
3611 1.1 fvdl enum PHASE_MASK CDO|IOO|MSGO {
3612 1.1 fvdl P_DATAOUT 0x0,
3613 1.1 fvdl P_DATAIN IOO,
3614 1.1 fvdl P_DATAOUT_DT P_DATAOUT|MSGO,
3615 1.1 fvdl P_DATAIN_DT P_DATAIN|MSGO,
3616 1.1 fvdl P_COMMAND CDO,
3617 1.1 fvdl P_MESGOUT CDO|MSGO,
3618 1.1 fvdl P_STATUS CDO|IOO,
3619 1.1 fvdl P_MESGIN CDO|IOO|MSGO
3620 1.1 fvdl }
3621 1.1 fvdl }
3622 1.1 fvdl /*
3623 1.1 fvdl * Value to "or" into the SCBPTR[1] value to
3624 1.1 fvdl * indicate that an entry in the QINFIFO is valid.
3625 1.1 fvdl */
3626 1.1 fvdl QOUTFIFO_ENTRY_VALID_TAG {
3627 1.1 fvdl size 1
3628 1.1 fvdl }
3629 1.1 fvdl /*
3630 1.1 fvdl * Base address of our shared data with the kernel driver in host
3631 1.1 fvdl * memory. This includes the qoutfifo and target mode
3632 1.1 fvdl * incoming command queue.
3633 1.1 fvdl */
3634 1.1 fvdl SHARED_DATA_ADDR {
3635 1.1 fvdl size 4
3636 1.1 fvdl }
3637 1.1 fvdl /*
3638 1.1 fvdl * Pointer to location in host memory for next
3639 1.1 fvdl * position in the qoutfifo.
3640 1.1 fvdl */
3641 1.1 fvdl QOUTFIFO_NEXT_ADDR {
3642 1.1 fvdl size 4
3643 1.1 fvdl }
3644 1.1 fvdl /*
3645 1.1 fvdl * Kernel and sequencer offsets into the queue of
3646 1.1 fvdl * incoming target mode command descriptors. The
3647 1.1 fvdl * queue is full when the KERNEL_TQINPOS == TQINPOS.
3648 1.1 fvdl */
3649 1.1 fvdl KERNEL_TQINPOS {
3650 1.1 fvdl size 1
3651 1.1 fvdl }
3652 1.1 fvdl TQINPOS {
3653 1.1 fvdl size 1
3654 1.1 fvdl }
3655 1.1 fvdl ARG_1 {
3656 1.1 fvdl size 1
3657 1.1 fvdl mask SEND_MSG 0x80
3658 1.1 fvdl mask SEND_SENSE 0x40
3659 1.1 fvdl mask SEND_REJ 0x20
3660 1.1 fvdl mask MSGOUT_PHASEMIS 0x10
3661 1.1 fvdl mask EXIT_MSG_LOOP 0x08
3662 1.1 fvdl mask CONT_MSG_LOOP_WRITE 0x04
3663 1.1 fvdl mask CONT_MSG_LOOP_READ 0x03
3664 1.1 fvdl mask CONT_MSG_LOOP_TARG 0x02
3665 1.1 fvdl alias RETURN_1
3666 1.1 fvdl }
3667 1.1 fvdl ARG_2 {
3668 1.1 fvdl size 1
3669 1.1 fvdl alias RETURN_2
3670 1.1 fvdl }
3671 1.1 fvdl
3672 1.1 fvdl /*
3673 1.1 fvdl * Snapshot of MSG_OUT taken after each message is sent.
3674 1.1 fvdl */
3675 1.1 fvdl LAST_MSG {
3676 1.1 fvdl size 1
3677 1.1 fvdl }
3678 1.1 fvdl
3679 1.1 fvdl /*
3680 1.1 fvdl * Sequences the kernel driver has okayed for us. This allows
3681 1.1 fvdl * the driver to do things like prevent initiator or target
3682 1.1 fvdl * operations.
3683 1.1 fvdl */
3684 1.1 fvdl SCSISEQ_TEMPLATE {
3685 1.1 fvdl size 1
3686 1.1 fvdl field MANUALCTL 0x40
3687 1.1 fvdl field ENSELI 0x20
3688 1.1 fvdl field ENRSELI 0x10
3689 1.1 fvdl field MANUALP 0x0C
3690 1.1 fvdl field ENAUTOATNP 0x02
3691 1.1 fvdl field ALTSTIM 0x01
3692 1.1 fvdl }
3693 1.1 fvdl
3694 1.1 fvdl /*
3695 1.1 fvdl * The initiator specified tag for this target mode transaction.
3696 1.1 fvdl */
3697 1.1 fvdl INITIATOR_TAG {
3698 1.1 fvdl size 1
3699 1.1 fvdl }
3700 1.1 fvdl
3701 1.1 fvdl SEQ_FLAGS2 {
3702 1.1 fvdl size 1
3703 1.1 fvdl field TARGET_MSG_PENDING 0x02
3704 1.1 fvdl field SELECTOUT_QFROZEN 0x04
3705 1.1 fvdl }
3706 1.1 fvdl
3707 1.1 fvdl ALLOCFIFO_SCBPTR {
3708 1.1 fvdl size 2
3709 1.1 fvdl }
3710 1.1 fvdl
3711 1.1 fvdl /*
3712 1.3 wiz * The maximum amount of time to wait, when interrupt coalescing
3713 1.1 fvdl * is enabled, before issueing a CMDCMPLT interrupt for a completed
3714 1.1 fvdl * command.
3715 1.1 fvdl */
3716 1.3 wiz INT_COALESCING_TIMER {
3717 1.1 fvdl size 2
3718 1.1 fvdl }
3719 1.1 fvdl
3720 1.1 fvdl /*
3721 1.3 wiz * The maximum number of commands to coalesce into a single interrupt.
3722 1.1 fvdl * Actually the 2's complement of that value to simplify sequencer
3723 1.1 fvdl * code.
3724 1.1 fvdl */
3725 1.3 wiz INT_COALESCING_MAXCMDS {
3726 1.1 fvdl size 1
3727 1.1 fvdl }
3728 1.1 fvdl
3729 1.1 fvdl /*
3730 1.1 fvdl * The minimum number of commands still outstanding required
3731 1.3 wiz * to continue coalescing (2's complement of value).
3732 1.1 fvdl */
3733 1.3 wiz INT_COALESCING_MINCMDS {
3734 1.1 fvdl size 1
3735 1.1 fvdl }
3736 1.1 fvdl
3737 1.1 fvdl /*
3738 1.1 fvdl * Number of commands "in-flight".
3739 1.1 fvdl */
3740 1.1 fvdl CMDS_PENDING {
3741 1.1 fvdl size 2
3742 1.1 fvdl }
3743 1.1 fvdl
3744 1.1 fvdl /*
3745 1.3 wiz * The count of commands that have been coalesced.
3746 1.1 fvdl */
3747 1.3 wiz INT_COALESCING_CMDCOUNT {
3748 1.1 fvdl size 1
3749 1.1 fvdl }
3750 1.1 fvdl
3751 1.1 fvdl /*
3752 1.1 fvdl * Since the HS_MAIBOX is self clearing, copy its contents to
3753 1.1 fvdl * this position in scratch ram every time it changes.
3754 1.1 fvdl */
3755 1.1 fvdl LOCAL_HS_MAILBOX {
3756 1.1 fvdl size 1
3757 1.1 fvdl }
3758 1.1 fvdl /*
3759 1.1 fvdl * Target-mode CDB type to CDB length table used
3760 1.1 fvdl * in non-packetized operation.
3761 1.1 fvdl */
3762 1.1 fvdl CMDSIZE_TABLE {
3763 1.1 fvdl size 8
3764 1.1 fvdl }
3765 1.1 fvdl }
3766 1.1 fvdl
3767 1.1 fvdl /************************* Hardware SCB Definition ****************************/
3768 1.1 fvdl scb {
3769 1.1 fvdl address 0x180
3770 1.1 fvdl size 64
3771 1.1 fvdl modes 0, 1, 2, 3
3772 1.1 fvdl SCB_RESIDUAL_DATACNT {
3773 1.1 fvdl size 4
3774 1.1 fvdl alias SCB_CDB_STORE
3775 1.1 fvdl alias SCB_HOST_CDB_PTR
3776 1.1 fvdl }
3777 1.1 fvdl SCB_RESIDUAL_SGPTR {
3778 1.1 fvdl size 4
3779 1.1 fvdl field SG_ADDR_MASK 0xf8 /* In the last byte */
3780 1.1 fvdl field SG_OVERRUN_RESID 0x02 /* In the first byte */
3781 1.1 fvdl field SG_LIST_NULL 0x01 /* In the first byte */
3782 1.1 fvdl }
3783 1.1 fvdl SCB_SCSI_STATUS {
3784 1.1 fvdl size 1
3785 1.1 fvdl alias SCB_HOST_CDB_LEN
3786 1.1 fvdl }
3787 1.1 fvdl SCB_TARGET_PHASES {
3788 1.1 fvdl size 1
3789 1.1 fvdl }
3790 1.1 fvdl SCB_TARGET_DATA_DIR {
3791 1.1 fvdl size 1
3792 1.1 fvdl }
3793 1.1 fvdl SCB_TARGET_ITAG {
3794 1.1 fvdl size 1
3795 1.1 fvdl }
3796 1.1 fvdl SCB_SENSE_BUSADDR {
3797 1.1 fvdl /*
3798 1.1 fvdl * Only valid if CDB length is less than 13 bytes or
3799 1.1 fvdl * we are using a CDB pointer. Otherwise contains
3800 1.1 fvdl * the last 4 bytes of embedded cdb information.
3801 1.1 fvdl */
3802 1.1 fvdl size 4
3803 1.1 fvdl alias SCB_NEXT_COMPLETE
3804 1.1 fvdl }
3805 1.1 fvdl SCB_DATAPTR {
3806 1.1 fvdl size 8
3807 1.1 fvdl }
3808 1.1 fvdl SCB_DATACNT {
3809 1.1 fvdl /*
3810 1.1 fvdl * The last byte is really the high address bits for
3811 1.1 fvdl * the data address.
3812 1.1 fvdl */
3813 1.1 fvdl size 4
3814 1.1 fvdl field SG_LAST_SEG 0x80 /* In the fourth byte */
3815 1.1 fvdl field SG_HIGH_ADDR_BITS 0x7F /* In the fourth byte */
3816 1.1 fvdl }
3817 1.1 fvdl SCB_SGPTR {
3818 1.1 fvdl size 4
3819 1.1 fvdl field SG_STATUS_VALID 0x04 /* In the first byte */
3820 1.1 fvdl field SG_FULL_RESID 0x02 /* In the first byte */
3821 1.1 fvdl field SG_LIST_NULL 0x01 /* In the first byte */
3822 1.1 fvdl }
3823 1.4 thorpej SCB_BUSADDR {
3824 1.4 thorpej size 4
3825 1.4 thorpej }
3826 1.4 thorpej SCB_NEXT {
3827 1.4 thorpej alias SCB_NEXT_SCB_BUSADDR
3828 1.4 thorpej size 2
3829 1.4 thorpej }
3830 1.4 thorpej SCB_NEXT2 {
3831 1.4 thorpej size 2
3832 1.4 thorpej }
3833 1.1 fvdl SCB_CONTROL {
3834 1.1 fvdl size 1
3835 1.1 fvdl field TARGET_SCB 0x80
3836 1.1 fvdl field DISCENB 0x40
3837 1.1 fvdl field TAG_ENB 0x20
3838 1.1 fvdl field MK_MESSAGE 0x10
3839 1.1 fvdl field STATUS_RCVD 0x08
3840 1.1 fvdl field DISCONNECTED 0x04
3841 1.1 fvdl field SCB_TAG_TYPE 0x03
3842 1.1 fvdl }
3843 1.1 fvdl SCB_SCSIID {
3844 1.1 fvdl size 1
3845 1.1 fvdl field TID 0xF0
3846 1.1 fvdl field OID 0x0F
3847 1.1 fvdl }
3848 1.1 fvdl SCB_LUN {
3849 1.1 fvdl size 1
3850 1.5 thorpej field LID 0xff
3851 1.1 fvdl }
3852 1.1 fvdl SCB_TASK_ATTRIBUTE {
3853 1.1 fvdl size 1
3854 1.5 thorpej /*
3855 1.5 thorpej * Overloaded field for non-packetized
3856 1.5 thorpej * ignore wide residue message handling.
3857 1.5 thorpej */
3858 1.5 thorpej field SCB_XFERLEN_ODD 0x01
3859 1.1 fvdl }
3860 1.4 thorpej SCB_CDB_LEN {
3861 1.4 thorpej size 1
3862 1.4 thorpej field SCB_CDB_LEN_PTR 0x80 /* CDB in host memory */
3863 1.4 thorpej }
3864 1.4 thorpej SCB_TASK_MANAGEMENT {
3865 1.4 thorpej size 1
3866 1.4 thorpej }
3867 1.4 thorpej SCB_TAG {
3868 1.4 thorpej alias SCB_FIFO_USE_COUNT
3869 1.4 thorpej size 2
3870 1.1 fvdl }
3871 1.1 fvdl SCB_SPARE {
3872 1.1 fvdl size 8
3873 1.1 fvdl alias SCB_PKT_LUN
3874 1.1 fvdl }
3875 1.1 fvdl SCB_DISCONNECTED_LISTS {
3876 1.1 fvdl size 8
3877 1.1 fvdl }
3878 1.1 fvdl }
3879 1.1 fvdl
3880 1.1 fvdl /*********************************** Constants ********************************/
3881 1.1 fvdl const MK_MESSAGE_BIT_OFFSET 4
3882 1.1 fvdl const TID_SHIFT 4
3883 1.1 fvdl const TARGET_CMD_CMPLT 0xfe
3884 1.1 fvdl const INVALID_ADDR 0x80
3885 1.1 fvdl #define SCB_LIST_NULL 0xff
3886 1.1 fvdl #define QOUTFIFO_ENTRY_VALID_TOGGLE 0x80
3887 1.1 fvdl
3888 1.1 fvdl const CCSGADDR_MAX 0x80
3889 1.1 fvdl const CCSCBADDR_MAX 0x80
3890 1.1 fvdl const CCSGRAM_MAXSEGS 16
3891 1.1 fvdl
3892 1.1 fvdl /* Selection Timeout Timer Constants */
3893 1.1 fvdl const STIMESEL_SHIFT 3
3894 1.1 fvdl const STIMESEL_MIN 0x18
3895 1.1 fvdl const STIMESEL_BUG_ADJ 0x8
3896 1.1 fvdl
3897 1.1 fvdl /* WDTR Message values */
3898 1.1 fvdl const BUS_8_BIT 0x00
3899 1.1 fvdl const BUS_16_BIT 0x01
3900 1.1 fvdl const BUS_32_BIT 0x02
3901 1.1 fvdl
3902 1.1 fvdl /* Offset maximums */
3903 1.1 fvdl const MAX_OFFSET 0xfe
3904 1.1 fvdl const MAX_OFFSET_PACED 0xfe
3905 1.1 fvdl const MAX_OFFSET_PACED_BUG 0x7f
3906 1.1 fvdl /*
3907 1.1 fvdl * Some 160 devices incorrectly accept 0xfe as a
3908 1.1 fvdl * sync offset, but will overrun this value. Limit
3909 1.1 fvdl * to 0x7f for speed lower than U320 which will
3910 1.1 fvdl * avoid the persistent sync offset overruns.
3911 1.1 fvdl */
3912 1.1 fvdl const MAX_OFFSET_NON_PACED 0x7f
3913 1.1 fvdl const HOST_MSG 0xff
3914 1.1 fvdl
3915 1.1 fvdl /*
3916 1.1 fvdl * The size of our sense buffers.
3917 1.1 fvdl * Sense buffer mapping can be handled in either of two ways.
3918 1.1 fvdl * The first is to allocate a dmamap for each transaction.
3919 1.1 fvdl * Depending on the architecture, dmamaps can be costly. The
3920 1.1 fvdl * alternative is to statically map the buffers in much the same
3921 1.1 fvdl * way we handle our scatter gather lists. The driver implements
3922 1.1 fvdl * the later.
3923 1.1 fvdl */
3924 1.1 fvdl const AHD_SENSE_BUFSIZE 256
3925 1.1 fvdl
3926 1.1 fvdl /* Target mode command processing constants */
3927 1.1 fvdl const CMD_GROUP_CODE_SHIFT 0x05
3928 1.1 fvdl
3929 1.1 fvdl const STATUS_BUSY 0x08
3930 1.1 fvdl const STATUS_QUEUE_FULL 0x28
3931 1.1 fvdl const STATUS_PKT_SENSE 0xFF
3932 1.1 fvdl const TARGET_DATA_IN 1
3933 1.1 fvdl
3934 1.1 fvdl const SCB_TRANSFER_SIZE_FULL_LUN 56
3935 1.1 fvdl const SCB_TRANSFER_SIZE_1BYTE_LUN 48
3936 1.1 fvdl /* PKT_OVERRUN_BUFSIZE must be a multiple of 256 less than 64K */
3937 1.1 fvdl const PKT_OVERRUN_BUFSIZE 512
3938 1.1 fvdl
3939 1.1 fvdl /*
3940 1.1 fvdl * Timer parameters.
3941 1.1 fvdl */
3942 1.1 fvdl const AHD_TIMER_US_PER_TICK 25
3943 1.1 fvdl const AHD_TIMER_MAX_TICKS 0xFFFF
3944 1.1 fvdl const AHD_TIMER_MAX_US (AHD_TIMER_MAX_TICKS * AHD_TIMER_US_PER_TICK)
3945 1.1 fvdl
3946 1.1 fvdl /*
3947 1.1 fvdl * Downloaded (kernel inserted) constants
3948 1.1 fvdl */
3949 1.1 fvdl const SG_PREFETCH_CNT download
3950 1.1 fvdl const SG_PREFETCH_CNT_LIMIT download
3951 1.1 fvdl const SG_PREFETCH_ALIGN_MASK download
3952 1.1 fvdl const SG_PREFETCH_ADDR_MASK download
3953 1.1 fvdl const SG_SIZEOF download
3954 1.1 fvdl const PKT_OVERRUN_BUFOFFSET download
3955 1.1 fvdl const SCB_TRANSFER_SIZE download
3956 1.1 fvdl
3957 1.1 fvdl /*
3958 1.1 fvdl * BIOS SCB offsets
3959 1.1 fvdl */
3960 1.1 fvdl const NVRAM_SCB_OFFSET 0x2C
3961