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