/drivers/scsi/aic7xxx/aic79xx.reg
https://bitbucket.org/cyanogenmod/android_kernel_asus_tf300t · Unknown · 4281 lines · 3975 code · 306 blank · 0 comment · 0 complexity · 939fbb67f0ef55ff17b74cebc6b5c0aa MD5 · raw file
Large files are truncated click here to view the full file
- /*
- * Aic79xx register and scratch ram definitions.
- *
- * Copyright (c) 1994-2001, 2004 Justin T. Gibbs.
- * Copyright (c) 2000-2002 Adaptec Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions, and the following disclaimer,
- * without modification.
- * 2. Redistributions in binary form must reproduce at minimum a disclaimer
- * substantially similar to the "NO WARRANTY" disclaimer below
- * ("Disclaimer") and any redistribution must be conditioned upon
- * including a substantially similar Disclaimer requirement for further
- * binary redistribution.
- * 3. Neither the names of the above-listed copyright holders nor the names
- * of any contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * Alternatively, this software may be distributed under the terms of the
- * GNU General Public License ("GPL") version 2 as published by the Free
- * Software Foundation.
- *
- * NO WARRANTY
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
- * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGES.
- *
- * $FreeBSD$
- */
- VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#77 $"
- /*
- * This file is processed by the aic7xxx_asm utility for use in assembling
- * firmware for the aic79xx family of SCSI host adapters as well as to generate
- * a C header file for use in the kernel portion of the Aic79xx driver.
- */
- /* Register window Modes */
- #define M_DFF0 0
- #define M_DFF1 1
- #define M_CCHAN 2
- #define M_SCSI 3
- #define M_CFG 4
- #define M_DST_SHIFT 4
- #define MK_MODE(src, dst) ((src) | ((dst) << M_DST_SHIFT))
- #define SET_MODE(src, dst) \
- SET_SRC_MODE src; \
- SET_DST_MODE dst; \
- if ((ahd->bugs & AHD_SET_MODE_BUG) != 0) { \
- mvi MK_MODE(src, dst) call set_mode_work_around; \
- } else { \
- mvi MODE_PTR, MK_MODE(src, dst); \
- }
- #define RESTORE_MODE(mode) \
- if ((ahd->bugs & AHD_SET_MODE_BUG) != 0) { \
- mov mode call set_mode_work_around; \
- } else { \
- mov MODE_PTR, mode; \
- }
- #define SET_SEQINTCODE(code) \
- if ((ahd->bugs & AHD_INTCOLLISION_BUG) != 0) { \
- mvi code call set_seqint_work_around; \
- } else { \
- mvi SEQINTCODE, code; \
- }
- /*
- * Registers marked "dont_generate_debug_code" are not (yet) referenced
- * from the driver code, and this keyword inhibit generation
- * of debug code for them.
- *
- * REG_PRETTY_PRINT config will complain if dont_generate_debug_code
- * is added to the register which is referenced in the driver.
- * Unreferenced register with no dont_generate_debug_code will result
- * in dead code. No warning is issued.
- */
- /*
- * Mode Pointer
- * Controls which of the 5, 512byte, address spaces should be used
- * as the source and destination of any register accesses in our
- * register window.
- */
- register MODE_PTR {
- address 0x000
- access_mode RW
- field DST_MODE 0x70
- field SRC_MODE 0x07
- mode_pointer
- dont_generate_debug_code
- }
- const SRC_MODE_SHIFT 0
- const DST_MODE_SHIFT 4
- /*
- * Host Interrupt Status
- */
- register INTSTAT {
- address 0x001
- access_mode RW
- field HWERRINT 0x80
- field BRKADRINT 0x40
- field SWTMINT 0x20
- field PCIINT 0x10
- field SCSIINT 0x08
- field SEQINT 0x04
- field CMDCMPLT 0x02
- field SPLTINT 0x01
- mask INT_PEND 0xFF
- }
- /*
- * Sequencer Interrupt Code
- */
- register SEQINTCODE {
- address 0x002
- access_mode RW
- field {
- NO_SEQINT, /* No seqint pending. */
- BAD_PHASE, /* unknown scsi bus phase */
- SEND_REJECT, /* sending a message reject */
- PROTO_VIOLATION, /* Protocol Violation */
- NO_MATCH, /* no cmd match for reconnect */
- IGN_WIDE_RES, /* Complex IGN Wide Res Msg */
- PDATA_REINIT, /*
- * Returned to data phase
- * that requires data
- * transfer pointers to be
- * recalculated from the
- * transfer residual.
- */
- HOST_MSG_LOOP, /*
- * The bus is ready for the
- * host to perform another
- * message transaction. This
- * mechanism is used for things
- * like sync/wide negotiation
- * that require a kernel based
- * message state engine.
- */
- BAD_STATUS, /* Bad status from target */
- DATA_OVERRUN, /*
- * Target attempted to write
- * beyond the bounds of its
- * command.
- */
- MKMSG_FAILED, /*
- * Target completed command
- * without honoring our ATN
- * request to issue a message.
- */
- MISSED_BUSFREE, /*
- * The sequencer never saw
- * the bus go free after
- * either a command complete
- * or disconnect message.
- */
- DUMP_CARD_STATE,
- ILLEGAL_PHASE,
- INVALID_SEQINT,
- CFG4ISTAT_INTR,
- STATUS_OVERRUN,
- CFG4OVERRUN,
- ENTERING_NONPACK,
- TASKMGMT_FUNC_COMPLETE, /*
- * Task management function
- * request completed with
- * an expected busfree.
- */
- TASKMGMT_CMD_CMPLT_OKAY, /*
- * A command with a non-zero
- * task management function
- * has completed via the normal
- * command completion method
- * for commands with a zero
- * task management function.
- * This happens when an attempt
- * to abort a command loses
- * the race for the command to
- * complete normally.
- */
- TRACEPOINT0,
- TRACEPOINT1,
- TRACEPOINT2,
- TRACEPOINT3,
- SAW_HWERR,
- BAD_SCB_STATUS
- }
- dont_generate_debug_code
- }
- /*
- * Clear Host Interrupt
- */
- register CLRINT {
- address 0x003
- access_mode WO
- count 19
- field CLRHWERRINT 0x80 /* Rev B or greater */
- field CLRBRKADRINT 0x40
- field CLRSWTMINT 0x20
- field CLRPCIINT 0x10
- field CLRSCSIINT 0x08
- field CLRSEQINT 0x04
- field CLRCMDINT 0x02
- field CLRSPLTINT 0x01
- dont_generate_debug_code
- }
- /*
- * Error Register
- */
- register ERROR {
- address 0x004
- access_mode RO
- field CIOPARERR 0x80
- field CIOACCESFAIL 0x40 /* Rev B or greater */
- field MPARERR 0x20
- field DPARERR 0x10
- field SQPARERR 0x08
- field ILLOPCODE 0x04
- field DSCTMOUT 0x02
- dont_generate_debug_code
- }
- /*
- * Clear Error
- */
- register CLRERR {
- address 0x004
- access_mode WO
- field CLRCIOPARERR 0x80
- field CLRCIOACCESFAIL 0x40 /* Rev B or greater */
- field CLRMPARERR 0x20
- field CLRDPARERR 0x10
- field CLRSQPARERR 0x08
- field CLRILLOPCODE 0x04
- field CLRDSCTMOUT 0x02
- }
- /*
- * Host Control Register
- * Overall host control of the device.
- */
- register HCNTRL {
- address 0x005
- access_mode RW
- count 12
- field SEQ_RESET 0x80 /* Rev B or greater */
- field POWRDN 0x40
- field SWINT 0x10
- field SWTIMER_START_B 0x08 /* Rev B or greater */
- field PAUSE 0x04
- field INTEN 0x02
- field CHIPRST 0x01
- field CHIPRSTACK 0x01
- dont_generate_debug_code
- }
- /*
- * Host New SCB Queue Offset
- */
- register HNSCB_QOFF {
- address 0x006
- access_mode RW
- size 2
- count 2
- dont_generate_debug_code
- }
- /*
- * Host Empty SCB Queue Offset
- */
- register HESCB_QOFF {
- address 0x008
- access_mode RW
- count 2
- dont_generate_debug_code
- }
- /*
- * Host Mailbox
- */
- register HS_MAILBOX {
- address 0x00B
- access_mode RW
- mask HOST_TQINPOS 0x80 /* Boundary at either 0 or 128 */
- mask ENINT_COALESCE 0x40 /* Perform interrupt coalescing */
- }
- /*
- * Sequencer Interrupt Status
- */
- register SEQINTSTAT {
- address 0x00C
- count 1
- access_mode RO
- field SEQ_SWTMRTO 0x10
- field SEQ_SEQINT 0x08
- field SEQ_SCSIINT 0x04
- field SEQ_PCIINT 0x02
- field SEQ_SPLTINT 0x01
- }
- /*
- * Clear SEQ Interrupt
- */
- register CLRSEQINTSTAT {
- address 0x00C
- access_mode WO
- field CLRSEQ_SWTMRTO 0x10
- field CLRSEQ_SEQINT 0x08
- field CLRSEQ_SCSIINT 0x04
- field CLRSEQ_PCIINT 0x02
- field CLRSEQ_SPLTINT 0x01
- dont_generate_debug_code
- }
- /*
- * Software Timer
- */
- register SWTIMER {
- address 0x00E
- access_mode RW
- size 2
- dont_generate_debug_code
- }
- /*
- * SEQ New SCB Queue Offset
- */
- register SNSCB_QOFF {
- address 0x010
- access_mode RW
- size 2
- modes M_CCHAN
- dont_generate_debug_code
- }
- /*
- * SEQ Empty SCB Queue Offset
- */
- register SESCB_QOFF {
- address 0x012
- count 2
- access_mode RW
- modes M_CCHAN
- dont_generate_debug_code
- }
- /*
- * SEQ Done SCB Queue Offset
- */
- register SDSCB_QOFF {
- address 0x014
- access_mode RW
- modes M_CCHAN
- size 2
- dont_generate_debug_code
- }
- /*
- * Queue Offset Control & Status
- */
- register QOFF_CTLSTA {
- address 0x016
- access_mode RW
- modes M_CCHAN
- field EMPTY_SCB_AVAIL 0x80
- field NEW_SCB_AVAIL 0x40
- field SDSCB_ROLLOVR 0x20
- field HS_MAILBOX_ACT 0x10
- field SCB_QSIZE 0x0F {
- SCB_QSIZE_4,
- SCB_QSIZE_8,
- SCB_QSIZE_16,
- SCB_QSIZE_32,
- SCB_QSIZE_64,
- SCB_QSIZE_128,
- SCB_QSIZE_256,
- SCB_QSIZE_512,
- SCB_QSIZE_1024,
- SCB_QSIZE_2048,
- SCB_QSIZE_4096,
- SCB_QSIZE_8192,
- SCB_QSIZE_16384
- }
- dont_generate_debug_code
- }
- /*
- * Interrupt Control
- */
- register INTCTL {
- address 0x018
- access_mode RW
- field SWTMINTMASK 0x80
- field SWTMINTEN 0x40
- field SWTIMER_START 0x20
- field AUTOCLRCMDINT 0x10
- field PCIINTEN 0x08
- field SCSIINTEN 0x04
- field SEQINTEN 0x02
- field SPLTINTEN 0x01
- }
- /*
- * Data FIFO Control
- */
- register DFCNTRL {
- address 0x019
- access_mode RW
- modes M_DFF0, M_DFF1
- count 11
- field PRELOADEN 0x80
- field SCSIENWRDIS 0x40 /* Rev B only. */
- field SCSIEN 0x20
- field SCSIENACK 0x20
- field HDMAEN 0x08
- field HDMAENACK 0x08
- field DIRECTION 0x04
- field DIRECTIONACK 0x04
- field FIFOFLUSH 0x02
- field FIFOFLUSHACK 0x02
- field DIRECTIONEN 0x01
- }
- /*
- * Device Space Command 0
- */
- register DSCOMMAND0 {
- address 0x019
- count 1
- access_mode RW
- modes M_CFG
- field CACHETHEN 0x80 /* Cache Threshold enable */
- field DPARCKEN 0x40 /* Data Parity Check Enable */
- field MPARCKEN 0x20 /* Memory Parity Check Enable */
- field EXTREQLCK 0x10 /* External Request Lock */
- field DISABLE_TWATE 0x02 /* Rev B or greater */
- field CIOPARCKEN 0x01 /* Internal bus parity error enable */
- dont_generate_debug_code
- }
- /*
- * Data FIFO Status
- */
- register DFSTATUS {
- address 0x01A
- access_mode RO
- modes M_DFF0, M_DFF1
- field PRELOAD_AVAIL 0x80
- field PKT_PRELOAD_AVAIL 0x40
- field MREQPEND 0x10
- field HDONE 0x08
- field DFTHRESH 0x04
- field FIFOFULL 0x02
- field FIFOEMP 0x01
- }
- /*
- * S/G Cache Pointer
- */
- register SG_CACHE_PRE {
- address 0x01B
- access_mode WO
- modes M_DFF0, M_DFF1
- field SG_ADDR_MASK 0xf8
- field ODD_SEG 0x04
- field LAST_SEG 0x02
- dont_generate_debug_code
- }
- register SG_CACHE_SHADOW {
- address 0x01B
- access_mode RO
- modes M_DFF0, M_DFF1
- field SG_ADDR_MASK 0xf8
- field ODD_SEG 0x04
- field LAST_SEG 0x02
- field LAST_SEG_DONE 0x01
- }
- /*
- * Arbiter Control
- */
- register ARBCTL {
- address 0x01B
- access_mode RW
- modes M_CFG
- field RESET_HARB 0x80
- field RETRY_SWEN 0x08
- field USE_TIME 0x07
- }
- /*
- * Data Channel Host Address
- */
- register HADDR {
- address 0x070
- access_mode RW
- size 8
- modes M_DFF0, M_DFF1
- dont_generate_debug_code
- }
- /*
- * Host Overlay DMA Address
- */
- register HODMAADR {
- address 0x070
- access_mode RW
- size 8
- modes M_SCSI
- }
- /*
- * PCI PLL Delay.
- */
- register PLLDELAY {
- address 0x070
- access_mode RW
- size 1
- modes M_CFG
- field SPLIT_DROP_REQ 0x80
- }
- /*
- * Data Channel Host Count
- */
- register HCNT {
- address 0x078
- access_mode RW
- size 3
- modes M_DFF0, M_DFF1
- dont_generate_debug_code
- }
- /*
- * Host Overlay DMA Count
- */
- register HODMACNT {
- address 0x078
- access_mode RW
- size 2
- modes M_SCSI
- }
- /*
- * Host Overlay DMA Enable
- */
- register HODMAEN {
- address 0x07A
- access_mode RW
- modes M_SCSI
- }
- /*
- * Scatter/Gather Host Address
- */
- register SGHADDR {
- address 0x07C
- access_mode RW
- size 8
- modes M_DFF0, M_DFF1
- dont_generate_debug_code
- }
- /*
- * SCB Host Address
- */
- register SCBHADDR {
- address 0x07C
- access_mode RW
- size 8
- modes M_CCHAN
- dont_generate_debug_code
- }
- /*
- * Scatter/Gather Host Count
- */
- register SGHCNT {
- address 0x084
- access_mode RW
- modes M_DFF0, M_DFF1
- dont_generate_debug_code
- }
- /*
- * SCB Host Count
- */
- register SCBHCNT {
- address 0x084
- access_mode RW
- modes M_CCHAN
- dont_generate_debug_code
- }
- /*
- * Data FIFO Threshold
- */
- register DFF_THRSH {
- address 0x088
- access_mode RW
- modes M_CFG
- count 1
- field WR_DFTHRSH 0x70 {
- WR_DFTHRSH_MIN,
- WR_DFTHRSH_25,
- WR_DFTHRSH_50,
- WR_DFTHRSH_63,
- WR_DFTHRSH_75,
- WR_DFTHRSH_85,
- WR_DFTHRSH_90,
- WR_DFTHRSH_MAX
- }
- field RD_DFTHRSH 0x07 {
- RD_DFTHRSH_MIN,
- RD_DFTHRSH_25,
- RD_DFTHRSH_50,
- RD_DFTHRSH_63,
- RD_DFTHRSH_75,
- RD_DFTHRSH_85,
- RD_DFTHRSH_90,
- RD_DFTHRSH_MAX
- }
- dont_generate_debug_code
- }
- /*
- * ROM Address
- */
- register ROMADDR {
- address 0x08A
- access_mode RW
- size 3
- }
- /*
- * ROM Control
- */
- register ROMCNTRL {
- address 0x08D
- access_mode RW
- field ROMOP 0xE0
- field ROMSPD 0x18
- field REPEAT 0x02
- field RDY 0x01
- }
- /*
- * ROM Data
- */
- register ROMDATA {
- address 0x08E
- access_mode RW
- }
- /*
- * Data Channel Receive Message 0
- */
- register DCHRXMSG0 {
- address 0x090
- access_mode RO
- modes M_DFF0, M_DFF1
- field CDNUM 0xF8
- field CFNUM 0x07
- }
- /*
- * CMC Receive Message 0
- */
- register CMCRXMSG0 {
- address 0x090
- access_mode RO
- modes M_CCHAN
- field CDNUM 0xF8
- field CFNUM 0x07
- }
- /*
- * Overlay Receive Message 0
- */
- register OVLYRXMSG0 {
- address 0x090
- access_mode RO
- modes M_SCSI
- field CDNUM 0xF8
- field CFNUM 0x07
- }
- /*
- * Relaxed Order Enable
- */
- register ROENABLE {
- address 0x090
- access_mode RW
- modes M_CFG
- field MSIROEN 0x20
- field OVLYROEN 0x10
- field CMCROEN 0x08
- field SGROEN 0x04
- field DCH1ROEN 0x02
- field DCH0ROEN 0x01
- }
- /*
- * Data Channel Receive Message 1
- */
- register DCHRXMSG1 {
- address 0x091
- access_mode RO
- modes M_DFF0, M_DFF1
- field CBNUM 0xFF
- }
- /*
- * CMC Receive Message 1
- */
- register CMCRXMSG1 {
- address 0x091
- access_mode RO
- modes M_CCHAN
- field CBNUM 0xFF
- }
- /*
- * Overlay Receive Message 1
- */
- register OVLYRXMSG1 {
- address 0x091
- access_mode RO
- modes M_SCSI
- field CBNUM 0xFF
- }
- /*
- * No Snoop Enable
- */
- register NSENABLE {
- address 0x091
- access_mode RW
- modes M_CFG
- field MSINSEN 0x20
- field OVLYNSEN 0x10
- field CMCNSEN 0x08
- field SGNSEN 0x04
- field DCH1NSEN 0x02
- field DCH0NSEN 0x01
- }
- /*
- * Data Channel Receive Message 2
- */
- register DCHRXMSG2 {
- address 0x092
- access_mode RO
- modes M_DFF0, M_DFF1
- field MINDEX 0xFF
- }
- /*
- * CMC Receive Message 2
- */
- register CMCRXMSG2 {
- address 0x092
- access_mode RO
- modes M_CCHAN
- field MINDEX 0xFF
- }
- /*
- * Overlay Receive Message 2
- */
- register OVLYRXMSG2 {
- address 0x092
- access_mode RO
- modes M_SCSI
- field MINDEX 0xFF
- }
- /*
- * Outstanding Split Transactions
- */
- register OST {
- address 0x092
- access_mode RW
- modes M_CFG
- }
- /*
- * Data Channel Receive Message 3
- */
- register DCHRXMSG3 {
- address 0x093
- access_mode RO
- modes M_DFF0, M_DFF1
- field MCLASS 0x0F
- }
- /*
- * CMC Receive Message 3
- */
- register CMCRXMSG3 {
- address 0x093
- access_mode RO
- modes M_CCHAN
- field MCLASS 0x0F
- }
- /*
- * Overlay Receive Message 3
- */
- register OVLYRXMSG3 {
- address 0x093
- access_mode RO
- modes M_SCSI
- field MCLASS 0x0F
- }
- /*
- * PCI-X Control
- */
- register PCIXCTL {
- address 0x093
- access_mode RW
- modes M_CFG
- count 1
- field SERRPULSE 0x80
- field UNEXPSCIEN 0x20
- field SPLTSMADIS 0x10
- field SPLTSTADIS 0x08
- field SRSPDPEEN 0x04
- field TSCSERREN 0x02
- field CMPABCDIS 0x01
- dont_generate_debug_code
- }
- /*
- * CMC Sequencer Byte Count
- */
- register CMCSEQBCNT {
- address 0x094
- access_mode RO
- modes M_CCHAN
- }
- /*
- * Overlay Sequencer Byte Count
- */
- register OVLYSEQBCNT {
- address 0x094
- access_mode RO
- modes M_SCSI
- }
- /*
- * Data Channel Sequencer Byte Count
- */
- register DCHSEQBCNT {
- address 0x094
- access_mode RO
- size 2
- modes M_DFF0, M_DFF1
- }
- /*
- * Data Channel Split Status 0
- */
- register DCHSPLTSTAT0 {
- address 0x096
- access_mode RW
- modes M_DFF0, M_DFF1
- count 2
- field STAETERM 0x80
- field SCBCERR 0x40
- field SCADERR 0x20
- field SCDATBUCKET 0x10
- field CNTNOTCMPLT 0x08
- field RXOVRUN 0x04
- field RXSCEMSG 0x02
- field RXSPLTRSP 0x01
- dont_generate_debug_code
- }
- /*
- * CMC Split Status 0
- */
- register CMCSPLTSTAT0 {
- address 0x096
- access_mode RW
- modes M_CCHAN
- field STAETERM 0x80
- field SCBCERR 0x40
- field SCADERR 0x20
- field SCDATBUCKET 0x10
- field CNTNOTCMPLT 0x08
- field RXOVRUN 0x04
- field RXSCEMSG 0x02
- field RXSPLTRSP 0x01
- }
- /*
- * Overlay Split Status 0
- */
- register OVLYSPLTSTAT0 {
- address 0x096
- access_mode RW
- modes M_SCSI
- field STAETERM 0x80
- field SCBCERR 0x40
- field SCADERR 0x20
- field SCDATBUCKET 0x10
- field CNTNOTCMPLT 0x08
- field RXOVRUN 0x04
- field RXSCEMSG 0x02
- field RXSPLTRSP 0x01
- }
- /*
- * Data Channel Split Status 1
- */
- register DCHSPLTSTAT1 {
- address 0x097
- access_mode RW
- modes M_DFF0, M_DFF1
- count 2
- field RXDATABUCKET 0x01
- dont_generate_debug_code
- }
- /*
- * CMC Split Status 1
- */
- register CMCSPLTSTAT1 {
- address 0x097
- access_mode RW
- modes M_CCHAN
- field RXDATABUCKET 0x01
- }
- /*
- * Overlay Split Status 1
- */
- register OVLYSPLTSTAT1 {
- address 0x097
- access_mode RW
- modes M_SCSI
- field RXDATABUCKET 0x01
- }
- /*
- * S/G Receive Message 0
- */
- register SGRXMSG0 {
- address 0x098
- access_mode RO
- modes M_DFF0, M_DFF1
- field CDNUM 0xF8
- field CFNUM 0x07
- }
- /*
- * S/G Receive Message 1
- */
- register SGRXMSG1 {
- address 0x099
- access_mode RO
- modes M_DFF0, M_DFF1
- field CBNUM 0xFF
- }
- /*
- * S/G Receive Message 2
- */
- register SGRXMSG2 {
- address 0x09A
- access_mode RO
- modes M_DFF0, M_DFF1
- field MINDEX 0xFF
- }
- /*
- * S/G Receive Message 3
- */
- register SGRXMSG3 {
- address 0x09B
- access_mode RO
- modes M_DFF0, M_DFF1
- field MCLASS 0x0F
- }
- /*
- * Slave Split Out Address 0
- */
- register SLVSPLTOUTADR0 {
- address 0x098
- access_mode RO
- modes M_SCSI
- field LOWER_ADDR 0x7F
- }
- /*
- * Slave Split Out Address 1
- */
- register SLVSPLTOUTADR1 {
- address 0x099
- access_mode RO
- modes M_SCSI
- field REQ_DNUM 0xF8
- field REQ_FNUM 0x07
- }
- /*
- * Slave Split Out Address 2
- */
- register SLVSPLTOUTADR2 {
- address 0x09A
- access_mode RO
- modes M_SCSI
- field REQ_BNUM 0xFF
- }
- /*
- * Slave Split Out Address 3
- */
- register SLVSPLTOUTADR3 {
- address 0x09B
- access_mode RO
- modes M_SCSI
- field RLXORD 020
- field TAG_NUM 0x1F
- }
- /*
- * SG Sequencer Byte Count
- */
- register SGSEQBCNT {
- address 0x09C
- access_mode RO
- modes M_DFF0, M_DFF1
- }
- /*
- * Slave Split Out Attribute 0
- */
- register SLVSPLTOUTATTR0 {
- address 0x09C
- access_mode RO
- modes M_SCSI
- field LOWER_BCNT 0xFF
- }
- /*
- * Slave Split Out Attribute 1
- */
- register SLVSPLTOUTATTR1 {
- address 0x09D
- access_mode RO
- modes M_SCSI
- field CMPLT_DNUM 0xF8
- field CMPLT_FNUM 0x07
- }
- /*
- * Slave Split Out Attribute 2
- */
- register SLVSPLTOUTATTR2 {
- address 0x09E
- access_mode RO
- size 2
- modes M_SCSI
- field CMPLT_BNUM 0xFF
- }
- /*
- * S/G Split Status 0
- */
- register SGSPLTSTAT0 {
- address 0x09E
- access_mode RW
- modes M_DFF0, M_DFF1
- count 2
- field STAETERM 0x80
- field SCBCERR 0x40
- field SCADERR 0x20
- field SCDATBUCKET 0x10
- field CNTNOTCMPLT 0x08
- field RXOVRUN 0x04
- field RXSCEMSG 0x02
- field RXSPLTRSP 0x01
- dont_generate_debug_code
- }
- /*
- * S/G Split Status 1
- */
- register SGSPLTSTAT1 {
- address 0x09F
- access_mode RW
- modes M_DFF0, M_DFF1
- count 2
- field RXDATABUCKET 0x01
- dont_generate_debug_code
- }
- /*
- * Special Function
- */
- register SFUNCT {
- address 0x09f
- access_mode RW
- modes M_CFG
- field TEST_GROUP 0xF0
- field TEST_NUM 0x0F
- dont_generate_debug_code
- }
- /*
- * Data FIFO 0 PCI Status
- */
- register DF0PCISTAT {
- address 0x0A0
- access_mode RW
- modes M_CFG
- count 1
- field DPE 0x80
- field SSE 0x40
- field RMA 0x20
- field RTA 0x10
- field SCAAPERR 0x08
- field RDPERR 0x04
- field TWATERR 0x02
- field DPR 0x01
- dont_generate_debug_code
- }
- /*
- * Data FIFO 1 PCI Status
- */
- register DF1PCISTAT {
- address 0x0A1
- access_mode RW
- modes M_CFG
- field DPE 0x80
- field SSE 0x40
- field RMA 0x20
- field RTA 0x10
- field SCAAPERR 0x08
- field RDPERR 0x04
- field TWATERR 0x02
- field DPR 0x01
- }
- /*
- * S/G PCI Status
- */
- register SGPCISTAT {
- address 0x0A2
- access_mode RW
- modes M_CFG
- field DPE 0x80
- field SSE 0x40
- field RMA 0x20
- field RTA 0x10
- field SCAAPERR 0x08
- field RDPERR 0x04
- field DPR 0x01
- }
- /*
- * CMC PCI Status
- */
- register CMCPCISTAT {
- address 0x0A3
- access_mode RW
- modes M_CFG
- field DPE 0x80
- field SSE 0x40
- field RMA 0x20
- field RTA 0x10
- field SCAAPERR 0x08
- field RDPERR 0x04
- field TWATERR 0x02
- field DPR 0x01
- }
- /*
- * Overlay PCI Status
- */
- register OVLYPCISTAT {
- address 0x0A4
- access_mode RW
- modes M_CFG
- field DPE 0x80
- field SSE 0x40
- field RMA 0x20
- field RTA 0x10
- field SCAAPERR 0x08
- field RDPERR 0x04
- field DPR 0x01
- }
- /*
- * PCI Status for MSI Master DMA Transfer
- */
- register MSIPCISTAT {
- address 0x0A6
- access_mode RW
- modes M_CFG
- field SSE 0x40
- field RMA 0x20
- field RTA 0x10
- field CLRPENDMSI 0x08
- field TWATERR 0x02
- field DPR 0x01
- }
- /*
- * PCI Status for Target
- */
- register TARGPCISTAT {
- address 0x0A7
- access_mode RW
- modes M_CFG
- count 5
- field DPE 0x80
- field SSE 0x40
- field STA 0x08
- field TWATERR 0x02
- dont_generate_debug_code
- }
- /*
- * LQ Packet In
- * The last LQ Packet received
- */
- register LQIN {
- address 0x020
- access_mode RW
- size 20
- count 2
- modes M_DFF0, M_DFF1, M_SCSI
- dont_generate_debug_code
- }
- /*
- * SCB Type Pointer
- * SCB offset for Target Mode SCB type information
- */
- register TYPEPTR {
- address 0x020
- access_mode RW
- modes M_CFG
- }
- /*
- * Queue Tag Pointer
- * SCB offset to the Two Byte tag identifier used for target mode.
- */
- register TAGPTR {
- address 0x021
- access_mode RW
- modes M_CFG
- }
- /*
- * Logical Unit Number Pointer
- * SCB offset to the LSB (little endian) of the lun field.
- */
- register LUNPTR {
- address 0x022
- access_mode RW
- modes M_CFG
- count 2
- dont_generate_debug_code
- }
- /*
- * Data Length Pointer
- * SCB offset for the 4 byte data length field in target mode.
- */
- register DATALENPTR {
- address 0x023
- access_mode RW
- modes M_CFG
- }
- /*
- * Status Length Pointer
- * SCB offset to the two byte status field in target SCBs.
- */
- register STATLENPTR {
- address 0x024
- access_mode RW
- modes M_CFG
- }
- /*
- * Command Length Pointer
- * Scb offset for the CDB length field in initiator SCBs.
- */
- register CMDLENPTR {
- address 0x025
- access_mode RW
- modes M_CFG
- count 1
- dont_generate_debug_code
- }
- /*
- * Task Attribute Pointer
- * Scb offset for the byte field specifying the attribute byte
- * to be used in command packets.
- */
- register ATTRPTR {
- address 0x026
- access_mode RW
- modes M_CFG
- count 1
- dont_generate_debug_code
- }
- /*
- * Task Management Flags Pointer
- * Scb offset for the byte field specifying the attribute flags
- * byte to be used in command packets.
- */
- register FLAGPTR {
- address 0x027
- access_mode RW
- modes M_CFG
- count 1
- dont_generate_debug_code
- }
- /*
- * Command Pointer
- * Scb offset for the first byte in the CDB for initiator SCBs.
- */
- register CMDPTR {
- address 0x028
- access_mode RW
- modes M_CFG
- count 1
- dont_generate_debug_code
- }
- /*
- * Queue Next Pointer
- * Scb offset for the 2 byte "next scb link".
- */
- register QNEXTPTR {
- address 0x029
- access_mode RW
- modes M_CFG
- count 1
- dont_generate_debug_code
- }
- /*
- * SCSI ID Pointer
- * Scb offset to the value to place in the SCSIID register
- * during target mode connections.
- */
- register IDPTR {
- address 0x02A
- access_mode RW
- modes M_CFG
- }
- /*
- * Command Aborted Byte Pointer
- * Offset to the SCB flags field that includes the
- * "SCB aborted" status bit.
- */
- register ABRTBYTEPTR {
- address 0x02B
- access_mode RW
- modes M_CFG
- count 1
- dont_generate_debug_code
- }
- /*
- * Command Aborted Bit Pointer
- * Bit offset in the SCB flags field for "SCB aborted" status.
- */
- register ABRTBITPTR {
- address 0x02C
- access_mode RW
- modes M_CFG
- count 1
- dont_generate_debug_code
- }
- /*
- * Rev B or greater.
- */
- register MAXCMDBYTES {
- address 0x02D
- access_mode RW
- modes M_CFG
- }
- /*
- * Rev B or greater.
- */
- register MAXCMD2RCV {
- address 0x02E
- access_mode RW
- modes M_CFG
- }
- /*
- * Rev B or greater.
- */
- register SHORTTHRESH {
- address 0x02F
- access_mode RW
- modes M_CFG
- }
- /*
- * Logical Unit Number Length
- * The length, in bytes, of the SCB lun field.
- */
- register LUNLEN {
- address 0x030
- access_mode RW
- modes M_CFG
- count 2
- mask ILUNLEN 0x0F
- mask TLUNLEN 0xF0
- dont_generate_debug_code
- }
- const LUNLEN_SINGLE_LEVEL_LUN 0xF
- /*
- * CDB Limit
- * The size, in bytes, of the embedded CDB field in initator SCBs.
- */
- register CDBLIMIT {
- address 0x031
- access_mode RW
- modes M_CFG
- count 1
- dont_generate_debug_code
- }
- /*
- * Maximum Commands
- * The maximum number of commands to issue during a
- * single packetized connection.
- */
- register MAXCMD {
- address 0x032
- access_mode RW
- modes M_CFG
- count 9
- dont_generate_debug_code
- }
- /*
- * Maximum Command Counter
- * The number of commands already sent during this connection
- */
- register MAXCMDCNT {
- address 0x033
- access_mode RW
- modes M_CFG
- dont_generate_debug_code
- }
- /*
- * LQ Packet Reserved Bytes
- * The bytes to be sent in the currently reserved fileds
- * of all LQ packets.
- */
- register LQRSVD01 {
- address 0x034
- access_mode RW
- modes M_SCSI
- }
- register LQRSVD16 {
- address 0x035
- access_mode RW
- modes M_SCSI
- }
- register LQRSVD17 {
- address 0x036
- access_mode RW
- modes M_SCSI
- }
- /*
- * Command Reserved 0
- * The byte to be sent for the reserved byte 0 of
- * outgoing command packets.
- */
- register CMDRSVD0 {
- address 0x037
- access_mode RW
- modes M_CFG
- }
- /*
- * LQ Manager Control 0
- */
- register LQCTL0 {
- address 0x038
- access_mode RW
- modes M_CFG
- field LQITARGCLT 0xC0
- field LQIINITGCLT 0x30
- field LQ0TARGCLT 0x0C
- field LQ0INITGCLT 0x03
- }
- /*
- * LQ Manager Control 1
- */
- register LQCTL1 {
- address 0x038
- access_mode RW
- modes M_DFF0, M_DFF1, M_SCSI
- count 2
- field PCI2PCI 0x04
- field SINGLECMD 0x02
- field ABORTPENDING 0x01
- dont_generate_debug_code
- }
- /*
- * LQ Manager Control 2
- */
- register LQCTL2 {
- address 0x039
- access_mode RW
- modes M_DFF0, M_DFF1, M_SCSI
- count 5
- field LQIRETRY 0x80
- field LQICONTINUE 0x40
- field LQITOIDLE 0x20
- field LQIPAUSE 0x10
- field LQORETRY 0x08
- field LQOCONTINUE 0x04
- field LQOTOIDLE 0x02
- field LQOPAUSE 0x01
- dont_generate_debug_code
- }
- /*
- * SCSI RAM BIST0
- */
- register SCSBIST0 {
- address 0x039
- access_mode RW
- modes M_CFG
- field GSBISTERR 0x40
- field GSBISTDONE 0x20
- field GSBISTRUN 0x10
- field OSBISTERR 0x04
- field OSBISTDONE 0x02
- field OSBISTRUN 0x01
- }
- /*
- * SCSI Sequence Control0
- */
- register SCSISEQ0 {
- address 0x03A
- access_mode RW
- modes M_DFF0, M_DFF1, M_SCSI
- field TEMODEO 0x80
- field ENSELO 0x40
- field ENARBO 0x20
- field FORCEBUSFREE 0x10
- field SCSIRSTO 0x01
- }
- /*
- * SCSI RAM BIST 1
- */
- register SCSBIST1 {
- address 0x03A
- access_mode RW
- modes M_CFG
- field NTBISTERR 0x04
- field NTBISTDONE 0x02
- field NTBISTRUN 0x01
- }
- /*
- * SCSI Sequence Control 1
- */
- register SCSISEQ1 {
- address 0x03B
- access_mode RW
- modes M_DFF0, M_DFF1, M_SCSI
- count 8
- field MANUALCTL 0x40
- field ENSELI 0x20
- field ENRSELI 0x10
- field MANUALP 0x0C
- field ENAUTOATNP 0x02
- field ALTSTIM 0x01
- }
- /*
- * SCSI Transfer Control 0
- */
- register SXFRCTL0 {
- address 0x03C
- access_mode RW
- modes M_SCSI
- field DFON 0x80
- field DFPEXP 0x40
- field BIOSCANCELEN 0x10
- field SPIOEN 0x08
- dont_generate_debug_code
- }
- /*
- * SCSI Transfer Control 1
- */
- register SXFRCTL1 {
- address 0x03D
- access_mode RW
- modes M_SCSI
- field BITBUCKET 0x80
- field ENSACHK 0x40
- field ENSPCHK 0x20
- field STIMESEL 0x18
- field ENSTIMER 0x04
- field ACTNEGEN 0x02
- field STPWEN 0x01
- dont_generate_debug_code
- }
- /*
- * SCSI Transfer Control 2
- */
- register SXFRCTL2 {
- address 0x03E
- access_mode RW
- modes M_SCSI
- field AUTORSTDIS 0x10
- field CMDDMAEN 0x08
- field ASU 0x07
- }
- /*
- * SCSI Bus Initiator IDs
- * Bitmask of observed initiators on the bus.
- */
- register BUSINITID {
- address 0x03C
- access_mode RW
- modes M_CFG
- size 2
- }
- /*
- * Data Length Counters
- * Packet byte counter.
- */
- register DLCOUNT {
- address 0x03C
- access_mode RW
- modes M_DFF0, M_DFF1
- size 3
- }
- /*
- * Data FIFO Status
- */
- register DFFSTAT {
- address 0x03F
- access_mode RW
- modes M_SCSI
- field FIFO1FREE 0x20
- field FIFO0FREE 0x10
- /*
- * On the B, this enum only works
- * in the read direction. For writes,
- * you must use the B version of the
- * CURRFIFO_0 definition which is defined
- * as a constant outside of this register
- * definition to avoid confusing the
- * register pretty printing code.
- */
- enum CURRFIFO 0x03 {
- CURRFIFO_0,
- CURRFIFO_1,
- CURRFIFO_NONE 0x3
- }
- }
- const B_CURRFIFO_0 0x2
- /*
- * SCSI Bus Target IDs
- * Bitmask of observed targets on the bus.
- */
- register BUSTARGID {
- address 0x03E
- access_mode RW
- modes M_CFG
- size 2
- }
- /*
- * SCSI Control Signal Out
- */
- register SCSISIGO {
- address 0x040
- access_mode RW
- modes M_DFF0, M_DFF1, M_SCSI
- field CDO 0x80
- field IOO 0x40
- field MSGO 0x20
- field ATNO 0x10
- field SELO 0x08
- field BSYO 0x04
- field REQO 0x02
- field ACKO 0x01
- /*
- * Possible phases to write into SCSISIG0
- */
- enum PHASE_MASK CDO|IOO|MSGO {
- P_DATAOUT 0x0,
- P_DATAIN IOO,
- P_DATAOUT_DT P_DATAOUT|MSGO,
- P_DATAIN_DT P_DATAIN|MSGO,
- P_COMMAND CDO,
- P_MESGOUT CDO|MSGO,
- P_STATUS CDO|IOO,
- P_MESGIN CDO|IOO|MSGO
- }
- dont_generate_debug_code
- }
- /*
- * SCSI Control Signal In
- */
- register SCSISIGI {
- address 0x041
- access_mode RO
- modes M_DFF0, M_DFF1, M_SCSI
- field CDI 0x80
- field IOI 0x40
- field MSGI 0x20
- field ATNI 0x10
- field SELI 0x08
- field BSYI 0x04
- field REQI 0x02
- field ACKI 0x01
- /*
- * Possible phases in SCSISIGI
- */
- enum PHASE_MASK CDO|IOO|MSGO {
- P_DATAOUT 0x0,
- P_DATAIN IOO,
- P_DATAOUT_DT P_DATAOUT|MSGO,
- P_DATAIN_DT P_DATAIN|MSGO,
- P_COMMAND CDO,
- P_MESGOUT CDO|MSGO,
- P_STATUS CDO|IOO,
- P_MESGIN CDO|IOO|MSGO
- }
- }
- /*
- * Multiple Target IDs
- * Bitmask of ids to respond as a target.
- */
- register MULTARGID {
- address 0x040
- access_mode RW
- modes M_CFG
- size 2
- count 2
- dont_generate_debug_code
- }
- /*
- * SCSI Phase
- */
- register SCSIPHASE {
- address 0x042
- access_mode RO
- modes M_DFF0, M_DFF1, M_SCSI
- field STATUS_PHASE 0x20
- field COMMAND_PHASE 0x10
- field MSG_IN_PHASE 0x08
- field MSG_OUT_PHASE 0x04
- field DATA_PHASE_MASK 0x03 {
- DATA_OUT_PHASE 0x01,
- DATA_IN_PHASE 0x02
- }
- }
- /*
- * SCSI Data 0 Image
- */
- register SCSIDAT0_IMG {
- address 0x043
- access_mode RW
- modes M_DFF0, M_DFF1, M_SCSI
- }
- /*
- * SCSI Latched Data
- */
- register SCSIDAT {
- address 0x044
- access_mode RW
- modes M_DFF0, M_DFF1, M_SCSI
- size 2
- dont_generate_debug_code
- }
- /*
- * SCSI Data Bus
- */
- register SCSIBUS {
- address 0x046
- access_mode RW
- modes M_DFF0, M_DFF1, M_SCSI
- size 2
- }
- /*
- * Target ID In
- */
- register TARGIDIN {
- address 0x048
- access_mode RO
- modes M_DFF0, M_DFF1, M_SCSI
- count 2
- field CLKOUT 0x80
- field TARGID 0x0F
- dont_generate_debug_code
- }
- /*
- * Selection/Reselection ID
- * Upper four bits are the device id. The ONEBIT is set when the re/selecting
- * device did not set its own ID.
- */
- register SELID {
- address 0x049
- access_mode RW
- modes M_DFF0, M_DFF1, M_SCSI
- field SELID_MASK 0xf0
- field ONEBIT 0x08
- }
- /*
- * SCSI Block Control
- * Controls Bus type and channel selection. SELWIDE allows for the
- * coexistence of 8bit and 16bit devices on a wide bus.
- */
- register SBLKCTL {
- address 0x04A
- access_mode RW
- modes M_DFF0, M_DFF1, M_SCSI
- field DIAGLEDEN 0x80
- field DIAGLEDON 0x40
- field ENAB40 0x08 /* LVD transceiver active */
- field ENAB20 0x04 /* SE/HVD transceiver active */
- field SELWIDE 0x02
- dont_generate_debug_code
- }
- /*
- * Option Mode
- */
- register OPTIONMODE {
- address 0x04A
- access_mode RW
- modes M_CFG
- count 4
- field BIOSCANCTL 0x80
- field AUTOACKEN 0x40
- field BIASCANCTL 0x20
- field BUSFREEREV 0x10
- field ENDGFORMCHK 0x04
- field AUTO_MSGOUT_DE 0x02
- mask OPTIONMODE_DEFAULTS AUTO_MSGOUT_DE
- dont_generate_debug_code
- }
- /*
- * SCSI Status 0
- */
- register SSTAT0 {
- address 0x04B
- access_mode RO
- modes M_DFF0, M_DFF1, M_SCSI
- field TARGET 0x80 /* Board acting as target */
- field SELDO 0x40 /* Selection Done */
- field SELDI 0x20 /* Board has been selected */
- field SELINGO 0x10 /* Selection In Progress */
- field IOERR 0x08 /* LVD Tranceiver mode changed */
- field OVERRUN 0x04 /* SCSI Offset overrun detected */
- field SPIORDY 0x02 /* SCSI PIO Ready */
- field ARBDO 0x01 /* Arbitration Done Out */
- }
- /*
- * Clear SCSI Interrupt 0
- * Writing a 1 to a bit clears the associated SCSI Interrupt in SSTAT0.
- */
- register CLRSINT0 {
- address 0x04B
- access_mode WO
- modes M_DFF0, M_DFF1, M_SCSI
- field CLRSELDO 0x40
- field CLRSELDI 0x20
- field CLRSELINGO 0x10
- field CLRIOERR 0x08
- field CLROVERRUN 0x04
- field CLRSPIORDY 0x02
- field CLRARBDO 0x01
- dont_generate_debug_code
- }
- /*
- * SCSI Interrupt Mode 0
- * Setting any bit will enable the corresponding function
- * in SIMODE0 to interrupt via the IRQ pin.
- */
- register SIMODE0 {
- address 0x04B
- access_mode RW
- modes M_CFG
- count 8
- field ENSELDO 0x40
- field ENSELDI 0x20
- field ENSELINGO 0x10
- field ENIOERR 0x08
- field ENOVERRUN 0x04
- field ENSPIORDY 0x02
- field ENARBDO 0x01
- }
- /*
- * SCSI Status 1
- */
- register SSTAT1 {
- address 0x04C
- access_mode RO
- modes M_DFF0, M_DFF1, M_SCSI
- field SELTO 0x80
- field ATNTARG 0x40
- field SCSIRSTI 0x20
- field PHASEMIS 0x10
- field BUSFREE 0x08
- field SCSIPERR 0x04
- field STRB2FAST 0x02
- field REQINIT 0x01
- }
- /*
- * Clear SCSI Interrupt 1
- * Writing a 1 to a bit clears the associated SCSI Interrupt in SSTAT1.
- */
- register CLRSINT1 {
- address 0x04C
- access_mode WO
- modes M_DFF0, M_DFF1, M_SCSI
- field CLRSELTIMEO 0x80
- field CLRATNO 0x40
- field CLRSCSIRSTI 0x20
- field CLRBUSFREE 0x08
- field CLRSCSIPERR 0x04
- field CLRSTRB2FAST 0x02
- field CLRREQINIT 0x01
- dont_generate_debug_code
- }
- /*
- * SCSI Status 2
- */
- register SSTAT2 {
- address 0x04d
- access_mode RO
- modes M_DFF0, M_DFF1, M_SCSI
- field BUSFREETIME 0xc0 {
- BUSFREE_LQO 0x40,
- BUSFREE_DFF0 0x80,
- BUSFREE_DFF1 0xC0
- }
- field NONPACKREQ 0x20
- field EXP_ACTIVE 0x10 /* SCSI Expander Active */
- field BSYX 0x08 /* Busy Expander */
- field WIDE_RES 0x04 /* Modes 0 and 1 only */
- field SDONE 0x02 /* Modes 0 and 1 only */
- field DMADONE 0x01 /* Modes 0 and 1 only */
- }
- /*
- * Clear SCSI Interrupt 2
- */
- register CLRSINT2 {
- address 0x04D
- access_mode WO
- modes M_DFF0, M_DFF1, M_SCSI
- field CLRNONPACKREQ 0x20
- field CLRWIDE_RES 0x04 /* Modes 0 and 1 only */
- field CLRSDONE 0x02 /* Modes 0 and 1 only */
- field CLRDMADONE 0x01 /* Modes 0 and 1 only */
- dont_generate_debug_code
- }
- /*
- * SCSI Interrupt Mode 2
- */
- register SIMODE2 {
- address 0x04D
- access_mode RW
- modes M_CFG
- field ENWIDE_RES 0x04
- field ENSDONE 0x02
- field ENDMADONE 0x01
- }
- /*
- * Physical Error Diagnosis
- */
- register PERRDIAG {
- address 0x04E
- access_mode RO
- modes M_DFF0, M_DFF1, M_SCSI
- count 3
- field HIZERO 0x80
- field HIPERR 0x40
- field PREVPHASE 0x20
- field PARITYERR 0x10
- field AIPERR 0x08
- field CRCERR 0x04
- field DGFORMERR 0x02
- field DTERR 0x01
- }
- /*
- * LQI Manager Current State
- */
- register LQISTATE {
- address 0x04E
- access_mode RO
- modes M_CFG
- count 6
- dont_generate_debug_code
- }
- /*
- * SCSI Offset Count
- */
- register SOFFCNT {
- address 0x04F
- access_mode RO
- modes M_DFF0, M_DFF1, M_SCSI
- count 1
- }
- /*
- * LQO Manager Current State
- */
- register LQOSTATE {
- address 0x04F
- access_mode RO
- modes M_CFG
- count 2
- dont_generate_debug_code
- }
- /*
- * LQI Manager Status
- */
- register LQISTAT0 {
- address 0x050
- access_mode RO
- modes M_DFF0, M_DFF1, M_SCSI
- count 2
- field LQIATNQAS 0x20
- field LQICRCT1 0x10
- field LQICRCT2 0x08
- field LQIBADLQT 0x04
- field LQIATNLQ 0x02
- field LQIATNCMD 0x01
- }
- /*
- * Clear LQI Interrupts 0
- */
- register CLRLQIINT0 {
- address 0x050
- access_mode WO
- modes M_DFF0, M_DFF1, M_SCSI
- count 1
- field CLRLQIATNQAS 0x20
- field CLRLQICRCT1 0x10
- field CLRLQICRCT2 0x08
- field CLRLQIBADLQT 0x04
- field CLRLQIATNLQ 0x02
- field CLRLQIATNCMD 0x01
- dont_generate_debug_code
- }
- /*
- * LQI Manager Interrupt Mode 0
- */
- register LQIMODE0 {
- address 0x050
- access_mode RW
- modes M_CFG
- count 3
- field ENLQIATNQASK 0x20
- field ENLQICRCT1 0x10
- field ENLQICRCT2 0x08
- field ENLQIBADLQT 0x04
- field ENLQIATNLQ 0x02
- field ENLQIATNCMD 0x01
- dont_generate_debug_code
- }
- /*
- * LQI Manager Status 1
- */
- register LQISTAT1 {
- address 0x051
- access_mode RO
- modes M_DFF0, M_DFF1, M_SCSI
- count 3
- field LQIPHASE_LQ 0x80
- field LQIPHASE_NLQ 0x40
- field LQIABORT 0x20
- field LQICRCI_LQ 0x10
- field LQICRCI_NLQ 0x08
- field LQIBADLQI 0x04
- field LQIOVERI_LQ 0x02
- field LQIOVERI_NLQ 0x01
- }
- /*
- * Clear LQI Manager Interrupts1
- */
- register CLRLQIINT1 {
- address 0x051
- access_mode WO
- modes M_DFF0, M_DFF1, M_SCSI
- count 4
- field CLRLQIPHASE_LQ 0x80
- field CLRLQIPHASE_NLQ 0x40
- field CLRLIQABORT 0x20
- field CLRLQICRCI_LQ 0x10
- field CLRLQICRCI_NLQ 0x08
- field CLRLQIBADLQI 0x04
- field CLRLQIOVERI_LQ 0x02
- field CLRLQIOVERI_NLQ 0x01
- dont_generate_debug_code
- }
- /*
- * LQI Manager Interrupt Mode 1
- */
- register LQIMODE1 {
- address 0x051
- access_mode RW
- modes M_CFG
- count 4
- field ENLQIPHASE_LQ 0x80 /* LQIPHASE1 */
- field ENLQIPHASE_NLQ 0x40 /* LQIPHASE2 */
- field ENLIQABORT 0x20
- field ENLQICRCI_LQ 0x10 /* LQICRCI1 */
- field ENLQICRCI_NLQ 0x08 /* LQICRCI2 */
- field ENLQIBADLQI 0x04
- field ENLQIOVERI_LQ 0x02 /* LQIOVERI1 */
- field ENLQIOVERI_NLQ 0x01 /* LQIOVERI2 */
- dont_generate_debug_code
- }
- /*
- * LQI Manager Status 2
- */
- register LQISTAT2 {
- address 0x052
- access_mode RO
- modes M_DFF0, M_DFF1, M_SCSI
- field PACKETIZED 0x80
- field LQIPHASE_OUTPKT 0x40
- field LQIWORKONLQ 0x20
- field LQIWAITFIFO 0x10
- field LQISTOPPKT 0x08
- field LQISTOPLQ 0x04
- field LQISTOPCMD 0x02
- field LQIGSAVAIL 0x01
- }
- /*
- * SCSI Status 3
- */
- register SSTAT3 {
- address 0x053
- access_mode RO
- modes M_DFF0, M_DFF1, M_SCSI
- count 3
- field NTRAMPERR 0x02
- field OSRAMPERR 0x01
- }
- /*
- * Clear SCSI Status 3
- */
- register CLRSINT3 {
- address 0x053
- access_mode WO
- modes M_DFF0, M_DFF1, M_SCSI
- count 3
- field CLRNTRAMPERR 0x02
- field CLROSRAMPERR 0x01
- dont_generate_debug_code
- }
- /*
- * SCSI Interrupt Mode 3
- */
- register SIMODE3 {
- address 0x053
- access_mode RW
- modes M_CFG
- count 4
- field ENNTRAMPERR 0x02
- field ENOSRAMPERR 0x01
- dont_generate_debug_code
- }
- /*
- * LQO Manager Status 0
- */
- register LQOSTAT0 {
- address 0x054
- access_mode RO
- modes M_DFF0, M_DFF1, M_SCSI
- count 2
- field LQOTARGSCBPERR 0x10
- field LQOSTOPT2 0x08
- field LQOATNLQ 0x04
- field LQOATNPKT 0x02
- field LQOTCRC 0x01
- }
- /*
- * Clear LQO Manager interrupt 0
- */
- register CLRLQOINT0 {
- address 0x054
- access_mode WO
- modes M_DFF0, M_DFF1, M_SCSI
- count 3
- field CLRLQOTARGSCBPERR 0x10
- field CLRLQOSTOPT2 0x08
- field CLRLQOATNLQ 0x04
- field CLRLQOATNPKT 0x02
- field CLRLQOTCRC 0x01
- dont_generate_debug_code
- }
- /*
- * LQO Manager Interrupt Mode 0
- */
- register LQOMODE0 {
- address 0x054
- access_mode RW
- modes M_CFG
- count 4
- field ENLQOTARGSCBPERR 0x10
- field ENLQOSTOPT2 0x08
- field ENLQOATNLQ 0x04
- field ENLQOATNPKT 0x02
- field ENLQOTCRC 0x01
- dont_generate_debug_code
- }
- /*
- * LQO Manager Status 1
- */
- register LQOSTAT1 {
- address 0x055
- access_mode RO
- modes M_DFF0, M_DFF1, M_SCSI
- field LQOINITSCBPERR 0x10
- field LQOSTOPI2 0x08
- field LQOBADQAS 0x04
- field LQOBUSFREE 0x02
- field LQOPHACHGINPKT 0x01
- }
- /*
- * Clear LOQ Interrupt 1
- */
- register CLRLQOINT1 {
- address 0x055
- access_mode WO
- modes M_DFF0, M_DFF1, M_SCSI
- count 7
- field CLRLQOINITSCBPERR 0x10
- field CLRLQOSTOPI2 0x08
- field CLRLQOBADQAS 0x04
- field CLRLQOBUSFREE 0x02
- field CLRLQOPHACHGINPKT 0x01
- dont_generate_debug_code
- }
- /*
- * LQO Manager Interrupt Mode 1
- */
- register LQOMODE1 {
- address 0x055
- access_mode RW
- modes M_CFG
- count 4
- field ENLQOINITSCBPERR 0x10
- field ENLQOSTOPI2 0x08
- field ENLQOBADQAS 0x04
- field ENLQOBUSFREE 0x02
- field ENLQOPHACHGINPKT 0x01
- dont_generate_debug_code
- }
- /*
- * LQO Manager Status 2
- */
- register LQOSTAT2 {
- address 0x056
- access_mode RO
- modes M_DFF0, M_DFF1, M_SCSI
- field LQOPKT 0xE0
- field LQOWAITFIFO 0x10
- field LQOPHACHGOUTPKT 0x02 /* outside of packet boundaries. */
- field LQOSTOP0 0x01 /* Stopped after sending all packets */
- }
- /*
- * Output Synchronizer Space Count
- */
- register OS_SPACE_CNT {
- address 0x056
- access_mode RO
- modes M_CFG
- count 2
- dont_generate_debug_code
- }
- /*
- * SCSI Interrupt Mode 1
- * Setting any bit will enable the corresponding function
- * in SIMODE1 to interrupt via the IRQ pin.
- */
- register SIMODE1 {
- address 0x057
- access_mode RW
- modes M_DFF0, M_DFF1, M_SCSI
- field ENSELTIMO 0x80
- field ENATNTARG 0x40
- field ENSCSIRST 0x20
- field ENPHASEMIS 0x10
- field ENBUSFREE 0x08
- field ENSCSIPERR 0x04
- field ENSTRB2FAST 0x02
- field ENREQINIT 0x01
- }
- /*
- * Good Status FIFO
- */
- register GSFIFO {
- address 0x058
- access_mode RO
- size 2
- modes M_DFF0, M_DFF1, M_SCSI
- dont_generate_debug_code
- }
- /*
- * Data FIFO SCSI Transfer Control
- */
- register DFFSXFRCTL {
- address 0x05A
- access_mode RW
- modes M_DFF0, M_DFF1
- field DFFBITBUCKET 0x08
- field CLRSHCNT 0x04
- field CLRCHN 0x02
- field RSTCHN 0x01
- }
- /*
- * Next SCSI Control Block
- */
- register NEXTSCB {
- address 0x05A
- access_mode RW
- size 2
- modes M_SCSI
- dont_generate_debug_code
- }
- /*
- * LQO SCSI Control
- * (Rev B only.)
- */
- register LQOSCSCTL {
- address 0x05A
- access_mode RW
- size 1
- modes M_CFG
- count 1
- field LQOH2A_VERSION 0x80
- field LQOBUSETDLY 0x40
- field LQONOHOLDLACK 0x02
- field LQONOCHKOVER 0x01
- dont_generate_debug_code
- }
- /*
- * SEQ Interrupts
- */
- register SEQINTSRC {
- address 0x05B
- access_mode RO
- modes M_DFF0, M_DFF1
- field CTXTDONE 0x40
- field SAVEPTRS 0x20
- field CFG4DATA 0x10
- field CFG4ISTAT 0x08
- field CFG4TSTAT 0x04
- field CFG4ICMD 0x02
- field CFG4TCMD 0x01
- }
- /*
- * Clear Arp Interrupts
- */
- register CLRSEQINTSRC {
- address 0x05B
- access_mode WO
- modes M_DFF0, M_DFF1
- field CLRCTXTDONE 0x40
- field CLRSAVEPTRS 0x20
- field CLRCFG4DATA 0x10
- field CLRCFG4ISTAT 0x08
- field CLRCFG4TSTAT 0x04
- field CLRCFG4ICMD 0x02
- field CLRCFG4TCMD 0x01
- dont_generate_debug_code
- }
- /*
- * SEQ Interrupt Enabled (Shared)
- */
- register SEQIMODE {
- address 0x05C
- access_mode RW
- modes M_DFF0, M_DFF1
- field ENCTXTDONE 0x40
- field ENSAVEPTRS 0x20
- field ENCFG4DATA 0x10
- field ENCFG4ISTAT 0x08
- field ENCFG4TSTAT 0x04
- field ENCFG4ICMD 0x02
- field ENCFG4TCMD 0x01
- }
- /*
- * Current SCSI Control Block
- */
- register CURRSCB {
- address 0x05C
- access_mode RW
- size 2
- modes M_SCSI
- dont_generate_debug_code
- }
- /*
- * Data FIFO Status
- */
- register MDFFSTAT {
- address 0x05D
- access_mode RO
- modes M_DFF0, M_DFF1
- field SHCNTNEGATIVE 0x40 /* Rev B or higher */
- field SHCNTMINUS1 0x20 /* Rev B or higher */
- field LASTSDONE 0x10
- field SHVALID 0x08
- field DLZERO 0x04 /* FIFO data ends on packet boundary. */
- field DATAINFIFO 0x02
- field FIFOFREE 0x01
- }
- /*
- * CRC Control
- */
- register CRCCONTROL {
- address 0x05d
- access_mode RW
- modes M_CFG
- field CRCVALCHKEN 0x40
- }
- /*
- * SCSI Test Control
- */
- register SCSITEST {
- address 0x05E
- access_mode RW
- modes M_CFG
- field CNTRTEST 0x08
- field SEL_TXPLL_DEBUG 0x04
- }
- /*
- * Data FIFO Queue Tag
- */
- register DFFTAG {
- address 0x05E
- access_mode RW
- size 2
- modes M_DFF0, M_DFF1
- }
- /*
- * Last SCSI Control Block
- */
- register LASTSCB {
- address 0x05E
- access_mode RW
- size 2
- modes M_SCSI
- dont_generate_debug_code
- }
- /*
- * SCSI I/O Cell Power-down Control
- */
- register IOPDNCTL {
- address 0x05F
- access_mode RW
- modes M_CFG
- field DISABLE_OE 0x80
- field PDN_IDIST 0x04
- field PDN_DIFFSENSE 0x01
- }
- /*
- * Shadow Host Address.
- */
- register SHADDR {
- address 0x060
- access_mode RO
- size 8
- modes M_DFF0, M_DFF1
- dont_generate_debug_code
- }
- /*
- * Data Group CRC Interval.
- */
- register DGRPCRCI {
- address 0x060
- access_mode RW
- size 2
- modes M_CFG
- }
- /*
- * Data Transfer Negotiation Address
- */
- register NEGOADDR {
- address 0x060
- access_mode RW
- modes M_SCSI
- dont_generate_debug_code
- }
- /*
- * Data Transfer Negotiation Data - Period Byte
- */
- register NEGPERIOD {
- address 0x061
- access_mode RW
- modes M_SCSI
- count 1
- dont_generate_debug_code
- }
- /*
- * Packetized CRC Interval
- */
- register PACKCRCI {
- address 0x062
- access_mode RW
- size 2
- modes M_CFG
- }
- /*
- * Data Transfer Negotiation Data - Offset Byte
- */
- register NEGOFFSET {
- address 0x062
- access_mode RW
- modes M_SCSI
- count 1
- dont_generate_debug_code
- }
- /*
- * Data Transfer Negotiation Data - PPR Options
- */
- register NEGPPROPTS {
- address 0x063
- access_mode RW
- modes M_SCSI
- count 1
- field PPROPT_PACE 0x08
- field PPROPT_QAS 0x04
- field PPROPT_DT 0x02
- field PPROPT_IUT 0x01
- dont_generate_debug_code
- }
- /*
- * Data Transfer Negotiation Data - Connection Options
- */
- register NEGCONOPTS {
- address 0x064
- access_mode RW
- modes M_SCSI
- field ENSNAPSHOT 0x40
- field RTI_WRTDIS 0x20
- field RTI_OVRDTRN 0x10
- field ENSLOWCRC 0x08
- field ENAUTOATNI 0x04
- field ENAUTOATNO 0x02
- field WIDEXFER 0x01
- dont_generate_debug_code
- }
- /*
- * Negotiation Table Annex Column Index.
- */
- register ANNEXCOL {
- address 0x065
- access_mode RW
- modes M_SCSI
- count 7
- dont_generate_debug_code
- }
- /*
- * SCSI Check
- * (Rev. B only)
- */
- register SCSCHKN {
- address 0x066
- access_mode RW
- modes M_CFG
- count 1
- field BIDICHKDIS 0x80
- field STSELSKIDDIS 0x40
- field CURRFIFODEF 0x20
- field WIDERESEN 0x10
- field SDONEMSKDIS 0x08
- field DFFACTCLR 0x04
- field SHVALIDSTDIS 0x02
- field LSTSGCLRDIS 0x01
- dont_generate_debug_code
- }
- const AHD_ANNEXCOL_PER_DEV0 4
- const AHD_NUM_PER_DEV_ANNEXCOLS 4
- const AHD_ANNEXCOL_PRECOMP_SLEW 4
- const AHD_PRECOMP_MASK 0x07
- const AHD_PRECOMP_SHIFT 0
- const AHD_PRECOMP_CUTBACK_17 0x04
- const AHD_PRECOMP_CUTBACK_29 0x06
- const AHD_PRECOMP_CUTBACK_37 0x07
- const AHD_SLEWRATE_MASK 0x78
- const AHD_SLEWRATE_SHIFT 3
- /*
- * Rev A has only a single bit (high bit of field) of slew adjustment.
- * Rev B has 4 bits. The current default happens to be the same for both.
- */
- const AHD_SLEWRATE_DEF_REVA 0x08
- const AHD_SLEWRATE_DEF_REVB 0x08
- /* Rev A does not have any amplitude setting. */
- const AHD_ANNEXCOL_AMPLITUDE 6
- const AHD_AMPLITUDE_MASK 0x7
- const AHD_AMPLITUDE_SHIFT 0
- const AHD_AMPLITUDE_DEF 0x7
- /*
- * Negotiation Table Annex Data Port.
- */
- register ANNEXDAT {
- address 0x066
- access_mode RW
- modes M_SCSI
- count 3
- dont_generate_debug_code
- }
- /*
- * Initiator's Own Id.
- * The SCSI ID to use for Selection Out and seen during a reselection..
- */
- register IOWNID {
- address 0x067
- access_mode RW
- modes M_SCSI
- dont_generate_debug_code
- }
- /*
- * 960MHz Phase-Locked Loop Control 0
- */
- register PLL960CTL0 {
- address 0x068
- access_mode RW
- modes M_CFG
- field PLL_VCOSEL 0x80
- field PLL_PWDN 0x40
- field PLL_NS 0x30
- field PLL_ENLUD 0x08
- field PLL_ENLPF 0x04
- field PLL_DLPF 0x02
- field PLL_ENFBM 0x01
- }
- /*
- * Target Own Id
- */
- register TOWNID {
- address 0x069
- access_mode RW
- modes M_SCSI
- count 2
- dont_generate_debug_code
- }
- /*
- * 960MHz Phase-Locked Loop Control 1
- */
- register PLL960CTL1 {
- address 0x069
- access_mode RW
- modes M_CFG
- field PLL_CNTEN 0x80
- field PLL_CNTCLR 0x40
- field PLL_RST 0x01
- }
- /*
- * Expander Signature
- */
- register XSIG {
- address 0x06A
- access_mode RW
- modes M_SCSI
- }
- /*
- * Shadow Byte Count
- */
- register SHCNT {
- address 0x068
- access_mode RW
- size 3
- modes M_DFF0, M_DFF1
- dont_generate_debug_code
- }
- /*
- * Selection Out ID
- */
- register SELOID {
- address 0x06B
- access_mode RW
- modes M_SCSI
- }
- /*
- * 960-MHz Phase-Locked Loop Test Count
- */
- register PLL960CNT0 {
- address 0x06A
- access_mode RO
- size 2
- modes M_CFG
- }
- /*
- * 400-MHz Phase-Locked Loop Control 0
- */
- register PLL400CTL0 {
- address 0x06C
- access_mode RW
- modes M_CFG
- field PLL_VCOSEL 0x80
- field PLL_PWDN 0x40
- field PLL_NS 0x30
- field PLL_ENLUD 0x08
- field PLL_ENLPF 0x04
- field PLL_DLPF 0x02
- field PLL_ENFBM 0x01
- }
- /*
- * Arbitration Fairness
- */
- register FAIRNESS {
- address 0x06C
- access_mode RW
- size 2
- modes M_SCSI
- }
- /*
- * 400-MHz Phase-Locked Loop Control 1
- */
- register PLL400CTL1 {
- address 0x06D
- access_mode RW
- modes M_CFG
- field PLL_CNTEN 0x80
- field PLL_CNTCLR 0x40
- field PLL_RST 0x01
- }
- /*
- * Arbitration Unfairness
- */
- register UNFAIRNESS {
- address 0x06E
- access_mode RW
- size 2
- modes M_SCSI
- }
- /*
- * 400-MHz Phase-Locked Loop Test Count
- */
- register PLL400CNT0 {
- address 0x06E
- access_mode RO
- size 2
- modes M_CFG
- }
- /*
- * SCB Page Pointer
- */
- register SCBPTR {
- address 0x0A8
- access_mode RW
- size 2
- modes M_DFF0, M_DFF1, M_CCHAN, M_SCSI
- dont_generate_debug_code
- }
- /*
- * CMC SCB Array Count
- * Number of bytes to transfer between CMC SCB memory and SCBRAM.
- * Transfers must be 8byte aligned and sized.
- */
- register CCSCBACNT {
- address 0x0AB
- access_mode RW
- modes M_CCHAN
- }
- /*
- * SCB Autopointer
- * SCB-Next Address Snooping logic. When an SCB is transferred to
- * the card, the next SCB address to be used by the CMC array can
- * be autoloaded from that transfer.
- */
- register SCBAUTOPTR {
- address 0x0AB
- access_mode RW
- modes M_CFG
- count 1
- field AUSCBPTR_EN 0x80
- field SCBPTR_ADDR 0x38
- field SCBPTR_OFF 0x07
- dont_generate_debug_code
- }
- /*
- * CMC SG Ram Address Pointer
- */
- register CCSGADDR {
- address 0x0AC
- access_mode RW
- modes M_DFF0, M_DFF1
- dont_generate_debug_code
- }
- /*
- * CMC SCB RAM Address Pointer
- */
- register CCSCBADDR {
- address 0x0AC
- access_mode RW
- modes M_CCHAN
- dont_generate_debug_code
- }
- /*
- * CMC SCB Ram Back-up Address Pointer
- * Indicates the true stop location of transfers halted prior
- * to SCBHCNT going to 0.
- */
- register CCSC…