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