11da177e4SLinus Torvalds/* 21da177e4SLinus Torvalds * Aic79xx register and scratch ram definitions. 31da177e4SLinus Torvalds * 41da177e4SLinus Torvalds * Copyright (c) 1994-2001 Justin T. Gibbs. 51da177e4SLinus Torvalds * Copyright (c) 2000-2002 Adaptec Inc. 61da177e4SLinus Torvalds * All rights reserved. 71da177e4SLinus Torvalds * 81da177e4SLinus Torvalds * Redistribution and use in source and binary forms, with or without 91da177e4SLinus Torvalds * modification, are permitted provided that the following conditions 101da177e4SLinus Torvalds * are met: 111da177e4SLinus Torvalds * 1. Redistributions of source code must retain the above copyright 121da177e4SLinus Torvalds * notice, this list of conditions, and the following disclaimer, 131da177e4SLinus Torvalds * without modification. 141da177e4SLinus Torvalds * 2. Redistributions in binary form must reproduce at minimum a disclaimer 151da177e4SLinus Torvalds * substantially similar to the "NO WARRANTY" disclaimer below 161da177e4SLinus Torvalds * ("Disclaimer") and any redistribution must be conditioned upon 171da177e4SLinus Torvalds * including a substantially similar Disclaimer requirement for further 181da177e4SLinus Torvalds * binary redistribution. 191da177e4SLinus Torvalds * 3. Neither the names of the above-listed copyright holders nor the names 201da177e4SLinus Torvalds * of any contributors may be used to endorse or promote products derived 211da177e4SLinus Torvalds * from this software without specific prior written permission. 221da177e4SLinus Torvalds * 231da177e4SLinus Torvalds * Alternatively, this software may be distributed under the terms of the 241da177e4SLinus Torvalds * GNU General Public License ("GPL") version 2 as published by the Free 251da177e4SLinus Torvalds * Software Foundation. 261da177e4SLinus Torvalds * 271da177e4SLinus Torvalds * NO WARRANTY 281da177e4SLinus Torvalds * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 291da177e4SLinus Torvalds * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 301da177e4SLinus Torvalds * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 311da177e4SLinus Torvalds * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 321da177e4SLinus Torvalds * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 331da177e4SLinus Torvalds * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 341da177e4SLinus Torvalds * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 351da177e4SLinus Torvalds * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 361da177e4SLinus Torvalds * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 371da177e4SLinus Torvalds * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 381da177e4SLinus Torvalds * POSSIBILITY OF SUCH DAMAGES. 391da177e4SLinus Torvalds * 401da177e4SLinus Torvalds * $FreeBSD$ 411da177e4SLinus Torvalds */ 421da177e4SLinus TorvaldsVERSION = "$Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#70 $" 431da177e4SLinus Torvalds 441da177e4SLinus Torvalds/* 451da177e4SLinus Torvalds * This file is processed by the aic7xxx_asm utility for use in assembling 461da177e4SLinus Torvalds * firmware for the aic79xx family of SCSI host adapters as well as to generate 471da177e4SLinus Torvalds * a C header file for use in the kernel portion of the Aic79xx driver. 481da177e4SLinus Torvalds */ 491da177e4SLinus Torvalds 501da177e4SLinus Torvalds/* Register window Modes */ 511da177e4SLinus Torvalds#define M_DFF0 0 521da177e4SLinus Torvalds#define M_DFF1 1 531da177e4SLinus Torvalds#define M_CCHAN 2 541da177e4SLinus Torvalds#define M_SCSI 3 551da177e4SLinus Torvalds#define M_CFG 4 561da177e4SLinus Torvalds#define M_DST_SHIFT 4 571da177e4SLinus Torvalds 581da177e4SLinus Torvalds#define MK_MODE(src, dst) ((src) | ((dst) << M_DST_SHIFT)) 591da177e4SLinus Torvalds#define SET_MODE(src, dst) \ 601da177e4SLinus Torvalds SET_SRC_MODE src; \ 611da177e4SLinus Torvalds SET_DST_MODE dst; \ 621da177e4SLinus Torvalds if ((ahd->bugs & AHD_SET_MODE_BUG) != 0) { \ 631da177e4SLinus Torvalds mvi MK_MODE(src, dst) call set_mode_work_around; \ 641da177e4SLinus Torvalds } else { \ 651da177e4SLinus Torvalds mvi MODE_PTR, MK_MODE(src, dst); \ 661da177e4SLinus Torvalds } 671da177e4SLinus Torvalds 681da177e4SLinus Torvalds#define TOGGLE_DFF_MODE \ 691da177e4SLinus Torvalds if ((ahd->bugs & AHD_SET_MODE_BUG) != 0) { \ 701da177e4SLinus Torvalds call toggle_dff_mode_work_around; \ 711da177e4SLinus Torvalds } else { \ 721da177e4SLinus Torvalds xor MODE_PTR, MK_MODE(M_DFF1, M_DFF1); \ 731da177e4SLinus Torvalds } 741da177e4SLinus Torvalds 751da177e4SLinus Torvalds#define RESTORE_MODE(mode) \ 761da177e4SLinus Torvalds if ((ahd->bugs & AHD_SET_MODE_BUG) != 0) { \ 771da177e4SLinus Torvalds mov mode call set_mode_work_around; \ 781da177e4SLinus Torvalds } else { \ 791da177e4SLinus Torvalds mov MODE_PTR, mode; \ 801da177e4SLinus Torvalds } 811da177e4SLinus Torvalds 821da177e4SLinus Torvalds#define SET_SEQINTCODE(code) \ 831da177e4SLinus Torvalds if ((ahd->bugs & AHD_INTCOLLISION_BUG) != 0) { \ 841da177e4SLinus Torvalds mvi code call set_seqint_work_around; \ 851da177e4SLinus Torvalds } else { \ 861da177e4SLinus Torvalds mvi SEQINTCODE, code; \ 871da177e4SLinus Torvalds } 881da177e4SLinus Torvalds 891da177e4SLinus Torvalds/* 901da177e4SLinus Torvalds * Mode Pointer 911da177e4SLinus Torvalds * Controls which of the 5, 512byte, address spaces should be used 921da177e4SLinus Torvalds * as the source and destination of any register accesses in our 931da177e4SLinus Torvalds * register window. 941da177e4SLinus Torvalds */ 951da177e4SLinus Torvaldsregister MODE_PTR { 961da177e4SLinus Torvalds address 0x000 971da177e4SLinus Torvalds access_mode RW 981da177e4SLinus Torvalds field DST_MODE 0x70 991da177e4SLinus Torvalds field SRC_MODE 0x07 1001da177e4SLinus Torvalds mode_pointer 1011da177e4SLinus Torvalds} 1021da177e4SLinus Torvalds 1031da177e4SLinus Torvaldsconst SRC_MODE_SHIFT 0 1041da177e4SLinus Torvaldsconst DST_MODE_SHIFT 4 1051da177e4SLinus Torvalds 1061da177e4SLinus Torvalds/* 1071da177e4SLinus Torvalds * Host Interrupt Status 1081da177e4SLinus Torvalds */ 1091da177e4SLinus Torvaldsregister INTSTAT { 1101da177e4SLinus Torvalds address 0x001 1111da177e4SLinus Torvalds access_mode RW 1121da177e4SLinus Torvalds field HWERRINT 0x80 1131da177e4SLinus Torvalds field BRKADRINT 0x40 1141da177e4SLinus Torvalds field SWTMINT 0x20 1151da177e4SLinus Torvalds field PCIINT 0x10 1161da177e4SLinus Torvalds field SCSIINT 0x08 1171da177e4SLinus Torvalds field SEQINT 0x04 1181da177e4SLinus Torvalds field CMDCMPLT 0x02 1191da177e4SLinus Torvalds field SPLTINT 0x01 1201da177e4SLinus Torvalds mask INT_PEND 0xFF 1211da177e4SLinus Torvalds} 1221da177e4SLinus Torvalds 1231da177e4SLinus Torvalds/* 1241da177e4SLinus Torvalds * Sequencer Interrupt Code 1251da177e4SLinus Torvalds */ 1261da177e4SLinus Torvaldsregister SEQINTCODE { 1271da177e4SLinus Torvalds address 0x002 1281da177e4SLinus Torvalds access_mode RW 1291da177e4SLinus Torvalds field { 1301da177e4SLinus Torvalds NO_SEQINT, /* No seqint pending. */ 1311da177e4SLinus Torvalds BAD_PHASE, /* unknown scsi bus phase */ 1321da177e4SLinus Torvalds SEND_REJECT, /* sending a message reject */ 1331da177e4SLinus Torvalds PROTO_VIOLATION, /* Protocol Violation */ 1341da177e4SLinus Torvalds NO_MATCH, /* no cmd match for reconnect */ 1351da177e4SLinus Torvalds IGN_WIDE_RES, /* Complex IGN Wide Res Msg */ 1361da177e4SLinus Torvalds PDATA_REINIT, /* 1371da177e4SLinus Torvalds * Returned to data phase 1381da177e4SLinus Torvalds * that requires data 1391da177e4SLinus Torvalds * transfer pointers to be 1401da177e4SLinus Torvalds * recalculated from the 1411da177e4SLinus Torvalds * transfer residual. 1421da177e4SLinus Torvalds */ 1431da177e4SLinus Torvalds HOST_MSG_LOOP, /* 1441da177e4SLinus Torvalds * The bus is ready for the 1451da177e4SLinus Torvalds * host to perform another 1461da177e4SLinus Torvalds * message transaction. This 1471da177e4SLinus Torvalds * mechanism is used for things 1481da177e4SLinus Torvalds * like sync/wide negotiation 1491da177e4SLinus Torvalds * that require a kernel based 1501da177e4SLinus Torvalds * message state engine. 1511da177e4SLinus Torvalds */ 1521da177e4SLinus Torvalds BAD_STATUS, /* Bad status from target */ 1531da177e4SLinus Torvalds DATA_OVERRUN, /* 1541da177e4SLinus Torvalds * Target attempted to write 1551da177e4SLinus Torvalds * beyond the bounds of its 1561da177e4SLinus Torvalds * command. 1571da177e4SLinus Torvalds */ 1581da177e4SLinus Torvalds MKMSG_FAILED, /* 1591da177e4SLinus Torvalds * Target completed command 1601da177e4SLinus Torvalds * without honoring our ATN 1611da177e4SLinus Torvalds * request to issue a message. 1621da177e4SLinus Torvalds */ 1631da177e4SLinus Torvalds MISSED_BUSFREE, /* 1641da177e4SLinus Torvalds * The sequencer never saw 1651da177e4SLinus Torvalds * the bus go free after 1661da177e4SLinus Torvalds * either a command complete 1671da177e4SLinus Torvalds * or disconnect message. 1681da177e4SLinus Torvalds */ 1691da177e4SLinus Torvalds DUMP_CARD_STATE, 1701da177e4SLinus Torvalds ILLEGAL_PHASE, 1711da177e4SLinus Torvalds INVALID_SEQINT, 1721da177e4SLinus Torvalds CFG4ISTAT_INTR, 1731da177e4SLinus Torvalds STATUS_OVERRUN, 1741da177e4SLinus Torvalds CFG4OVERRUN, 1751da177e4SLinus Torvalds ENTERING_NONPACK, 1761da177e4SLinus Torvalds TASKMGMT_FUNC_COMPLETE, /* 1771da177e4SLinus Torvalds * Task management function 1781da177e4SLinus Torvalds * request completed with 1791da177e4SLinus Torvalds * an expected busfree. 1801da177e4SLinus Torvalds */ 1811da177e4SLinus Torvalds TASKMGMT_CMD_CMPLT_OKAY, /* 1821da177e4SLinus Torvalds * A command with a non-zero 1831da177e4SLinus Torvalds * task management function 1841da177e4SLinus Torvalds * has completed via the normal 1851da177e4SLinus Torvalds * command completion method 1861da177e4SLinus Torvalds * for commands with a zero 1871da177e4SLinus Torvalds * task management function. 1881da177e4SLinus Torvalds * This happens when an attempt 1891da177e4SLinus Torvalds * to abort a command loses 1901da177e4SLinus Torvalds * the race for the command to 1911da177e4SLinus Torvalds * complete normally. 1921da177e4SLinus Torvalds */ 1931da177e4SLinus Torvalds TRACEPOINT0, 1941da177e4SLinus Torvalds TRACEPOINT1, 1951da177e4SLinus Torvalds TRACEPOINT2, 1961da177e4SLinus Torvalds TRACEPOINT3, 1971da177e4SLinus Torvalds SAW_HWERR, 1981da177e4SLinus Torvalds BAD_SCB_STATUS 1991da177e4SLinus Torvalds } 2001da177e4SLinus Torvalds} 2011da177e4SLinus Torvalds 2021da177e4SLinus Torvalds/* 2031da177e4SLinus Torvalds * Clear Host Interrupt 2041da177e4SLinus Torvalds */ 2051da177e4SLinus Torvaldsregister CLRINT { 2061da177e4SLinus Torvalds address 0x003 2071da177e4SLinus Torvalds access_mode WO 2081da177e4SLinus Torvalds field CLRHWERRINT 0x80 /* Rev B or greater */ 2091da177e4SLinus Torvalds field CLRBRKADRINT 0x40 2101da177e4SLinus Torvalds field CLRSWTMINT 0x20 2111da177e4SLinus Torvalds field CLRPCIINT 0x10 2121da177e4SLinus Torvalds field CLRSCSIINT 0x08 2131da177e4SLinus Torvalds field CLRSEQINT 0x04 2141da177e4SLinus Torvalds field CLRCMDINT 0x02 2151da177e4SLinus Torvalds field CLRSPLTINT 0x01 2161da177e4SLinus Torvalds} 2171da177e4SLinus Torvalds 2181da177e4SLinus Torvalds/* 2191da177e4SLinus Torvalds * Error Register 2201da177e4SLinus Torvalds */ 2211da177e4SLinus Torvaldsregister ERROR { 2221da177e4SLinus Torvalds address 0x004 2231da177e4SLinus Torvalds access_mode RO 2241da177e4SLinus Torvalds field CIOPARERR 0x80 2251da177e4SLinus Torvalds field CIOACCESFAIL 0x40 /* Rev B or greater */ 2261da177e4SLinus Torvalds field MPARERR 0x20 2271da177e4SLinus Torvalds field DPARERR 0x10 2281da177e4SLinus Torvalds field SQPARERR 0x08 2291da177e4SLinus Torvalds field ILLOPCODE 0x04 2301da177e4SLinus Torvalds field DSCTMOUT 0x02 2311da177e4SLinus Torvalds} 2321da177e4SLinus Torvalds 2331da177e4SLinus Torvalds/* 2341da177e4SLinus Torvalds * Clear Error 2351da177e4SLinus Torvalds */ 2361da177e4SLinus Torvaldsregister CLRERR { 2371da177e4SLinus Torvalds address 0x004 2381da177e4SLinus Torvalds access_mode WO 2391da177e4SLinus Torvalds field CLRCIOPARERR 0x80 2401da177e4SLinus Torvalds field CLRCIOACCESFAIL 0x40 /* Rev B or greater */ 2411da177e4SLinus Torvalds field CLRMPARERR 0x20 2421da177e4SLinus Torvalds field CLRDPARERR 0x10 2431da177e4SLinus Torvalds field CLRSQPARERR 0x08 2441da177e4SLinus Torvalds field CLRILLOPCODE 0x04 2451da177e4SLinus Torvalds field CLRDSCTMOUT 0x02 2461da177e4SLinus Torvalds} 2471da177e4SLinus Torvalds 2481da177e4SLinus Torvalds/* 2491da177e4SLinus Torvalds * Host Control Register 2501da177e4SLinus Torvalds * Overall host control of the device. 2511da177e4SLinus Torvalds */ 2521da177e4SLinus Torvaldsregister HCNTRL { 2531da177e4SLinus Torvalds address 0x005 2541da177e4SLinus Torvalds access_mode RW 2551da177e4SLinus Torvalds field SEQ_RESET 0x80 /* Rev B or greater */ 2561da177e4SLinus Torvalds field POWRDN 0x40 2571da177e4SLinus Torvalds field SWINT 0x10 2581da177e4SLinus Torvalds field SWTIMER_START_B 0x08 /* Rev B or greater */ 2591da177e4SLinus Torvalds field PAUSE 0x04 2601da177e4SLinus Torvalds field INTEN 0x02 2611da177e4SLinus Torvalds field CHIPRST 0x01 2621da177e4SLinus Torvalds field CHIPRSTACK 0x01 2631da177e4SLinus Torvalds} 2641da177e4SLinus Torvalds 2651da177e4SLinus Torvalds/* 2661da177e4SLinus Torvalds * Host New SCB Queue Offset 2671da177e4SLinus Torvalds */ 2681da177e4SLinus Torvaldsregister HNSCB_QOFF { 2691da177e4SLinus Torvalds address 0x006 2701da177e4SLinus Torvalds access_mode RW 2711da177e4SLinus Torvalds size 2 2721da177e4SLinus Torvalds} 2731da177e4SLinus Torvalds 2741da177e4SLinus Torvalds/* 2751da177e4SLinus Torvalds * Host Empty SCB Queue Offset 2761da177e4SLinus Torvalds */ 2771da177e4SLinus Torvaldsregister HESCB_QOFF { 2781da177e4SLinus Torvalds address 0x008 2791da177e4SLinus Torvalds access_mode RW 2801da177e4SLinus Torvalds} 2811da177e4SLinus Torvalds 2821da177e4SLinus Torvalds/* 2831da177e4SLinus Torvalds * Host Mailbox 2841da177e4SLinus Torvalds */ 2851da177e4SLinus Torvaldsregister HS_MAILBOX { 2861da177e4SLinus Torvalds address 0x00B 2871da177e4SLinus Torvalds access_mode RW 2881da177e4SLinus Torvalds mask HOST_TQINPOS 0x80 /* Boundary at either 0 or 128 */ 2891da177e4SLinus Torvalds mask ENINT_COALESCE 0x40 /* Perform interrupt coalescing */ 2901da177e4SLinus Torvalds} 2911da177e4SLinus Torvalds 2921da177e4SLinus Torvalds/* 2931da177e4SLinus Torvalds * Sequencer Interupt Status 2941da177e4SLinus Torvalds */ 2951da177e4SLinus Torvaldsregister SEQINTSTAT { 2961da177e4SLinus Torvalds address 0x00C 2971da177e4SLinus Torvalds access_mode RO 2981da177e4SLinus Torvalds field SEQ_SWTMRTO 0x10 2991da177e4SLinus Torvalds field SEQ_SEQINT 0x08 3001da177e4SLinus Torvalds field SEQ_SCSIINT 0x04 3011da177e4SLinus Torvalds field SEQ_PCIINT 0x02 3021da177e4SLinus Torvalds field SEQ_SPLTINT 0x01 3031da177e4SLinus Torvalds} 3041da177e4SLinus Torvalds 3051da177e4SLinus Torvalds/* 3061da177e4SLinus Torvalds * Clear SEQ Interrupt 3071da177e4SLinus Torvalds */ 3081da177e4SLinus Torvaldsregister CLRSEQINTSTAT { 3091da177e4SLinus Torvalds address 0x00C 3101da177e4SLinus Torvalds access_mode WO 3111da177e4SLinus Torvalds field CLRSEQ_SWTMRTO 0x10 3121da177e4SLinus Torvalds field CLRSEQ_SEQINT 0x08 3131da177e4SLinus Torvalds field CLRSEQ_SCSIINT 0x04 3141da177e4SLinus Torvalds field CLRSEQ_PCIINT 0x02 3151da177e4SLinus Torvalds field CLRSEQ_SPLTINT 0x01 3161da177e4SLinus Torvalds} 3171da177e4SLinus Torvalds 3181da177e4SLinus Torvalds/* 3191da177e4SLinus Torvalds * Software Timer 3201da177e4SLinus Torvalds */ 3211da177e4SLinus Torvaldsregister SWTIMER { 3221da177e4SLinus Torvalds address 0x00E 3231da177e4SLinus Torvalds access_mode RW 3241da177e4SLinus Torvalds size 2 3251da177e4SLinus Torvalds} 3261da177e4SLinus Torvalds 3271da177e4SLinus Torvalds/* 3281da177e4SLinus Torvalds * SEQ New SCB Queue Offset 3291da177e4SLinus Torvalds */ 3301da177e4SLinus Torvaldsregister SNSCB_QOFF { 3311da177e4SLinus Torvalds address 0x010 3321da177e4SLinus Torvalds access_mode RW 3331da177e4SLinus Torvalds size 2 3341da177e4SLinus Torvalds modes M_CCHAN 3351da177e4SLinus Torvalds} 3361da177e4SLinus Torvalds 3371da177e4SLinus Torvalds/* 3381da177e4SLinus Torvalds * SEQ Empty SCB Queue Offset 3391da177e4SLinus Torvalds */ 3401da177e4SLinus Torvaldsregister SESCB_QOFF { 3411da177e4SLinus Torvalds address 0x012 3421da177e4SLinus Torvalds access_mode RW 3431da177e4SLinus Torvalds modes M_CCHAN 3441da177e4SLinus Torvalds} 3451da177e4SLinus Torvalds 3461da177e4SLinus Torvalds/* 3471da177e4SLinus Torvalds * SEQ Done SCB Queue Offset 3481da177e4SLinus Torvalds */ 3491da177e4SLinus Torvaldsregister SDSCB_QOFF { 3501da177e4SLinus Torvalds address 0x014 3511da177e4SLinus Torvalds access_mode RW 3521da177e4SLinus Torvalds modes M_CCHAN 3531da177e4SLinus Torvalds size 2 3541da177e4SLinus Torvalds} 3551da177e4SLinus Torvalds 3561da177e4SLinus Torvalds/* 3571da177e4SLinus Torvalds * Queue Offset Control & Status 3581da177e4SLinus Torvalds */ 3591da177e4SLinus Torvaldsregister QOFF_CTLSTA { 3601da177e4SLinus Torvalds address 0x016 3611da177e4SLinus Torvalds access_mode RW 3621da177e4SLinus Torvalds modes M_CCHAN 3631da177e4SLinus Torvalds field EMPTY_SCB_AVAIL 0x80 3641da177e4SLinus Torvalds field NEW_SCB_AVAIL 0x40 3651da177e4SLinus Torvalds field SDSCB_ROLLOVR 0x20 3661da177e4SLinus Torvalds field HS_MAILBOX_ACT 0x10 3671da177e4SLinus Torvalds field SCB_QSIZE 0x0F { 3681da177e4SLinus Torvalds SCB_QSIZE_4, 3691da177e4SLinus Torvalds SCB_QSIZE_8, 3701da177e4SLinus Torvalds SCB_QSIZE_16, 3711da177e4SLinus Torvalds SCB_QSIZE_32, 3721da177e4SLinus Torvalds SCB_QSIZE_64, 3731da177e4SLinus Torvalds SCB_QSIZE_128, 3741da177e4SLinus Torvalds SCB_QSIZE_256, 3751da177e4SLinus Torvalds SCB_QSIZE_512, 3761da177e4SLinus Torvalds SCB_QSIZE_1024, 3771da177e4SLinus Torvalds SCB_QSIZE_2048, 3781da177e4SLinus Torvalds SCB_QSIZE_4096, 3791da177e4SLinus Torvalds SCB_QSIZE_8192, 3801da177e4SLinus Torvalds SCB_QSIZE_16384 3811da177e4SLinus Torvalds } 3821da177e4SLinus Torvalds} 3831da177e4SLinus Torvalds 3841da177e4SLinus Torvalds/* 3851da177e4SLinus Torvalds * Interrupt Control 3861da177e4SLinus Torvalds */ 3871da177e4SLinus Torvaldsregister INTCTL { 3881da177e4SLinus Torvalds address 0x018 3891da177e4SLinus Torvalds access_mode RW 3901da177e4SLinus Torvalds field SWTMINTMASK 0x80 3911da177e4SLinus Torvalds field SWTMINTEN 0x40 3921da177e4SLinus Torvalds field SWTIMER_START 0x20 3931da177e4SLinus Torvalds field AUTOCLRCMDINT 0x10 3941da177e4SLinus Torvalds field PCIINTEN 0x08 3951da177e4SLinus Torvalds field SCSIINTEN 0x04 3961da177e4SLinus Torvalds field SEQINTEN 0x02 3971da177e4SLinus Torvalds field SPLTINTEN 0x01 3981da177e4SLinus Torvalds} 3991da177e4SLinus Torvalds 4001da177e4SLinus Torvalds/* 4011da177e4SLinus Torvalds * Data FIFO Control 4021da177e4SLinus Torvalds */ 4031da177e4SLinus Torvaldsregister DFCNTRL { 4041da177e4SLinus Torvalds address 0x019 4051da177e4SLinus Torvalds access_mode RW 4061da177e4SLinus Torvalds modes M_DFF0, M_DFF1 4071da177e4SLinus Torvalds field PRELOADEN 0x80 4081da177e4SLinus Torvalds field SCSIENWRDIS 0x40 /* Rev B only. */ 4091da177e4SLinus Torvalds field SCSIEN 0x20 4101da177e4SLinus Torvalds field SCSIENACK 0x20 4111da177e4SLinus Torvalds field HDMAEN 0x08 4121da177e4SLinus Torvalds field HDMAENACK 0x08 4131da177e4SLinus Torvalds field DIRECTION 0x04 4141da177e4SLinus Torvalds field DIRECTIONACK 0x04 4151da177e4SLinus Torvalds field FIFOFLUSH 0x02 4161da177e4SLinus Torvalds field FIFOFLUSHACK 0x02 4171da177e4SLinus Torvalds field DIRECTIONEN 0x01 4181da177e4SLinus Torvalds} 4191da177e4SLinus Torvalds 4201da177e4SLinus Torvalds/* 4211da177e4SLinus Torvalds * Device Space Command 0 4221da177e4SLinus Torvalds */ 4231da177e4SLinus Torvaldsregister DSCOMMAND0 { 4241da177e4SLinus Torvalds address 0x019 4251da177e4SLinus Torvalds access_mode RW 4261da177e4SLinus Torvalds modes M_CFG 4271da177e4SLinus Torvalds field CACHETHEN 0x80 /* Cache Threshold enable */ 4281da177e4SLinus Torvalds field DPARCKEN 0x40 /* Data Parity Check Enable */ 4291da177e4SLinus Torvalds field MPARCKEN 0x20 /* Memory Parity Check Enable */ 4301da177e4SLinus Torvalds field EXTREQLCK 0x10 /* External Request Lock */ 4311da177e4SLinus Torvalds field DISABLE_TWATE 0x02 /* Rev B or greater */ 4321da177e4SLinus Torvalds field CIOPARCKEN 0x01 /* Internal bus parity error enable */ 4331da177e4SLinus Torvalds} 4341da177e4SLinus Torvalds 4351da177e4SLinus Torvalds/* 4361da177e4SLinus Torvalds * Data FIFO Status 4371da177e4SLinus Torvalds */ 4381da177e4SLinus Torvaldsregister DFSTATUS { 4391da177e4SLinus Torvalds address 0x01A 4401da177e4SLinus Torvalds access_mode RO 4411da177e4SLinus Torvalds modes M_DFF0, M_DFF1 4421da177e4SLinus Torvalds field PRELOAD_AVAIL 0x80 4431da177e4SLinus Torvalds field PKT_PRELOAD_AVAIL 0x40 4441da177e4SLinus Torvalds field MREQPEND 0x10 4451da177e4SLinus Torvalds field HDONE 0x08 4461da177e4SLinus Torvalds field DFTHRESH 0x04 4471da177e4SLinus Torvalds field FIFOFULL 0x02 4481da177e4SLinus Torvalds field FIFOEMP 0x01 4491da177e4SLinus Torvalds} 4501da177e4SLinus Torvalds 4511da177e4SLinus Torvalds/* 4521da177e4SLinus Torvalds * S/G Cache Pointer 4531da177e4SLinus Torvalds */ 4541da177e4SLinus Torvaldsregister SG_CACHE_PRE { 4551da177e4SLinus Torvalds address 0x01B 4561da177e4SLinus Torvalds access_mode WO 4571da177e4SLinus Torvalds modes M_DFF0, M_DFF1 4581da177e4SLinus Torvalds field SG_ADDR_MASK 0xf8 4591da177e4SLinus Torvalds field ODD_SEG 0x04 4601da177e4SLinus Torvalds field LAST_SEG 0x02 4611da177e4SLinus Torvalds} 4621da177e4SLinus Torvalds 4631da177e4SLinus Torvaldsregister SG_CACHE_SHADOW { 4641da177e4SLinus Torvalds address 0x01B 4651da177e4SLinus Torvalds access_mode RO 4661da177e4SLinus Torvalds modes M_DFF0, M_DFF1 4671da177e4SLinus Torvalds field SG_ADDR_MASK 0xf8 4681da177e4SLinus Torvalds field ODD_SEG 0x04 4691da177e4SLinus Torvalds field LAST_SEG 0x02 4701da177e4SLinus Torvalds field LAST_SEG_DONE 0x01 4711da177e4SLinus Torvalds} 4721da177e4SLinus Torvalds 4731da177e4SLinus Torvalds/* 4741da177e4SLinus Torvalds * Arbiter Control 4751da177e4SLinus Torvalds */ 4761da177e4SLinus Torvaldsregister ARBCTL { 4771da177e4SLinus Torvalds address 0x01B 4781da177e4SLinus Torvalds access_mode RW 4791da177e4SLinus Torvalds modes M_CFG 4801da177e4SLinus Torvalds field RESET_HARB 0x80 4811da177e4SLinus Torvalds field RETRY_SWEN 0x08 4821da177e4SLinus Torvalds field USE_TIME 0x07 4831da177e4SLinus Torvalds} 4841da177e4SLinus Torvalds 4851da177e4SLinus Torvalds/* 4861da177e4SLinus Torvalds * Data Channel Host Address 4871da177e4SLinus Torvalds */ 4881da177e4SLinus Torvaldsregister HADDR { 4891da177e4SLinus Torvalds address 0x070 4901da177e4SLinus Torvalds access_mode RW 4911da177e4SLinus Torvalds size 8 4921da177e4SLinus Torvalds modes M_DFF0, M_DFF1 4931da177e4SLinus Torvalds} 4941da177e4SLinus Torvalds 4951da177e4SLinus Torvalds/* 4961da177e4SLinus Torvalds * Host Overlay DMA Address 4971da177e4SLinus Torvalds */ 4981da177e4SLinus Torvaldsregister HODMAADR { 4991da177e4SLinus Torvalds address 0x070 5001da177e4SLinus Torvalds access_mode RW 5011da177e4SLinus Torvalds size 8 5021da177e4SLinus Torvalds modes M_SCSI 5031da177e4SLinus Torvalds} 5041da177e4SLinus Torvalds 5051da177e4SLinus Torvalds/* 5061da177e4SLinus Torvalds * PCI PLL Delay. 5071da177e4SLinus Torvalds */ 5081da177e4SLinus Torvaldsregister PLLDELAY { 5091da177e4SLinus Torvalds address 0x070 5101da177e4SLinus Torvalds access_mode RW 5111da177e4SLinus Torvalds size 1 5121da177e4SLinus Torvalds modes M_CFG 5131da177e4SLinus Torvalds field SPLIT_DROP_REQ 0x80 5141da177e4SLinus Torvalds} 5151da177e4SLinus Torvalds 5161da177e4SLinus Torvalds/* 5171da177e4SLinus Torvalds * Data Channel Host Count 5181da177e4SLinus Torvalds */ 5191da177e4SLinus Torvaldsregister HCNT { 5201da177e4SLinus Torvalds address 0x078 5211da177e4SLinus Torvalds access_mode RW 5221da177e4SLinus Torvalds size 3 5231da177e4SLinus Torvalds modes M_DFF0, M_DFF1 5241da177e4SLinus Torvalds} 5251da177e4SLinus Torvalds 5261da177e4SLinus Torvalds/* 5271da177e4SLinus Torvalds * Host Overlay DMA Count 5281da177e4SLinus Torvalds */ 5291da177e4SLinus Torvaldsregister HODMACNT { 5301da177e4SLinus Torvalds address 0x078 5311da177e4SLinus Torvalds access_mode RW 5321da177e4SLinus Torvalds size 2 5331da177e4SLinus Torvalds modes M_SCSI 5341da177e4SLinus Torvalds} 5351da177e4SLinus Torvalds 5361da177e4SLinus Torvalds/* 5371da177e4SLinus Torvalds * Host Overlay DMA Enable 5381da177e4SLinus Torvalds */ 5391da177e4SLinus Torvaldsregister HODMAEN { 5401da177e4SLinus Torvalds address 0x07A 5411da177e4SLinus Torvalds access_mode RW 5421da177e4SLinus Torvalds modes M_SCSI 5431da177e4SLinus Torvalds} 5441da177e4SLinus Torvalds 5451da177e4SLinus Torvalds/* 5461da177e4SLinus Torvalds * Scatter/Gather Host Address 5471da177e4SLinus Torvalds */ 5481da177e4SLinus Torvaldsregister SGHADDR { 5491da177e4SLinus Torvalds address 0x07C 5501da177e4SLinus Torvalds access_mode RW 5511da177e4SLinus Torvalds size 8 5521da177e4SLinus Torvalds modes M_DFF0, M_DFF1 5531da177e4SLinus Torvalds} 5541da177e4SLinus Torvalds 5551da177e4SLinus Torvalds/* 5561da177e4SLinus Torvalds * SCB Host Address 5571da177e4SLinus Torvalds */ 5581da177e4SLinus Torvaldsregister SCBHADDR { 5591da177e4SLinus Torvalds address 0x07C 5601da177e4SLinus Torvalds access_mode RW 5611da177e4SLinus Torvalds size 8 5621da177e4SLinus Torvalds modes M_CCHAN 5631da177e4SLinus Torvalds} 5641da177e4SLinus Torvalds 5651da177e4SLinus Torvalds/* 5661da177e4SLinus Torvalds * Scatter/Gather Host Count 5671da177e4SLinus Torvalds */ 5681da177e4SLinus Torvaldsregister SGHCNT { 5691da177e4SLinus Torvalds address 0x084 5701da177e4SLinus Torvalds access_mode RW 5711da177e4SLinus Torvalds modes M_DFF0, M_DFF1 5721da177e4SLinus Torvalds} 5731da177e4SLinus Torvalds 5741da177e4SLinus Torvalds/* 5751da177e4SLinus Torvalds * SCB Host Count 5761da177e4SLinus Torvalds */ 5771da177e4SLinus Torvaldsregister SCBHCNT { 5781da177e4SLinus Torvalds address 0x084 5791da177e4SLinus Torvalds access_mode RW 5801da177e4SLinus Torvalds modes M_CCHAN 5811da177e4SLinus Torvalds} 5821da177e4SLinus Torvalds 5831da177e4SLinus Torvalds/* 5841da177e4SLinus Torvalds * Data FIFO Threshold 5851da177e4SLinus Torvalds */ 5861da177e4SLinus Torvaldsregister DFF_THRSH { 5871da177e4SLinus Torvalds address 0x088 5881da177e4SLinus Torvalds access_mode RW 5891da177e4SLinus Torvalds modes M_CFG 5901da177e4SLinus Torvalds field WR_DFTHRSH 0x70 { 5911da177e4SLinus Torvalds WR_DFTHRSH_MIN, 5921da177e4SLinus Torvalds WR_DFTHRSH_25, 5931da177e4SLinus Torvalds WR_DFTHRSH_50, 5941da177e4SLinus Torvalds WR_DFTHRSH_63, 5951da177e4SLinus Torvalds WR_DFTHRSH_75, 5961da177e4SLinus Torvalds WR_DFTHRSH_85, 5971da177e4SLinus Torvalds WR_DFTHRSH_90, 5981da177e4SLinus Torvalds WR_DFTHRSH_MAX 5991da177e4SLinus Torvalds } 6001da177e4SLinus Torvalds field RD_DFTHRSH 0x07 { 6011da177e4SLinus Torvalds RD_DFTHRSH_MIN, 6021da177e4SLinus Torvalds RD_DFTHRSH_25, 6031da177e4SLinus Torvalds RD_DFTHRSH_50, 6041da177e4SLinus Torvalds RD_DFTHRSH_63, 6051da177e4SLinus Torvalds RD_DFTHRSH_75, 6061da177e4SLinus Torvalds RD_DFTHRSH_85, 6071da177e4SLinus Torvalds RD_DFTHRSH_90, 6081da177e4SLinus Torvalds RD_DFTHRSH_MAX 6091da177e4SLinus Torvalds } 6101da177e4SLinus Torvalds} 6111da177e4SLinus Torvalds 6121da177e4SLinus Torvalds/* 6131da177e4SLinus Torvalds * ROM Address 6141da177e4SLinus Torvalds */ 6151da177e4SLinus Torvaldsregister ROMADDR { 6161da177e4SLinus Torvalds address 0x08A 6171da177e4SLinus Torvalds access_mode RW 6181da177e4SLinus Torvalds size 3 6191da177e4SLinus Torvalds} 6201da177e4SLinus Torvalds 6211da177e4SLinus Torvalds/* 6221da177e4SLinus Torvalds * ROM Control 6231da177e4SLinus Torvalds */ 6241da177e4SLinus Torvaldsregister ROMCNTRL { 6251da177e4SLinus Torvalds address 0x08D 6261da177e4SLinus Torvalds access_mode RW 6271da177e4SLinus Torvalds field ROMOP 0xE0 6281da177e4SLinus Torvalds field ROMSPD 0x18 6291da177e4SLinus Torvalds field REPEAT 0x02 6301da177e4SLinus Torvalds field RDY 0x01 6311da177e4SLinus Torvalds} 6321da177e4SLinus Torvalds 6331da177e4SLinus Torvalds/* 6341da177e4SLinus Torvalds * ROM Data 6351da177e4SLinus Torvalds */ 6361da177e4SLinus Torvaldsregister ROMDATA { 6371da177e4SLinus Torvalds address 0x08E 6381da177e4SLinus Torvalds access_mode RW 6391da177e4SLinus Torvalds} 6401da177e4SLinus Torvalds 6411da177e4SLinus Torvalds/* 6421da177e4SLinus Torvalds * Data Channel Receive Message 0 6431da177e4SLinus Torvalds */ 6441da177e4SLinus Torvaldsregister DCHRXMSG0 { 6451da177e4SLinus Torvalds address 0x090 6461da177e4SLinus Torvalds access_mode RO 6471da177e4SLinus Torvalds modes M_DFF0, M_DFF1 6481da177e4SLinus Torvalds field CDNUM 0xF8 6491da177e4SLinus Torvalds field CFNUM 0x07 6501da177e4SLinus Torvalds} 6511da177e4SLinus Torvalds 6521da177e4SLinus Torvalds/* 6531da177e4SLinus Torvalds * CMC Recieve Message 0 6541da177e4SLinus Torvalds */ 6551da177e4SLinus Torvaldsregister CMCRXMSG0 { 6561da177e4SLinus Torvalds address 0x090 6571da177e4SLinus Torvalds access_mode RO 6581da177e4SLinus Torvalds modes M_CCHAN 6591da177e4SLinus Torvalds field CDNUM 0xF8 6601da177e4SLinus Torvalds field CFNUM 0x07 6611da177e4SLinus Torvalds} 6621da177e4SLinus Torvalds 6631da177e4SLinus Torvalds/* 6641da177e4SLinus Torvalds * Overlay Recieve Message 0 6651da177e4SLinus Torvalds */ 6661da177e4SLinus Torvaldsregister OVLYRXMSG0 { 6671da177e4SLinus Torvalds address 0x090 6681da177e4SLinus Torvalds access_mode RO 6691da177e4SLinus Torvalds modes M_SCSI 6701da177e4SLinus Torvalds field CDNUM 0xF8 6711da177e4SLinus Torvalds field CFNUM 0x07 6721da177e4SLinus Torvalds} 6731da177e4SLinus Torvalds 6741da177e4SLinus Torvalds/* 6751da177e4SLinus Torvalds * Relaxed Order Enable 6761da177e4SLinus Torvalds */ 6771da177e4SLinus Torvaldsregister ROENABLE { 6781da177e4SLinus Torvalds address 0x090 6791da177e4SLinus Torvalds access_mode RW 6801da177e4SLinus Torvalds modes M_CFG 6811da177e4SLinus Torvalds field MSIROEN 0x20 6821da177e4SLinus Torvalds field OVLYROEN 0x10 6831da177e4SLinus Torvalds field CMCROEN 0x08 6841da177e4SLinus Torvalds field SGROEN 0x04 6851da177e4SLinus Torvalds field DCH1ROEN 0x02 6861da177e4SLinus Torvalds field DCH0ROEN 0x01 6871da177e4SLinus Torvalds} 6881da177e4SLinus Torvalds 6891da177e4SLinus Torvalds/* 6901da177e4SLinus Torvalds * Data Channel Receive Message 1 6911da177e4SLinus Torvalds */ 6921da177e4SLinus Torvaldsregister DCHRXMSG1 { 6931da177e4SLinus Torvalds address 0x091 6941da177e4SLinus Torvalds access_mode RO 6951da177e4SLinus Torvalds modes M_DFF0, M_DFF1 6961da177e4SLinus Torvalds field CBNUM 0xFF 6971da177e4SLinus Torvalds} 6981da177e4SLinus Torvalds 6991da177e4SLinus Torvalds/* 7001da177e4SLinus Torvalds * CMC Recieve Message 1 7011da177e4SLinus Torvalds */ 7021da177e4SLinus Torvaldsregister CMCRXMSG1 { 7031da177e4SLinus Torvalds address 0x091 7041da177e4SLinus Torvalds access_mode RO 7051da177e4SLinus Torvalds modes M_CCHAN 7061da177e4SLinus Torvalds field CBNUM 0xFF 7071da177e4SLinus Torvalds} 7081da177e4SLinus Torvalds 7091da177e4SLinus Torvalds/* 7101da177e4SLinus Torvalds * Overlay Recieve Message 1 7111da177e4SLinus Torvalds */ 7121da177e4SLinus Torvaldsregister OVLYRXMSG1 { 7131da177e4SLinus Torvalds address 0x091 7141da177e4SLinus Torvalds access_mode RO 7151da177e4SLinus Torvalds modes M_SCSI 7161da177e4SLinus Torvalds field CBNUM 0xFF 7171da177e4SLinus Torvalds} 7181da177e4SLinus Torvalds 7191da177e4SLinus Torvalds/* 7201da177e4SLinus Torvalds * No Snoop Enable 7211da177e4SLinus Torvalds */ 7221da177e4SLinus Torvaldsregister NSENABLE { 7231da177e4SLinus Torvalds address 0x091 7241da177e4SLinus Torvalds access_mode RW 7251da177e4SLinus Torvalds modes M_CFG 7261da177e4SLinus Torvalds field MSINSEN 0x20 7271da177e4SLinus Torvalds field OVLYNSEN 0x10 7281da177e4SLinus Torvalds field CMCNSEN 0x08 7291da177e4SLinus Torvalds field SGNSEN 0x04 7301da177e4SLinus Torvalds field DCH1NSEN 0x02 7311da177e4SLinus Torvalds field DCH0NSEN 0x01 7321da177e4SLinus Torvalds} 7331da177e4SLinus Torvalds 7341da177e4SLinus Torvalds/* 7351da177e4SLinus Torvalds * Data Channel Receive Message 2 7361da177e4SLinus Torvalds */ 7371da177e4SLinus Torvaldsregister DCHRXMSG2 { 7381da177e4SLinus Torvalds address 0x092 7391da177e4SLinus Torvalds access_mode RO 7401da177e4SLinus Torvalds modes M_DFF0, M_DFF1 7411da177e4SLinus Torvalds field MINDEX 0xFF 7421da177e4SLinus Torvalds} 7431da177e4SLinus Torvalds 7441da177e4SLinus Torvalds/* 7451da177e4SLinus Torvalds * CMC Recieve Message 2 7461da177e4SLinus Torvalds */ 7471da177e4SLinus Torvaldsregister CMCRXMSG2 { 7481da177e4SLinus Torvalds address 0x092 7491da177e4SLinus Torvalds access_mode RO 7501da177e4SLinus Torvalds modes M_CCHAN 7511da177e4SLinus Torvalds field MINDEX 0xFF 7521da177e4SLinus Torvalds} 7531da177e4SLinus Torvalds 7541da177e4SLinus Torvalds/* 7551da177e4SLinus Torvalds * Overlay Recieve Message 2 7561da177e4SLinus Torvalds */ 7571da177e4SLinus Torvaldsregister OVLYRXMSG2 { 7581da177e4SLinus Torvalds address 0x092 7591da177e4SLinus Torvalds access_mode RO 7601da177e4SLinus Torvalds modes M_SCSI 7611da177e4SLinus Torvalds field MINDEX 0xFF 7621da177e4SLinus Torvalds} 7631da177e4SLinus Torvalds 7641da177e4SLinus Torvalds/* 7651da177e4SLinus Torvalds * Outstanding Split Transactions 7661da177e4SLinus Torvalds */ 7671da177e4SLinus Torvaldsregister OST { 7681da177e4SLinus Torvalds address 0x092 7691da177e4SLinus Torvalds access_mode RW 7701da177e4SLinus Torvalds modes M_CFG 7711da177e4SLinus Torvalds} 7721da177e4SLinus Torvalds 7731da177e4SLinus Torvalds/* 7741da177e4SLinus Torvalds * Data Channel Receive Message 3 7751da177e4SLinus Torvalds */ 7761da177e4SLinus Torvaldsregister DCHRXMSG3 { 7771da177e4SLinus Torvalds address 0x093 7781da177e4SLinus Torvalds access_mode RO 7791da177e4SLinus Torvalds modes M_DFF0, M_DFF1 7801da177e4SLinus Torvalds field MCLASS 0x0F 7811da177e4SLinus Torvalds} 7821da177e4SLinus Torvalds 7831da177e4SLinus Torvalds/* 7841da177e4SLinus Torvalds * CMC Recieve Message 3 7851da177e4SLinus Torvalds */ 7861da177e4SLinus Torvaldsregister CMCRXMSG3 { 7871da177e4SLinus Torvalds address 0x093 7881da177e4SLinus Torvalds access_mode RO 7891da177e4SLinus Torvalds modes M_CCHAN 7901da177e4SLinus Torvalds field MCLASS 0x0F 7911da177e4SLinus Torvalds} 7921da177e4SLinus Torvalds 7931da177e4SLinus Torvalds/* 7941da177e4SLinus Torvalds * Overlay Recieve Message 3 7951da177e4SLinus Torvalds */ 7961da177e4SLinus Torvaldsregister OVLYRXMSG3 { 7971da177e4SLinus Torvalds address 0x093 7981da177e4SLinus Torvalds access_mode RO 7991da177e4SLinus Torvalds modes M_SCSI 8001da177e4SLinus Torvalds field MCLASS 0x0F 8011da177e4SLinus Torvalds} 8021da177e4SLinus Torvalds 8031da177e4SLinus Torvalds/* 8041da177e4SLinus Torvalds * PCI-X Control 8051da177e4SLinus Torvalds */ 8061da177e4SLinus Torvaldsregister PCIXCTL { 8071da177e4SLinus Torvalds address 0x093 8081da177e4SLinus Torvalds access_mode RW 8091da177e4SLinus Torvalds modes M_CFG 8101da177e4SLinus Torvalds field SERRPULSE 0x80 8111da177e4SLinus Torvalds field UNEXPSCIEN 0x20 8121da177e4SLinus Torvalds field SPLTSMADIS 0x10 8131da177e4SLinus Torvalds field SPLTSTADIS 0x08 8141da177e4SLinus Torvalds field SRSPDPEEN 0x04 8151da177e4SLinus Torvalds field TSCSERREN 0x02 8161da177e4SLinus Torvalds field CMPABCDIS 0x01 8171da177e4SLinus Torvalds} 8181da177e4SLinus Torvalds 8191da177e4SLinus Torvalds/* 8201da177e4SLinus Torvalds * CMC Sequencer Byte Count 8211da177e4SLinus Torvalds */ 8221da177e4SLinus Torvaldsregister CMCSEQBCNT { 8231da177e4SLinus Torvalds address 0x094 8241da177e4SLinus Torvalds access_mode RO 8251da177e4SLinus Torvalds modes M_CCHAN 8261da177e4SLinus Torvalds} 8271da177e4SLinus Torvalds 8281da177e4SLinus Torvalds/* 8291da177e4SLinus Torvalds * Overlay Sequencer Byte Count 8301da177e4SLinus Torvalds */ 8311da177e4SLinus Torvaldsregister OVLYSEQBCNT { 8321da177e4SLinus Torvalds address 0x094 8331da177e4SLinus Torvalds access_mode RO 8341da177e4SLinus Torvalds modes M_SCSI 8351da177e4SLinus Torvalds} 8361da177e4SLinus Torvalds 8371da177e4SLinus Torvalds/* 8381da177e4SLinus Torvalds * Data Channel Sequencer Byte Count 8391da177e4SLinus Torvalds */ 8401da177e4SLinus Torvaldsregister DCHSEQBCNT { 8411da177e4SLinus Torvalds address 0x094 8421da177e4SLinus Torvalds access_mode RO 8431da177e4SLinus Torvalds size 2 8441da177e4SLinus Torvalds modes M_DFF0, M_DFF1 8451da177e4SLinus Torvalds} 8461da177e4SLinus Torvalds 8471da177e4SLinus Torvalds/* 8481da177e4SLinus Torvalds * Data Channel Split Status 0 8491da177e4SLinus Torvalds */ 8501da177e4SLinus Torvaldsregister DCHSPLTSTAT0 { 8511da177e4SLinus Torvalds address 0x096 8521da177e4SLinus Torvalds access_mode RW 8531da177e4SLinus Torvalds modes M_DFF0, M_DFF1 8541da177e4SLinus Torvalds field STAETERM 0x80 8551da177e4SLinus Torvalds field SCBCERR 0x40 8561da177e4SLinus Torvalds field SCADERR 0x20 8571da177e4SLinus Torvalds field SCDATBUCKET 0x10 8581da177e4SLinus Torvalds field CNTNOTCMPLT 0x08 8591da177e4SLinus Torvalds field RXOVRUN 0x04 8601da177e4SLinus Torvalds field RXSCEMSG 0x02 8611da177e4SLinus Torvalds field RXSPLTRSP 0x01 8621da177e4SLinus Torvalds} 8631da177e4SLinus Torvalds 8641da177e4SLinus Torvalds/* 8651da177e4SLinus Torvalds * CMC Split Status 0 8661da177e4SLinus Torvalds */ 8671da177e4SLinus Torvaldsregister CMCSPLTSTAT0 { 8681da177e4SLinus Torvalds address 0x096 8691da177e4SLinus Torvalds access_mode RW 8701da177e4SLinus Torvalds modes M_CCHAN 8711da177e4SLinus Torvalds field STAETERM 0x80 8721da177e4SLinus Torvalds field SCBCERR 0x40 8731da177e4SLinus Torvalds field SCADERR 0x20 8741da177e4SLinus Torvalds field SCDATBUCKET 0x10 8751da177e4SLinus Torvalds field CNTNOTCMPLT 0x08 8761da177e4SLinus Torvalds field RXOVRUN 0x04 8771da177e4SLinus Torvalds field RXSCEMSG 0x02 8781da177e4SLinus Torvalds field RXSPLTRSP 0x01 8791da177e4SLinus Torvalds} 8801da177e4SLinus Torvalds 8811da177e4SLinus Torvalds/* 8821da177e4SLinus Torvalds * Overlay Split Status 0 8831da177e4SLinus Torvalds */ 8841da177e4SLinus Torvaldsregister OVLYSPLTSTAT0 { 8851da177e4SLinus Torvalds address 0x096 8861da177e4SLinus Torvalds access_mode RW 8871da177e4SLinus Torvalds modes M_SCSI 8881da177e4SLinus Torvalds field STAETERM 0x80 8891da177e4SLinus Torvalds field SCBCERR 0x40 8901da177e4SLinus Torvalds field SCADERR 0x20 8911da177e4SLinus Torvalds field SCDATBUCKET 0x10 8921da177e4SLinus Torvalds field CNTNOTCMPLT 0x08 8931da177e4SLinus Torvalds field RXOVRUN 0x04 8941da177e4SLinus Torvalds field RXSCEMSG 0x02 8951da177e4SLinus Torvalds field RXSPLTRSP 0x01 8961da177e4SLinus Torvalds} 8971da177e4SLinus Torvalds 8981da177e4SLinus Torvalds/* 8991da177e4SLinus Torvalds * Data Channel Split Status 1 9001da177e4SLinus Torvalds */ 9011da177e4SLinus Torvaldsregister DCHSPLTSTAT1 { 9021da177e4SLinus Torvalds address 0x097 9031da177e4SLinus Torvalds access_mode RW 9041da177e4SLinus Torvalds modes M_DFF0, M_DFF1 9051da177e4SLinus Torvalds field RXDATABUCKET 0x01 9061da177e4SLinus Torvalds} 9071da177e4SLinus Torvalds 9081da177e4SLinus Torvalds/* 9091da177e4SLinus Torvalds * CMC Split Status 1 9101da177e4SLinus Torvalds */ 9111da177e4SLinus Torvaldsregister CMCSPLTSTAT1 { 9121da177e4SLinus Torvalds address 0x097 9131da177e4SLinus Torvalds access_mode RW 9141da177e4SLinus Torvalds modes M_CCHAN 9151da177e4SLinus Torvalds field RXDATABUCKET 0x01 9161da177e4SLinus Torvalds} 9171da177e4SLinus Torvalds 9181da177e4SLinus Torvalds/* 9191da177e4SLinus Torvalds * Overlay Split Status 1 9201da177e4SLinus Torvalds */ 9211da177e4SLinus Torvaldsregister OVLYSPLTSTAT1 { 9221da177e4SLinus Torvalds address 0x097 9231da177e4SLinus Torvalds access_mode RW 9241da177e4SLinus Torvalds modes M_SCSI 9251da177e4SLinus Torvalds field RXDATABUCKET 0x01 9261da177e4SLinus Torvalds} 9271da177e4SLinus Torvalds 9281da177e4SLinus Torvalds/* 9291da177e4SLinus Torvalds * S/G Receive Message 0 9301da177e4SLinus Torvalds */ 9311da177e4SLinus Torvaldsregister SGRXMSG0 { 9321da177e4SLinus Torvalds address 0x098 9331da177e4SLinus Torvalds access_mode RO 9341da177e4SLinus Torvalds modes M_DFF0, M_DFF1 9351da177e4SLinus Torvalds field CDNUM 0xF8 9361da177e4SLinus Torvalds field CFNUM 0x07 9371da177e4SLinus Torvalds} 9381da177e4SLinus Torvalds 9391da177e4SLinus Torvalds/* 9401da177e4SLinus Torvalds * S/G Receive Message 1 9411da177e4SLinus Torvalds */ 9421da177e4SLinus Torvaldsregister SGRXMSG1 { 9431da177e4SLinus Torvalds address 0x099 9441da177e4SLinus Torvalds access_mode RO 9451da177e4SLinus Torvalds modes M_DFF0, M_DFF1 9461da177e4SLinus Torvalds field CBNUM 0xFF 9471da177e4SLinus Torvalds} 9481da177e4SLinus Torvalds 9491da177e4SLinus Torvalds/* 9501da177e4SLinus Torvalds * S/G Receive Message 2 9511da177e4SLinus Torvalds */ 9521da177e4SLinus Torvaldsregister SGRXMSG2 { 9531da177e4SLinus Torvalds address 0x09A 9541da177e4SLinus Torvalds access_mode RO 9551da177e4SLinus Torvalds modes M_DFF0, M_DFF1 9561da177e4SLinus Torvalds field MINDEX 0xFF 9571da177e4SLinus Torvalds} 9581da177e4SLinus Torvalds 9591da177e4SLinus Torvalds/* 9601da177e4SLinus Torvalds * S/G Receive Message 3 9611da177e4SLinus Torvalds */ 9621da177e4SLinus Torvaldsregister SGRXMSG3 { 9631da177e4SLinus Torvalds address 0x09B 9641da177e4SLinus Torvalds access_mode RO 9651da177e4SLinus Torvalds modes M_DFF0, M_DFF1 9661da177e4SLinus Torvalds field MCLASS 0x0F 9671da177e4SLinus Torvalds} 9681da177e4SLinus Torvalds 9691da177e4SLinus Torvalds/* 9701da177e4SLinus Torvalds * Slave Split Out Address 0 9711da177e4SLinus Torvalds */ 9721da177e4SLinus Torvaldsregister SLVSPLTOUTADR0 { 9731da177e4SLinus Torvalds address 0x098 9741da177e4SLinus Torvalds access_mode RO 9751da177e4SLinus Torvalds modes M_SCSI 9761da177e4SLinus Torvalds field LOWER_ADDR 0x7F 9771da177e4SLinus Torvalds} 9781da177e4SLinus Torvalds 9791da177e4SLinus Torvalds/* 9801da177e4SLinus Torvalds * Slave Split Out Address 1 9811da177e4SLinus Torvalds */ 9821da177e4SLinus Torvaldsregister SLVSPLTOUTADR1 { 9831da177e4SLinus Torvalds address 0x099 9841da177e4SLinus Torvalds access_mode RO 9851da177e4SLinus Torvalds modes M_SCSI 9861da177e4SLinus Torvalds field REQ_DNUM 0xF8 9871da177e4SLinus Torvalds field REQ_FNUM 0x07 9881da177e4SLinus Torvalds} 9891da177e4SLinus Torvalds 9901da177e4SLinus Torvalds/* 9911da177e4SLinus Torvalds * Slave Split Out Address 2 9921da177e4SLinus Torvalds */ 9931da177e4SLinus Torvaldsregister SLVSPLTOUTADR2 { 9941da177e4SLinus Torvalds address 0x09A 9951da177e4SLinus Torvalds access_mode RO 9961da177e4SLinus Torvalds modes M_SCSI 9971da177e4SLinus Torvalds field REQ_BNUM 0xFF 9981da177e4SLinus Torvalds} 9991da177e4SLinus Torvalds 10001da177e4SLinus Torvalds/* 10011da177e4SLinus Torvalds * Slave Split Out Address 3 10021da177e4SLinus Torvalds */ 10031da177e4SLinus Torvaldsregister SLVSPLTOUTADR3 { 10041da177e4SLinus Torvalds address 0x09B 10051da177e4SLinus Torvalds access_mode RO 10061da177e4SLinus Torvalds modes M_SCSI 10071da177e4SLinus Torvalds field RLXORD 020 10081da177e4SLinus Torvalds field TAG_NUM 0x1F 10091da177e4SLinus Torvalds} 10101da177e4SLinus Torvalds 10111da177e4SLinus Torvalds/* 10121da177e4SLinus Torvalds * SG Sequencer Byte Count 10131da177e4SLinus Torvalds */ 10141da177e4SLinus Torvaldsregister SGSEQBCNT { 10151da177e4SLinus Torvalds address 0x09C 10161da177e4SLinus Torvalds access_mode RO 10171da177e4SLinus Torvalds modes M_DFF0, M_DFF1 10181da177e4SLinus Torvalds} 10191da177e4SLinus Torvalds 10201da177e4SLinus Torvalds/* 10211da177e4SLinus Torvalds * Slave Split Out Attribute 0 10221da177e4SLinus Torvalds */ 10231da177e4SLinus Torvaldsregister SLVSPLTOUTATTR0 { 10241da177e4SLinus Torvalds address 0x09C 10251da177e4SLinus Torvalds access_mode RO 10261da177e4SLinus Torvalds modes M_SCSI 10271da177e4SLinus Torvalds field LOWER_BCNT 0xFF 10281da177e4SLinus Torvalds} 10291da177e4SLinus Torvalds 10301da177e4SLinus Torvalds/* 10311da177e4SLinus Torvalds * Slave Split Out Attribute 1 10321da177e4SLinus Torvalds */ 10331da177e4SLinus Torvaldsregister SLVSPLTOUTATTR1 { 10341da177e4SLinus Torvalds address 0x09D 10351da177e4SLinus Torvalds access_mode RO 10361da177e4SLinus Torvalds modes M_SCSI 10371da177e4SLinus Torvalds field CMPLT_DNUM 0xF8 10381da177e4SLinus Torvalds field CMPLT_FNUM 0x07 10391da177e4SLinus Torvalds} 10401da177e4SLinus Torvalds 10411da177e4SLinus Torvalds/* 10421da177e4SLinus Torvalds * Slave Split Out Attribute 2 10431da177e4SLinus Torvalds */ 10441da177e4SLinus Torvaldsregister SLVSPLTOUTATTR2 { 10451da177e4SLinus Torvalds address 0x09E 10461da177e4SLinus Torvalds access_mode RO 10471da177e4SLinus Torvalds size 2 10481da177e4SLinus Torvalds modes M_SCSI 10491da177e4SLinus Torvalds field CMPLT_BNUM 0xFF 10501da177e4SLinus Torvalds} 10511da177e4SLinus Torvalds/* 10521da177e4SLinus Torvalds * S/G Split Status 0 10531da177e4SLinus Torvalds */ 10541da177e4SLinus Torvaldsregister SGSPLTSTAT0 { 10551da177e4SLinus Torvalds address 0x09E 10561da177e4SLinus Torvalds access_mode RW 10571da177e4SLinus Torvalds modes M_DFF0, M_DFF1 10581da177e4SLinus Torvalds field STAETERM 0x80 10591da177e4SLinus Torvalds field SCBCERR 0x40 10601da177e4SLinus Torvalds field SCADERR 0x20 10611da177e4SLinus Torvalds field SCDATBUCKET 0x10 10621da177e4SLinus Torvalds field CNTNOTCMPLT 0x08 10631da177e4SLinus Torvalds field RXOVRUN 0x04 10641da177e4SLinus Torvalds field RXSCEMSG 0x02 10651da177e4SLinus Torvalds field RXSPLTRSP 0x01 10661da177e4SLinus Torvalds} 10671da177e4SLinus Torvalds 10681da177e4SLinus Torvalds/* 10691da177e4SLinus Torvalds * S/G Split Status 1 10701da177e4SLinus Torvalds */ 10711da177e4SLinus Torvaldsregister SGSPLTSTAT1 { 10721da177e4SLinus Torvalds address 0x09F 10731da177e4SLinus Torvalds access_mode RW 10741da177e4SLinus Torvalds modes M_DFF0, M_DFF1 10751da177e4SLinus Torvalds field RXDATABUCKET 0x01 10761da177e4SLinus Torvalds} 10771da177e4SLinus Torvalds 10781da177e4SLinus Torvalds/* 10791da177e4SLinus Torvalds * Special Function 10801da177e4SLinus Torvalds */ 10811da177e4SLinus Torvaldsregister SFUNCT { 10821da177e4SLinus Torvalds address 0x09f 10831da177e4SLinus Torvalds access_mode RW 10841da177e4SLinus Torvalds modes M_CFG 10851da177e4SLinus Torvalds field TEST_GROUP 0xF0 10861da177e4SLinus Torvalds field TEST_NUM 0x0F 10871da177e4SLinus Torvalds} 10881da177e4SLinus Torvalds 10891da177e4SLinus Torvalds/* 10901da177e4SLinus Torvalds * Data FIFO 0 PCI Status 10911da177e4SLinus Torvalds */ 10921da177e4SLinus Torvaldsregister DF0PCISTAT { 10931da177e4SLinus Torvalds address 0x0A0 10941da177e4SLinus Torvalds access_mode RW 10951da177e4SLinus Torvalds modes M_CFG 10961da177e4SLinus Torvalds field DPE 0x80 10971da177e4SLinus Torvalds field SSE 0x40 10981da177e4SLinus Torvalds field RMA 0x20 10991da177e4SLinus Torvalds field RTA 0x10 11001da177e4SLinus Torvalds field SCAAPERR 0x08 11011da177e4SLinus Torvalds field RDPERR 0x04 11021da177e4SLinus Torvalds field TWATERR 0x02 11031da177e4SLinus Torvalds field DPR 0x01 11041da177e4SLinus Torvalds} 11051da177e4SLinus Torvalds 11061da177e4SLinus Torvalds/* 11071da177e4SLinus Torvalds * Data FIFO 1 PCI Status 11081da177e4SLinus Torvalds */ 11091da177e4SLinus Torvaldsregister DF1PCISTAT { 11101da177e4SLinus Torvalds address 0x0A1 11111da177e4SLinus Torvalds access_mode RW 11121da177e4SLinus Torvalds modes M_CFG 11131da177e4SLinus Torvalds field DPE 0x80 11141da177e4SLinus Torvalds field SSE 0x40 11151da177e4SLinus Torvalds field RMA 0x20 11161da177e4SLinus Torvalds field RTA 0x10 11171da177e4SLinus Torvalds field SCAAPERR 0x08 11181da177e4SLinus Torvalds field RDPERR 0x04 11191da177e4SLinus Torvalds field TWATERR 0x02 11201da177e4SLinus Torvalds field DPR 0x01 11211da177e4SLinus Torvalds} 11221da177e4SLinus Torvalds 11231da177e4SLinus Torvalds/* 11241da177e4SLinus Torvalds * S/G PCI Status 11251da177e4SLinus Torvalds */ 11261da177e4SLinus Torvaldsregister SGPCISTAT { 11271da177e4SLinus Torvalds address 0x0A2 11281da177e4SLinus Torvalds access_mode RW 11291da177e4SLinus Torvalds modes M_CFG 11301da177e4SLinus Torvalds field DPE 0x80 11311da177e4SLinus Torvalds field SSE 0x40 11321da177e4SLinus Torvalds field RMA 0x20 11331da177e4SLinus Torvalds field RTA 0x10 11341da177e4SLinus Torvalds field SCAAPERR 0x08 11351da177e4SLinus Torvalds field RDPERR 0x04 11361da177e4SLinus Torvalds field DPR 0x01 11371da177e4SLinus Torvalds} 11381da177e4SLinus Torvalds 11391da177e4SLinus Torvalds/* 11401da177e4SLinus Torvalds * CMC PCI Status 11411da177e4SLinus Torvalds */ 11421da177e4SLinus Torvaldsregister CMCPCISTAT { 11431da177e4SLinus Torvalds address 0x0A3 11441da177e4SLinus Torvalds access_mode RW 11451da177e4SLinus Torvalds modes M_CFG 11461da177e4SLinus Torvalds field DPE 0x80 11471da177e4SLinus Torvalds field SSE 0x40 11481da177e4SLinus Torvalds field RMA 0x20 11491da177e4SLinus Torvalds field RTA 0x10 11501da177e4SLinus Torvalds field SCAAPERR 0x08 11511da177e4SLinus Torvalds field RDPERR 0x04 11521da177e4SLinus Torvalds field TWATERR 0x02 11531da177e4SLinus Torvalds field DPR 0x01 11541da177e4SLinus Torvalds} 11551da177e4SLinus Torvalds 11561da177e4SLinus Torvalds/* 11571da177e4SLinus Torvalds * Overlay PCI Status 11581da177e4SLinus Torvalds */ 11591da177e4SLinus Torvaldsregister OVLYPCISTAT { 11601da177e4SLinus Torvalds address 0x0A4 11611da177e4SLinus Torvalds access_mode RW 11621da177e4SLinus Torvalds modes M_CFG 11631da177e4SLinus Torvalds field DPE 0x80 11641da177e4SLinus Torvalds field SSE 0x40 11651da177e4SLinus Torvalds field RMA 0x20 11661da177e4SLinus Torvalds field RTA 0x10 11671da177e4SLinus Torvalds field SCAAPERR 0x08 11681da177e4SLinus Torvalds field RDPERR 0x04 11691da177e4SLinus Torvalds field DPR 0x01 11701da177e4SLinus Torvalds} 11711da177e4SLinus Torvalds 11721da177e4SLinus Torvalds/* 11731da177e4SLinus Torvalds * PCI Status for MSI Master DMA Transfer 11741da177e4SLinus Torvalds */ 11751da177e4SLinus Torvaldsregister MSIPCISTAT { 11761da177e4SLinus Torvalds address 0x0A6 11771da177e4SLinus Torvalds access_mode RW 11781da177e4SLinus Torvalds modes M_CFG 11791da177e4SLinus Torvalds field SSE 0x40 11801da177e4SLinus Torvalds field RMA 0x20 11811da177e4SLinus Torvalds field RTA 0x10 11821da177e4SLinus Torvalds field CLRPENDMSI 0x08 11831da177e4SLinus Torvalds field TWATERR 0x02 11841da177e4SLinus Torvalds field DPR 0x01 11851da177e4SLinus Torvalds} 11861da177e4SLinus Torvalds 11871da177e4SLinus Torvalds/* 11881da177e4SLinus Torvalds * PCI Status for Target 11891da177e4SLinus Torvalds */ 11901da177e4SLinus Torvaldsregister TARGPCISTAT { 11911da177e4SLinus Torvalds address 0x0A7 11921da177e4SLinus Torvalds access_mode RW 11931da177e4SLinus Torvalds modes M_CFG 11941da177e4SLinus Torvalds field DPE 0x80 11951da177e4SLinus Torvalds field SSE 0x40 11961da177e4SLinus Torvalds field STA 0x08 11971da177e4SLinus Torvalds field TWATERR 0x02 11981da177e4SLinus Torvalds} 11991da177e4SLinus Torvalds 12001da177e4SLinus Torvalds/* 12011da177e4SLinus Torvalds * LQ Packet In 12021da177e4SLinus Torvalds * The last LQ Packet received 12031da177e4SLinus Torvalds */ 12041da177e4SLinus Torvaldsregister LQIN { 12051da177e4SLinus Torvalds address 0x020 12061da177e4SLinus Torvalds access_mode RW 12071da177e4SLinus Torvalds size 20 12081da177e4SLinus Torvalds modes M_DFF0, M_DFF1, M_SCSI 12091da177e4SLinus Torvalds} 12101da177e4SLinus Torvalds 12111da177e4SLinus Torvalds/* 12121da177e4SLinus Torvalds * SCB Type Pointer 12131da177e4SLinus Torvalds * SCB offset for Target Mode SCB type information 12141da177e4SLinus Torvalds */ 12151da177e4SLinus Torvaldsregister TYPEPTR { 12161da177e4SLinus Torvalds address 0x020 12171da177e4SLinus Torvalds access_mode RW 12181da177e4SLinus Torvalds modes M_CFG 12191da177e4SLinus Torvalds} 12201da177e4SLinus Torvalds 12211da177e4SLinus Torvalds/* 12221da177e4SLinus Torvalds * Queue Tag Pointer 12231da177e4SLinus Torvalds * SCB offset to the Two Byte tag identifier used for target mode. 12241da177e4SLinus Torvalds */ 12251da177e4SLinus Torvaldsregister TAGPTR { 12261da177e4SLinus Torvalds address 0x021 12271da177e4SLinus Torvalds access_mode RW 12281da177e4SLinus Torvalds modes M_CFG 12291da177e4SLinus Torvalds} 12301da177e4SLinus Torvalds 12311da177e4SLinus Torvalds/* 12321da177e4SLinus Torvalds * Logical Unit Number Pointer 12331da177e4SLinus Torvalds * SCB offset to the LSB (little endian) of the lun field. 12341da177e4SLinus Torvalds */ 12351da177e4SLinus Torvaldsregister LUNPTR { 12361da177e4SLinus Torvalds address 0x022 12371da177e4SLinus Torvalds access_mode RW 12381da177e4SLinus Torvalds modes M_CFG 12391da177e4SLinus Torvalds} 12401da177e4SLinus Torvalds 12411da177e4SLinus Torvalds/* 12421da177e4SLinus Torvalds * Data Length Pointer 12431da177e4SLinus Torvalds * SCB offset for the 4 byte data length field in target mode. 12441da177e4SLinus Torvalds */ 12451da177e4SLinus Torvaldsregister DATALENPTR { 12461da177e4SLinus Torvalds address 0x023 12471da177e4SLinus Torvalds access_mode RW 12481da177e4SLinus Torvalds modes M_CFG 12491da177e4SLinus Torvalds} 12501da177e4SLinus Torvalds 12511da177e4SLinus Torvalds/* 12521da177e4SLinus Torvalds * Status Length Pointer 12531da177e4SLinus Torvalds * SCB offset to the two byte status field in target SCBs. 12541da177e4SLinus Torvalds */ 12551da177e4SLinus Torvaldsregister STATLENPTR { 12561da177e4SLinus Torvalds address 0x024 12571da177e4SLinus Torvalds access_mode RW 12581da177e4SLinus Torvalds modes M_CFG 12591da177e4SLinus Torvalds} 12601da177e4SLinus Torvalds 12611da177e4SLinus Torvalds/* 12621da177e4SLinus Torvalds * Command Length Pointer 12631da177e4SLinus Torvalds * Scb offset for the CDB length field in initiator SCBs. 12641da177e4SLinus Torvalds */ 12651da177e4SLinus Torvaldsregister CMDLENPTR { 12661da177e4SLinus Torvalds address 0x025 12671da177e4SLinus Torvalds access_mode RW 12681da177e4SLinus Torvalds modes M_CFG 12691da177e4SLinus Torvalds} 12701da177e4SLinus Torvalds 12711da177e4SLinus Torvalds/* 12721da177e4SLinus Torvalds * Task Attribute Pointer 12731da177e4SLinus Torvalds * Scb offset for the byte field specifying the attribute byte 12741da177e4SLinus Torvalds * to be used in command packets. 12751da177e4SLinus Torvalds */ 12761da177e4SLinus Torvaldsregister ATTRPTR { 12771da177e4SLinus Torvalds address 0x026 12781da177e4SLinus Torvalds access_mode RW 12791da177e4SLinus Torvalds modes M_CFG 12801da177e4SLinus Torvalds} 12811da177e4SLinus Torvalds 12821da177e4SLinus Torvalds/* 12831da177e4SLinus Torvalds * Task Management Flags Pointer 12841da177e4SLinus Torvalds * Scb offset for the byte field specifying the attribute flags 12851da177e4SLinus Torvalds * byte to be used in command packets. 12861da177e4SLinus Torvalds */ 12871da177e4SLinus Torvaldsregister FLAGPTR { 12881da177e4SLinus Torvalds address 0x027 12891da177e4SLinus Torvalds access_mode RW 12901da177e4SLinus Torvalds modes M_CFG 12911da177e4SLinus Torvalds} 12921da177e4SLinus Torvalds 12931da177e4SLinus Torvalds/* 12941da177e4SLinus Torvalds * Command Pointer 12951da177e4SLinus Torvalds * Scb offset for the first byte in the CDB for initiator SCBs. 12961da177e4SLinus Torvalds */ 12971da177e4SLinus Torvaldsregister CMDPTR { 12981da177e4SLinus Torvalds address 0x028 12991da177e4SLinus Torvalds access_mode RW 13001da177e4SLinus Torvalds modes M_CFG 13011da177e4SLinus Torvalds} 13021da177e4SLinus Torvalds 13031da177e4SLinus Torvalds/* 13041da177e4SLinus Torvalds * Queue Next Pointer 13051da177e4SLinus Torvalds * Scb offset for the 2 byte "next scb link". 13061da177e4SLinus Torvalds */ 13071da177e4SLinus Torvaldsregister QNEXTPTR { 13081da177e4SLinus Torvalds address 0x029 13091da177e4SLinus Torvalds access_mode RW 13101da177e4SLinus Torvalds modes M_CFG 13111da177e4SLinus Torvalds} 13121da177e4SLinus Torvalds 13131da177e4SLinus Torvalds/* 13141da177e4SLinus Torvalds * SCSI ID Pointer 13151da177e4SLinus Torvalds * Scb offset to the value to place in the SCSIID register 13161da177e4SLinus Torvalds * during target mode connections. 13171da177e4SLinus Torvalds */ 13181da177e4SLinus Torvaldsregister IDPTR { 13191da177e4SLinus Torvalds address 0x02A 13201da177e4SLinus Torvalds access_mode RW 13211da177e4SLinus Torvalds modes M_CFG 13221da177e4SLinus Torvalds} 13231da177e4SLinus Torvalds 13241da177e4SLinus Torvalds/* 13251da177e4SLinus Torvalds * Command Aborted Byte Pointer 13261da177e4SLinus Torvalds * Offset to the SCB flags field that includes the 13271da177e4SLinus Torvalds * "SCB aborted" status bit. 13281da177e4SLinus Torvalds */ 13291da177e4SLinus Torvaldsregister ABRTBYTEPTR { 13301da177e4SLinus Torvalds address 0x02B 13311da177e4SLinus Torvalds access_mode RW 13321da177e4SLinus Torvalds modes M_CFG 13331da177e4SLinus Torvalds} 13341da177e4SLinus Torvalds 13351da177e4SLinus Torvalds/* 13361da177e4SLinus Torvalds * Command Aborted Bit Pointer 13371da177e4SLinus Torvalds * Bit offset in the SCB flags field for "SCB aborted" status. 13381da177e4SLinus Torvalds */ 13391da177e4SLinus Torvaldsregister ABRTBITPTR { 13401da177e4SLinus Torvalds address 0x02C 13411da177e4SLinus Torvalds access_mode RW 13421da177e4SLinus Torvalds modes M_CFG 13431da177e4SLinus Torvalds} 13441da177e4SLinus Torvalds 13451da177e4SLinus Torvalds/* 13461da177e4SLinus Torvalds * Rev B or greater. 13471da177e4SLinus Torvalds */ 13481da177e4SLinus Torvaldsregister MAXCMDBYTES { 13491da177e4SLinus Torvalds address 0x02D 13501da177e4SLinus Torvalds access_mode RW 13511da177e4SLinus Torvalds modes M_CFG 13521da177e4SLinus Torvalds} 13531da177e4SLinus Torvalds 13541da177e4SLinus Torvalds/* 13551da177e4SLinus Torvalds * Rev B or greater. 13561da177e4SLinus Torvalds */ 13571da177e4SLinus Torvaldsregister MAXCMD2RCV { 13581da177e4SLinus Torvalds address 0x02E 13591da177e4SLinus Torvalds access_mode RW 13601da177e4SLinus Torvalds modes M_CFG 13611da177e4SLinus Torvalds} 13621da177e4SLinus Torvalds 13631da177e4SLinus Torvalds/* 13641da177e4SLinus Torvalds * Rev B or greater. 13651da177e4SLinus Torvalds */ 13661da177e4SLinus Torvaldsregister SHORTTHRESH { 13671da177e4SLinus Torvalds address 0x02F 13681da177e4SLinus Torvalds access_mode RW 13691da177e4SLinus Torvalds modes M_CFG 13701da177e4SLinus Torvalds} 13711da177e4SLinus Torvalds 13721da177e4SLinus Torvalds/* 13731da177e4SLinus Torvalds * Logical Unit Number Length 13741da177e4SLinus Torvalds * The length, in bytes, of the SCB lun field. 13751da177e4SLinus Torvalds */ 13761da177e4SLinus Torvaldsregister LUNLEN { 13771da177e4SLinus Torvalds address 0x030 13781da177e4SLinus Torvalds access_mode RW 13791da177e4SLinus Torvalds modes M_CFG 13801da177e4SLinus Torvalds mask ILUNLEN 0x0F 13811da177e4SLinus Torvalds mask TLUNLEN 0xF0 13821da177e4SLinus Torvalds} 13831da177e4SLinus Torvaldsconst LUNLEN_SINGLE_LEVEL_LUN 0xF 13841da177e4SLinus Torvalds 13851da177e4SLinus Torvalds/* 13861da177e4SLinus Torvalds * CDB Limit 13871da177e4SLinus Torvalds * The size, in bytes, of the embedded CDB field in initator SCBs. 13881da177e4SLinus Torvalds */ 13891da177e4SLinus Torvaldsregister CDBLIMIT { 13901da177e4SLinus Torvalds address 0x031 13911da177e4SLinus Torvalds access_mode RW 13921da177e4SLinus Torvalds modes M_CFG 13931da177e4SLinus Torvalds} 13941da177e4SLinus Torvalds 13951da177e4SLinus Torvalds/* 13961da177e4SLinus Torvalds * Maximum Commands 13971da177e4SLinus Torvalds * The maximum number of commands to issue during a 13981da177e4SLinus Torvalds * single packetized connection. 13991da177e4SLinus Torvalds */ 14001da177e4SLinus Torvaldsregister MAXCMD { 14011da177e4SLinus Torvalds address 0x032 14021da177e4SLinus Torvalds access_mode RW 14031da177e4SLinus Torvalds modes M_CFG 14041da177e4SLinus Torvalds} 14051da177e4SLinus Torvalds 14061da177e4SLinus Torvalds/* 14071da177e4SLinus Torvalds * Maximum Command Counter 14081da177e4SLinus Torvalds * The number of commands already sent during this connection 14091da177e4SLinus Torvalds */ 14101da177e4SLinus Torvaldsregister MAXCMDCNT { 14111da177e4SLinus Torvalds address 0x033 14121da177e4SLinus Torvalds access_mode RW 14131da177e4SLinus Torvalds modes M_CFG 14141da177e4SLinus Torvalds} 14151da177e4SLinus Torvalds 14161da177e4SLinus Torvalds/* 14171da177e4SLinus Torvalds * LQ Packet Reserved Bytes 14181da177e4SLinus Torvalds * The bytes to be sent in the currently reserved fileds 14191da177e4SLinus Torvalds * of all LQ packets. 14201da177e4SLinus Torvalds */ 14211da177e4SLinus Torvaldsregister LQRSVD01 { 14221da177e4SLinus Torvalds address 0x034 14231da177e4SLinus Torvalds access_mode RW 14241da177e4SLinus Torvalds modes M_SCSI 14251da177e4SLinus Torvalds} 14261da177e4SLinus Torvaldsregister LQRSVD16 { 14271da177e4SLinus Torvalds address 0x035 14281da177e4SLinus Torvalds access_mode RW 14291da177e4SLinus Torvalds modes M_SCSI 14301da177e4SLinus Torvalds} 14311da177e4SLinus Torvaldsregister LQRSVD17 { 14321da177e4SLinus Torvalds address 0x036 14331da177e4SLinus Torvalds access_mode RW 14341da177e4SLinus Torvalds modes M_SCSI 14351da177e4SLinus Torvalds} 14361da177e4SLinus Torvalds 14371da177e4SLinus Torvalds/* 14381da177e4SLinus Torvalds * Command Reserved 0 14391da177e4SLinus Torvalds * The byte to be sent for the reserved byte 0 of 14401da177e4SLinus Torvalds * outgoing command packets. 14411da177e4SLinus Torvalds */ 14421da177e4SLinus Torvaldsregister CMDRSVD0 { 14431da177e4SLinus Torvalds address 0x037 14441da177e4SLinus Torvalds access_mode RW 14451da177e4SLinus Torvalds modes M_CFG 14461da177e4SLinus Torvalds} 14471da177e4SLinus Torvalds 14481da177e4SLinus Torvalds/* 14491da177e4SLinus Torvalds * LQ Manager Control 0 14501da177e4SLinus Torvalds */ 14511da177e4SLinus Torvaldsregister LQCTL0 { 14521da177e4SLinus Torvalds address 0x038 14531da177e4SLinus Torvalds access_mode RW 14541da177e4SLinus Torvalds modes M_CFG 14551da177e4SLinus Torvalds field LQITARGCLT 0xC0 14561da177e4SLinus Torvalds field LQIINITGCLT 0x30 14571da177e4SLinus Torvalds field LQ0TARGCLT 0x0C 14581da177e4SLinus Torvalds field LQ0INITGCLT 0x03 14591da177e4SLinus Torvalds} 14601da177e4SLinus Torvalds 14611da177e4SLinus Torvalds/* 14621da177e4SLinus Torvalds * LQ Manager Control 1 14631da177e4SLinus Torvalds */ 14641da177e4SLinus Torvaldsregister LQCTL1 { 14651da177e4SLinus Torvalds address 0x038 14661da177e4SLinus Torvalds access_mode RW 14671da177e4SLinus Torvalds modes M_DFF0, M_DFF1, M_SCSI 14681da177e4SLinus Torvalds field PCI2PCI 0x04 14691da177e4SLinus Torvalds field SINGLECMD 0x02 14701da177e4SLinus Torvalds field ABORTPENDING 0x01 14711da177e4SLinus Torvalds} 14721da177e4SLinus Torvalds 14731da177e4SLinus Torvalds/* 14741da177e4SLinus Torvalds * LQ Manager Control 2 14751da177e4SLinus Torvalds */ 14761da177e4SLinus Torvaldsregister LQCTL2 { 14771da177e4SLinus Torvalds address 0x039 14781da177e4SLinus Torvalds access_mode RW 14791da177e4SLinus Torvalds modes M_DFF0, M_DFF1, M_SCSI 14801da177e4SLinus Torvalds field LQIRETRY 0x80 14811da177e4SLinus Torvalds field LQICONTINUE 0x40 14821da177e4SLinus Torvalds field LQITOIDLE 0x20 14831da177e4SLinus Torvalds field LQIPAUSE 0x10 14841da177e4SLinus Torvalds field LQORETRY 0x08 14851da177e4SLinus Torvalds field LQOCONTINUE 0x04 14861da177e4SLinus Torvalds field LQOTOIDLE 0x02 14871da177e4SLinus Torvalds field LQOPAUSE 0x01 14881da177e4SLinus Torvalds} 14891da177e4SLinus Torvalds 14901da177e4SLinus Torvalds/* 14911da177e4SLinus Torvalds * SCSI RAM BIST0 14921da177e4SLinus Torvalds */ 14931da177e4SLinus Torvaldsregister SCSBIST0 { 14941da177e4SLinus Torvalds address 0x039 14951da177e4SLinus Torvalds access_mode RW 14961da177e4SLinus Torvalds modes M_CFG 14971da177e4SLinus Torvalds field GSBISTERR 0x40 14981da177e4SLinus Torvalds field GSBISTDONE 0x20 14991da177e4SLinus Torvalds field GSBISTRUN 0x10 15001da177e4SLinus Torvalds field OSBISTERR 0x04 15011da177e4SLinus Torvalds field OSBISTDONE 0x02 15021da177e4SLinus Torvalds field OSBISTRUN 0x01 15031da177e4SLinus Torvalds} 15041da177e4SLinus Torvalds 15051da177e4SLinus Torvalds/* 15061da177e4SLinus Torvalds * SCSI Sequence Control0 15071da177e4SLinus Torvalds */ 15081da177e4SLinus Torvaldsregister SCSISEQ0 { 15091da177e4SLinus Torvalds address 0x03A 15101da177e4SLinus Torvalds access_mode RW 15111da177e4SLinus Torvalds modes M_DFF0, M_DFF1, M_SCSI 15121da177e4SLinus Torvalds field TEMODEO 0x80 15131da177e4SLinus Torvalds field ENSELO 0x40 15141da177e4SLinus Torvalds field ENARBO 0x20 15151da177e4SLinus Torvalds field FORCEBUSFREE 0x10 15161da177e4SLinus Torvalds field SCSIRSTO 0x01 15171da177e4SLinus Torvalds} 15181da177e4SLinus Torvalds 15191da177e4SLinus Torvalds/* 15201da177e4SLinus Torvalds * SCSI RAM BIST 1 15211da177e4SLinus Torvalds */ 15221da177e4SLinus Torvaldsregister SCSBIST1 { 15231da177e4SLinus Torvalds address 0x03A 15241da177e4SLinus Torvalds access_mode RW 15251da177e4SLinus Torvalds modes M_CFG 15261da177e4SLinus Torvalds field NTBISTERR 0x04 15271da177e4SLinus Torvalds field NTBISTDONE 0x02 15281da177e4SLinus Torvalds field NTBISTRUN 0x01 15291da177e4SLinus Torvalds} 15301da177e4SLinus Torvalds 15311da177e4SLinus Torvalds/* 15321da177e4SLinus Torvalds * SCSI Sequence Control 1 15331da177e4SLinus Torvalds */ 15341da177e4SLinus Torvaldsregister SCSISEQ1 { 15351da177e4SLinus Torvalds address 0x03B 15361da177e4SLinus Torvalds access_mode RW 15371da177e4SLinus Torvalds modes M_DFF0, M_DFF1, M_SCSI 15381da177e4SLinus Torvalds field MANUALCTL 0x40 15391da177e4SLinus Torvalds field ENSELI 0x20 15401da177e4SLinus Torvalds field ENRSELI 0x10 15411da177e4SLinus Torvalds field MANUALP 0x0C 15421da177e4SLinus Torvalds field ENAUTOATNP 0x02 15431da177e4SLinus Torvalds field ALTSTIM 0x01 15441da177e4SLinus Torvalds} 15451da177e4SLinus Torvalds 15461da177e4SLinus Torvalds/* 15471da177e4SLinus Torvalds * SCSI Transfer Control 0 15481da177e4SLinus Torvalds */ 15491da177e4SLinus Torvaldsregister SXFRCTL0 { 15501da177e4SLinus Torvalds address 0x03C 15511da177e4SLinus Torvalds access_mode RW 15521da177e4SLinus Torvalds modes M_SCSI 15531da177e4SLinus Torvalds field DFON 0x80 15541da177e4SLinus Torvalds field DFPEXP 0x40 15551da177e4SLinus Torvalds field BIOSCANCELEN 0x10 15561da177e4SLinus Torvalds field SPIOEN 0x08 15571da177e4SLinus Torvalds} 15581da177e4SLinus Torvalds 15591da177e4SLinus Torvalds/* 15601da177e4SLinus Torvalds * SCSI Transfer Control 1 15611da177e4SLinus Torvalds */ 15621da177e4SLinus Torvaldsregister SXFRCTL1 { 15631da177e4SLinus Torvalds address 0x03D 15641da177e4SLinus Torvalds access_mode RW 15651da177e4SLinus Torvalds modes M_SCSI 15661da177e4SLinus Torvalds field BITBUCKET 0x80 15671da177e4SLinus Torvalds field ENSACHK 0x40 15681da177e4SLinus Torvalds field ENSPCHK 0x20 15691da177e4SLinus Torvalds field STIMESEL 0x18 15701da177e4SLinus Torvalds field ENSTIMER 0x04 15711da177e4SLinus Torvalds field ACTNEGEN 0x02 15721da177e4SLinus Torvalds field STPWEN 0x01 15731da177e4SLinus Torvalds} 15741da177e4SLinus Torvalds 15751da177e4SLinus Torvalds/* 15761da177e4SLinus Torvalds * SCSI Transfer Control 2 15771da177e4SLinus Torvalds */ 15781da177e4SLinus Torvaldsregister SXFRCTL2 { 15791da177e4SLinus Torvalds address 0x03E 15801da177e4SLinus Torvalds access_mode RW 15811da177e4SLinus Torvalds modes M_SCSI 15821da177e4SLinus Torvalds field AUTORSTDIS 0x10 15831da177e4SLinus Torvalds field CMDDMAEN 0x08 15841da177e4SLinus Torvalds field ASU 0x07 15851da177e4SLinus Torvalds} 15861da177e4SLinus Torvalds 15871da177e4SLinus Torvalds/* 15881da177e4SLinus Torvalds * SCSI Bus Initiator IDs 15891da177e4SLinus Torvalds * Bitmask of observed initiators on the bus. 15901da177e4SLinus Torvalds */ 15911da177e4SLinus Torvaldsregister BUSINITID { 15921da177e4SLinus Torvalds address 0x03C 15931da177e4SLinus Torvalds access_mode RW 15941da177e4SLinus Torvalds modes M_CFG 15951da177e4SLinus Torvalds size 2 15961da177e4SLinus Torvalds} 15971da177e4SLinus Torvalds 15981da177e4SLinus Torvalds/* 15991da177e4SLinus Torvalds * Data Length Counters 16001da177e4SLinus Torvalds * Packet byte counter. 16011da177e4SLinus Torvalds */ 16021da177e4SLinus Torvaldsregister DLCOUNT { 16031da177e4SLinus Torvalds address 0x03C 16041da177e4SLinus Torvalds access_mode RW 16051da177e4SLinus Torvalds modes M_DFF0, M_DFF1 16061da177e4SLinus Torvalds size 3 16071da177e4SLinus Torvalds} 16081da177e4SLinus Torvalds 16091da177e4SLinus Torvalds/* 16101da177e4SLinus Torvalds * Data FIFO Status 16111da177e4SLinus Torvalds */ 16121da177e4SLinus Torvaldsregister DFFSTAT { 16131da177e4SLinus Torvalds address 0x03F 16141da177e4SLinus Torvalds access_mode RW 16151da177e4SLinus Torvalds modes M_SCSI 16161da177e4SLinus Torvalds field FIFO1FREE 0x20 16171da177e4SLinus Torvalds field FIFO0FREE 0x10 16181da177e4SLinus Torvalds /* 16191da177e4SLinus Torvalds * On the B, this enum only works 16201da177e4SLinus Torvalds * in the read direction. For writes, 16211da177e4SLinus Torvalds * you must use the B version of the 16221da177e4SLinus Torvalds * CURRFIFO_0 definition which is defined 16231da177e4SLinus Torvalds * as a constant outside of this register 16241da177e4SLinus Torvalds * definition to avoid confusing the 16251da177e4SLinus Torvalds * register pretty printing code. 16261da177e4SLinus Torvalds */ 16271da177e4SLinus Torvalds enum CURRFIFO 0x03 { 16281da177e4SLinus Torvalds CURRFIFO_0, 16291da177e4SLinus Torvalds CURRFIFO_1, 16301da177e4SLinus Torvalds CURRFIFO_NONE 0x3 16311da177e4SLinus Torvalds } 16321da177e4SLinus Torvalds} 16331da177e4SLinus Torvalds 16341da177e4SLinus Torvaldsconst B_CURRFIFO_0 0x2 16351da177e4SLinus Torvalds 16361da177e4SLinus Torvalds/* 16371da177e4SLinus Torvalds * SCSI Bus Target IDs 16381da177e4SLinus Torvalds * Bitmask of observed targets on the bus. 16391da177e4SLinus Torvalds */ 16401da177e4SLinus Torvaldsregister BUSTARGID { 16411da177e4SLinus Torvalds address 0x03E 16421da177e4SLinus Torvalds access_mode RW 16431da177e4SLinus Torvalds modes M_CFG 16441da177e4SLinus Torvalds size 2 16451da177e4SLinus Torvalds} 16461da177e4SLinus Torvalds 16471da177e4SLinus Torvalds/* 16481da177e4SLinus Torvalds * SCSI Control Signal Out 16491da177e4SLinus Torvalds */ 16501da177e4SLinus Torvaldsregister SCSISIGO { 16511da177e4SLinus Torvalds address 0x040 16521da177e4SLinus Torvalds access_mode RW 16531da177e4SLinus Torvalds modes M_DFF0, M_DFF1, M_SCSI 16541da177e4SLinus Torvalds field CDO 0x80 16551da177e4SLinus Torvalds field IOO 0x40 16561da177e4SLinus Torvalds field MSGO 0x20 16571da177e4SLinus Torvalds field ATNO 0x10 16581da177e4SLinus Torvalds field SELO 0x08 16591da177e4SLinus Torvalds field BSYO 0x04 16601da177e4SLinus Torvalds field REQO 0x02 16611da177e4SLinus Torvalds field ACKO 0x01 16621da177e4SLinus Torvalds/* 16631da177e4SLinus Torvalds * Possible phases to write into SCSISIG0 16641da177e4SLinus Torvalds */ 16651da177e4SLinus Torvalds enum PHASE_MASK CDO|IOO|MSGO { 16661da177e4SLinus Torvalds P_DATAOUT 0x0, 16671da177e4SLinus Torvalds P_DATAIN IOO, 16681da177e4SLinus Torvalds P_DATAOUT_DT P_DATAOUT|MSGO, 16691da177e4SLinus Torvalds P_DATAIN_DT P_DATAIN|MSGO, 16701da177e4SLinus Torvalds P_COMMAND CDO, 16711da177e4SLinus Torvalds P_MESGOUT CDO|MSGO, 16721da177e4SLinus Torvalds P_STATUS CDO|IOO, 16731da177e4SLinus Torvalds P_MESGIN CDO|IOO|MSGO 16741da177e4SLinus Torvalds } 16751da177e4SLinus Torvalds} 16761da177e4SLinus Torvalds 16771da177e4SLinus Torvaldsregister SCSISIGI { 16781da177e4SLinus Torvalds address 0x041 16791da177e4SLinus Torvalds access_mode RO 16801da177e4SLinus Torvalds modes M_DFF0, M_DFF1, M_SCSI 16811da177e4SLinus Torvalds field CDI 0x80 16821da177e4SLinus Torvalds field IOI 0x40 16831da177e4SLinus Torvalds field MSGI 0x20 16841da177e4SLinus Torvalds field ATNI 0x10 16851da177e4SLinus Torvalds field SELI 0x08 16861da177e4SLinus Torvalds field BSYI 0x04 16871da177e4SLinus Torvalds field REQI 0x02 16881da177e4SLinus Torvalds field ACKI 0x01 16891da177e4SLinus Torvalds/* 16901da177e4SLinus Torvalds * Possible phases in SCSISIGI 16911da177e4SLinus Torvalds */ 16921da177e4SLinus Torvalds enum PHASE_MASK CDO|IOO|MSGO { 16931da177e4SLinus Torvalds P_DATAOUT 0x0, 16941da177e4SLinus Torvalds P_DATAIN IOO, 16951da177e4SLinus Torvalds P_DATAOUT_DT P_DATAOUT|MSGO, 16961da177e4SLinus Torvalds P_DATAIN_DT P_DATAIN|MSGO, 16971da177e4SLinus Torvalds P_COMMAND CDO, 16981da177e4SLinus Torvalds P_MESGOUT CDO|MSGO, 16991da177e4SLinus Torvalds P_STATUS CDO|IOO, 17001da177e4SLinus Torvalds P_MESGIN CDO|IOO|MSGO 17011da177e4SLinus Torvalds } 17021da177e4SLinus Torvalds} 17031da177e4SLinus Torvalds 17041da177e4SLinus Torvalds/* 17051da177e4SLinus Torvalds * Multiple Target IDs 17061da177e4SLinus Torvalds * Bitmask of ids to respond as a target. 17071da177e4SLinus Torvalds */ 17081da177e4SLinus Torvaldsregister MULTARGID { 17091da177e4SLinus Torvalds address 0x040 17101da177e4SLinus Torvalds access_mode RW 17111da177e4SLinus Torvalds modes M_CFG 17121da177e4SLinus Torvalds size 2 17131da177e4SLinus Torvalds} 17141da177e4SLinus Torvalds 17151da177e4SLinus Torvalds/* 17161da177e4SLinus Torvalds * SCSI Phase 17171da177e4SLinus Torvalds */ 17181da177e4SLinus Torvaldsregister SCSIPHASE { 17191da177e4SLinus Torvalds address 0x042 17201da177e4SLinus Torvalds access_mode RO 17211da177e4SLinus Torvalds modes M_DFF0, M_DFF1, M_SCSI 17221da177e4SLinus Torvalds field STATUS_PHASE 0x20 17231da177e4SLinus Torvalds field COMMAND_PHASE 0x10 17241da177e4SLinus Torvalds field MSG_IN_PHASE 0x08 17251da177e4SLinus Torvalds field MSG_OUT_PHASE 0x04 17261da177e4SLinus Torvalds field DATA_PHASE_MASK 0x03 { 17271da177e4SLinus Torvalds DATA_OUT_PHASE 0x01, 17281da177e4SLinus Torvalds DATA_IN_PHASE 0x02 17291da177e4SLinus Torvalds } 17301da177e4SLinus Torvalds} 17311da177e4SLinus Torvalds 17321da177e4SLinus Torvalds/* 17331da177e4SLinus Torvalds * SCSI Data 0 Image 17341da177e4SLinus Torvalds */ 17351da177e4SLinus Torvaldsregister SCSIDAT0_IMG { 17361da177e4SLinus Torvalds address 0x043 17371da177e4SLinus Torvalds access_mode RW 17381da177e4SLinus Torvalds modes M_DFF0, M_DFF1, M_SCSI 17391da177e4SLinus Torvalds} 17401da177e4SLinus Torvalds 17411da177e4SLinus Torvalds/* 17421da177e4SLinus Torvalds * SCSI Latched Data 17431da177e4SLinus Torvalds */ 17441da177e4SLinus Torvaldsregister SCSIDAT { 17451da177e4SLinus Torvalds address 0x044 17461da177e4SLinus Torvalds access_mode RW 17471da177e4SLinus Torvalds modes M_DFF0, M_DFF1, M_SCSI 17481da177e4SLinus Torvalds size 2 17491da177e4SLinus Torvalds} 17501da177e4SLinus Torvalds 17511da177e4SLinus Torvalds/* 17521da177e4SLinus Torvalds * SCSI Data Bus 17531da177e4SLinus Torvalds */ 17541da177e4SLinus Torvaldsregister SCSIBUS { 17551da177e4SLinus Torvalds address 0x046 17561da177e4SLinus Torvalds access_mode RW 17571da177e4SLinus Torvalds modes M_DFF0, M_DFF1, M_SCSI 17581da177e4SLinus Torvalds size 2 17591da177e4SLinus Torvalds} 17601da177e4SLinus Torvalds 17611da177e4SLinus Torvalds/* 17621da177e4SLinus Torvalds * Target ID In 17631da177e4SLinus Torvalds */ 17641da177e4SLinus Torvaldsregister TARGIDIN { 17651da177e4SLinus Torvalds address 0x048 17661da177e4SLinus Torvalds access_mode RO 17671da177e4SLinus Torvalds modes M_DFF0, M_DFF1, M_SCSI 17681da177e4SLinus Torvalds field CLKOUT 0x80 17691da177e4SLinus Torvalds field TARGID 0x0F 17701da177e4SLinus Torvalds} 17711da177e4SLinus Torvalds 17721da177e4SLinus Torvalds/* 17731da177e4SLinus Torvalds * Selection/Reselection ID 17741da177e4SLinus Torvalds * Upper four bits are the device id. The ONEBIT is set when the re/selecting 17751da177e4SLinus Torvalds * device did not set its own ID. 17761da177e4SLinus Torvalds */ 17771da177e4SLinus Torvaldsregister SELID { 17781da177e4SLinus Torvalds address 0x049 17791da177e4SLinus Torvalds access_mode RW 17801da177e4SLinus Torvalds modes M_DFF0, M_DFF1, M_SCSI 17811da177e4SLinus Torvalds field SELID_MASK 0xf0 17821da177e4SLinus Torvalds field ONEBIT 0x08 17831da177e4SLinus Torvalds} 17841da177e4SLinus Torvalds 17851da177e4SLinus Torvalds/* 17861da177e4SLinus Torvalds * SCSI Block Control 17871da177e4SLinus Torvalds * Controls Bus type and channel selection. SELWIDE allows for the 17881da177e4SLinus Torvalds * coexistence of 8bit and 16bit devices on a wide bus. 17891da177e4SLinus Torvalds */ 17901da177e4SLinus Torvaldsregister SBLKCTL { 17911da177e4SLinus Torvalds address 0x04A 17921da177e4SLinus Torvalds access_mode RW 17931da177e4SLinus Torvalds modes M_DFF0, M_DFF1, M_SCSI 17941da177e4SLinus Torvalds field DIAGLEDEN 0x80 17951da177e4SLinus Torvalds field DIAGLEDON 0x40 17961da177e4SLinus Torvalds field ENAB40 0x08 /* LVD transceiver active */ 17971da177e4SLinus Torvalds field ENAB20 0x04 /* SE/HVD transceiver active */ 17981da177e4SLinus Torvalds field SELWIDE 0x02 17991da177e4SLinus Torvalds} 18001da177e4SLinus Torvalds 18011da177e4SLinus Torvalds/* 18021da177e4SLinus Torvalds * Option Mode 18031da177e4SLinus Torvalds */ 18041da177e4SLinus Torvaldsregister OPTIONMODE { 18051da177e4SLinus Torvalds address 0x04A 18061da177e4SLinus Torvalds access_mode RW 18071da177e4SLinus Torvalds modes M_CFG 18081da177e4SLinus Torvalds field BIOSCANCTL 0x80 18091da177e4SLinus Torvalds field AUTOACKEN 0x40 18101da177e4SLinus Torvalds field BIASCANCTL 0x20 18111da177e4SLinus Torvalds field BUSFREEREV 0x10 18121da177e4SLinus Torvalds field ENDGFORMCHK 0x04 18131da177e4SLinus Torvalds field AUTO_MSGOUT_DE 0x02 18141da177e4SLinus Torvalds mask OPTIONMODE_DEFAULTS AUTO_MSGOUT_DE 18151da177e4SLinus Torvalds} 18161da177e4SLinus Torvalds 18171da177e4SLinus Torvalds/* 18181da177e4SLinus Torvalds * SCSI Status 0 18191da177e4SLinus Torvalds */ 18201da177e4SLinus Torvaldsregister SSTAT0 { 18211da177e4SLinus Torvalds address 0x04B 18221da177e4SLinus Torvalds access_mode RO 18231da177e4SLinus Torvalds modes M_DFF0, M_DFF1, M_SCSI 18241da177e4SLinus Torvalds field TARGET 0x80 /* Board acting as target */ 18251da177e4SLinus Torvalds field SELDO 0x40 /* Selection Done */ 18261da177e4SLinus Torvalds field SELDI 0x20 /* Board has been selected */ 18271da177e4SLinus Torvalds field SELINGO 0x10 /* Selection In Progress */ 18281da177e4SLinus Torvalds field IOERR 0x08 /* LVD Tranceiver mode changed */ 18291da177e4SLinus Torvalds field OVERRUN 0x04 /* SCSI Offset overrun detected */ 18301da177e4SLinus Torvalds field SPIORDY 0x02 /* SCSI PIO Ready */ 18311da177e4SLinus Torvalds field ARBDO 0x01 /* Arbitration Done Out */ 18321da177e4SLinus Torvalds} 18331da177e4SLinus Torvalds 18341da177e4SLinus Torvalds/* 18351da177e4SLinus Torvalds * Clear SCSI Interrupt 0 18361da177e4SLinus Torvalds * Writing a 1 to a bit clears the associated SCSI Interrupt in SSTAT0. 18371da177e4SLinus Torvalds */ 18381da177e4SLinus Torvaldsregister CLRSINT0 { 18391da177e4SLinus Torvalds address 0x04B 18401da177e4SLinus Torvalds access_mode WO 18411da177e4SLinus Torvalds modes M_DFF0, M_DFF1, M_SCSI 18421da177e4SLinus Torvalds field CLRSELDO 0x40 18431da177e4SLinus Torvalds field CLRSELDI 0x20 18441da177e4SLinus Torvalds field CLRSELINGO 0x10 18451da177e4SLinus Torvalds field CLRIOERR 0x08 18461da177e4SLinus Torvalds field CLROVERRUN 0x04 18471da177e4SLinus Torvalds field CLRSPIORDY 0x02 18481da177e4SLinus Torvalds field CLRARBDO 0x01 18491da177e4SLinus Torvalds} 18501da177e4SLinus Torvalds 18511da177e4SLinus Torvalds/* 18521da177e4SLinus Torvalds * SCSI Interrupt Mode 0 18531da177e4SLinus Torvalds * Setting any bit will enable the corresponding function 18541da177e4SLinus Torvalds * in SIMODE0 to interrupt via the IRQ pin. 18551da177e4SLinus Torvalds */ 18561da177e4SLinus Torvaldsregister SIMODE0 { 18571da177e4SLinus Torvalds address 0x04B 18581da177e4SLinus Torvalds access_mode RW 18591da177e4SLinus Torvalds modes M_CFG 18601da177e4SLinus Torvalds field ENSELDO 0x40 18611da177e4SLinus Torvalds field ENSELDI 0x20 18621da177e4SLinus Torvalds field ENSELINGO 0x10 18631da177e4SLinus Torvalds field ENIOERR 0x08 18641da177e4SLinus Torvalds field ENOVERRUN 0x04 18651da177e4SLinus Torvalds field ENSPIORDY 0x02 18661da177e4SLinus Torvalds field ENARBDO 0x01 18671da177e4SLinus Torvalds} 18681da177e4SLinus Torvalds 18691da177e4SLinus Torvalds/* 18701da177e4SLinus Torvalds * SCSI Status 1 18711da177e4SLinus Torvalds */ 18721da177e4SLinus Torvaldsregister SSTAT1 { 18731da177e4SLinus Torvalds address 0x04C 18741da177e4SLinus Torvalds access_mode RO 18751da177e4SLinus Torvalds modes M_DFF0, M_DFF1, M_SCSI 18761da177e4SLinus Torvalds field SELTO 0x80 18771da177e4SLinus Torvalds field ATNTARG 0x40 18781da177e4SLinus Torvalds field SCSIRSTI 0x20 18791da177e4SLinus Torvalds field PHASEMIS 0x10 18801da177e4SLinus Torvalds field BUSFREE 0x08 18811da177e4SLinus Torvalds field SCSIPERR 0x04 18821da177e4SLinus Torvalds field STRB2FAST 0x02 18831da177e4SLinus Torvalds field REQINIT 0x01 18841da177e4SLinus Torvalds} 18851da177e4SLinus Torvalds 18861da177e4SLinus Torvalds/* 18871da177e4SLinus Torvalds * Clear SCSI Interrupt 1 18881da177e4SLinus Torvalds * Writing a 1 to a bit clears the associated SCSI Interrupt in SSTAT1. 18891da177e4SLinus Torvalds */ 18901da177e4SLinus Torvaldsregister CLRSINT1 { 18911da177e4SLinus Torvalds address 0x04C 18921da177e4SLinus Torvalds access_mode WO 18931da177e4SLinus Torvalds modes M_DFF0, M_DFF1, M_SCSI 18941da177e4SLinus Torvalds field CLRSELTIMEO 0x80 18951da177e4SLinus Torvalds field CLRATNO 0x40 18961da177e4SLinus Torvalds field CLRSCSIRSTI 0x20 18971da177e4SLinus Torvalds field CLRBUSFREE 0x08 18981da177e4SLinus Torvalds field CLRSCSIPERR 0x04 18991da177e4SLinus Torvalds field CLRSTRB2FAST 0x02 19001da177e4SLinus Torvalds field CLRREQINIT 0x01 19011da177e4SLinus Torvalds} 19021da177e4SLinus Torvalds 19031da177e4SLinus Torvalds/* 19041da177e4SLinus Torvalds * SCSI Status 2 19051da177e4SLinus Torvalds */ 19061da177e4SLinus Torvaldsregister SSTAT2 { 19071da177e4SLinus Torvalds address 0x04d 19081da177e4SLinus Torvalds access_mode RO 19091da177e4SLinus Torvalds modes M_DFF0, M_DFF1, M_SCSI 19101da177e4SLinus Torvalds field BUSFREETIME 0xc0 { 19111da177e4SLinus Torvalds BUSFREE_LQO 0x40, 19121da177e4SLinus Torvalds BUSFREE_DFF0 0x80, 19131da177e4SLinus Torvalds BUSFREE_DFF1 0xC0 19141da177e4SLinus Torvalds } 19151da177e4SLinus Torvalds field NONPACKREQ 0x20 19161da177e4SLinus Torvalds field EXP_ACTIVE 0x10 /* SCSI Expander Active */ 19171da177e4SLinus Torvalds field BSYX 0x08 /* Busy Expander */ 19181da177e4SLinus Torvalds field WIDE_RES 0x04 /* Modes 0 and 1 only */ 19191da177e4SLinus Torvalds field SDONE 0x02 /* Modes 0 and 1 only */ 19201da177e4SLinus Torvalds field DMADONE 0x01 /* Modes 0 and 1 only */ 19211da177e4SLinus Torvalds} 19221da177e4SLinus Torvalds 19231da177e4SLinus Torvalds/* 19241da177e4SLinus Torvalds * Clear SCSI Interrupt 2 19251da177e4SLinus Torvalds */ 19261da177e4SLinus Torvaldsregister CLRSINT2 { 19271da177e4SLinus Torvalds address 0x04D 19281da177e4SLinus Torvalds access_mode WO 19291da177e4SLinus Torvalds modes M_DFF0, M_DFF1, M_SCSI 19301da177e4SLinus Torvalds field CLRNONPACKREQ 0x20 19311da177e4SLinus Torvalds field CLRWIDE_RES 0x04 /* Modes 0 and 1 only */ 19321da177e4SLinus Torvalds field CLRSDONE 0x02 /* Modes 0 and 1 only */ 19331da177e4SLinus Torvalds field CLRDMADONE 0x01 /* Modes 0 and 1 only */ 19341da177e4SLinus Torvalds} 19351da177e4SLinus Torvalds 19361da177e4SLinus Torvalds/* 19371da177e4SLinus Torvalds * SCSI Interrupt Mode 2 19381da177e4SLinus Torvalds */ 19391da177e4SLinus Torvaldsregister SIMODE2 { 19401da177e4SLinus Torvalds address 0x04D 19411da177e4SLinus Torvalds access_mode RW 19421da177e4SLinus Torvalds modes M_CFG 19431da177e4SLinus Torvalds field ENWIDE_RES 0x04 19441da177e4SLinus Torvalds field ENSDONE 0x02 19451da177e4SLinus Torvalds field ENDMADONE 0x01 19461da177e4SLinus Torvalds} 19471da177e4SLinus Torvalds 19481da177e4SLinus Torvalds/* 19491da177e4SLinus Torvalds * Physical Error Diagnosis 19501da177e4SLinus Torvalds */ 19511da177e4SLinus Torvaldsregister PERRDIAG { 19521da177e4SLinus Torvalds address 0x04E 19531da177e4SLinus Torvalds access_mode RO 19541da177e4SLinus Torvalds modes M_DFF0, M_DFF1, M_SCSI 19551da177e4SLinus Torvalds field HIZERO 0x80 19561da177e4SLinus Torvalds field HIPERR 0x40 19571da177e4SLinus Torvalds field PREVPHASE 0x20 19581da177e4SLinus Torvalds field PARITYERR 0x10 19591da177e4SLinus Torvalds field AIPERR 0x08 19601da177e4SLinus Torvalds field CRCERR 0x04 19611da177e4SLinus Torvalds field DGFORMERR 0x02 19621da177e4SLinus Torvalds field DTERR 0x01 19631da177e4SLinus Torvalds} 19641da177e4SLinus Torvalds 19651da177e4SLinus Torvalds/* 19661da177e4SLinus Torvalds * LQI Manager Current State 19671da177e4SLinus Torvalds */ 19681da177e4SLinus Torvaldsregister LQISTATE { 19691da177e4SLinus Torvalds address 0x04E 19701da177e4SLinus Torvalds access_mode RO 19711da177e4SLinus Torvalds modes M_CFG 19721da177e4SLinus Torvalds} 19731da177e4SLinus Torvalds 19741da177e4SLinus Torvalds/* 19751da177e4SLinus Torvalds * SCSI Offset Count 19761da177e4SLinus Torvalds */ 19771da177e4SLinus Torvaldsregister SOFFCNT { 19781da177e4SLinus Torvalds address 0x04F 19791da177e4SLinus Torvalds access_mode RO 19801da177e4SLinus Torvalds modes M_DFF0, M_DFF1, M_SCSI 19811da177e4SLinus Torvalds} 19821da177e4SLinus Torvalds 19831da177e4SLinus Torvalds/* 19841da177e4SLinus Torvalds * LQO Manager Current State 19851da177e4SLinus Torvalds */ 19861da177e4SLinus Torvaldsregister LQOSTATE { 19871da177e4SLinus Torvalds address 0x04F 19881da177e4SLinus Torvalds access_mode RO 19891da177e4SLinus Torvalds modes M_CFG 19901da177e4SLinus Torvalds} 19911da177e4SLinus Torvalds 19921da177e4SLinus Torvalds/* 19931da177e4SLinus Torvalds * LQI Manager Status 19941da177e4SLinus Torvalds */ 19951da177e4SLinus Torvaldsregister LQISTAT0 { 19961da177e4SLinus Torvalds address 0x050 19971da177e4SLinus Torvalds access_mode RO 19981da177e4SLinus Torvalds modes M_DFF0, M_DFF1, M_SCSI 19991da177e4SLinus Torvalds field LQIATNQAS 0x20 20001da177e4SLinus Torvalds field LQICRCT1 0x10 20011da177e4SLinus Torvalds field LQICRCT2 0x08 20021da177e4SLinus Torvalds field LQIBADLQT 0x04 20031da177e4SLinus Torvalds field LQIATNLQ 0x02 20041da177e4SLinus Torvalds field LQIATNCMD 0x01 20051da177e4SLinus Torvalds} 20061da177e4SLinus Torvalds 20071da177e4SLinus Torvalds/* 20081da177e4SLinus Torvalds * Clear LQI Interrupts 0 20091da177e4SLinus Torvalds */ 20101da177e4SLinus Torvaldsregister CLRLQIINT0 { 20111da177e4SLinus Torvalds address 0x050 20121da177e4SLinus Torvalds access_mode WO 20131da177e4SLinus Torvalds modes M_DFF0, M_DFF1, M_SCSI 20141da177e4SLinus Torvalds field CLRLQIATNQAS 0x20 20151da177e4SLinus Torvalds field CLRLQICRCT1 0x10 20161da177e4SLinus Torvalds field CLRLQICRCT2 0x08 20171da177e4SLinus Torvalds field CLRLQIBADLQT 0x04 20181da177e4SLinus Torvalds field CLRLQIATNLQ 0x02 20191da177e4SLinus Torvalds field CLRLQIATNCMD 0x01 20201da177e4SLinus Torvalds} 20211da177e4SLinus Torvalds 20221da177e4SLinus Torvalds/* 20231da177e4SLinus Torvalds * LQI Manager Interrupt Mode 0 20241da177e4SLinus Torvalds */ 20251da177e4SLinus Torvaldsregister LQIMODE0 { 20261da177e4SLinus Torvalds address 0x050 20271da177e4SLinus Torvalds access_mode RW 20281da177e4SLinus Torvalds modes M_CFG 20291da177e4SLinus Torvalds field ENLQIATNQASK 0x20 20301da177e4SLinus Torvalds field ENLQICRCT1 0x10 20311da177e4SLinus Torvalds field ENLQICRCT2 0x08 20321da177e4SLinus Torvalds field ENLQIBADLQT 0x04 20331da177e4SLinus Torvalds field ENLQIATNLQ 0x02 20341da177e4SLinus Torvalds field ENLQIATNCMD 0x01 20351da177e4SLinus Torvalds} 20361da177e4SLinus Torvalds 20371da177e4SLinus Torvalds/* 20381da177e4SLinus Torvalds * LQI Manager Status 1 20391da177e4SLinus Torvalds */ 20401da177e4SLinus Torvaldsregister LQISTAT1 { 20411da177e4SLinus Torvalds address 0x051 20421da177e4SLinus Torvalds access_mode RO 20431da177e4SLinus Torvalds modes M_DFF0, M_DFF1, M_SCSI 20441da177e4SLinus Torvalds field LQIPHASE_LQ 0x80 20451da177e4SLinus Torvalds field LQIPHASE_NLQ 0x40 20461da177e4SLinus Torvalds field LQIABORT 0x20 20471da177e4SLinus Torvalds field LQICRCI_LQ 0x10 20481da177e4SLinus Torvalds field LQICRCI_NLQ 0x08 20491da177e4SLinus Torvalds field LQIBADLQI 0x04 20501da177e4SLinus Torvalds field LQIOVERI_LQ 0x02 20511da177e4SLinus Torvalds field LQIOVERI_NLQ 0x01 20521da177e4SLinus Torvalds} 20531da177e4SLinus Torvalds 20541da177e4SLinus Torvalds/* 20551da177e4SLinus Torvalds * Clear LQI Manager Interrupts1 20561da177e4SLinus Torvalds */ 20571da177e4SLinus Torvaldsregister CLRLQIINT1 { 20581da177e4SLinus Torvalds address 0x051 20591da177e4SLinus Torvalds access_mode WO 20601da177e4SLinus Torvalds modes M_DFF0, M_DFF1, M_SCSI 20611da177e4SLinus Torvalds field CLRLQIPHASE_LQ 0x80 20621da177e4SLinus Torvalds field CLRLQIPHASE_NLQ 0x40 20631da177e4SLinus Torvalds field CLRLIQABORT 0x20 20641da177e4SLinus Torvalds field CLRLQICRCI_LQ 0x10 20651da177e4SLinus Torvalds field CLRLQICRCI_NLQ 0x08 20661da177e4SLinus Torvalds field CLRLQIBADLQI 0x04 20671da177e4SLinus Torvalds field CLRLQIOVERI_LQ 0x02 20681da177e4SLinus Torvalds field CLRLQIOVERI_NLQ 0x01 20691da177e4SLinus Torvalds} 20701da177e4SLinus Torvalds 20711da177e4SLinus Torvalds/* 20721da177e4SLinus Torvalds * LQI Manager Interrupt Mode 1 20731da177e4SLinus Torvalds */ 20741da177e4SLinus Torvaldsregister LQIMODE1 { 20751da177e4SLinus Torvalds address 0x051 20761da177e4SLinus Torvalds access_mode RW 20771da177e4SLinus Torvalds modes M_CFG 20781da177e4SLinus Torvalds field ENLQIPHASE_LQ 0x80 /* LQIPHASE1 */ 20791da177e4SLinus Torvalds field ENLQIPHASE_NLQ 0x40 /* LQIPHASE2 */ 20801da177e4SLinus Torvalds field ENLIQABORT 0x20 20811da177e4SLinus Torvalds field ENLQICRCI_LQ 0x10 /* LQICRCI1 */ 20821da177e4SLinus Torvalds field ENLQICRCI_NLQ 0x08 /* LQICRCI2 */ 20831da177e4SLinus Torvalds field ENLQIBADLQI 0x04 20841da177e4SLinus Torvalds field ENLQIOVERI_LQ 0x02 /* LQIOVERI1 */ 20851da177e4SLinus Torvalds field ENLQIOVERI_NLQ 0x01 /* LQIOVERI2 */ 20861da177e4SLinus Torvalds} 20871da177e4SLinus Torvalds 20881da177e4SLinus Torvalds/* 20891da177e4SLinus Torvalds * LQI Manager Status 2 20901da177e4SLinus Torvalds */ 20911da177e4SLinus Torvaldsregister LQISTAT2 { 20921da177e4SLinus Torvalds address 0x052 20931da177e4SLinus Torvalds access_mode RO 20941da177e4SLinus Torvalds modes M_DFF0, M_DFF1, M_SCSI 20951da177e4SLinus Torvalds field PACKETIZED 0x80 20961da177e4SLinus Torvalds field LQIPHASE_OUTPKT 0x40 20971da177e4SLinus Torvalds field LQIWORKONLQ 0x20 20981da177e4SLinus Torvalds field LQIWAITFIFO 0x10 20991da177e4SLinus Torvalds field LQISTOPPKT 0x08 21001da177e4SLinus Torvalds field LQISTOPLQ 0x04 21011da177e4SLinus Torvalds field LQISTOPCMD 0x02 21021da177e4SLinus Torvalds field LQIGSAVAIL 0x01 21031da177e4SLinus Torvalds} 21041da177e4SLinus Torvalds 21051da177e4SLinus Torvalds/* 21061da177e4SLinus Torvalds * SCSI Status 3 21071da177e4SLinus Torvalds */ 21081da177e4SLinus Torvaldsregister SSTAT3 { 21091da177e4SLinus Torvalds address 0x053 21101da177e4SLinus Torvalds access_mode RO 21111da177e4SLinus Torvalds modes M_DFF0, M_DFF1, M_SCSI 21121da177e4SLinus Torvalds field NTRAMPERR 0x02 21131da177e4SLinus Torvalds field OSRAMPERR 0x01 21141da177e4SLinus Torvalds} 21151da177e4SLinus Torvalds 21161da177e4SLinus Torvalds/* 21171da177e4SLinus Torvalds * Clear SCSI Status 3 21181da177e4SLinus Torvalds */ 21191da177e4SLinus Torvaldsregister CLRSINT3 { 21201da177e4SLinus Torvalds address 0x053 21211da177e4SLinus Torvalds access_mode WO 21221da177e4SLinus Torvalds modes M_DFF0, M_DFF1, M_SCSI 21231da177e4SLinus Torvalds field CLRNTRAMPERR 0x02 21241da177e4SLinus Torvalds field CLROSRAMPERR 0x01 21251da177e4SLinus Torvalds} 21261da177e4SLinus Torvalds 21271da177e4SLinus Torvalds/* 21281da177e4SLinus Torvalds * SCSI Interrupt Mode 3 21291da177e4SLinus Torvalds */ 21301da177e4SLinus Torvaldsregister SIMODE3 { 21311da177e4SLinus Torvalds address 0x053 21321da177e4SLinus Torvalds access_mode RW 21331da177e4SLinus Torvalds modes M_CFG 21341da177e4SLinus Torvalds field ENNTRAMPERR 0x02 21351da177e4SLinus Torvalds field ENOSRAMPERR 0x01 21361da177e4SLinus Torvalds} 21371da177e4SLinus Torvalds 21381da177e4SLinus Torvalds/* 21391da177e4SLinus Torvalds * LQO Manager Status 0 21401da177e4SLinus Torvalds */ 21411da177e4SLinus Torvaldsregister LQOSTAT0 { 21421da177e4SLinus Torvalds address 0x054 21431da177e4SLinus Torvalds access_mode RO 21441da177e4SLinus Torvalds modes M_DFF0, M_DFF1, M_SCSI 21451da177e4SLinus Torvalds field LQOTARGSCBPERR 0x10 21461da177e4SLinus Torvalds field LQOSTOPT2 0x08 21471da177e4SLinus Torvalds field LQOATNLQ 0x04 21481da177e4SLinus Torvalds field LQOATNPKT 0x02 21491da177e4SLinus Torvalds field LQOTCRC 0x01 21501da177e4SLinus Torvalds} 21511da177e4SLinus Torvalds 21521da177e4SLinus Torvalds/* 21531da177e4SLinus Torvalds * Clear LQO Manager interrupt 0 21541da177e4SLinus Torvalds */ 21551da177e4SLinus Torvaldsregister CLRLQOINT0 { 21561da177e4SLinus Torvalds address 0x054 21571da177e4SLinus Torvalds access_mode WO 21581da177e4SLinus Torvalds modes M_DFF0, M_DFF1, M_SCSI 21591da177e4SLinus Torvalds field CLRLQOTARGSCBPERR 0x10 21601da177e4SLinus Torvalds field CLRLQOSTOPT2 0x08 21611da177e4SLinus Torvalds field CLRLQOATNLQ 0x04 21621da177e4SLinus Torvalds field CLRLQOATNPKT 0x02 21631da177e4SLinus Torvalds field CLRLQOTCRC 0x01 21641da177e4SLinus Torvalds} 21651da177e4SLinus Torvalds 21661da177e4SLinus Torvalds/* 21671da177e4SLinus Torvalds * LQO Manager Interrupt Mode 0 21681da177e4SLinus Torvalds */ 21691da177e4SLinus Torvaldsregister LQOMODE0 { 21701da177e4SLinus Torvalds address 0x054 21711da177e4SLinus Torvalds access_mode RW 21721da177e4SLinus Torvalds modes M_CFG 21731da177e4SLinus Torvalds field ENLQOTARGSCBPERR 0x10 21741da177e4SLinus Torvalds field ENLQOSTOPT2 0x08 21751da177e4SLinus Torvalds field ENLQOATNLQ 0x04 21761da177e4SLinus Torvalds field ENLQOATNPKT 0x02 21771da177e4SLinus Torvalds field ENLQOTCRC 0x01 21781da177e4SLinus Torvalds} 21791da177e4SLinus Torvalds 21801da177e4SLinus Torvalds/* 21811da177e4SLinus Torvalds * LQO Manager Status 1 21821da177e4SLinus Torvalds */ 21831da177e4SLinus Torvaldsregister LQOSTAT1 { 21841da177e4SLinus Torvalds address 0x055 21851da177e4SLinus Torvalds access_mode RO 21861da177e4SLinus Torvalds modes M_DFF0, M_DFF1, M_SCSI 21871da177e4SLinus Torvalds field LQOINITSCBPERR 0x10 21881da177e4SLinus Torvalds field LQOSTOPI2 0x08 21891da177e4SLinus Torvalds field LQOBADQAS 0x04 21901da177e4SLinus Torvalds field LQOBUSFREE 0x02 21911da177e4SLinus Torvalds field LQOPHACHGINPKT 0x01 21921da177e4SLinus Torvalds} 21931da177e4SLinus Torvalds 21941da177e4SLinus Torvalds/* 21951da177e4SLinus Torvalds * Clear LOQ Interrupt 1 21961da177e4SLinus Torvalds */ 21971da177e4SLinus Torvaldsregister CLRLQOINT1 { 21981da177e4SLinus Torvalds address 0x055 21991da177e4SLinus Torvalds access_mode WO 22001da177e4SLinus Torvalds modes M_DFF0, M_DFF1, M_SCSI 22011da177e4SLinus Torvalds field CLRLQOINITSCBPERR 0x10 22021da177e4SLinus Torvalds field CLRLQOSTOPI2 0x08 22031da177e4SLinus Torvalds field CLRLQOBADQAS 0x04 22041da177e4SLinus Torvalds field CLRLQOBUSFREE 0x02 22051da177e4SLinus Torvalds field CLRLQOPHACHGINPKT 0x01 22061da177e4SLinus Torvalds} 22071da177e4SLinus Torvalds 22081da177e4SLinus Torvalds/* 22091da177e4SLinus Torvalds * LQO Manager Interrupt Mode 1 22101da177e4SLinus Torvalds */ 22111da177e4SLinus Torvaldsregister LQOMODE1 { 22121da177e4SLinus Torvalds address 0x055 22131da177e4SLinus Torvalds access_mode RW 22141da177e4SLinus Torvalds modes M_CFG 22151da177e4SLinus Torvalds field ENLQOINITSCBPERR 0x10 22161da177e4SLinus Torvalds field ENLQOSTOPI2 0x08 22171da177e4SLinus Torvalds field ENLQOBADQAS 0x04 22181da177e4SLinus Torvalds field ENLQOBUSFREE 0x02 22191da177e4SLinus Torvalds field ENLQOPHACHGINPKT 0x01 22201da177e4SLinus Torvalds} 22211da177e4SLinus Torvalds 22221da177e4SLinus Torvalds/* 22231da177e4SLinus Torvalds * LQO Manager Status 2 22241da177e4SLinus Torvalds */ 22251da177e4SLinus Torvaldsregister LQOSTAT2 { 22261da177e4SLinus Torvalds address 0x056 22271da177e4SLinus Torvalds access_mode RO 22281da177e4SLinus Torvalds modes M_DFF0, M_DFF1, M_SCSI 22291da177e4SLinus Torvalds field LQOPKT 0xE0 22301da177e4SLinus Torvalds field LQOWAITFIFO 0x10 22311da177e4SLinus Torvalds field LQOPHACHGOUTPKT 0x02 /* outside of packet boundaries. */ 22321da177e4SLinus Torvalds field LQOSTOP0 0x01 /* Stopped after sending all packets */ 22331da177e4SLinus Torvalds} 22341da177e4SLinus Torvalds 22351da177e4SLinus Torvalds/* 22361da177e4SLinus Torvalds * Output Synchronizer Space Count 22371da177e4SLinus Torvalds */ 22381da177e4SLinus Torvaldsregister OS_SPACE_CNT { 22391da177e4SLinus Torvalds address 0x056 22401da177e4SLinus Torvalds access_mode RO 22411da177e4SLinus Torvalds modes M_CFG 22421da177e4SLinus Torvalds} 22431da177e4SLinus Torvalds 22441da177e4SLinus Torvalds/* 22451da177e4SLinus Torvalds * SCSI Interrupt Mode 1 22461da177e4SLinus Torvalds * Setting any bit will enable the corresponding function 22471da177e4SLinus Torvalds * in SIMODE1 to interrupt via the IRQ pin. 22481da177e4SLinus Torvalds */ 22491da177e4SLinus Torvaldsregister SIMODE1 { 22501da177e4SLinus Torvalds address 0x057 22511da177e4SLinus Torvalds access_mode RW 22521da177e4SLinus Torvalds modes M_DFF0, M_DFF1, M_SCSI 22531da177e4SLinus Torvalds field ENSELTIMO 0x80 22541da177e4SLinus Torvalds field ENATNTARG 0x40 22551da177e4SLinus Torvalds field ENSCSIRST 0x20 22561da177e4SLinus Torvalds field ENPHASEMIS 0x10 22571da177e4SLinus Torvalds field ENBUSFREE 0x08 22581da177e4SLinus Torvalds field ENSCSIPERR 0x04 22591da177e4SLinus Torvalds field ENSTRB2FAST 0x02 22601da177e4SLinus Torvalds field ENREQINIT 0x01 22611da177e4SLinus Torvalds} 22621da177e4SLinus Torvalds 22631da177e4SLinus Torvalds/* 22641da177e4SLinus Torvalds * Good Status FIFO 22651da177e4SLinus Torvalds */ 22661da177e4SLinus Torvaldsregister GSFIFO { 22671da177e4SLinus Torvalds address 0x058 22681da177e4SLinus Torvalds access_mode RO 22691da177e4SLinus Torvalds size 2 22701da177e4SLinus Torvalds modes M_DFF0, M_DFF1, M_SCSI 22711da177e4SLinus Torvalds} 22721da177e4SLinus Torvalds 22731da177e4SLinus Torvalds/* 22741da177e4SLinus Torvalds * Data FIFO SCSI Transfer Control 22751da177e4SLinus Torvalds */ 22761da177e4SLinus Torvaldsregister DFFSXFRCTL { 22771da177e4SLinus Torvalds address 0x05A 22781da177e4SLinus Torvalds access_mode RW 22791da177e4SLinus Torvalds modes M_DFF0, M_DFF1 22801da177e4SLinus Torvalds field DFFBITBUCKET 0x08 22811da177e4SLinus Torvalds field CLRSHCNT 0x04 22821da177e4SLinus Torvalds field CLRCHN 0x02 22831da177e4SLinus Torvalds field RSTCHN 0x01 22841da177e4SLinus Torvalds} 22851da177e4SLinus Torvalds 22861da177e4SLinus Torvalds/* 22871da177e4SLinus Torvalds * Next SCSI Control Block 22881da177e4SLinus Torvalds */ 22891da177e4SLinus Torvaldsregister NEXTSCB { 22901da177e4SLinus Torvalds address 0x05A 22911da177e4SLinus Torvalds access_mode RW 22921da177e4SLinus Torvalds size 2 22931da177e4SLinus Torvalds modes M_SCSI 22941da177e4SLinus Torvalds} 22951da177e4SLinus Torvalds 22961da177e4SLinus Torvalds/* Rev B only. */ 22971da177e4SLinus Torvaldsregister LQOSCSCTL { 22981da177e4SLinus Torvalds address 0x05A 22991da177e4SLinus Torvalds access_mode RW 23001da177e4SLinus Torvalds size 1 23011da177e4SLinus Torvalds modes M_CFG 23021da177e4SLinus Torvalds field LQOH2A_VERSION 0x80 23031da177e4SLinus Torvalds field LQONOCHKOVER 0x01 23041da177e4SLinus Torvalds} 23051da177e4SLinus Torvalds 23061da177e4SLinus Torvalds/* 23071da177e4SLinus Torvalds * SEQ Interrupts 23081da177e4SLinus Torvalds */ 23091da177e4SLinus Torvaldsregister SEQINTSRC { 23101da177e4SLinus Torvalds address 0x05B 23111da177e4SLinus Torvalds access_mode RO 23121da177e4SLinus Torvalds modes M_DFF0, M_DFF1 23131da177e4SLinus Torvalds field CTXTDONE 0x40 23141da177e4SLinus Torvalds field SAVEPTRS 0x20 23151da177e4SLinus Torvalds field CFG4DATA 0x10 23161da177e4SLinus Torvalds field CFG4ISTAT 0x08 23171da177e4SLinus Torvalds field CFG4TSTAT 0x04 23181da177e4SLinus Torvalds field CFG4ICMD 0x02 23191da177e4SLinus Torvalds field CFG4TCMD 0x01 23201da177e4SLinus Torvalds} 23211da177e4SLinus Torvalds 23221da177e4SLinus Torvalds/* 23231da177e4SLinus Torvalds * Clear Arp Interrupts 23241da177e4SLinus Torvalds */ 23251da177e4SLinus Torvaldsregister CLRSEQINTSRC { 23261da177e4SLinus Torvalds address 0x05B 23271da177e4SLinus Torvalds access_mode WO 23281da177e4SLinus Torvalds modes M_DFF0, M_DFF1 23291da177e4SLinus Torvalds field CLRCTXTDONE 0x40 23301da177e4SLinus Torvalds field CLRSAVEPTRS 0x20 23311da177e4SLinus Torvalds field CLRCFG4DATA 0x10 23321da177e4SLinus Torvalds field CLRCFG4ISTAT 0x08 23331da177e4SLinus Torvalds field CLRCFG4TSTAT 0x04 23341da177e4SLinus Torvalds field CLRCFG4ICMD 0x02 23351da177e4SLinus Torvalds field CLRCFG4TCMD 0x01 23361da177e4SLinus Torvalds} 23371da177e4SLinus Torvalds 23381da177e4SLinus Torvalds/* 23391da177e4SLinus Torvalds * SEQ Interrupt Enabled (Shared) 23401da177e4SLinus Torvalds */ 23411da177e4SLinus Torvaldsregister SEQIMODE { 23421da177e4SLinus Torvalds address 0x05C 23431da177e4SLinus Torvalds access_mode RW 23441da177e4SLinus Torvalds modes M_DFF0, M_DFF1 23451da177e4SLinus Torvalds field ENCTXTDONE 0x40 23461da177e4SLinus Torvalds field ENSAVEPTRS 0x20 23471da177e4SLinus Torvalds field ENCFG4DATA 0x10 23481da177e4SLinus Torvalds field ENCFG4ISTAT 0x08 23491da177e4SLinus Torvalds field ENCFG4TSTAT 0x04 23501da177e4SLinus Torvalds field ENCFG4ICMD 0x02 23511da177e4SLinus Torvalds field ENCFG4TCMD 0x01 23521da177e4SLinus Torvalds} 23531da177e4SLinus Torvalds 23541da177e4SLinus Torvalds/* 23551da177e4SLinus Torvalds * Current SCSI Control Block 23561da177e4SLinus Torvalds */ 23571da177e4SLinus Torvaldsregister CURRSCB { 23581da177e4SLinus Torvalds address 0x05C 23591da177e4SLinus Torvalds access_mode RW 23601da177e4SLinus Torvalds size 2 23611da177e4SLinus Torvalds modes M_SCSI 23621da177e4SLinus Torvalds} 23631da177e4SLinus Torvalds 23641da177e4SLinus Torvalds/* 23651da177e4SLinus Torvalds * Data FIFO Status 23661da177e4SLinus Torvalds */ 23671da177e4SLinus Torvaldsregister MDFFSTAT { 23681da177e4SLinus Torvalds address 0x05D 23691da177e4SLinus Torvalds access_mode RO 23701da177e4SLinus Torvalds modes M_DFF0, M_DFF1 23711da177e4SLinus Torvalds field SHCNTNEGATIVE 0x40 /* Rev B or higher */ 23721da177e4SLinus Torvalds field SHCNTMINUS1 0x20 /* Rev B or higher */ 23731da177e4SLinus Torvalds field LASTSDONE 0x10 23741da177e4SLinus Torvalds field SHVALID 0x08 23751da177e4SLinus Torvalds field DLZERO 0x04 /* FIFO data ends on packet boundary. */ 23761da177e4SLinus Torvalds field DATAINFIFO 0x02 23771da177e4SLinus Torvalds field FIFOFREE 0x01 23781da177e4SLinus Torvalds} 23791da177e4SLinus Torvalds 23801da177e4SLinus Torvalds/* 23811da177e4SLinus Torvalds * CRC Control 23821da177e4SLinus Torvalds */ 23831da177e4SLinus Torvaldsregister CRCCONTROL { 23841da177e4SLinus Torvalds address 0x05d 23851da177e4SLinus Torvalds access_mode RW 23861da177e4SLinus Torvalds modes M_CFG 23871da177e4SLinus Torvalds field CRCVALCHKEN 0x40 23881da177e4SLinus Torvalds} 23891da177e4SLinus Torvalds 23901da177e4SLinus Torvalds/* 23911da177e4SLinus Torvalds * SCSI Test Control 23921da177e4SLinus Torvalds */ 23931da177e4SLinus Torvaldsregister SCSITEST { 23941da177e4SLinus Torvalds address 0x05E 23951da177e4SLinus Torvalds access_mode RW 23961da177e4SLinus Torvalds modes M_CFG 23971da177e4SLinus Torvalds field CNTRTEST 0x08 23981da177e4SLinus Torvalds field SEL_TXPLL_DEBUG 0x04 23991da177e4SLinus Torvalds} 24001da177e4SLinus Torvalds 24011da177e4SLinus Torvalds/* 24021da177e4SLinus Torvalds * Data FIFO Queue Tag 24031da177e4SLinus Torvalds */ 24041da177e4SLinus Torvaldsregister DFFTAG { 24051da177e4SLinus Torvalds address 0x05E 24061da177e4SLinus Torvalds access_mode RW 24071da177e4SLinus Torvalds size 2 24081da177e4SLinus Torvalds modes M_DFF0, M_DFF1 24091da177e4SLinus Torvalds} 24101da177e4SLinus Torvalds 24111da177e4SLinus Torvalds/* 24121da177e4SLinus Torvalds * Last SCSI Control Block 24131da177e4SLinus Torvalds */ 24141da177e4SLinus Torvaldsregister LASTSCB { 24151da177e4SLinus Torvalds address 0x05E 24161da177e4SLinus Torvalds access_mode RW 24171da177e4SLinus Torvalds size 2 24181da177e4SLinus Torvalds modes M_SCSI 24191da177e4SLinus Torvalds} 24201da177e4SLinus Torvalds 24211da177e4SLinus Torvalds/* 24221da177e4SLinus Torvalds * SCSI I/O Cell Power-down Control 24231da177e4SLinus Torvalds */ 24241da177e4SLinus Torvaldsregister IOPDNCTL { 24251da177e4SLinus Torvalds address 0x05F 24261da177e4SLinus Torvalds access_mode RW 24271da177e4SLinus Torvalds modes M_CFG 24281da177e4SLinus Torvalds field DISABLE_OE 0x80 24291da177e4SLinus Torvalds field PDN_IDIST 0x04 24301da177e4SLinus Torvalds field PDN_DIFFSENSE 0x01 24311da177e4SLinus Torvalds} 24321da177e4SLinus Torvalds 24331da177e4SLinus Torvalds/* 24341da177e4SLinus Torvalds * Shaddow Host Address. 24351da177e4SLinus Torvalds */ 24361da177e4SLinus Torvaldsregister SHADDR { 24371da177e4SLinus Torvalds address 0x060 24381da177e4SLinus Torvalds access_mode RO 24391da177e4SLinus Torvalds size 8 24401da177e4SLinus Torvalds modes M_DFF0, M_DFF1 24411da177e4SLinus Torvalds} 24421da177e4SLinus Torvalds 24431da177e4SLinus Torvalds/* 24441da177e4SLinus Torvalds * Data Group CRC Interval. 24451da177e4SLinus Torvalds */ 24461da177e4SLinus Torvaldsregister DGRPCRCI { 24471da177e4SLinus Torvalds address 0x060 24481da177e4SLinus Torvalds access_mode RW 24491da177e4SLinus Torvalds size 2 24501da177e4SLinus Torvalds modes M_CFG 24511da177e4SLinus Torvalds} 24521da177e4SLinus Torvalds 24531da177e4SLinus Torvalds/* 24541da177e4SLinus Torvalds * Data Transfer Negotiation Address 24551da177e4SLinus Torvalds */ 24561da177e4SLinus Torvaldsregister NEGOADDR { 24571da177e4SLinus Torvalds address 0x060 24581da177e4SLinus Torvalds access_mode RW 24591da177e4SLinus Torvalds modes M_SCSI 24601da177e4SLinus Torvalds} 24611da177e4SLinus Torvalds 24621da177e4SLinus Torvalds/* 24631da177e4SLinus Torvalds * Data Transfer Negotiation Data - Period Byte 24641da177e4SLinus Torvalds */ 24651da177e4SLinus Torvaldsregister NEGPERIOD { 24661da177e4SLinus Torvalds address 0x061 24671da177e4SLinus Torvalds access_mode RW 24681da177e4SLinus Torvalds modes M_SCSI 24691da177e4SLinus Torvalds} 24701da177e4SLinus Torvalds 24711da177e4SLinus Torvalds/* 24721da177e4SLinus Torvalds * Packetized CRC Interval 24731da177e4SLinus Torvalds */ 24741da177e4SLinus Torvaldsregister PACKCRCI { 24751da177e4SLinus Torvalds address 0x062 24761da177e4SLinus Torvalds access_mode RW 24771da177e4SLinus Torvalds size 2 24781da177e4SLinus Torvalds modes M_CFG 24791da177e4SLinus Torvalds} 24801da177e4SLinus Torvalds 24811da177e4SLinus Torvalds/* 24821da177e4SLinus Torvalds * Data Transfer Negotiation Data - Offset Byte 24831da177e4SLinus Torvalds */ 24841da177e4SLinus Torvaldsregister NEGOFFSET { 24851da177e4SLinus Torvalds address 0x062 24861da177e4SLinus Torvalds access_mode RW 24871da177e4SLinus Torvalds modes M_SCSI 24881da177e4SLinus Torvalds} 24891da177e4SLinus Torvalds 24901da177e4SLinus Torvalds/* 24911da177e4SLinus Torvalds * Data Transfer Negotiation Data - PPR Options 24921da177e4SLinus Torvalds */ 24931da177e4SLinus Torvaldsregister NEGPPROPTS { 24941da177e4SLinus Torvalds address 0x063 24951da177e4SLinus Torvalds access_mode RW 24961da177e4SLinus Torvalds modes M_SCSI 24971da177e4SLinus Torvalds field PPROPT_PACE 0x08 24981da177e4SLinus Torvalds field PPROPT_QAS 0x04 24991da177e4SLinus Torvalds field PPROPT_DT 0x02 25001da177e4SLinus Torvalds field PPROPT_IUT 0x01 25011da177e4SLinus Torvalds} 25021da177e4SLinus Torvalds 25031da177e4SLinus Torvalds/* 25041da177e4SLinus Torvalds * Data Transfer Negotiation Data - Connection Options 25051da177e4SLinus Torvalds */ 25061da177e4SLinus Torvaldsregister NEGCONOPTS { 25071da177e4SLinus Torvalds address 0x064 25081da177e4SLinus Torvalds access_mode RW 25091da177e4SLinus Torvalds modes M_SCSI 25101da177e4SLinus Torvalds field ENSNAPSHOT 0x40 25111da177e4SLinus Torvalds field RTI_WRTDIS 0x20 25121da177e4SLinus Torvalds field RTI_OVRDTRN 0x10 25131da177e4SLinus Torvalds field ENSLOWCRC 0x08 25141da177e4SLinus Torvalds field ENAUTOATNI 0x04 25151da177e4SLinus Torvalds field ENAUTOATNO 0x02 25161da177e4SLinus Torvalds field WIDEXFER 0x01 25171da177e4SLinus Torvalds} 25181da177e4SLinus Torvalds 25191da177e4SLinus Torvalds/* 25201da177e4SLinus Torvalds * Negotiation Table Annex Column Index. 25211da177e4SLinus Torvalds */ 25221da177e4SLinus Torvaldsregister ANNEXCOL { 25231da177e4SLinus Torvalds address 0x065 25241da177e4SLinus Torvalds access_mode RW 25251da177e4SLinus Torvalds modes M_SCSI 25261da177e4SLinus Torvalds} 25271da177e4SLinus Torvalds 25281da177e4SLinus Torvaldsregister SCSCHKN { 25291da177e4SLinus Torvalds address 0x066 25301da177e4SLinus Torvalds access_mode RW 25311da177e4SLinus Torvalds modes M_CFG 25321da177e4SLinus Torvalds field STSELSKIDDIS 0x40 25331da177e4SLinus Torvalds field CURRFIFODEF 0x20 25341da177e4SLinus Torvalds field WIDERESEN 0x10 25351da177e4SLinus Torvalds field SDONEMSKDIS 0x08 25361da177e4SLinus Torvalds field DFFACTCLR 0x04 25371da177e4SLinus Torvalds field SHVALIDSTDIS 0x02 25381da177e4SLinus Torvalds field LSTSGCLRDIS 0x01 25391da177e4SLinus Torvalds} 25401da177e4SLinus Torvalds 25411da177e4SLinus Torvaldsconst AHD_ANNEXCOL_PER_DEV0 4 25421da177e4SLinus Torvaldsconst AHD_NUM_PER_DEV_ANNEXCOLS 4 25431da177e4SLinus Torvaldsconst AHD_ANNEXCOL_PRECOMP_SLEW 4 25441da177e4SLinus Torvaldsconst AHD_PRECOMP_MASK 0x07 25451da177e4SLinus Torvaldsconst AHD_PRECOMP_SHIFT 0 25461da177e4SLinus Torvaldsconst AHD_PRECOMP_CUTBACK_17 0x04 25471da177e4SLinus Torvaldsconst AHD_PRECOMP_CUTBACK_29 0x06 25481da177e4SLinus Torvaldsconst AHD_PRECOMP_CUTBACK_37 0x07 25491da177e4SLinus Torvaldsconst AHD_SLEWRATE_MASK 0x78 25501da177e4SLinus Torvaldsconst AHD_SLEWRATE_SHIFT 3 25511da177e4SLinus Torvalds/* 25521da177e4SLinus Torvalds * Rev A has only a single bit (high bit of field) of slew adjustment. 25531da177e4SLinus Torvalds * Rev B has 4 bits. The current default happens to be the same for both. 25541da177e4SLinus Torvalds */ 25551da177e4SLinus Torvaldsconst AHD_SLEWRATE_DEF_REVA 0x08 25561da177e4SLinus Torvaldsconst AHD_SLEWRATE_DEF_REVB 0x08 25571da177e4SLinus Torvalds 25581da177e4SLinus Torvalds/* Rev A does not have any amplitude setting. */ 25591da177e4SLinus Torvaldsconst AHD_ANNEXCOL_AMPLITUDE 6 25601da177e4SLinus Torvaldsconst AHD_AMPLITUDE_MASK 0x7 25611da177e4SLinus Torvaldsconst AHD_AMPLITUDE_SHIFT 0 25621da177e4SLinus Torvaldsconst AHD_AMPLITUDE_DEF 0x7 25631da177e4SLinus Torvalds 25641da177e4SLinus Torvalds/* 25651da177e4SLinus Torvalds * Negotiation Table Annex Data Port. 25661da177e4SLinus Torvalds */ 25671da177e4SLinus Torvaldsregister ANNEXDAT { 25681da177e4SLinus Torvalds address 0x066 25691da177e4SLinus Torvalds access_mode RW 25701da177e4SLinus Torvalds modes M_SCSI 25711da177e4SLinus Torvalds} 25721da177e4SLinus Torvalds 25731da177e4SLinus Torvalds/* 25741da177e4SLinus Torvalds * Initiator's Own Id. 25751da177e4SLinus Torvalds * The SCSI ID to use for Selection Out and seen during a reselection.. 25761da177e4SLinus Torvalds */ 25771da177e4SLinus Torvaldsregister IOWNID { 25781da177e4SLinus Torvalds address 0x067 25791da177e4SLinus Torvalds access_mode RW 25801da177e4SLinus Torvalds modes M_SCSI 25811da177e4SLinus Torvalds} 25821da177e4SLinus Torvalds 25831da177e4SLinus Torvalds/* 25841da177e4SLinus Torvalds * 960MHz Phase-Locked Loop Control 0 25851da177e4SLinus Torvalds */ 25861da177e4SLinus Torvaldsregister PLL960CTL0 { 25871da177e4SLinus Torvalds address 0x068 25881da177e4SLinus Torvalds access_mode RW 25891da177e4SLinus Torvalds modes M_CFG 25901da177e4SLinus Torvalds field PLL_VCOSEL 0x80 25911da177e4SLinus Torvalds field PLL_PWDN 0x40 25921da177e4SLinus Torvalds field PLL_NS 0x30 25931da177e4SLinus Torvalds field PLL_ENLUD 0x08 25941da177e4SLinus Torvalds field PLL_ENLPF 0x04 25951da177e4SLinus Torvalds field PLL_DLPF 0x02 25961da177e4SLinus Torvalds field PLL_ENFBM 0x01 25971da177e4SLinus Torvalds} 25981da177e4SLinus Torvalds 25991da177e4SLinus Torvalds/* 26001da177e4SLinus Torvalds * Target Own Id 26011da177e4SLinus Torvalds */ 26021da177e4SLinus Torvaldsregister TOWNID { 26031da177e4SLinus Torvalds address 0x069 26041da177e4SLinus Torvalds access_mode RW 26051da177e4SLinus Torvalds modes M_SCSI 26061da177e4SLinus Torvalds} 26071da177e4SLinus Torvalds 26081da177e4SLinus Torvalds/* 26091da177e4SLinus Torvalds * 960MHz Phase-Locked Loop Control 1 26101da177e4SLinus Torvalds */ 26111da177e4SLinus Torvaldsregister PLL960CTL1 { 26121da177e4SLinus Torvalds address 0x069 26131da177e4SLinus Torvalds access_mode RW 26141da177e4SLinus Torvalds modes M_CFG 26151da177e4SLinus Torvalds field PLL_CNTEN 0x80 26161da177e4SLinus Torvalds field PLL_CNTCLR 0x40 26171da177e4SLinus Torvalds field PLL_RST 0x01 26181da177e4SLinus Torvalds} 26191da177e4SLinus Torvalds 26201da177e4SLinus Torvalds/* 26211da177e4SLinus Torvalds * Expander Signature 26221da177e4SLinus Torvalds */ 26231da177e4SLinus Torvaldsregister XSIG { 26241da177e4SLinus Torvalds address 0x06A 26251da177e4SLinus Torvalds access_mode RW 26261da177e4SLinus Torvalds modes M_SCSI 26271da177e4SLinus Torvalds} 26281da177e4SLinus Torvalds 26291da177e4SLinus Torvalds/* 26301da177e4SLinus Torvalds * Shadow Byte Count 26311da177e4SLinus Torvalds */ 26321da177e4SLinus Torvaldsregister SHCNT { 26331da177e4SLinus Torvalds address 0x068 26341da177e4SLinus Torvalds access_mode RW 26351da177e4SLinus Torvalds size 3 26361da177e4SLinus Torvalds modes M_DFF0, M_DFF1 26371da177e4SLinus Torvalds} 26381da177e4SLinus Torvalds 26391da177e4SLinus Torvalds/* 26401da177e4SLinus Torvalds * Selection Out ID 26411da177e4SLinus Torvalds */ 26421da177e4SLinus Torvaldsregister SELOID { 26431da177e4SLinus Torvalds address 0x06B 26441da177e4SLinus Torvalds access_mode RW 26451da177e4SLinus Torvalds modes M_SCSI 26461da177e4SLinus Torvalds} 26471da177e4SLinus Torvalds 26481da177e4SLinus Torvalds/* 26491da177e4SLinus Torvalds * 960-MHz Phase-Locked Loop Test Count 26501da177e4SLinus Torvalds */ 26511da177e4SLinus Torvaldsregister PLL960CNT0 { 26521da177e4SLinus Torvalds address 0x06A 26531da177e4SLinus Torvalds access_mode RO 26541da177e4SLinus Torvalds size 2 26551da177e4SLinus Torvalds modes M_CFG 26561da177e4SLinus Torvalds} 26571da177e4SLinus Torvalds 26581da177e4SLinus Torvalds/* 26591da177e4SLinus Torvalds * 400-MHz Phase-Locked Loop Control 0 26601da177e4SLinus Torvalds */ 26611da177e4SLinus Torvaldsregister PLL400CTL0 { 26621da177e4SLinus Torvalds address 0x06C 26631da177e4SLinus Torvalds access_mode RW 26641da177e4SLinus Torvalds modes M_CFG 26651da177e4SLinus Torvalds field PLL_VCOSEL 0x80 26661da177e4SLinus Torvalds field PLL_PWDN 0x40 26671da177e4SLinus Torvalds field PLL_NS 0x30 26681da177e4SLinus Torvalds field PLL_ENLUD 0x08 26691da177e4SLinus Torvalds field PLL_ENLPF 0x04 26701da177e4SLinus Torvalds field PLL_DLPF 0x02 26711da177e4SLinus Torvalds field PLL_ENFBM 0x01 26721da177e4SLinus Torvalds} 26731da177e4SLinus Torvalds 26741da177e4SLinus Torvalds/* 26751da177e4SLinus Torvalds * Arbitration Fairness 26761da177e4SLinus Torvalds */ 26771da177e4SLinus Torvaldsregister FAIRNESS { 26781da177e4SLinus Torvalds address 0x06C 26791da177e4SLinus Torvalds access_mode RW 26801da177e4SLinus Torvalds size 2 26811da177e4SLinus Torvalds modes M_SCSI 26821da177e4SLinus Torvalds} 26831da177e4SLinus Torvalds 26841da177e4SLinus Torvalds/* 26851da177e4SLinus Torvalds * 400-MHz Phase-Locked Loop Control 1 26861da177e4SLinus Torvalds */ 26871da177e4SLinus Torvaldsregister PLL400CTL1 { 26881da177e4SLinus Torvalds address 0x06D 26891da177e4SLinus Torvalds access_mode RW 26901da177e4SLinus Torvalds modes M_CFG 26911da177e4SLinus Torvalds field PLL_CNTEN 0x80 26921da177e4SLinus Torvalds field PLL_CNTCLR 0x40 26931da177e4SLinus Torvalds field PLL_RST 0x01 26941da177e4SLinus Torvalds} 26951da177e4SLinus Torvalds 26961da177e4SLinus Torvalds/* 26971da177e4SLinus Torvalds * Arbitration Unfairness 26981da177e4SLinus Torvalds */ 26991da177e4SLinus Torvaldsregister UNFAIRNESS { 27001da177e4SLinus Torvalds address 0x06E 27011da177e4SLinus Torvalds access_mode RW 27021da177e4SLinus Torvalds size 2 27031da177e4SLinus Torvalds modes M_SCSI 27041da177e4SLinus Torvalds} 27051da177e4SLinus Torvalds 27061da177e4SLinus Torvalds/* 27071da177e4SLinus Torvalds * 400-MHz Phase-Locked Loop Test Count 27081da177e4SLinus Torvalds */ 27091da177e4SLinus Torvaldsregister PLL400CNT0 { 27101da177e4SLinus Torvalds address 0x06E 27111da177e4SLinus Torvalds access_mode RO 27121da177e4SLinus Torvalds size 2 27131da177e4SLinus Torvalds modes M_CFG 27141da177e4SLinus Torvalds} 27151da177e4SLinus Torvalds 27161da177e4SLinus Torvalds/* 27171da177e4SLinus Torvalds * SCB Page Pointer 27181da177e4SLinus Torvalds */ 27191da177e4SLinus Torvaldsregister SCBPTR { 27201da177e4SLinus Torvalds address 0x0A8 27211da177e4SLinus Torvalds access_mode RW 27221da177e4SLinus Torvalds size 2 27231da177e4SLinus Torvalds modes M_DFF0, M_DFF1, M_CCHAN, M_SCSI 27241da177e4SLinus Torvalds} 27251da177e4SLinus Torvalds 27261da177e4SLinus Torvalds/* 27271da177e4SLinus Torvalds * CMC SCB Array Count 27281da177e4SLinus Torvalds * Number of bytes to transfer between CMC SCB memory and SCBRAM. 27291da177e4SLinus Torvalds * Transfers must be 8byte aligned and sized. 27301da177e4SLinus Torvalds */ 27311da177e4SLinus Torvaldsregister CCSCBACNT { 27321da177e4SLinus Torvalds address 0x0AB 27331da177e4SLinus Torvalds access_mode RW 27341da177e4SLinus Torvalds modes M_CCHAN 27351da177e4SLinus Torvalds} 27361da177e4SLinus Torvalds 27371da177e4SLinus Torvalds/* 27381da177e4SLinus Torvalds * SCB Autopointer 27391da177e4SLinus Torvalds * SCB-Next Address Snooping logic. When an SCB is transferred to 27401da177e4SLinus Torvalds * the card, the next SCB address to be used by the CMC array can 27411da177e4SLinus Torvalds * be autoloaded from that transfer. 27421da177e4SLinus Torvalds */ 27431da177e4SLinus Torvaldsregister SCBAUTOPTR { 27441da177e4SLinus Torvalds address 0x0AB 27451da177e4SLinus Torvalds access_mode RW 27461da177e4SLinus Torvalds modes M_CFG 27471da177e4SLinus Torvalds field AUSCBPTR_EN 0x80 27481da177e4SLinus Torvalds field SCBPTR_ADDR 0x38 27491da177e4SLinus Torvalds field SCBPTR_OFF 0x07 27501da177e4SLinus Torvalds} 27511da177e4SLinus Torvalds 27521da177e4SLinus Torvalds/* 27531da177e4SLinus Torvalds * CMC SG Ram Address Pointer 27541da177e4SLinus Torvalds */ 27551da177e4SLinus Torvaldsregister CCSGADDR { 27561da177e4SLinus Torvalds address 0x0AC 27571da177e4SLinus Torvalds access_mode RW 27581da177e4SLinus Torvalds modes M_DFF0, M_DFF1 27591da177e4SLinus Torvalds} 27601da177e4SLinus Torvalds 27611da177e4SLinus Torvalds/* 27621da177e4SLinus Torvalds * CMC SCB RAM Address Pointer 27631da177e4SLinus Torvalds */ 27641da177e4SLinus Torvaldsregister CCSCBADDR { 27651da177e4SLinus Torvalds address 0x0AC 27661da177e4SLinus Torvalds access_mode RW 27671da177e4SLinus Torvalds modes M_CCHAN 27681da177e4SLinus Torvalds} 27691da177e4SLinus Torvalds 27701da177e4SLinus Torvalds/* 27711da177e4SLinus Torvalds * CMC SCB Ram Back-up Address Pointer 27721da177e4SLinus Torvalds * Indicates the true stop location of transfers halted prior 27731da177e4SLinus Torvalds * to SCBHCNT going to 0. 27741da177e4SLinus Torvalds */ 27751da177e4SLinus Torvaldsregister CCSCBADR_BK { 27761da177e4SLinus Torvalds address 0x0AC 27771da177e4SLinus Torvalds access_mode RO 27781da177e4SLinus Torvalds modes M_CFG 27791da177e4SLinus Torvalds} 27801da177e4SLinus Torvalds 27811da177e4SLinus Torvalds/* 27821da177e4SLinus Torvalds * CMC SG Control 27831da177e4SLinus Torvalds */ 27841da177e4SLinus Torvaldsregister CCSGCTL { 27851da177e4SLinus Torvalds address 0x0AD 27861da177e4SLinus Torvalds access_mode RW 27871da177e4SLinus Torvalds modes M_DFF0, M_DFF1 27881da177e4SLinus Torvalds field CCSGDONE 0x80 27891da177e4SLinus Torvalds field SG_CACHE_AVAIL 0x10 27901da177e4SLinus Torvalds field CCSGENACK 0x08 27911da177e4SLinus Torvalds mask CCSGEN 0x0C 27921da177e4SLinus Torvalds field SG_FETCH_REQ 0x02 27931da177e4SLinus Torvalds field CCSGRESET 0x01 27941da177e4SLinus Torvalds} 27951da177e4SLinus Torvalds 27961da177e4SLinus Torvalds/* 27971da177e4SLinus Torvalds * CMD SCB Control 27981da177e4SLinus Torvalds */ 27991da177e4SLinus Torvaldsregister CCSCBCTL { 28001da177e4SLinus Torvalds address 0x0AD 28011da177e4SLinus Torvalds access_mode RW 28021da177e4SLinus Torvalds modes M_CCHAN 28031da177e4SLinus Torvalds field CCSCBDONE 0x80 28041da177e4SLinus Torvalds field ARRDONE 0x40 28051da177e4SLinus Torvalds field CCARREN 0x10 28061da177e4SLinus Torvalds field CCSCBEN 0x08 28071da177e4SLinus Torvalds field CCSCBDIR 0x04 28081da177e4SLinus Torvalds field CCSCBRESET 0x01 28091da177e4SLinus Torvalds} 28101da177e4SLinus Torvalds 28111da177e4SLinus Torvalds/* 28121da177e4SLinus Torvalds * CMC Ram BIST 28131da177e4SLinus Torvalds */ 28141da177e4SLinus Torvaldsregister CMC_RAMBIST { 28151da177e4SLinus Torvalds address 0x0AD 28161da177e4SLinus Torvalds access_mode RW 28171da177e4SLinus Torvalds modes M_CFG 28181da177e4SLinus Torvalds field SG_ELEMENT_SIZE 0x80 28191da177e4SLinus Torvalds field SCBRAMBIST_FAIL 0x40 28201da177e4SLinus Torvalds field SG_BIST_FAIL 0x20 28211da177e4SLinus Torvalds field SG_BIST_EN 0x10 28221da177e4SLinus Torvalds field CMC_BUFFER_BIST_FAIL 0x02 28231da177e4SLinus Torvalds field CMC_BUFFER_BIST_EN 0x01 28241da177e4SLinus Torvalds} 28251da177e4SLinus Torvalds 28261da177e4SLinus Torvalds/* 28271da177e4SLinus Torvalds * CMC SG RAM Data Port 28281da177e4SLinus Torvalds */ 28291da177e4SLinus Torvaldsregister CCSGRAM { 28301da177e4SLinus Torvalds address 0x0B0 28311da177e4SLinus Torvalds access_mode RW 28321da177e4SLinus Torvalds modes M_DFF0, M_DFF1 28331da177e4SLinus Torvalds} 28341da177e4SLinus Torvalds 28351da177e4SLinus Torvalds/* 28361da177e4SLinus Torvalds * CMC SCB RAM Data Port 28371da177e4SLinus Torvalds */ 28381da177e4SLinus Torvaldsregister CCSCBRAM { 28391da177e4SLinus Torvalds address 0x0B0 28401da177e4SLinus Torvalds access_mode RW 28411da177e4SLinus Torvalds modes M_CCHAN 28421da177e4SLinus Torvalds} 28431da177e4SLinus Torvalds 28441da177e4SLinus Torvalds/* 28451da177e4SLinus Torvalds * Flex DMA Address. 28461da177e4SLinus Torvalds */ 28471da177e4SLinus Torvaldsregister FLEXADR { 28481da177e4SLinus Torvalds address 0x0B0 28491da177e4SLinus Torvalds access_mode RW 28501da177e4SLinus Torvalds size 3 28511da177e4SLinus Torvalds modes M_SCSI 28521da177e4SLinus Torvalds} 28531da177e4SLinus Torvalds 28541da177e4SLinus Torvalds/* 28551da177e4SLinus Torvalds * Flex DMA Byte Count 28561da177e4SLinus Torvalds */ 28571da177e4SLinus Torvaldsregister FLEXCNT { 28581da177e4SLinus Torvalds address 0x0B3 28591da177e4SLinus Torvalds access_mode RW 28601da177e4SLinus Torvalds size 2 28611da177e4SLinus Torvalds modes M_SCSI 28621da177e4SLinus Torvalds} 28631da177e4SLinus Torvalds 28641da177e4SLinus Torvalds/* 28651da177e4SLinus Torvalds * Flex DMA Status 28661da177e4SLinus Torvalds */ 28671da177e4SLinus Torvaldsregister FLEXDMASTAT { 28681da177e4SLinus Torvalds address 0x0B5 28691da177e4SLinus Torvalds access_mode RW 28701da177e4SLinus Torvalds modes M_SCSI 28711da177e4SLinus Torvalds field FLEXDMAERR 0x02 28721da177e4SLinus Torvalds field FLEXDMADONE 0x01 28731da177e4SLinus Torvalds} 28741da177e4SLinus Torvalds 28751da177e4SLinus Torvalds/* 28761da177e4SLinus Torvalds * Flex DMA Data Port 28771da177e4SLinus Torvalds */ 28781da177e4SLinus Torvaldsregister FLEXDATA { 28791da177e4SLinus Torvalds address 0x0B6 28801da177e4SLinus Torvalds access_mode RW 28811da177e4SLinus Torvalds modes M_SCSI 28821da177e4SLinus Torvalds} 28831da177e4SLinus Torvalds 28841da177e4SLinus Torvalds/* 28851da177e4SLinus Torvalds * Board Data 28861da177e4SLinus Torvalds */ 28871da177e4SLinus Torvaldsregister BRDDAT { 28881da177e4SLinus Torvalds address 0x0B8 28891da177e4SLinus Torvalds access_mode RW 28901da177e4SLinus Torvalds modes M_SCSI 28911da177e4SLinus Torvalds} 28921da177e4SLinus Torvalds 28931da177e4SLinus Torvalds/* 28941da177e4SLinus Torvalds * Board Control 28951da177e4SLinus Torvalds */ 28961da177e4SLinus Torvaldsregister BRDCTL { 28971da177e4SLinus Torvalds address 0x0B9 28981da177e4SLinus Torvalds access_mode RW 28991da177e4SLinus Torvalds modes M_SCSI 29001da177e4SLinus Torvalds field FLXARBACK 0x80 29011da177e4SLinus Torvalds field FLXARBREQ 0x40 29021da177e4SLinus Torvalds field BRDADDR 0x38 29031da177e4SLinus Torvalds field BRDEN 0x04 29041da177e4SLinus Torvalds field BRDRW 0x02 29051da177e4SLinus Torvalds field BRDSTB 0x01 29061da177e4SLinus Torvalds} 29071da177e4SLinus Torvalds 29081da177e4SLinus Torvalds/* 29091da177e4SLinus Torvalds * Serial EEPROM Address 29101da177e4SLinus Torvalds */ 29111da177e4SLinus Torvaldsregister SEEADR { 29121da177e4SLinus Torvalds address 0x0BA 29131da177e4SLinus Torvalds access_mode RW 29141da177e4SLinus Torvalds modes M_SCSI 29151da177e4SLinus Torvalds} 29161da177e4SLinus Torvalds 29171da177e4SLinus Torvalds/* 29181da177e4SLinus Torvalds * Serial EEPROM Data 29191da177e4SLinus Torvalds */ 29201da177e4SLinus Torvaldsregister SEEDAT { 29211da177e4SLinus Torvalds address 0x0BC 29221da177e4SLinus Torvalds access_mode RW 29231da177e4SLinus Torvalds size 2 29241da177e4SLinus Torvalds modes M_SCSI 29251da177e4SLinus Torvalds} 29261da177e4SLinus Torvalds 29271da177e4SLinus Torvalds/* 29281da177e4SLinus Torvalds * Serial EEPROM Status 29291da177e4SLinus Torvalds */ 29301da177e4SLinus Torvaldsregister SEESTAT { 29311da177e4SLinus Torvalds address 0x0BE 29321da177e4SLinus Torvalds access_mode RO 29331da177e4SLinus Torvalds modes M_SCSI 29341da177e4SLinus Torvalds field INIT_DONE 0x80 29351da177e4SLinus Torvalds field SEEOPCODE 0x70 29361da177e4SLinus Torvalds field LDALTID_L 0x08 29371da177e4SLinus Torvalds field SEEARBACK 0x04 29381da177e4SLinus Torvalds field SEEBUSY 0x02 29391da177e4SLinus Torvalds field SEESTART 0x01 29401da177e4SLinus Torvalds} 29411da177e4SLinus Torvalds 29421da177e4SLinus Torvalds/* 29431da177e4SLinus Torvalds * Serial EEPROM Control 29441da177e4SLinus Torvalds */ 29451da177e4SLinus Torvaldsregister SEECTL { 29461da177e4SLinus Torvalds address 0x0BE 29471da177e4SLinus Torvalds access_mode RW 29481da177e4SLinus Torvalds modes M_SCSI 29491da177e4SLinus Torvalds field SEEOPCODE 0x70 { 29501da177e4SLinus Torvalds SEEOP_ERASE 0x70, 29511da177e4SLinus Torvalds SEEOP_READ 0x60, 29521da177e4SLinus Torvalds SEEOP_WRITE 0x50, 29531da177e4SLinus Torvalds /* 29541da177e4SLinus Torvalds * The following four commands use special 29551da177e4SLinus Torvalds * addresses for differentiation. 29561da177e4SLinus Torvalds */ 29571da177e4SLinus Torvalds SEEOP_ERAL 0x40 29581da177e4SLinus Torvalds } 29591da177e4SLinus Torvalds mask SEEOP_EWEN 0x40 29601da177e4SLinus Torvalds mask SEEOP_WALL 0x40 29611da177e4SLinus Torvalds mask SEEOP_EWDS 0x40 29621da177e4SLinus Torvalds field SEERST 0x02 29631da177e4SLinus Torvalds field SEESTART 0x01 29641da177e4SLinus Torvalds} 29651da177e4SLinus Torvalds 29661da177e4SLinus Torvaldsconst SEEOP_ERAL_ADDR 0x80 29671da177e4SLinus Torvaldsconst SEEOP_EWEN_ADDR 0xC0 29681da177e4SLinus Torvaldsconst SEEOP_WRAL_ADDR 0x40 29691da177e4SLinus Torvaldsconst SEEOP_EWDS_ADDR 0x00 29701da177e4SLinus Torvalds 29711da177e4SLinus Torvalds/* 29721da177e4SLinus Torvalds * SCB Counter 29731da177e4SLinus Torvalds */ 29741da177e4SLinus Torvaldsregister SCBCNT { 29751da177e4SLinus Torvalds address 0x0BF 29761da177e4SLinus Torvalds access_mode RW 29771da177e4SLinus Torvalds modes M_SCSI 29781da177e4SLinus Torvalds} 29791da177e4SLinus Torvalds 29801da177e4SLinus Torvalds/* 29811da177e4SLinus Torvalds * Data FIFO Write Address 29821da177e4SLinus Torvalds * Pointer to the next QWD location to be written to the data FIFO. 29831da177e4SLinus Torvalds */ 29841da177e4SLinus Torvaldsregister DFWADDR { 29851da177e4SLinus Torvalds address 0x0C0 29861da177e4SLinus Torvalds access_mode RW 29871da177e4SLinus Torvalds size 2 29881da177e4SLinus Torvalds modes M_DFF0, M_DFF1 29891da177e4SLinus Torvalds} 29901da177e4SLinus Torvalds 29911da177e4SLinus Torvalds/* 29921da177e4SLinus Torvalds * DSP Filter Control 29931da177e4SLinus Torvalds */ 29941da177e4SLinus Torvaldsregister DSPFLTRCTL { 29951da177e4SLinus Torvalds address 0x0C0 29961da177e4SLinus Torvalds access_mode RW 29971da177e4SLinus Torvalds modes M_CFG 29981da177e4SLinus Torvalds field FLTRDISABLE 0x20 29991da177e4SLinus Torvalds field EDGESENSE 0x10 30001da177e4SLinus Torvalds field DSPFCNTSEL 0x0F 30011da177e4SLinus Torvalds} 30021da177e4SLinus Torvalds 30031da177e4SLinus Torvalds/* 30041da177e4SLinus Torvalds * DSP Data Channel Control 30051da177e4SLinus Torvalds */ 30061da177e4SLinus Torvaldsregister DSPDATACTL { 30071da177e4SLinus Torvalds address 0x0C1 30081da177e4SLinus Torvalds access_mode RW 30091da177e4SLinus Torvalds modes M_CFG 30101da177e4SLinus Torvalds field BYPASSENAB 0x80 30111da177e4SLinus Torvalds field DESQDIS 0x10 30121da177e4SLinus Torvalds field RCVROFFSTDIS 0x04 30131da177e4SLinus Torvalds field XMITOFFSTDIS 0x02 30141da177e4SLinus Torvalds} 30151da177e4SLinus Torvalds 30161da177e4SLinus Torvalds/* 30171da177e4SLinus Torvalds * Data FIFO Read Address 30181da177e4SLinus Torvalds * Pointer to the next QWD location to be read from the data FIFO. 30191da177e4SLinus Torvalds */ 30201da177e4SLinus Torvaldsregister DFRADDR { 30211da177e4SLinus Torvalds address 0x0C2 30221da177e4SLinus Torvalds access_mode RW 30231da177e4SLinus Torvalds size 2 30241da177e4SLinus Torvalds modes M_DFF0, M_DFF1 30251da177e4SLinus Torvalds} 30261da177e4SLinus Torvalds 30271da177e4SLinus Torvalds/* 30281da177e4SLinus Torvalds * DSP REQ Control 30291da177e4SLinus Torvalds */ 30301da177e4SLinus Torvaldsregister DSPREQCTL { 30311da177e4SLinus Torvalds address 0x0C2 30321da177e4SLinus Torvalds access_mode RW 30331da177e4SLinus Torvalds modes M_CFG 30341da177e4SLinus Torvalds field MANREQCTL 0xC0 30351da177e4SLinus Torvalds field MANREQDLY 0x3F 30361da177e4SLinus Torvalds} 30371da177e4SLinus Torvalds 30381da177e4SLinus Torvalds/* 30391da177e4SLinus Torvalds * DSP ACK Control 30401da177e4SLinus Torvalds */ 30411da177e4SLinus Torvaldsregister DSPACKCTL { 30421da177e4SLinus Torvalds address 0x0C3 30431da177e4SLinus Torvalds access_mode RW 30441da177e4SLinus Torvalds modes M_CFG 30451da177e4SLinus Torvalds field MANACKCTL 0xC0 30461da177e4SLinus Torvalds field MANACKDLY 0x3F 30471da177e4SLinus Torvalds} 30481da177e4SLinus Torvalds 30491da177e4SLinus Torvalds/* 30501da177e4SLinus Torvalds * Data FIFO Data 30511da177e4SLinus Torvalds * Read/Write byte port into the data FIFO. The read and write 30521da177e4SLinus Torvalds * FIFO pointers increment with each read and write respectively 30531da177e4SLinus Torvalds * to this port. 30541da177e4SLinus Torvalds */ 30551da177e4SLinus Torvaldsregister DFDAT { 30561da177e4SLinus Torvalds address 0x0C4 30571da177e4SLinus Torvalds access_mode RW 30581da177e4SLinus Torvalds modes M_DFF0, M_DFF1 30591da177e4SLinus Torvalds} 30601da177e4SLinus Torvalds 30611da177e4SLinus Torvalds/* 30621da177e4SLinus Torvalds * DSP Channel Select 30631da177e4SLinus Torvalds */ 30641da177e4SLinus Torvaldsregister DSPSELECT { 30651da177e4SLinus Torvalds address 0x0C4 30661da177e4SLinus Torvalds access_mode RW 30671da177e4SLinus Torvalds modes M_CFG 30681da177e4SLinus Torvalds field AUTOINCEN 0x80 30691da177e4SLinus Torvalds field DSPSEL 0x1F 30701da177e4SLinus Torvalds} 30711da177e4SLinus Torvalds 30721da177e4SLinus Torvaldsconst NUMDSPS 0x14 30731da177e4SLinus Torvalds 30741da177e4SLinus Torvalds/* 30751da177e4SLinus Torvalds * Write Bias Control 30761da177e4SLinus Torvalds */ 30771da177e4SLinus Torvaldsregister WRTBIASCTL { 30781da177e4SLinus Torvalds address 0x0C5 30791da177e4SLinus Torvalds access_mode WO 30801da177e4SLinus Torvalds modes M_CFG 30811da177e4SLinus Torvalds field AUTOXBCDIS 0x80 30821da177e4SLinus Torvalds field XMITMANVAL 0x3F 30831da177e4SLinus Torvalds} 30841da177e4SLinus Torvalds 30851da177e4SLinus Torvalds/* 30861da177e4SLinus Torvalds * Currently the WRTBIASCTL is the same as the default. 30871da177e4SLinus Torvalds */ 30881da177e4SLinus Torvaldsconst WRTBIASCTL_HP_DEFAULT 0x0 30891da177e4SLinus Torvalds 30901da177e4SLinus Torvalds/* 30911da177e4SLinus Torvalds * Receiver Bias Control 30921da177e4SLinus Torvalds */ 30931da177e4SLinus Torvaldsregister RCVRBIOSCTL { 30941da177e4SLinus Torvalds address 0x0C6 30951da177e4SLinus Torvalds access_mode WO 30961da177e4SLinus Torvalds modes M_CFG 30971da177e4SLinus Torvalds field AUTORBCDIS 0x80 30981da177e4SLinus Torvalds field RCVRMANVAL 0x3F 30991da177e4SLinus Torvalds} 31001da177e4SLinus Torvalds 31011da177e4SLinus Torvalds/* 31021da177e4SLinus Torvalds * Write Bias Calculator 31031da177e4SLinus Torvalds */ 31041da177e4SLinus Torvaldsregister WRTBIASCALC { 31051da177e4SLinus Torvalds address 0x0C7 31061da177e4SLinus Torvalds access_mode RO 31071da177e4SLinus Torvalds modes M_CFG 31081da177e4SLinus Torvalds} 31091da177e4SLinus Torvalds 31101da177e4SLinus Torvalds/* 31111da177e4SLinus Torvalds * Data FIFO Pointers 31121da177e4SLinus Torvalds * Contains the byte offset from DFWADDR and DWRADDR to the current 31131da177e4SLinus Torvalds * FIFO write/read locations. 31141da177e4SLinus Torvalds */ 31151da177e4SLinus Torvaldsregister DFPTRS { 31161da177e4SLinus Torvalds address 0x0C8 31171da177e4SLinus Torvalds access_mode RW 31181da177e4SLinus Torvalds modes M_DFF0, M_DFF1 31191da177e4SLinus Torvalds} 31201da177e4SLinus Torvalds 31211da177e4SLinus Torvalds/* 31221da177e4SLinus Torvalds * Receiver Bias Calculator 31231da177e4SLinus Torvalds */ 31241da177e4SLinus Torvaldsregister RCVRBIASCALC { 31251da177e4SLinus Torvalds address 0x0C8 31261da177e4SLinus Torvalds access_mode RO 31271da177e4SLinus Torvalds modes M_CFG 31281da177e4SLinus Torvalds} 31291da177e4SLinus Torvalds 31301da177e4SLinus Torvalds/* 31311da177e4SLinus Torvalds * Data FIFO Backup Read Pointer 31321da177e4SLinus Torvalds * Contains the data FIFO address to be restored if the last 31331da177e4SLinus Torvalds * data accessed from the data FIFO was not transferred successfully. 31341da177e4SLinus Torvalds */ 31351da177e4SLinus Torvaldsregister DFBKPTR { 31361da177e4SLinus Torvalds address 0x0C9 31371da177e4SLinus Torvalds access_mode RW 31381da177e4SLinus Torvalds size 2 31391da177e4SLinus Torvalds modes M_DFF0, M_DFF1 31401da177e4SLinus Torvalds} 31411da177e4SLinus Torvalds 31421da177e4SLinus Torvalds/* 31431da177e4SLinus Torvalds * Skew Calculator 31441da177e4SLinus Torvalds */ 31451da177e4SLinus Torvaldsregister SKEWCALC { 31461da177e4SLinus Torvalds address 0x0C9 31471da177e4SLinus Torvalds access_mode RO 31481da177e4SLinus Torvalds modes M_CFG 31491da177e4SLinus Torvalds} 31501da177e4SLinus Torvalds 31511da177e4SLinus Torvalds/* 31521da177e4SLinus Torvalds * Data FIFO Debug Control 31531da177e4SLinus Torvalds */ 31541da177e4SLinus Torvaldsregister DFDBCTL { 31551da177e4SLinus Torvalds address 0x0CB 31561da177e4SLinus Torvalds access_mode RW 31571da177e4SLinus Torvalds modes M_DFF0, M_DFF1 31581da177e4SLinus Torvalds field DFF_CIO_WR_RDY 0x20 31591da177e4SLinus Torvalds field DFF_CIO_RD_RDY 0x10 31601da177e4SLinus Torvalds field DFF_DIR_ERR 0x08 31611da177e4SLinus Torvalds field DFF_RAMBIST_FAIL 0x04 31621da177e4SLinus Torvalds field DFF_RAMBIST_DONE 0x02 31631da177e4SLinus Torvalds field DFF_RAMBIST_EN 0x01 31641da177e4SLinus Torvalds} 31651da177e4SLinus Torvalds 31661da177e4SLinus Torvalds/* 31671da177e4SLinus Torvalds * Data FIFO Space Count 31681da177e4SLinus Torvalds * Number of FIFO locations that are free. 31691da177e4SLinus Torvalds */ 31701da177e4SLinus Torvaldsregister DFSCNT { 31711da177e4SLinus Torvalds address 0x0CC 31721da177e4SLinus Torvalds access_mode RO 31731da177e4SLinus Torvalds size 2 31741da177e4SLinus Torvalds modes M_DFF0, M_DFF1 31751da177e4SLinus Torvalds} 31761da177e4SLinus Torvalds 31771da177e4SLinus Torvalds/* 31781da177e4SLinus Torvalds * Data FIFO Byte Count 31791da177e4SLinus Torvalds * Number of filled FIFO locations. 31801da177e4SLinus Torvalds */ 31811da177e4SLinus Torvaldsregister DFBCNT { 31821da177e4SLinus Torvalds address 0x0CE 31831da177e4SLinus Torvalds access_mode RO 31841da177e4SLinus Torvalds size 2 31851da177e4SLinus Torvalds modes M_DFF0, M_DFF1 31861da177e4SLinus Torvalds} 31871da177e4SLinus Torvalds 31881da177e4SLinus Torvalds/* 31891da177e4SLinus Torvalds * Sequencer Program Overlay Address. 31901da177e4SLinus Torvalds * Low address must be written prior to high address. 31911da177e4SLinus Torvalds */ 31921da177e4SLinus Torvaldsregister OVLYADDR { 31931da177e4SLinus Torvalds address 0x0D4 31941da177e4SLinus Torvalds modes M_SCSI 31951da177e4SLinus Torvalds size 2 31961da177e4SLinus Torvalds access_mode RW 31971da177e4SLinus Torvalds} 31981da177e4SLinus Torvalds 31991da177e4SLinus Torvalds/* 32001da177e4SLinus Torvalds * Sequencer Control 0 32011da177e4SLinus Torvalds * Error detection mode, speed configuration, 32021da177e4SLinus Torvalds * single step, breakpoints and program load. 32031da177e4SLinus Torvalds */ 32041da177e4SLinus Torvaldsregister SEQCTL0 { 32051da177e4SLinus Torvalds address 0x0D6 32061da177e4SLinus Torvalds access_mode RW 32071da177e4SLinus Torvalds field PERRORDIS 0x80 32081da177e4SLinus Torvalds field PAUSEDIS 0x40 32091da177e4SLinus Torvalds field FAILDIS 0x20 32101da177e4SLinus Torvalds field FASTMODE 0x10 32111da177e4SLinus Torvalds field BRKADRINTEN 0x08 32121da177e4SLinus Torvalds field STEP 0x04 32131da177e4SLinus Torvalds field SEQRESET 0x02 32141da177e4SLinus Torvalds field LOADRAM 0x01 32151da177e4SLinus Torvalds} 32161da177e4SLinus Torvalds 32171da177e4SLinus Torvalds/* 32181da177e4SLinus Torvalds * Sequencer Control 1 32191da177e4SLinus Torvalds * Instruction RAM Diagnostics 32201da177e4SLinus Torvalds */ 32211da177e4SLinus Torvaldsregister SEQCTL1 { 32221da177e4SLinus Torvalds address 0x0D7 32231da177e4SLinus Torvalds access_mode RW 32241da177e4SLinus Torvalds field OVRLAY_DATA_CHK 0x08 32251da177e4SLinus Torvalds field RAMBIST_DONE 0x04 32261da177e4SLinus Torvalds field RAMBIST_FAIL 0x02 32271da177e4SLinus Torvalds field RAMBIST_EN 0x01 32281da177e4SLinus Torvalds} 32291da177e4SLinus Torvalds 32301da177e4SLinus Torvalds/* 32311da177e4SLinus Torvalds * Sequencer Flags 32321da177e4SLinus Torvalds * Zero and Carry state of the ALU. 32331da177e4SLinus Torvalds */ 32341da177e4SLinus Torvaldsregister FLAGS { 32351da177e4SLinus Torvalds address 0x0D8 32361da177e4SLinus Torvalds access_mode RO 32371da177e4SLinus Torvalds field ZERO 0x02 32381da177e4SLinus Torvalds field CARRY 0x01 32391da177e4SLinus Torvalds} 32401da177e4SLinus Torvalds 32411da177e4SLinus Torvalds/* 32421da177e4SLinus Torvalds * Sequencer Interrupt Control 32431da177e4SLinus Torvalds */ 32441da177e4SLinus Torvaldsregister SEQINTCTL { 32451da177e4SLinus Torvalds address 0x0D9 32461da177e4SLinus Torvalds access_mode RW 32471da177e4SLinus Torvalds field INTVEC1DSL 0x80 32481da177e4SLinus Torvalds field INT1_CONTEXT 0x20 32491da177e4SLinus Torvalds field SCS_SEQ_INT1M1 0x10 32501da177e4SLinus Torvalds field SCS_SEQ_INT1M0 0x08 32511da177e4SLinus Torvalds field INTMASK2 0x04 32521da177e4SLinus Torvalds field INTMASK1 0x02 32531da177e4SLinus Torvalds field IRET 0x01 32541da177e4SLinus Torvalds} 32551da177e4SLinus Torvalds 32561da177e4SLinus Torvalds/* 32571da177e4SLinus Torvalds * Sequencer RAM Data Port 32581da177e4SLinus Torvalds * Single byte window into the Sequencer Instruction Ram area starting 32591da177e4SLinus Torvalds * at the address specified by OVLYADDR. To write a full instruction word, 32601da177e4SLinus Torvalds * simply write four bytes in succession. OVLYADDR will increment after the 32611da177e4SLinus Torvalds * most significant instrution byte (the byte with the parity bit) is written. 32621da177e4SLinus Torvalds */ 32631da177e4SLinus Torvaldsregister SEQRAM { 32641da177e4SLinus Torvalds address 0x0DA 32651da177e4SLinus Torvalds access_mode RW 32661da177e4SLinus Torvalds} 32671da177e4SLinus Torvalds 32681da177e4SLinus Torvalds/* 32691da177e4SLinus Torvalds * Sequencer Program Counter 32701da177e4SLinus Torvalds * Low byte must be written prior to high byte. 32711da177e4SLinus Torvalds */ 32721da177e4SLinus Torvaldsregister PRGMCNT { 32731da177e4SLinus Torvalds address 0x0DE 32741da177e4SLinus Torvalds access_mode RW 32751da177e4SLinus Torvalds size 2 32761da177e4SLinus Torvalds} 32771da177e4SLinus Torvalds 32781da177e4SLinus Torvalds/* 32791da177e4SLinus Torvalds * Accumulator 32801da177e4SLinus Torvalds */ 32811da177e4SLinus Torvaldsregister ACCUM { 32821da177e4SLinus Torvalds address 0x0E0 32831da177e4SLinus Torvalds access_mode RW 32841da177e4SLinus Torvalds accumulator 32851da177e4SLinus Torvalds} 32861da177e4SLinus Torvalds 32871da177e4SLinus Torvalds/* 32881da177e4SLinus Torvalds * Source Index Register 32891da177e4SLinus Torvalds * Incrementing index for reads of SINDIR and the destination (low byte only) 32901da177e4SLinus Torvalds * for any immediate operands passed in jmp, jc, jnc, call instructions. 32911da177e4SLinus Torvalds * Example: 32921da177e4SLinus Torvalds * mvi 0xFF call some_routine; 32931da177e4SLinus Torvalds * 32941da177e4SLinus Torvalds * Will set SINDEX[0] to 0xFF and call the routine "some_routine. 32951da177e4SLinus Torvalds */ 32961da177e4SLinus Torvaldsregister SINDEX { 32971da177e4SLinus Torvalds address 0x0E2 32981da177e4SLinus Torvalds access_mode RW 32991da177e4SLinus Torvalds size 2 33001da177e4SLinus Torvalds sindex 33011da177e4SLinus Torvalds} 33021da177e4SLinus Torvalds 33031da177e4SLinus Torvalds/* 33041da177e4SLinus Torvalds * Destination Index Register 33051da177e4SLinus Torvalds * Incrementing index for writes to DINDIR. Can be used as a scratch register. 33061da177e4SLinus Torvalds */ 33071da177e4SLinus Torvaldsregister DINDEX { 33081da177e4SLinus Torvalds address 0x0E4 33091da177e4SLinus Torvalds access_mode RW 33101da177e4SLinus Torvalds size 2 33111da177e4SLinus Torvalds} 33121da177e4SLinus Torvalds 33131da177e4SLinus Torvalds/* 33141da177e4SLinus Torvalds * Break Address 33151da177e4SLinus Torvalds * Sequencer instruction breakpoint address address. 33161da177e4SLinus Torvalds */ 33171da177e4SLinus Torvaldsregister BRKADDR0 { 33181da177e4SLinus Torvalds address 0x0E6 33191da177e4SLinus Torvalds access_mode RW 33201da177e4SLinus Torvalds} 33211da177e4SLinus Torvalds 33221da177e4SLinus Torvaldsregister BRKADDR1 { 33231da177e4SLinus Torvalds address 0x0E6 33241da177e4SLinus Torvalds access_mode RW 33251da177e4SLinus Torvalds field BRKDIS 0x80 /* Disable Breakpoint */ 33261da177e4SLinus Torvalds} 33271da177e4SLinus Torvalds 33281da177e4SLinus Torvalds/* 33291da177e4SLinus Torvalds * All Ones 33301da177e4SLinus Torvalds * All reads to this register return the value 0xFF. 33311da177e4SLinus Torvalds */ 33321da177e4SLinus Torvaldsregister ALLONES { 33331da177e4SLinus Torvalds address 0x0E8 33341da177e4SLinus Torvalds access_mode RO 33351da177e4SLinus Torvalds allones 33361da177e4SLinus Torvalds} 33371da177e4SLinus Torvalds 33381da177e4SLinus Torvalds/* 33391da177e4SLinus Torvalds * All Zeros 33401da177e4SLinus Torvalds * All reads to this register return the value 0. 33411da177e4SLinus Torvalds */ 33421da177e4SLinus Torvaldsregister ALLZEROS { 33431da177e4SLinus Torvalds address 0x0EA 33441da177e4SLinus Torvalds access_mode RO 33451da177e4SLinus Torvalds allzeros 33461da177e4SLinus Torvalds} 33471da177e4SLinus Torvalds 33481da177e4SLinus Torvalds/* 33491da177e4SLinus Torvalds * No Destination 33501da177e4SLinus Torvalds * Writes to this register have no effect. 33511da177e4SLinus Torvalds */ 33521da177e4SLinus Torvaldsregister NONE { 33531da177e4SLinus Torvalds address 0x0EA 33541da177e4SLinus Torvalds access_mode WO 33551da177e4SLinus Torvalds none 33561da177e4SLinus Torvalds} 33571da177e4SLinus Torvalds 33581da177e4SLinus Torvalds/* 33591da177e4SLinus Torvalds * Source Index Indirect 33601da177e4SLinus Torvalds * Reading this register is equivalent to reading (register_base + SINDEX) and 33611da177e4SLinus Torvalds * incrementing SINDEX by 1. 33621da177e4SLinus Torvalds */ 33631da177e4SLinus Torvaldsregister SINDIR { 33641da177e4SLinus Torvalds address 0x0EC 33651da177e4SLinus Torvalds access_mode RO 33661da177e4SLinus Torvalds} 33671da177e4SLinus Torvalds 33681da177e4SLinus Torvalds/* 33691da177e4SLinus Torvalds * Destination Index Indirect 33701da177e4SLinus Torvalds * Writing this register is equivalent to writing to (register_base + DINDEX) 33711da177e4SLinus Torvalds * and incrementing DINDEX by 1. 33721da177e4SLinus Torvalds */ 33731da177e4SLinus Torvaldsregister DINDIR { 33741da177e4SLinus Torvalds address 0x0ED 33751da177e4SLinus Torvalds access_mode WO 33761da177e4SLinus Torvalds} 33771da177e4SLinus Torvalds 33781da177e4SLinus Torvalds/* 33791da177e4SLinus Torvalds * Function One 33801da177e4SLinus Torvalds * 2's complement to bit value conversion. Write the 2's complement value 33811da177e4SLinus Torvalds * (0-7 only) to the top nibble and retrieve the bit indexed by that value 33821da177e4SLinus Torvalds * on the next read of this register. 33831da177e4SLinus Torvalds * Example: 33841da177e4SLinus Torvalds * Write 0x60 33851da177e4SLinus Torvalds * Read 0x40 33861da177e4SLinus Torvalds */ 33871da177e4SLinus Torvaldsregister FUNCTION1 { 33881da177e4SLinus Torvalds address 0x0F0 33891da177e4SLinus Torvalds access_mode RW 33901da177e4SLinus Torvalds} 33911da177e4SLinus Torvalds 33921da177e4SLinus Torvalds/* 33931da177e4SLinus Torvalds * Stack 33941da177e4SLinus Torvalds * Window into the stack. Each stack location is 10 bits wide reported 33951da177e4SLinus Torvalds * low byte followed by high byte. There are 8 stack locations. 33961da177e4SLinus Torvalds */ 33971da177e4SLinus Torvaldsregister STACK { 33981da177e4SLinus Torvalds address 0x0F2 33991da177e4SLinus Torvalds access_mode RW 34001da177e4SLinus Torvalds} 34011da177e4SLinus Torvalds 34021da177e4SLinus Torvalds/* 34031da177e4SLinus Torvalds * Interrupt Vector 1 Address 34041da177e4SLinus Torvalds * Interrupt branch address for SCS SEQ_INT1 mode 0 and 1 interrupts. 34051da177e4SLinus Torvalds */ 34061da177e4SLinus Torvaldsregister INTVEC1_ADDR { 34071da177e4SLinus Torvalds address 0x0F4 34081da177e4SLinus Torvalds access_mode RW 34091da177e4SLinus Torvalds size 2 34101da177e4SLinus Torvalds modes M_CFG 34111da177e4SLinus Torvalds} 34121da177e4SLinus Torvalds 34131da177e4SLinus Torvalds/* 34141da177e4SLinus Torvalds * Current Address 34151da177e4SLinus Torvalds * Address of the SEQRAM instruction currently executing instruction. 34161da177e4SLinus Torvalds */ 34171da177e4SLinus Torvaldsregister CURADDR { 34181da177e4SLinus Torvalds address 0x0F4 34191da177e4SLinus Torvalds access_mode RW 34201da177e4SLinus Torvalds size 2 34211da177e4SLinus Torvalds modes M_SCSI 34221da177e4SLinus Torvalds} 34231da177e4SLinus Torvalds 34241da177e4SLinus Torvalds/* 34251da177e4SLinus Torvalds * Interrupt Vector 2 Address 34261da177e4SLinus Torvalds * Interrupt branch address for HST_SEQ_INT2 interrupts. 34271da177e4SLinus Torvalds */ 34281da177e4SLinus Torvaldsregister INTVEC2_ADDR { 34291da177e4SLinus Torvalds address 0x0F6 34301da177e4SLinus Torvalds access_mode RW 34311da177e4SLinus Torvalds size 2 34321da177e4SLinus Torvalds modes M_CFG 34331da177e4SLinus Torvalds} 34341da177e4SLinus Torvalds 34351da177e4SLinus Torvalds/* 34361da177e4SLinus Torvalds * Last Address 34371da177e4SLinus Torvalds * Address of the SEQRAM instruction executed prior to the current instruction. 34381da177e4SLinus Torvalds */ 34391da177e4SLinus Torvaldsregister LASTADDR { 34401da177e4SLinus Torvalds address 0x0F6 34411da177e4SLinus Torvalds access_mode RW 34421da177e4SLinus Torvalds size 2 34431da177e4SLinus Torvalds modes M_SCSI 34441da177e4SLinus Torvalds} 34451da177e4SLinus Torvalds 34461da177e4SLinus Torvaldsregister AHD_PCI_CONFIG_BASE { 34471da177e4SLinus Torvalds address 0x100 34481da177e4SLinus Torvalds access_mode RW 34491da177e4SLinus Torvalds size 256 34501da177e4SLinus Torvalds modes M_CFG 34511da177e4SLinus Torvalds} 34521da177e4SLinus Torvalds 34531da177e4SLinus Torvalds/* ---------------------- Scratch RAM Offsets ------------------------- */ 34541da177e4SLinus Torvaldsscratch_ram { 34551da177e4SLinus Torvalds /* Mode Specific */ 34561da177e4SLinus Torvalds address 0x0A0 34571da177e4SLinus Torvalds size 8 34581da177e4SLinus Torvalds modes 0, 1, 2, 3 34591da177e4SLinus Torvalds REG0 { 34601da177e4SLinus Torvalds size 2 34611da177e4SLinus Torvalds } 34621da177e4SLinus Torvalds REG1 { 34631da177e4SLinus Torvalds size 2 34641da177e4SLinus Torvalds } 34651da177e4SLinus Torvalds REG_ISR { 34661da177e4SLinus Torvalds size 2 34671da177e4SLinus Torvalds } 34681da177e4SLinus Torvalds SG_STATE { 34691da177e4SLinus Torvalds size 1 34701da177e4SLinus Torvalds field SEGS_AVAIL 0x01 34711da177e4SLinus Torvalds field LOADING_NEEDED 0x02 34721da177e4SLinus Torvalds field FETCH_INPROG 0x04 34731da177e4SLinus Torvalds } 34741da177e4SLinus Torvalds /* 34751da177e4SLinus Torvalds * Track whether the transfer byte count for 34761da177e4SLinus Torvalds * the current data phase is odd. 34771da177e4SLinus Torvalds */ 34781da177e4SLinus Torvalds DATA_COUNT_ODD { 34791da177e4SLinus Torvalds size 1 34801da177e4SLinus Torvalds } 34811da177e4SLinus Torvalds} 34821da177e4SLinus Torvalds 34831da177e4SLinus Torvaldsscratch_ram { 34841da177e4SLinus Torvalds /* Mode Specific */ 34851da177e4SLinus Torvalds address 0x0F8 34861da177e4SLinus Torvalds size 8 34871da177e4SLinus Torvalds modes 0, 1, 2, 3 34881da177e4SLinus Torvalds LONGJMP_ADDR { 34891da177e4SLinus Torvalds size 2 34901da177e4SLinus Torvalds } 34911da177e4SLinus Torvalds ACCUM_SAVE { 34921da177e4SLinus Torvalds size 1 34931da177e4SLinus Torvalds } 34941da177e4SLinus Torvalds} 34951da177e4SLinus Torvalds 34961da177e4SLinus Torvalds 34971da177e4SLinus Torvaldsscratch_ram { 34981da177e4SLinus Torvalds address 0x100 34991da177e4SLinus Torvalds size 128 35001da177e4SLinus Torvalds modes 0, 1, 2, 3 35011da177e4SLinus Torvalds /* 35021da177e4SLinus Torvalds * Per "other-id" execution queues. We use an array of 35031da177e4SLinus Torvalds * tail pointers into lists of SCBs sorted by "other-id". 35041da177e4SLinus Torvalds * The execution head pointer threads the head SCBs for 35051da177e4SLinus Torvalds * each list. 35061da177e4SLinus Torvalds */ 35071da177e4SLinus Torvalds WAITING_SCB_TAILS { 35081da177e4SLinus Torvalds size 32 35091da177e4SLinus Torvalds } 35101da177e4SLinus Torvalds WAITING_TID_HEAD { 35111da177e4SLinus Torvalds size 2 35121da177e4SLinus Torvalds } 35131da177e4SLinus Torvalds WAITING_TID_TAIL { 35141da177e4SLinus Torvalds size 2 35151da177e4SLinus Torvalds } 35161da177e4SLinus Torvalds /* 35171da177e4SLinus Torvalds * SCBID of the next SCB in the new SCB queue. 35181da177e4SLinus Torvalds */ 35191da177e4SLinus Torvalds NEXT_QUEUED_SCB_ADDR { 35201da177e4SLinus Torvalds size 4 35211da177e4SLinus Torvalds } 35221da177e4SLinus Torvalds /* 35231da177e4SLinus Torvalds * head of list of SCBs that have 35241da177e4SLinus Torvalds * completed but have not been 35251da177e4SLinus Torvalds * put into the qoutfifo. 35261da177e4SLinus Torvalds */ 35271da177e4SLinus Torvalds COMPLETE_SCB_HEAD { 35281da177e4SLinus Torvalds size 2 35291da177e4SLinus Torvalds } 35301da177e4SLinus Torvalds /* 35311da177e4SLinus Torvalds * The list of completed SCBs in 35321da177e4SLinus Torvalds * the active DMA. 35331da177e4SLinus Torvalds */ 35341da177e4SLinus Torvalds COMPLETE_SCB_DMAINPROG_HEAD { 35351da177e4SLinus Torvalds size 2 35361da177e4SLinus Torvalds } 35371da177e4SLinus Torvalds /* 35381da177e4SLinus Torvalds * head of list of SCBs that have 35391da177e4SLinus Torvalds * completed but need to be uploaded 35401da177e4SLinus Torvalds * to the host prior to being completed. 35411da177e4SLinus Torvalds */ 35421da177e4SLinus Torvalds COMPLETE_DMA_SCB_HEAD { 35431da177e4SLinus Torvalds size 2 35441da177e4SLinus Torvalds } 35451da177e4SLinus Torvalds /* Counting semaphore to prevent new select-outs */ 35461da177e4SLinus Torvalds QFREEZE_COUNT { 35471da177e4SLinus Torvalds size 2 35481da177e4SLinus Torvalds } 35491da177e4SLinus Torvalds /* 35501da177e4SLinus Torvalds * Mode to restore on legacy idle loop exit. 35511da177e4SLinus Torvalds */ 35521da177e4SLinus Torvalds SAVED_MODE { 35531da177e4SLinus Torvalds size 1 35541da177e4SLinus Torvalds } 35551da177e4SLinus Torvalds /* 35561da177e4SLinus Torvalds * Single byte buffer used to designate the type or message 35571da177e4SLinus Torvalds * to send to a target. 35581da177e4SLinus Torvalds */ 35591da177e4SLinus Torvalds MSG_OUT { 35601da177e4SLinus Torvalds size 1 35611da177e4SLinus Torvalds } 35621da177e4SLinus Torvalds /* Parameters for DMA Logic */ 35631da177e4SLinus Torvalds DMAPARAMS { 35641da177e4SLinus Torvalds size 1 35651da177e4SLinus Torvalds field PRELOADEN 0x80 35661da177e4SLinus Torvalds field WIDEODD 0x40 35671da177e4SLinus Torvalds field SCSIEN 0x20 35681da177e4SLinus Torvalds field SDMAEN 0x10 35691da177e4SLinus Torvalds field SDMAENACK 0x10 35701da177e4SLinus Torvalds field HDMAEN 0x08 35711da177e4SLinus Torvalds field HDMAENACK 0x08 35721da177e4SLinus Torvalds field DIRECTION 0x04 /* Set indicates PCI->SCSI */ 35731da177e4SLinus Torvalds field FIFOFLUSH 0x02 35741da177e4SLinus Torvalds field FIFORESET 0x01 35751da177e4SLinus Torvalds } 35761da177e4SLinus Torvalds SEQ_FLAGS { 35771da177e4SLinus Torvalds size 1 35781da177e4SLinus Torvalds field NOT_IDENTIFIED 0x80 35791da177e4SLinus Torvalds field NO_CDB_SENT 0x40 35801da177e4SLinus Torvalds field TARGET_CMD_IS_TAGGED 0x40 35811da177e4SLinus Torvalds field DPHASE 0x20 35821da177e4SLinus Torvalds /* Target flags */ 35831da177e4SLinus Torvalds field TARG_CMD_PENDING 0x10 35841da177e4SLinus Torvalds field CMDPHASE_PENDING 0x08 35851da177e4SLinus Torvalds field DPHASE_PENDING 0x04 35861da177e4SLinus Torvalds field SPHASE_PENDING 0x02 35871da177e4SLinus Torvalds field NO_DISCONNECT 0x01 35881da177e4SLinus Torvalds } 35891da177e4SLinus Torvalds /* 35901da177e4SLinus Torvalds * Temporary storage for the 35911da177e4SLinus Torvalds * target/channel/lun of a 35921da177e4SLinus Torvalds * reconnecting target 35931da177e4SLinus Torvalds */ 35941da177e4SLinus Torvalds SAVED_SCSIID { 35951da177e4SLinus Torvalds size 1 35961da177e4SLinus Torvalds } 35971da177e4SLinus Torvalds SAVED_LUN { 35981da177e4SLinus Torvalds size 1 35991da177e4SLinus Torvalds } 36001da177e4SLinus Torvalds /* 36011da177e4SLinus Torvalds * The last bus phase as seen by the sequencer. 36021da177e4SLinus Torvalds */ 36031da177e4SLinus Torvalds LASTPHASE { 36041da177e4SLinus Torvalds size 1 36051da177e4SLinus Torvalds field CDI 0x80 36061da177e4SLinus Torvalds field IOI 0x40 36071da177e4SLinus Torvalds field MSGI 0x20 36081da177e4SLinus Torvalds field P_BUSFREE 0x01 36091da177e4SLinus Torvalds enum PHASE_MASK CDO|IOO|MSGO { 36101da177e4SLinus Torvalds P_DATAOUT 0x0, 36111da177e4SLinus Torvalds P_DATAIN IOO, 36121da177e4SLinus Torvalds P_DATAOUT_DT P_DATAOUT|MSGO, 36131da177e4SLinus Torvalds P_DATAIN_DT P_DATAIN|MSGO, 36141da177e4SLinus Torvalds P_COMMAND CDO, 36151da177e4SLinus Torvalds P_MESGOUT CDO|MSGO, 36161da177e4SLinus Torvalds P_STATUS CDO|IOO, 36171da177e4SLinus Torvalds P_MESGIN CDO|IOO|MSGO 36181da177e4SLinus Torvalds } 36191da177e4SLinus Torvalds } 36201da177e4SLinus Torvalds /* 36211da177e4SLinus Torvalds * Value to "or" into the SCBPTR[1] value to 36221da177e4SLinus Torvalds * indicate that an entry in the QINFIFO is valid. 36231da177e4SLinus Torvalds */ 36241da177e4SLinus Torvalds QOUTFIFO_ENTRY_VALID_TAG { 36251da177e4SLinus Torvalds size 1 36261da177e4SLinus Torvalds } 36271da177e4SLinus Torvalds /* 36281da177e4SLinus Torvalds * Base address of our shared data with the kernel driver in host 36291da177e4SLinus Torvalds * memory. This includes the qoutfifo and target mode 36301da177e4SLinus Torvalds * incoming command queue. 36311da177e4SLinus Torvalds */ 36321da177e4SLinus Torvalds SHARED_DATA_ADDR { 36331da177e4SLinus Torvalds size 4 36341da177e4SLinus Torvalds } 36351da177e4SLinus Torvalds /* 36361da177e4SLinus Torvalds * Pointer to location in host memory for next 36371da177e4SLinus Torvalds * position in the qoutfifo. 36381da177e4SLinus Torvalds */ 36391da177e4SLinus Torvalds QOUTFIFO_NEXT_ADDR { 36401da177e4SLinus Torvalds size 4 36411da177e4SLinus Torvalds } 36421da177e4SLinus Torvalds /* 36431da177e4SLinus Torvalds * Kernel and sequencer offsets into the queue of 36441da177e4SLinus Torvalds * incoming target mode command descriptors. The 36451da177e4SLinus Torvalds * queue is full when the KERNEL_TQINPOS == TQINPOS. 36461da177e4SLinus Torvalds */ 36471da177e4SLinus Torvalds KERNEL_TQINPOS { 36481da177e4SLinus Torvalds size 1 36491da177e4SLinus Torvalds } 36501da177e4SLinus Torvalds TQINPOS { 36511da177e4SLinus Torvalds size 1 36521da177e4SLinus Torvalds } 36531da177e4SLinus Torvalds ARG_1 { 36541da177e4SLinus Torvalds size 1 36551da177e4SLinus Torvalds mask SEND_MSG 0x80 36561da177e4SLinus Torvalds mask SEND_SENSE 0x40 36571da177e4SLinus Torvalds mask SEND_REJ 0x20 36581da177e4SLinus Torvalds mask MSGOUT_PHASEMIS 0x10 36591da177e4SLinus Torvalds mask EXIT_MSG_LOOP 0x08 36601da177e4SLinus Torvalds mask CONT_MSG_LOOP_WRITE 0x04 36611da177e4SLinus Torvalds mask CONT_MSG_LOOP_READ 0x03 36621da177e4SLinus Torvalds mask CONT_MSG_LOOP_TARG 0x02 36631da177e4SLinus Torvalds alias RETURN_1 36641da177e4SLinus Torvalds } 36651da177e4SLinus Torvalds ARG_2 { 36661da177e4SLinus Torvalds size 1 36671da177e4SLinus Torvalds alias RETURN_2 36681da177e4SLinus Torvalds } 36691da177e4SLinus Torvalds 36701da177e4SLinus Torvalds /* 36711da177e4SLinus Torvalds * Snapshot of MSG_OUT taken after each message is sent. 36721da177e4SLinus Torvalds */ 36731da177e4SLinus Torvalds LAST_MSG { 36741da177e4SLinus Torvalds size 1 36751da177e4SLinus Torvalds } 36761da177e4SLinus Torvalds 36771da177e4SLinus Torvalds /* 36781da177e4SLinus Torvalds * Sequences the kernel driver has okayed for us. This allows 36791da177e4SLinus Torvalds * the driver to do things like prevent initiator or target 36801da177e4SLinus Torvalds * operations. 36811da177e4SLinus Torvalds */ 36821da177e4SLinus Torvalds SCSISEQ_TEMPLATE { 36831da177e4SLinus Torvalds size 1 36841da177e4SLinus Torvalds field MANUALCTL 0x40 36851da177e4SLinus Torvalds field ENSELI 0x20 36861da177e4SLinus Torvalds field ENRSELI 0x10 36871da177e4SLinus Torvalds field MANUALP 0x0C 36881da177e4SLinus Torvalds field ENAUTOATNP 0x02 36891da177e4SLinus Torvalds field ALTSTIM 0x01 36901da177e4SLinus Torvalds } 36911da177e4SLinus Torvalds 36921da177e4SLinus Torvalds /* 36931da177e4SLinus Torvalds * The initiator specified tag for this target mode transaction. 36941da177e4SLinus Torvalds */ 36951da177e4SLinus Torvalds INITIATOR_TAG { 36961da177e4SLinus Torvalds size 1 36971da177e4SLinus Torvalds } 36981da177e4SLinus Torvalds 36991da177e4SLinus Torvalds SEQ_FLAGS2 { 37001da177e4SLinus Torvalds size 1 37011da177e4SLinus Torvalds field TARGET_MSG_PENDING 0x02 37021da177e4SLinus Torvalds field SELECTOUT_QFROZEN 0x04 37031da177e4SLinus Torvalds } 37041da177e4SLinus Torvalds 37051da177e4SLinus Torvalds ALLOCFIFO_SCBPTR { 37061da177e4SLinus Torvalds size 2 37071da177e4SLinus Torvalds } 37081da177e4SLinus Torvalds 37091da177e4SLinus Torvalds /* 37101da177e4SLinus Torvalds * The maximum amount of time to wait, when interrupt coalescing 37111da177e4SLinus Torvalds * is enabled, before issueing a CMDCMPLT interrupt for a completed 37121da177e4SLinus Torvalds * command. 37131da177e4SLinus Torvalds */ 37141da177e4SLinus Torvalds INT_COALESCING_TIMER { 37151da177e4SLinus Torvalds size 2 37161da177e4SLinus Torvalds } 37171da177e4SLinus Torvalds 37181da177e4SLinus Torvalds /* 37191da177e4SLinus Torvalds * The maximum number of commands to coalesce into a single interrupt. 37201da177e4SLinus Torvalds * Actually the 2's complement of that value to simplify sequencer 37211da177e4SLinus Torvalds * code. 37221da177e4SLinus Torvalds */ 37231da177e4SLinus Torvalds INT_COALESCING_MAXCMDS { 37241da177e4SLinus Torvalds size 1 37251da177e4SLinus Torvalds } 37261da177e4SLinus Torvalds 37271da177e4SLinus Torvalds /* 37281da177e4SLinus Torvalds * The minimum number of commands still outstanding required 37291da177e4SLinus Torvalds * to continue coalescing (2's complement of value). 37301da177e4SLinus Torvalds */ 37311da177e4SLinus Torvalds INT_COALESCING_MINCMDS { 37321da177e4SLinus Torvalds size 1 37331da177e4SLinus Torvalds } 37341da177e4SLinus Torvalds 37351da177e4SLinus Torvalds /* 37361da177e4SLinus Torvalds * Number of commands "in-flight". 37371da177e4SLinus Torvalds */ 37381da177e4SLinus Torvalds CMDS_PENDING { 37391da177e4SLinus Torvalds size 2 37401da177e4SLinus Torvalds } 37411da177e4SLinus Torvalds 37421da177e4SLinus Torvalds /* 37431da177e4SLinus Torvalds * The count of commands that have been coalesced. 37441da177e4SLinus Torvalds */ 37451da177e4SLinus Torvalds INT_COALESCING_CMDCOUNT { 37461da177e4SLinus Torvalds size 1 37471da177e4SLinus Torvalds } 37481da177e4SLinus Torvalds 37491da177e4SLinus Torvalds /* 37501da177e4SLinus Torvalds * Since the HS_MAIBOX is self clearing, copy its contents to 37511da177e4SLinus Torvalds * this position in scratch ram every time it changes. 37521da177e4SLinus Torvalds */ 37531da177e4SLinus Torvalds LOCAL_HS_MAILBOX { 37541da177e4SLinus Torvalds size 1 37551da177e4SLinus Torvalds } 37561da177e4SLinus Torvalds /* 37571da177e4SLinus Torvalds * Target-mode CDB type to CDB length table used 37581da177e4SLinus Torvalds * in non-packetized operation. 37591da177e4SLinus Torvalds */ 37601da177e4SLinus Torvalds CMDSIZE_TABLE { 37611da177e4SLinus Torvalds size 8 37621da177e4SLinus Torvalds } 37631da177e4SLinus Torvalds} 37641da177e4SLinus Torvalds 37651da177e4SLinus Torvalds/************************* Hardware SCB Definition ****************************/ 37661da177e4SLinus Torvaldsscb { 37671da177e4SLinus Torvalds address 0x180 37681da177e4SLinus Torvalds size 64 37691da177e4SLinus Torvalds modes 0, 1, 2, 3 37701da177e4SLinus Torvalds SCB_RESIDUAL_DATACNT { 37711da177e4SLinus Torvalds size 4 37721da177e4SLinus Torvalds alias SCB_CDB_STORE 37731da177e4SLinus Torvalds alias SCB_HOST_CDB_PTR 37741da177e4SLinus Torvalds } 37751da177e4SLinus Torvalds SCB_RESIDUAL_SGPTR { 37761da177e4SLinus Torvalds size 4 37771da177e4SLinus Torvalds field SG_ADDR_MASK 0xf8 /* In the last byte */ 37781da177e4SLinus Torvalds field SG_OVERRUN_RESID 0x02 /* In the first byte */ 37791da177e4SLinus Torvalds field SG_LIST_NULL 0x01 /* In the first byte */ 37801da177e4SLinus Torvalds } 37811da177e4SLinus Torvalds SCB_SCSI_STATUS { 37821da177e4SLinus Torvalds size 1 37831da177e4SLinus Torvalds alias SCB_HOST_CDB_LEN 37841da177e4SLinus Torvalds } 37851da177e4SLinus Torvalds SCB_TARGET_PHASES { 37861da177e4SLinus Torvalds size 1 37871da177e4SLinus Torvalds } 37881da177e4SLinus Torvalds SCB_TARGET_DATA_DIR { 37891da177e4SLinus Torvalds size 1 37901da177e4SLinus Torvalds } 37911da177e4SLinus Torvalds SCB_TARGET_ITAG { 37921da177e4SLinus Torvalds size 1 37931da177e4SLinus Torvalds } 37941da177e4SLinus Torvalds SCB_SENSE_BUSADDR { 37951da177e4SLinus Torvalds /* 37961da177e4SLinus Torvalds * Only valid if CDB length is less than 13 bytes or 37971da177e4SLinus Torvalds * we are using a CDB pointer. Otherwise contains 37981da177e4SLinus Torvalds * the last 4 bytes of embedded cdb information. 37991da177e4SLinus Torvalds */ 38001da177e4SLinus Torvalds size 4 38011da177e4SLinus Torvalds alias SCB_NEXT_COMPLETE 38021da177e4SLinus Torvalds } 38031da177e4SLinus Torvalds SCB_TAG { 38041da177e4SLinus Torvalds alias SCB_FIFO_USE_COUNT 38051da177e4SLinus Torvalds size 2 38061da177e4SLinus Torvalds } 38071da177e4SLinus Torvalds SCB_CONTROL { 38081da177e4SLinus Torvalds size 1 38091da177e4SLinus Torvalds field TARGET_SCB 0x80 38101da177e4SLinus Torvalds field DISCENB 0x40 38111da177e4SLinus Torvalds field TAG_ENB 0x20 38121da177e4SLinus Torvalds field MK_MESSAGE 0x10 38131da177e4SLinus Torvalds field STATUS_RCVD 0x08 38141da177e4SLinus Torvalds field DISCONNECTED 0x04 38151da177e4SLinus Torvalds field SCB_TAG_TYPE 0x03 38161da177e4SLinus Torvalds } 38171da177e4SLinus Torvalds SCB_SCSIID { 38181da177e4SLinus Torvalds size 1 38191da177e4SLinus Torvalds field TID 0xF0 38201da177e4SLinus Torvalds field OID 0x0F 38211da177e4SLinus Torvalds } 38221da177e4SLinus Torvalds SCB_LUN { 38231da177e4SLinus Torvalds size 1 38241da177e4SLinus Torvalds field LID 0xff 38251da177e4SLinus Torvalds } 38261da177e4SLinus Torvalds SCB_TASK_ATTRIBUTE { 38271da177e4SLinus Torvalds size 1 38281da177e4SLinus Torvalds /* 38291da177e4SLinus Torvalds * Overloaded field for non-packetized 38301da177e4SLinus Torvalds * ignore wide residue message handling. 38311da177e4SLinus Torvalds */ 38321da177e4SLinus Torvalds field SCB_XFERLEN_ODD 0x01 38331da177e4SLinus Torvalds } 38341da177e4SLinus Torvalds SCB_CDB_LEN { 38351da177e4SLinus Torvalds size 1 38361da177e4SLinus Torvalds field SCB_CDB_LEN_PTR 0x80 /* CDB in host memory */ 38371da177e4SLinus Torvalds } 38381da177e4SLinus Torvalds SCB_TASK_MANAGEMENT { 38391da177e4SLinus Torvalds size 1 38401da177e4SLinus Torvalds } 38411da177e4SLinus Torvalds SCB_DATAPTR { 38421da177e4SLinus Torvalds size 8 38431da177e4SLinus Torvalds } 38441da177e4SLinus Torvalds SCB_DATACNT { 38451da177e4SLinus Torvalds /* 38461da177e4SLinus Torvalds * The last byte is really the high address bits for 38471da177e4SLinus Torvalds * the data address. 38481da177e4SLinus Torvalds */ 38491da177e4SLinus Torvalds size 4 38501da177e4SLinus Torvalds field SG_LAST_SEG 0x80 /* In the fourth byte */ 38511da177e4SLinus Torvalds field SG_HIGH_ADDR_BITS 0x7F /* In the fourth byte */ 38521da177e4SLinus Torvalds } 38531da177e4SLinus Torvalds SCB_SGPTR { 38541da177e4SLinus Torvalds size 4 38551da177e4SLinus Torvalds field SG_STATUS_VALID 0x04 /* In the first byte */ 38561da177e4SLinus Torvalds field SG_FULL_RESID 0x02 /* In the first byte */ 38571da177e4SLinus Torvalds field SG_LIST_NULL 0x01 /* In the first byte */ 38581da177e4SLinus Torvalds } 38591da177e4SLinus Torvalds SCB_BUSADDR { 38601da177e4SLinus Torvalds size 4 38611da177e4SLinus Torvalds } 38621da177e4SLinus Torvalds SCB_NEXT { 38631da177e4SLinus Torvalds alias SCB_NEXT_SCB_BUSADDR 38641da177e4SLinus Torvalds size 2 38651da177e4SLinus Torvalds } 38661da177e4SLinus Torvalds SCB_NEXT2 { 38671da177e4SLinus Torvalds size 2 38681da177e4SLinus Torvalds } 38691da177e4SLinus Torvalds SCB_SPARE { 38701da177e4SLinus Torvalds size 8 38711da177e4SLinus Torvalds alias SCB_PKT_LUN 38721da177e4SLinus Torvalds } 38731da177e4SLinus Torvalds SCB_DISCONNECTED_LISTS { 38741da177e4SLinus Torvalds size 8 38751da177e4SLinus Torvalds } 38761da177e4SLinus Torvalds} 38771da177e4SLinus Torvalds 38781da177e4SLinus Torvalds/*********************************** Constants ********************************/ 38791da177e4SLinus Torvaldsconst MK_MESSAGE_BIT_OFFSET 4 38801da177e4SLinus Torvaldsconst TID_SHIFT 4 38811da177e4SLinus Torvaldsconst TARGET_CMD_CMPLT 0xfe 38821da177e4SLinus Torvaldsconst INVALID_ADDR 0x80 38831da177e4SLinus Torvalds#define SCB_LIST_NULL 0xff 38841da177e4SLinus Torvalds#define QOUTFIFO_ENTRY_VALID_TOGGLE 0x80 38851da177e4SLinus Torvalds 38861da177e4SLinus Torvaldsconst CCSGADDR_MAX 0x80 38871da177e4SLinus Torvaldsconst CCSCBADDR_MAX 0x80 38881da177e4SLinus Torvaldsconst CCSGRAM_MAXSEGS 16 38891da177e4SLinus Torvalds 38901da177e4SLinus Torvalds/* Selection Timeout Timer Constants */ 38911da177e4SLinus Torvaldsconst STIMESEL_SHIFT 3 38921da177e4SLinus Torvaldsconst STIMESEL_MIN 0x18 38931da177e4SLinus Torvaldsconst STIMESEL_BUG_ADJ 0x8 38941da177e4SLinus Torvalds 38951da177e4SLinus Torvalds/* WDTR Message values */ 38961da177e4SLinus Torvaldsconst BUS_8_BIT 0x00 38971da177e4SLinus Torvaldsconst BUS_16_BIT 0x01 38981da177e4SLinus Torvaldsconst BUS_32_BIT 0x02 38991da177e4SLinus Torvalds 39001da177e4SLinus Torvalds/* Offset maximums */ 39011da177e4SLinus Torvaldsconst MAX_OFFSET 0xfe 39021da177e4SLinus Torvaldsconst MAX_OFFSET_PACED 0xfe 39031da177e4SLinus Torvaldsconst MAX_OFFSET_PACED_BUG 0x7f 39041da177e4SLinus Torvalds/* 39051da177e4SLinus Torvalds * Some 160 devices incorrectly accept 0xfe as a 39061da177e4SLinus Torvalds * sync offset, but will overrun this value. Limit 39071da177e4SLinus Torvalds * to 0x7f for speed lower than U320 which will 39081da177e4SLinus Torvalds * avoid the persistent sync offset overruns. 39091da177e4SLinus Torvalds */ 39101da177e4SLinus Torvaldsconst MAX_OFFSET_NON_PACED 0x7f 39111da177e4SLinus Torvaldsconst HOST_MSG 0xff 39121da177e4SLinus Torvalds 39131da177e4SLinus Torvalds/* 39141da177e4SLinus Torvalds * The size of our sense buffers. 39151da177e4SLinus Torvalds * Sense buffer mapping can be handled in either of two ways. 39161da177e4SLinus Torvalds * The first is to allocate a dmamap for each transaction. 39171da177e4SLinus Torvalds * Depending on the architecture, dmamaps can be costly. The 39181da177e4SLinus Torvalds * alternative is to statically map the buffers in much the same 39191da177e4SLinus Torvalds * way we handle our scatter gather lists. The driver implements 39201da177e4SLinus Torvalds * the later. 39211da177e4SLinus Torvalds */ 39221da177e4SLinus Torvaldsconst AHD_SENSE_BUFSIZE 256 39231da177e4SLinus Torvalds 39241da177e4SLinus Torvalds/* Target mode command processing constants */ 39251da177e4SLinus Torvaldsconst CMD_GROUP_CODE_SHIFT 0x05 39261da177e4SLinus Torvalds 39271da177e4SLinus Torvaldsconst STATUS_BUSY 0x08 39281da177e4SLinus Torvaldsconst STATUS_QUEUE_FULL 0x28 39291da177e4SLinus Torvaldsconst STATUS_PKT_SENSE 0xFF 39301da177e4SLinus Torvaldsconst TARGET_DATA_IN 1 39311da177e4SLinus Torvalds 39321da177e4SLinus Torvaldsconst SCB_TRANSFER_SIZE_FULL_LUN 56 39331da177e4SLinus Torvaldsconst SCB_TRANSFER_SIZE_1BYTE_LUN 48 39341da177e4SLinus Torvalds/* PKT_OVERRUN_BUFSIZE must be a multiple of 256 less than 64K */ 39351da177e4SLinus Torvaldsconst PKT_OVERRUN_BUFSIZE 512 39361da177e4SLinus Torvalds 39371da177e4SLinus Torvalds/* 39381da177e4SLinus Torvalds * Timer parameters. 39391da177e4SLinus Torvalds */ 39401da177e4SLinus Torvaldsconst AHD_TIMER_US_PER_TICK 25 39411da177e4SLinus Torvaldsconst AHD_TIMER_MAX_TICKS 0xFFFF 39421da177e4SLinus Torvaldsconst AHD_TIMER_MAX_US (AHD_TIMER_MAX_TICKS * AHD_TIMER_US_PER_TICK) 39431da177e4SLinus Torvalds 39441da177e4SLinus Torvalds/* 39451da177e4SLinus Torvalds * Downloaded (kernel inserted) constants 39461da177e4SLinus Torvalds */ 39471da177e4SLinus Torvaldsconst SG_PREFETCH_CNT download 39481da177e4SLinus Torvaldsconst SG_PREFETCH_CNT_LIMIT download 39491da177e4SLinus Torvaldsconst SG_PREFETCH_ALIGN_MASK download 39501da177e4SLinus Torvaldsconst SG_PREFETCH_ADDR_MASK download 39511da177e4SLinus Torvaldsconst SG_SIZEOF download 39521da177e4SLinus Torvaldsconst PKT_OVERRUN_BUFOFFSET download 39531da177e4SLinus Torvaldsconst SCB_TRANSFER_SIZE download 39541da177e4SLinus Torvalds 39551da177e4SLinus Torvalds/* 39561da177e4SLinus Torvalds * BIOS SCB offsets 39571da177e4SLinus Torvalds */ 39581da177e4SLinus Torvaldsconst NVRAM_SCB_OFFSET 0x2C 3959