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