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