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